[Zrouter-src-freebsd] ZRouter.org: push to FreeBSD HEAD tree

zrouter-src-freebsd at zrouter.org zrouter-src-freebsd at zrouter.org
Wed Jul 25 14:36:02 UTC 2012


details:   http://zrouter.org/hg/FreeBSD/head//rev/d46effa10a19
changeset: 487:d46effa10a19
user:      Aleksandr Rybalko <ray at ddteam.net>
date:      Wed Jul 25 16:21:35 2012 +0300
description:
Lazy update

diffstat:

 head/contrib/bind9/CHANGES                                                =
                      |     73 +-
 head/contrib/bind9/README                                                 =
                      |      4 +
 head/contrib/bind9/bin/named/builtin.c                                    =
                      |    220 +-
 head/contrib/bind9/bin/named/query.c                                      =
                      |      5 +
 head/contrib/bind9/bin/named/server.c                                     =
                      |      2 +-
 head/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c                     =
                      |      2 +-
 head/contrib/bind9/lib/bind9/api                                          =
                      |      2 +-
 head/contrib/bind9/lib/bind9/check.c                                      =
                      |      2 +-
 head/contrib/bind9/lib/dns/api                                            =
                      |      2 +-
 head/contrib/bind9/lib/dns/dnssec.c                                       =
                      |      2 +-
 head/contrib/bind9/lib/dns/include/dns/ecdb.h                             =
                      |      4 +-
 head/contrib/bind9/lib/dns/include/dns/rpz.h                              =
                      |      2 +
 head/contrib/bind9/lib/dns/include/dns/sdb.h                              =
                      |      5 +
 head/contrib/bind9/lib/dns/include/dns/stats.h                            =
                      |      2 +
 head/contrib/bind9/lib/dns/include/dns/tsec.h                             =
                      |      4 +-
 head/contrib/bind9/lib/dns/include/dns/view.h                             =
                      |      2 +
 head/contrib/bind9/lib/dns/rbtdb.c                                        =
                      |      2 +-
 head/contrib/bind9/lib/dns/rdata.c                                        =
                      |      8 +-
 head/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c                        =
                      |    290 +
 head/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h                        =
                      |     35 +
 head/contrib/bind9/lib/dns/rdataslab.c                                    =
                      |     11 +-
 head/contrib/bind9/lib/dns/resolver.c                                     =
                      |    233 +-
 head/contrib/bind9/lib/dns/sdb.c                                          =
                      |     91 +-
 head/contrib/bind9/lib/dns/tkey.c                                         =
                      |      4 +-
 head/contrib/bind9/lib/dns/zone.c                                         =
                      |    146 +-
 head/contrib/bind9/lib/isc/pthreads/mutex.c                               =
                      |     16 +-
 head/contrib/bind9/lib/isccfg/api                                         =
                      |      2 +-
 head/contrib/bind9/lib/isccfg/parser.c                                    =
                      |     24 +-
 head/contrib/bind9/version                                                =
                      |      6 +-
 head/contrib/binutils/gas/config/tc-i386.c                                =
                      |     20 +-
 head/contrib/binutils/ld/emultempl/ppc32elf.em                            =
                      |     33 +
 head/contrib/binutils/opcodes/i386-dis.c                                  =
                      |     81 +-
 head/contrib/binutils/opcodes/i386-opc.h                                  =
                      |      3 +-
 head/contrib/binutils/opcodes/i386-opc.tbl                                =
                      |     11 +
 head/contrib/binutils/opcodes/i386-tbl.h                                  =
                      |     31 +
 head/contrib/bsnmp/lib/bsnmpclient.3                                      =
                      |      2 +-
 head/contrib/bsnmp/lib/bsnmplib.3                                         =
                      |      7 +-
 head/contrib/bsnmp/snmp_mibII/mibII_tcp.c                                 =
                      |      6 +-
 head/contrib/bsnmp/snmp_target/snmp_target.3                              =
                      |      4 +-
 head/contrib/bsnmp/snmp_usm/snmp_usm.3                                    =
                      |     12 +-
 head/contrib/bsnmp/snmp_vacm/snmp_vacm.3                                  =
                      |      6 +-
 head/contrib/byacc/ACKNOWLEDGEMENTS                                       =
                      |     25 +
 head/contrib/byacc/AUTHORS                                                =
                      |      7 +
 head/contrib/byacc/CHANGES                                                =
                      |   1156 +
 head/contrib/byacc/Makefile.old                                           =
                      |     84 +
 head/contrib/byacc/NEW_FEATURES                                           =
                      |     46 +
 head/contrib/byacc/NOTES                                                  =
                      |      9 +
 head/contrib/byacc/NO_WARRANTY                                            =
                      |      3 +
 head/contrib/byacc/README                                                 =
                      |     29 +
 head/contrib/byacc/VERSION                                                =
                      |      1 +
 head/contrib/byacc/aclocal.m4                                             =
                      |   1144 +
 head/contrib/byacc/closure.c                                              =
                      |    251 +
 head/contrib/byacc/config.guess                                           =
                      |   1511 +
 head/contrib/byacc/config.sub                                             =
                      |   1760 +
 head/contrib/byacc/config_h.in                                            =
                      |      3 +
 head/contrib/byacc/configure                                              =
                      |   5973 ++
 head/contrib/byacc/configure.in                                           =
                      |     30 +
 head/contrib/byacc/defs.h                                                 =
                      |    438 +
 head/contrib/byacc/descrip.mms                                            =
                      |     37 +
 head/contrib/byacc/error.c                                                =
                      |    288 +
 head/contrib/byacc/graph.c                                                =
                      |    112 +
 head/contrib/byacc/install-sh                                             =
                      |    294 +
 head/contrib/byacc/lalr.c                                                 =
                      |    655 +
 head/contrib/byacc/lr0.c                                                  =
                      |    599 +
 head/contrib/byacc/main.c                                                 =
                      |    664 +
 head/contrib/byacc/makefile.in                                            =
                      |    182 +
 head/contrib/byacc/mkpar.c                                                =
                      |    392 +
 head/contrib/byacc/output.c                                               =
                      |   1507 +
 head/contrib/byacc/package/byacc.spec                                     =
                      |     60 +
 head/contrib/byacc/package/debian/changelog                               =
                      |    223 +
 head/contrib/byacc/package/debian/compat                                  =
                      |      1 +
 head/contrib/byacc/package/debian/control                                 =
                      |     17 +
 head/contrib/byacc/package/debian/copyright                               =
                      |    120 +
 head/contrib/byacc/package/debian/docs                                    =
                      |      4 +
 head/contrib/byacc/package/debian/postinst                                =
                      |     15 +
 head/contrib/byacc/package/debian/prerm                                   =
                      |     12 +
 head/contrib/byacc/package/debian/rules                                   =
                      |     93 +
 head/contrib/byacc/package/debian/source/format                           =
                      |      1 +
 head/contrib/byacc/package/debian/watch                                   =
                      |      4 +
 head/contrib/byacc/package/pkgsrc/DESCR                                   =
                      |      6 +
 head/contrib/byacc/package/pkgsrc/Makefile                                =
                      |     19 +
 head/contrib/byacc/package/pkgsrc/PLIST                                   =
                      |      3 +
 head/contrib/byacc/package/pkgsrc/distinfo                                =
                      |      6 +
 head/contrib/byacc/reader.c                                               =
                      |   2254 +
 head/contrib/byacc/skeleton.c                                             =
                      |    439 +
 head/contrib/byacc/symtab.c                                               =
                      |    117 +
 head/contrib/byacc/test/README                                            =
                      |      4 +
 head/contrib/byacc/test/calc.output                                       =
                      |    461 +
 head/contrib/byacc/test/calc.tab.c                                        =
                      |    673 +
 head/contrib/byacc/test/calc.tab.h                                        =
                      |      3 +
 head/contrib/byacc/test/calc.y                                            =
                      |    106 +
 head/contrib/byacc/test/calc1.output                                      =
                      |    877 +
 head/contrib/byacc/test/calc1.tab.c                                       =
                      |    915 +
 head/contrib/byacc/test/calc1.tab.h                                       =
                      |     18 +
 head/contrib/byacc/test/calc1.y                                           =
                      |    305 +
 head/contrib/byacc/test/calc2.output                                      =
                      |    461 +
 head/contrib/byacc/test/calc2.tab.c                                       =
                      |    682 +
 head/contrib/byacc/test/calc2.tab.h                                       =
                      |      3 +
 head/contrib/byacc/test/calc2.y                                           =
                      |    120 +
 head/contrib/byacc/test/calc3.output                                      =
                      |    461 +
 head/contrib/byacc/test/calc3.tab.c                                       =
                      |    687 +
 head/contrib/byacc/test/calc3.tab.h                                       =
                      |      3 +
 head/contrib/byacc/test/calc3.y                                           =
                      |    123 +
 head/contrib/byacc/test/code_calc.code.c                                  =
                      |    580 +
 head/contrib/byacc/test/code_calc.output                                  =
                      |    461 +
 head/contrib/byacc/test/code_calc.tab.c                                   =
                      |    199 +
 head/contrib/byacc/test/code_calc.tab.h                                   =
                      |      3 +
 head/contrib/byacc/test/code_calc.y                                       =
                      |    112 +
 head/contrib/byacc/test/code_error.code.c                                 =
                      |    491 +
 head/contrib/byacc/test/code_error.output                                 =
                      |     27 +
 head/contrib/byacc/test/code_error.tab.c                                  =
                      |    118 +
 head/contrib/byacc/test/code_error.y                                      =
                      |     36 +
 head/contrib/byacc/test/error.output                                      =
                      |     27 +
 head/contrib/byacc/test/error.tab.c                                       =
                      |    501 +
 head/contrib/byacc/test/error.y                                           =
                      |     28 +
 head/contrib/byacc/test/ftp.output                                        =
                      |   1625 +
 head/contrib/byacc/test/ftp.tab.c                                         =
                      |   1995 +
 head/contrib/byacc/test/ftp.tab.h                                         =
                      |     63 +
 head/contrib/byacc/test/ftp.y                                             =
                      |   1228 +
 head/contrib/byacc/test/grammar.output                                    =
                      |   2214 +
 head/contrib/byacc/test/grammar.tab.c                                     =
                      |   2025 +
 head/contrib/byacc/test/grammar.tab.h                                     =
                      |     35 +
 head/contrib/byacc/test/grammar.y                                         =
                      |   1183 +
 head/contrib/byacc/test/pure_calc.output                                  =
                      |    461 +
 head/contrib/byacc/test/pure_calc.tab.c                                   =
                      |    687 +
 head/contrib/byacc/test/pure_calc.tab.h                                   =
                      |      3 +
 head/contrib/byacc/test/pure_calc.y                                       =
                      |    116 +
 head/contrib/byacc/test/pure_error.output                                 =
                      |     27 +
 head/contrib/byacc/test/pure_error.tab.c                                  =
                      |    517 +
 head/contrib/byacc/test/pure_error.y                                      =
                      |     41 +
 head/contrib/byacc/test/quote_calc-s.output                               =
                      |    557 +
 head/contrib/byacc/test/quote_calc-s.tab.c                                =
                      |    687 +
 head/contrib/byacc/test/quote_calc-s.tab.h                                =
                      |      9 +
 head/contrib/byacc/test/quote_calc.output                                 =
                      |    557 +
 head/contrib/byacc/test/quote_calc.tab.c                                  =
                      |    693 +
 head/contrib/byacc/test/quote_calc.tab.h                                  =
                      |     15 +
 head/contrib/byacc/test/quote_calc.y                                      =
                      |    112 +
 head/contrib/byacc/test/quote_calc2-s.output                              =
                      |    557 +
 head/contrib/byacc/test/quote_calc2-s.tab.c                               =
                      |    687 +
 head/contrib/byacc/test/quote_calc2-s.tab.h                               =
                      |      9 +
 head/contrib/byacc/test/quote_calc2.output                                =
                      |    557 +
 head/contrib/byacc/test/quote_calc2.tab.c                                 =
                      |    693 +
 head/contrib/byacc/test/quote_calc2.tab.h                                 =
                      |     15 +
 head/contrib/byacc/test/quote_calc2.y                                     =
                      |    112 +
 head/contrib/byacc/test/quote_calc3-s.output                              =
                      |    557 +
 head/contrib/byacc/test/quote_calc3-s.tab.c                               =
                      |    688 +
 head/contrib/byacc/test/quote_calc3-s.tab.h                               =
                      |      9 +
 head/contrib/byacc/test/quote_calc3.output                                =
                      |    557 +
 head/contrib/byacc/test/quote_calc3.tab.c                                 =
                      |    688 +
 head/contrib/byacc/test/quote_calc3.tab.h                                 =
                      |      9 +
 head/contrib/byacc/test/quote_calc3.y                                     =
                      |    112 +
 head/contrib/byacc/test/quote_calc4-s.output                              =
                      |    557 +
 head/contrib/byacc/test/quote_calc4-s.tab.c                               =
                      |    688 +
 head/contrib/byacc/test/quote_calc4-s.tab.h                               =
                      |      9 +
 head/contrib/byacc/test/quote_calc4.output                                =
                      |    557 +
 head/contrib/byacc/test/quote_calc4.tab.c                                 =
                      |    688 +
 head/contrib/byacc/test/quote_calc4.tab.h                                 =
                      |      9 +
 head/contrib/byacc/test/quote_calc4.y                                     =
                      |    112 +
 head/contrib/byacc/test/run_lint.sh                                       =
                      |     20 +
 head/contrib/byacc/test/run_make.sh                                       =
                      |    139 +
 head/contrib/byacc/test/run_test.sh                                       =
                      |     82 +
 head/contrib/byacc/verbose.c                                              =
                      |    334 +
 head/contrib/byacc/vmsbuild.com                                           =
                      |    210 +
 head/contrib/byacc/warshall.c                                             =
                      |     82 +
 head/contrib/byacc/yacc.1                                                 =
                      |    242 +
 head/contrib/com_err/com_err.3                                            =
                      |      2 +-
 head/contrib/compiler-rt/lib/sparc64/divmod.m4                            =
                      |     38 +-
 head/contrib/compiler-rt/lib/sparc64/divsi3.S                             =
                      |     27 +-
 head/contrib/compiler-rt/lib/sparc64/modsi3.S                             =
                      |     27 +-
 head/contrib/dtc/Documentation/dts-format.txt                             =
                      |     34 +-
 head/contrib/dtc/Documentation/manual.txt                                 =
                      |     13 +-
 head/contrib/dtc/Makefile                                                 =
                      |     44 +-
 head/contrib/dtc/Makefile.convert-dtsv0                                   =
                      |     13 -
 head/contrib/dtc/Makefile.ftdump                                          =
                      |     12 -
 head/contrib/dtc/checks.c                                                 =
                      |    248 +-
 head/contrib/dtc/convert-dtsv0-lexer.l                                    =
                      |    238 -
 head/contrib/dtc/data.c                                                   =
                      |    120 +-
 head/contrib/dtc/dtc-lexer.l                                              =
                      |    123 +-
 head/contrib/dtc/dtc-parser.y                                             =
                      |    328 +-
 head/contrib/dtc/dtc.c                                                    =
                      |     75 +-
 head/contrib/dtc/dtc.h                                                    =
                      |     37 +-
 head/contrib/dtc/dtdiff                                                   =
                      |     38 +
 head/contrib/dtc/fdtdump.c                                                =
                      |    162 +
 head/contrib/dtc/fdtget.c                                                 =
                      |    366 +
 head/contrib/dtc/fdtput.c                                                 =
                      |    362 +
 head/contrib/dtc/flattree.c                                               =
                      |     83 +-
 head/contrib/dtc/fstree.c                                                 =
                      |     11 +-
 head/contrib/dtc/ftdump.c                                                 =
                      |    208 -
 head/contrib/dtc/libfdt/Makefile.libfdt                                   =
                      |      3 +-
 head/contrib/dtc/libfdt/fdt.c                                             =
                      |      9 +
 head/contrib/dtc/libfdt/fdt_empty_tree.c                                  =
                      |     84 +
 head/contrib/dtc/libfdt/fdt_ro.c                                          =
                      |    125 +-
 head/contrib/dtc/libfdt/fdt_rw.c                                          =
                      |     27 +
 head/contrib/dtc/libfdt/libfdt.h                                          =
                      |    378 +-
 head/contrib/dtc/libfdt/libfdt_env.h                                      =
                      |     16 +-
 head/contrib/dtc/libfdt/libfdt_internal.h                                 =
                      |      1 +
 head/contrib/dtc/livetree.c                                               =
                      |    329 +-
 head/contrib/dtc/srcpos.c                                                 =
                      |    368 +-
 head/contrib/dtc/srcpos.h                                                 =
                      |    128 +-
 head/contrib/dtc/treesource.c                                             =
                      |     21 +-
 head/contrib/dtc/util.c                                                   =
                      |    303 +-
 head/contrib/dtc/util.h                                                   =
                      |     98 +
 head/contrib/gcc/ChangeLog.gcc43                                          =
                      |     22 +-
 head/contrib/gcc/config/arm/freebsd.h                                     =
                      |      1 +
 head/contrib/gcc/config/i386/freebsd.h                                    =
                      |      3 +-
 head/contrib/gcc/config/i386/freebsd64.h                                  =
                      |      3 +-
 head/contrib/gcc/config/ia64/freebsd.h                                    =
                      |      1 +
 head/contrib/gcc/config/mips/freebsd.h                                    =
                      |      3 +-
 head/contrib/gcc/config/rs6000/freebsd.h                                  =
                      |      1 +
 head/contrib/gcc/config/rs6000/rs6000.md                                  =
                      |      1 +
 head/contrib/gcc/config/sparc/freebsd.h                                   =
                      |      8 +-
 head/contrib/gcc/config/sparc/sparc.md                                    =
                      |    128 +-
 head/contrib/gcc/cse.c                                                    =
                      |     30 +-
 head/contrib/gcc/expr.c                                                   =
                      |      9 +-
 head/contrib/gcc/fold-const.c                                             =
                      |     48 +-
 head/contrib/gcc/gimplify.c                                               =
                      |      4 +-
 head/contrib/gcc/ipa-pure-const.c                                         =
                      |     30 +
 head/contrib/gcc/ipa-utils.c                                              =
                      |      2 +-
 head/contrib/gcc/rtl.h                                                    =
                      |      4 +-
 head/contrib/gcc/tree-ssa-ccp.c                                           =
                      |      4 +-
 head/contrib/gcc/tree-ssa-pre.c                                           =
                      |     17 +
 head/contrib/gcc/var-tracking.c                                           =
                      |     50 +-
 head/contrib/gcc/varasm.c                                                 =
                      |      5 +-
 head/contrib/groff/tmac/doc-common                                        =
                      |      3 +
 head/contrib/jemalloc/ChangeLog                                           =
                      |     33 +-
 head/contrib/jemalloc/FREEBSD-Xlist                                       =
                      |      1 +
 head/contrib/jemalloc/FREEBSD-diffs                                       =
                      |     87 +-
 head/contrib/jemalloc/FREEBSD-upgrade                                     =
                      |      3 +-
 head/contrib/jemalloc/VERSION                                             =
                      |      2 +-
 head/contrib/jemalloc/doc/jemalloc.3                                      =
                      |     61 +-
 head/contrib/jemalloc/include/jemalloc/internal/arena.h                   =
                      |    410 +-
 head/contrib/jemalloc/include/jemalloc/internal/atomic.h                  =
                      |     28 +
 head/contrib/jemalloc/include/jemalloc/internal/chunk.h                   =
                      |      3 +-
 head/contrib/jemalloc/include/jemalloc/internal/chunk_mmap.h              =
                      |      6 +-
 head/contrib/jemalloc/include/jemalloc/internal/ctl.h                     =
                      |     31 +-
 head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h       =
                      |    100 +-
 head/contrib/jemalloc/include/jemalloc/internal/mutex.h                   =
                      |     20 +-
 head/contrib/jemalloc/include/jemalloc/internal/private_namespace.h       =
                      |     80 +-
 head/contrib/jemalloc/include/jemalloc/internal/prof.h                    =
                      |     63 +-
 head/contrib/jemalloc/include/jemalloc/internal/tcache.h                  =
                      |     84 +-
 head/contrib/jemalloc/include/jemalloc/internal/tsd.h                     =
                      |    132 +-
 head/contrib/jemalloc/include/jemalloc/internal/util.h                    =
                      |     32 +-
 head/contrib/jemalloc/include/jemalloc/jemalloc.h                         =
                      |     66 +-
 head/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h                 =
                      |      4 +
 head/contrib/jemalloc/include/jemalloc/jemalloc_defs.h                    =
                      |     50 +-
 head/contrib/jemalloc/src/arena.c                                         =
                      |    617 +-
 head/contrib/jemalloc/src/chunk.c                                         =
                      |    138 +-
 head/contrib/jemalloc/src/chunk_dss.c                                     =
                      |      5 +-
 head/contrib/jemalloc/src/chunk_mmap.c                                    =
                      |    217 +-
 head/contrib/jemalloc/src/ctl.c                                           =
                      |    255 +-
 head/contrib/jemalloc/src/huge.c                                          =
                      |     14 +-
 head/contrib/jemalloc/src/jemalloc.c                                      =
                      |    200 +-
 head/contrib/jemalloc/src/mutex.c                                         =
                      |     21 +-
 head/contrib/jemalloc/src/prof.c                                          =
                      |    220 +-
 head/contrib/jemalloc/src/quarantine.c                                    =
                      |    105 +-
 head/contrib/jemalloc/src/stats.c                                         =
                      |     31 +-
 head/contrib/jemalloc/src/tcache.c                                        =
                      |     65 +-
 head/contrib/jemalloc/src/tsd.c                                           =
                      |     49 +-
 head/contrib/jemalloc/src/util.c                                          =
                      |     71 +-
 head/contrib/less/LICENSE                                                 =
                      |      2 +-
 head/contrib/less/Makefile.aut                                            =
                      |      5 +-
 head/contrib/less/NEWS                                                    =
                      |     30 +-
 head/contrib/less/README                                                  =
                      |     13 +-
 head/contrib/less/brac.c                                                  =
                      |      5 +-
 head/contrib/less/ch.c                                                    =
                      |     18 +-
 head/contrib/less/charset.c                                               =
                      |      5 +-
 head/contrib/less/charset.h                                               =
                      |      5 +-
 head/contrib/less/cmd.h                                                   =
                      |     10 +-
 head/contrib/less/cmdbuf.c                                                =
                      |     75 +-
 head/contrib/less/command.c                                               =
                      |     77 +-
 head/contrib/less/configure                                               =
                      |    419 +-
 head/contrib/less/configure.ac                                            =
                      |     25 +-
 head/contrib/less/cvt.c                                                   =
                      |     30 +-
 head/contrib/less/decode.c                                                =
                      |      6 +-
 head/contrib/less/defines.ds                                              =
                      |      8 +-
 head/contrib/less/defines.h.in                                            =
                      |     12 +-
 head/contrib/less/defines.o2                                              =
                      |      5 +-
 head/contrib/less/defines.o9                                              =
                      |      5 +-
 head/contrib/less/defines.wn                                              =
                      |      5 +-
 head/contrib/less/edit.c                                                  =
                      |      9 +-
 head/contrib/less/filename.c                                              =
                      |     53 +-
 head/contrib/less/forwback.c                                              =
                      |      7 +-
 head/contrib/less/funcs.h                                                 =
                      |      1 +
 head/contrib/less/help.c                                                  =
                      |     25 +-
 head/contrib/less/ifile.c                                                 =
                      |      5 +-
 head/contrib/less/input.c                                                 =
                      |      7 +-
 head/contrib/less/jump.c                                                  =
                      |      5 +-
 head/contrib/less/less.h                                                  =
                      |     10 +-
 head/contrib/less/less.hlp                                                =
                      |     25 +-
 head/contrib/less/less.man                                                =
                      |    382 +-
 head/contrib/less/less.nro                                                =
                      |     50 +-
 head/contrib/less/lessecho.c                                              =
                      |      7 +-
 head/contrib/less/lessecho.man                                            =
                      |     25 +-
 head/contrib/less/lessecho.nro                                            =
                      |     19 +-
 head/contrib/less/lesskey.c                                               =
                      |      8 +-
 head/contrib/less/lesskey.h                                               =
                      |      5 +-
 head/contrib/less/lesskey.man                                             =
                      |     11 +-
 head/contrib/less/lesskey.nro                                             =
                      |     10 +-
 head/contrib/less/lglob.h                                                 =
                      |      5 +-
 head/contrib/less/line.c                                                  =
                      |     13 +-
 head/contrib/less/linenum.c                                               =
                      |      5 +-
 head/contrib/less/lsystem.c                                               =
                      |      5 +-
 head/contrib/less/main.c                                                  =
                      |      8 +-
 head/contrib/less/mark.c                                                  =
                      |      5 +-
 head/contrib/less/mkhelp.c                                                =
                      |      5 +-
 head/contrib/less/optfunc.c                                               =
                      |     30 +-
 head/contrib/less/option.c                                                =
                      |      5 +-
 head/contrib/less/option.h                                                =
                      |      5 +-
 head/contrib/less/opttbl.c                                                =
                      |      5 +-
 head/contrib/less/os.c                                                    =
                      |      5 +-
 head/contrib/less/output.c                                                =
                      |     26 +-
 head/contrib/less/pattern.c                                               =
                      |    176 +-
 head/contrib/less/pattern.h                                               =
                      |     16 +-
 head/contrib/less/pckeys.h                                                =
                      |      5 +-
 head/contrib/less/position.c                                              =
                      |      5 +-
 head/contrib/less/position.h                                              =
                      |      5 +-
 head/contrib/less/prompt.c                                                =
                      |     17 +-
 head/contrib/less/screen.c                                                =
                      |      7 +-
 head/contrib/less/scrsize.c                                               =
                      |      5 +-
 head/contrib/less/search.c                                                =
                      |     83 +-
 head/contrib/less/signal.c                                                =
                      |      7 +-
 head/contrib/less/tags.c                                                  =
                      |      5 +-
 head/contrib/less/ttyin.c                                                 =
                      |      5 +-
 head/contrib/less/version.c                                               =
                      |     20 +-
 head/contrib/libc++/include/__bit_reference                               =
                      |      4 +
 head/contrib/libc++/include/__config                                      =
                      |      4 +-
 head/contrib/libc++/include/__tuple                                       =
                      |     29 +-
 head/contrib/libc++/include/algorithm                                     =
                      |     17 +-
 head/contrib/libc++/include/atomic                                        =
                      |    718 +-
 head/contrib/libc++/include/cmath                                         =
                      |     13 +-
 head/contrib/libc++/include/limits                                        =
                      |    720 +-
 head/contrib/libc++/include/memory                                        =
                      |     60 +-
 head/contrib/libc++/include/random                                        =
                      |    223 +-
 head/contrib/libc++/include/system_error                                  =
                      |      2 +-
 head/contrib/libc++/include/tuple                                         =
                      |     58 +-
 head/contrib/libc++/include/type_traits                                   =
                      |    122 +-
 head/contrib/libc++/include/utility                                       =
                      |      7 +-
 head/contrib/libc++/src/iostream.cpp                                      =
                      |     61 +-
 head/contrib/libc++/src/stdexcept.cpp                                     =
                      |      4 +
 head/contrib/libc++/src/utility.cpp                                       =
                      |      1 +
 head/contrib/libpcap/CHANGES                                              =
                      |     74 +
 head/contrib/libpcap/CREDITS                                              =
                      |    279 +-
 head/contrib/libpcap/Makefile.in                                          =
                      |    115 +-
 head/contrib/libpcap/README                                               =
                      |     13 +-
 head/contrib/libpcap/VERSION                                              =
                      |      2 +-
 head/contrib/libpcap/bpf/net/bpf_filter.c                                 =
                      |      2 +-
 head/contrib/libpcap/config.h.in                                          =
                      |     30 +
 head/contrib/libpcap/configure                                            =
                      |   5241 +-
 head/contrib/libpcap/configure.in                                         =
                      |    399 +-
 head/contrib/libpcap/ethertype.h                                          =
                      |      3 +
 head/contrib/libpcap/fad-getad.c                                          =
                      |     12 +-
 head/contrib/libpcap/filtertest.c                                         =
                      |    266 -
 head/contrib/libpcap/findalldevstest.c                                    =
                      |    131 -
 head/contrib/libpcap/gencode.c                                            =
                      |    533 +-
 head/contrib/libpcap/gencode.h                                            =
                      |      4 +
 head/contrib/libpcap/grammar.y                                            =
                      |      9 +-
 head/contrib/libpcap/inet.c                                               =
                      |     14 +-
 head/contrib/libpcap/opentest.c                                           =
                      |    216 -
 head/contrib/libpcap/packaging/pcap.spec.in                               =
                      |     83 +-
 head/contrib/libpcap/pcap-bpf.c                                           =
                      |    290 +-
 head/contrib/libpcap/pcap-bt-linux.c                                      =
                      |     76 +-
 head/contrib/libpcap/pcap-common.c                                        =
                      |    595 +-
 head/contrib/libpcap/pcap-config.in                                       =
                      |     31 +-
 head/contrib/libpcap/pcap-dag.c                                           =
                      |     11 +-
 head/contrib/libpcap/pcap-dlpi.c                                          =
                      |    103 +-
 head/contrib/libpcap/pcap-filter.manmisc                                  =
                      |     17 +-
 head/contrib/libpcap/pcap-filter.manmisc.in                               =
                      |     15 +-
 head/contrib/libpcap/pcap-int.h                                           =
                      |      3 +
 head/contrib/libpcap/pcap-libdlpi.c                                       =
                      |     72 +-
 head/contrib/libpcap/pcap-linktype.manmisc                                =
                      |    238 +-
 head/contrib/libpcap/pcap-linktype.manmisc.in                             =
                      |    238 +-
 head/contrib/libpcap/pcap-linux.c                                         =
                      |   1358 +-
 head/contrib/libpcap/pcap-netfilter-linux.c                               =
                      |    468 +
 head/contrib/libpcap/pcap-netfilter-linux.h                               =
                      |     35 +
 head/contrib/libpcap/pcap-savefile.manfile                                =
                      |      2 +-
 head/contrib/libpcap/pcap-stdinc.h                                        =
                      |      7 -
 head/contrib/libpcap/pcap-tstamp.manmisc                                  =
                      |    132 +
 head/contrib/libpcap/pcap-tstamp.manmisc.in                               =
                      |    132 +
 head/contrib/libpcap/pcap-usb-linux.c                                     =
                      |     51 +-
 head/contrib/libpcap/pcap-win32.c                                         =
                      |      7 +-
 head/contrib/libpcap/pcap.3pcap                                           =
                      |    571 +-
 head/contrib/libpcap/pcap.3pcap.in                                        =
                      |    569 +-
 head/contrib/libpcap/pcap.c                                               =
                      |    440 +-
 head/contrib/libpcap/pcap/bpf.h                                           =
                      |    189 +-
 head/contrib/libpcap/pcap/pcap.h                                          =
                      |     66 +-
 head/contrib/libpcap/pcap_activate.3pcap                                  =
                      |      8 +
 head/contrib/libpcap/pcap_can_set_rfmon.3pcap                             =
                      |     10 +-
 head/contrib/libpcap/pcap_compile.3pcap                                   =
                      |      8 +-
 head/contrib/libpcap/pcap_compile.3pcap.in                                =
                      |      2 +-
 head/contrib/libpcap/pcap_datalink.3pcap                                  =
                      |      6 +-
 head/contrib/libpcap/pcap_datalink.3pcap.in                               =
                      |      4 +-
 head/contrib/libpcap/pcap_datalink_name_to_val.3pcap                      =
                      |      8 +-
 head/contrib/libpcap/pcap_datalink_val_to_name.3pcap                      =
                      |     10 +-
 head/contrib/libpcap/pcap_dump_open.3pcap                                 =
                      |      2 +-
 head/contrib/libpcap/pcap_fileno.3pcap                                    =
                      |      2 +-
 head/contrib/libpcap/pcap_findalldevs.3pcap                               =
                      |     62 +-
 head/contrib/libpcap/pcap_free_datalinks.3pcap                            =
                      |     41 -
 head/contrib/libpcap/pcap_freealldevs.3pcap                               =
                      |     40 -
 head/contrib/libpcap/pcap_get_selectable_fd.3pcap                         =
                      |     18 +-
 head/contrib/libpcap/pcap_list_datalinks.3pcap                            =
                      |     28 +-
 head/contrib/libpcap/pcap_list_datalinks.3pcap.in                         =
                      |     26 +-
 head/contrib/libpcap/pcap_list_tstamp_types.3pcap                         =
                      |     70 +
 head/contrib/libpcap/pcap_list_tstamp_types.3pcap.in                      =
                      |     70 +
 head/contrib/libpcap/pcap_loop.3pcap                                      =
                      |      7 +-
 head/contrib/libpcap/pcap_major_version.3pcap                             =
                      |     10 +-
 head/contrib/libpcap/pcap_next_ex.3pcap                                   =
                      |     25 +-
 head/contrib/libpcap/pcap_open_dead.3pcap                                 =
                      |      2 +-
 head/contrib/libpcap/pcap_open_live.3pcap                                 =
                      |      2 +-
 head/contrib/libpcap/pcap_open_offline.3pcap                              =
                      |     12 +-
 head/contrib/libpcap/pcap_set_datalink.3pcap                              =
                      |      7 +-
 head/contrib/libpcap/pcap_set_tstamp_type.3pcap                           =
                      |     65 +
 head/contrib/libpcap/pcap_set_tstamp_type.3pcap.in                        =
                      |     65 +
 head/contrib/libpcap/pcap_tstamp_type_name_to_val.3pcap                   =
                      |     45 +
 head/contrib/libpcap/pcap_tstamp_type_val_to_name.3pcap                   =
                      |     45 +
 head/contrib/libpcap/savefile.c                                           =
                      |     15 +-
 head/contrib/libpcap/scanner.l                                            =
                      |      8 +-
 head/contrib/libpcap/selpolltest.c                                        =
                      |    350 -
 head/contrib/libpcap/sf-pcap-ng.c                                         =
                      |      8 +-
 head/contrib/libpcap/sf-pcap.c                                            =
                      |      8 +-
 head/contrib/libpcap/test/filtertest.c                                    =
                      |    266 +
 head/contrib/libpcap/test/findalldevstest.c                               =
                      |    131 +
 head/contrib/libpcap/test/nonblocktest.c                                  =
                      |    226 +
 head/contrib/libpcap/test/opentest.c                                      =
                      |    216 +
 head/contrib/libpcap/test/reactivatetest.c                                =
                      |     84 +
 head/contrib/libpcap/test/selpolltest.c                                   =
                      |    350 +
 head/contrib/libstdc++/include/bits/locale_facets.tcc                     =
                      |     12 +-
 head/contrib/libstdc++/include/bits/stl_bvector.h                         =
                      |     18 +-
 head/contrib/libstdc++/include/bits/stl_deque.h                           =
                      |     14 +-
 head/contrib/libstdc++/include/bits/stl_list.h                            =
                      |     13 +-
 head/contrib/libstdc++/include/bits/stl_map.h                             =
                      |      4 +-
 head/contrib/libstdc++/include/bits/stl_multimap.h                        =
                      |      6 +-
 head/contrib/libstdc++/include/bits/stl_multiset.h                        =
                      |     12 +-
 head/contrib/libstdc++/include/bits/stl_set.h                             =
                      |     12 +-
 head/contrib/libstdc++/include/bits/stl_tree.h                            =
                      |     49 +-
 head/contrib/libstdc++/include/bits/stl_vector.h                          =
                      |     13 +-
 head/contrib/llvm/include/llvm-c/lto.h                                    =
                      |      6 -
 head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h                          =
                      |      3 -
 head/contrib/llvm/include/llvm/ADT/StringMap.h                            =
                      |      2 +-
 head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h                    =
                      |     44 +-
 head/contrib/llvm/include/llvm/CodeGen/Passes.h                           =
                      |      2 +-
 head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h                =
                      |      7 +
 head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h                      =
                      |    211 +-
 head/contrib/llvm/include/llvm/IntrinsicsX86.td                           =
                      |     20 -
 head/contrib/llvm/include/llvm/LLVMContext.h                              =
                      |      2 +-
 head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h                     =
                      |      3 -
 head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h                   =
                      |      3 +-
 head/contrib/llvm/include/llvm/Object/ELF.h                               =
                      |      9 +
 head/contrib/llvm/include/llvm/Operator.h                                 =
                      |     31 +-
 head/contrib/llvm/include/llvm/Support/FileSystem.h                       =
                      |      4 +-
 head/contrib/llvm/include/llvm/Support/IRBuilder.h                        =
                      |     87 +-
 head/contrib/llvm/include/llvm/Support/JSONParser.h                       =
                      |    448 -
 head/contrib/llvm/include/llvm/Support/Locale.h                           =
                      |     17 +
 head/contrib/llvm/include/llvm/Support/MDBuilder.h                        =
                      |    118 +
 head/contrib/llvm/include/llvm/Support/Process.h                          =
                      |      4 +
 head/contrib/llvm/include/llvm/Support/SourceMgr.h                        =
                      |      7 +-
 head/contrib/llvm/include/llvm/Support/YAMLParser.h                       =
                      |      5 +-
 head/contrib/llvm/include/llvm/Support/raw_ostream.h                      =
                      |      5 +
 head/contrib/llvm/include/llvm/TableGen/Error.h                           =
                      |      5 +
 head/contrib/llvm/include/llvm/TableGen/Record.h                          =
                      |      4 +-
 head/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h                 =
                      |     10 +-
 head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h                =
                      |      2 +-
 head/contrib/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h         =
                      |      3 +-
 head/contrib/llvm/include/llvm/Transforms/Vectorize.h                     =
                      |      9 +
 head/contrib/llvm/lib/Analysis/ConstantFolding.cpp                        =
                      |     14 +-
 head/contrib/llvm/lib/Analysis/ScalarEvolution.cpp                        =
                      |      2 +-
 head/contrib/llvm/lib/Analysis/ValueTracking.cpp                          =
                      |      2 +-
 head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp              =
                      |     53 +-
 head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.h                =
                      |     37 +-
 head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp             =
                      |      7 +-
 head/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp                           =
                      |     87 +-
 head/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp                    =
                      |     12 +-
 head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp                       =
                      |     36 +-
 head/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp                   =
                      |    249 +-
 head/contrib/llvm/lib/CodeGen/Passes.cpp                                  =
                      |     55 +-
 head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp                       =
                      |      6 +-
 head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp                =
                      |      1 +
 head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp          =
                      |      3 +-
 head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp         =
                      |     84 +-
 head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp        =
                      |      2 +-
 head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp             =
                      |      5 +-
 head/contrib/llvm/lib/CodeGen/SlotIndexes.cpp                             =
                      |     52 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp        =
                      |    214 +
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h          =
                      |     43 +
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h           =
                      |     59 +
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp         =
                      |     37 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp      =
                      |    173 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h        =
                      |     12 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h       =
                      |     21 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp    =
                      |      4 +-
 head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h      =
                      |      4 +-
 head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp                           =
                      |     10 +-
 head/contrib/llvm/lib/Object/ELFObjectFile.cpp                            =
                      |     10 -
 head/contrib/llvm/lib/Support/JSONParser.cpp                              =
                      |    302 -
 head/contrib/llvm/lib/Support/Locale.cpp                                  =
                      |     10 +
 head/contrib/llvm/lib/Support/LocaleGeneric.inc                           =
                      |     17 +
 head/contrib/llvm/lib/Support/LocaleWindows.inc                           =
                      |     15 +
 head/contrib/llvm/lib/Support/LocaleXlocale.inc                           =
                      |     61 +
 head/contrib/llvm/lib/Support/Memory.cpp                                  =
                      |      6 +-
 head/contrib/llvm/lib/Support/SmallPtrSet.cpp                             =
                      |      3 +-
 head/contrib/llvm/lib/Support/SourceMgr.cpp                               =
                      |     48 +-
 head/contrib/llvm/lib/Support/Unix/PathV2.inc                             =
                      |      7 +-
 head/contrib/llvm/lib/Support/Unix/Process.inc                            =
                      |      4 +
 head/contrib/llvm/lib/Support/Windows/PathV2.inc                          =
                      |      6 +-
 head/contrib/llvm/lib/Support/Windows/Process.inc                         =
                      |     32 +
 head/contrib/llvm/lib/Support/YAMLParser.cpp                              =
                      |      6 +-
 head/contrib/llvm/lib/Support/raw_ostream.cpp                             =
                      |     13 +
 head/contrib/llvm/lib/TableGen/Error.cpp                                  =
                      |     16 +
 head/contrib/llvm/lib/Target/ARM/ARMCallingConv.td                        =
                      |      4 -
 head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td                       =
                      |      1 +
 head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td                          =
                      |     68 +-
 head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td                          =
                      |    183 +-
 head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp                     =
                      |     20 +-
 head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp               =
                      |     45 +-
 head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp         =
                      |     42 +-
 head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp           =
                      |      4 +-
 head/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td                    =
                      |      4 -
 head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp                 =
                      |      6 +-
 head/contrib/llvm/lib/Target/Hexagon/Hexagon.h                            =
                      |      1 -
 head/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp                =
                      |     53 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp              =
                      |      4 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td               =
                      |     96 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.td             =
                      |     27 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp                 =
                      |   1009 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h                   =
                      |     10 -
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.td                  =
                      |      4 -
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV3.td                =
                      |     51 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td                =
                      |   2917 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonMCInst.h                      =
                      |     41 -
 head/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp               =
                      |      2 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td                   =
                      |     31 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td                 =
                      |     35 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp             =
                      |     19 +-
 head/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp            =
                      |   3642 -
 head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp   =
                      |     65 +-
 head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.h     =
                      |      2 -
 head/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h       =
                      |     31 +-
 head/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td                  =
                      |      4 -
 head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp               =
                      |      4 +-
 head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp               =
                      |      4 +-
 head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp       =
                      |    552 +
 head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp         =
                      |      6 +-
 head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp      =
                      |      2 +-
 head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp       =
                      |     41 +-
 head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td                      =
                      |     55 +-
 head/contrib/llvm/lib/Target/Mips/MipsCondMov.td                          =
                      |     48 +-
 head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp                    =
                      |      2 +
 head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td                         =
                      |     68 +-
 head/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td                     =
                      |      6 +
 head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td                        =
                      |    121 +-
 head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp                   =
                      |     14 +-
 head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp                     =
                      |      8 +-
 head/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td                    =
                      |      4 -
 head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp                 =
                      |      4 +-
 head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp                 =
                      |      6 +-
 head/contrib/llvm/lib/Target/TargetLibraryInfo.cpp                        =
                      |     80 +-
 head/contrib/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp               =
                      |      3 +
 head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp                      =
                      |    108 +-
 head/contrib/llvm/lib/Target/X86/X86ISelLowering.h                        =
                      |      6 +-
 head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td                 =
                      |      2 +
 head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp                         =
                      |      4 +-
 head/contrib/llvm/lib/Target/X86/X86InstrSSE.td                           =
                      |     54 +-
 head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp                         =
                      |      4 +-
 head/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp                     =
                      |     12 +-
 head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp                 =
                      |      2 +-
 head/contrib/llvm/lib/Transforms/IPO/Internalize.cpp                      =
                      |      2 +
 head/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp               =
                      |     11 +-
 head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp            =
                      |     19 +-
 head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp                  =
                      |      7 +-
 head/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp                       =
                      |     69 +-
 head/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp                   =
                      |      5 +-
 head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp              =
                      |     25 +-
 head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp             =
                      |     43 +-
 head/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp                =
                      |     65 +-
 head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp                              =
                      |     43 +-
 head/contrib/llvm/lib/VMCore/Instructions.cpp                             =
                      |     17 +
 head/contrib/llvm/lib/VMCore/LLVMContext.cpp                              =
                      |      6 +-
 head/contrib/llvm/lib/VMCore/Module.cpp                                   =
                      |      2 +-
 head/contrib/llvm/lib/VMCore/Verifier.cpp                                 =
                      |     20 +-
 head/contrib/llvm/tools/bugpoint/ToolRunner.cpp                           =
                      |      2 +-
 head/contrib/llvm/tools/clang/include/clang/AST/Decl.h                    =
                      |      4 -
 head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h                =
                      |      1 -
 head/contrib/llvm/tools/clang/include/clang/AST/DeclLookups.h             =
                      |      4 +
 head/contrib/llvm/tools/clang/include/clang/AST/Expr.h                    =
                      |     14 +-
 head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h       =
                      |      6 +
 head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h     =
                      |      1 +
 head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h                    =
                      |     42 +
 head/contrib/llvm/tools/clang/include/clang/AST/Type.h                    =
                      |     34 +-
 head/contrib/llvm/tools/clang/include/clang/AST/VTableBuilder.h           =
                      |     12 +-
 head/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h       =
                      |      2 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def         =
                      |      6 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/ConvertUTF.h            =
                      |      2 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/DelayedCleanupPool.h    =
                      |    110 -
 head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td  =
                      |     23 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationTy=
pe.h                  |     18 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h       =
                      |     33 +-
 head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td            =
                      |      1 +
 head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h            =
                      |     15 +
 head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td          =
                      |      3 -
 head/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h          =
                      |      3 +
 head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h            =
                      |     10 -
 head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h    =
                      |      9 -
 head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h    =
                      |      1 -
 head/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h     =
                      |     11 +-
 head/contrib/llvm/tools/clang/include/clang/Index/ASTLocation.h           =
                      |    173 -
 head/contrib/llvm/tools/clang/include/clang/Index/Analyzer.h              =
                      |     56 -
 head/contrib/llvm/tools/clang/include/clang/Index/DeclReferenceMap.h      =
                      |     50 -
 head/contrib/llvm/tools/clang/include/clang/Index/Entity.h                =
                      |    149 -
 head/contrib/llvm/tools/clang/include/clang/Index/GlobalCallGraph.h       =
                      |    149 -
 head/contrib/llvm/tools/clang/include/clang/Index/GlobalSelector.h        =
                      |    100 -
 head/contrib/llvm/tools/clang/include/clang/Index/Handlers.h              =
                      |     82 -
 head/contrib/llvm/tools/clang/include/clang/Index/IndexProvider.h         =
                      |     38 -
 head/contrib/llvm/tools/clang/include/clang/Index/Indexer.h               =
                      |     71 -
 head/contrib/llvm/tools/clang/include/clang/Index/Program.h               =
                      |     45 -
 head/contrib/llvm/tools/clang/include/clang/Index/STLExtras.h             =
                      |     63 -
 head/contrib/llvm/tools/clang/include/clang/Index/SelectorMap.h           =
                      |     57 -
 head/contrib/llvm/tools/clang/include/clang/Index/TranslationUnit.h       =
                      |     41 -
 head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h                =
                      |     87 +-
 head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h         =
                      |      4 +-
 head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h         =
                      |      8 +-
 head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h                  =
                      |      7 +-
 head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h                   =
                      |    147 +-
 head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h   =
                      |      2 +
 head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h     =
                      |      9 +-
 head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h     =
                      |      1 +
 head/contrib/llvm/tools/clang/include/clang/Serialization/Module.h        =
                      |     10 +-
 head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensit=
ive/AnalysisManager.h |     17 -
 head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensit=
ive/SVals.h           |      2 +
 head/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDatabase.h =
                      |     76 +-
 head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp                      =
                      |      5 +-
 head/contrib/llvm/tools/clang/lib/AST/Decl.cpp                            =
                      |    119 +-
 head/contrib/llvm/tools/clang/lib/AST/Expr.cpp                            =
                      |    335 +-
 head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp                    =
                      |     56 +-
 head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp               =
                      |      5 +-
 head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp                   =
                      |     23 +-
 head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp                            =
                      |      6 +-
 head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp                     =
                      |     17 +
 head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp                     =
                      |      6 +
 head/contrib/llvm/tools/clang/lib/AST/Type.cpp                            =
                      |     10 +
 head/contrib/llvm/tools/clang/lib/AST/VTableBuilder.cpp                   =
                      |      9 +-
 head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp                        =
                      |      9 +-
 head/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp        =
                      |      3 +-
 head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp                    =
                      |      1 +
 head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp                       =
                      |      7 +-
 head/contrib/llvm/tools/clang/lib/Basic/Version.cpp                       =
                      |      2 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp                    =
                      |      2 +
 head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp                      =
                      |    130 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp                     =
                      |     13 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp                 =
                      |     48 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp                      =
                      |      4 +
 head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp                      =
                      |    117 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp                   =
                      |     34 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp                   =
                      |      5 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp              =
                      |      8 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp                      =
                      |      7 +
 head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp             =
                      |     11 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h               =
                      |     11 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp               =
                      |      2 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.cpp                 =
                      |     36 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.h                   =
                      |      8 +-
 head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp                  =
                      |     24 +-
 head/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp                  =
                      |      4 +
 head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp                       =
                      |     52 +-
 head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp                   =
                      |     21 +-
 head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp                        =
                      |     13 +-
 head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp                    =
                      |      6 +-
 head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp           =
                      |      7 +-
 head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp         =
                      |      3 -
 head/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp            =
                      |     72 -
 head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp           =
                      |     12 +-
 head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp             =
                      |    605 +-
 head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.c=
pp                    |      1 -
 head/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h                    =
                      |     14 +-
 head/contrib/llvm/tools/clang/lib/Headers/avxintrin.h                     =
                      |     26 +-
 head/contrib/llvm/tools/clang/lib/Index/ASTLocation.cpp                   =
                      |    114 -
 head/contrib/llvm/tools/clang/lib/Index/ASTVisitor.h                      =
                      |    143 -
 head/contrib/llvm/tools/clang/lib/Index/Analyzer.cpp                      =
                      |    470 -
 head/contrib/llvm/tools/clang/lib/Index/DeclReferenceMap.cpp              =
                      |     90 -
 head/contrib/llvm/tools/clang/lib/Index/Entity.cpp                        =
                      |    270 -
 head/contrib/llvm/tools/clang/lib/Index/EntityImpl.h                      =
                      |     71 -
 head/contrib/llvm/tools/clang/lib/Index/GlobalCallGraph.cpp               =
                      |    152 -
 head/contrib/llvm/tools/clang/lib/Index/GlobalSelector.cpp                =
                      |     71 -
 head/contrib/llvm/tools/clang/lib/Index/Handlers.cpp                      =
                      |     22 -
 head/contrib/llvm/tools/clang/lib/Index/IndexProvider.cpp                 =
                      |     20 -
 head/contrib/llvm/tools/clang/lib/Index/Indexer.cpp                       =
                      |    121 -
 head/contrib/llvm/tools/clang/lib/Index/Program.cpp                       =
                      |     50 -
 head/contrib/llvm/tools/clang/lib/Index/ProgramImpl.h                     =
                      |     56 -
 head/contrib/llvm/tools/clang/lib/Index/SelectorMap.cpp                   =
                      |     84 -
 head/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp         =
                      |     24 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp                     =
                      |     46 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp                  =
                      |     33 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp                     =
                      |      4 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp                  =
                      |     12 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp                     =
                      |    181 +-
 head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp                 =
                      |      3 +-
 head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp                        =
                      |     28 +-
 head/contrib/llvm/tools/clang/lib/Rewrite/RewriteModernObjC.cpp           =
                      |    160 +-
 head/contrib/llvm/tools/clang/lib/Rewrite/RewriteRope.cpp                 =
                      |      5 +
 head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp                           =
                      |      1 +
 head/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp                     =
                      |      7 +
 head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp                       =
                      |     39 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp                    =
                      |    372 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp              =
                      |    359 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp                       =
                      |     35 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp                    =
                      |     73 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp                 =
                      |     17 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp                     =
                      |     94 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp                   =
                      |      2 +
 head/contrib/llvm/tools/clang/lib/Sema/SemaPseudoObject.cpp               =
                      |     28 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp                       =
                      |     11 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp                   =
                      |     48 +
 head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp                   =
                      |      4 +
 head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp          =
                      |     49 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp        =
                      |     99 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp    =
                      |    365 +-
 head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp                       =
                      |     52 +-
 head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h                    =
                      |     66 +-
 head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp             =
                      |    153 +-
 head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp         =
                      |      9 +-
 head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderInternals.h      =
                      |     10 +-
 head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp         =
                      |     15 +-
 head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp             =
                      |      4 +
 head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp         =
                      |      3 +
 head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp         =
                      |      8 +
 head/contrib/llvm/tools/clang/lib/Serialization/Module.cpp                =
                      |      3 +-
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfInitChec=
ker.cpp               |     25 +-
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager.cpp =
                      |     24 +-
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp      =
                      |      1 -
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp      =
                      |      1 +
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndRet=
urn.cpp               |      5 +
 head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer=
.cpp                  |      1 -
 head/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp         =
                      |    110 +-
 head/contrib/llvm/tools/llc/llc.cpp                                       =
                      |     26 -
 head/contrib/llvm/tools/lli/lli.cpp                                       =
                      |     28 +
 head/contrib/llvm/tools/llvm-mc/Disassembler.cpp                          =
                      |     67 +-
 head/contrib/llvm/tools/llvm-mc/Disassembler.h                            =
                      |     15 +-
 head/contrib/llvm/tools/llvm-mc/llvm-mc.cpp                               =
                      |    175 +-
 head/contrib/llvm/tools/llvm-stress/llvm-stress.cpp                       =
                      |     21 +-
 head/contrib/llvm/tools/opt/opt.cpp                                       =
                      |      7 +
 head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp                    =
                      |     19 +-
 head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp                     =
                      |      7 +-
 head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp                   =
                      |     25 +-
 head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp                     =
                      |     10 +-
 head/contrib/llvm/utils/TableGen/EDEmitter.cpp                            =
                      |      1 +
 head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp                  =
                      |     13 +-
 head/contrib/ncurses/man/curs_threads.3x                                  =
                      |      4 +-
 head/contrib/netcat/FREEBSD-vendor                                        =
                      |      4 +-
 head/contrib/netcat/nc.1                                                  =
                      |     50 +-
 head/contrib/netcat/netcat.c                                              =
                      |    122 +-
 head/contrib/openpam/CREDITS                                              =
                      |     11 +-
 head/contrib/openpam/HISTORY                                              =
                      |     58 +-
 head/contrib/openpam/LICENSE                                              =
                      |      4 +-
 head/contrib/openpam/Makefile.am                                          =
                      |      4 +-
 head/contrib/openpam/Makefile.in                                          =
                      |     14 +-
 head/contrib/openpam/RELNOTES                                             =
                      |      9 +-
 head/contrib/openpam/TODO                                                 =
                      |     13 +
 head/contrib/openpam/aclocal.m4                                           =
                      |    272 +-
 head/contrib/openpam/bin/Makefile.am                                      =
                      |      4 +-
 head/contrib/openpam/bin/Makefile.in                                      =
                      |      6 +-
 head/contrib/openpam/bin/openpam_dump_policy/Makefile.am                  =
                      |      7 +
 head/contrib/openpam/bin/openpam_dump_policy/Makefile.in                  =
                      |    474 +
 head/contrib/openpam/bin/openpam_dump_policy/openpam_dump_policy.c        =
                      |    202 +
 head/contrib/openpam/bin/pamtest/pamtest.1                                =
                      |     20 +-
 head/contrib/openpam/bin/pamtest/pamtest.c                                =
                      |     19 +-
 head/contrib/openpam/bin/su/su.1                                          =
                      |     11 +-
 head/contrib/openpam/config.h.in                                          =
                      |      6 +
 head/contrib/openpam/configure                                            =
                      |    197 +-
 head/contrib/openpam/configure.ac                                         =
                      |     19 +-
 head/contrib/openpam/doc/man/Makefile.am                                  =
                      |     15 +-
 head/contrib/openpam/doc/man/Makefile.in                                  =
                      |     15 +-
 head/contrib/openpam/doc/man/openpam.3                                    =
                      |     25 +-
 head/contrib/openpam/doc/man/openpam_borrow_cred.3                        =
                      |     16 +-
 head/contrib/openpam/doc/man/openpam_free_data.3                          =
                      |     14 +-
 head/contrib/openpam/doc/man/openpam_free_envlist.3                       =
                      |     15 +-
 head/contrib/openpam/doc/man/openpam_get_feature.3                        =
                      |    105 +
 head/contrib/openpam/doc/man/openpam_get_option.3                         =
                      |     16 +-
 head/contrib/openpam/doc/man/openpam_log.3                                =
                      |     17 +-
 head/contrib/openpam/doc/man/openpam_nullconv.3                           =
                      |     16 +-
 head/contrib/openpam/doc/man/openpam_readline.3                           =
                      |     36 +-
 head/contrib/openpam/doc/man/openpam_readlinev.3                          =
                      |    159 +
 head/contrib/openpam/doc/man/openpam_readword.3                           =
                      |    152 +
 head/contrib/openpam/doc/man/openpam_restore_cred.3                       =
                      |     16 +-
 head/contrib/openpam/doc/man/openpam_set_feature.3                        =
                      |     87 +
 head/contrib/openpam/doc/man/openpam_set_option.3                         =
                      |     16 +-
 head/contrib/openpam/doc/man/openpam_straddch.3                           =
                      |    122 +
 head/contrib/openpam/doc/man/openpam_subst.3                              =
                      |     22 +-
 head/contrib/openpam/doc/man/openpam_ttyconv.3                            =
                      |     18 +-
 head/contrib/openpam/doc/man/pam.3                                        =
                      |      5 +-
 head/contrib/openpam/doc/man/pam.conf.5                                   =
                      |     10 +-
 head/contrib/openpam/doc/man/pam_acct_mgmt.3                              =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_authenticate.3                           =
                      |     18 +-
 head/contrib/openpam/doc/man/pam_chauthtok.3                              =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_close_session.3                          =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_conv.3                                   =
                      |      7 +-
 head/contrib/openpam/doc/man/pam_end.3                                    =
                      |     17 +-
 head/contrib/openpam/doc/man/pam_error.3                                  =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_get_authtok.3                            =
                      |     22 +-
 head/contrib/openpam/doc/man/pam_get_data.3                               =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_get_item.3                               =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_get_user.3                               =
                      |     18 +-
 head/contrib/openpam/doc/man/pam_getenv.3                                 =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_getenvlist.3                             =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_info.3                                   =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_open_session.3                           =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_prompt.3                                 =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_putenv.3                                 =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_set_data.3                               =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_set_item.3                               =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_setcred.3                                =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_setenv.3                                 =
                      |     18 +-
 head/contrib/openpam/doc/man/pam_sm_acct_mgmt.3                           =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_sm_authenticate.3                        =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_sm_chauthtok.3                           =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_sm_close_session.3                       =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_sm_open_session.3                        =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_sm_setcred.3                             =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_start.3                                  =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_strerror.3                               =
                      |     14 +-
 head/contrib/openpam/doc/man/pam_verror.3                                 =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_vinfo.3                                  =
                      |     16 +-
 head/contrib/openpam/doc/man/pam_vprompt.3                                =
                      |     16 +-
 head/contrib/openpam/include/security/openpam.h                           =
                      |     43 +-
 head/contrib/openpam/include/security/openpam_version.h                   =
                      |      6 +-
 head/contrib/openpam/lib/Makefile.am                                      =
                      |     11 +-
 head/contrib/openpam/lib/Makefile.in                                      =
                      |     29 +-
 head/contrib/openpam/lib/openpam_check_owner_perms.c                      =
                      |     23 +-
 head/contrib/openpam/lib/openpam_configure.c                              =
                      |    599 +-
 head/contrib/openpam/lib/openpam_constants.h                              =
                      |      9 +-
 head/contrib/openpam/lib/openpam_ctype.h                                  =
                      |     68 +
 head/contrib/openpam/lib/openpam_debug.h                                  =
                      |     45 +-
 head/contrib/openpam/lib/openpam_dynamic.c                                =
                      |     81 +-
 head/contrib/openpam/lib/openpam_features.c                               =
                      |     69 +
 head/contrib/openpam/lib/openpam_features.h                               =
                      |     48 +
 head/contrib/openpam/lib/openpam_get_feature.c                            =
                      |     99 +
 head/contrib/openpam/lib/openpam_get_option.c                             =
                      |      3 +-
 head/contrib/openpam/lib/openpam_impl.h                                   =
                      |     18 +-
 head/contrib/openpam/lib/openpam_load.c                                   =
                      |      6 +-
 head/contrib/openpam/lib/openpam_log.c                                    =
                      |     14 +-
 head/contrib/openpam/lib/openpam_readline.c                               =
                      |     52 +-
 head/contrib/openpam/lib/openpam_readlinev.c                              =
                      |    156 +
 head/contrib/openpam/lib/openpam_readword.c                               =
                      |    207 +
 head/contrib/openpam/lib/openpam_set_feature.c                            =
                      |     75 +
 head/contrib/openpam/lib/openpam_set_option.c                             =
                      |      3 +-
 head/contrib/openpam/lib/openpam_straddch.c                               =
                      |    111 +
 head/contrib/openpam/lib/openpam_strlcat.h                                =
                      |     54 +
 head/contrib/openpam/lib/openpam_strlcmp.h                                =
                      |      5 +-
 head/contrib/openpam/lib/openpam_strlcpy.h                                =
                      |      7 +-
 head/contrib/openpam/lib/openpam_subst.c                                  =
                      |      5 +-
 head/contrib/openpam/lib/openpam_ttyconv.c                                =
                      |     12 +-
 head/contrib/openpam/lib/pam_get_authtok.c                                =
                      |     12 +-
 head/contrib/openpam/lib/pam_putenv.c                                     =
                      |      4 +-
 head/contrib/openpam/lib/pam_setenv.c                                     =
                      |      4 +-
 head/contrib/openpam/ltmain.sh                                            =
                      |     95 +-
 head/contrib/openpam/misc/gendoc.pl                                       =
                      |    121 +-
 head/contrib/openpam/pamgdb.in                                            =
                      |     41 +
 head/contrib/openpam/t/Makefile.am                                        =
                      |     16 +
 head/contrib/openpam/t/Makefile.in                                        =
                      |    605 +
 head/contrib/openpam/t/t.h                                                =
                      |     60 +
 head/contrib/openpam/t/t_main.c                                           =
                      |    119 +
 head/contrib/openpam/t/t_openpam_readlinev.c                              =
                      |    342 +
 head/contrib/openpam/t/t_openpam_readword.c                               =
                      |    829 +
 head/contrib/tcpdump/CHANGES                                              =
                      |     61 +
 head/contrib/tcpdump/CREDITS                                              =
                      |    372 +-
 head/contrib/tcpdump/Makefile.in                                          =
                      |    105 +-
 head/contrib/tcpdump/VERSION                                              =
                      |      2 +-
 head/contrib/tcpdump/acconfig.h                                           =
                      |     18 -
 head/contrib/tcpdump/addrtoname.c                                         =
                      |     30 +-
 head/contrib/tcpdump/addrtoname.h                                         =
                      |      1 +
 head/contrib/tcpdump/bootp.h                                              =
                      |      4 +-
 head/contrib/tcpdump/config.h.in                                          =
                      |     48 +-
 head/contrib/tcpdump/configure                                            =
                      |   4198 +-
 head/contrib/tcpdump/configure.in                                         =
                      |    112 +-
 head/contrib/tcpdump/cpack.c                                              =
                      |      4 +-
 head/contrib/tcpdump/cpack.h                                              =
                      |      3 +
 head/contrib/tcpdump/ethertype.h                                          =
                      |     16 +-
 head/contrib/tcpdump/forces.h                                             =
                      |      2 +-
 head/contrib/tcpdump/ieee802_11_radio.h                                   =
                      |     64 +-
 head/contrib/tcpdump/in_cksum.c                                           =
                      |    200 +
 head/contrib/tcpdump/interface.h                                          =
                      |     24 +-
 head/contrib/tcpdump/ip.h                                                 =
                      |      6 +-
 head/contrib/tcpdump/ip6.h                                                =
                      |     37 +-
 head/contrib/tcpdump/ipproto.c                                            =
                      |      1 +
 head/contrib/tcpdump/ipproto.h                                            =
                      |      5 +-
 head/contrib/tcpdump/missing/addrsize.h                                   =
                      |     36 -
 head/contrib/tcpdump/missing/bittypes.h                                   =
                      |    117 -
 head/contrib/tcpdump/missing/resolv6.h                                    =
                      |     36 -
 head/contrib/tcpdump/missing/resolv_ext.h                                 =
                      |     49 -
 head/contrib/tcpdump/netdissect.h                                         =
                      |     53 +-
 head/contrib/tcpdump/ospf.h                                               =
                      |      4 +-
 head/contrib/tcpdump/oui.c                                                =
                      |      1 +
 head/contrib/tcpdump/oui.h                                                =
                      |      1 +
 head/contrib/tcpdump/ppi.h                                                =
                      |      9 +
 head/contrib/tcpdump/print-802_11.c                                       =
                      |    634 +-
 head/contrib/tcpdump/print-802_15_4.c                                     =
                      |    183 +
 head/contrib/tcpdump/print-ap1394.c                                       =
                      |      2 +-
 head/contrib/tcpdump/print-arcnet.c                                       =
                      |      4 +-
 head/contrib/tcpdump/print-arp.c                                          =
                      |      3 +-
 head/contrib/tcpdump/print-atalk.c                                        =
                      |     65 +-
 head/contrib/tcpdump/print-atm.c                                          =
                      |     12 +-
 head/contrib/tcpdump/print-babel.c                                        =
                      |    414 +
 head/contrib/tcpdump/print-bgp.c                                          =
                      |    134 +-
 head/contrib/tcpdump/print-carp.c                                         =
                      |     88 +
 head/contrib/tcpdump/print-cdp.c                                          =
                      |      2 +-
 head/contrib/tcpdump/print-chdlc.c                                        =
                      |      2 +-
 head/contrib/tcpdump/print-dccp.c                                         =
                      |     56 +-
 head/contrib/tcpdump/print-dhcp6.c                                        =
                      |      6 +-
 head/contrib/tcpdump/print-enc.c                                          =
                      |      2 +-
 head/contrib/tcpdump/print-ether.c                                        =
                      |    193 +-
 head/contrib/tcpdump/print-forces.c                                       =
                      |     22 +-
 head/contrib/tcpdump/print-fr.c                                           =
                      |      6 +-
 head/contrib/tcpdump/print-gre.c                                          =
                      |      4 +-
 head/contrib/tcpdump/print-icmp.c                                         =
                      |     23 +-
 head/contrib/tcpdump/print-icmp6.c                                        =
                      |     86 +-
 head/contrib/tcpdump/print-igmp.c                                         =
                      |      6 +-
 head/contrib/tcpdump/print-ip.c                                           =
                      |    162 +-
 head/contrib/tcpdump/print-ip6.c                                          =
                      |     90 +-
 head/contrib/tcpdump/print-ipnet.c                                        =
                      |      2 +-
 head/contrib/tcpdump/print-ipx.c                                          =
                      |      6 +-
 head/contrib/tcpdump/print-isoclns.c                                      =
                      |     36 +-
 head/contrib/tcpdump/print-juniper.c                                      =
                      |     16 +-
 head/contrib/tcpdump/print-lane.c                                         =
                      |      6 +-
 head/contrib/tcpdump/print-llc.c                                          =
                      |      8 +-
 head/contrib/tcpdump/print-lldp.c                                         =
                      |    524 +-
 head/contrib/tcpdump/print-mobile.c                                       =
                      |      5 +-
 head/contrib/tcpdump/print-mpls.c                                         =
                      |    202 +-
 head/contrib/tcpdump/print-null.c                                         =
                      |      4 +-
 head/contrib/tcpdump/print-ospf.c                                         =
                      |      6 +-
 head/contrib/tcpdump/print-pflog.c                                        =
                      |      2 +-
 head/contrib/tcpdump/print-pgm.c                                          =
                      |     88 +
 head/contrib/tcpdump/print-pim.c                                          =
                      |     30 +-
 head/contrib/tcpdump/print-ppi.c                                          =
                      |    104 +
 head/contrib/tcpdump/print-ppp.c                                          =
                      |     22 +-
 head/contrib/tcpdump/print-rpki-rtr.c                                     =
                      |    368 +
 head/contrib/tcpdump/print-rrcp.c                                         =
                      |      4 +-
 head/contrib/tcpdump/print-sctp.c                                         =
                      |      6 +-
 head/contrib/tcpdump/print-sflow.c                                        =
                      |    803 +-
 head/contrib/tcpdump/print-sl.c                                           =
                      |      4 +-
 head/contrib/tcpdump/print-sll.c                                          =
                      |      2 +-
 head/contrib/tcpdump/print-sunrpc.c                                       =
                      |     12 +-
 head/contrib/tcpdump/print-symantec.c                                     =
                      |      2 +-
 head/contrib/tcpdump/print-tcp.c                                          =
                      |    103 +-
 head/contrib/tcpdump/print-tftp.c                                         =
                      |      8 -
 head/contrib/tcpdump/print-udp.c                                          =
                      |    136 +-
 head/contrib/tcpdump/print-vrrp.c                                         =
                      |     12 +-
 head/contrib/tcpdump/tcp.h                                                =
                      |      1 +
 head/contrib/tcpdump/tcpdump-stdinc.h                                     =
                      |     39 +-
 head/contrib/tcpdump/tcpdump.1.in                                         =
                      |     51 +-
 head/contrib/tcpdump/tcpdump.c                                            =
                      |    214 +-
 head/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu                      =
                      |     34 -
 head/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu                      =
                      |     36 -
 head/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu                     =
                      |     43 -
 head/contrib/tcpdump/tests/TESTLIST                                       =
                      |     51 -
 head/contrib/tcpdump/tests/TESTonce                                       =
                      |     46 -
 head/contrib/tcpdump/tests/TESTrun.sh                                     =
                      |     63 -
 head/contrib/tcpdump/tests/bgp-infinite-loop.pcap                         =
                      |    Bin=20
 head/contrib/tcpdump/tests/bgp_vpn_attrset.out                            =
                      |     19 -
 head/contrib/tcpdump/tests/bgp_vpn_attrset.pcap                           =
                      |    Bin=20
 head/contrib/tcpdump/tests/chdlc-slarp-short.pcap                         =
                      |    Bin=20
 head/contrib/tcpdump/tests/chdlc-slarp.pcap                               =
                      |    Bin=20
 head/contrib/tcpdump/tests/dio.out                                        =
                      |      1 -
 head/contrib/tcpdump/tests/dio.pcap                                       =
                      |    Bin=20
 head/contrib/tcpdump/tests/e1000g.out                                     =
                      |     20 -
 head/contrib/tcpdump/tests/e1000g.pcap                                    =
                      |    Bin=20
 head/contrib/tcpdump/tests/eapon1.gdbinit                                 =
                      |      1 -
 head/contrib/tcpdump/tests/eapon1.out                                     =
                      |    114 -
 head/contrib/tcpdump/tests/eapon1.puu                                     =
                      |    368 -
 head/contrib/tcpdump/tests/eapon2.puu                                     =
                      |     66 -
 head/contrib/tcpdump/tests/esp-secrets.txt                                =
                      |      5 -
 head/contrib/tcpdump/tests/esp0.out                                       =
                      |      8 -
 head/contrib/tcpdump/tests/esp1.gdbinit                                   =
                      |      1 -
 head/contrib/tcpdump/tests/esp1.out                                       =
                      |      8 -
 head/contrib/tcpdump/tests/esp2.gdbinit                                   =
                      |      1 -
 head/contrib/tcpdump/tests/esp2.out                                       =
                      |      8 -
 head/contrib/tcpdump/tests/esp3.gdbinit                                   =
                      |      1 -
 head/contrib/tcpdump/tests/esp4.gdbinit                                   =
                      |      2 -
 head/contrib/tcpdump/tests/esp5.gdbinit                                   =
                      |      3 -
 head/contrib/tcpdump/tests/esp5.out                                       =
                      |      8 -
 head/contrib/tcpdump/tests/espudp1.out                                    =
                      |      8 -
 head/contrib/tcpdump/tests/espudp1.puu                                    =
                      |     35 -
 head/contrib/tcpdump/tests/forces1.out                                    =
                      |      8 -
 head/contrib/tcpdump/tests/forces1.pcap                                   =
                      |    Bin=20
 head/contrib/tcpdump/tests/forces1vvv.out                                 =
                      |     52 -
 head/contrib/tcpdump/tests/forces1vvvv.out                                =
                      |     67 -
 head/contrib/tcpdump/tests/forces2.out                                    =
                      |    491 -
 head/contrib/tcpdump/tests/forces2.pcap                                   =
                      |    Bin=20
 head/contrib/tcpdump/tests/forces2v.out                                   =
                      |    982 -
 head/contrib/tcpdump/tests/forces2vv.out                                  =
                      |   1966 -
 head/contrib/tcpdump/tests/ikev2.puu                                      =
                      |  22231 ----------
 head/contrib/tcpdump/tests/ikev2four.out                                  =
                      |    107 -
 head/contrib/tcpdump/tests/ikev2four.puu                                  =
                      |    134 -
 head/contrib/tcpdump/tests/ikev2fourv.out                                 =
                      |    107 -
 head/contrib/tcpdump/tests/ikev2fourv4.out                                =
                      |    107 -
 head/contrib/tcpdump/tests/ikev2pI2-secrets.txt                           =
                      |      2 -
 head/contrib/tcpdump/tests/ikev2pI2.out                                   =
                      |     41 -
 head/contrib/tcpdump/tests/ikev2pI2.puu                                   =
                      |     24 -
 head/contrib/tcpdump/tests/isakmp-delete-segfault.puu                     =
                      |     20 -
 head/contrib/tcpdump/tests/isakmp-identification-segfault.puu             =
                      |     11 -
 head/contrib/tcpdump/tests/isakmp-pointer-loop.puu                        =
                      |      6 -
 head/contrib/tcpdump/tests/isakmp1.out                                    =
                      |      1 -
 head/contrib/tcpdump/tests/isakmp2.out                                    =
                      |      1 -
 head/contrib/tcpdump/tests/isakmp3.out                                    =
                      |      3 -
 head/contrib/tcpdump/tests/isakmp4.out                                    =
                      |     35 -
 head/contrib/tcpdump/tests/isakmp4500.puu                                 =
                      |    155 -
 head/contrib/tcpdump/tests/isis-infinite-loop.pcap                        =
                      |    Bin=20
 head/contrib/tcpdump/tests/ldp-infinite-loop.pcap                         =
                      |    Bin=20
 head/contrib/tcpdump/tests/lmp.out                                        =
                      |     36 -
 head/contrib/tcpdump/tests/lmp.puu                                        =
                      |     42 -
 head/contrib/tcpdump/tests/lmp.sh                                         =
                      |     14 -
 head/contrib/tcpdump/tests/lspping-fec-ldp.pcap                           =
                      |    Bin=20
 head/contrib/tcpdump/tests/lspping-fec-rsvp.pcap                          =
                      |    Bin=20
 head/contrib/tcpdump/tests/mpls-ldp-hello.out                             =
                      |     10 -
 head/contrib/tcpdump/tests/mpls-ldp-hello.puu                             =
                      |      6 -
 head/contrib/tcpdump/tests/mpls-traceroute.pcap                           =
                      |    Bin=20
 head/contrib/tcpdump/tests/ospf-gmpls.out                                 =
                      |     86 -
 head/contrib/tcpdump/tests/ospf-gmpls.puu                                 =
                      |     18 -
 head/contrib/tcpdump/tests/print-A.out                                    =
                      |    193 -
 head/contrib/tcpdump/tests/print-AA.out                                   =
                      |    193 -
 head/contrib/tcpdump/tests/print-capX.out                                 =
                      |    409 -
 head/contrib/tcpdump/tests/print-capXX.out                                =
                      |    419 -
 head/contrib/tcpdump/tests/print-flags.puu                                =
                      |    151 -
 head/contrib/tcpdump/tests/print-flags.sh                                 =
                      |     12 -
 head/contrib/tcpdump/tests/print-x.out                                    =
                      |    409 -
 head/contrib/tcpdump/tests/print-xx.out                                   =
                      |    419 -
 head/contrib/tcpdump/tests/rsvp-infinite-loop.pcap                        =
                      |    Bin=20
 head/contrib/tcpdump/udp.h                                                =
                      |      2 +
 head/contrib/telnet/telnet/telnet.1                                       =
                      |      4 +-
 head/contrib/top/display.c                                                =
                      |     47 +-
 head/contrib/top/layout.h                                                 =
                      |      4 +-
 head/contrib/top/machine.h                                                =
                      |      4 +-
 head/contrib/top/top.c                                                    =
                      |      8 +-
 head/contrib/traceroute/traceroute.8                                      =
                      |    386 +-
 head/contrib/traceroute/traceroute.c                                      =
                      |      9 +-
 1031 files changed, 90674 insertions(+), 60827 deletions(-)

diffs (185644 lines):

diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/CHANGES
--- a/head/contrib/bind9/CHANGES	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/CHANGES	Wed Jul 25 16:21:35 2012 +0300
@@ -1,3 +1,70 @@
+	--- 9.8.3-P2 released ---
+
+3346.	[security]	Bad-cache data could be used before it was
+			initialized, causing an assert. [RT #30025]
+
+3342.	[bug]		Change #3314 broke saving of stub zones to disk
+			resulting in excessive cpu usage in some cases.
+			[RT #29952]
+
+	--- 9.8.3-P1 released ---
+
+3331.	[security]	dns_rdataslab_fromrdataset could produce bad
+			rdataslabs. [RT #29644]
+		=09
+	--- 9.8.3 released ---
+
+3318.	[tuning]	Reduce the amount of work performed while holding a
+			bucket lock when finshed with a fetch context.
+			[RT #29239]
+
+3314.	[bug]		The masters list could be updated while refesh_callback
+			and stub_callback were using it. [RT #26732]
+
+3313.	[protocol]	Add TLSA record type. [RT #28989]
+
+3312.	[bug]		named-checkconf didn't detect a bad dns64 clients acl.
+			[RT #27631]
+
+3311.	[bug]		Abort the zone dump if zone->db is NULL in
+			zone.c:zone_gotwritehandle. [RT #29028]
+
+3310.	[test]		Increase table size for mutex profiling. [RT #28809]
+
+3309.	[bug]		resolver.c:fctx_finddone() was not threadsafe.
+			[RT #27995]
+
+3307.	[bug]		Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS.
+			[RT #28956]
+
+3306.	[bug]		Improve DNS64 reverse zone performance. [RT #28563]
+
+3305.	[func]		Add wire format lookup method to sdb. [RT #28563]
+
+3304.	[bug]		Use hmctx, not mctx when freeing rbtdb->heaps.
+			[RT #28571]
+
+3302.	[bug]		dns_dnssec_findmatchingkeys could fail to find
+			keys if the zone name contained character that
+			required special mappings. [RT #28600]
+
+3301.	[contrib]	Update queryperf to build on darwin.  Add -R flag
+			for non-recursive queries. [RT #28565]
+
+3300.	[bug]		Named could die if gssapi was enabled in named.conf
+			but was not compiled in. [RT #28338]
+
+3299.	[bug]		Make SDB handle errors from database drivers better.
+			[RT #28534]
+
+3232.	[bug]		Zero zone->curmaster before return in
+			dns_zone_setmasterswithkeys(). [RT #26732]
+
+3183.	[bug]		Added RTLD_GLOBAL flag to dlopen call. [RT #26301]
+
+3197.	[bug]		Don't try to log the filename and line number when
+			the config parser can't open a file. [RT #22263]
+
 	--- 9.8.2 released ---
=20
 3298.	[bug]		Named could dereference a NULL pointer in
@@ -58,9 +125,9 @@
 3274.	[bug]		Log when a zone is not reusable.  Only set loadtime
 			on successful loads.  [RT #27650]
=20
-3273.   [bug]           AAAA responses could be returned in the additional
-                        section even when filter-aaaa-on-v4 was in use.
-                        [RT #27292]
+3273.	[bug]		AAAA responses could be returned in the additional
+			section even when filter-aaaa-on-v4 was in use.
+			[RT #27292]
=20
 3271.	[port]		darwin: mksymtbl is not always stable, loop several
 			times before giving up.  mksymtbl was using non
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/README
--- a/head/contrib/bind9/README	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/README	Wed Jul 25 16:21:35 2012 +0300
@@ -51,6 +51,10 @@
         For up-to-date release notes and errata, see
         http://www.isc.org/software/bind9/releasenotes
=20
+BIND 9.8.3
+
+	BIND 9.8.3 is a maintenance release.
+
 BIND 9.8.2
=20
 	BIND 9.8.2 includes a number of bug fixes and prevents a security
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/bin/named/builtin.c
--- a/head/contrib/bind9/bin/named/builtin.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/bin/named/builtin.c	Wed Jul 25 16:21:35 2012 +0300
@@ -69,35 +69,79 @@
 static builtin_t dns64_builtin =3D { do_dns64_lookup, NULL, NULL };
=20
 static dns_sdbimplementation_t *builtin_impl;
+static dns_sdbimplementation_t *dns64_impl;
=20
-static const char hex[] =3D "0123456789abcdef";
-static const char HEX[] =3D "0123456789ABCDEF";
+/*
+ * Pre computed HEX * 16 or 1 table.
+ */
+static const unsigned char hex16[256] =3D {
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*00*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,	/*10*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*20*/
+	 0, 16, 32, 48, 64, 80, 96,112,128,144,  1,  1,  1,  1,  1,  1,	/*30*/
+	 1,160,176,192,208,224,240,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*40*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*50*/
+	 1,160,176,192,208,224,240,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*60*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*70*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*80*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*90*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*A0*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*B0*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*C0*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*D0*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1, /*E0*/
+	 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1  /*F0*/
+};
+
+const unsigned char decimal[] =3D "0123456789";
+
+static size_t
+dns64_rdata(unsigned char *v, size_t start, unsigned char *rdata) {
+	size_t i, j =3D 0;
+
+	for (i =3D 0; i < 4; i++) {
+		unsigned char c =3D v[start++];
+		if (start =3D=3D 7)
+			start++;
+		if (c > 99) {
+			rdata[j++] =3D 3;
+			rdata[j++] =3D decimal[c/100]; c =3D c % 100;
+			rdata[j++] =3D decimal[c/10]; c =3D c % 10;
+			rdata[j++] =3D decimal[c];
+		} else if (c > 9) {
+			rdata[j++] =3D 2;
+			rdata[j++] =3D decimal[c/10]; c =3D c % 10;
+			rdata[j++] =3D decimal[c];
+		} else {
+			rdata[j++] =3D 1;
+			rdata[j++] =3D decimal[c];
+		}
+	}
+	memcpy(&rdata[j], "\07in-addr\04arpa", 14);
+	return (j + 14);
+}
=20
 static isc_result_t
-dns64_cname(const char *zone, const char *name, dns_sdblookup_t *lookup) {
-	size_t zlen, nlen, j;
-	const char *s;
-	unsigned char v[16];
+dns64_cname(const dns_name_t *zone, const dns_name_t *name,
+	    dns_sdblookup_t *lookup)
+{
+	size_t zlen, nlen, j, len;
+	unsigned char v[16], n;
 	unsigned int i;
-	char reverse[sizeof("123.123.123.123.in-addr.arpa.")];
+	unsigned char rdata[sizeof("123.123.123.123.in-addr.arpa.")];
+	unsigned char *ndata;
=20
 	/*
-	 * The sum the length of the relative name and the length of the zone
-	 * name for a IPv6 reverse lookup comes to 71.
+	 * The combined length of the zone and name is 74.
 	 *
-	 * The reverse of 2001::10.0.0.1 (dns64 2001::/96) has a zone of
-	 * "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.2.ip6.arpa"
-	 * and a name of "1.0.0.0.0.0.a.0".  The sum of the lengths of these
-	 * two strings is 71.
+	 * The minimum zone length is 10 ((3)ip6(4)arpa(0)).
 	 *
-	 * The minimum length for a ip6.arpa zone name is 8.
-	 *
-	 * The length of name should always be odd as we are expecting
+	 * The length of name should always be even as we are expecting
 	 * a series of nibbles.
 	 */
-	zlen =3D strlen(zone);
-	nlen =3D strlen(name);
-	if ((zlen + nlen) > 71U || zlen < 8U || (nlen % 2) !=3D 1U)
+	zlen =3D zone->length;
+	nlen =3D name->length;
+	if ((zlen + nlen) > 74U || zlen < 10U || (nlen % 2) !=3D 0U)
 		return (ISC_R_NOTFOUND);
=20
 	/*
@@ -116,25 +160,20 @@
 	 * are byte aligned and we correctly return ISC_R_NOTFOUND or
 	 * ISC_R_SUCCESS.  We will not generate a CNAME in this case.
 	 */
-	i =3D (nlen % 4) =3D=3D 1U ? 1 : 0;
+	ndata =3D name->ndata;
+	i =3D (nlen % 4) =3D=3D 2U ? 1 : 0;
 	j =3D nlen;
 	memset(v, 0, sizeof(v));
-	while (j >=3D 1U) {
+	while (j !=3D 0) {
 		INSIST((i/2) < sizeof(v));
-		if (j > 1U && name[1] !=3D '.')
+		if (ndata[0] !=3D 1)
 			return (ISC_R_NOTFOUND);
-		v[i/2] >>=3D 4;
-		if ((s =3D strchr(hex, name[0])) !=3D NULL)
-			v[i/2] |=3D (s - hex) << 4;
-		else if ((s =3D strchr(HEX, name[0])) !=3D NULL)
-			v[i/2] |=3D (s - HEX) << 4;
-		else
+		n =3D hex16[ndata[1]&0xff];
+		if (n =3D=3D 1)
 			return (ISC_R_NOTFOUND);
-		if (j > 1U)
-			j -=3D 2;
-		else
-			j -=3D 1;
-		name +=3D 2;
+		v[i/2] =3D n | (v[i/2]>>4);
+		j -=3D 2;
+		ndata +=3D 2;
 		i++;
 	}
=20
@@ -144,90 +183,91 @@
 	 * it corresponds to a empty node in the zone or there should be
 	 * a CNAME.
 	 */
+#define ZLEN(x) (10 + (x)/2)
 	switch (zlen) {
-	case 24:	/* prefix len 32 */
-		/*
-		 * If the total length is not 71 then this is a empty node
-		 * so return success.
-		 */
-		if (nlen + zlen !=3D 71U)
-			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[8], v[9], v[10], v[11]);
-		break;
-	case 28:	/* prefix len 40 */
+	case ZLEN(32):	/* prefix len 32 */
 		/*
 		 * The nibbles that map to this byte must be zero for 'name'
 		 * to exist in the zone.
 		 */
-		if (nlen > 11U && v[nlen/4 - 3] !=3D 0)
+		if (nlen > 16U && v[(nlen-1)/4 - 4] !=3D 0)
 			return (ISC_R_NOTFOUND);
 		/*
-		 * If the total length is not 71 then this is a empty node
+		 * If the total length is not 74 then this is a empty node
 		 * so return success.
 		 */
-		if (nlen + zlen !=3D 71U)
+		if (nlen + zlen !=3D 74U)
 			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[6], v[8], v[9], v[10]);
+		len =3D dns64_rdata(v, 8, rdata);
 		break;
-	case 32:	/* prefix len 48 */
+	case ZLEN(40):	/* prefix len 40 */
 		/*
 		 * The nibbles that map to this byte must be zero for 'name'
 		 * to exist in the zone.
 		 */
-		if (nlen > 7U && v[nlen/4 - 2] !=3D 0)
+		if (nlen > 12U && v[(nlen-1)/4 - 3] !=3D 0)
 			return (ISC_R_NOTFOUND);
 		/*
-		 * If the total length is not 71 then this is a empty node
+		 * If the total length is not 74 then this is a empty node
 		 * so return success.
 		 */
-		if (nlen + zlen !=3D 71U)
+		if (nlen + zlen !=3D 74U)
 			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[5], v[6], v[8], v[9]);
+		len =3D dns64_rdata(v, 6, rdata);
 		break;
-	case 36:	/* prefix len 56 */
+	case ZLEN(48):	/* prefix len 48 */
 		/*
 		 * The nibbles that map to this byte must be zero for 'name'
 		 * to exist in the zone.
 		 */
-		if (nlen > 3U && v[nlen/4 - 1] !=3D 0)
+		if (nlen > 8U && v[(nlen-1)/4 - 2] !=3D 0)
 			return (ISC_R_NOTFOUND);
 		/*
-		 * If the total length is not 71 then this is a empty node
+		 * If the total length is not 74 then this is a empty node
 		 * so return success.
 		 */
-		if (nlen + zlen !=3D 71U)
+		if (nlen + zlen !=3D 74U)
 			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[4], v[5], v[6], v[8]);
+		len =3D dns64_rdata(v, 5, rdata);
 		break;
-	case 40:	/* prefix len 64 */
+	case ZLEN(56):	/* prefix len 56 */
 		/*
 		 * The nibbles that map to this byte must be zero for 'name'
 		 * to exist in the zone.
 		 */
-		if (v[nlen/4] !=3D 0)
+		if (nlen > 4U && v[(nlen-1)/4 - 1] !=3D 0)
 			return (ISC_R_NOTFOUND);
 		/*
-		 * If the total length is not 71 then this is a empty node
+		 * If the total length is not 74 then this is a empty node
 		 * so return success.
 		 */
-		if (nlen + zlen !=3D 71U)
+		if (nlen + zlen !=3D 74U)
 			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[3], v[4], v[5], v[6]);
+		len =3D dns64_rdata(v, 4, rdata);
 		break;
-	case 56:	/* prefix len 96 */
+	case ZLEN(64):	/* prefix len 64 */
 		/*
-		 * If the total length is not 71 then this is a empty node
+		 * The nibbles that map to this byte must be zero for 'name'
+		 * to exist in the zone.
+		 */
+		if (v[(nlen-1)/4] !=3D 0)
+			return (ISC_R_NOTFOUND);
+		/*
+		 * If the total length is not 74 then this is a empty node
 		 * so return success.
 		 */
-		if (nlen + zlen !=3D 71U)
+		if (nlen + zlen !=3D 74U)
 			return (ISC_R_SUCCESS);
-		snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.",
-			 v[0], v[1], v[2], v[3]);
+		len =3D dns64_rdata(v, 3, rdata);
+		break;
+	case ZLEN(96):	/* prefix len 96 */
+		/*
+		 * If the total length is not 74 then this is a empty node
+		 * so return success.
+		 */
+		if (nlen + zlen !=3D 74U)
+			return (ISC_R_SUCCESS);
+		len =3D dns64_rdata(v, 0, rdata);
 		break;
 	default:
 		/*
@@ -236,7 +276,7 @@
 		 */
 		return (ISC_R_NOTFOUND);
 	}
-	return (dns_sdb_putrr(lookup, "CNAME", 600, reverse));
+	return (dns_sdb_putrdata(lookup, dns_rdatatype_cname, 600, rdata, len));
 }
=20
 static isc_result_t
@@ -249,13 +289,23 @@
=20
 	if (strcmp(name, "@") =3D=3D 0)
 		return (b->do_lookup(lookup));
-	else if (b->do_lookup =3D=3D do_dns64_lookup)
-		return (dns64_cname(zone, name, lookup));
 	else
 		return (ISC_R_NOTFOUND);
 }
=20
 static isc_result_t
+dns64_lookup(const dns_name_t *zone, const dns_name_t *name, void *dbdata,
+	     dns_sdblookup_t *lookup)
+{
+	builtin_t *b =3D (builtin_t *) dbdata;
+
+	if (name->labels =3D=3D 0 && name->length =3D=3D 0)
+		return (b->do_lookup(lookup));
+	else
+		return (dns64_cname(zone, name, lookup));
+}
+
+static isc_result_t
 put_txt(dns_sdblookup_t *lookup, const char *text) {
 	unsigned char buf[256];
 	unsigned int len =3D strlen(text);
@@ -481,7 +531,17 @@
 	builtin_authority,
 	NULL,		/* allnodes */
 	builtin_create,
-	builtin_destroy
+	builtin_destroy,
+	NULL
+};
+
+static dns_sdbmethods_t dns64_methods =3D {
+	NULL,
+	builtin_authority,
+	NULL,		/* allnodes */
+	builtin_create,
+	builtin_destroy,
+	dns64_lookup,
 };
=20
 isc_result_t
@@ -491,11 +551,17 @@
 				       DNS_SDBFLAG_RELATIVERDATA,
 				       ns_g_mctx, &builtin_impl)
 		      =3D=3D ISC_R_SUCCESS);
+	RUNTIME_CHECK(dns_sdb_register("_dns64", &dns64_methods, NULL,
+				       DNS_SDBFLAG_RELATIVEOWNER |
+				       DNS_SDBFLAG_RELATIVERDATA |
+				       DNS_SDBFLAG_DNS64,
+				       ns_g_mctx, &dns64_impl)
+		      =3D=3D ISC_R_SUCCESS);
 	return (ISC_R_SUCCESS);
 }
=20
 void
 ns_builtin_deinit(void) {
 	dns_sdb_unregister(&builtin_impl);
+	dns_sdb_unregister(&dns64_impl);
 }
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/bin/named/query.c
--- a/head/contrib/bind9/bin/named/query.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/bin/named/query.c	Wed Jul 25 16:21:35 2012 +0300
@@ -3354,6 +3354,11 @@
 		dns_name_copy(name, cname, NULL);
 		while (result =3D=3D DNS_R_NXDOMAIN) {
 			labels =3D dns_name_countlabels(cname) - 1;
+			/*
+			 * Sanity check.
+			 */
+			if (labels =3D=3D 0U)
+				goto cleanup;
 			dns_name_split(cname, labels, NULL, cname);
 			result =3D dns_db_find(db, cname, version,
 					     dns_rdatatype_nsec,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/bin/named/server.c
--- a/head/contrib/bind9/bin/named/server.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/bin/named/server.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1358,7 +1358,7 @@
 {
 	char *cp;
 	char reverse[48+sizeof("ip6.arpa.")];
-	const char *dns64_dbtype[4] =3D { "_builtin", "dns64", ".", "." };
+	const char *dns64_dbtype[4] =3D { "_dns64", "dns64", ".", "." };
 	const char *sep =3D ": view ";
 	const char *viewname =3D view->name;
 	const unsigned char *s6;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/bin/named/unix/dlz_=
dlopen_driver.c
--- a/head/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -250,7 +250,7 @@
 	isc_mutex_init(&cd->lock);
=20
 	/* Open the library */
-	dlopen_flags =3D RTLD_NOW;
+	dlopen_flags =3D RTLD_NOW|RTLD_GLOBAL;
=20
 #ifdef RTLD_DEEPBIND
 	/*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/bind9/api
--- a/head/contrib/bind9/lib/bind9/api	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/bind9/api	Wed Jul 25 16:21:35 2012 +0300
@@ -4,5 +4,5 @@
 # 9.8: 80-89
 # 9.9: 90-109
 LIBINTERFACE =3D 80
-LIBREVISION =3D 4
+LIBREVISION =3D 5
 LIBAGE =3D 0
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/bind9/check.c
--- a/head/contrib/bind9/lib/bind9/check.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/bind9/check.c	Wed Jul 25 16:21:35 2012 +0300
@@ -434,7 +434,7 @@
 	int nbytes;
 	int i;
=20
-	static const char *acls[] =3D { "client", "exclude", "mapped", NULL};
+	static const char *acls[] =3D { "clients", "exclude", "mapped", NULL};
=20
 	if (voptions !=3D NULL)
 		cfg_map_get(voptions, "dns64", &dns64);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/api
--- a/head/contrib/bind9/lib/dns/api	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/api	Wed Jul 25 16:21:35 2012 +0300
@@ -4,5 +4,5 @@
 # 9.8: 80-89
 # 9.9: 90-109
 LIBINTERFACE =3D 87
-LIBREVISION =3D 0
+LIBREVISION =3D 1
 LIBAGE =3D 6
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/dnssec.c
--- a/head/contrib/bind9/lib/dns/dnssec.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/dnssec.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1246,7 +1246,7 @@
 	isc_dir_init(&dir);
=20
 	isc_buffer_init(&b, namebuf, sizeof(namebuf) - 1);
-	RETERR(dns_name_totext(origin, ISC_FALSE, &b));
+	RETERR(dns_name_tofilenametext(origin, ISC_FALSE, &b));
 	len =3D isc_buffer_usedlength(&b);
 	namebuf[len] =3D '\0';
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/ecdb.h
--- a/head/contrib/bind9/lib/dns/include/dns/ecdb.h	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/ecdb.h	Wed Jul 25 16:21:35 201=
2 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009  Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2009, 2012  Internet Systems Consortium, Inc. ("ISC")
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -39,6 +39,8 @@
  *** Functions
  ***/
=20
+ISC_LANG_BEGINDECLS
+
 /* TBD: describe those */
=20
 isc_result_t
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/rpz.h
--- a/head/contrib/bind9/lib/dns/include/dns/rpz.h	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/rpz.h	Wed Jul 25 16:21:35 2012=
 +0300
@@ -194,5 +194,7 @@
 dns_rpz_policy_t
 dns_rpz_decode_cname(dns_rdataset_t *, dns_name_t *selfname);
=20
+ISC_LANG_ENDDECLS
+
 #endif /* DNS_RPZ_H */
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/sdb.h
--- a/head/contrib/bind9/lib/dns/include/dns/sdb.h	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/sdb.h	Wed Jul 25 16:21:35 2012=
 +0300
@@ -59,6 +59,9 @@
 typedef isc_result_t
 (*dns_sdblookupfunc_t)(const char *zone, const char *name, void *dbdata,
 		       dns_sdblookup_t *);
+typedef isc_result_t
+(*dns_sdblookup2func_t)(const dns_name_t *zone, const dns_name_t *name,
+			void *dbdata, dns_sdblookup_t *lookup);
=20
 typedef isc_result_t
 (*dns_sdbauthorityfunc_t)(const char *zone, void *dbdata, dns_sdblookup_t =
*);
@@ -81,6 +84,7 @@
 	dns_sdballnodesfunc_t	allnodes;
 	dns_sdbcreatefunc_t	create;
 	dns_sdbdestroyfunc_t	destroy;
+	dns_sdblookup2func_t	lookup2;
 } dns_sdbmethods_t;
=20
 /***
@@ -92,6 +96,7 @@
 #define DNS_SDBFLAG_RELATIVEOWNER 0x00000001U
 #define DNS_SDBFLAG_RELATIVERDATA 0x00000002U
 #define DNS_SDBFLAG_THREADSAFE 0x00000004U
+#define DNS_SDBFLAG_DNS64 0x00000008U
=20
 isc_result_t
 dns_sdb_register(const char *drivername, const dns_sdbmethods_t *methods,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/stats.h
--- a/head/contrib/bind9/lib/dns/include/dns/stats.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/stats.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -147,6 +147,8 @@
 					    void *);
 typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, isc_uint64_t, void =
*);
=20
+ISC_LANG_BEGINDECLS
+
 isc_result_t
 dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounte=
rs);
 /*%<
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/tsec.h
--- a/head/contrib/bind9/lib/dns/include/dns/tsec.h	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/tsec.h	Wed Jul 25 16:21:35 201=
2 +0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009, 2010  Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2009, 2010, 2012  Internet Systems Consortium, Inc. ("ISC=
")
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -132,4 +132,6 @@
  *\li	*tsecp points to a valid key structure depending on the TSEC type.
  */
=20
+ISC_LANG_ENDDECLS
+
 #endif /* DNS_TSEC_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/include/dns=
/view.h
--- a/head/contrib/bind9/lib/dns/include/dns/view.h	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/bind9/lib/dns/include/dns/view.h	Wed Jul 25 16:21:35 201=
2 +0300
@@ -1075,4 +1075,6 @@
 void
 dns_view_restorekeyring(dns_view_t *view);
=20
+ISC_LANG_ENDDECLS
+
 #endif /* DNS_VIEW_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/rbtdb.c
--- a/head/contrib/bind9/lib/dns/rbtdb.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/rbtdb.c	Wed Jul 25 16:21:35 2012 +0300
@@ -7814,7 +7814,7 @@
 		for (i =3D 0 ; i < (int)rbtdb->node_lock_count ; i++)
 			if (rbtdb->heaps[i] !=3D NULL)
 				isc_heap_destroy(&rbtdb->heaps[i]);
-		isc_mem_put(mctx, rbtdb->heaps,
+		isc_mem_put(hmctx, rbtdb->heaps,
 			    rbtdb->node_lock_count * sizeof(isc_heap_t *));
 	}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/rdata.c
--- a/head/contrib/bind9/lib/dns/rdata.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/rdata.c	Wed Jul 25 16:21:35 2012 +0300
@@ -329,8 +329,8 @@
=20
 	REQUIRE(rdata1 !=3D NULL);
 	REQUIRE(rdata2 !=3D NULL);
-	REQUIRE(rdata1->data !=3D NULL);
-	REQUIRE(rdata2->data !=3D NULL);
+	REQUIRE(rdata1->length =3D=3D 0 || rdata1->data !=3D NULL);
+	REQUIRE(rdata2->length =3D=3D 0 || rdata2->data !=3D NULL);
 	REQUIRE(DNS_RDATA_VALIDFLAGS(rdata1));
 	REQUIRE(DNS_RDATA_VALIDFLAGS(rdata2));
=20
@@ -360,8 +360,8 @@
=20
 	REQUIRE(rdata1 !=3D NULL);
 	REQUIRE(rdata2 !=3D NULL);
-	REQUIRE(rdata1->data !=3D NULL);
-	REQUIRE(rdata2->data !=3D NULL);
+	REQUIRE(rdata1->length =3D=3D 0 || rdata1->data !=3D NULL);
+	REQUIRE(rdata2->length =3D=3D 0 || rdata2->data !=3D NULL);
 	REQUIRE(DNS_RDATA_VALIDFLAGS(rdata1));
 	REQUIRE(DNS_RDATA_VALIDFLAGS(rdata2));
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/rdata/gener=
ic/tlsa_52.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2012  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABI=
LITY
+ * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING =
FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGE=
NCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE =
OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id$ */
+
+/* draft-ietf-dane-protocol-19.txt */
+
+#ifndef RDATA_GENERIC_TLSA_52_C
+#define RDATA_GENERIC_TLSA_52_C
+
+#define RRTYPE_TLSA_ATTRIBUTES 0
+
+static inline isc_result_t
+fromtext_tlsa(ARGS_FROMTEXT) {
+	isc_token_t token;
+
+	REQUIRE(type =3D=3D 52);
+
+	UNUSED(type);
+	UNUSED(rdclass);
+	UNUSED(origin);
+	UNUSED(options);
+	UNUSED(callbacks);
+
+	/*
+	 * Certificate Usage.
+	 */
+	RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number,
+				      ISC_FALSE));
+	if (token.value.as_ulong > 0xffU)
+		RETTOK(ISC_R_RANGE);
+	RETERR(uint8_tobuffer(token.value.as_ulong, target));
+
+	/*
+	 * Selector.
+	 */
+	RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number,
+				      ISC_FALSE));
+	if (token.value.as_ulong > 0xffU)
+		RETTOK(ISC_R_RANGE);
+	RETERR(uint8_tobuffer(token.value.as_ulong, target));
+
+	/*
+	 * Matching type.
+	 */
+	RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number,
+				      ISC_FALSE));
+	if (token.value.as_ulong > 0xffU)
+		RETTOK(ISC_R_RANGE);
+	RETERR(uint8_tobuffer(token.value.as_ulong, target));
+
+	/*
+	 * Certificate Association Data.
+	 */
+	return (isc_hex_tobuffer(lexer, target, -1));
+}
+
+static inline isc_result_t
+totext_tlsa(ARGS_TOTEXT) {
+	isc_region_t sr;
+	char buf[sizeof("64000 ")];
+	unsigned int n;
+
+	REQUIRE(rdata->type =3D=3D 52);
+	REQUIRE(rdata->length !=3D 0);
+
+	UNUSED(tctx);
+
+	dns_rdata_toregion(rdata, &sr);
+
+	/*
+	 * Certificate Usage.
+	 */
+	n =3D uint8_fromregion(&sr);
+	isc_region_consume(&sr, 1);
+	sprintf(buf, "%u ", n);
+	RETERR(str_totext(buf, target));
+
+	/*
+	 * Selector.
+	 */
+	n =3D uint8_fromregion(&sr);
+	isc_region_consume(&sr, 1);
+	sprintf(buf, "%u ", n);
+	RETERR(str_totext(buf, target));
+
+	/*
+	 * Matching type.
+	 */
+	n =3D uint8_fromregion(&sr);
+	isc_region_consume(&sr, 1);
+	sprintf(buf, "%u", n);
+	RETERR(str_totext(buf, target));
+
+	/*
+	 * Certificate Association Data.
+	 */
+	if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) !=3D 0)
+		RETERR(str_totext(" (", target));
+	RETERR(str_totext(tctx->linebreak, target));
+	if (tctx->width =3D=3D 0) /* No splitting */
+		RETERR(isc_hex_totext(&sr, 0, "", target));
+	else
+		RETERR(isc_hex_totext(&sr, tctx->width - 2,
+				      tctx->linebreak, target));
+	if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) !=3D 0)
+		RETERR(str_totext(" )", target));
+	return (ISC_R_SUCCESS);
+}
+
+static inline isc_result_t
+fromwire_tlsa(ARGS_FROMWIRE) {
+	isc_region_t sr;
+
+	REQUIRE(type =3D=3D 52);
+
+	UNUSED(type);
+	UNUSED(rdclass);
+	UNUSED(dctx);
+	UNUSED(options);
+
+	isc_buffer_activeregion(source, &sr);
+
+	if (sr.length < 3)
+		return (ISC_R_UNEXPECTEDEND);
+
+	isc_buffer_forward(source, sr.length);
+	return (mem_tobuffer(target, sr.base, sr.length));
+}
+
+static inline isc_result_t
+towire_tlsa(ARGS_TOWIRE) {
+	isc_region_t sr;
+
+	REQUIRE(rdata->type =3D=3D 52);
+	REQUIRE(rdata->length !=3D 0);
+
+	UNUSED(cctx);
+
+	dns_rdata_toregion(rdata, &sr);
+	return (mem_tobuffer(target, sr.base, sr.length));
+}
+
+static inline int
+compare_tlsa(ARGS_COMPARE) {
+	isc_region_t r1;
+	isc_region_t r2;
+
+	REQUIRE(rdata1->type =3D=3D rdata2->type);
+	REQUIRE(rdata1->rdclass =3D=3D rdata2->rdclass);
+	REQUIRE(rdata1->type =3D=3D 52);
+	REQUIRE(rdata1->length !=3D 0);
+	REQUIRE(rdata2->length !=3D 0);
+
+	dns_rdata_toregion(rdata1, &r1);
+	dns_rdata_toregion(rdata2, &r2);
+	return (isc_region_compare(&r1, &r2));
+}
+
+static inline isc_result_t
+fromstruct_tlsa(ARGS_FROMSTRUCT) {
+	dns_rdata_tlsa_t *tlsa =3D source;
+
+	REQUIRE(type =3D=3D 52);
+	REQUIRE(source !=3D NULL);
+	REQUIRE(tlsa->common.rdtype =3D=3D type);
+	REQUIRE(tlsa->common.rdclass =3D=3D rdclass);
+
+	UNUSED(type);
+	UNUSED(rdclass);
+
+	RETERR(uint8_tobuffer(tlsa->usage, target));
+	RETERR(uint8_tobuffer(tlsa->selector, target));
+	RETERR(uint8_tobuffer(tlsa->match, target));
+
+	return (mem_tobuffer(target, tlsa->data, tlsa->length));
+}
+
+static inline isc_result_t
+tostruct_tlsa(ARGS_TOSTRUCT) {
+	dns_rdata_tlsa_t *tlsa =3D target;
+	isc_region_t region;
+
+	REQUIRE(rdata->type =3D=3D 52);
+	REQUIRE(target !=3D NULL);
+	REQUIRE(rdata->length !=3D 0);
+
+	tlsa->common.rdclass =3D rdata->rdclass;
+	tlsa->common.rdtype =3D rdata->type;
+	ISC_LINK_INIT(&tlsa->common, link);
+
+	dns_rdata_toregion(rdata, &region);
+
+	tlsa->usage =3D uint8_fromregion(&region);
+	isc_region_consume(&region, 1);
+	tlsa->selector =3D uint8_fromregion(&region);
+	isc_region_consume(&region, 1);
+	tlsa->match =3D uint8_fromregion(&region);
+	isc_region_consume(&region, 1);
+	tlsa->length =3D region.length;
+
+	tlsa->data =3D mem_maybedup(mctx, region.base, region.length);
+	if (tlsa->data =3D=3D NULL)
+		return (ISC_R_NOMEMORY);
+
+	tlsa->mctx =3D mctx;
+	return (ISC_R_SUCCESS);
+}
+
+static inline void
+freestruct_tlsa(ARGS_FREESTRUCT) {
+	dns_rdata_tlsa_t *tlsa =3D source;
+
+	REQUIRE(tlsa !=3D NULL);
+	REQUIRE(tlsa->common.rdtype =3D=3D 52);
+
+	if (tlsa->mctx =3D=3D NULL)
+		return;
+
+	if (tlsa->data !=3D NULL)
+		isc_mem_free(tlsa->mctx, tlsa->data);
+	tlsa->mctx =3D NULL;
+}
+
+static inline isc_result_t
+additionaldata_tlsa(ARGS_ADDLDATA) {
+	REQUIRE(rdata->type =3D=3D 52);
+
+	UNUSED(rdata);
+	UNUSED(add);
+	UNUSED(arg);
+
+	return (ISC_R_SUCCESS);
+}
+
+static inline isc_result_t
+digest_tlsa(ARGS_DIGEST) {
+	isc_region_t r;
+
+	REQUIRE(rdata->type =3D=3D 52);
+
+	dns_rdata_toregion(rdata, &r);
+
+	return ((digest)(arg, &r));
+}
+
+static inline isc_boolean_t
+checkowner_tlsa(ARGS_CHECKOWNER) {
+
+	REQUIRE(type =3D=3D 52);
+
+	UNUSED(name);
+	UNUSED(type);
+	UNUSED(rdclass);
+	UNUSED(wildcard);
+
+	return (ISC_TRUE);
+}
+
+static inline isc_boolean_t
+checknames_tlsa(ARGS_CHECKNAMES) {
+
+	REQUIRE(rdata->type =3D=3D 52);
+
+	UNUSED(rdata);
+	UNUSED(owner);
+	UNUSED(bad);
+
+	return (ISC_TRUE);
+}
+
+static inline int
+casecompare_tlsa(ARGS_COMPARE) {
+	return (compare_tlsa(rdata1, rdata2));
+}
+
+#endif	/* RDATA_GENERIC_TLSA_52_C */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/rdata/gener=
ic/tlsa_52.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2012  Internet Systems Consortium, Inc. ("ISC")
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABI=
LITY
+ * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING =
FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGE=
NCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE =
OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id$ */
+
+#ifndef GENERIC_TLSA_52_H
+#define GENERIC_TLSA_52_H 1
+
+/*!
+ *  \brief per draft-ietf-dane-protocol-19.txt
+ */
+typedef struct dns_rdata_tlsa {
+	dns_rdatacommon_t	common;
+	isc_mem_t		*mctx;
+	isc_uint8_t		usage;
+	isc_uint8_t		selector;
+	isc_uint8_t		match;
+	isc_uint16_t		length;
+	unsigned char		*data;
+} dns_rdata_tlsa_t;
+
+#endif /* GENERIC_TLSA_52_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/rdataslab.c
--- a/head/contrib/bind9/lib/dns/rdataslab.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/rdataslab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -126,6 +126,11 @@
 dns_rdataslab_fromrdataset(dns_rdataset_t *rdataset, isc_mem_t *mctx,
 			   isc_region_t *region, unsigned int reservelen)
 {
+	/*
+	 * Use &removed as a sentinal pointer for duplicate
+	 * rdata as rdata.data =3D=3D NULL is valid.
+	 */
+	static unsigned char removed;
 	struct xrdata  *x;
 	unsigned char  *rawbuf;
 #if DNS_RDATASET_FIXED
@@ -169,6 +174,7 @@
 		INSIST(result =3D=3D ISC_R_SUCCESS);
 		dns_rdata_init(&x[i].rdata);
 		dns_rdataset_current(rdataset, &x[i].rdata);
+		INSIST(x[i].rdata.data !=3D &removed);
 #if DNS_RDATASET_FIXED
 		x[i].order =3D i;
 #endif
@@ -201,8 +207,7 @@
 	 */
 	for (i =3D 1; i < nalloc; i++) {
 		if (compare_rdata(&x[i-1].rdata, &x[i].rdata) =3D=3D 0) {
-			x[i-1].rdata.data =3D NULL;
-			x[i-1].rdata.length =3D 0;
+			x[i-1].rdata.data =3D &removed;
 #if DNS_RDATASET_FIXED
 			/*
 			 * Preserve the least order so A, B, A -> A, B
@@ -292,7 +297,7 @@
 #endif
=20
 	for (i =3D 0; i < nalloc; i++) {
-		if (x[i].rdata.data =3D=3D NULL)
+		if (x[i].rdata.data =3D=3D &removed)
 			continue;
 #if DNS_RDATASET_FIXED
 		offsettable[x[i].order] =3D rawbuf - offsetbase;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/resolver.c
--- a/head/contrib/bind9/lib/dns/resolver.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/resolver.c	Wed Jul 25 16:21:35 2012 +0300
@@ -180,7 +180,9 @@
 	dns_rdatatype_t			type;
 	unsigned int			options;
 	unsigned int			bucketnum;
-	char *			info;
+	char *				info;
+	isc_mem_t *			mctx;
+
 	/*% Locked by appropriate bucket lock. */
 	fetchstate			state;
 	isc_boolean_t			want_shutdown;
@@ -446,7 +448,8 @@
 static void resquery_connected(isc_task_t *task, isc_event_t *event);
 static void fctx_try(fetchctx_t *fctx, isc_boolean_t retrying,
 		     isc_boolean_t badcache);
-static isc_boolean_t fctx_destroy(fetchctx_t *fctx);
+static void fctx_destroy(fetchctx_t *fctx);
+static isc_boolean_t fctx_unlink(fetchctx_t *fctx);
 static isc_result_t ncache_adderesult(dns_message_t *message,
 				      dns_db_t *cache, dns_dbnode_t *node,
 				      dns_rdatatype_t covers,
@@ -478,8 +481,7 @@
 	dns_valarg_t *valarg;
 	isc_result_t result;
=20
-	valarg =3D isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx,
-			     sizeof(*valarg));
+	valarg =3D isc_mem_get(fctx->mctx, sizeof(*valarg));
 	if (valarg =3D=3D NULL)
 		return (ISC_R_NOMEMORY);
=20
@@ -501,8 +503,7 @@
 		}
 		ISC_LIST_APPEND(fctx->validators, validator, link);
 	} else
-		isc_mem_put(fctx->res->buckets[fctx->bucketnum].mctx,
-			    valarg, sizeof(*valarg));
+		isc_mem_put(fctx->mctx, valarg, sizeof(*valarg));
 	return (result);
 }
=20
@@ -1386,13 +1387,12 @@
=20
 	dns_message_reset(fctx->rmessage, DNS_MESSAGE_INTENTPARSE);
=20
-	query =3D isc_mem_get(res->buckets[fctx->bucketnum].mctx,
-			    sizeof(*query));
+	query =3D isc_mem_get(fctx->mctx, sizeof(*query));
 	if (query =3D=3D NULL) {
 		result =3D ISC_R_NOMEMORY;
 		goto stop_idle_timer;
 	}
-	query->mctx =3D res->buckets[fctx->bucketnum].mctx;
+	query->mctx =3D fctx->mctx;
 	query->options =3D options;
 	query->attributes =3D 0;
 	query->sends =3D 0;
@@ -1569,8 +1569,7 @@
  cleanup_query:
 	if (query->connects =3D=3D 0) {
 		query->magic =3D 0;
-		isc_mem_put(res->buckets[fctx->bucketnum].mctx,
-			    query, sizeof(*query));
+		isc_mem_put(fctx->mctx, query, sizeof(*query));
 	}
=20
  stop_idle_timer:
@@ -1600,8 +1599,7 @@
 	if (bad_edns(fctx, address))
 		return;
=20
-	sa =3D isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx,
-			 sizeof(*sa));
+	sa =3D isc_mem_get(fctx->mctx, sizeof(*sa));
 	if (sa =3D=3D NULL)
 		return;
=20
@@ -1630,8 +1628,7 @@
 	if (triededns(fctx, address))
 		return;
=20
-	sa =3D isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx,
-			 sizeof(*sa));
+	sa =3D isc_mem_get(fctx->mctx, sizeof(*sa));
 	if (sa =3D=3D NULL)
 		return;
=20
@@ -1660,8 +1657,7 @@
 	if (triededns512(fctx, address))
 		return;
=20
-	sa =3D isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx,
-			 sizeof(*sa));
+	sa =3D isc_mem_get(fctx->mctx, sizeof(*sa));
 	if (sa =3D=3D NULL)
 		return;
=20
@@ -2166,8 +2162,8 @@
 	isc_boolean_t want_try =3D ISC_FALSE;
 	isc_boolean_t want_done =3D ISC_FALSE;
 	isc_boolean_t bucket_empty =3D ISC_FALSE;
+	unsigned int bucketnum;
 	isc_boolean_t destroy =3D ISC_FALSE;
-	unsigned int bucketnum;
=20
 	find =3D event->ev_sender;
 	fctx =3D event->ev_arg;
@@ -2205,17 +2201,14 @@
 		}
 	} else if (SHUTTINGDOWN(fctx) && fctx->pending =3D=3D 0 &&
 		   fctx->nqueries =3D=3D 0 && ISC_LIST_EMPTY(fctx->validators)) {
-		/*
-		 * Note that we had to wait until we had the lock before
-		 * looking at fctx->references.
-		 */
-		if (fctx->references =3D=3D 0)
+
+		if (fctx->references =3D=3D 0) {
+			bucket_empty =3D fctx_unlink(fctx);
 			destroy =3D ISC_TRUE;
+		}
 	}
 	UNLOCK(&res->buckets[bucketnum].lock);
=20
-	if (destroy)
-		bucket_empty =3D fctx_destroy(fctx);
 	isc_event_free(&event);
 	dns_adb_destroyfind(&find);
=20
@@ -2223,8 +2216,11 @@
 		fctx_try(fctx, ISC_TRUE, ISC_FALSE);
 	else if (want_done)
 		fctx_done(fctx, ISC_R_FAILURE, __LINE__);
-	else if (bucket_empty)
-		empty_bucket(res);
+	else if (destroy) {
+			fctx_destroy(fctx);
+		if (bucket_empty)
+			empty_bucket(res);
+	}
 }
=20
=20
@@ -2347,8 +2343,7 @@
=20
 	FCTXTRACE("add_bad");
=20
-	sa =3D isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx,
-			 sizeof(*sa));
+	sa =3D isc_mem_get(fctx->mctx, sizeof(*sa));
 	if (sa =3D=3D NULL)
 		return;
 	*sa =3D *address;
@@ -2631,12 +2626,9 @@
 			fctx->fwdpolicy =3D forwarders->fwdpolicy;
 			if (fctx->fwdpolicy =3D=3D dns_fwdpolicy_only &&
 			    isstrictsubdomain(domain, &fctx->domain)) {
-				isc_mem_t *mctx;
-
-				mctx =3D res->buckets[fctx->bucketnum].mctx;
-				dns_name_free(&fctx->domain, mctx);
+				dns_name_free(&fctx->domain, fctx->mctx);
 				dns_name_init(&fctx->domain, NULL);
-				result =3D dns_name_dup(domain, mctx,
+				result =3D dns_name_dup(domain, fctx->mctx,
 						      &fctx->domain);
 				if (result !=3D ISC_R_SUCCESS)
 					return (result);
@@ -3075,10 +3067,9 @@
 }
=20
 static isc_boolean_t
-fctx_destroy(fetchctx_t *fctx) {
+fctx_unlink(fetchctx_t *fctx) {
 	dns_resolver_t *res;
 	unsigned int bucketnum;
-	isc_sockaddr_t *sa, *next_sa;
=20
 	/*
 	 * Caller must be holding the bucket lock.
@@ -3095,13 +3086,42 @@
 	REQUIRE(fctx->references =3D=3D 0);
 	REQUIRE(ISC_LIST_EMPTY(fctx->validators));
=20
-	FCTXTRACE("destroy");
+	FCTXTRACE("unlink");
=20
 	res =3D fctx->res;
 	bucketnum =3D fctx->bucketnum;
=20
 	ISC_LIST_UNLINK(res->buckets[bucketnum].fctxs, fctx, link);
=20
+	LOCK(&res->nlock);
+	res->nfctx--;
+	UNLOCK(&res->nlock);
+
+	if (res->buckets[bucketnum].exiting &&
+	    ISC_LIST_EMPTY(res->buckets[bucketnum].fctxs))
+		return (ISC_TRUE);
+
+	return (ISC_FALSE);
+}
+
+static void
+fctx_destroy(fetchctx_t *fctx) {
+	isc_sockaddr_t *sa, *next_sa;
+
+	REQUIRE(VALID_FCTX(fctx));
+	REQUIRE(fctx->state =3D=3D fetchstate_done ||
+		fctx->state =3D=3D fetchstate_init);
+	REQUIRE(ISC_LIST_EMPTY(fctx->events));
+	REQUIRE(ISC_LIST_EMPTY(fctx->queries));
+	REQUIRE(ISC_LIST_EMPTY(fctx->finds));
+	REQUIRE(ISC_LIST_EMPTY(fctx->altfinds));
+	REQUIRE(fctx->pending =3D=3D 0);
+	REQUIRE(fctx->references =3D=3D 0);
+	REQUIRE(ISC_LIST_EMPTY(fctx->validators));
+	REQUIRE(!ISC_LINK_LINKED(fctx, link));
+
+	FCTXTRACE("destroy");
+
 	/*
 	 * Free bad.
 	 */
@@ -3110,7 +3130,7 @@
 	     sa =3D next_sa) {
 		next_sa =3D ISC_LIST_NEXT(sa, link);
 		ISC_LIST_UNLINK(fctx->bad, sa, link);
-		isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa));
+		isc_mem_put(fctx->mctx, sa, sizeof(*sa));
 	}
=20
 	for (sa =3D ISC_LIST_HEAD(fctx->edns);
@@ -3118,7 +3138,7 @@
 	     sa =3D next_sa) {
 		next_sa =3D ISC_LIST_NEXT(sa, link);
 		ISC_LIST_UNLINK(fctx->edns, sa, link);
-		isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa));
+		isc_mem_put(fctx->mctx, sa, sizeof(*sa));
 	}
=20
 	for (sa =3D ISC_LIST_HEAD(fctx->edns512);
@@ -3126,7 +3146,7 @@
 	     sa =3D next_sa) {
 		next_sa =3D ISC_LIST_NEXT(sa, link);
 		ISC_LIST_UNLINK(fctx->edns512, sa, link);
-		isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa));
+		isc_mem_put(fctx->mctx, sa, sizeof(*sa));
 	}
=20
 	for (sa =3D ISC_LIST_HEAD(fctx->bad_edns);
@@ -3134,31 +3154,21 @@
 	     sa =3D next_sa) {
 		next_sa =3D ISC_LIST_NEXT(sa, link);
 		ISC_LIST_UNLINK(fctx->bad_edns, sa, link);
-		isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa));
+		isc_mem_put(fctx->mctx, sa, sizeof(*sa));
 	}
=20
 	isc_timer_detach(&fctx->timer);
 	dns_message_destroy(&fctx->rmessage);
 	dns_message_destroy(&fctx->qmessage);
 	if (dns_name_countlabels(&fctx->domain) > 0)
-		dns_name_free(&fctx->domain, res->buckets[bucketnum].mctx);
+		dns_name_free(&fctx->domain, fctx->mctx);
 	if (dns_rdataset_isassociated(&fctx->nameservers))
 		dns_rdataset_disassociate(&fctx->nameservers);
-	dns_name_free(&fctx->name, res->buckets[bucketnum].mctx);
+	dns_name_free(&fctx->name, fctx->mctx);
 	dns_db_detach(&fctx->cache);
 	dns_adb_detach(&fctx->adb);
-	isc_mem_free(res->buckets[bucketnum].mctx, fctx->info);
-	isc_mem_put(res->buckets[bucketnum].mctx, fctx, sizeof(*fctx));
-
-	LOCK(&res->nlock);
-	res->nfctx--;
-	UNLOCK(&res->nlock);
-
-	if (res->buckets[bucketnum].exiting &&
-	    ISC_LIST_EMPTY(res->buckets[bucketnum].fctxs))
-		return (ISC_TRUE);
-
-	return (ISC_FALSE);
+	isc_mem_free(fctx->mctx, fctx->info);
+	isc_mem_putanddetach(&fctx->mctx, fctx, sizeof(*fctx));
 }
=20
 /*
@@ -3258,6 +3268,7 @@
 	dns_resolver_t *res;
 	unsigned int bucketnum;
 	dns_validator_t *validator;
+	isc_boolean_t destroy =3D ISC_FALSE;
=20
 	REQUIRE(VALID_FCTX(fctx));
=20
@@ -3307,13 +3318,18 @@
 	}
=20
 	if (fctx->references =3D=3D 0 && fctx->pending =3D=3D 0 &&
-	    fctx->nqueries =3D=3D 0 && ISC_LIST_EMPTY(fctx->validators))
-		bucket_empty =3D fctx_destroy(fctx);
+	    fctx->nqueries =3D=3D 0 && ISC_LIST_EMPTY(fctx->validators)) {
+		bucket_empty =3D fctx_unlink(fctx);
+		destroy =3D ISC_TRUE;
+	}
=20
 	UNLOCK(&res->buckets[bucketnum].lock);
=20
-	if (bucket_empty)
-		empty_bucket(res);
+	if (destroy) {
+		fctx_destroy(fctx);
+		if (bucket_empty)
+			empty_bucket(res);
+	}
 }
=20
 static void
@@ -3322,6 +3338,7 @@
 	isc_boolean_t done =3D ISC_FALSE, bucket_empty =3D ISC_FALSE;
 	dns_resolver_t *res;
 	unsigned int bucketnum;
+	isc_boolean_t destroy =3D ISC_FALSE;
=20
 	REQUIRE(VALID_FCTX(fctx));
=20
@@ -3354,7 +3371,8 @@
 			/*
 			 * It's now safe to destroy this fctx.
 			 */
-			bucket_empty =3D fctx_destroy(fctx);
+			bucket_empty =3D fctx_unlink(fctx);
+			destroy =3D ISC_TRUE;
 		}
 		done =3D ISC_TRUE;
 	} else {
@@ -3376,6 +3394,8 @@
 	if (!done) {
 		isc_result_t result;
=20
+		INSIST(!destroy);
+
 		/*
 		 * All is well.  Start working on the fetch.
 		 */
@@ -3384,8 +3404,11 @@
 			fctx_done(fctx, result, __LINE__);
 		else
 			fctx_try(fctx, ISC_FALSE, ISC_FALSE);
-	} else if (bucket_empty)
-		empty_bucket(res);
+	} else if (destroy) {
+			fctx_destroy(fctx);
+		if (bucket_empty)
+			empty_bucket(res);
+	}
 }
=20
 /*
@@ -3473,27 +3496,29 @@
 	char buf[DNS_NAME_FORMATSIZE + DNS_RDATATYPE_FORMATSIZE];
 	char typebuf[DNS_RDATATYPE_FORMATSIZE];
 	dns_name_t suffix;
+	isc_mem_t *mctx;
=20
 	/*
 	 * Caller must be holding the lock for bucket number 'bucketnum'.
 	 */
 	REQUIRE(fctxp !=3D NULL && *fctxp =3D=3D NULL);
=20
-	fctx =3D isc_mem_get(res->buckets[bucketnum].mctx, sizeof(*fctx));
+	mctx =3D res->buckets[bucketnum].mctx;
+	fctx =3D isc_mem_get(mctx, sizeof(*fctx));
 	if (fctx =3D=3D NULL)
 		return (ISC_R_NOMEMORY);
 	dns_name_format(name, buf, sizeof(buf));
 	dns_rdatatype_format(type, typebuf, sizeof(typebuf));
 	strcat(buf, "/");       /* checked */
 	strcat(buf, typebuf);   /* checked */
-	fctx->info =3D isc_mem_strdup(res->buckets[bucketnum].mctx, buf);
+	fctx->info =3D isc_mem_strdup(mctx, buf);
 	if (fctx->info =3D=3D NULL) {
 		result =3D ISC_R_NOMEMORY;
 		goto cleanup_fetch;
 	}
 	FCTXTRACE("create");
 	dns_name_init(&fctx->name, NULL);
-	result =3D dns_name_dup(name, res->buckets[bucketnum].mctx, &fctx->name);
+	result =3D dns_name_dup(name, mctx, &fctx->name);
 	if (result !=3D ISC_R_SUCCESS)
 		goto cleanup_info;
 	dns_name_init(&fctx->domain, NULL);
@@ -3596,9 +3621,7 @@
 						      NULL);
 			if (result !=3D ISC_R_SUCCESS)
 				goto cleanup_name;
-			result =3D dns_name_dup(domain,
-					      res->buckets[bucketnum].mctx,
-					      &fctx->domain);
+			result =3D dns_name_dup(domain, mctx, &fctx->domain);
 			if (result !=3D ISC_R_SUCCESS) {
 				dns_rdataset_disassociate(&fctx->nameservers);
 				goto cleanup_name;
@@ -3609,16 +3632,12 @@
 			/*
 			 * We're in forward-only mode.  Set the query domain.
 			 */
-			result =3D dns_name_dup(domain,
-					      res->buckets[bucketnum].mctx,
-					      &fctx->domain);
+			result =3D dns_name_dup(domain, mctx, &fctx->domain);
 			if (result !=3D ISC_R_SUCCESS)
 				goto cleanup_name;
 		}
 	} else {
-		result =3D dns_name_dup(domain,
-				      res->buckets[bucketnum].mctx,
-				      &fctx->domain);
+		result =3D dns_name_dup(domain, mctx, &fctx->domain);
 		if (result !=3D ISC_R_SUCCESS)
 			goto cleanup_name;
 		dns_rdataset_clone(nameservers, &fctx->nameservers);
@@ -3631,16 +3650,14 @@
 	INSIST(dns_name_issubdomain(&fctx->name, &fctx->domain));
=20
 	fctx->qmessage =3D NULL;
-	result =3D dns_message_create(res->buckets[bucketnum].mctx,
-				    DNS_MESSAGE_INTENTRENDER,
+	result =3D dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER,
 				    &fctx->qmessage);
=20
 	if (result !=3D ISC_R_SUCCESS)
 		goto cleanup_domain;
=20
 	fctx->rmessage =3D NULL;
-	result =3D dns_message_create(res->buckets[bucketnum].mctx,
-				    DNS_MESSAGE_INTENTPARSE,
+	result =3D dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE,
 				    &fctx->rmessage);
=20
 	if (result !=3D ISC_R_SUCCESS)
@@ -3690,6 +3707,8 @@
 	dns_db_attach(res->view->cachedb, &fctx->cache);
 	fctx->adb =3D NULL;
 	dns_adb_attach(res->view->adb, &fctx->adb);
+	fctx->mctx =3D NULL;
+	isc_mem_attach(mctx, &fctx->mctx);
=20
 	ISC_LIST_INIT(fctx->events);
 	ISC_LINK_INIT(fctx, link);
@@ -3713,18 +3732,18 @@
=20
  cleanup_domain:
 	if (dns_name_countlabels(&fctx->domain) > 0)
-		dns_name_free(&fctx->domain, res->buckets[bucketnum].mctx);
+		dns_name_free(&fctx->domain, mctx);
 	if (dns_rdataset_isassociated(&fctx->nameservers))
 		dns_rdataset_disassociate(&fctx->nameservers);
=20
  cleanup_name:
-	dns_name_free(&fctx->name, res->buckets[bucketnum].mctx);
+	dns_name_free(&fctx->name, mctx);
=20
  cleanup_info:
-	isc_mem_free(res->buckets[bucketnum].mctx, fctx->info);
+	isc_mem_free(mctx, fctx->info);
=20
  cleanup_fetch:
-	isc_mem_put(res->buckets[bucketnum].mctx, fctx, sizeof(*fctx));
+	isc_mem_put(mctx, fctx, sizeof(*fctx));
=20
 	return (result);
 }
@@ -3934,6 +3953,7 @@
 	isc_boolean_t bucket_empty =3D ISC_FALSE;
 	dns_resolver_t *res =3D fctx->res;
 	dns_validator_t *validator, *next_validator;
+	isc_boolean_t destroy =3D ISC_FALSE;
=20
 	REQUIRE(SHUTTINGDOWN(fctx));
=20
@@ -3949,11 +3969,15 @@
 		dns_validator_cancel(validator);
 	}
=20
-	if (fctx->references =3D=3D 0 && ISC_LIST_EMPTY(fctx->validators))
-		bucket_empty =3D fctx_destroy(fctx);
+	if (fctx->references =3D=3D 0 && ISC_LIST_EMPTY(fctx->validators)) {
+		bucket_empty =3D fctx_unlink(fctx);
+		destroy =3D ISC_TRUE;
+	}
  unlock:
 	if (!locked)
 		UNLOCK(&res->buckets[bucketnum].lock);
+	if (destroy)
+		fctx_destroy(fctx);
 	return (bucket_empty);
 }
=20
@@ -4008,8 +4032,7 @@
 	 * destroy the fctx if necessary.
 	 */
 	dns_validator_destroy(&vevent->validator);
-	isc_mem_put(res->buckets[fctx->bucketnum].mctx,
-		    valarg, sizeof(*valarg));
+	isc_mem_put(fctx->mctx, valarg, sizeof(*valarg));
=20
 	negative =3D ISC_TF(vevent->rdataset =3D=3D NULL);
=20
@@ -5723,14 +5746,11 @@
 		 *		if so we should bail out.
 		 */
 		INSIST(dns_name_countlabels(&fctx->domain) > 0);
-		dns_name_free(&fctx->domain,
-			      fctx->res->buckets[fctx->bucketnum].mctx);
+		dns_name_free(&fctx->domain, fctx->mctx);
 		if (dns_rdataset_isassociated(&fctx->nameservers))
 			dns_rdataset_disassociate(&fctx->nameservers);
 		dns_name_init(&fctx->domain, NULL);
-		result =3D dns_name_dup(ns_name,
-				      fctx->res->buckets[fctx->bucketnum].mctx,
-				      &fctx->domain);
+		result =3D dns_name_dup(ns_name, fctx->mctx, &fctx->domain);
 		if (result !=3D ISC_R_SUCCESS)
 			return (result);
 		fctx->attributes |=3D FCTX_ATTR_WANTCACHE;
@@ -6232,7 +6252,8 @@
 			 * This fctx is already shutdown; we were just
 			 * waiting for the last reference to go away.
 			 */
-			bucket_empty =3D fctx_destroy(fctx);
+			bucket_empty =3D fctx_unlink(fctx);
+			fctx_destroy(fctx);
 		} else {
 			/*
 			 * Initiate shutdown.
@@ -6287,12 +6308,9 @@
 		fctx->ns_ttl =3D fctx->nameservers.ttl;
 		fctx->ns_ttl_ok =3D ISC_TRUE;
 		log_ns_ttl(fctx, "resume_dslookup");
-		dns_name_free(&fctx->domain,
-			      fctx->res->buckets[bucketnum].mctx);
+		dns_name_free(&fctx->domain, fctx->mctx);
 		dns_name_init(&fctx->domain, NULL);
-		result =3D dns_name_dup(&fctx->nsname,
-				      fctx->res->buckets[bucketnum].mctx,
-				      &fctx->domain);
+		result =3D dns_name_dup(&fctx->nsname, fctx->mctx, &fctx->domain);
 		if (result !=3D ISC_R_SUCCESS) {
 			fctx_done(fctx, DNS_R_SERVFAIL, __LINE__);
 			goto cleanup;
@@ -7210,12 +7228,9 @@
 				fctx_done(fctx, DNS_R_SERVFAIL, __LINE__);
 				return;
 			}
-			dns_name_free(&fctx->domain,
-				      fctx->res->buckets[fctx->bucketnum].mctx);
+			dns_name_free(&fctx->domain, fctx->mctx);
 			dns_name_init(&fctx->domain, NULL);
-			result =3D dns_name_dup(fname,
-					      fctx->res->buckets[fctx->bucketnum].mctx,
-					      &fctx->domain);
+			result =3D dns_name_dup(fname, fctx->mctx, &fctx->domain);
 			if (result !=3D ISC_R_SUCCESS) {
 				fctx_done(fctx, DNS_R_SERVFAIL, __LINE__);
 				return;
@@ -7955,6 +7970,7 @@
 	unsigned int count =3D 0;
 	unsigned int spillat;
 	unsigned int spillatmin;
+	isc_boolean_t destroy =3D ISC_FALSE;
=20
 	UNUSED(forwarders);
=20
@@ -8052,16 +8068,20 @@
 			isc_task_send(res->buckets[bucketnum].task, &event);
 		} else {
 			/*
-			 * We don't care about the result of fctx_destroy()
+			 * We don't care about the result of fctx_unlink()
 			 * since we know we're not exiting.
 			 */
-			(void)fctx_destroy(fctx);
+			(void)fctx_unlink(fctx);
+			destroy =3D ISC_TRUE;
 		}
 	}
=20
  unlock:
 	UNLOCK(&res->buckets[bucketnum].lock);
=20
+	if (destroy)
+		fctx_destroy(fctx);
+
 	if (result =3D=3D ISC_R_SUCCESS) {
 		FTRACE("created");
 		*fetchp =3D fetch;
@@ -8428,6 +8448,7 @@
 			goto cleanup;
 		bad->type =3D type;
 		bad->hashval =3D hashval;
+		bad->expire =3D *expire;
 		isc_buffer_init(&buffer, bad + 1, name->length);
 		dns_name_init(&bad->name, NULL);
 		dns_name_copy(name, &bad->name, &buffer);
@@ -8439,8 +8460,8 @@
 		if (resolver->badcount < resolver->badhash * 2 &&
 		    resolver->badhash > DNS_BADCACHE_SIZE)
 			resizehash(resolver, &now, ISC_FALSE);
-	}
-	bad->expire =3D *expire;
+	} else
+		bad->expire =3D *expire;
  cleanup:
 	UNLOCK(&resolver->lock);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/sdb.c
--- a/head/contrib/bind9/lib/dns/sdb.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/sdb.c	Wed Jul 25 16:21:35 2012 +0300
@@ -216,12 +216,13 @@
=20
 	REQUIRE(drivername !=3D NULL);
 	REQUIRE(methods !=3D NULL);
-	REQUIRE(methods->lookup !=3D NULL);
+	REQUIRE(methods->lookup !=3D NULL || methods->lookup2 !=3D NULL);
 	REQUIRE(mctx !=3D NULL);
 	REQUIRE(sdbimp !=3D NULL && *sdbimp =3D=3D NULL);
 	REQUIRE((flags & ~(DNS_SDBFLAG_RELATIVEOWNER |
 			   DNS_SDBFLAG_RELATIVERDATA |
-			   DNS_SDBFLAG_THREADSAFE)) =3D=3D 0);
+			   DNS_SDBFLAG_THREADSAFE|
+			   DNS_SDBFLAG_DNS64)) =3D=3D 0);
=20
 	imp =3D isc_mem_get(mctx, sizeof(dns_sdbimplementation_t));
 	if (imp =3D=3D NULL)
@@ -280,8 +281,9 @@
 }
=20
 isc_result_t
-dns_sdb_putrdata(dns_sdblookup_t *lookup, dns_rdatatype_t typeval, dns_ttl=
_t ttl,
-		 const unsigned char *rdatap, unsigned int rdlen)
+dns_sdb_putrdata(dns_sdblookup_t *lookup, dns_rdatatype_t typeval,
+		 dns_ttl_t ttl, const unsigned char *rdatap,
+		 unsigned int rdlen)
 {
 	dns_rdatalist_t *rdatalist;
 	dns_rdata_t *rdata;
@@ -338,7 +340,6 @@
 	return (result);
 }
=20
-
 isc_result_t
 dns_sdb_putrr(dns_sdblookup_t *lookup, const char *type, dns_ttl_t ttl,
 	      const char *data)
@@ -737,6 +738,8 @@
 	char namestr[DNS_NAME_MAXTEXT + 1];
 	isc_boolean_t isorigin;
 	dns_sdbimplementation_t *imp;
+	dns_name_t relname;
+	unsigned int labels;
=20
 	REQUIRE(VALID_SDB(sdb));
 	REQUIRE(create =3D=3D ISC_FALSE);
@@ -747,33 +750,46 @@
=20
 	imp =3D sdb->implementation;
=20
-	isc_buffer_init(&b, namestr, sizeof(namestr));
-	if ((imp->flags & DNS_SDBFLAG_RELATIVEOWNER) !=3D 0) {
-		dns_name_t relname;
-		unsigned int labels;
+	isorigin =3D dns_name_equal(name, &sdb->common.origin);
=20
-		labels =3D dns_name_countlabels(name) -
-			 dns_name_countlabels(&db->origin);
-		dns_name_init(&relname, NULL);
-		dns_name_getlabelsequence(name, 0, labels, &relname);
-		result =3D dns_name_totext(&relname, ISC_TRUE, &b);
-		if (result !=3D ISC_R_SUCCESS)
-			return (result);
+	if (imp->methods->lookup2 !=3D NULL) {
+		if ((imp->flags & DNS_SDBFLAG_RELATIVEOWNER) !=3D 0) {
+			labels =3D dns_name_countlabels(name) -
+				 dns_name_countlabels(&db->origin);
+			dns_name_init(&relname, NULL);
+			dns_name_getlabelsequence(name, 0, labels, &relname);
+			name =3D &relname;
+		}
 	} else {
-		result =3D dns_name_totext(name, ISC_TRUE, &b);
-		if (result !=3D ISC_R_SUCCESS)
-			return (result);
+		isc_buffer_init(&b, namestr, sizeof(namestr));
+		if ((imp->flags & DNS_SDBFLAG_RELATIVEOWNER) !=3D 0) {
+
+			labels =3D dns_name_countlabels(name) -
+				 dns_name_countlabels(&db->origin);
+			dns_name_init(&relname, NULL);
+			dns_name_getlabelsequence(name, 0, labels, &relname);
+			result =3D dns_name_totext(&relname, ISC_TRUE, &b);
+			if (result !=3D ISC_R_SUCCESS)
+				return (result);
+		} else {
+			result =3D dns_name_totext(name, ISC_TRUE, &b);
+			if (result !=3D ISC_R_SUCCESS)
+				return (result);
+		}
+		isc_buffer_putuint8(&b, 0);
 	}
-	isc_buffer_putuint8(&b, 0);
=20
 	result =3D createnode(sdb, &node);
 	if (result !=3D ISC_R_SUCCESS)
 		return (result);
=20
-	isorigin =3D dns_name_equal(name, &sdb->common.origin);
-
 	MAYBE_LOCK(sdb);
-	result =3D imp->methods->lookup(sdb->zone, namestr, sdb->dbdata, node);
+	if (imp->methods->lookup2 !=3D NULL)
+		result =3D imp->methods->lookup2(&sdb->common.origin, name,
+					       sdb->dbdata, node);
+	else
+		result =3D imp->methods->lookup(sdb->zone, namestr, sdb->dbdata,
+					      node);
 	MAYBE_UNLOCK(sdb);
 	if (result !=3D ISC_R_SUCCESS &&
 	    !(result =3D=3D ISC_R_NOTFOUND &&
@@ -811,13 +827,13 @@
 	unsigned int nlabels, olabels;
 	isc_result_t result;
 	unsigned int i;
+	unsigned int flags;
=20
 	REQUIRE(VALID_SDB(sdb));
 	REQUIRE(nodep =3D=3D NULL || *nodep =3D=3D NULL);
 	REQUIRE(version =3D=3D NULL || version =3D=3D (void *) &dummy);
=20
 	UNUSED(options);
-	UNUSED(sdb);
=20
 	if (!dns_name_issubdomain(name, &db->origin))
 		return (DNS_R_NXDOMAIN);
@@ -834,17 +850,37 @@
 	}
=20
 	result =3D DNS_R_NXDOMAIN;
-
-	for (i =3D olabels; i <=3D nlabels; i++) {
+	flags =3D sdb->implementation->flags;
+	i =3D (flags & DNS_SDBFLAG_DNS64) !=3D 0 ? nlabels : olabels;
+	for (; i <=3D nlabels; i++) {
 		/*
 		 * Look up the next label.
 		 */
 		dns_name_getlabelsequence(name, nlabels - i, i, xname);
 		result =3D findnode(db, xname, ISC_FALSE, &node);
-		if (result !=3D ISC_R_SUCCESS) {
+		if (result =3D=3D ISC_R_NOTFOUND) {
+			/*
+			 * No data at zone apex?
+			 */
+			if (i =3D=3D olabels)
+				return (DNS_R_BADDB);
 			result =3D DNS_R_NXDOMAIN;
 			continue;
 		}
+		if (result !=3D ISC_R_SUCCESS)
+			return (result);
+
+		/*
+		 * DNS64 zone's don't have DNAME or NS records.
+		 */
+		if ((flags & DNS_SDBFLAG_DNS64) !=3D 0)
+			goto skip;
+
+		/*
+		 * DNS64 zone's don't have DNAME or NS records.
+		 */
+		if ((flags & DNS_SDBFLAG_DNS64) !=3D 0)
+			goto skip;
=20
 		/*
 		 * Look for a DNAME at the current label, unless this is
@@ -895,6 +931,7 @@
 			continue;
 		}
=20
+ skip:
 		/*
 		 * If we're looking for ANY, we're done.
 		 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/tkey.c
--- a/head/contrib/bind9/lib/dns/tkey.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/tkey.c	Wed Jul 25 16:21:35 2012 +0300
@@ -485,9 +485,9 @@
 		tkeyout->error =3D dns_tsigerror_badkey;
 		tkey_log("process_gsstkey(): dns_tsigerror_badkey");    /* XXXSRA */
 		return (ISC_R_SUCCESS);
-	} else if (result =3D=3D ISC_R_FAILURE)
+	}
+	if (result !=3D DNS_R_CONTINUE && result !=3D ISC_R_SUCCESS)
 		goto failure;
-	ENSURE(result =3D=3D DNS_R_CONTINUE || result =3D=3D ISC_R_SUCCESS);
 	/*
 	 * XXXDCL Section 4.1.3: Limit GSS_S_CONTINUE_NEEDED to 10 times.
 	 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/dns/zone.c
--- a/head/contrib/bind9/lib/dns/zone.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/dns/zone.c	Wed Jul 25 16:21:35 2012 +0300
@@ -429,6 +429,7 @@
 	isc_ratelimiter_t *	rl;
 	isc_rwlock_t		rwlock;
 	isc_mutex_t		iolock;
+	isc_rwlock_t		urlock;
=20
 	/* Locked by rwlock. */
 	dns_zonelist_t		zones;
@@ -446,7 +447,7 @@
 	dns_iolist_t		high;
 	dns_iolist_t		low;
=20
-	/* Locked by rwlock. */
+	/* Locked by urlock. */
 	/* LRU cache */
 	struct dns_unreachable	unreachable[UNREACH_CHACHE_SIZE];
 };
@@ -1676,12 +1677,16 @@
=20
 	LOCK_ZONE(zone);
 	ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_read);
-	dns_db_currentversion(zone->db, &version);
-	result =3D dns_master_dumpinc2(zone->mctx, zone->db, version,
-				     &dns_master_style_default,
-				     zone->masterfile, zone->task, dump_done,
-				     zone, &zone->dctx, zone->masterformat);
-	dns_db_closeversion(zone->db, &version, ISC_FALSE);
+	if (zone->db !=3D NULL) {
+		dns_db_currentversion(zone->db, &version);
+		result =3D dns_master_dumpinc2(zone->mctx, zone->db, version,
+					     &dns_master_style_default,
+					     zone->masterfile, zone->task,
+					     dump_done, zone, &zone->dctx,
+					     zone->masterformat);
+		dns_db_closeversion(zone->db, &version, ISC_FALSE);
+	} else
+		result =3D ISC_R_CANCELED;
 	ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_read);
 	UNLOCK_ZONE(zone);
 	if (result !=3D DNS_R_CONTINUE)
@@ -2695,7 +2700,8 @@
  */
 static void
 set_refreshkeytimer(dns_zone_t *zone, dns_rdata_keydata_t *key,
-		    isc_stdtime_t now) {
+		    isc_stdtime_t now)
+{
 	const char me[] =3D "set_refreshkeytimer";
 	isc_stdtime_t then;
 	isc_time_t timenow, timethen;
@@ -4443,6 +4449,7 @@
 	/*
 	 * Everything is ok so attach to the zone.
 	 */
+	zone->curmaster =3D 0;
 	zone->masters =3D new;
 	zone->mastersok =3D newok;
 	zone->masterkeynames =3D newname;
@@ -8020,13 +8027,14 @@
 	case dns_zone_master:
 	case dns_zone_slave:
 	case dns_zone_key:
+	case dns_zone_stub:
 		LOCK_ZONE(zone);
 		if (zone->masterfile !=3D NULL &&
 		    isc_time_compare(&now, &zone->dumptime) >=3D 0 &&
 		    DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED) &&
 		    DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NEEDDUMP)) {
 			dumping =3D was_dumping(zone);
-		} else
+		} else=20
 			dumping =3D ISC_TRUE;
 		UNLOCK_ZONE(zone);
 		if (!dumping) {
@@ -8379,7 +8387,7 @@
 		goto fail;
 	}
=20
-	if (compact) {
+	if (compact && zone->type !=3D dns_zone_stub) {
 		dns_zone_t *dummy =3D NULL;
 		LOCK_ZONE(zone);
 		zone_iattach(zone, &dummy);
@@ -8531,6 +8539,14 @@
=20
 	REQUIRE(LOCKED_ZONE(zone));
=20
+	if (!DNS_ZONE_FLAG(zone, DNS_ZONEFLG_FLUSH) ||
+	    !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DUMPING)) {
+		if (zone->writeio !=3D NULL)
+			zonemgr_cancelio(zone->writeio);
+
+		if (zone->dctx !=3D NULL)
+			dns_dumpctx_cancel(zone->dctx);
+	}
 	ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_write);
 	zone_detachdb(zone);
 	ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write);
@@ -9227,7 +9243,7 @@
 	dns_zone_t *zone =3D NULL;
 	char master[ISC_SOCKADDR_FORMATSIZE];
 	char source[ISC_SOCKADDR_FORMATSIZE];
-	isc_uint32_t nscnt, cnamecnt;
+	isc_uint32_t nscnt, cnamecnt, refresh, retry, expire;
 	isc_result_t result;
 	isc_time_t now;
 	isc_boolean_t exiting =3D ISC_FALSE;
@@ -9245,6 +9261,8 @@
=20
 	TIME_NOW(&now);
=20
+	LOCK_ZONE(zone);
+
 	if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_EXITING)) {
 		zone_debuglog(zone, me, 1, "exiting");
 		exiting =3D ISC_TRUE;
@@ -9257,9 +9275,7 @@
 	if (revent->result !=3D ISC_R_SUCCESS) {
 		if (revent->result =3D=3D ISC_R_TIMEDOUT &&
 		    !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NOEDNS)) {
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
-			UNLOCK_ZONE(zone);
 			dns_zone_log(zone, ISC_LOG_DEBUG(1),
 				     "refreshing stub: timeout retrying "
 				     " without EDNS master %s (source %s)",
@@ -9301,9 +9317,7 @@
 				     "refreshing stub: rcode (%.*s) retrying "
 				     "without EDNS master %s (source %s)",
 				     (int)rb.used, rcode, master, source);
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
-			UNLOCK_ZONE(zone);
 			goto same_master;
 		}
=20
@@ -9325,9 +9339,7 @@
 				     master, source);
 			goto next_master;
 		}
-		LOCK_ZONE(zone);
 		DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_USEVC);
-		UNLOCK_ZONE(zone);
 		goto same_master;
 	}
=20
@@ -9379,24 +9391,33 @@
 	ZONEDB_LOCK(&zone->dblock, isc_rwlocktype_write);
 	if (zone->db =3D=3D NULL)
 		zone_attachdb(zone, stub->db);
+	result =3D zone_get_from_db(zone, zone->db, NULL, NULL, NULL, &refresh,
+				  &retry, &expire, NULL, NULL);
+	if (result =3D=3D ISC_R_SUCCESS) {
+		zone->refresh =3D RANGE(refresh, zone->minrefresh,
+				      zone->maxrefresh);
+		zone->retry =3D RANGE(retry, zone->minretry, zone->maxretry);
+		zone->expire =3D RANGE(expire, zone->refresh + zone->retry,
+				     DNS_MAX_EXPIRE);
+		DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_HAVETIMERS);
+	}
 	ZONEDB_UNLOCK(&zone->dblock, isc_rwlocktype_write);
 	dns_db_detach(&stub->db);
=20
-	if (zone->masterfile !=3D NULL) {
-		dns_zone_dump(zone);
-		TIME_NOW(&zone->loadtime);
-	}
-
 	dns_message_destroy(&msg);
 	isc_event_free(&event);
-	LOCK_ZONE(zone);
 	dns_request_destroy(&zone->request);
+
 	DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_REFRESH);
+	DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_LOADED);
 	DNS_ZONE_JITTER_ADD(&now, zone->refresh, &zone->refreshtime);
 	isc_interval_set(&i, zone->expire, 0);
 	DNS_ZONE_TIME_ADD(&now, zone->expire, &zone->expiretime);
+
+	if (zone->masterfile !=3D NULL)
+		zone_needdump(zone, 0);
+
 	zone_settimer(zone, &now);
-	UNLOCK_ZONE(zone);
 	goto free_stub;
=20
  next_master:
@@ -9407,7 +9428,6 @@
 	if (msg !=3D NULL)
 		dns_message_destroy(&msg);
 	isc_event_free(&event);
-	LOCK_ZONE(zone);
 	dns_request_destroy(&zone->request);
 	/*
 	 * Skip to next failed / untried master.
@@ -9445,25 +9465,23 @@
 			DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_REFRESH);
=20
 			zone_settimer(zone, &now);
-			UNLOCK_ZONE(zone);
 			goto free_stub;
 		}
 	}
 	queue_soa_query(zone);
-	UNLOCK_ZONE(zone);
 	goto free_stub;
=20
  same_master:
 	if (msg !=3D NULL)
 		dns_message_destroy(&msg);
 	isc_event_free(&event);
-	LOCK_ZONE(zone);
 	dns_request_destroy(&zone->request);
-	UNLOCK_ZONE(zone);
 	ns_query(zone, NULL, stub);
+	UNLOCK_ZONE(zone);
 	goto done;
=20
  free_stub:
+	UNLOCK_ZONE(zone);
 	stub->magic =3D 0;
 	dns_zone_idetach(&stub->zone);
 	INSIST(stub->db =3D=3D NULL);
@@ -9494,6 +9512,7 @@
 	isc_result_t result;
 	isc_uint32_t serial, oldserial =3D 0;
 	unsigned int j;
+	isc_boolean_t do_queue_xfrin =3D ISC_FALSE;
=20
 	zone =3D revent->ev_arg;
 	INSIST(DNS_ZONE_VALID(zone));
@@ -9502,6 +9521,10 @@
=20
 	ENTER;
=20
+	TIME_NOW(&now);
+
+	LOCK_ZONE(zone);
+
 	/*
 	 * if timeout log and next master;
 	 */
@@ -9509,14 +9532,10 @@
 	isc_sockaddr_format(&zone->masteraddr, master, sizeof(master));
 	isc_sockaddr_format(&zone->sourceaddr, source, sizeof(source));
=20
-	TIME_NOW(&now);
-
 	if (revent->result !=3D ISC_R_SUCCESS) {
 		if (revent->result =3D=3D ISC_R_TIMEDOUT &&
 		    !DNS_ZONE_FLAG(zone, DNS_ZONEFLG_NOEDNS)) {
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
-			UNLOCK_ZONE(zone);
 			dns_zone_log(zone, ISC_LOG_DEBUG(1),
 				     "refresh: timeout retrying without EDNS "
 				     "master %s (source %s)", master, source);
@@ -9536,10 +9555,8 @@
 							     &zone->sourceaddr,
 							     &now))
 				{
-					LOCK_ZONE(zone);
 					DNS_ZONE_SETFLAG(zone,
 						     DNS_ZONEFLG_SOABEFOREAXFR);
-					UNLOCK_ZONE(zone);
 					goto tcp_transfer;
 				}
 				dns_zone_log(zone, ISC_LOG_DEBUG(1),
@@ -9586,9 +9603,7 @@
 				     "refresh: rcode (%.*s) retrying without "
 				     "EDNS master %s (source %s)",
 				     (int)rb.used, rcode, master, source);
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_NOEDNS);
-			UNLOCK_ZONE(zone);
 			goto same_master;
 		}
 		dns_zone_log(zone, ISC_LOG_INFO,
@@ -9614,9 +9629,7 @@
 				     "initiating TCP zone xfer "
 				     "for master %s (source %s)",
 				     master, source);
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_SOABEFOREAXFR);
-			UNLOCK_ZONE(zone);
 			goto tcp_transfer;
 		} else {
 			INSIST(zone->type =3D=3D dns_zone_stub);
@@ -9627,9 +9640,7 @@
 					     master, source);
 				goto next_master;
 			}
-			LOCK_ZONE(zone);
 			DNS_ZONE_SETFLAG(zone, DNS_ZONEFLG_USEVC);
-			UNLOCK_ZONE(zone);
 			goto same_master;
 		}
 	}
@@ -9690,6 +9701,7 @@
 			     soacnt, master, source);
 		goto next_master;
 	}
+
 	/*
 	 * Extract serial
 	 */
@@ -9717,7 +9729,9 @@
=20
 	serial =3D soa.serial;
 	if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_LOADED)) {
-		result =3D dns_zone_getserial2(zone, &oldserial);
+		result =3D zone_get_from_db(zone, zone->db, NULL, NULL,
+					  &oldserial, NULL, NULL, NULL, NULL,
+					  NULL);
 		RUNTIME_CHECK(result =3D=3D ISC_R_SUCCESS);
 		zone_debuglog(zone, me, 1, "serial: new %u, old %u",
 			      serial, oldserial);
@@ -9741,11 +9755,9 @@
 		}
  tcp_transfer:
 		isc_event_free(&event);
-		LOCK_ZONE(zone);
 		dns_request_destroy(&zone->request);
-		UNLOCK_ZONE(zone);
 		if (zone->type =3D=3D dns_zone_slave) {
-			queue_xfrin(zone);
+			do_queue_xfrin =3D ISC_TRUE;
 		} else {
 			INSIST(zone->type =3D=3D dns_zone_stub);
 			ns_query(zone, rdataset, NULL);
@@ -9767,9 +9779,7 @@
 							  &now);
 			/* Someone removed the file from underneath us! */
 			if (result =3D=3D ISC_R_FILENOTFOUND) {
-				LOCK_ZONE(zone);
 				zone_needdump(zone, DNS_DUMP_DELAY);
-				UNLOCK_ZONE(zone);
 			} else if (result !=3D ISC_R_SUCCESS)
 				dns_zone_log(zone, ISC_LOG_ERROR,
 					     "refresh: could not set file "
@@ -9799,7 +9809,6 @@
 	if (msg !=3D NULL)
 		dns_message_destroy(&msg);
 	isc_event_free(&event);
-	LOCK_ZONE(zone);
 	dns_request_destroy(&zone->request);
 	/*
 	 * Skip to next failed / untried master.
@@ -9841,25 +9850,24 @@
 		}
 		DNS_ZONE_CLRFLAG(zone, DNS_ZONEFLG_USEALTXFRSRC);
 		zone_settimer(zone, &now);
-		UNLOCK_ZONE(zone);
 		goto detach;
 	}
=20
  requeue:
 	queue_soa_query(zone);
-	UNLOCK_ZONE(zone);
 	goto detach;
=20
  same_master:
 	if (msg !=3D NULL)
 		dns_message_destroy(&msg);
 	isc_event_free(&event);
-	LOCK_ZONE(zone);
 	dns_request_destroy(&zone->request);
 	queue_soa_query(zone);
-	UNLOCK_ZONE(zone);
=20
  detach:
+	UNLOCK_ZONE(zone);
+	if (do_queue_xfrin)
+		queue_xfrin(zone);
 	dns_zone_idetach(&zone);
 	return;
 }
@@ -10217,13 +10225,13 @@
 	isc_uint16_t udpsize =3D SEND_BUFFER_SIZE;
=20
 	REQUIRE(DNS_ZONE_VALID(zone));
+	REQUIRE(LOCKED_ZONE(zone));
 	REQUIRE((soardataset !=3D NULL && stub =3D=3D NULL) ||
 		(soardataset =3D=3D NULL && stub !=3D NULL));
 	REQUIRE(stub =3D=3D NULL || DNS_STUB_VALID(stub));
=20
 	ENTER;
=20
-	LOCK_ZONE(zone);
 	if (stub =3D=3D NULL) {
 		stub =3D isc_mem_get(zone->mctx, sizeof(*stub));
 		if (stub =3D=3D NULL)
@@ -10414,10 +10422,9 @@
 	}
 	if (message !=3D NULL)
 		dns_message_destroy(&message);
-  unlock:
+ unlock:
 	if (key !=3D NULL)
 		dns_tsigkey_detach(&key);
-	UNLOCK_ZONE(zone);
 	return;
 }
=20
@@ -12597,15 +12604,22 @@
 	zmgr->transfersin =3D 10;
 	zmgr->transfersperns =3D 2;
=20
+	/* Unreachable lock. */
+	result =3D isc_rwlock_init(&zmgr->urlock, 0, 0);
+	if (result !=3D ISC_R_SUCCESS)
+		goto free_rwlock;
+
 	/* Create a single task for queueing of SOA queries. */
 	result =3D isc_task_create(taskmgr, 1, &zmgr->task);
 	if (result !=3D ISC_R_SUCCESS)
-		goto free_rwlock;
+		goto free_urlock;
+
 	isc_task_setname(zmgr->task, "zmgr", zmgr);
 	result =3D isc_ratelimiter_create(mctx, timermgr, zmgr->task,
 					&zmgr->rl);
 	if (result !=3D ISC_R_SUCCESS)
 		goto free_task;
+
 	/* default to 20 refresh queries / notifies per second. */
 	isc_interval_set(&interval, 0, 1000000000/2);
 	result =3D isc_ratelimiter_setinterval(zmgr->rl, &interval);
@@ -12634,6 +12648,8 @@
 	isc_ratelimiter_detach(&zmgr->rl);
  free_task:
 	isc_task_detach(&zmgr->task);
+ free_urlock:
+	isc_rwlock_destroy(&zmgr->urlock);
  free_rwlock:
 	isc_rwlock_destroy(&zmgr->rwlock);
  free_mem:
@@ -12814,7 +12830,6 @@
 		UNLOCK_ZONE(zone);
 	}
 	RWUNLOCK(&zmgr->rwlock, isc_rwlocktype_read);
-
 }
=20
 isc_result_t
@@ -12858,6 +12873,7 @@
 	DESTROYLOCK(&zmgr->iolock);
 	isc_ratelimiter_detach(&zmgr->rl);
=20
+	isc_rwlock_destroy(&zmgr->urlock);
 	isc_rwlock_destroy(&zmgr->rwlock);
 	mctx =3D zmgr->mctx;
 	isc_mem_put(zmgr->mctx, zmgr, sizeof(*zmgr));
@@ -13270,12 +13286,12 @@
 	REQUIRE(DNS_ZONEMGR_VALID(zmgr));
=20
 	locktype =3D isc_rwlocktype_read;
-	RWLOCK(&zmgr->rwlock, locktype);
+	RWLOCK(&zmgr->urlock, locktype);
 	for (i =3D 0; i < UNREACH_CHACHE_SIZE; i++) {
 		if (zmgr->unreachable[i].expire >=3D seconds &&
 		    isc_sockaddr_equal(&zmgr->unreachable[i].remote, remote) &&
 		    isc_sockaddr_equal(&zmgr->unreachable[i].local, local)) {
-			result =3D isc_rwlock_tryupgrade(&zmgr->rwlock);
+			result =3D isc_rwlock_tryupgrade(&zmgr->urlock);
 			if (result =3D=3D ISC_R_SUCCESS) {
 				locktype =3D isc_rwlocktype_write;
 				zmgr->unreachable[i].last =3D seconds;
@@ -13283,7 +13299,7 @@
 			break;
 		}
 	}
-	RWUNLOCK(&zmgr->rwlock, locktype);
+	RWUNLOCK(&zmgr->urlock, locktype);
 	return (ISC_TF(i < UNREACH_CHACHE_SIZE));
 }
=20
@@ -13304,11 +13320,11 @@
 	REQUIRE(DNS_ZONEMGR_VALID(zmgr));
=20
 	locktype =3D isc_rwlocktype_read;
-	RWLOCK(&zmgr->rwlock, locktype);
+	RWLOCK(&zmgr->urlock, locktype);
 	for (i =3D 0; i < UNREACH_CHACHE_SIZE; i++) {
 		if (isc_sockaddr_equal(&zmgr->unreachable[i].remote, remote) &&
 		    isc_sockaddr_equal(&zmgr->unreachable[i].local, local)) {
-			result =3D isc_rwlock_tryupgrade(&zmgr->rwlock);
+			result =3D isc_rwlock_tryupgrade(&zmgr->urlock);
 			if (result =3D=3D ISC_R_SUCCESS) {
 				locktype =3D isc_rwlocktype_write;
 				zmgr->unreachable[i].expire =3D 0;
@@ -13321,7 +13337,7 @@
 			break;
 		}
 	}
-	RWUNLOCK(&zmgr->rwlock, locktype);
+	RWUNLOCK(&zmgr->urlock, locktype);
 }
=20
 void
@@ -13334,7 +13350,7 @@
=20
 	REQUIRE(DNS_ZONEMGR_VALID(zmgr));
=20
-	RWLOCK(&zmgr->rwlock, isc_rwlocktype_write);
+	RWLOCK(&zmgr->urlock, isc_rwlocktype_write);
 	for (i =3D 0; i < UNREACH_CHACHE_SIZE; i++) {
 		/* Existing entry? */
 		if (isc_sockaddr_equal(&zmgr->unreachable[i].remote, remote) &&
@@ -13373,7 +13389,7 @@
 		zmgr->unreachable[oldest].remote =3D *remote;
 		zmgr->unreachable[oldest].local =3D *local;
 	}
-	RWUNLOCK(&zmgr->rwlock, isc_rwlocktype_write);
+	RWUNLOCK(&zmgr->urlock, isc_rwlocktype_write);
 }
=20
 void
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/isc/pthreads/mu=
tex.c
--- a/head/contrib/bind9/lib/isc/pthreads/mutex.c	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/bind9/lib/isc/pthreads/mutex.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2004, 2005, 2007, 2008, 2011  Internet Systems Consortium=
, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007, 2008, 2011, 2012  Internet Systems Cons=
ortium, Inc. ("ISC")
  * Copyright (C) 2000-2002  Internet Software Consortium.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
@@ -78,7 +78,7 @@
 };
=20
 #ifndef ISC_MUTEX_PROFTABLESIZE
-#define ISC_MUTEX_PROFTABLESIZE (16 * 1024)
+#define ISC_MUTEX_PROFTABLESIZE (1024 * 1024)
 #endif
 static isc_mutexstats_t stats[ISC_MUTEX_PROFTABLESIZE];
 static int stats_next =3D 0;
@@ -200,24 +200,24 @@
=20
 	fprintf(fp, "Mutex stats (in us)\n");
 	for (i =3D 0; i < stats_next; i++) {
-		fprintf(fp, "%-12s %4d: %10u  %lu.%06lu %lu.%06lu\n",
+		fprintf(fp, "%-12s %4d: %10u  %lu.%06lu %lu.%06lu %5d\n",
 			stats[i].file, stats[i].line, stats[i].count,
 			stats[i].locked_total.tv_sec,
 			stats[i].locked_total.tv_usec,
 			stats[i].wait_total.tv_sec,
-			stats[i].wait_total.tv_usec
-			);
+			stats[i].wait_total.tv_usec,
+			i);
 		for (j =3D 0; j < ISC_MUTEX_MAX_LOCKERS; j++) {
 			locker =3D &stats[i].lockers[j];
 			if (locker->file =3D=3D NULL)
 				continue;
-			fprintf(fp, " %-11s %4d: %10u  %lu.%06lu %lu.%06lu\n",
+			fprintf(fp, " %-11s %4d: %10u  %lu.%06lu %lu.%06lu %5d\n",
 				locker->file, locker->line, locker->count,
 				locker->locked_total.tv_sec,
 				locker->locked_total.tv_usec,
 				locker->wait_total.tv_sec,
-				locker->wait_total.tv_usec
-				);
+				locker->wait_total.tv_usec,
+				i);
 		}
 	}
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/isccfg/api
--- a/head/contrib/bind9/lib/isccfg/api	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/isccfg/api	Wed Jul 25 16:21:35 2012 +0300
@@ -4,5 +4,5 @@
 # 9.8: 80-89
 # 9.9: 90-109
 LIBINTERFACE =3D 82
-LIBREVISION =3D 1
+LIBREVISION =3D 2
 LIBAGE =3D 0
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/lib/isccfg/parser.c
--- a/head/contrib/bind9/lib/isccfg/parser.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/lib/isccfg/parser.c	Wed Jul 25 16:21:35 2012 +0300
@@ -2232,16 +2232,30 @@
=20
 #define MAX_LOG_TOKEN 30 /* How much of a token to quote in log messages. =
*/
=20
+static isc_boolean_t
+have_current_file(cfg_parser_t *pctx) {
+	cfg_listelt_t *elt;
+	if (pctx->open_files =3D=3D NULL)
+		return (ISC_FALSE);
+
+	elt =3D ISC_LIST_TAIL(pctx->open_files->value.list);
+	if (elt =3D=3D NULL)
+	      return (ISC_FALSE);
+
+	return (ISC_TRUE);
+}
+
 static char *
 current_file(cfg_parser_t *pctx) {
 	static char none[] =3D "none";
 	cfg_listelt_t *elt;
 	cfg_obj_t *fileobj;
=20
-	if (pctx->open_files =3D=3D NULL)
+	if (!have_current_file(pctx))
 		return (none);
+
 	elt =3D ISC_LIST_TAIL(pctx->open_files->value.list);
-	if (elt =3D=3D NULL)
+	if (elt =3D=3D NULL)	/* shouldn't be possible, but... */
 	      return (none);
=20
 	fileobj =3D elt->obj;
@@ -2264,8 +2278,10 @@
 	if (is_warning)
 		level =3D ISC_LOG_WARNING;
=20
-	snprintf(where, sizeof(where), "%s:%u: ",
-		 current_file(pctx), pctx->line);
+	where[0] =3D '\0';
+	if (have_current_file(pctx))
+		snprintf(where, sizeof(where), "%s:%u: ",
+			 current_file(pctx), pctx->line);
=20
 	len =3D vsnprintf(message, sizeof(message), format, args);
 	if (len >=3D sizeof(message))
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bind9/version
--- a/head/contrib/bind9/version	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bind9/version	Wed Jul 25 16:21:35 2012 +0300
@@ -5,6 +5,6 @@
 #
 MAJORVER=3D9
 MINORVER=3D8
-PATCHVER=3D2
-RELEASETYPE=3D
-RELEASEVER=3D
+PATCHVER=3D3
+RELEASETYPE=3D-P
+RELEASEVER=3D2
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/gas/config/tc-i3=
86.c
--- a/head/contrib/binutils/gas/config/tc-i386.c	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/binutils/gas/config/tc-i386.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -517,7 +517,9 @@
   {".sse4a", PROCESSOR_UNKNOWN,
    CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuSSE4a},
   {".abm", PROCESSOR_UNKNOWN,
-   CpuABM}
+   CpuABM},
+  {".xsave", PROCESSOR_UNKNOWN,
+   CpuXSAVE}
 };
=20
 const pseudo_typeS md_pseudo_table[] =3D
@@ -3988,6 +3990,16 @@
 	      goto check_prefix;
 	    }
 	}
+      else if (i.tm.base_opcode =3D=3D 0x660f3880 || i.tm.base_opcode =3D=
=3D 0x660f3881)
+	{
+	  /* invept and invvpid are 3 byte instructions with a
+	     mandatory prefix. */
+	  if (i.tm.base_opcode & 0xff000000)
+	    {
+	      prefix =3D (i.tm.base_opcode >> 24) & 0xff;
+	      add_prefix (prefix);
+	    }
+	}
       else if ((i.tm.base_opcode & 0xff0000) !=3D 0)
 	{
 	  prefix =3D (i.tm.base_opcode >> 16) & 0xff;
@@ -4027,6 +4039,12 @@
 	      p =3D frag_more (3);
 	      *p++ =3D (i.tm.base_opcode >> 16) & 0xff;
 	    }
+	  else if (i.tm.base_opcode =3D=3D 0x660f3880 ||
+		   i.tm.base_opcode =3D=3D 0x660f3881)
+	    {
+	      p =3D frag_more (3);
+	      *p++ =3D (i.tm.base_opcode >> 16) & 0xff;
+	    }
 	  else
 	    p =3D frag_more (2);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/ld/emultempl/ppc=
32elf.em
--- a/head/contrib/binutils/ld/emultempl/ppc32elf.em	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/binutils/ld/emultempl/ppc32elf.em	Wed Jul 25 16:21:35 20=
12 +0300
@@ -119,7 +119,40 @@
 	    }
 	}
     }
+
   gld${EMULATION_NAME}_before_allocation ();
+
+  /* Turn on relaxation if executable sections have addresses that
+     might make branches overflow.  */
+  if (!command_line.relax)
+    {
+      bfd_vma low =3D (bfd_vma) -1;
+      bfd_vma high =3D 0;
+      asection *o;
+
+      /* Run lang_size_sections (if not already done).  */
+      if (expld.phase !=3D lang_mark_phase_enum)
+	{
+	  expld.phase =3D lang_mark_phase_enum;
+	  expld.dataseg.phase =3D exp_dataseg_none;
+	  one_lang_size_sections_pass (NULL, FALSE);
+	  lang_reset_memory_regions ();
+	}
+
+      for (o =3D output_bfd->sections; o !=3D NULL; o =3D o->next)
+	{
+	  if ((o->flags & (SEC_ALLOC | SEC_CODE)) !=3D (SEC_ALLOC | SEC_CODE))
+	    continue;
+	  if (o->rawsize =3D=3D 0)
+	    continue;
+	  if (low > o->vma)
+	    low =3D o->vma;
+	  if (high < o->vma + o->rawsize - 1)
+	    high =3D o->vma + o->rawsize - 1;
+	}
+      if (high > low && high - low > (1 << 25) - 1)
+	command_line.relax =3D TRUE;
+    }
 }
=20
 EOF
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/opcodes/i386-dis=
.c
--- a/head/contrib/binutils/opcodes/i386-dis.c	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/binutils/opcodes/i386-dis.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -93,6 +93,7 @@
 static void OP_SIMD_Suffix (int, int);
 static void SIMD_Fixup (int, int);
 static void PNI_Fixup (int, int);
+static void XCR_Fixup (int, int);
 static void SVME_Fixup (int, int);
 static void INVLPG_Fixup (int, int);
 static void BadOp (void);
@@ -212,6 +213,7 @@
 #define Ew { OP_E, w_mode }
 #define M { OP_M, 0 }		/* lea, lgdt, etc. */
 #define Ma { OP_M, v_mode }
+#define Mo { OP_M, o_mode }
 #define Mp { OP_M, f_mode }		/* 32 or 48 bit memory operand for LDS, LES e=
tc */
 #define Mq { OP_M, q_mode }
 #define Gb { OP_G, b_mode }
@@ -539,6 +541,8 @@
 #define PREGRP95  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 95 } }
 #define PREGRP96  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 96 } }
 #define PREGRP97  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 97 } }
+#define PREGRP98  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 98 } }
+#define PREGRP99  NULL, { { NULL, USE_PREFIX_USER_TABLE }, { NULL, 99 } }
=20
=20
 #define X86_64_0  NULL, { { NULL, X86_64_SPECIAL }, { NULL, 0 } }
@@ -1693,7 +1697,7 @@
   {
     { "sgdt{Q|IQ||}", { { VMX_Fixup, 0 } } },
     { "sidt{Q|IQ||}", { { PNI_Fixup, 0 } } },
-    { "lgdt{Q|Q||}",	 { M } },
+    { "lgdt{Q|Q||}",	 { { XCR_Fixup, 0 }  } },
     { "lidt{Q|Q||}",	 { { SVME_Fixup, 0 } } },
     { "smswD",	{ Sv } },
     { "(bad)",	{ XX } },
@@ -1783,9 +1787,9 @@
     { "fxrstor",	{ Ev } },
     { "ldmxcsr",	{ Ev } },
     { "stmxcsr",	{ Ev } },
-    { "(bad)",		{ XX } },
-    { "lfence",		{ { OP_0fae, 0 } } },
-    { "mfence",		{ { OP_0fae, 0 } } },
+    { "xsave",		{ Ev } },
+    { "xrstor",		{ { OP_0fae, v_mode } } },
+    { "xsaveopt",	{ { OP_0fae, v_mode } } },
     { "clflush",	{ { OP_0fae, 0 } } },
   },
   /* GRP16 */
@@ -2585,6 +2589,22 @@
     { "punpckldq",{ MX, EMq } },
     { "(bad)",	{ XX } },
   },
+
+  /* PREGRP98 */
+  {
+    { "(bad)",	{ XX } },
+    { "(bad)",	{ XX } },
+    { "invept",	{ Gm, Mo } },
+    { "(bad)",	{ XX } },
+  },
+
+  /* PREGRP99 */
+  {
+    { "(bad)",	{ XX } },
+    { "(bad)",	{ XX } },
+    { "invvpid",{ Gm, Mo } },
+    { "(bad)",	{ XX } },
+  },
 };
=20
 static const struct dis386 x86_64_table[][2] =3D {
@@ -2754,8 +2774,8 @@
     { "(bad)", { XX } },
     { "(bad)", { XX } },
     /* 80 */
-    { "(bad)", { XX } },
-    { "(bad)", { XX } },
+    { PREGRP98 },
+    { PREGRP99 },
     { "(bad)", { XX } },
     { "(bad)", { XX } },
     { "(bad)", { XX } },
@@ -5883,7 +5903,7 @@
 OP_M (int bytemode, int sizeflag)
 {
   if (modrm.mod =3D=3D 3)
-    /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */
+    /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst,invept,invvpid =
modrm */
     BadOp ();
   else
     OP_E (bytemode, sizeflag);
@@ -5905,17 +5925,17 @@
     {
       if (modrm.reg =3D=3D 7)
 	strcpy (obuf + strlen (obuf) - sizeof ("clflush") + 1, "sfence");
+      else if (modrm.reg =3D=3D 6)
+	strcpy (obuf + strlen (obuf) - sizeof ("xsaveopt") + 1, "mfence");
+      else if (modrm.reg =3D=3D 5)
+	strcpy (obuf + strlen (obuf) - sizeof ("xrstor") + 1, "lfence");
=20
       if (modrm.reg < 5 || modrm.rm !=3D 0)
 	{
 	  BadOp ();	/* bad sfence, mfence, or lfence */
 	  return;
 	}
-    }
-  else if (modrm.reg !=3D 7)
-    {
-      BadOp ();		/* bad clflush */
-      return;
+      bytemode =3D 0;
     }
=20
   OP_E (bytemode, sizeflag);
@@ -6170,6 +6190,43 @@
 }
=20
 static void
+XCR_Fixup (int extrachar ATTRIBUTE_UNUSED, int sizeflag)
+{
+  if (modrm.mod =3D=3D 3 && modrm.reg =3D=3D 2 && modrm.rm <=3D 1)
+    {
+      /* Override "lgdt".  */
+      size_t olen =3D strlen (obuf);
+      char *p =3D obuf + olen - 4;
+
+      /* We might have a suffix when disassembling with -Msuffix.  */
+      if (*p =3D=3D 'i')
+	--p;
+
+      /* Remove "addr16/addr32" if we aren't in Intel mode.  */
+      if (!intel_syntax
+	  && (prefixes & PREFIX_ADDR)
+	  && olen >=3D (4 + 7)
+	  && *(p - 1) =3D=3D ' '
+	  && CONST_STRNEQ (p - 7, "addr")
+	  && (CONST_STRNEQ (p - 3, "16")
+	      || CONST_STRNEQ (p - 3, "32")))
+	p -=3D 7;
+
+      if (modrm.rm)
+	{
+	  strcpy (p, "xsetbv");
+	}
+      else
+	{
+	  strcpy (p, "xgetbv");
+	}
+
+      codep++;
+    }
+  else
+    OP_M (0, sizeflag);
+}
+static void
 SVME_Fixup (int bytemode, int sizeflag)
 {
   const char *alt;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/opcodes/i386-opc=
.h
--- a/head/contrib/binutils/opcodes/i386-opc.h	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/binutils/opcodes/i386-opc.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -71,6 +71,7 @@
 #define CpuABM       0x200000   /* ABM New Instructions required */
 #define CpuSSE4_1    0x400000	/* SSE4.1 Instructions required */
 #define CpuSSE4_2    0x800000	/* SSE4.2 Instructions required */
+#define CpuXSAVE    0x1000000	/* XSAVE Instructions required */
=20
 /* SSE4.1/4.2 Instructions required */
 #define CpuSSE4	     (CpuSSE4_1|CpuSSE4_2)
@@ -83,7 +84,7 @@
 #define CpuUnknownFlags (Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686 \
 	|CpuP4|CpuSledgehammer|CpuMMX|CpuMMX2|CpuSSE|CpuSSE2|CpuSSE3|CpuVMX \
 	|Cpu3dnow|Cpu3dnowA|CpuK6|CpuPadLock|CpuSVME|CpuSSSE3|CpuSSE4_1 \
-	|CpuSSE4_2|CpuABM|CpuSSE4a)
+	|CpuSSE4_2|CpuABM|CpuSSE4a|CpuXSAVE)
=20
   /* the bits in opcode_modifier are used to generate the final opcode from
      the base_opcode.  These bits also are used to detect alternate forms =
of
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/opcodes/i386-opc=
.tbl
--- a/head/contrib/binutils/opcodes/i386-opc.tbl	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/binutils/opcodes/i386-opc.tbl	Wed Jul 25 16:21:35 2012 +=
0300
@@ -1289,6 +1289,10 @@
 mwait, 2, 0xf01, 0xc9, CpuSSE3|Cpu64, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_q=
Suf|No_xSuf|ImmExt|NoRex64, { Reg64, Reg64 }
=20
 // VMX instructions.
+invept, 2, 0x660f3880, None, CpuVMX|CpuNo64, Modrm|IgnoreSize|No_bSuf|No_w=
Suf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32=
S, Reg32 }
+invept, 2, 0x660f3880, None, CpuVMX|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSu=
f|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S,=
 Reg64 }
+invvpid, 2, 0x660f3881, None, CpuVMX|CpuNo64, Modrm|IgnoreSize|No_bSuf|No_=
wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp3=
2S, Reg32 }
+invvpid, 2, 0x660f3881, None, CpuVMX|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wS=
uf|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S=
, Reg64 }
 vmcall, 0, 0xf01, 0xc1, CpuVMX, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No=
_xSuf|ImmExt, { 0 }
 vmclear, 1, 0x660fc7, 0x6, CpuVMX, Modrm|IgnoreSize|No_bSuf|No_wSuf|No_lSu=
f|No_sSuf|No_qSuf|No_xSuf|NoRex64, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
 vmlaunch, 0, 0xf01, 0xc2, CpuVMX, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|=
No_xSuf|ImmExt, { 0 }
@@ -1487,3 +1491,10 @@
 xcryptofb, 0, 0xf30fa7, 0xe8, Cpu686|CpuPadLock, No_bSuf|No_wSuf|No_lSuf|N=
o_sSuf|No_qSuf|No_xSuf|IsString|ImmExt, { 0 }
 // Alias for xstore-rng.
 xstore, 0, 0xfa7, 0xc0, Cpu686|CpuPadLock, No_bSuf|No_wSuf|No_lSuf|No_sSuf=
|No_qSuf|No_xSuf|IsString|ImmExt, { 0 }
+
+// XSAVE/XRSTOR related instructions
+xgetbv, 0, 0xf01, 0xd0, CpuXSAVE, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|=
No_xSuf|ImmExt, { 0 }
+xsetbv, 0, 0xf01, 0xd1, CpuXSAVE, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|=
No_xSuf|ImmExt, { 0 }
+xsave, 1, 0xfae, 0x4, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_x=
Suf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
+xsaveopt, 1, 0xfae, 0x6, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|N=
o_xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
+xrstor, 1, 0xfae, 0x5, CpuXSAVE, Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_=
xSuf, { BaseIndex|Disp8|Disp16|Disp32|Disp32S }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/binutils/opcodes/i386-tbl=
.h
--- a/head/contrib/binutils/opcodes/i386-tbl.h	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/binutils/opcodes/i386-tbl.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -3625,6 +3625,22 @@
     No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt|NoRex64,
     { Reg64,
       Reg64 } },
+  { "invept", 2, 0x660f3880, None, CpuVMX|CpuNo64,
+    Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+      Reg32 } },
+  { "invept", 2, 0x660f3880, None, CpuVMX|Cpu64,
+    Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+      Reg64 } },
+  { "invvpid", 2, 0x660f3881, None, CpuVMX|CpuNo64,
+    Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+      Reg32 } },
+  { "invvpid", 2, 0x660f3881, None, CpuVMX|Cpu64,
+    Modrm|IgnoreSize|No_bSuf|No_wSuf|No_sSuf|No_qSuf|No_xSuf|NoRex64,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S,
+      Reg64 } },
   { "vmcall", 0, 0xf01, 0xc1, CpuVMX,
     No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
     { 0 } },
@@ -4288,6 +4304,21 @@
   { "xstore", 0, 0xfa7, 0xc0, Cpu686|CpuPadLock,
     No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|IsString|ImmExt,
     { 0 } },
+  { "xgetbv", 0, 0xf01, 0xd0, CpuXSAVE,
+    No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
+    { 0 } },
+  { "xsetbv", 0, 0xf01, 0xd1, CpuXSAVE,
+    No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_xSuf|ImmExt,
+    { 0 } },
+  { "xsave", 1, 0xfae, 0x4, CpuXSAVE,
+    Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
+  { "xsaveopt", 1, 0xfae, 0x6, CpuXSAVE,
+    Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
+  { "xrstor", 1, 0xfae, 0x5, CpuXSAVE,
+    Modrm|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf,
+    { BaseIndex|Disp8|Disp16|Disp32|Disp32S } },
   { NULL, 0, 0, 0, 0, 0, { 0 } }
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/lib/bsnmpclient.3
--- a/head/contrib/bsnmp/lib/bsnmpclient.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bsnmp/lib/bsnmpclient.3	Wed Jul 25 16:21:35 2012 +0300
@@ -368,7 +368,7 @@
 and appends the length of the string (as computed by
 .Xr strlen 3 )
 and each of the characters in the string to the OID.
-.It Li ( Va N Ns Li )
+.It ( Va N Ns )
 This format expects no argument.
 .Va N
 must be a decimal number and is stored into an internal variable
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/lib/bsnmplib.3
--- a/head/contrib/bsnmp/lib/bsnmplib.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bsnmp/lib/bsnmplib.3	Wed Jul 25 16:21:35 2012 +0300
@@ -161,7 +161,6 @@
 .Fa v.octetstring.octets
 points to a string allocated by
 .Xr malloc 3 .
-.Pp
 .Bd -literal -offset indent
 #define	SNMP_ENGINE_ID_SIZ		32
=20
@@ -176,7 +175,6 @@
 .Pp
 This structure represents an SNMP engine as specified by the SNMP Manageme=
nt
 Architecture described in RFC 3411.
-.Pp
 .Bd -literal -offset indent
 #define	SNMP_ADM_STR32_SIZ		(32 + 1)
 #define	SNMP_AUTH_KEY_SIZ		40
@@ -225,7 +223,6 @@
 and
 .Fa priv_key
 contain the authentication and privacy keys for the user.
-.Pp
 .Bd -literal -offset indent
 #define SNMP_COMMUNITY_MAXLEN		128
 #define SNMP_MAX_BINDINGS		100
@@ -389,7 +386,7 @@
 The function
 .Fn snmp_pdu_init_secparams
 calculates the initialization vector for the privacy protocol in use before
-the PDU pointed to by=20
+the PDU pointed to by
 .Fa pdu
 may be encrypted or decrypted.
 .Pp
@@ -504,7 +501,7 @@
 The library may optionally be built without references to the
 .Xr crypto 3
 library. In such case only plain text SNMPv3 PDUs without message digests
-may be proccessed correctly.=20
+may be proccessed correctly.
 .Sh STANDARDS
 This implementation conforms to the applicable IETF RFCs and ITU-T
 recommendations.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/snmp_mibII/mibII_tc=
p.c
--- a/head/contrib/bsnmp/snmp_mibII/mibII_tcp.c	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/bsnmp/snmp_mibII/mibII_tcp.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -109,10 +109,12 @@
              ptr =3D (struct xinpgen *)(void *)((char *)ptr + ptr->xig_len=
)) {
 		tp =3D (struct xtcpcb *)ptr;
 		if (tp->xt_inp.inp_gencnt > xinpgen->xig_gen ||
-		    (tp->xt_inp.inp_vflag & INP_IPV4) =3D=3D 0)
+		    (tp->xt_inp.inp_vflag & (INP_IPV4|INP_IPV6)) =3D=3D 0)
 			continue;
=20
-		tcp_total++;
+		if (tp->xt_inp.inp_vflag & INP_IPV4)
+			tcp_total++;
+
 		if (tp->xt_tp.t_state =3D=3D TCPS_ESTABLISHED ||
 		    tp->xt_tp.t_state =3D=3D TCPS_CLOSE_WAIT)
 			tcp_count++;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/snmp_target/snmp_ta=
rget.3
--- a/head/contrib/bsnmp/snmp_target/snmp_target.3	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/bsnmp/snmp_target/snmp_target.3	Wed Jul 25 16:21:35 2012=
 +0300
@@ -26,14 +26,14 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD$
+.\" $FreeBSD: head/contrib/bsnmp/snmp_target/snmp_target.3 237193 2012-06-=
17 11:33:55Z joel $
 .\"
 .Dd December 16, 2010
 .Dt SNMP_TARGET 3
 .Os
 .Sh NAME
 .Nm snmp_target
-.Nd "Target addresses and notifications module for
+.Nd "Target addresses and notifications module for"
 .Xr bsnmpd 1
 .Sh LIBRARY
 .Pq begemotSnmpdModulePath."target" =3D "/usr/lib/snmp_target.so"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/snmp_usm/snmp_usm.3
--- a/head/contrib/bsnmp/snmp_usm/snmp_usm.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/bsnmp/snmp_usm/snmp_usm.3	Wed Jul 25 16:21:35 2012 +0300
@@ -26,14 +26,14 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/contrib/bsnmp/snmp_usm/snmp_usm.3 224584 2011-08-01 22:=
21:18Z uqs $
+.\" $FreeBSD: head/contrib/bsnmp/snmp_usm/snmp_usm.3 237194 2012-06-17 11:=
36:28Z joel $
 .\"
 .Dd September 9, 2010
 .Dt SNMP_USM 3
 .Os
 .Sh NAME
 .Nm snmp_usm
-.Nd "user-based security module for
+.Nd "user-based security module for"
 .Xr bsnmpd 1
 .Sh LIBRARY
 .Pq begemotSnmpdModulePath."usm" =3D "/usr/lib/snmp_usm.so"
@@ -57,7 +57,7 @@
 altering the SNMP USM users.
 .It Va usmUserTable
 The table contains all SNMP USM users configured in
-.Nm bsnmpd.
+.Nm bsnmpd .
 The table contains the following objects
 .Bl -tag -width ".It Va usmUserEngineID"
 .It Va usmUserEngineID
@@ -79,7 +79,7 @@
 .It Va usmUserAuthProtocol
 The value of this column contains the OID corresponding to the authenticat=
ion
 protocol used by the USM user. The following protocols and their OIDs are =
known to
-.Nm=20
+.Nm
 module
 .Bl -tag -width ".It Va NoAuthProtocol"
 .It NoAuthProtocol 1.3.6.1.6.3.10.1.1.1
@@ -91,7 +91,7 @@
 .It Va usmUserPrivProtocol
 The value of this column contains the OID corresponding to the privacy
 protocol used by the USM user. The following protocols and their OIDs are =
known to
-.Nm=20
+.Nm
 module
 .Bl -tag -width ".It Va NoPrivProtocol"
 .It NoPrivProtocol 1.3.6.1.6.3.10.1.2.1
@@ -102,7 +102,7 @@
 These columns may be used to change the user's privacy key.
 .It Va usmUserPublic
 An arbitrary octet string that may be modified to confirm a SET operation =
on any
-of the columns was successfull.
+of the columns was successful.
 .It Va usmUserStorageType
 This column always has either of two values. Entries created via
 .Nm bsnmpd's
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/bsnmp/snmp_vacm/snmp_vacm=
.3
--- a/head/contrib/bsnmp/snmp_vacm/snmp_vacm.3	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/bsnmp/snmp_vacm/snmp_vacm.3	Wed Jul 25 16:21:35 2012 +03=
00
@@ -26,14 +26,14 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD$
+.\" $FreeBSD: head/contrib/bsnmp/snmp_vacm/snmp_vacm.3 237193 2012-06-17 1=
1:33:55Z joel $
 .\"
 .Dd October 7, 2010
 .Dt SNMP_VACM 3
 .Os
 .Sh NAME
 .Nm snmp_vacm
-.Nd "View-based Access Control module for
+.Nd "View-based Access Control module for"
 .Xr bsnmpd 1
 .Sh LIBRARY
 .Pq begemotSnmpdModulePath."vacm" =3D "/usr/lib/snmp_vacm.so"
@@ -76,7 +76,7 @@
 .It Va vacmViewTreeFamilyTable
 The table contains a list of SNMP views, i.e. entries specifying the OID o=
f a
 MIB subtree and whether access to the objects under this subtree is to be
-allowed or forbiden.
+allowed or forbidden.
 .El
 .Sh FILES
 .Bl -tag -width "XXXXXXXXX"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/ACKNOWLEDGEMENTS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/ACKNOWLEDGEMENTS	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,25 @@
+     Berkeley Yacc owes much to the unflagging efforts of Keith Bostic.
+His badgering kept me working on it long after I was ready to quit.
+
+     Berkeley Yacc is based on the excellent algorithm for computing LALR(=
1)
+lookaheads developed by Tom Pennello and Frank DeRemer.  The algorithm is
+described in their almost impenetrable article in TOPLAS 4,4.
+
+     Finally, much of the credit for the latest version must go to those
+who pointed out deficiencies of my earlier releases.  Among the most
+prolific contributors were
+
+	  Benson I. Margulies
+	  Dave Gentzel
+	  Antoine Verheijen
+	  Peter S. Housel
+	  Dale Smith
+	  Ozan Yigit
+	  John Campbell
+	  Bill Sommerfeld
+	  Paul Hilfinger
+	  Gary Bridgewater
+	  Dave Bakken
+	  Dan Lanciani
+	  Richard Sargent
+	  Parag Patel
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/AUTHORS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/AUTHORS	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,7 @@
+-- $Id: AUTHORS,v 1.1 2010/06/06 20:31:51 tom Exp $
+-- vile:txtmode
+-- This file is used by a script that collects contributor information and
+-- resolves nicknames vs fullnames.
+dickey	Thomas Dickey
+schmitz	Sylvain Schmitz
+unknown	Robert Corbett
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/CHANGES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/CHANGES	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1156 @@
+2012-01-15  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/copyright: bump
+
+	* test/run_make.sh: workaround for breakage due to GNU make 3.82
+
+	* test/run_make.sh:
+	tested with Solaris 10 (bison 1.875) and added scripting to exercise
+	the /usr/ccs/bin/yacc executable
+
+	* test/grammar.tab.c: regen
+
+	* test/grammar.y: modify to also build with Solaris yacc
+
+	* VERSION, package/debian/changelog, package/byacc.spec: bump
+
+	* test/calc1.output, test/calc1.tab.c: regen
+
+	* test/calc1.y:
+	undo the change made to appease bison, since it was only a warning.
+
+	* test/pure_calc.tab.c, test/pure_error.tab.c: regen
+
+	* test/run_make.sh: another fix for running from top-level directory
+
+	* makefile.in:
+	ensure that check_make rule depends on having byacc built.
+
+	* test/run_make.sh: fixes for building from parent directory
+
+	* test/pure_error.y, test/pure_calc.y: bison-fixes
+
+	* test/calc2.tab.c, test/calc3.tab.c, test/code_error.code.c, test/ftp.ta=
b.c, test/pure_calc.tab.c, test/pure_error.tab.c:
+	regen
+
+	* test/calc2.y, test/calc3.y, test/code_error.y, test/ftp.y:
+	byacc already declares yyerror
+
+	* test/pure_error.y, test/pure_calc.y:
+	modified to help make the files build with bison
+
+	* test/run_make.sh:
+	supply a "%pure-parser" directive when bison needs it.
+
+	* test/code_calc.code.c: regen
+
+	* test/code_calc.y: modified to help make the files build with bison
+
+	* yacc.1:
+	in testing, found that %expect did not work as documented for bison.
+	do not recommend it for portable code.
+
+	* test/run_make.sh: workaround breakage in bison's %expect directive
+
+	* test/grammar.y: modified to help make the files build with bison
+
+	* test/calc1.output, test/calc1.tab.c, test/grammar.tab.c: regen
+
+	* test/calc1.y: quiet a spurious warning from bison 2.3
+
+	* test/calc1.tab.c: regen
+
+	* test/calc1.y: modified to help make the files build with bison
+
+	* yacc.1: comment on "-y" and "-P" options.
+
+	* yacc.1: comment on portability
+
+	* test/ftp.tab.c, test/quote_calc-s.tab.c, test/quote_calc.tab.c, test/qu=
ote_calc2-s.tab.c, test/quote_calc3-s.tab.c:
+	regen
+
+	* test/ftp.y: modified to help make the files build with bison
+	(bison's "-y" option is of no use in providing "yacc" compatibility)
+
+	* test/quote_calc2.tab.c, test/quote_calc3.tab.c, test/quote_calc4-s.tab.=
c, test/quote_calc4.tab.c:
+	regen
+
+	* test/code_calc.y, test/quote_calc2.y, test/quote_calc.y, test/quote_cal=
c4.y, test/quote_calc3.y:
+	modified to help make the files build with bison
+
+	* test/calc.tab.c: regen
+
+	* test/calc.y: modified to help make the files build with bison
+
+	* test/error.tab.c: regen
+
+	* test/error.y: modified to help make the files build with bison
+
+	* test/calc2.tab.c, test/calc3.tab.c, test/code_error.code.c: regen
+
+	* test/run_make.sh:
+	check for older bisons which (2.3 for instance) do not support pure parse=
rs
+
+	* test/code_error.y, test/calc3.y, test/calc2.y:
+	modified to help make the files build with bison
+
+	* test/run_test.sh: use $opt2 in filenames of the generated files
+
+	* test/quote_calc2-s.tab.c, test/quote_calc3-s.tab.c, test/quote_calc4-s.=
tab.c, test/quote_calc-s.tab.c, test/quote_calc.tab.c, test/quote_calc2.tab=
.c, test/quote_calc3.tab.c, test/quote_calc4.tab.c:
+	regen
+
+2012-01-14  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/calc2.tab.c, test/code_calc.code.c, test/code_error.code.c, test/e=
rror.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c, test/calc1=
.tab.c:
+	regen
+
+	* output.c: Several changes:
+		a) add YYLEX_PARAM_TYPE, like YYPARSE_PARAM_TYPE, but for yylex.
+		b) modify definitions for YYLEX_DECL to be more like YYPARSE_DECL,
+		   using YYLEX_PARAM_TYPE and YYLEX_PARAM.
+		c) add ifdef's around #define's for YYERROR_DECL and YYERROR_CALL,
+		   to help with redefinitions.
+
+	* test/pure_calc.tab.c:
+	modified to help make the files build with bison
+
+	* test/run_make.sh:
+	start work on followup, to check if the generated files build with bison.
+
+	* test/pure_calc.y, test/pure_error.tab.c:
+	modified to help make the files build with bison
+
+	* test/calc3.tab.c: regen
+
+	* test/quote_calc-s.output, test/quote_calc-s.tab.c, test/quote_calc-s.ta=
b.h, test/quote_calc2-s.output, test/quote_calc2-s.tab.c, test/quote_calc2-=
s.tab.h, test/quote_calc3-s.output, test/quote_calc3-s.tab.c, test/quote_ca=
lc3-s.tab.h, test/quote_calc4-s.output, test/quote_calc4-s.tab.c, test/quot=
e_calc4-s.tab.h:
+	RCS_BASE
+
+	* test/run_test.sh: generate/test with "-s" option applied.
+
+2012-01-13  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+	* yacc.1: improve documentation of -s option
+
+	* yacc.1: note that yacc ignores -y
+
+	* main.c: add -s option to usage message.
+
+	* test/quote_calc3.output, test/quote_calc3.tab.c, test/quote_calc4.outpu=
t, test/quote_calc4.tab.c, test/quote_calc4.tab.h, test/quote_calc3.y, test=
/quote_calc.tab.h, test/quote_calc.output, test/quote_calc.tab.c, test/quot=
e_calc2.output, test/quote_calc2.tab.c, test/quote_calc2.tab.h, test/quote_=
calc3.tab.h, test/quote_calc4.y, test/quote_calc.y, test/quote_calc2.y:
+	RCS_BASE
+
+	* configure: regen
+
+	* aclocal.m4: resync with my-autoconf, i.e., fixes for CF_XOPEN_SOURCE
+
+2011-12-19  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+	* yacc.1, output.c, main.c, defs.h:
+	add "-s" option to suppress generating #define's based on string contents
+	in a %token statement.  For instance
+		%token EQLS "Equals"
+	would generate
+		#define EQLS 256
+		#define Equals 257
+	Simply suppressing the second #define makes the behavior closer to yacc.
+	(report by Paulo Andrade).
+
+2011-09-08  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+	* output.c:
+	fix some more interaction between -i and -d flags to ensure YYERRCODE
+	and YYSTYPE are declared, tested with cproto.
+
+2011-09-07  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* yacc.1: document "-i" option.
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+	* output.c: fix an interaction between -i and -d
+
+	* test/code_error.code.c, test/error.tab.c, test/ftp.tab.c, test/grammar.=
tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, test/calc.tab.c, test/c=
alc1.tab.c, test/calc2.tab.c, test/calc3.tab.c, test/code_calc.code.c:
+	regen - changes for "-i" option move the global/impure variables near the
+	macros that may add a prefix, etc.
+
+	* skeleton.c, output.c, defs.h: changes to support "-i" option.
+
+2011-09-06  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* reader.c: pass explicit file-pointer to write_section()
+
+	* main.c:
+	add "-i" option, to generate interface-file (suggested by Denis M. Wilson)
+
+2011-09-05  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* configure: regen
+
+	* aclocal.m4:
+	resync with my-autoconf: CF_ANSI_CC_CHECK (check for $CFLAGS in $CC)
+	and CF_XOPEN_SOURCE (update aix, cygwin and netbsd checks)
+
+	* defs.h, error.c, reader.c:
+	add check for missing "}" on %parse-param and %lex-param lines (report by=
 Denis M Wilson)
+
+2011-04-01  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: 2011-04-01
+
+2011-02-02  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess: 2011-01-01
+
+2010-12-29  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* defs.h, skeleton.c:
+	add const qualifier to skeleton data, per NetBSD changes (report by Chris=
tos Zoulas)
+
+	* defs.h:
+	mark all of the error-functions as non-returning (report by Christos Zoul=
as)
+
+	* test/grammar.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, test/c=
alc.tab.c, test/calc1.tab.c, test/calc2.tab.c, test/calc3.tab.c, test/code_=
calc.code.c, test/code_error.code.c, test/error.tab.c, test/ftp.tab.c:
+	regen
+
+	* skeleton.c:
+	use only realloc() rather than realloc+malloc, agree that systems needing=
 this
+	are very rare (prompted by NetBSD change).
+
+	* test/ftp.tab.c: regen
+
+2010-12-29  Christos.Zoulas
+
+	* test/ftp.y:
+	improve example, which was stuck in 19XX and assumed file sizes were long=
s.
+
+2010-12-29  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/ftp.tab.c, test/grammar.tab.c, test/pure_calc.tab.c, test/pure_err=
or.tab.c, test/calc.tab.c, test/calc1.tab.c, test/calc2.tab.c, test/calc3.t=
ab.c, test/code_calc.code.c, test/code_error.code.c, test/error.tab.c:
+	regen
+
+	* test/pure_error.y, test/pure_calc.y, test/ftp.y, test/error.y, test/cod=
e_error.y, test/code_calc.y, test/calc.y, test/calc3.y, test/calc2.y, test/=
calc1.y:
+	use byacc's YYLEX_DECL/YYERROR_DECL symbols to prototype yylex/yyerror
+
+	* skeleton.c:
+	remove explicit prototype for yylex() via YYLEX_DECL() macro, since that
+	would prevent declaring yylex() static (request by Christos Zoulas).
+
+	* test/calc2.tab.c, test/calc3.tab.c: regen
+
+2010-12-29  Christos.Zoulas
+
+	* output.c: correct definition for YYERROR_DECL()
+
+2010-12-29  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+2010-12-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* defs.h, main.c:
+	change return-type of allocate() to avoid warnings of alignment problems
+
+	* main.c: Solaris declares chmod() in <sys/stat.h>
+
+	* configure: regen
+
+	* main.c: ifdef'd use of fcntl.h
+
+	* configure.in: add configure checks for fcntl.h, atexit and mkstemp
+
+	* main.c: for cases where mkstemp() is not available, use tempnam/open
+
+	* aclocal.m4: add CF_MKSTEMP
+
+	* aclocal.m4:
+	improve quoting, deprecate ${name-value} in favor of standard ${name:-val=
ue}
+
+2010-12-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c:
+	start revising use of tmpfile(), to make this work with MinGW.  Start by
+	implementing a mkstemp() alternative - noting that mkstemp() also is brok=
en
+	for MinGW.
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+2010-11-27  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/byacc.spec, package/debian/changelog, VERSION: bump
+
+	* test/calc2.tab.c, test/calc3.tab.c: regen
+
+	* output.c:
+	corrected use of %parse-param value in yyerror(); it doesn't use &yylval
+	(report by Clifford Yapp)
+
+2010-11-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* skeleton.c: typo
+
+	* output.c:
+	correct line-numbering when "-r" option is used; the 'outline' variable
+	should only be incremented when writing to the code-file.
+
+	* test/code_calc.code.c, test/code_error.code.c: regen
+
+	* yacc.1: bump date
+
+	* yacc.1: comment on -b option vs -r
+
+	* test/calc2.tab.c, test/calc2.y, test/calc3.tab.c, test/calc3.y, test/ft=
p.tab.c, test/grammar.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, t=
est/calc.tab.c, test/calc1.tab.c, test/code_calc.code.c, test/code_error.co=
de.c, test/error.tab.c:
+	regen
+
+	* output.c:
+	improve on YYERROR_DECL(), adding dummy params which can be used for the
+	actual function declaration.  Also add YYERROR_CALL().  The two macros
+	simplify maintaining sets of grammars which may/may not be pure.
+
+	* test/calc1.y, test/ftp.tab.c, test/grammar.tab.c, test/pure_calc.tab.c,=
 test/pure_error.tab.c, test/calc.tab.c, test/calc1.tab.c, test/calc2.tab.c=
, test/calc3.tab.c, test/code_calc.code.c, test/code_error.code.c, test/err=
or.tab.c:
+	regen
+
+	* output.c: generate yyerror() calls in output.c
+	This is for compatibility with bison, which passes the yylval to yyerror
+	when the %parse-param feature is used.
+
+	* skeleton.c, defs.h: generate yyerror() calls in output.c
+
+	* output.c: simplified a little, using putc_code() and putl_code()
+
+	* test/calc1.tab.h: regen
+
+	* reader.c:
+	improve ifdef for YYSTYPE union declaration (report by Clifford Yapp)
+
+	* reader.c:
+	accept underscore as a replacement for dash in command names, e.g.,
+	"%pure_parser" vs "%pure-parser".
+
+	* test/calc1.tab.c: regen
+
+	* output.c, reader.c:
+	also ifdef YYSTYPE declaration in the generated code (report by Clifford =
Yapp)
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+2010-11-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c, defs.h, symtab.c, error.c: reduce global variables
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+	* reader.c:
+	amend fix for Redhat #112617 to still call default_action_warning() for
+	empty rules (report by Bruce Cran).
+
+2010-11-22  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* output.c:
+	add ifdef to guard against redefinition of YYSTYPE union (request by Clif=
ford Yapp).
+
+	* test/calc1.tab.c: regen
+
+	* test/calc1.y: cleanup compiler warnings
+
+	* test/grammar.y: add "%expect"
+
+	* test/calc1.tab.h: regen
+
+	* test/calc1.output, test/calc1.tab.c, test/calc1.tab.h: RCS_BASE
+
+	* test/calc2.tab.c, test/calc3.tab.c: regen
+
+	* test/calc1.y:
+	advanced example from Steve Johnson's paper, uses unions
+
+	* test/calc3.y, test/calc2.y: init 'base', so examples can run
+
+	* test/ftp.tab.c, test/ftp.y: tweaks to compile with g++
+
+	* output.c: compensate for fix in reader.c
+
+	* reader.c:
+	add/use putc_both() and puts_both(), incidentally fixing a place where
+	a union copied to the union_file may be missing the end of the last line.
+
+	* package/debian/changelog, package/byacc.spec, VERSION: bump
+
+2010-09-28  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess: 2010-09-24
+
+2010-09-10  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: 2010-09-11
+
+2010-06-10  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* yacc.1, package/debian/changelog, package/byacc.spec, VERSION:
+	bump to 2010/06/10
+
+2010-06-09  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* reader.c: free declarations in leak-testing code.
+
+	* main.c: close code_file if -r option used, for leak-testing
+
+	* defs.h, reader.c:
+	improve %lex-param / %parse-param implementation by allowing for arrays to
+	be passed as parameters, e.g., "int regs[26]".
+
+	* test/calc3.tab.c, test/calc3.y, test/calc3.output, test/calc3.tab.h, te=
st/calc2.tab.c, test/calc2.y, test/calc2.tab.h, test/calc2.output:
+	RCS_BASE
+
+	* output.c:
+	improve %lex-param / %parse-param implementation by allowing for arrays to
+	be passed as parameters, e.g., "int regs[26]".
+
+	* test/calc.tab.c, test/calc.y:
+	test-cases and reference files for %lex-param / %parse-param
+
+	* makefile.in: add docs-rule, for html/pdf/txt form of manpage
+
+	* configure: regen
+
+	* aclocal.m4: add CF_XOPEN_SOURCE, etc.
+
+	* configure.in:
+	use CF_XOPEN_SOURCE check to ensure that strdup is in scope, e.g., for c89
+
+	* test/ftp.tab.c, test/ftp.y, reader.c, symtab.c, verbose.c, lr0.c, main.=
c, mkpar.c, output.c, defs.h, closure.c:
+	fix warnings from clang --analyze
+
+2010-06-08  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* output.c: fix to build with c89, etc.
+
+	* reader.c: gcc warning
+
+	* test/ftp.tab.c, test/ftp.y, test/calc.tab.c, test/code_calc.code.c, tes=
t/code_error.code.c, test/code_error.y, test/code_calc.y, test/calc.y, test=
/pure_error.tab.c, test/error.tab.c, test/error.y, test/pure_error.y, test/=
pure_calc.tab.c, test/pure_calc.y:
+	modified test-cases to allow them to compile, to validate pure-parser cha=
nges.
+	updated reference files to match.
+
+	* output.c:
+	move call for output_stype() earlier since it is used in pure-parser decl=
arations
+
+	* test/grammar.tab.c, test/grammar.y:
+	modified test-cases to allow them to compile, to validate pure-parser cha=
nges.
+	updated reference files to match.
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	regen
+
+	* yacc.1: document %lex-param and %parse-param
+
+	* test/run_lint.sh, test/run_make.sh: RCS_BASE
+
+	* test/run_test.sh:
+	further modify to allow build-directory to be in a different location by
+	passing this directory's location as a parameter to the script.
+
+	* makefile.in:
+	add check_make and check_lint rules to help validate the generated files
+	in the test-directory
+
+2010-06-07  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/pure_calc.tab.c, test/pure_error.tab.c: RCS_BASE
+
+	* test/run_test.sh:
+	provide for testing -r and -P options by checking if the ".y" filename
+	begins with "code_" or "pure_", respectively.
+
+	* test/code_error.code.c, test/code_error.tab.c, test/code_error.tab.h, t=
est/code_calc.code.c, test/code_calc.tab.c, test/code_calc.tab.h, test/pure=
_calc.output, test/pure_calc.tab.h, test/pure_error.output, test/pure_error=
.tab.h, test/code_calc.output, test/code_error.output:
+	RCS_BASE
+
+	* test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c: regen
+
+	* test/run_test.sh:
+	changes to support running "make check" in a separate build-tree
+
+	* main.c: add "-P" to usage message
+
+	* reader.c: use UCH() macro to hide casts.
+
+2010-06-07  Andres.Mejia
+
+	* main.c, output.c, reader.c, defs.h, skeleton.c:
+	Fix the output order of the generated parse code file.  This allows for
+	the use of YYPARSE_PARAM, by having the output that checks for
+	YYPARSE_PARAM to be defined come after the C code block in the
+	definitions section of a yacc file.
+
+	Implement support for YYLEX_PARAM, similar to bison.  This is useful for
+	support for building reentrant lexers with flex.
+
+	Fix a compatibility issue with bison's pure-parser option.  Bison
+	defines yylex as sending at least one parameter, &yylval, as the first
+	parameter and doesn't seem to have an easy way to remove that parameter.
+	This on the other hand is rather convenient to support saving to yylval
+	from flex when building reentrant lexers and parsers.
+
+	Add support for the %parse-param and %lex-param directives used in
+	bison.  This change bears some similarity to NetBSD's changes to byacc
+	at http://www.mail-archive.com/[email protected]/msg08143.ht=
ml
+
+	Bison allows for POSIX yacc emulation via a yacc directive in the yacc
+	file, and also via a command line switch.  Implement this feature as a
+	no-op for byacc, since byacc is designed to be POSIX yacc compatible
+	anyway.  This allows for better compatibility with yacc sources written
+	for bison.
+
+2010-06-07  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* VERSION: bump to 2010/06/07
+
+2010-06-06  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/calc.tab.c, configure: regen
+
+	* skeleton.c:
+	move #include's down into the generated code, to allow user-defined code
+	to override feature definitions, particularly with stdlib.h (request by
+	Marcus Kool).
+
+	* lr0.c, error.c, reader.c, defs.h:
+	strict gcc 3.4.6 warnings on 64-bit platform
+
+	* aclocal.m4, configure.in: add check for lint
+
+	* makefile.in: add lint rule
+
+	* defs.h, closure.c, lr0.c, warshall.c, main.c:
+	fix gcc warnings, mostly for 64-bit platform
+
+	* aclocal.m4:
+	add macros for checking ctags/etags, e.g., to work with NetBSD pkgsrc
+
+	* makefile.in: add etags/TAGS if available
+
+	* configure.in: add configure check for actual ctags and etags programs
+
+	* package/debian/copyright: add copyright notices for non-PD files
+
+	* package/debian/changelog:
+	incorporated scripts in upstream to use for test-builds
+
+	* makefile.in: drop mkdirs.sh, just use "mkdir -p"
+
+	* AUTHORS: nicknames for some contributors (see CHANGES for details)
+
+	* package/byacc.spec: RPM file for byacc
+
+	* VERSION: bump to 2010/06/06
+
+	* aclocal.m4: add copyright notice, from "my-autoconf" macros
+		http://invisible-island.net/autoconf/autoconf.html
+
+	* package/RCS, package/debian/RCS, package/debian/source/RCS, package/pkg=
src/RCS:
+	PERMIT FILE
+
+	* aclocal.m4: resync with my-autoconf.  summary of changes:
+		a) CF_ADD_CFLAGS, etc., improve quoting of ifelse() parameter
+		b) CF_DISABLE_ECHO, change indent-convention for substituted makefile
+		c) CF_GCC_VERSION, ignore stderr
+		d) CF_GCC_WARNINGS, adjust options to work with c89 wrapper of gcc
+
+2010-04-20  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/changelog, package/debian/compat, package/debian/control=
, package/debian/copyright, package/debian/docs, package/debian/postinst, p=
ackage/debian/prerm, package/debian/rules, package/debian/watch:
+	scripts from Debian package
+
+2010-02-16  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* yacc.1: document -P and bison-extensions
+
+	* test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c, test/error.tab.c:
+	regen
+
+	* output.c: implement %pure-parser
+
+	* skeleton.c:
+	implement %pure-parser, like bison.  To help with this, changed the stack
+	variables, putting them into a struct.
+
+	* reader.c: implement %pure-parser
+
+	* defs.h: modified skeleton to support %pure-parser feature
+
+	* main.c: add -P option to set %pure-parser
+
+	* output.c:
+	make -r and -p options work together.  The -r option splits the generated
+	parser into code/table files; for this case we cannot use static data.
+	Also, we have to repeat the #define's used for prefix (-p) as well as the
+	redeclaration of yyparse().  Finally, allow any of the prefixed names to
+	be overridden, e.g., by passing a -D option to the compiler.  Make that
+	a little more readable by putting a blank line before each chunk.
+
+	* defs.h: add definitions for %pure-parser
+
+	* skeleton.c:
+	put blank line before/after the redeclaration of yyparse()
+
+	* output.c: allow for other program redefining yylex()
+
+	* skeleton.c:
+	split-off xdecls[] array, to move declaration of yyparse() after #define's
+
+	* defs.h: split-out xdecls[]
+
+	* VERSION: bump
+
+	* configure: regen
+
+	* aclocal.m4: add CF_REMOVE_DEFINE, needed by CF_ADD_CFLAGS
+
+	* aclocal.m4:
+	resync with my-autoconf CF_ADD_CFLAGS and CF_DISABLE_ECHO changes.
+
+2010-02-16  Ostap.Cherkashi
+
+	* skeleton.c: fix a memory leak in the generated skeleton
+
+2010-01-01  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/debian/source/format: scripts from Debian package
+
+2009-12-31  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess: 2009-12-30
+
+	* config.sub: 2009-12-31
+
+2009-10-27  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* VERSION: 20091027
+
+	* output.c, mkpar.c, defs.h, lalr.c, closure.c, graph.c, lr0.c, verbose.c=
, main.c, reader.c:
+	strict compiler warnings
+
+2009-10-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c, test/error.tab.c:
+	resync
+
+	* main.c, defs.h: introduce some typedefs for portability, etc.
+
+	* makefile.in:
+	don't remove "*.log" in mostlyclean rule since it interferes with regress=
ion
+	script.
+
+	* configure: regen
+
+	* aclocal.m4: resync with my-autoconf
+
+2009-08-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess, config.sub: 2009-08-19
+
+2009-02-21  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* VERSION: bump
+
+	* output.c: restore "yylval" symbol, omitted in cleanup on 2008/8/25
+
+2008-12-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* configure: regen with autoconf-2.52 (patched)
+
+2008-12-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c:
+	regenerated
+
+2008-12-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* VERSION: bump
+
+	* skeleton.c:
+	remove ifdef-lint from goto yyerrlab, to quiet gcc warning
+
+2008-11-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* verbose.c, main.c, defs.h, mkpar.c, reader.c:
+	completed implementation of "%expect" (report by Perry E. Metzger).
+	add "%expect-rr", which is (unlike bison) allowable in LALR parsers.
+
+2008-11-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* closure.c, defs.h, error.c, graph.c, lalr.c, lr0.c, main.c, mkpar.c, ou=
tput.c, reader.c, skeleton.c, symtab.c, verbose.c, warshall.c:
+	change indent-style (request by Perry E. Metzger)
+
+2008-08-27  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	better implementation of YYPARSE_PARAM, using YYPARSE_DECL() macro
+
+	* VERSION: bump
+
+	* skeleton.c:
+	better implementation of YYPARSE_PARAM, using YYPARSE_DECL() macro
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, =
skeleton.c:
+	change YYRECOVERING to YYRECOVERING(), for compatibility with other yacc'=
s.
+
+	* configure: regen'd
+
+	* configure.in: add -Wwrite-strings to warnings
+
+	* test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c, test/error.tab.c:
+	add YYPARSE_PARAM and YYPARSE_PARAM_TYPE
+
+	* skeleton.c:
+	add YYPARSE_PARAM (bison) and YYPARSE_PARAM_TYPE (FreeBSD) features.
+
+	* main.c, defs.h, output.c, skeleton.c, symtab.c, error.c, reader.c:
+	fixes for gcc -Wwrite-strings
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	generate the tables as static-const (this is an interface change)
+
+	* output.c: realign columns in start_table()
+
+	* output.c:
+	generate the tables as static-const (this is an interface change)
+
+	* output.c: reorder functions to eliminate forward-references
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	remove 'register' keywords
+
+2008-08-26  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* warshall.c, verbose.c, symtab.c, skeleton.c, reader.c, output.c, mkpar.=
c, main.c, lr0.c, lalr.c, graph.c, error.c, closure.c:
+	remove 'register' keywords
+
+2008-08-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/ftp.tab.c: regen'd
+
+	* reader.c:
+	improve the left-curly fix by testing after blanks, to avoid having a
+	" {" at the beginning of a line.
+
+	* test/error.tab.c, test/grammar.tab.c: regen'd
+
+	* output.c:
+	move the remaining newline-counting into write_XXX functions.
+
+	* test/calc.tab.c: regen'd
+
+	* output.c:
+	simplify part of the output_file formatting using new functions, e.g.,
+	start_int_table(), output_newline().
+
+	* reader.c:
+	modify copy_action() to indent the first character, it if is is left-curly
+	brace.  That makes the output look more like the original, as well as mak=
es
+	it simpler to edit (not confuse editors which look for a left-curly in the
+	first column as if it were the beginning of a function).
+
+	* skeleton.c: minor fixes to avoid gcc -Wconversion warnings
+
+	* output.c: align the #define's produced for "-p" option
+
+	* test/run_test.sh: use the "-p" option for better coverage.
+
+	* output.c: simplify output_prefix() with new define_prefixed()
+
+	* skeleton.c: include string.h, for memset()
+	change stack size to unsigned to fix gcc -Wconversion warnings.
+
+	* VERSION: bump to 2008/8/25
+
+	* makefile.in: add dependency on VERSION file.
+
+2008-08-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* VERSION: bump
+
+	* lalr.c: improved memory-leak checking by freeing data in includes[]
+
+	* test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/calc.tab.c:
+	update to match skeleton-change
+
+	* configure: regen'd
+
+	* skeleton.c: Add fix for stack discussed
+		http://undeadly.org/cgi?action=3Darticle&sid=3D20080708155228
+	and applied
+		http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/yacc/skeleton.c.diff?r=
1=3D1.28&r2=3D1.29
+
+	* aclocal.m4: resync with my-autoconf (no major changes)
+
+2008-07-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/pkgsrc/Makefile, package/pkgsrc/distinfo:
+	scripts from NetBSD pkgsrc, for test-builds
+
+2008-03-14  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: update to 2008-03-08
+
+	* config.guess: update to 2008-03-12
+
+2007-05-09  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c: close graph, verbose files if opened, on exit.
+
+	* main.c:
+	audit memory leaks - valgrind reported some memory still in use on exit.
+
+	* lalr.c, output.c, reader.c, mkpar.c, lr0.c:
+	add hook for auditing memory leaks
+
+	* defs.h: add hooks for auditing memory leaks
+
+	* configure: regen'd
+
+	* configure.in:
+	use CF_DISABLE_LEAKS, which combines --disable-leaks, --with-valgrind,
+	--with-dbmalloc and --with-dmalloc
+
+	* aclocal.m4: add CF_DISABLE_LEAKS and CF_WITH_VALGRIND
+
+	* aclocal.m4: improve version-checking in CF_GCC_VERSION
+	rework dbmalloc/dmalloc options using CF_NO_LEAKS_OPTION macro
+
+	* VERSION: 2007/5/9
+
+	* main.c: file_prefix did not always have a trailing null.
+
+2007-03-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* mkdirs.sh: improved version for "make -j"
+
+2006-12-22  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess: 2006/12/22
+
+2006-12-08  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: 2006/12/08
+
+2005-08-13  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c: add -V to usage message
+
+	* makefile.in: remove -t option from ctags
+
+	* VERSION: 2005/8/13
+
+2005-08-13  schmitz
+
+	* main.c: Sylvain Schmitz:
+	modify the '-o' option to work like bison's, which sets the file-prefix.
+
+2005-08-13  Matt.Kraai
+
+	* output.c:
+	Debian #322858 (don't close union_file, which contained data).
+	This feature is used in groff.
+
+2005-08-13  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* configure: regenerated
+
+	* aclocal.m4: improve checks for Intel compiler warnings
+
+2005-06-25  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: 2005/6/2
+
+	* config.guess: 2005/5/27
+
+2005-05-05  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* defs.h: add a fallback for GCC_UNUSED
+
+2005-05-04  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* makefile.in: add "." to include-path to pickup config.h
+
+	* reader.c:
+	apply fix suggested by Steve Dum for end_rule() in Redhat Bugzilla #11261=
7.
+
+	* output.c:
+	correct a limit check in pack_vector() - report/analysis by William Evans
+
+	* main.c:
+	exit after printing version.  Otherwise "yacc -V" will exit with an erro
+	after printing the usage message.
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	regenerated after skeleton-changes
+
+	* skeleton.c: replace a few -1's with YYEMPTY
+
+	* skeleton.c:
+	delete yynewerror (no one uses it any more, and it just makes compiler wa=
rnings)
+
+	* skeleton.c: adapt yygrowstack() and related definitions from FreeBSD
+
+	* test/run_test.sh:
+	filter out lines with YYPATCH, since that will change with each update
+
+	* yacc.1: add -V option
+
+	* main.c: add -V option to print the version.
+	simplify option-parsing by moving the duplicate logic for setting flags i=
nto
+	new function setflag().
+
+	* skeleton.c:
+	move the actual definition of YYMAJOR and YYMINOR to defs.h (as numbers).
+	add YYPATCH here so it can be tested by applications.
+
+	* defs.h:
+	add macros to define VERSION in terms of the (numeric) YYMAJOR, YYMINOR a=
nd
+	YYPATCH symbols.
+
+	* lalr.c, lr0.c, mkpar.c, defs.h, closure.c, warshall.c, output.c, verbos=
e.c, graph.c, reader.c, main.c, symtab.c:
+	reduce externs by making static the procedures that are not referenced ou=
tside
+	the module in which they are defined.
+
+	* makefile.in:
+	the VERSION file holds the patch-date.  Define YYPATCH, so this will be
+	compiled into the skeleton.
+
+	* VERSION: patch-level for byacc
+
+	* main.c:
+	add "-o" to usage message.  It is too long for a single line; rewrite usa=
ge()
+	to show one option per line.
+
+2005-05-03  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c: add -o option, to work with scripts that assume bison.
+	simplify create_file_names() with a macro.
+	simplify done() with a macro.
+	adapt fix from FreeBSD for signal race, e.g., if done() is interrupted by
+	onintr(), do not flush output via exit(), but use _exit() instead.
+
+	* defs.h: remove unnecessary externs for main.c
+
+	* yacc.1: add -o option
+
+	* graph.c: remove unused parameter
+
+	* mkpar.c, defs.h, reader.c:
+	add support for "%expect", a bison feature from FreeBSD sources
+
+	* lr0.c, reader.c, main.c, skeleton.c, graph.c, symtab.c, closure.c, mkpa=
r.c, lalr.c, error.c, warshall.c, verbose.c, output.c:
+	indent'd
+
+	* configure: regenerated for 2005/5/5
+
+	* aclocal.m4: miscellaneous updates (adds CF_INTEL_COMPILER)
+
+2005-04-27  schmitz
+
+	* defs.h, graph.c, lr0.c, main.c, makefile.in, reader.c, yacc.1:
+	Sylvain Schmitz <schmitz at i3s.unice.fr>:
+	add graphical output of the LALR(1) automaton for graphviz,
+	associated with command-line option `-g'
+
+2005-04-16  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: 2005/2/10
+
+	* config.guess: 2005/3/24
+
+2005-04-13  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/pkgsrc/PLIST: scripts from NetBSD pkgsrc, for test-builds
+
+2005-03-21  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* package/pkgsrc/DESCR: scripts from NetBSD pkgsrc, for test-builds
+
+2004-03-28  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/calc.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c:
+	updates due to adding yyparse() prototype
+
+	* configure: RCS_BASE
+
+	* configure.in:
+	add AC_ARG_PROGRAM to make --program-prefix, etc., work.
+
+	* makefile.in: first cut of script to support --program-prefix
+
+	* configure.in:
+	reorder AC_INIT/AC_CONFIG_HEADER to make this "work" with autoconf 2.52
+
+	* makefile.in: modify so DESTDIR works
+
+	* makefile.in: use EXEEXT and OBJEXT
+
+	* configure.in: use CF_PROG_EXT
+	generate a config.h
+
+	* defs.h: make this use the generated config.h
+
+	* skeleton.c: add a forward-reference for yyparse()
+
+	* aclocal.m4: add CF_CHECK_CACHE, needed for CF_PROG_EXT
+
+	* yacc.1: remove the discussion of TMPDIR since it is obsolete
+
+	* skeleton.c: fix a couple of minor compiler-warnings in the skeleton
+
+	* defs.h: remove action_file_name, etc., since we use tmpfile() now.
+
+	* main.c:
+	use tmpfile() for opening the working files.  This quiets a warning
+	advising the use of mkstemp().
+
+	* output.c:
+	Do not close temporary-files here, since they are opened with tmpfile().
+	Just rewind them, and they're ready to read back the data stored in them.
+
+	* test/grammar.output, test/grammar.tab.c, test/grammar.tab.h: RCS_BASE
+
+	* makefile.in: turn on "make check" rule
+
+	* test/calc.output, test/run_test.sh, test/calc.tab.h: RCS_BASE
+
+	* test/ftp.tab.c: yyparse() is now yyparse(void)
+
+	* test/calc.tab.c: RCS_BASE
+
+	* test/error.tab.c: yyparse() is now yyparse(void)
+
+	* test/README: RCS_BASE
+
+	* yacc.1: various typography fixes prompted by Debian #100947
+
+	* aclocal.m4, makefile.in, configure.in: RCS_BASE
+
+	* README: updated to note that this is not the original
+
+2004-03-24  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/grammar.y: RCS_BASE
+
+2004-02-23  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.sub: RCS_BASE
+
+2004-02-17  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config.guess: RCS_BASE
+
+2003-11-29  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* install-sh: improved quoting
+
+2002-06-29  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* mkdirs.sh:
+	don't use character range, since some locales don't work as expected
+
+2001-06-22  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* install-sh: RCS_BASE
+
+2000-11-20  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/calc.y: RCS_BASE
+
+	* test/code_calc.y, test/pure_calc.y: copy of calc.y
+
+	* vmsbuild.com: original version
+
+2000-02-23  Thomas E. Dickey  <dickey at invisible-island.net>
+
+	* test/RCS, RCS: PERMIT FILE
+
+2000-02-14  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* main.c: fix for VMS port - making pathname for temp-file
+
+	* descrip.mms: original version
+
+2000-02-13  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* defs.h, verbose.c, reader.c, main.c, skeleton.c, warshall.c, symtab.c, =
closure.c, mkpar.c, lalr.c, lr0.c, output.c, error.c:
+	ansify
+
+1999-11-30  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* mkdirs.sh: RCS_BASE
+
+1995-01-01  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* config_h.in: RCS_BASE
+
+1993-12-23  unknown
+
+	* README.DOS, main.c: MSDOS-port
+
+1993-12-22  unknown
+
+	* reader.c, defs.h: MSDOS-port
+
+1993-03-02  unknown
+
+	* README: original version
+
+1993-02-22  unknown
+
+	* test/ftp.output, test/ftp.tab.c, test/ftp.tab.h, test/error.output, tes=
t/error.tab.c, test/error.tab.h:
+	RCS_BASE
+
+	* skeleton.c, warshall.c, main.c, output.c, reader.c, closure.c, NOTES:
+	original version
+
+1992-10-12  unknown
+
+	* yacc.1: original version
+
+1992-10-11  unknown
+
+	* defs.h: original version
+
+1991-01-20  unknown
+
+	* mkpar.c, verbose.c: original version
+
+1991-01-14  unknown
+
+	* lr0.c, Makefile, Makefile.old: original version
+
+1990-07-16  unknown
+
+	* NEW_FEATURES: original version
+
+1990-06-03  unknown
+
+	* ACKNOWLEDGEMENTS: original version
+
+1990-02-05  unknown
+
+	* symtab.c, lalr.c, error.c: original version
+
+1990-01-16  Thomas E. Dickey  <tom at invisible-island.net>
+
+	* test/code_error.y, test/pure_error.y: RCS_BASE
+
+1990-01-16  unknown
+
+	* test/error.y: RCS_BASE
+
+1989-11-22  unknown
+
+	* NO_WARRANTY: original version
+
+1989-09-23  unknown
+
+	* test/ftp.y: RCS_BASE
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/Makefile.old
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/Makefile.old	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,84 @@
+DEST	      =3D .
+
+HDRS	      =3D defs.h
+
+CFLAGS	      =3D -O -DNDEBUG
+
+LDFLAGS	      =3D
+
+LIBS	      =3D
+
+LINKER	      =3D cc
+
+MAKEFILE      =3D Makefile
+
+OBJS	      =3D closure.o \
+		error.o \
+		lalr.o \
+		lr0.o \
+		main.o \
+		mkpar.o \
+		output.o \
+		reader.o \
+		skeleton.o \
+		symtab.o \
+		verbose.o \
+		warshall.o
+
+PRINT	      =3D pr -f -l88
+
+PROGRAM	      =3D yacc
+
+SRCS	      =3D closure.c \
+		error.c \
+		lalr.c \
+		lr0.c \
+		main.c \
+		mkpar.c \
+		output.c \
+		reader.c \
+		skeleton.c \
+		symtab.c \
+		verbose.c \
+		warshall.c
+
+all:		$(PROGRAM)
+
+$(PROGRAM):     $(OBJS) $(LIBS)
+		@echo -n "Loading $(PROGRAM) ... "
+		@$(LINKER) $(LDFLAGS) -o $(PROGRAM) $(OBJS) $(LIBS)
+		@echo "done"
+
+clean:;		@rm -f $(OBJS)
+
+clobber:;	@rm -f $(OBJS) $(PROGRAM)
+
+depend:;	@mkmf -f $(MAKEFILE) PROGRAM=3D$(PROGRAM) DEST=3D$(DEST)
+
+index:;		@ctags -wx $(HDRS) $(SRCS)
+
+install:	$(PROGRAM)
+		@echo Installing $(PROGRAM) in $(DEST)
+		@install -s $(PROGRAM) $(DEST)
+
+listing:;	@$(PRINT) Makefile $(HDRS) $(SRCS) | lpr
+
+lint:;		@lint $(SRCS)
+
+program:        $(PROGRAM)
+
+tags:           $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)
+
+###
+closure.o: defs.h
+error.o: defs.h
+lalr.o: defs.h
+lr0.o: defs.h
+main.o: defs.h
+mkpar.o: defs.h
+output.o: defs.h
+reader.o: defs.h
+skeleton.o: defs.h
+symtab.o: defs.h
+verbose.o: defs.h
+warshall.o: defs.h
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/NEW_FEATURES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/NEW_FEATURES	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,46 @@
+     The -r option has been implemented.  The -r option tells Yacc to
+put the read-only tables in y.tab.c and the code and variables in
+y.code.c.  Keith Bostic asked for this option so that :yyfix could be
+eliminated.
+
+     The -l and -t options have been implemented.  The -l option tells
+Yacc not to include #line directives in the code it produces.  The -t
+option causes debugging code to be included in the compiled parser.
+
+     The code for error recovery has been changed to implement the same
+algorithm as AT&T Yacc.  There will still be differences in the way
+error recovery works because AT&T Yacc uses more default reductions
+than Berkeley Yacc.
+
+     The environment variable TMPDIR determines the directory where
+temporary files will be created.  If TMPDIR is defined, temporary files
+will be created in the directory whose pathname is the value of TMPDIR.
+By default, temporary files are created in /tmp.
+
+     The keywords are now case-insensitive.  For example, %nonassoc,
+%NONASSOC, %NonAssoc, and %nOnAsSoC are all equivalent.
+
+     Commas and semicolons that are not part of C code are treated as
+commentary.
+
+     Line-end comments, as in BCPL, are permitted.  Line-end comments
+begin with // and end at the next end-of-line.  Line-end comments are
+permitted in C code; they are converted to C comments on output.
+
+     The form of y.output files has been changed to look more like
+those produced by AT&T Yacc.
+
+     A new kind of declaration has been added.  The form of the declaration
+is
+
+	  %ident string
+
+where string is a sequence of characters begining with a double quote
+and ending with either a double quote or the next end-of-line, whichever
+comes first.  The declaration will cause a #ident directive to be written
+near the start of the output file.
+
+     If a parser has been compiled with debugging code, that code can be
+enabled by setting an environment variable.  If the environment variable
+YYDEBUG is set to 0, debugging output is suppressed.  If it is set to 1,
+debugging output is written to standard output.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/NOTES
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/NOTES	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,9 @@
+Berkeley Yacc reflects its origins.  The reason so many routines
+use exactly six register variables is that Berkeley Yacc was
+developed on a VAX using PCC.  PCC placed at most six variables
+in registers.  I went to considerable effort to find which six
+variables most belonged in registers.  Changes in machines and
+compilers make that effort worthless, perhaps even harmful.
+
+The code contains many instances where address calculations are
+performed in particular ways to optimize the code for the VAX.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/NO_WARRANTY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/NO_WARRANTY	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+     Berkeley Yacc is distributed with no warranty whatever.  The author
+and any other contributors take no responsibility for the consequences of
+its use.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/README
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/README	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,29 @@
+-- $Id: README,v 1.2 2004/03/28 17:24:53 tom Exp $
+
+The original README is below.  I've updated this version of Berkeley Yacc
+to make it ANSI C compliant - Thomas Dickey
+
+--------------------------------------------------------------------------=
-----
+    Berkeley Yacc is an LALR(1) parser generator.  Berkeley Yacc has been =
made
+as compatible as possible with AT&T Yacc.  Berkeley Yacc can accept any in=
put
+specification that conforms to the AT&T Yacc documentation.  Specifications
+that take advantage of undocumented features of AT&T Yacc will probably be
+rejected.
+
+    Berkeley Yacc is distributed with no warranty whatever.  The code is c=
ertain
+to contain errors.  Neither the author nor any contributor takes responsib=
ility
+for any consequences of its use.
+
+    Berkeley Yacc is in the public domain.  The data structures and algori=
thms
+used in Berkeley Yacc are all either taken from documents available to the
+general public or are inventions of the author.  Anyone may freely distrib=
ute
+source or binary forms of Berkeley Yacc whether unchanged or modified.
+Distributers may charge whatever fees they can obtain for Berkeley Yacc.
+Programs generated by Berkeley Yacc may be distributed freely.
+
+    Please report bugs to
+
+			robert.corbett at eng.Sun.COM
+
+Include a small example if possible.  Please include the banner string from
+skeleton.c with the bug report.  Do not expect rapid responses.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/VERSION
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/VERSION	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1 @@
+20120115
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/aclocal.m4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/aclocal.m4	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1144 @@
+dnl $Id: aclocal.m4,v 1.19 2012/01/13 14:10:56 tom Exp $
+dnl Macros for byacc configure script (Thomas E. Dickey)
+dnl ----------------------------------------------------------------------=
-----
+dnl Copyright 2004-2011,2012 Thomas E. Dickey
+dnl=20
+dnl Permission is hereby granted, free of charge, to any person obtaining a
+dnl copy of this software and associated documentation files (the
+dnl "Software"), to deal in the Software without restriction, including
+dnl without limitation the rights to use, copy, modify, merge, publish,
+dnl distribute, distribute with modifications, sublicense, and/or sell
+dnl copies of the Software, and to permit persons to whom the Software is
+dnl furnished to do so, subject to the following conditions:
+dnl=20
+dnl The above copyright notice and this permission notice shall be included
+dnl in all copies or portions of the Software.
+dnl=20
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+dnl=20
+dnl Except as contained in this notice, the name(s) of the above copyright
+dnl holders shall not be used in advertising or otherwise to promote the
+dnl sale, use or other dealings in this Software without prior written
+dnl authorization.
+dnl ----------------------------------------------------------------------=
-----
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42
+dnl -------------
+dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
+dnl The second parameter if given makes this macro verbose.
+dnl
+dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPP=
FLAGS,
+dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
+dnl confused by the quotes (which require backslashes to keep them usable).
+AC_DEFUN([CF_ADD_CFLAGS],
+[
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $1
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[[^=3D]]*=3D'\''\"=
[[^"]]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+				CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+	ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+	ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+	ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)=
])
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+AC_SUBST(EXTRA_CPPFLAGS)
+
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_ANSI_CC_CHECK version: 11 updated: 2011/07/01 19:47:45
+dnl ----------------
+dnl This was originally adapted from the macros 'fp_PROG_CC_STDC' and
+dnl 'fp_C_PROTOTYPES' in the sharutils 4.2 distribution.
+AC_DEFUN([CF_ANSI_CC_CHECK],
+[
+# This should have been defined by AC_PROG_CC
+: ${CC:=3Dcc}
+
+# Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
+# into CC.  This will not help with broken scripts that wrap the compiler =
with
+# options, but eliminates a more common category of user confusion.
+AC_MSG_CHECKING(\$CC variable)
+case "$CC" in #(vi
+*[[\ \	]]-[[IUD]]*)
+	AC_MSG_RESULT(broken)
+	AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFL=
AGS options)
+	# humor him...
+	cf_flags=3D`echo "$CC" | sed -e 's/^[[^ 	]]*[[ 	]]//'`
+	CC=3D`echo "$CC" | sed -e 's/[[ 	]].*//'`
+	CF_ADD_CFLAGS($cf_flags)
+	;;
+*)
+	AC_MSG_RESULT(ok)
+	;;
+esac
+
+AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[
+cf_cv_ansi_cc=3Dno
+cf_save_CFLAGS=3D"$CFLAGS"
+cf_save_CPPFLAGS=3D"$CPPFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=3Dansi
+# Ultrix and OSF/1	-std1
+# HP-UX			-Aa -D_HPUX_SOURCE
+# SVR4			-Xc
+# UnixWare 1.2		(cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+	"" \
+	-qlanglvl=3Dansi \
+	-std1 \
+	-Ae \
+	"-Aa -D_HPUX_SOURCE" \
+	-Xc
+do
+	CF_ADD_CFLAGS($cf_arg)
+	AC_TRY_COMPILE(
+[
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ !=3D 1)
+choke me
+#endif
+#endif
+],[
+	int test (int i, double x);
+	struct s1 {int (*f) (int a);};
+	struct s2 {int (*f) (double a);};],
+	[cf_cv_ansi_cc=3D"$cf_arg"; break])
+done
+CFLAGS=3D"$cf_save_CFLAGS"
+CPPFLAGS=3D"$cf_save_CPPFLAGS"
+])
+
+if test "$cf_cv_ansi_cc" !=3D "no"; then
+if test ".$cf_cv_ansi_cc" !=3D ".-DCC_HAS_PROTOS"; then
+	CF_ADD_CFLAGS($cf_cv_ansi_cc)
+else
+	AC_DEFINE(CC_HAS_PROTOS)
+fi
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54
+dnl ---------------
+dnl For programs that must use an ANSI compiler, obtain compiler options t=
hat
+dnl will make it recognize prototypes.  We'll do preprocessor checks in ot=
her
+dnl macros, since tools such as unproto can fake prototypes, but only part=
 of
+dnl the preprocessor.
+AC_DEFUN([CF_ANSI_CC_REQD],
+[AC_REQUIRE([CF_ANSI_CC_CHECK])
+if test "$cf_cv_ansi_cc" =3D "no"; then
+	AC_MSG_ERROR(
+[Your compiler does not appear to recognize prototypes.
+You have the following choices:
+	a. adjust your compiler options
+	b. get an up-to-date compiler
+	c. use a wrapper such as unproto])
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
+dnl --------------
+dnl Allow user to disable a normally-on option.
+AC_DEFUN([CF_ARG_DISABLE],
+[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
+dnl -------------
+dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
+dnl values.
+dnl
+dnl Parameters:
+dnl $1 =3D option name
+dnl $2 =3D help-string
+dnl $3 =3D action to perform if option is not default
+dnl $4 =3D action if perform if option is default
+dnl $5 =3D default option value (either 'yes' or 'no')
+AC_DEFUN([CF_ARG_OPTION],
+[AC_ARG_ENABLE([$1],[$2],[test "$enableval" !=3D ifelse([$5],no,yes,no) &&=
 enableval=3Difelse([$5],no,no,yes)
+  if test "$enableval" !=3D "$5" ; then
+ifelse([$3],,[    :]dnl
+,[    $3]) ifelse([$4],,,[
+  else
+    $4])
+  fi],[enableval=3D$5 ifelse([$4],,,[
+  $4
+])dnl
+  ])])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59
+dnl --------------
+dnl Check if we're accidentally using a cache from a different machine.
+dnl Derive the system name, as a check for reusing the autoconf cache.
+dnl
+dnl If we've packaged config.guess and config.sub, run that (since it does=
 a
+dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but all=
ow
+dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
+dnl which is useful in cross-compiles.
+dnl
+dnl Note: we would use $ac_config_sub, but that is one of the places where
+dnl autoconf 2.5x broke compatibility with autoconf 2.13
+AC_DEFUN([CF_CHECK_CACHE],
+[
+if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
+	ifelse([$1],,[AC_CANONICAL_HOST],[$1])
+	system_name=3D"$host_os"
+else
+	system_name=3D"`(uname -s -r) 2>/dev/null`"
+	if test -z "$system_name" ; then
+		system_name=3D"`(hostname) 2>/dev/null`"
+	fi
+fi
+test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
+AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name=3D"$system_name"])
+
+test -z "$system_name" && system_name=3D"$cf_cv_system_name"
+test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_syste=
m_name)
+
+if test ".$system_name" !=3D ".$cf_cv_system_name" ; then
+	AC_MSG_RESULT(Cached system name ($system_name) does not agree with actua=
l ($cf_cv_system_name))
+	AC_MSG_ERROR("Please remove config.cache and try again.")
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_DISABLE_ECHO version: 11 updated: 2009/12/13 13:16:57
+dnl ---------------
+dnl You can always use "make -n" to see the actual options, but it's hard =
to
+dnl pick out/analyze warning messages when the compile-line is long.
+dnl
+dnl Sets:
+dnl	ECHO_LT - symbol to control if libtool is verbose
+dnl	ECHO_LD - symbol to prefix "cc -o" lines
+dnl	RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
+dnl	SHOW_CC - symbol to put before explicit "cc -c" lines
+dnl	ECHO_CC - symbol to put before any "cc" line
+dnl
+AC_DEFUN([CF_DISABLE_ECHO],[
+AC_MSG_CHECKING(if you want to see long compiling messages)
+CF_ARG_DISABLE(echo,
+	[  --disable-echo          display "compiling" commands],
+	[
+    ECHO_LT=3D'--silent'
+    ECHO_LD=3D'@echo linking [$]@;'
+    RULE_CC=3D'@echo compiling [$]<'
+    SHOW_CC=3D'@echo compiling [$]@'
+    ECHO_CC=3D'@'
+],[
+    ECHO_LT=3D''
+    ECHO_LD=3D''
+    RULE_CC=3D''
+    SHOW_CC=3D''
+    ECHO_CC=3D''
+])
+AC_MSG_RESULT($enableval)
+AC_SUBST(ECHO_LT)
+AC_SUBST(ECHO_LD)
+AC_SUBST(RULE_CC)
+AC_SUBST(SHOW_CC)
+AC_SUBST(ECHO_CC)
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_DISABLE_LEAKS version: 6 updated: 2010/07/23 04:14:32
+dnl ----------------
+dnl Combine no-leak checks with the libraries or tools that are used for t=
he
+dnl checks.
+AC_DEFUN([CF_DISABLE_LEAKS],[
+
+AC_REQUIRE([CF_WITH_DMALLOC])
+AC_REQUIRE([CF_WITH_DBMALLOC])
+AC_REQUIRE([CF_WITH_VALGRIND])
+
+AC_MSG_CHECKING(if you want to perform memory-leak testing)
+AC_ARG_ENABLE(leaks,
+	[  --disable-leaks         test: free permanent memory, analyze leaks],
+	[if test "x$enableval" =3D xno; then with_no_leaks=3Dyes; else with_no_le=
aks=3Dno; fi],
+	: ${with_no_leaks:=3Dno})
+AC_MSG_RESULT($with_no_leaks)
+
+if test "$with_no_leaks" =3D yes ; then
+	AC_DEFINE(NO_LEAKS)
+	AC_DEFINE(YY_NO_LEAKS)
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32
+dnl -----------------
+dnl Test for availability of useful gcc __attribute__ directives to quiet
+dnl compiler warnings.  Though useful, not all are supported -- and contra=
ry
+dnl to documentation, unrecognized directives cause older compilers to bar=
f.
+AC_DEFUN([CF_GCC_ATTRIBUTES],
+[
+if test "$GCC" =3D yes
+then
+cat > conftest.i <<EOF
+#ifndef GCC_PRINTF
+#define GCC_PRINTF 0
+#endif
+#ifndef GCC_SCANF
+#define GCC_SCANF 0
+#endif
+#ifndef GCC_NORETURN
+#define GCC_NORETURN /* nothing */
+#endif
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+EOF
+if test "$GCC" =3D yes
+then
+	AC_CHECKING([for $CC __attribute__ directives])
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "${as_me:-configure}"
+#include "confdefs.h"
+#include "conftest.h"
+#include "conftest.i"
+#if	GCC_PRINTF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#if	GCC_SCANF
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
+#endif
+extern void wow(char *,...) GCC_SCANFLIKE(1,2);
+extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
+extern void foo(void) GCC_NORETURN;
+int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
+EOF
+	cf_printf_attribute=3Dno
+	cf_scanf_attribute=3Dno
+	for cf_attribute in scanf printf unused noreturn
+	do
+		CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
+		cf_directive=3D"__attribute__(($cf_attribute))"
+		echo "checking for $CC $cf_directive" 1>&AC_FD_CC
+
+		case $cf_attribute in #(vi
+		printf) #(vi
+			cf_printf_attribute=3Dyes
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+			;;
+		scanf) #(vi
+			cf_scanf_attribute=3Dyes
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+			;;
+		*) #(vi
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE $cf_directive
+EOF
+			;;
+		esac
+
+		if AC_TRY_EVAL(ac_compile); then
+			test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
+			cat conftest.h >>confdefs.h
+			case $cf_attribute in #(vi
+			printf) #(vi
+				if test "$cf_printf_attribute" =3D no ; then
+					cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+EOF
+				else
+					cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+EOF
+				fi
+				;;
+			scanf) #(vi
+				if test "$cf_scanf_attribute" =3D no ; then
+					cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) /* nothing */
+EOF
+				else
+					cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+EOF
+				fi
+				;;
+			esac
+		fi
+	done
+else
+	fgrep define conftest.i >>confdefs.h
+fi
+rm -rf conftest*
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31
+dnl --------------
+dnl Find version of gcc
+AC_DEFUN([CF_GCC_VERSION],[
+AC_REQUIRE([AC_PROG_CC])
+GCC_VERSION=3Dnone
+if test "$GCC" =3D yes ; then
+	AC_MSG_CHECKING(version of $CC)
+	GCC_VERSION=3D"`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC=
) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+	test -z "$GCC_VERSION" && GCC_VERSION=3Dunknown
+	AC_MSG_RESULT($GCC_VERSION)
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32
+dnl ---------------
+dnl Check if the compiler supports useful warning options.  There's a few =
that
+dnl we don't use, simply because they're too noisy:
+dnl
+dnl	-Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
+dnl	-Wredundant-decls (system headers make this too noisy)
+dnl	-Wtraditional (combines too many unrelated messages, only a few useful)
+dnl	-Wwrite-strings (too noisy, but should review occasionally).  This
+dnl		is enabled for ncurses using "--enable-const".
+dnl	-pedantic
+dnl
+dnl Parameter:
+dnl	$1 is an optional list of gcc warning flags that a particular
+dnl		application might want to use, e.g., "no-unused" for
+dnl		-Wno-unused
+dnl Special:
+dnl	If $with_ext_const is "yes", add a check for -Wwrite-strings
+dnl
+AC_DEFUN([CF_GCC_WARNINGS],
+[
+AC_REQUIRE([CF_GCC_VERSION])
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "${as_me:-configure}"
+int main(int argc, char *argv[[]]) { return (argv[[argc-1]] =3D=3D 0) ; }
+EOF
+
+if test "$INTEL_COMPILER" =3D yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller=
 integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (poten=
tial portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension=3D{unsigned short}" may=
 lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #279: controlling expression is constant
+
+	AC_CHECKING([for $CC warning options])
+	cf_save_CFLAGS=3D"$CFLAGS"
+	EXTRA_CFLAGS=3D"-Wall"
+	for cf_opt in \
+		wd1419 \
+		wd1683 \
+		wd1684 \
+		wd193 \
+		wd593 \
+		wd279 \
+		wd810 \
+		wd869 \
+		wd981
+	do
+		CFLAGS=3D"$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+		if AC_TRY_EVAL(ac_compile); then
+			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+			EXTRA_CFLAGS=3D"$EXTRA_CFLAGS -$cf_opt"
+		fi
+	done
+	CFLAGS=3D"$cf_save_CFLAGS"
+
+elif test "$GCC" =3D yes
+then
+	AC_CHECKING([for $CC warning options])
+	cf_save_CFLAGS=3D"$CFLAGS"
+	EXTRA_CFLAGS=3D
+	cf_warn_CONST=3D""
+	test "$with_ext_const" =3D yes && cf_warn_CONST=3D"Wwrite-strings"
+	for cf_opt in W Wall \
+		Wbad-function-cast \
+		Wcast-align \
+		Wcast-qual \
+		Winline \
+		Wmissing-declarations \
+		Wmissing-prototypes \
+		Wnested-externs \
+		Wpointer-arith \
+		Wshadow \
+		Wstrict-prototypes \
+		Wundef $cf_warn_CONST $1
+	do
+		CFLAGS=3D"$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+		if AC_TRY_EVAL(ac_compile); then
+			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+			case $cf_opt in #(vi
+			Wcast-qual) #(vi
+				CPPFLAGS=3D"$CPPFLAGS -DXTSTRINGDEFINES"
+				;;
+			Winline) #(vi
+				case $GCC_VERSION in
+				[[34]].*)
+					CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
+					continue;;
+				esac
+				;;
+			esac
+			EXTRA_CFLAGS=3D"$EXTRA_CFLAGS -$cf_opt"
+		fi
+	done
+	CFLAGS=3D"$cf_save_CFLAGS"
+fi
+rm -rf conftest*
+
+AC_SUBST(EXTRA_CFLAGS)
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl -------------
+dnl Check if we must define _GNU_SOURCE to get a reasonable value for
+dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a de=
fect
+dnl (or misfeature) of glibc2, which breaks portability of many applicatio=
ns,
+dnl since it is interwoven with GNU extensions.
+dnl
+dnl Well, yes we could work around it...
+AC_DEFUN([CF_GNU_SOURCE],
+[
+AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+	[cf_cv_gnu_source=3Dno],
+	[cf_save=3D"$CPPFLAGS"
+	 CPPFLAGS=3D"$CPPFLAGS -D_GNU_SOURCE"
+	 AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+	[cf_cv_gnu_source=3Dno],
+	[cf_cv_gnu_source=3Dyes])
+	CPPFLAGS=3D"$cf_save"
+	])
+])
+test "$cf_cv_gnu_source" =3D yes && CPPFLAGS=3D"$CPPFLAGS -D_GNU_SOURCE"
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42
+dnl -----------------
+dnl Check if the given compiler is really the Intel compiler for Linux.  It
+dnl tries to imitate gcc, but does not return an error when it finds a mis=
match
+dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
+dnl
+dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS,=
 to
+dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked fr=
om
+dnl the wrappers for gcc and g++ warnings.
+dnl
+dnl $1 =3D GCC (default) or GXX
+dnl $2 =3D INTEL_COMPILER (default) or INTEL_CPLUSPLUS
+dnl $3 =3D CFLAGS (default) or CXXFLAGS
+AC_DEFUN([CF_INTEL_COMPILER],[
+ifelse([$2],,INTEL_COMPILER,[$2])=3Dno
+
+if test "$ifelse([$1],,[$1],GCC)" =3D yes ; then
+	case $host_os in
+	linux*|gnu*)
+		AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
+		cf_save_CFLAGS=3D"$ifelse([$3],,CFLAGS,[$3])"
+		ifelse([$3],,CFLAGS,[$3])=3D"$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
+		AC_TRY_COMPILE([],[
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+],[ifelse([$2],,INTEL_COMPILER,[$2])=3Dyes
+cf_save_CFLAGS=3D"$cf_save_CFLAGS -we147 -no-gcc"
+],[])
+		ifelse([$3],,CFLAGS,[$3])=3D"$cf_save_CFLAGS"
+		AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
+		;;
+	esac
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
+dnl ------------
+dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we =
have
+dnl a monocase filesystem.
+AC_DEFUN([CF_MAKE_TAGS],[
+AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
+
+AC_CHECK_PROGS(CTAGS, exctags ctags)
+AC_CHECK_PROGS(ETAGS, exetags etags)
+
+AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
+
+if test "$cf_cv_mixedcase" =3D yes ; then
+	AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
+else
+	MAKE_UPPER_TAGS=3Dno
+fi
+
+if test "$MAKE_UPPER_TAGS" =3D yes ; then
+	MAKE_UPPER_TAGS=3D
+else
+	MAKE_UPPER_TAGS=3D"#"
+fi
+
+if test "$MAKE_LOWER_TAGS" =3D yes ; then
+	MAKE_LOWER_TAGS=3D
+else
+	MAKE_LOWER_TAGS=3D"#"
+fi
+
+AC_SUBST(CTAGS)
+AC_SUBST(ETAGS)
+
+AC_SUBST(MAKE_UPPER_TAGS)
+AC_SUBST(MAKE_LOWER_TAGS)
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
+dnl ----------------------
+dnl Check if the file-system supports mixed-case filenames.  If we're able=
 to
+dnl create a lowercase name and see it as uppercase, it doesn't support th=
at.
+AC_DEFUN([CF_MIXEDCASE_FILENAMES],
+[
+AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase=
,[
+if test "$cross_compiling" =3D yes ; then
+	case $target_alias in #(vi
+	*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+		cf_cv_mixedcase=3Dno
+		;;
+	*)
+		cf_cv_mixedcase=3Dyes
+		;;
+	esac
+else
+	rm -f conftest CONFTEST
+	echo test >conftest
+	if test -f CONFTEST ; then
+		cf_cv_mixedcase=3Dno
+	else
+		cf_cv_mixedcase=3Dyes
+	fi
+	rm -f conftest CONFTEST
+fi
+])
+test "$cf_cv_mixedcase" =3D yes && AC_DEFINE(MIXEDCASE_FILENAMES)
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_MKSTEMP version: 7 updated: 2010/08/14 18:25:37
+dnl ----------
+dnl Check for a working mkstemp.  This creates two files, checks that they=
 are
+dnl successfully created and distinct (AmigaOS apparently fails on the las=
t).
+AC_DEFUN([CF_MKSTEMP],[
+AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
+rm -rf conftest*
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+int main()
+{
+	char *tmpl =3D "conftestXXXXXX";
+	char name[2][80];
+	int n;
+	int result =3D 0;
+	int fd;
+	struct stat sb;
+
+	umask(077);
+	for (n =3D 0; n < 2; ++n) {
+		strcpy(name[n], tmpl);
+		if ((fd =3D mkstemp(name[n])) >=3D 0) {
+			if (!strcmp(name[n], tmpl)
+			 || stat(name[n], &sb) !=3D 0
+			 || (sb.st_mode & S_IFMT) !=3D S_IFREG
+			 || (sb.st_mode & 077) !=3D 0) {
+				result =3D 1;
+			}
+			close(fd);
+		}
+	}
+	if (result =3D=3D 0
+	 && !strcmp(name[0], name[1]))
+		result =3D 1;
+	${cf_cv_main_return:-return}(result);
+}
+],[cf_cv_func_mkstemp=3Dyes
+],[cf_cv_func_mkstemp=3Dno
+],[AC_CHECK_FUNC(mkstemp)
+])
+])
+if test "x$cf_cv_func_mkstemp" =3D xyes || test "x$ac_cv_func_mkstemp" =3D=
 xyes ; then
+	AC_DEFINE(HAVE_MKSTEMP)
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
+dnl ----------
+dnl Write a debug message to config.log, along with the line number in the
+dnl configure script.
+AC_DEFUN([CF_MSG_LOG],[
+echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05
+dnl ------------------
+dnl see CF_WITH_NO_LEAKS
+AC_DEFUN([CF_NO_LEAKS_OPTION],[
+AC_MSG_CHECKING(if you want to use $1 for testing)
+AC_ARG_WITH($1,
+	[$2],
+	[AC_DEFINE($3)ifelse([$4],,[
+	 $4
+])
+	: ${with_cflags:=3D-g}
+	: ${with_no_leaks:=3Dyes}
+	 with_$1=3Dyes],
+	[with_$1=3D])
+AC_MSG_RESULT(${with_$1:-no})
+
+case .$with_cflags in #(vi
+.*-g*)
+	case .$CFLAGS in #(vi
+	.*-g*) #(vi
+		;;
+	*)
+		CF_ADD_CFLAGS([-g])
+		;;
+	esac
+	;;
+esac
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
+dnl -----------------
+dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
+dnl
+dnl	POSIX.1-1990				_POSIX_SOURCE
+dnl	POSIX.1-1990 and			_POSIX_SOURCE and
+dnl		POSIX.2-1992 C-Language			_POSIX_C_SOURCE=3D2
+dnl		Bindings Option
+dnl	POSIX.1b-1993				_POSIX_C_SOURCE=3D199309L
+dnl	POSIX.1c-1996				_POSIX_C_SOURCE=3D199506L
+dnl	X/Open 2000				_POSIX_C_SOURCE=3D200112L
+dnl
+dnl Parameters:
+dnl	$1 is the nominal value for _POSIX_C_SOURCE
+AC_DEFUN([CF_POSIX_C_SOURCE],
+[
+cf_POSIX_C_SOURCE=3Difelse([$1],,199506L,[$1])
+
+cf_save_CFLAGS=3D"$CFLAGS"
+cf_save_CPPFLAGS=3D"$CPPFLAGS"
+
+CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
+CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
+
+AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
+	CF_MSG_LOG(if the symbol is already defined go no further)
+	AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif],
+	[cf_cv_posix_c_source=3Dno],
+	[cf_want_posix_source=3Dno
+	 case .$cf_POSIX_C_SOURCE in #(vi
+	 .[[12]]??*) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		;;
+	 .2) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		cf_want_posix_source=3Dyes
+		;;
+	 .*)
+		cf_want_posix_source=3Dyes
+		;;
+	 esac
+	 if test "$cf_want_posix_source" =3D yes ; then
+		AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _POSIX_SOURCE
+make an error
+#endif],[],
+		cf_cv_posix_c_source=3D"$cf_cv_posix_c_source -D_POSIX_SOURCE")
+	 fi
+	 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
+	 CFLAGS=3D"$cf_trim_CFLAGS"
+	 CPPFLAGS=3D"$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+	 CF_MSG_LOG(if the second compile does not leave our definition intact er=
ror)
+	 AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif],,
+	 [cf_cv_posix_c_source=3Dno])
+	 CFLAGS=3D"$cf_save_CFLAGS"
+	 CPPFLAGS=3D"$cf_save_CPPFLAGS"
+	])
+])
+
+if test "$cf_cv_posix_c_source" !=3D no ; then
+	CFLAGS=3D"$cf_trim_CFLAGS"
+	CPPFLAGS=3D"$cf_trim_CPPFLAGS"
+	CF_ADD_CFLAGS($cf_cv_posix_c_source)
+fi
+
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18
+dnl -----------
+dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
+AC_DEFUN([CF_PROG_EXT],
+[
+AC_REQUIRE([CF_CHECK_CACHE])
+case $cf_cv_system_name in
+os2*)
+    CFLAGS=3D"$CFLAGS -Zmt"
+    CPPFLAGS=3D"$CPPFLAGS -D__ST_MT_ERRNO__"
+    CXXFLAGS=3D"$CXXFLAGS -Zmt"
+    # autoconf's macro sets -Zexe and suffix both, which conflict:w
+    LDFLAGS=3D"$LDFLAGS -Zmt -Zcrtdll"
+    ac_cv_exeext=3D.exe
+    ;;
+esac
+
+AC_EXEEXT
+AC_OBJEXT
+
+PROG_EXT=3D"$EXEEXT"
+AC_SUBST(PROG_EXT)
+test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT")
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
+dnl ------------
+AC_DEFUN([CF_PROG_LINT],
+[
+AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
+AC_SUBST(LINT_OPTS)
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
+dnl ----------------
+dnl Remove all -U and -D options that refer to the given symbol from a list
+dnl of C compiler options.  This works around the problem that not all
+dnl compilers process -U and -D options from left-to-right, so a -U option
+dnl cannot be used to cancel the effect of a preceding -D option.
+dnl
+dnl $1 =3D target (which could be the same as the source variable)
+dnl $2 =3D source (including '$')
+dnl $3 =3D symbol to remove
+define([CF_REMOVE_DEFINE],
+[
+$1=3D`echo "$2" | \
+	sed	-e 's/-[[UD]]'"$3"'\(=3D[[^ 	]]*\)\?[[ 	]]/ /g' \
+		-e 's/-[[UD]]'"$3"'\(=3D[[^ 	]]*\)\?[$]//g'`
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl -------------------
+dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
+dnl can define it successfully.
+AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
+AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
+	AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+	[cf_cv_xopen_source=3Dno],
+	[cf_save=3D"$CPPFLAGS"
+	 CPPFLAGS=3D"$CPPFLAGS -D_XOPEN_SOURCE=3D$cf_XOPEN_SOURCE"
+	 AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+	[cf_cv_xopen_source=3Dno],
+	[cf_cv_xopen_source=3D$cf_XOPEN_SOURCE])
+	CPPFLAGS=3D"$cf_save"
+	])
+])
+
+if test "$cf_cv_xopen_source" !=3D no ; then
+	CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
+	CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
+	cf_temp_xopen_source=3D"-D_XOPEN_SOURCE=3D$cf_cv_xopen_source"
+	CF_ADD_CFLAGS($cf_temp_xopen_source)
+fi
+])
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
+dnl --------
+dnl Make an uppercase version of a variable
+dnl $1=3Duppercase($2)
+AC_DEFUN([CF_UPPER],
+[
+$1=3D`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRST=
UVWXYZ___%`
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
+dnl ----------
+dnl Use AC_VERBOSE w/o the warnings
+AC_DEFUN([CF_VERBOSE],
+[test -n "$verbose" && echo "	$1" 1>&AC_FD_MSG
+CF_MSG_LOG([$1])
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ----------------
+dnl Configure-option for dbmalloc.  The optional parameter is used to over=
ride
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DBMALLOC],[
+CF_NO_LEAKS_OPTION(dbmalloc,
+	[  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
+	[USE_DBMALLOC])
+
+if test "$with_dbmalloc" =3D yes ; then
+	AC_CHECK_HEADER(dbmalloc.h,
+		[AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ---------------
+dnl Configure-option for dmalloc.  The optional parameter is used to overr=
ide
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DMALLOC],[
+CF_NO_LEAKS_OPTION(dmalloc,
+	[  --with-dmalloc          test: use Gray Watson's dmalloc library],
+	[USE_DMALLOC])
+
+if test "$with_dmalloc" =3D yes ; then
+	AC_CHECK_HEADER(dmalloc.h,
+		[AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
+dnl ----------------
+AC_DEFUN([CF_WITH_VALGRIND],[
+CF_NO_LEAKS_OPTION(valgrind,
+	[  --with-valgrind         test: use valgrind],
+	[USE_VALGRIND])
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_WITH_WARNINGS version: 5 updated: 2004/07/23 14:40:34
+dnl ----------------
+dnl Combine the checks for gcc features into a configure-script option
+dnl
+dnl Parameters:
+dnl	$1 - see CF_GCC_WARNINGS
+AC_DEFUN([CF_WITH_WARNINGS],
+[
+if ( test "$GCC" =3D yes || test "$GXX" =3D yes )
+then
+AC_MSG_CHECKING(if you want to check for gcc warnings)
+AC_ARG_WITH(warnings,
+	[  --with-warnings         test: turn on gcc warnings],
+	[cf_opt_with_warnings=3D$withval],
+	[cf_opt_with_warnings=3Dno])
+AC_MSG_RESULT($cf_opt_with_warnings)
+if test "$cf_opt_with_warnings" !=3D no ; then
+	CF_GCC_ATTRIBUTES
+	CF_GCC_WARNINGS([$1])
+fi
+fi
+])dnl
+dnl ----------------------------------------------------------------------=
-----
+dnl CF_XOPEN_SOURCE version: 42 updated: 2012/01/07 08:26:49
+dnl ---------------
+dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functi=
ons,
+dnl or adapt to the vendor's definitions to get equivalent functionality,
+dnl without losing the common non-POSIX features.
+dnl
+dnl Parameters:
+dnl	$1 is the nominal value for _XOPEN_SOURCE
+dnl	$2 is the nominal value for _POSIX_C_SOURCE
+AC_DEFUN([CF_XOPEN_SOURCE],[
+
+cf_XOPEN_SOURCE=3Difelse([$1],,500,[$1])
+cf_POSIX_C_SOURCE=3Difelse([$2],,199506L,[$2])
+cf_xopen_source=3D
+
+case $host_os in #(vi
+aix[[4-7]]*) #(vi
+	cf_xopen_source=3D"-D_ALL_SOURCE"
+	;;
+cygwin) #(vi
+	cf_XOPEN_SOURCE=3D600
+	;;
+darwin[[0-8]].*) #(vi
+	cf_xopen_source=3D"-D_APPLE_C_SOURCE"
+	;;
+darwin*) #(vi
+	cf_xopen_source=3D"-D_DARWIN_C_SOURCE"
+	cf_XOPEN_SOURCE=3D
+	;;
+freebsd*|dragonfly*) #(vi
+	# 5.x headers associate
+	#	_XOPEN_SOURCE=3D600 with _POSIX_C_SOURCE=3D200112L
+	#	_XOPEN_SOURCE=3D500 with _POSIX_C_SOURCE=3D199506L
+	cf_POSIX_C_SOURCE=3D200112L
+	cf_XOPEN_SOURCE=3D600
+	cf_xopen_source=3D"-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=3D$cf_P=
OSIX_C_SOURCE -D_XOPEN_SOURCE=3D$cf_XOPEN_SOURCE"
+	;;
+hpux11*) #(vi
+	cf_xopen_source=3D"-D_HPUX_SOURCE -D_XOPEN_SOURCE=3D500"
+	;;
+hpux*) #(vi
+	cf_xopen_source=3D"-D_HPUX_SOURCE"
+	;;
+irix[[56]].*) #(vi
+	cf_xopen_source=3D"-D_SGI_SOURCE"
+	cf_XOPEN_SOURCE=3D
+	;;
+linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+	CF_GNU_SOURCE
+	;;
+mirbsd*) #(vi
+	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other =
headers which use u_int / u_short types
+	cf_XOPEN_SOURCE=3D
+	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
+	;;
+netbsd*) #(vi
+	cf_xopen_source=3D"-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 =
for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+	;;
+openbsd[[4-9]]*) #(vi
+	# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, n=
eeded for ncursesw
+	cf_xopen_source=3D"-D_BSD_SOURCE"
+	cf_XOPEN_SOURCE=3D600
+	;;
+openbsd*) #(vi
+	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for nc=
ursesw
+	;;
+osf[[45]]*) #(vi
+	cf_xopen_source=3D"-D_OSF_SOURCE"
+	;;
+nto-qnx*) #(vi
+	cf_xopen_source=3D"-D_QNX_SOURCE"
+	;;
+sco*) #(vi
+	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+	;;
+solaris2.*) #(vi
+	cf_xopen_source=3D"-D__EXTENSIONS__"
+	;;
+*)
+	CF_TRY_XOPEN_SOURCE
+	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
+	;;
+esac
+
+if test -n "$cf_xopen_source" ; then
+	CF_ADD_CFLAGS($cf_xopen_source)
+fi
+
+dnl In anything but the default case, we may have system-specific setting
+dnl which is still not guaranteed to provide all of the entrypoints that
+dnl _XOPEN_SOURCE would yield.
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+	AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
+	AC_TRY_COMPILE([#include <stdlib.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+	[cf_XOPEN_SOURCE_set=3Dyes],
+	[cf_XOPEN_SOURCE_set=3Dno])
+	AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
+	if test $cf_XOPEN_SOURCE_set =3D yes
+	then
+		AC_TRY_COMPILE([#include <stdlib.h>],[
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif],
+		[cf_XOPEN_SOURCE_set_ok=3Dyes],
+		[cf_XOPEN_SOURCE_set_ok=3Dno])
+		if test $cf_XOPEN_SOURCE_set_ok =3D no
+		then
+			AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
+		fi
+	else
+		CF_TRY_XOPEN_SOURCE
+	fi
+fi
+])
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/closure.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/closure.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,251 @@
+/* $Id: closure.c,v 1.9 2010/06/09 08:21:47 tom Exp $ */
+
+#include "defs.h"
+
+Value_t *itemset;
+Value_t *itemsetend;
+unsigned *ruleset;
+
+static unsigned *first_derives;
+static unsigned *EFF;
+
+static void
+set_EFF(void)
+{
+    unsigned *row;
+    int symbol;
+    short *sp;
+    int rowsize;
+    int i;
+    int rule;
+
+    rowsize =3D WORDSIZE(nvars);
+    EFF =3D NEW2(nvars * rowsize, unsigned);
+
+    row =3D EFF;
+    for (i =3D start_symbol; i < nsyms; i++)
+    {
+	sp =3D derives[i];
+	for (rule =3D *sp; rule > 0; rule =3D *++sp)
+	{
+	    symbol =3D ritem[rrhs[rule]];
+	    if (ISVAR(symbol))
+	    {
+		symbol -=3D start_symbol;
+		SETBIT(row, symbol);
+	    }
+	}
+	row +=3D rowsize;
+    }
+
+    reflexive_transitive_closure(EFF, nvars);
+
+#ifdef	DEBUG
+    print_EFF();
+#endif
+}
+
+void
+set_first_derives(void)
+{
+    unsigned *rrow;
+    unsigned *vrow;
+    int j;
+    unsigned k;
+    unsigned cword =3D 0;
+    short *rp;
+
+    int rule;
+    int i;
+    int rulesetsize;
+    int varsetsize;
+
+    rulesetsize =3D WORDSIZE(nrules);
+    varsetsize =3D WORDSIZE(nvars);
+    first_derives =3D NEW2(nvars * rulesetsize, unsigned) - ntokens * rule=
setsize;
+
+    set_EFF();
+
+    rrow =3D first_derives + ntokens * rulesetsize;
+    for (i =3D start_symbol; i < nsyms; i++)
+    {
+	vrow =3D EFF + ((i - ntokens) * varsetsize);
+	k =3D BITS_PER_WORD;
+	for (j =3D start_symbol; j < nsyms; k++, j++)
+	{
+	    if (k >=3D BITS_PER_WORD)
+	    {
+		cword =3D *vrow++;
+		k =3D 0;
+	    }
+
+	    if (cword & (unsigned)(1 << k))
+	    {
+		rp =3D derives[j];
+		while ((rule =3D *rp++) >=3D 0)
+		{
+		    SETBIT(rrow, rule);
+		}
+	    }
+	}
+
+	rrow +=3D rulesetsize;
+    }
+
+#ifdef	DEBUG
+    print_first_derives();
+#endif
+
+    FREE(EFF);
+}
+
+void
+closure(short *nucleus, int n)
+{
+    unsigned ruleno;
+    unsigned word;
+    unsigned i;
+    Value_t *csp;
+    unsigned *dsp;
+    unsigned *rsp;
+    int rulesetsize;
+
+    Value_t *csend;
+    unsigned *rsend;
+    int symbol;
+    Value_t itemno;
+
+    rulesetsize =3D WORDSIZE(nrules);
+    rsend =3D ruleset + rulesetsize;
+    for (rsp =3D ruleset; rsp < rsend; rsp++)
+	*rsp =3D 0;
+
+    csend =3D nucleus + n;
+    for (csp =3D nucleus; csp < csend; ++csp)
+    {
+	symbol =3D ritem[*csp];
+	if (ISVAR(symbol))
+	{
+	    dsp =3D first_derives + symbol * rulesetsize;
+	    rsp =3D ruleset;
+	    while (rsp < rsend)
+		*rsp++ |=3D *dsp++;
+	}
+    }
+
+    ruleno =3D 0;
+    itemsetend =3D itemset;
+    csp =3D nucleus;
+    for (rsp =3D ruleset; rsp < rsend; ++rsp)
+    {
+	word =3D *rsp;
+	if (word)
+	{
+	    for (i =3D 0; i < BITS_PER_WORD; ++i)
+	    {
+		if (word & (unsigned)(1 << i))
+		{
+		    itemno =3D rrhs[ruleno + i];
+		    while (csp < csend && *csp < itemno)
+			*itemsetend++ =3D *csp++;
+		    *itemsetend++ =3D itemno;
+		    while (csp < csend && *csp =3D=3D itemno)
+			++csp;
+		}
+	    }
+	}
+	ruleno +=3D BITS_PER_WORD;
+    }
+
+    while (csp < csend)
+	*itemsetend++ =3D *csp++;
+
+#ifdef	DEBUG
+    print_closure(n);
+#endif
+}
+
+void
+finalize_closure(void)
+{
+    FREE(itemset);
+    FREE(ruleset);
+    FREE(first_derives + ntokens * WORDSIZE(nrules));
+}
+
+#ifdef	DEBUG
+
+void
+print_closure(int n)
+{
+    short *isp;
+
+    printf("\n\nn =3D %d\n\n", n);
+    for (isp =3D itemset; isp < itemsetend; isp++)
+	printf("   %d\n", *isp);
+}
+
+void
+print_EFF(void)
+{
+    int i, j;
+    unsigned *rowp;
+    unsigned word;
+    unsigned k;
+
+    printf("\n\nEpsilon Free Firsts\n");
+
+    for (i =3D start_symbol; i < nsyms; i++)
+    {
+	printf("\n%s", symbol_name[i]);
+	rowp =3D EFF + ((i - start_symbol) * WORDSIZE(nvars));
+	word =3D *rowp++;
+
+	k =3D BITS_PER_WORD;
+	for (j =3D 0; j < nvars; k++, j++)
+	{
+	    if (k >=3D BITS_PER_WORD)
+	    {
+		word =3D *rowp++;
+		k =3D 0;
+	    }
+
+	    if (word & (1 << k))
+		printf("  %s", symbol_name[start_symbol + j]);
+	}
+    }
+}
+
+void
+print_first_derives(void)
+{
+    int i;
+    int j;
+    unsigned *rp;
+    unsigned cword =3D 0;
+    unsigned k;
+
+    printf("\n\n\nFirst Derives\n");
+
+    for (i =3D start_symbol; i < nsyms; i++)
+    {
+	printf("\n%s derives\n", symbol_name[i]);
+	rp =3D first_derives + i * WORDSIZE(nrules);
+	k =3D BITS_PER_WORD;
+	for (j =3D 0; j <=3D nrules; k++, j++)
+	{
+	    if (k >=3D BITS_PER_WORD)
+	    {
+		cword =3D *rp++;
+		k =3D 0;
+	    }
+
+	    if (cword & (1 << k))
+		printf("   %d\n", j);
+	}
+    }
+
+    fflush(stdout);
+}
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/config.guess
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/config.guess	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1511 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2911 Free Software Foundation, Inc.
+
+timestamp=3D'2011-01-01'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches at gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=3Dconfig.git;a=3Dblob_plain;f=3Dco=
nfig.guess;hb=3DHEAD
+
+me=3D`echo "$0" | sed -e 's,.*/,,'`
+
+usage=3D"\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version=3D"\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE=
."
+
+help=3D"
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# !=3D 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build=3D'
+trap "exitcode=3D\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/nu=
ll) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 1=
3 15 ;
+: ${TMPDIR=3D/tmp} ;
+ { tmp=3D`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test=
 -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=3D$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir =
$tmp) ; } ||
+ { tmp=3D$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: crea=
ting insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1=
 ; } ;
+dummy=3D$tmp/dummy ;
+tmpfiles=3D"$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD=3D"$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" =3D x ; then
+	  CC_FOR_BUILD=3Dno_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=3D$CC ;;
+ ,*,*)  CC_FOR_BUILD=3D$HOST_CC ;;
+esac ; set_cc_for_build=3D ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD univer=
se.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=3D$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=3D`(uname -m) 2>/dev/null` || UNAME_MACHINE=3Dunknown
+UNAME_RELEASE=3D`(uname -r) 2>/dev/null` || UNAME_RELEASE=3Dunknown
+UNAME_SYSTEM=3D`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=3Dunknown
+UNAME_VERSION=3D`(uname -v) 2>/dev/null` || UNAME_VERSION=3Dunknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" =
in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl=3D"sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=3D`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=3Darmeb-unknown ;;
+	    arm*) machine=3Darm-unknown ;;
+	    sh3el) machine=3Dshl-unknown ;;
+	    sh3eb) machine=3Dsh-unknown ;;
+	    sh5el) machine=3Dsh5le-unknown ;;
+	    *) machine=3D${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout=
).
+		    # Return netbsd for either.  FIX?
+		    os=3Dnetbsd
+		else
+		    os=3Dnetbsdelf
+		fi
+		;;
+	    *)
+		os=3Dnetbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release=3D'-gnu'
+		;;
+	    *)
+		release=3D`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=3D`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	    *4.0)
+		UNAME_RELEASE=3D`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	    *5.*)
+		UNAME_RELEASE=3D`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=3D`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\)=
 processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE=3D"alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE=3D"alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE=3D"alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE=3D"alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE=3D"alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE=3D"alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE=3D"alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE=3D"alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE=3D"alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE=3D"alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE=3D"alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE=3D"alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE=3D"alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE=3D"alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE=3D"alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//=
' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=3D$?
+	trap '' 0
+	exit $exitcode ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+	echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" =3D att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*/=
/'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH=3D"i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" !=3D 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS=3D $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH=3D"x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=3D`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=3D`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev=
/null`
+	test "x${UNAME_RELEASE}" =3D "x" && UNAME_RELEASE=3D3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=3D`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=3D`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=3D`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR =3D mc88100 ] || [ $UNAME_PROCESSOR =3D mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x =3D m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x =3D x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=3D`/usr/bin/oslevel`
+	else
+		IBM_REV=3D${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=3D`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[4567])
+	IBM_CPU_ID=3D`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk=
 '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; th=
en
+		IBM_ARCH=3Drs6000
+	else
+		IBM_ARCH=3Dpowerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=3D`/usr/bin/oslevel`
+	else
+		IBM_REV=3D${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=3D`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=3Dm68000 ;;
+	    9000/[34]?? )         HP_ARCH=3Dm68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=3D`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+		    sc_kernel_bits=3D`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+                      523) HP_ARCH=3D"hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH=3D"hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH=3D"hppa2.0n" ;;
+                          64) HP_ARCH=3D"hppa2.0w" ;;
+			  '') HP_ARCH=3D"hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" =3D "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits =3D sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  =3D sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS=3D $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=
=3D`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=3Dhppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} =3D "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=3Dcc ./config.guess
+	    # =3D> hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD=3D"cc +DA2.0w" ./config.guess
+	    # =3D> hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS=3D $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH=3D"hppa2.0w"
+	    else
+		HP_ARCH=3D"hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=3D`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu =3D sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=3D`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+	exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+	exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+	exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+	exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=3D`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklm=
nopqrstuvwxyz'`
+	FUJITSU_SYS=3D`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmn=
opqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=3D`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    5000:UNIX_System_V:4.*:*)
+	FUJITSU_SYS=3D`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmn=
opqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=3D`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'a=
bcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-=
(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:*)
+	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    authenticamd | genuineintel | EM64T)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAM=
E_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' |=
 tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	    EV5)   UNAME_MACHINE=3Dalphaev5 ;;
+	    EV56)  UNAME_MACHINE=3Dalphaev56 ;;
+	    PCA56) UNAME_MACHINE=3Dalphapca56 ;;
+	    PCA57) UNAME_MACHINE=3Dalphapca56 ;;
+	    EV6)   UNAME_MACHINE=3Dalphaev6 ;;
+	    EV67)  UNAME_MACHINE=3Dalphaev67 ;;
+	    EV68*) UNAME_MACHINE=3Dalphaev68 ;;
+	esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" =3D 0 ; then LIBC=3D"libc1" ; else LIBC=3D"" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null | \
+	    grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+	echo frv-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	LIBC=3Dgnu
+	eval $set_cc_for_build
+	sed 's/^        //' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=3Ddietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defin=
ed(MIPSEL)
+	CPU=3D${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defin=
ed(MIPSEB)
+	CPU=3D${UNAME_MACHINE}
+	#else
+	CPU=3D
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+	test x"${CPU}" !=3D x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-tilera-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+	# Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=3D`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=3Di486 ;;
+	    *Pentium)	     UNAME_MACHINE=3Di586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=3Di686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_=
VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=3D`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=3D`(/bin/uname -X|grep Release|sed -e 's/.*=3D //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=3Di486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=3Di586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=3Di686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=3Di686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+	exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]?=
?/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:=
4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=3D''
+	test -r /etc/.relid \
+	&& OS_REL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	   && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL=3D'.3'
+	test -r /etc/.relid \
+	    && OS_REL=3D.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.re=
lid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02=
]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=3D`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+	              # says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+	exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=3D`uname -p` || UNAME_PROCESSOR=3Dunknown
+	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" !=3D 'no_compiler_found' ]; then
+		    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+			(CCOPTS=3D $CC_FOR_BUILD -E - 2>/dev/null) | \
+			grep IS_64BIT_ARCH >/dev/null
+		    then
+			UNAME_PROCESSOR=3D"x86_64"
+		    fi
+		fi ;;
+	    unknown) UNAME_PROCESSOR=3Dpowerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=3D`uname -p`
+	if test "$UNAME_PROCESSOR" =3D "x86"; then
+	    UNAME_PROCESSOR=3Di386
+	    UNAME_MACHINE=3Dpc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" =3D "386"; then
+	    UNAME_MACHINE=3Di386
+	else
+	    UNAME_MACHINE=3D"$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+	echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[=
-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+	UNAME_MACHINE=3D`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}"=
 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=3D`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/=
null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) =3D=3D 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) =3D=3D 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD =3D=3D 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD =3D=3D 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=3D`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=3Dconfig.git;a=3Dblob_plain;f=3Dco=
nfig.guess;hb=3DHEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=3Dconfig.git;a=3Dblob_plain;f=3Dco=
nfig.sub;hb=3DHEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp =3D $timestamp
+
+uname -m =3D `(uname -m) 2>/dev/null || echo unknown`
+uname -r =3D `(uname -r) 2>/dev/null || echo unknown`
+uname -s =3D `(uname -s) 2>/dev/null || echo unknown`
+uname -v =3D `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p =3D `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     =3D `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               =3D `(hostinfo) 2>/dev/null`
+/bin/universe          =3D `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       =3D `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              =3D `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       =3D `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo =3D `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE =3D ${UNAME_MACHINE}
+UNAME_RELEASE =3D ${UNAME_RELEASE}
+UNAME_SYSTEM  =3D ${UNAME_SYSTEM}
+UNAME_VERSION =3D ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp=3D'"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/config.sub
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/config.sub	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1760 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   2011 Free Software Foundation, Inc.
+
+timestamp=3D'2011-04-01'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration ty=
pe.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code=
 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=3Dconfig.git;a=3Dblob_plain;f=3Dco=
nfig.sub;hb=3DHEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=3D`echo "$0" | sed -e 's,.*/,,'`
+
+usage=3D"\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version=3D"\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE=
."
+
+help=3D"
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any=
).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=3D`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* =
| \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=3D-$maybe_os
+    basic_machine=3D`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=3D`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine !=3D $1 ]
+    then os=3D`echo $1 | sed 's/.*-/-/'`
+    else os=3D; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray | -microblaze)
+		os=3D
+		basic_machine=3D$1
+		;;
+	-bluegene*)
+		os=3D-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=3D
+		basic_machine=3D$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=3D-vxworks
+		basic_machine=3D$1
+		;;
+	-chorusos*)
+		os=3D-chorusos
+		basic_machine=3D$1
+		;;
+	-chorusrdb)
+		os=3D-chorusrdb
+		basic_machine=3D$1
+		;;
+	-hiux*)
+		os=3D-hiuxwe2
+		;;
+	-sco6)
+		os=3D-sco5v6
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=3D-sco3.2v5
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=3D-sco3.2v4
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=3D`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=3D-sco3.2v2
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=3D-isc2.2
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=3Dclipper-intergraph
+		;;
+	-isc*)
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=3D-lynxos
+		;;
+	-ptx*)
+		basic_machine=3D`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=3D`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=3D-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=3Dm68k-atari
+		os=3D-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[6=
7] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | av=
r32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nds32 | nds32le | nds32be \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| open8 \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pyramid \
+	| rx \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe =
| shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite=
 \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=3D$basic_machine-unknown
+		;;
+	c54x)
+		basic_machine=3Dtic54x-unknown
+		;;
+	c55x)
+		basic_machine=3Dtic55x-unknown
+		;;
+	c6x)
+		basic_machine=3Dtic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+		# Motorola 68HC11/12.
+		basic_machine=3D$basic_machine-unknown
+		os=3D-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=3Dmt-unknown
+		;;
+	strongarm | thumb | xscale)
+		basic_machine=3Darm-unknown
+		;;
+	xscaleeb)
+		basic_machine=3Darmeb-unknown
+		;;
+	xscaleel)
+		basic_machine=3Darmel-unknown
+		;;
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+		basic_machine=3D$basic_machine-pc
+		;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recogn=
ized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pyramid-* \
+	| romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | =
sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-*=
 \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile-* | tilegx-* \
+	| tron-* \
+	| ubicom32-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=3D$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=3Di386-unknown
+		os=3D-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=3Dm68000-att
+		;;
+	3b*)
+		basic_machine=3Dwe32k-att
+		;;
+	a29khif)
+		basic_machine=3Da29k-amd
+		os=3D-udi
+		;;
+	abacus)
+		basic_machine=3Dabacus-unknown
+		;;
+	adobe68k)
+		basic_machine=3Dm68010-adobe
+		os=3D-scout
+		;;
+	alliant | fx80)
+		basic_machine=3Dfx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=3Dm68k-altos
+		;;
+	am29k)
+		basic_machine=3Da29k-none
+		os=3D-bsd
+		;;
+	amd64)
+		basic_machine=3Dx86_64-pc
+		;;
+	amd64-*)
+		basic_machine=3Dx86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=3D580-amdahl
+		os=3D-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=3Dm68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=3Dm68k-unknown
+		os=3D-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=3Dm68k-unknown
+		os=3D-sysv4
+		;;
+	apollo68)
+		basic_machine=3Dm68k-apollo
+		os=3D-sysv
+		;;
+	apollo68bsd)
+		basic_machine=3Dm68k-apollo
+		os=3D-bsd
+		;;
+	aros)
+		basic_machine=3Di386-pc
+		os=3D-aros
+		;;
+	aux)
+		basic_machine=3Dm68k-apple
+		os=3D-aux
+		;;
+	balance)
+		basic_machine=3Dns32k-sequent
+		os=3D-dynix
+		;;
+	blackfin)
+		basic_machine=3Dbfin-unknown
+		os=3D-linux
+		;;
+	blackfin-*)
+		basic_machine=3Dbfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=3D-linux
+		;;
+	bluegene*)
+		basic_machine=3Dpowerpc-ibm
+		os=3D-cnk
+		;;
+	c54x-*)
+		basic_machine=3Dtic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=3Dtic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=3Dtic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c90)
+		basic_machine=3Dc90-cray
+		os=3D-unicos
+		;;
+	cegcc)
+		basic_machine=3Darm-unknown
+		os=3D-cegcc
+		;;
+	convex-c1)
+		basic_machine=3Dc1-convex
+		os=3D-bsd
+		;;
+	convex-c2)
+		basic_machine=3Dc2-convex
+		os=3D-bsd
+		;;
+	convex-c32)
+		basic_machine=3Dc32-convex
+		os=3D-bsd
+		;;
+	convex-c34)
+		basic_machine=3Dc34-convex
+		os=3D-bsd
+		;;
+	convex-c38)
+		basic_machine=3Dc38-convex
+		os=3D-bsd
+		;;
+	cray | j90)
+		basic_machine=3Dj90-cray
+		os=3D-unicos
+		;;
+	craynv)
+		basic_machine=3Dcraynv-cray
+		os=3D-unicosmp
+		;;
+	cr16 | cr16-*)
+		basic_machine=3Dcr16-unknown
+		os=3D-elf
+		;;
+	crds | unos)
+		basic_machine=3Dm68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=3Dcrisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=3Dcris-axis
+		;;
+	crx)
+		basic_machine=3Dcrx-unknown
+		os=3D-elf
+		;;
+	da30 | da30-*)
+		basic_machine=3Dm68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=3Dmips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=3Dpdp10-dec
+		os=3D-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=3Dpdp10-dec
+		os=3D-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=3Dm68k-motorola
+		;;
+	delta88)
+		basic_machine=3Dm88k-motorola
+		os=3D-sysv3
+		;;
+	dicos)
+		basic_machine=3Di686-pc
+		os=3D-dicos
+		;;
+	djgpp)
+		basic_machine=3Di586-pc
+		os=3D-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=3Drs6000-bull
+		os=3D-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=3Dm68k-bull
+		os=3D-sysv3
+		;;
+	ebmon29k)
+		basic_machine=3Da29k-amd
+		os=3D-ebmon
+		;;
+	elxsi)
+		basic_machine=3Delxsi-elxsi
+		os=3D-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=3Dns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=3Dm68k-ericsson
+		os=3D-ose
+		;;
+	fx2800)
+		basic_machine=3Di860-alliant
+		;;
+	genix)
+		basic_machine=3Dns32k-ns
+		;;
+	gmicro)
+		basic_machine=3Dtron-gmicro
+		os=3D-sysv
+		;;
+	go32)
+		basic_machine=3Di386-pc
+		os=3D-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=3Dhppa1.1-hitachi
+		os=3D-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=3Dh8300-hitachi
+		os=3D-hms
+		;;
+	h8300xray)
+		basic_machine=3Dh8300-hitachi
+		os=3D-xray
+		;;
+	h8500hms)
+		basic_machine=3Dh8500-hitachi
+		os=3D-hms
+		;;
+	harris)
+		basic_machine=3Dm88k-harris
+		os=3D-sysv3
+		;;
+	hp300-*)
+		basic_machine=3Dm68k-hp
+		;;
+	hp300bsd)
+		basic_machine=3Dm68k-hp
+		os=3D-bsd
+		;;
+	hp300hpux)
+		basic_machine=3Dm68k-hp
+		os=3D-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=3Dhppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=3Dm68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=3Dm68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=3Dhppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=3Dhppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=3Dhppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | h=
p9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=3Dhppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=3Dhppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=3Dhppa1.0-hp
+		;;
+	hppa-next)
+		os=3D-nextstep3
+		;;
+	hppaosf)
+		basic_machine=3Dhppa1.1-hp
+		os=3D-osf
+		;;
+	hppro)
+		basic_machine=3Dhppa1.1-hp
+		os=3D-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=3Di370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=3D`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=3D-sysv32
+		;;
+	i*86v4*)
+		basic_machine=3D`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=3D-sysv4
+		;;
+	i*86v)
+		basic_machine=3D`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=3D-sysv
+		;;
+	i*86sol2)
+		basic_machine=3D`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=3D-solaris2
+		;;
+	i386mach)
+		basic_machine=3Di386-mach
+		os=3D-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=3Di386-unknown
+		os=3D-vsta
+		;;
+	iris | iris4d)
+		basic_machine=3Dmips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=3D-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=3Dm68k-isi
+		os=3D-sysv
+		;;
+	m68knommu)
+		basic_machine=3Dm68k-unknown
+		os=3D-linux
+		;;
+	m68knommu-*)
+		basic_machine=3Dm68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=3D-linux
+		;;
+	m88k-omron*)
+		basic_machine=3Dm88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=3Dmips-mips
+		os=3D-sysv
+		;;
+	merlin)
+		basic_machine=3Dns32k-utek
+		os=3D-sysv
+		;;
+	microblaze)
+		basic_machine=3Dmicroblaze-xilinx
+		;;
+	mingw32)
+		basic_machine=3Di386-pc
+		os=3D-mingw32
+		;;
+	mingw32ce)
+		basic_machine=3Darm-unknown
+		os=3D-mingw32ce
+		;;
+	miniframe)
+		basic_machine=3Dm68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=3Dm68k-atari
+		os=3D-mint
+		;;
+	mips3*-*)
+		basic_machine=3D`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=3D`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=3Dm68k-rom68k
+		os=3D-coff
+		;;
+	morphos)
+		basic_machine=3Dpowerpc-unknown
+		os=3D-morphos
+		;;
+	msdos)
+		basic_machine=3Di386-pc
+		os=3D-msdos
+		;;
+	ms1-*)
+		basic_machine=3D`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=3Di370-ibm
+		os=3D-mvs
+		;;
+	ncr3000)
+		basic_machine=3Di486-ncr
+		os=3D-sysv4
+		;;
+	netbsd386)
+		basic_machine=3Di386-unknown
+		os=3D-netbsd
+		;;
+	netwinder)
+		basic_machine=3Darmv4l-rebel
+		os=3D-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=3Dm68k-sony
+		os=3D-newsos
+		;;
+	news1000)
+		basic_machine=3Dm68030-sony
+		os=3D-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=3Dmips-sony
+		os=3D-newsos
+		;;
+	necv70)
+		basic_machine=3Dv70-nec
+		os=3D-sysv
+		;;
+	next | m*-next)
+		basic_machine=3Dm68k-next
+		case $os in
+		    -nextstep*)
+			;;
+		    -ns2*)
+		      os=3D-nextstep2
+			;;
+		    *)
+		      os=3D-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=3Dm68k-harris
+		os=3D-cxux
+		;;
+	nh[45]000)
+		basic_machine=3Dm88k-harris
+		os=3D-cxux
+		;;
+	nindy960)
+		basic_machine=3Di960-intel
+		os=3D-nindy
+		;;
+	mon960)
+		basic_machine=3Di960-intel
+		os=3D-mon960
+		;;
+	nonstopux)
+		basic_machine=3Dmips-compaq
+		os=3D-nonstopux
+		;;
+	np1)
+		basic_machine=3Dnp1-gould
+		;;
+	neo-tandem)
+		basic_machine=3Dneo-tandem
+		;;
+	nse-tandem)
+		basic_machine=3Dnse-tandem
+		;;
+	nsr-tandem)
+		basic_machine=3Dnsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=3Dhppa1.1-oki
+		os=3D-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=3Dor32-unknown
+		;;
+	os400)
+		basic_machine=3Dpowerpc-ibm
+		os=3D-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=3Dm68000-ericsson
+		os=3D-ose
+		;;
+	os68k)
+		basic_machine=3Dm68k-none
+		os=3D-os68k
+		;;
+	pa-hitachi)
+		basic_machine=3Dhppa1.1-hitachi
+		os=3D-hiuxwe2
+		;;
+	paragon)
+		basic_machine=3Di860-intel
+		os=3D-osf
+		;;
+	parisc)
+		basic_machine=3Dhppa-unknown
+		os=3D-linux
+		;;
+	parisc-*)
+		basic_machine=3Dhppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=3D-linux
+		;;
+	pbd)
+		basic_machine=3Dsparc-tti
+		;;
+	pbb)
+		basic_machine=3Dm68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=3Dns32k-pc532
+		;;
+	pc98)
+		basic_machine=3Di386-pc
+		;;
+	pc98-*)
+		basic_machine=3Di386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=3Di586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=3Di686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=3Di686-pc
+		;;
+	pentium4)
+		basic_machine=3Di786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=3Di586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=3Di686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=3Di686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=3Di786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=3Dpn-gould
+		;;
+	power)
+		basic_machine=3Dpower-ibm
+		;;
+	ppc | ppcbe)
+		basic_machine=3Dpowerpc-unknown
+		;;
+	ppc-* | ppcbe-*)
+		basic_machine=3Dpowerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=3Dpowerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=3Dpowerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)
+		basic_machine=3Dpowerpc64-unknown
+		;;
+	ppc64-*)
+		basic_machine=3Dpowerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=3Dpowerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=3Dpowerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=3Di386-ibm
+		;;
+	pw32)
+		basic_machine=3Di586-unknown
+		os=3D-pw32
+		;;
+	rdos)
+		basic_machine=3Di386-pc
+		os=3D-rdos
+		;;
+	rom68k)
+		basic_machine=3Dm68k-rom68k
+		os=3D-coff
+		;;
+	rm[46]00)
+		basic_machine=3Dmips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=3Dromp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=3Ds390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=3Ds390x-ibm
+		;;
+	sa29200)
+		basic_machine=3Da29k-amd
+		os=3D-udi
+		;;
+	sb1)
+		basic_machine=3Dmipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=3Dmipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=3Dmipsisa32-sde
+		os=3D-elf
+		;;
+	sei)
+		basic_machine=3Dmips-sei
+		os=3D-seiux
+		;;
+	sequent)
+		basic_machine=3Di386-sequent
+		;;
+	sh)
+		basic_machine=3Dsh-hitachi
+		os=3D-hms
+		;;
+	sh5el)
+		basic_machine=3Dsh5le-unknown
+		;;
+	sh64)
+		basic_machine=3Dsh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=3Dsparclite-wrs
+		os=3D-vxworks
+		;;
+	sps7)
+		basic_machine=3Dm68k-bull
+		os=3D-sysv2
+		;;
+	spur)
+		basic_machine=3Dspur-unknown
+		;;
+	st2000)
+		basic_machine=3Dm68k-tandem
+		;;
+	stratus)
+		basic_machine=3Di860-stratus
+		os=3D-sysv4
+		;;
+	strongarm-* | thumb-*)
+		basic_machine=3Darm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	sun2)
+		basic_machine=3Dm68000-sun
+		;;
+	sun2os3)
+		basic_machine=3Dm68000-sun
+		os=3D-sunos3
+		;;
+	sun2os4)
+		basic_machine=3Dm68000-sun
+		os=3D-sunos4
+		;;
+	sun3os3)
+		basic_machine=3Dm68k-sun
+		os=3D-sunos3
+		;;
+	sun3os4)
+		basic_machine=3Dm68k-sun
+		os=3D-sunos4
+		;;
+	sun4os3)
+		basic_machine=3Dsparc-sun
+		os=3D-sunos3
+		;;
+	sun4os4)
+		basic_machine=3Dsparc-sun
+		os=3D-sunos4
+		;;
+	sun4sol2)
+		basic_machine=3Dsparc-sun
+		os=3D-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=3Dm68k-sun
+		;;
+	sun4)
+		basic_machine=3Dsparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=3Di386-sun
+		;;
+	sv1)
+		basic_machine=3Dsv1-cray
+		os=3D-unicos
+		;;
+	symmetry)
+		basic_machine=3Di386-sequent
+		os=3D-dynix
+		;;
+	t3e)
+		basic_machine=3Dalphaev5-cray
+		os=3D-unicos
+		;;
+	t90)
+		basic_machine=3Dt90-cray
+		os=3D-unicos
+		;;
+	# This must be matched before tile*.
+	tilegx*)
+		basic_machine=3Dtilegx-unknown
+		os=3D-linux-gnu
+		;;
+	tile*)
+		basic_machine=3Dtile-unknown
+		os=3D-linux-gnu
+		;;
+	tx39)
+		basic_machine=3Dmipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=3Dmipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=3Dpdp10-xkl
+		os=3D-tops20
+		;;
+	tower | tower-32)
+		basic_machine=3Dm68k-ncr
+		;;
+	tpf)
+		basic_machine=3Ds390x-ibm
+		os=3D-tpf
+		;;
+	udi29k)
+		basic_machine=3Da29k-amd
+		os=3D-udi
+		;;
+	ultra3)
+		basic_machine=3Da29k-nyu
+		os=3D-sym1
+		;;
+	v810 | necv810)
+		basic_machine=3Dv810-nec
+		os=3D-none
+		;;
+	vaxv)
+		basic_machine=3Dvax-dec
+		os=3D-sysv
+		;;
+	vms)
+		basic_machine=3Dvax-dec
+		os=3D-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=3Df301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=3Di960-wrs
+		os=3D-vxworks
+		;;
+	vxworks68)
+		basic_machine=3Dm68k-wrs
+		os=3D-vxworks
+		;;
+	vxworks29k)
+		basic_machine=3Da29k-wrs
+		os=3D-vxworks
+		;;
+	w65*)
+		basic_machine=3Dw65-wdc
+		os=3D-none
+		;;
+	w89k-*)
+		basic_machine=3Dhppa1.1-winbond
+		os=3D-proelf
+		;;
+	xbox)
+		basic_machine=3Di686-pc
+		os=3D-mingw32
+		;;
+	xps | xps100)
+		basic_machine=3Dxps100-honeywell
+		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=3D`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
+	ymp)
+		basic_machine=3Dymp-cray
+		os=3D-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=3Dz8k-unknown
+		os=3D-sim
+		;;
+	z80-*-coff)
+		basic_machine=3Dz80-unknown
+		os=3D-sim
+		;;
+	none)
+		basic_machine=3Dnone-none
+		os=3D-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=3Dhppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=3Dhppa1.1-oki
+		;;
+	op60c)
+		basic_machine=3Dhppa1.1-oki
+		;;
+	romp)
+		basic_machine=3Dromp-ibm
+		;;
+	mmix)
+		basic_machine=3Dmmix-knuth
+		;;
+	rs6000)
+		basic_machine=3Drs6000-ibm
+		;;
+	vax)
+		basic_machine=3Dvax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=3Dpdp10-unknown
+		;;
+	pdp11)
+		basic_machine=3Dpdp11-dec
+		;;
+	we32k)
+		basic_machine=3Dwe32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=3Dsh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=3Dsparc-sun
+		;;
+	cydra)
+		basic_machine=3Dcydra-cydrome
+		;;
+	orion)
+		basic_machine=3Dorion-highlevel
+		;;
+	orion105)
+		basic_machine=3Dclipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=3Dm68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=3Dpowerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recogn=
ized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=3D`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=3D`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" !=3D x"" ]
+then
+case $os in
+	# First match some system type aliases
+	# that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-auroraux)
+		os=3D-auroraux
+		;;
+	-solaris1 | -solaris1.*)
+		os=3D`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=3D-solaris2
+		;;
+	-svr4*)
+		os=3D-sysv4
+		;;
+	-unixware*)
+		os=3D-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=3D`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos=
[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris=
* \
+	      | -sym* | -kopensolaris* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=3D-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=3D`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=3D`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=3D-linux-dietlibc
+		;;
+	-linux*)
+		os=3D`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=3D`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=3D`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=3D-openedition
+		;;
+	-os400*)
+		os=3D-os400
+		;;
+	-wince*)
+		os=3D-wince
+		;;
+	-osfrose*)
+		os=3D-osfrose
+		;;
+	-osf*)
+		os=3D-osf
+		;;
+	-utek*)
+		os=3D-bsd
+		;;
+	-dynix*)
+		os=3D-bsd
+		;;
+	-acis*)
+		os=3D-aos
+		;;
+	-atheos*)
+		os=3D-atheos
+		;;
+	-syllable*)
+		os=3D-syllable
+		;;
+	-386bsd)
+		os=3D-bsd
+		;;
+	-ctix* | -uts*)
+		os=3D-sysv
+		;;
+	-nova*)
+		os=3D-rtmk-nova
+		;;
+	-ns2)
+		os=3D-nextstep2
+		;;
+	-nsk*)
+		os=3D-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=3D`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=3D-sysv4
+		;;
+	-tpf*)
+		os=3D-tpf
+		;;
+	-triton*)
+		os=3D-sysv3
+		;;
+	-oss*)
+		os=3D-sysv3
+		;;
+	-svr4)
+		os=3D-sysv4
+		;;
+	-svr3)
+		os=3D-sysv3
+		;;
+	-sysvr4)
+		os=3D-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=3D-ose
+		;;
+	-es1800*)
+		os=3D-ose
+		;;
+	-xenix)
+		os=3D-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=3D-mint
+		;;
+	-aros*)
+		os=3D-aros
+		;;
+	-kaos*)
+		os=3D-kaos
+		;;
+	-zvmoe)
+		os=3D-zvmoe
+		;;
+	-dicos*)
+		os=3D-dicos
+		;;
+	-nacl*)
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=3D`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various mach=
ines.
+# The value should be what the vendor currently ships out the door with th=
eir
+# machine or put another way, the most popular os provided with the machin=
e.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	score-*)
+		os=3D-elf
+		;;
+	spu-*)
+		os=3D-elf
+		;;
+	*-acorn)
+		os=3D-riscix1.2
+		;;
+	arm*-rebel)
+		os=3D-linux
+		;;
+	arm*-semi)
+		os=3D-aout
+		;;
+	c4x-* | tic4x-*)
+		os=3D-coff
+		;;
+	tic54x-*)
+		os=3D-coff
+		;;
+	tic55x-*)
+		os=3D-coff
+		;;
+	tic6x-*)
+		os=3D-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=3D-tops20
+		;;
+	pdp11-*)
+		os=3D-none
+		;;
+	*-dec | vax-*)
+		os=3D-ultrix4.2
+		;;
+	m68*-apollo)
+		os=3D-domain
+		;;
+	i386-sun)
+		os=3D-sunos4.0.2
+		;;
+	m68000-sun)
+		os=3D-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=3D-sunos4
+		;;
+	m68*-cisco)
+		os=3D-aout
+		;;
+	mep-*)
+		os=3D-elf
+		;;
+	mips*-cisco)
+		os=3D-elf
+		;;
+	mips*-*)
+		os=3D-elf
+		;;
+	or32-*)
+		os=3D-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=3D-sysv3
+		;;
+	sparc-* | *-sun)
+		os=3D-sunos4.1.1
+		;;
+	*-be)
+		os=3D-beos
+		;;
+	*-haiku)
+		os=3D-haiku
+		;;
+	*-ibm)
+		os=3D-aix
+		;;
+	*-knuth)
+		os=3D-mmixware
+		;;
+	*-wec)
+		os=3D-proelf
+		;;
+	*-winbond)
+		os=3D-proelf
+		;;
+	*-oki)
+		os=3D-proelf
+		;;
+	*-hp)
+		os=3D-hpux
+		;;
+	*-hitachi)
+		os=3D-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=3D-sysv
+		;;
+	*-cbm)
+		os=3D-amigaos
+		;;
+	*-dg)
+		os=3D-dgux
+		;;
+	*-dolphin)
+		os=3D-sysv3
+		;;
+	m68k-ccur)
+		os=3D-rtu
+		;;
+	m88k-omron*)
+		os=3D-luna
+		;;
+	*-next)
+		os=3D-nextstep
+		;;
+	*-sequent)
+		os=3D-ptx
+		;;
+	*-crds)
+		os=3D-unos
+		;;
+	*-ns)
+		os=3D-genix
+		;;
+	i370-*)
+		os=3D-mvs
+		;;
+	*-next)
+		os=3D-nextstep3
+		;;
+	*-gould)
+		os=3D-sysv
+		;;
+	*-highlevel)
+		os=3D-bsd
+		;;
+	*-encore)
+		os=3D-bsd
+		;;
+	*-sgi)
+		os=3D-irix
+		;;
+	*-siemens)
+		os=3D-sysv4
+		;;
+	*-masscomp)
+		os=3D-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=3D-uxpv
+		;;
+	*-rom68k)
+		os=3D-coff
+		;;
+	*-*bug)
+		os=3D-coff
+		;;
+	*-apple)
+		os=3D-macos
+		;;
+	*-atari*)
+		os=3D-mint
+		;;
+	*)
+		os=3D-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not =
the
+# manufacturer.  We pick the logical manufacturer.
+vendor=3Dunknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=3Dacorn
+				;;
+			-sunos*)
+				vendor=3Dsun
+				;;
+			-cnk*|-aix*)
+				vendor=3Dibm
+				;;
+			-beos*)
+				vendor=3Dbe
+				;;
+			-hpux*)
+				vendor=3Dhp
+				;;
+			-mpeix*)
+				vendor=3Dhp
+				;;
+			-hiux*)
+				vendor=3Dhitachi
+				;;
+			-unos*)
+				vendor=3Dcrds
+				;;
+			-dgux*)
+				vendor=3Ddg
+				;;
+			-luna*)
+				vendor=3Domron
+				;;
+			-genix*)
+				vendor=3Dns
+				;;
+			-mvs* | -opened*)
+				vendor=3Dibm
+				;;
+			-os400*)
+				vendor=3Dibm
+				;;
+			-ptx*)
+				vendor=3Dsequent
+				;;
+			-tpf*)
+				vendor=3Dibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=3Dwrs
+				;;
+			-aux*)
+				vendor=3Dapple
+				;;
+			-hms*)
+				vendor=3Dhitachi
+				;;
+			-mpw* | -macos*)
+				vendor=3Dapple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=3Datari
+				;;
+			-vos*)
+				vendor=3Dstratus
+				;;
+		esac
+		basic_machine=3D`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp=3D'"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/config_h.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/config_h.in	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+/* @configure_input@ */
+/* $Id: config_h.in,v 1.1 1995/01/01 19:34:59 tom Exp $ */
+ at DEFS@
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/configure
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/configure	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,5973 @@
+#! /bin/sh
+# From configure.in Revision: 1.10 .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Autoconf 2.52.20101002.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Avoid depending upon Character Ranges.
+as_cr_letters=3D'abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS=3D'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=3D$as_cr_letters$as_cr_LETTERS
+as_cr_digits=3D'0123456789'
+as_cr_alnum=3D$as_cr_Letters$as_cr_digits
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh=3D"sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp=3D"sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=3D:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=3D`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=3Dexpr
+else
+  as_expr=3Dfalse
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more gener=
ic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s=3D'cp -p'
+  else
+    as_ln_s=3D'ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=3Dln
+else
+  as_ln_s=3D'cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p=3D"test -f"
+
+# Support unset when possible.
+if (FOO=3DFOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=3Dunset
+else
+  as_unset=3Dfalse
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" !=3D set || { LANG=3DC; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" !=3D set || { LC_ALL=3DC; export =
LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" !=3D set || { LC_TIME=3DC; expo=
rt LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" !=3D set || { LC_CTYPE=3DC; e=
xport LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" !=3D set || { LANGUAGE=3DC; e=
xport LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" !=3D set || { LC_COLLATE=
=3DC; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" !=3D set || { LC_NUMERIC=
=3DC; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" !=3D set || { LC_MESSAG=
ES=3DC; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl=3D'
+'
+IFS=3D" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" !=3D set || { CDPATH=3D:; export =
CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=3D`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=3D/usr/local
+cross_compiling=3Dno
+subdirs=3D
+MFLAGS=3D MAKEFLAGS=3D
+SHELL=3D${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=3D38}
+
+ac_unique_file=3D"main.c"
+
+# Initialize some variables set by options.
+ac_init_help=3D
+ac_init_version=3Dfalse
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=3D/dev/null
+exec_prefix=3DNONE
+no_create=3D
+no_recursion=3D
+prefix=3DNONE
+program_prefix=3DNONE
+program_suffix=3DNONE
+program_transform_name=3Ds,x,x,
+silent=3D
+site=3D
+srcdir=3D
+verbose=3D
+x_includes=3DNONE
+x_libraries=3DNONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=3D/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir=3D'${exec_prefix}/bin'
+sbindir=3D'${exec_prefix}/sbin'
+libexecdir=3D'${exec_prefix}/libexec'
+datadir=3D'${prefix}/share'
+sysconfdir=3D'${prefix}/etc'
+sharedstatedir=3D'${prefix}/com'
+localstatedir=3D'${prefix}/var'
+libdir=3D'${exec_prefix}/lib'
+includedir=3D'${prefix}/include'
+oldincludedir=3D'/usr/include'
+infodir=3D'${prefix}/info'
+mandir=3D'${prefix}/man'
+
+# Identity of this package.
+PACKAGE_NAME=3D
+PACKAGE_TARNAME=3D
+PACKAGE_VERSION=3D
+PACKAGE_STRING=3D
+PACKAGE_BUGREPORT=3D
+
+ac_prev=3D
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=3D\$ac_option"
+    ac_prev=3D
+    continue
+  fi
+
+  ac_optarg=3D`expr "x$ac_option" : 'x[^=3D]*=3D\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typo=
s.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=3Dbindir ;;
+  -bindir=3D* | --bindir=3D* | --bindi=3D* | --bind=3D* | --bin=3D* | --bi=
=3D*)
+    bindir=3D$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=3Dbuild_alias ;;
+  -build=3D* | --build=3D* | --buil=3D* | --bui=3D* | --bu=3D*)
+    build_alias=3D$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=3Dcache_file ;;
+  -cache-file=3D* | --cache-file=3D* | --cache-fil=3D* | --cache-fi=3D* \
+  | --cache-f=3D* | --cache-=3D* | --cache=3D* | --cach=3D* | --cac=3D* | =
--ca=3D* | --c=3D*)
+    cache_file=3D$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=3Dconfig.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=3Ddatadir ;;
+  -datadir=3D* | --datadir=3D* | --datadi=3D* | --datad=3D* | --data=3D* |=
 --dat=3D* \
+  | --da=3D*)
+    datadir=3D$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=3D`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=3D`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=3Dno" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=3D`expr "x$ac_option" : 'x-*enable-\([^=3D]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=3D`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=3D*) ac_optarg=3D`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=3Dyes ;;
+    esac
+    eval "enable_$ac_feature=3D'$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=3Dexec_prefix ;;
+  -exec-prefix=3D* | --exec_prefix=3D* | --exec-prefix=3D* | --exec-prefi=
=3D* \
+  | --exec-pref=3D* | --exec-pre=3D* | --exec-pr=3D* | --exec-p=3D* | --ex=
ec-=3D* \
+  | --exec=3D* | --exe=3D* | --ex=3D*)
+    exec_prefix=3D$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=3Dyes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=3Dlong ;;
+  -help=3Dr* | --help=3Dr* | --hel=3Dr* | --he=3Dr* | -hr*)
+    ac_init_help=3Drecursive ;;
+  -help=3Ds* | --help=3Ds* | --hel=3Ds* | --he=3Ds* | -hs*)
+    ac_init_help=3Dshort ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=3Dhost_alias ;;
+  -host=3D* | --host=3D* | --hos=3D* | --ho=3D*)
+    host_alias=3D$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=3Dincludedir ;;
+  -includedir=3D* | --includedir=3D* | --includedi=3D* | --included=3D* | =
--include=3D* \
+  | --includ=3D* | --inclu=3D* | --incl=3D* | --inc=3D*)
+    includedir=3D$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=3Dinfodir ;;
+  -infodir=3D* | --infodir=3D* | --infodi=3D* | --infod=3D* | --info=3D* |=
 --inf=3D*)
+    infodir=3D$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=3Dlibdir ;;
+  -libdir=3D* | --libdir=3D* | --libdi=3D* | --libd=3D*)
+    libdir=3D$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=3Dlibexecdir ;;
+  -libexecdir=3D* | --libexecdir=3D* | --libexecdi=3D* | --libexecd=3D* | =
--libexec=3D* \
+  | --libexe=3D* | --libex=3D* | --libe=3D*)
+    libexecdir=3D$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=3Dlocalstatedir ;;
+  -localstatedir=3D* | --localstatedir=3D* | --localstatedi=3D* | --locals=
tated=3D* \
+  | --localstate=3D* | --localstat=3D* | --localsta=3D* | --localst=3D* \
+  | --locals=3D* | --local=3D* | --loca=3D* | --loc=3D* | --lo=3D*)
+    localstatedir=3D$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=3Dmandir ;;
+  -mandir=3D* | --mandir=3D* | --mandi=3D* | --mand=3D* | --man=3D* | --ma=
=3D* | --m=3D*)
+    mandir=3D$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=3Dno ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=3Dyes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=3Dyes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=3Doldincludedir ;;
+  -oldincludedir=3D* | --oldincludedir=3D* | --oldincludedi=3D* | --oldinc=
luded=3D* \
+  | --oldinclude=3D* | --oldinclud=3D* | --oldinclu=3D* | --oldincl=3D* | =
--oldinc=3D* \
+  | --oldin=3D* | --oldi=3D* | --old=3D* | --ol=3D* | --o=3D*)
+    oldincludedir=3D$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=3Dprefix ;;
+  -prefix=3D* | --prefix=3D* | --prefi=3D* | --pref=3D* | --pre=3D* | --pr=
=3D* | --p=3D*)
+    prefix=3D$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=3Dprogram_prefix ;;
+  -program-prefix=3D* | --program-prefix=3D* | --program-prefi=3D* \
+  | --program-pref=3D* | --program-pre=3D* | --program-pr=3D* | --program-=
p=3D*)
+    program_prefix=3D$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=3Dprogram_suffix ;;
+  -program-suffix=3D* | --program-suffix=3D* | --program-suffi=3D* \
+  | --program-suff=3D* | --program-suf=3D* | --program-su=3D* | --program-=
s=3D*)
+    program_suffix=3D$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=3Dprogram_transform_name ;;
+  -program-transform-name=3D* | --program-transform-name=3D* \
+  | --program-transform-nam=3D* | --program-transform-na=3D* \
+  | --program-transform-n=3D* | --program-transform-=3D* \
+  | --program-transform=3D* | --program-transfor=3D* \
+  | --program-transfo=3D* | --program-transf=3D* \
+  | --program-trans=3D* | --program-tran=3D* \
+  | --progr-tra=3D* | --program-tr=3D* | --program-t=3D*)
+    program_transform_name=3D$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=3Dyes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=3Dsbindir ;;
+  -sbindir=3D* | --sbindir=3D* | --sbindi=3D* | --sbind=3D* | --sbin=3D* \
+  | --sbi=3D* | --sb=3D*)
+    sbindir=3D$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=3Dsharedstatedir ;;
+  -sharedstatedir=3D* | --sharedstatedir=3D* | --sharedstatedi=3D* \
+  | --sharedstated=3D* | --sharedstate=3D* | --sharedstat=3D* | --sharedst=
a=3D* \
+  | --sharedst=3D* | --shareds=3D* | --shared=3D* | --share=3D* | --shar=
=3D* \
+  | --sha=3D* | --sh=3D*)
+    sharedstatedir=3D$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=3Dsite ;;
+  -site=3D* | --site=3D* | --sit=3D*)
+    site=3D$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=3Dsrcdir ;;
+  -srcdir=3D* | --srcdir=3D* | --srcdi=3D* | --srcd=3D* | --src=3D* | --sr=
=3D*)
+    srcdir=3D$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=3Dsysconfdir ;;
+  -sysconfdir=3D* | --sysconfdir=3D* | --sysconfdi=3D* | --sysconfd=3D* | =
--sysconf=3D* \
+  | --syscon=3D* | --sysco=3D* | --sysc=3D* | --sys=3D* | --sy=3D*)
+    sysconfdir=3D$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=3Dtarget_alias ;;
+  -target=3D* | --target=3D* | --targe=3D* | --targ=3D* | --tar=3D* | --ta=
=3D* | --t=3D*)
+    target_alias=3D$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=3Dyes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=3D: ;;
+
+  -with-* | --with-*)
+    ac_package=3D`expr "x$ac_option" : 'x-*with-\([^=3D]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=3D`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=3D*) ac_optarg=3D`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=3Dyes ;;
+    esac
+    eval "with_$ac_package=3D'$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=3D`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=3D`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=3Dno" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=3Dyes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=3Dx_includes ;;
+  -x-includes=3D* | --x-includes=3D* | --x-include=3D* | --x-includ=3D* | =
--x-inclu=3D* \
+  | --x-incl=3D* | --x-inc=3D* | --x-in=3D* | --x-i=3D*)
+    x_includes=3D$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=3Dx_libraries ;;
+  -x-libraries=3D* | --x-libraries=3D* | --x-librarie=3D* | --x-librari=3D=
* \
+  | --x-librar=3D* | --x-libra=3D* | --x-libr=3D* | --x-lib=3D* | --x-li=
=3D* | --x-l=3D*)
+    x_libraries=3D$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=3D*)
+    ac_envvar=3D`expr "x$ac_option" : 'x\([^=3D]*\)=3D'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=3D`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar=3D'$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=3D$ac_option} ${host_alias=3D$ac_option} ${target_alia=
s=3D$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=3D--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=3D$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $a=
c_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=3D$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute path for --$ac_var: $a=
c_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=3D$build_alias
+host=3D$host_alias
+target=3D$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" !=3D x; then
+  if test "x$build_alias" =3D x; then
+    cross_compiling=3Dmaybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't us=
e --host.
+    If a cross compiler is detected then cross compile mode will be used."=
 >&2
+  elif test "x$build_alias" !=3D "x$host_alias"; then
+    cross_compiling=3Dyes
+  fi
+fi
+
+ac_tool_prefix=3D
+test -n "$host_alias" && ac_tool_prefix=3D$host_alias-
+
+test "$silent" =3D yes && exec 6>/dev/null
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=3Dyes
+  # Try the directory containing this script, then its parent.
+  ac_prog=3D$0
+  ac_confdir=3D`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
+  test "x$ac_confdir" =3D "x$ac_prog" && ac_confdir=3D.
+  srcdir=3D$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=3D..
+  fi
+else
+  ac_srcdir_defaulted=3Dno
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" =3D yes; then
+    { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+srcdir=3D`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=3D${build_alias+set}
+ac_env_build_alias_value=3D$build_alias
+ac_cv_env_build_alias_set=3D${build_alias+set}
+ac_cv_env_build_alias_value=3D$build_alias
+ac_env_host_alias_set=3D${host_alias+set}
+ac_env_host_alias_value=3D$host_alias
+ac_cv_env_host_alias_set=3D${host_alias+set}
+ac_cv_env_host_alias_value=3D$host_alias
+ac_env_target_alias_set=3D${target_alias+set}
+ac_env_target_alias_value=3D$target_alias
+ac_cv_env_target_alias_set=3D${target_alias+set}
+ac_cv_env_target_alias_value=3D$target_alias
+ac_env_CC_set=3D${CC+set}
+ac_env_CC_value=3D$CC
+ac_cv_env_CC_set=3D${CC+set}
+ac_cv_env_CC_value=3D$CC
+ac_env_CFLAGS_set=3D${CFLAGS+set}
+ac_env_CFLAGS_value=3D$CFLAGS
+ac_cv_env_CFLAGS_set=3D${CFLAGS+set}
+ac_cv_env_CFLAGS_value=3D$CFLAGS
+ac_env_LDFLAGS_set=3D${LDFLAGS+set}
+ac_env_LDFLAGS_value=3D$LDFLAGS
+ac_cv_env_LDFLAGS_set=3D${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=3D$LDFLAGS
+ac_env_CPPFLAGS_set=3D${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=3D$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=3D${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=3D$CPPFLAGS
+ac_env_CPP_set=3D${CPP+set}
+ac_env_CPP_value=3D$CPP
+ac_cv_env_CPP_set=3D${CPP+set}
+ac_cv_env_CPP_value=3D$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" =3D "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<EOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=3DVALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=3DVALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=3Dshort        display options specific to this package
+      --help=3Drecursive    display the short help of all the included pac=
kages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=3DFILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=3Dconfig.cache'
+  -n, --no-create         do not create output files
+      --srcdir=3DDIR        find the sources in DIR [configure dir or \`..=
']
+
+EOF
+
+  cat <<EOF
+Installation directories:
+  --prefix=3DPREFIX         install architecture-independent files in PREF=
IX
+                          [$ac_default_prefix]
+  --exec-prefix=3DEPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=3D\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=3DDIR            user executables [EPREFIX/bin]
+  --sbindir=3DDIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=3DDIR        program executables [EPREFIX/libexec]
+  --datadir=3DDIR           read-only architecture-independent data [PREFI=
X/share]
+  --sysconfdir=3DDIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=3DDIR    modifiable architecture-independent data [PREF=
IX/com]
+  --localstatedir=3DDIR     modifiable single-machine data [PREFIX/var]
+  --libdir=3DDIR            object code libraries [EPREFIX/lib]
+  --includedir=3DDIR        C header files [PREFIX/include]
+  --oldincludedir=3DDIR     C header files for non-gcc [/usr/include]
+  --infodir=3DDIR           info documentation [PREFIX/info]
+  --mandir=3DDIR            man documentation [PREFIX/man]
+EOF
+
+  cat <<\EOF
+
+Program names:
+  --program-prefix=3DPREFIX            prepend PREFIX to installed program=
 names
+  --program-suffix=3DSUFFIX            append SUFFIX to installed program =
names
+  --program-transform-name=3DPROGRAM   run sed PROGRAM on installed progra=
m names
+
+System types:
+  --build=3DBUILD           configure for building on BUILD [guessed]
+  --host=3DHOST       build programs to run on HOST [BUILD]
+  --target=3DTARGET   configure for building compilers for TARGET [HOST]
+EOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\EOF
+
+Optional Packages:
+  --with-PACKAGE[=3DARG]    use PACKAGE [ARG=3Dyes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=3Dno)
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=
=3Dno)
+  --enable-FEATURE[=3DARG]  include FEATURE [ARG=3Dyes]
+
+  --with-warnings         test: turn on gcc warnings
+  --disable-echo          display "compiling" commands
+  --with-dmalloc          test: use Gray Watson's dmalloc library
+  --with-dbmalloc         test: use Conor Cahill's dbmalloc library
+  --with-valgrind         test: use valgrind
+  --disable-leaks         test: free permanent memory, analyze leaks
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+EOF
+fi
+
+if test "$ac_init_help" =3D "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=3D`pwd`
+  for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" =3D x: && cont=
inue
+    cd $ac_subdir
+    # A "../" for each directory in /$ac_subdir.
+    ac_dots=3D`echo $ac_subdir |
+             sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+    case $srcdir in
+    .) # No --srcdir option.  We are building in place.
+      ac_sub_srcdir=3D$srcdir ;;
+    [\\/]* | ?:[\\/]* ) # Absolute path.
+      ac_sub_srcdir=3D$srcdir/$ac_subdir ;;
+    *) # Relative path.
+      ac_sub_srcdir=3D$ac_dots$srcdir/$ac_subdir ;;
+    esac
+
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_sub_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_sub_srcdir/configure.gnu  --help=3Drecursive
+    elif test -f $ac_sub_srcdir/configure; then
+      echo
+      $SHELL $ac_sub_srcdir/configure  --help=3Drecursive
+    elif test -f $ac_sub_srcdir/configure.ac ||
+           test -f $ac_sub_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_subdir=
" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\EOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<EOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.52.20101002.  Invocation command line was
+
+  $ $0 $@
+
+EOF
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform.  ##
+## ---------- ##
+
+hostname =3D `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m =3D `(uname -m) 2>/dev/null || echo unknown`
+uname -r =3D `(uname -r) 2>/dev/null || echo unknown`
+uname -s =3D `(uname -s) 2>/dev/null || echo unknown`
+uname -v =3D `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p =3D `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     =3D `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              =3D `(/bin/arch) 2>/dev/null              || echo u=
nknown`
+/usr/bin/arch -k       =3D `(/usr/bin/arch -k) 2>/dev/null       || echo u=
nknown`
+/usr/convex/getsysinfo =3D `(/usr/convex/getsysinfo) 2>/dev/null || echo u=
nknown`
+hostinfo               =3D `(hostinfo) 2>/dev/null               || echo u=
nknown`
+/bin/machine           =3D `(/bin/machine) 2>/dev/null           || echo u=
nknown`
+/usr/bin/oslevel       =3D `(/usr/bin/oslevel) 2>/dev/null       || echo u=
nknown`
+/bin/universe          =3D `(/bin/universe) 2>/dev/null          || echo u=
nknown`
+
+PATH =3D $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests.  ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=3D
+ac_sep=3D
+for ac_arg
+do
+  case $ac_arg in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+    ac_arg=3D`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+    ac_configure_args=3D"$ac_configure_args$ac_sep'$ac_arg'"
+    ac_sep=3D" " ;;
+  *) ac_configure_args=3D"$ac_configure_args$ac_sep$ac_arg"
+     ac_sep=3D" " ;;
+  esac
+  # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=3D$?
+  # Save into config.log some information that might help in debugging.
+  echo >&5
+  echo "## ----------------- ##" >&5
+  echo "## Cache variables.  ##" >&5
+  echo "## ----------------- ##" >&5
+  echo >&5
+  # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space=3D'"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=3D\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=3D\\(.*\\)/\\1=3D'"'"=
'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=3D\\(.*\\)/\\1=3D\\=
2/p"
+      ;;
+    esac;
+} >&5
+  sed "/^$/d" confdefs.h >conftest.log
+  if test -s conftest.log; then
+    echo >&5
+    echo "## ------------ ##" >&5
+    echo "## confdefs.h.  ##" >&5
+    echo "## ------------ ##" >&5
+    echo >&5
+    cat conftest.log >&5
+  fi
+  (echo; echo) >&5
+  test "$ac_signal" !=3D 0 &&
+    echo "$as_me: caught signal $ac_signal" >&5
+  echo "$as_me: exit $exit_status" >&5
+  rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal=3D'$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=3D0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newl=
ine.
+echo >confdefs.h
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" !=3D xNONE; then
+    CONFIG_SITE=3D"$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE=3D"$ac_default_prefix/share/config.site $ac_default_prefix=
/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:845: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    cat "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:856: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:864: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=3Dfalse
+for ac_var in `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=3D.*/\1/p'`; do
+  eval ac_old_set=3D\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=3D\$ac_env_${ac_var}_set
+  eval ac_old_val=3D"\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val=3D"\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:880: error: \`$ac_var' was set to \`$ac_old_val' in t=
he previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous =
run" >&2;}
+      ac_cache_corrupted=3D: ;;
+    ,set)
+      { echo "$as_me:884: error: \`$ac_var' was not set in the previous ru=
n" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=3D: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" !=3D "x$ac_new_val"; then
+        { echo "$as_me:890: error: \`$ac_var' has changed since the previo=
us run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:892:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:894:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=3D:
+      fi;;
+  esac
+  # Pass precious variables to config.status.  It doesn't matter if
+  # we pass some twice (in addition to the command line arguments).
+  if test "$ac_new_set" =3D set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=3D$ac_var=3D`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
+      ac_configure_args=3D"$ac_configure_args '$ac_arg'"
+      ;;
+    *) ac_configure_args=3D"$ac_configure_args $ac_var=3D$ac_new_val"
+       ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:913: error: changes in the environment can compromise the=
 build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" =
>&2;}
+  { { echo "$as_me:915: error: run \`make distclean' and/or \`rm $cache_fi=
le' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and st=
art over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=3Dc
+ac_cpp=3D'$CPP $CPPFLAGS'
+ac_compile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$=
ac_ext $LIBS >&5'
+ac_compiler_gnu=3D$ac_cv_c_compiler_gnu
+ac_main_return=3Dreturn
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N=3D ECHO_C=3D'
+' ECHO_T=3D'	' ;;
+  *c*,*  ) ECHO_N=3D-n ECHO_C=3D ECHO_T=3D ;;
+  *)      ECHO_N=3D ECHO_C=3D'\c' ECHO_T=3D ;;
+esac
+echo "#! $SHELL" >conftest.sh
+echo  "exit 0"   >>conftest.sh
+chmod +x conftest.sh
+if { (echo "$as_me:936: PATH=3D\".;.\"; conftest.sh") >&5
+  (PATH=3D".;."; conftest.sh) 2>&5
+  ac_status=3D$?
+  echo "$as_me:939: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+  ac_path_separator=3D';'
+else
+  ac_path_separator=3D:
+fi
+PATH_SEPARATOR=3D"$ac_path_separator"
+rm -f conftest.sh
+
+ac_config_headers=3D"$ac_config_headers config.h:config_h.in"
+
+ac_aux_dir=3D
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=3D$ac_dir
+    ac_install_sh=3D"$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=3D$ac_dir
+    ac_install_sh=3D"$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=3D$ac_dir
+    ac_install_sh=3D"$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:967: error: cannot find install-sh or install.sh in $sr=
cdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcd=
ir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess=3D"$SHELL $ac_aux_dir/config.guess"
+ac_config_sub=3D"$SHELL $ac_aux_dir/config.sub"
+ac_configure=3D"$SHELL $ac_aux_dir/configure" # This should be Cygnus conf=
igure.
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:977: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:981: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=3D$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=3D`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:990: error: cannot guess build type; you must specify o=
ne" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=3D`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:994: error: $ac_config_sub $ac_cv_build_alias failed." =
>&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:999: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=3D$ac_cv_build
+build_cpu=3D`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=3D`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2=
/'`
+build_os=3D`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+echo "$as_me:1006: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=3D$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=3D$ac_cv_build_alias
+ac_cv_host=3D`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:1015: error: $ac_config_sub $ac_cv_host_alias failed" >=
&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1020: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=3D$ac_cv_host
+host_cpu=3D`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=3D`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=3D`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
+	echo "$as_me:1028: checking target system type" >&5
+echo $ECHO_N "checking target system type... $ECHO_C" >&6
+if test "${ac_cv_target+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_target_alias=3D$target_alias
+test "x$ac_cv_target_alias" =3D "x" &&
+  ac_cv_target_alias=3D$ac_cv_host_alias
+ac_cv_target=3D`$ac_config_sub $ac_cv_target_alias` ||
+  { { echo "$as_me:1037: error: $ac_config_sub $ac_cv_target_alias failed"=
 >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:1042: result: $ac_cv_target" >&5
+echo "${ECHO_T}$ac_cv_target" >&6
+target=3D$ac_cv_target
+target_cpu=3D`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/=
'`
+target_vendor=3D`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/=
\2/'`
+target_os=3D`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" =3D \
+    NONENONEs,x,x, &&
+  program_prefix=3D${target_alias}-
+	system_name=3D"$host_os"
+else
+	system_name=3D"`(uname -s -r) 2>/dev/null`"
+	if test -z "$system_name" ; then
+		system_name=3D"`(hostname) 2>/dev/null`"
+	fi
+fi
+test -n "$system_name" && cat >>confdefs.h <<EOF
+#define SYSTEM_NAME "$system_name"
+EOF
+
+if test "${cf_cv_system_name+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cf_cv_system_name=3D"$system_name"
+fi
+
+test -z "$system_name" && system_name=3D"$cf_cv_system_name"
+test -n "$cf_cv_system_name" && echo "$as_me:1073: result: Configuring for=
 $cf_cv_system_name" >&5
+echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
+
+if test ".$system_name" !=3D ".$cf_cv_system_name" ; then
+	echo "$as_me:1077: result: Cached system name ($system_name) does not agr=
ee with actual ($cf_cv_system_name)" >&5
+echo "${ECHO_T}Cached system name ($system_name) does not agree with actua=
l ($cf_cv_system_name)" >&6
+	{ { echo "$as_me:1079: error: \"Please remove config.cache and try again.=
\"" >&5
+echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+test "$program_prefix" !=3D NONE &&
+  program_transform_name=3D"s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" !=3D NONE &&
+  program_transform_name=3D"s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=3D`echo $program_transform_name | sed -f conftest.s=
ed`
+rm conftest.sed
+
+ac_ext=3Dc
+ac_cpp=3D'$CPP $CPPFLAGS'
+ac_compile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$=
ac_ext $LIBS >&5'
+ac_compiler_gnu=3D$ac_cv_c_compiler_gnu
+ac_main_return=3Dreturn
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a progr=
am name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=3D$2
+echo "$as_me:1106: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC=3D"$CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC=3D"${ac_tool_prefix}gcc"
+echo "$as_me:1121: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=3D$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1129: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1132: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=3D$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=3D$2
+echo "$as_me:1141: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC=3D"$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC=3D"gcc"
+echo "$as_me:1156: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=3D$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1164: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1167: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=3D$ac_ct_CC
+else
+  CC=3D"$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a progra=
m name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=3D$2
+echo "$as_me:1180: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC=3D"$CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC=3D"${ac_tool_prefix}cc"
+echo "$as_me:1195: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=3D$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1203: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1206: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=3D$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=3D$2
+echo "$as_me:1215: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC=3D"$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC=3D"cc"
+echo "$as_me:1230: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=3D$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1238: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1241: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=3D$ac_ct_CC
+else
+  CC=3D"$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=3D$2
+echo "$as_me:1254: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC=3D"$CC" # Let the user override the test.
+else
+  ac_prog_rejected=3Dno
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+if test "$ac_dir/$ac_word" =3D "/usr/ucb/cc"; then
+  ac_prog_rejected=3Dyes
+  continue
+fi
+ac_cv_prog_CC=3D"cc"
+echo "$as_me:1274: found $ac_dir/$ac_word" >&5
+break
+done
+
+if test $ac_prog_rejected =3D yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# !=3D 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    set dummy "$ac_dir/$ac_word" ${1+"$@"}
+    shift
+    ac_cv_prog_CC=3D"$@"
+  fi
+fi
+fi
+fi
+CC=3D$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1296: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1299: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a =
program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=3D$2
+echo "$as_me:1310: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC=3D"$CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC=3D"$ac_tool_prefix$ac_prog"
+echo "$as_me:1325: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=3D$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:1333: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:1336: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=3D$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with=
 args.
+set dummy $ac_prog; ac_word=3D$2
+echo "$as_me:1349: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC=3D"$ac_ct_CC" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC=3D"$ac_prog"
+echo "$as_me:1364: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=3D$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:1372: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:1375: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=3D$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1387: error: no acceptable cc found in \=
$PATH" >&5
+echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:1392:" \
+     "checking for C compiler version" >&5
+ac_compiler=3D`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:1395: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1398: \$? =3D $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1400: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1403: \$? =3D $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:1405: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1408: \$? =3D $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1412 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=3D$ac_clean_files
+ac_clean_files=3D"$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:1428: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=3D`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:1431: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1434: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+for ac_file in `ls a.exe conftest.exe 2>/dev/null;
+                ls a.out conftest 2>/dev/null;
+                ls a.* conftest.* 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.=
bbg | *.map | *.inf | *.o | *.obj ) ;;
+    a.out ) # We found the default executable, but exeext=3D'' is most
+            # certainly right.
+            break;;
+    *.* ) ac_cv_exeext=3D`expr "$ac_file" : '[^.]*\(\..*\)'`
+          # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1457: error: C compiler cannot create executables" >&5
+echo "$as_me: error: C compiler cannot create executables" >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=3D$ac_cv_exeext
+echo "$as_me:1463: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1468: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" !=3D yes; then
+  if { ac_try=3D'./$ac_file'
+  { (eval echo "$as_me:1474: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1477: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=3Dno
+  else
+    if test "$cross_compiling" =3D maybe; then
+	cross_compiling=3Dyes
+    else
+	{ { echo "$as_me:1484: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:1492: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=3D$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1499: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1501: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1504: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1506: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1509: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`=
; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.=
bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=3D`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:1525: error: cannot compute EXEEXT: cannot compile and =
link" >&5
+echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1531: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=3D$ac_cv_exeext
+ac_exeext=3D$EXEEXT
+echo "$as_me:1537: checking for object suffix" >&5
+echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1543 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1555: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1558: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`=
; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *=
.inf ) ;;
+    *) ac_cv_objext=3D`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1570: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1577: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=3D$ac_cv_objext
+ac_objext=3D$OBJEXT
+echo "$as_me:1581: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C"=
 >&6
+if test "${ac_cv_c_compiler_gnu+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1587 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1602: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1605: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1608: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1611: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=3D$ac_compiler_gnu
+
+fi
+echo "$as_me:1623: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=3D`test $ac_compiler_gnu =3D yes && echo yes`
+ac_test_CFLAGS=3D${CFLAGS+set}
+ac_save_CFLAGS=3D$CFLAGS
+CFLAGS=3D"-g"
+echo "$as_me:1629: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1635 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1647: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1650: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1653: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1656: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1666: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" =3D set; then
+  CFLAGS=3D$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g =3D yes; then
+  if test "$GCC" =3D yes; then
+    CFLAGS=3D"-g -O2"
+  else
+    CFLAGS=3D"-g"
+  fi
+else
+  if test "$GCC" =3D yes; then
+    CFLAGS=3D"-O2"
+  else
+    CFLAGS=3D
+  fi
+fi
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1693: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1696: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1699: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1702: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1714 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1727: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1730: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1733: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1736: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1746 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1758: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1761: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1764: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1767: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -rf conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=3Dc
+ac_cpp=3D'$CPP $CPPFLAGS'
+ac_compile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$=
ac_ext $LIBS >&5'
+ac_compiler_gnu=3D$ac_cv_c_compiler_gnu
+ac_main_return=3Dreturn
+
+echo "$as_me:1795: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=3Dno
+ac_save_CC=3D$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 1803 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s =3D g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), =
int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) !=3D argv[0]  ||  f (e, argv, 1) !=3D argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=3Dansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=3Dansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__=
EXTENSIONS__"
+do
+  CC=3D"$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1852: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1855: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1858: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1861: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=3D$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=3D$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:1878: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:1881: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC=3D"$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:1886: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 1892 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero =3D {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g =3D "string";
+  ccp =3D &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p =3D (char**) ccp;
+  ccp =3D (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s =3D 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ =3D 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  =
*/
+    int x[] =3D {25, 17};
+    const int *foo =3D &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p =3D 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue.=
 */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j =3D 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo =3D 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1950: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1953: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:1956: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:1959: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1969: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const =3D no; then
+
+cat >>confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+echo "$as_me:1979: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=3D`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" =3D set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\EOF
+all:
+	@echo 'ac_maketemp=3D"${MAKE}"'
+EOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=3D`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=3Dyes
+else
+  eval ac_cv_prog_make_${ac_make}_set=3Dno
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" =3D yes"; then
+  echo "$as_me:1999: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=3D
+else
+  echo "$as_me:2003: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE=3D"MAKE=3D${MAKE-make}"
+fi
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:2020: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+  for ac_dir in $PATH; do
+    IFS=3D$ac_save_IFS
+    # Account for people who put trailing slashes in PATH elements.
+    case $ac_dir/ in
+    / | ./ | .// | /cC/* \
+    | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+    | /usr/ucb/* ) ;;
+    *)
+      # OSF1 and SCO ODT 3.0 have their own names for install.
+      # Don't use installbsd from OSF since it installs stuff as root
+      # by default.
+      for ac_prog in ginstall scoinst install; do
+        if $as_executable_p "$ac_dir/$ac_prog"; then
+	  if test $ac_prog =3D install &&
+            grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog =3D install &&
+	    grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install=3D"$ac_dir/$ac_prog -c"
+	    break 2
+	  fi
+	fi
+      done
+      ;;
+    esac
+  done
+
+fi
+  if test "${ac_cv_path_install+set}" =3D set; then
+    INSTALL=3D$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=3D$ac_install_sh
+  fi
+fi
+echo "$as_me:2069: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM=3D'${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT=3D'${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA=3D'${INSTALL} -m 644'
+
+echo "$as_me:2080: checking if filesystem supports mixed-case filenames" >=
&5
+echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECH=
O_C" >&6
+if test "${cf_cv_mixedcase+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+if test "$cross_compiling" =3D yes ; then
+	case $target_alias in #(vi
+	*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+		cf_cv_mixedcase=3Dno
+		;;
+	*)
+		cf_cv_mixedcase=3Dyes
+		;;
+	esac
+else
+	rm -f conftest CONFTEST
+	echo test >conftest
+	if test -f CONFTEST ; then
+		cf_cv_mixedcase=3Dno
+	else
+		cf_cv_mixedcase=3Dyes
+	fi
+	rm -f conftest CONFTEST
+fi
+
+fi
+echo "$as_me:2107: result: $cf_cv_mixedcase" >&5
+echo "${ECHO_T}$cf_cv_mixedcase" >&6
+test "$cf_cv_mixedcase" =3D yes && cat >>confdefs.h <<\EOF
+#define MIXEDCASE_FILENAMES 1
+EOF
+
+for ac_prog in exctags ctags
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with=
 args.
+set dummy $ac_prog; ac_word=3D$2
+echo "$as_me:2117: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CTAGS+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CTAGS"; then
+  ac_cv_prog_CTAGS=3D"$CTAGS" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CTAGS=3D"$ac_prog"
+echo "$as_me:2132: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CTAGS=3D$ac_cv_prog_CTAGS
+if test -n "$CTAGS"; then
+  echo "$as_me:2140: result: $CTAGS" >&5
+echo "${ECHO_T}$CTAGS" >&6
+else
+  echo "$as_me:2143: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$CTAGS" && break
+done
+
+for ac_prog in exetags etags
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with=
 args.
+set dummy $ac_prog; ac_word=3D$2
+echo "$as_me:2154: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ETAGS+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ETAGS"; then
+  ac_cv_prog_ETAGS=3D"$ETAGS" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ETAGS=3D"$ac_prog"
+echo "$as_me:2169: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ETAGS=3D$ac_cv_prog_ETAGS
+if test -n "$ETAGS"; then
+  echo "$as_me:2177: result: $ETAGS" >&5
+echo "${ECHO_T}$ETAGS" >&6
+else
+  echo "$as_me:2180: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ETAGS" && break
+done
+
+# Extract the first word of "${CTAGS:-ctags}", so it can be a program name=
 with args.
+set dummy ${CTAGS:-ctags}; ac_word=3D$2
+echo "$as_me:2189: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKE_LOWER_TAGS"; then
+  ac_cv_prog_MAKE_LOWER_TAGS=3D"$MAKE_LOWER_TAGS" # Let the user override =
the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_MAKE_LOWER_TAGS=3D"yes"
+echo "$as_me:2204: found $ac_dir/$ac_word" >&5
+break
+done
+
+  test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS=3D"n=
o"
+fi
+fi
+MAKE_LOWER_TAGS=3D$ac_cv_prog_MAKE_LOWER_TAGS
+if test -n "$MAKE_LOWER_TAGS"; then
+  echo "$as_me:2213: result: $MAKE_LOWER_TAGS" >&5
+echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
+else
+  echo "$as_me:2216: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test "$cf_cv_mixedcase" =3D yes ; then
+	# Extract the first word of "${ETAGS:-etags}", so it can be a program nam=
e with args.
+set dummy ${ETAGS:-etags}; ac_word=3D$2
+echo "$as_me:2223: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKE_UPPER_TAGS"; then
+  ac_cv_prog_MAKE_UPPER_TAGS=3D"$MAKE_UPPER_TAGS" # Let the user override =
the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_MAKE_UPPER_TAGS=3D"yes"
+echo "$as_me:2238: found $ac_dir/$ac_word" >&5
+break
+done
+
+  test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS=3D"n=
o"
+fi
+fi
+MAKE_UPPER_TAGS=3D$ac_cv_prog_MAKE_UPPER_TAGS
+if test -n "$MAKE_UPPER_TAGS"; then
+  echo "$as_me:2247: result: $MAKE_UPPER_TAGS" >&5
+echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
+else
+  echo "$as_me:2250: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+else
+	MAKE_UPPER_TAGS=3Dno
+fi
+
+if test "$MAKE_UPPER_TAGS" =3D yes ; then
+	MAKE_UPPER_TAGS=3D
+else
+	MAKE_UPPER_TAGS=3D"#"
+fi
+
+if test "$MAKE_LOWER_TAGS" =3D yes ; then
+	MAKE_LOWER_TAGS=3D
+else
+	MAKE_LOWER_TAGS=3D"#"
+fi
+
+for ac_prog in tdlint lint alint splint lclint
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with=
 args.
+set dummy $ac_prog; ac_word=3D$2
+echo "$as_me:2274: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_LINT+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$LINT"; then
+  ac_cv_prog_LINT=3D"$LINT" # Let the user override the test.
+else
+  ac_save_IFS=3D$IFS; IFS=3D$ac_path_separator
+ac_dummy=3D"$PATH"
+for ac_dir in $ac_dummy; do
+  IFS=3D$ac_save_IFS
+  test -z "$ac_dir" && ac_dir=3D.
+  $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_LINT=3D"$ac_prog"
+echo "$as_me:2289: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+LINT=3D$ac_cv_prog_LINT
+if test -n "$LINT"; then
+  echo "$as_me:2297: result: $LINT" >&5
+echo "${ECHO_T}$LINT" >&6
+else
+  echo "$as_me:2300: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$LINT" && break
+done
+
+# This should have been defined by AC_PROG_CC
+: ${CC:=3Dcc}
+
+# Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
+# into CC.  This will not help with broken scripts that wrap the compiler =
with
+# options, but eliminates a more common category of user confusion.
+echo "$as_me:2313: checking \$CC variable" >&5
+echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
+case "$CC" in #(vi
+*[\ \	]-[IUD]*)
+	echo "$as_me:2317: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+	{ echo "$as_me:2319: WARNING: your environment misuses the CC variable to=
 hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment misuses the CC variable to hold CF=
LAGS/CPPFLAGS options" >&2;}
+	# humor him...
+	cf_flags=3D`echo "$CC" | sed -e 's/^[^ 	]*[ 	]//'`
+	CC=3D`echo "$CC" | sed -e 's/[ 	].*//'`
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_flags
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+	;;
+*)
+	echo "$as_me:2405: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+	;;
+esac
+
+echo "$as_me:2410: checking for ${CC:-cc} option to accept ANSI C" >&5
+echo $ECHO_N "checking for ${CC:-cc} option to accept ANSI C... $ECHO_C" >=
&6
+if test "${cf_cv_ansi_cc+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_ansi_cc=3Dno
+cf_save_CFLAGS=3D"$CFLAGS"
+cf_save_CPPFLAGS=3D"$CPPFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=3Dansi
+# Ultrix and OSF/1	-std1
+# HP-UX			-Aa -D_HPUX_SOURCE
+# SVR4			-Xc
+# UnixWare 1.2		(cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+	"" \
+	-qlanglvl=3Dansi \
+	-std1 \
+	-Ae \
+	"-Aa -D_HPUX_SOURCE" \
+	-Xc
+do
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_arg
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+	cat >conftest.$ac_ext <<_ACEOF
+#line 2514 "configure"
+#include "confdefs.h"
+
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ !=3D 1)
+choke me
+#endif
+#endif
+
+int
+main ()
+{
+
+	int test (int i, double x);
+	struct s1 {int (*f) (int a);};
+	struct s2 {int (*f) (double a);};
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2535: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2538: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2541: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2544: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_ansi_cc=3D"$cf_arg"; break
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+CFLAGS=3D"$cf_save_CFLAGS"
+CPPFLAGS=3D"$cf_save_CPPFLAGS"
+
+fi
+echo "$as_me:2557: result: $cf_cv_ansi_cc" >&5
+echo "${ECHO_T}$cf_cv_ansi_cc" >&6
+
+if test "$cf_cv_ansi_cc" !=3D "no"; then
+if test ".$cf_cv_ansi_cc" !=3D ".-DCC_HAS_PROTOS"; then
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_cv_ansi_cc
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+else
+	cat >>confdefs.h <<\EOF
+#define CC_HAS_PROTOS 1
+EOF
+
+fi
+fi
+
+if test "$cf_cv_ansi_cc" =3D "no"; then
+	{ { echo "$as_me:2650: error: Your compiler does not appear to recognize =
prototypes.
+You have the following choices:
+	a. adjust your compiler options
+	b. get an up-to-date compiler
+	c. use a wrapper such as unproto" >&5
+echo "$as_me: error: Your compiler does not appear to recognize prototypes.
+You have the following choices:
+	a. adjust your compiler options
+	b. get an up-to-date compiler
+	c. use a wrapper such as unproto" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+cf_XOPEN_SOURCE=3D500
+cf_POSIX_C_SOURCE=3D199506L
+cf_xopen_source=3D
+
+case $host_os in #(vi
+aix[4-7]*) #(vi
+	cf_xopen_source=3D"-D_ALL_SOURCE"
+	;;
+cygwin) #(vi
+	cf_XOPEN_SOURCE=3D600
+	;;
+darwin[0-8].*) #(vi
+	cf_xopen_source=3D"-D_APPLE_C_SOURCE"
+	;;
+darwin*) #(vi
+	cf_xopen_source=3D"-D_DARWIN_C_SOURCE"
+	cf_XOPEN_SOURCE=3D
+	;;
+freebsd*|dragonfly*) #(vi
+	# 5.x headers associate
+	#	_XOPEN_SOURCE=3D600 with _POSIX_C_SOURCE=3D200112L
+	#	_XOPEN_SOURCE=3D500 with _POSIX_C_SOURCE=3D199506L
+	cf_POSIX_C_SOURCE=3D200112L
+	cf_XOPEN_SOURCE=3D600
+	cf_xopen_source=3D"-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=3D$cf_P=
OSIX_C_SOURCE -D_XOPEN_SOURCE=3D$cf_XOPEN_SOURCE"
+	;;
+hpux11*) #(vi
+	cf_xopen_source=3D"-D_HPUX_SOURCE -D_XOPEN_SOURCE=3D500"
+	;;
+hpux*) #(vi
+	cf_xopen_source=3D"-D_HPUX_SOURCE"
+	;;
+irix[56].*) #(vi
+	cf_xopen_source=3D"-D_SGI_SOURCE"
+	cf_XOPEN_SOURCE=3D
+	;;
+linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+
+echo "$as_me:2701: checking if we must define _GNU_SOURCE" >&5
+echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_gnu_source+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 2708 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2723: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2726: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2729: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2732: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_gnu_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save=3D"$CPPFLAGS"
+	 CPPFLAGS=3D"$CPPFLAGS -D_GNU_SOURCE"
+	 cat >conftest.$ac_ext <<_ACEOF
+#line 2741 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2756: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2759: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2762: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2765: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_gnu_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_source=3Dyes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	CPPFLAGS=3D"$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:2780: result: $cf_cv_gnu_source" >&5
+echo "${ECHO_T}$cf_cv_gnu_source" >&6
+test "$cf_cv_gnu_source" =3D yes && CPPFLAGS=3D"$CPPFLAGS -D_GNU_SOURCE"
+
+	;;
+mirbsd*) #(vi
+	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other =
headers which use u_int / u_short types
+	cf_XOPEN_SOURCE=3D
+
+cf_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS=3D"$CFLAGS"
+cf_save_CPPFLAGS=3D"$CPPFLAGS"
+
+cf_trim_CFLAGS=3D`echo "$cf_save_CFLAGS" | \
+	sed	-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+cf_trim_CPPFLAGS=3D`echo "$cf_save_CPPFLAGS" | \
+	sed	-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+echo "$as_me:2802: checking if we should define _POSIX_C_SOURCE" >&5
+echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_posix_c_source+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+echo "${as_me:-configure}:2808: testing if the symbol is already defined g=
o no further ..." 1>&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+#line 2811 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2826: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2829: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2832: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2835: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_posix_c_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_want_posix_source=3Dno
+	 case .$cf_POSIX_C_SOURCE in #(vi
+	 .[12]??*) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		;;
+	 .2) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		cf_want_posix_source=3Dyes
+		;;
+	 .*)
+		cf_want_posix_source=3Dyes
+		;;
+	 esac
+	 if test "$cf_want_posix_source" =3D yes ; then
+		cat >conftest.$ac_ext <<_ACEOF
+#line 2856 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _POSIX_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2871: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2874: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2877: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2880: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=3D"$cf_cv_posix_c_source -D_POSIX_SOURCE"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	 fi
+
+echo "${as_me:-configure}:2891: testing ifdef from value $cf_POSIX_C_SOURC=
E ..." 1>&5
+
+	 CFLAGS=3D"$cf_trim_CFLAGS"
+	 CPPFLAGS=3D"$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:2896: testing if the second compile does not lea=
ve our definition intact error ..." 1>&5
+
+	 cat >conftest.$ac_ext <<_ACEOF
+#line 2899 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2914: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2917: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:2920: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:2923: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	 CFLAGS=3D"$cf_save_CFLAGS"
+	 CPPFLAGS=3D"$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:2939: result: $cf_cv_posix_c_source" >&5
+echo "${ECHO_T}$cf_cv_posix_c_source" >&6
+
+if test "$cf_cv_posix_c_source" !=3D no ; then
+	CFLAGS=3D"$cf_trim_CFLAGS"
+	CPPFLAGS=3D"$cf_trim_CPPFLAGS"
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_cv_posix_c_source
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+	;;
+netbsd*) #(vi
+	cf_xopen_source=3D"-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 =
for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+	;;
+openbsd[4-9]*) #(vi
+	# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, n=
eeded for ncursesw
+	cf_xopen_source=3D"-D_BSD_SOURCE"
+	cf_XOPEN_SOURCE=3D600
+	;;
+openbsd*) #(vi
+	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for nc=
ursesw
+	;;
+osf[45]*) #(vi
+	cf_xopen_source=3D"-D_OSF_SOURCE"
+	;;
+nto-qnx*) #(vi
+	cf_xopen_source=3D"-D_QNX_SOURCE"
+	;;
+sco*) #(vi
+	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+	;;
+solaris2.*) #(vi
+	cf_xopen_source=3D"-D__EXTENSIONS__"
+	;;
+*)
+
+echo "$as_me:3052: checking if we should define _XOPEN_SOURCE" >&5
+echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_xopen_source+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+	cat >conftest.$ac_ext <<_ACEOF
+#line 3059 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3078: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3081: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3084: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3087: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_xopen_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save=3D"$CPPFLAGS"
+	 CPPFLAGS=3D"$CPPFLAGS -D_XOPEN_SOURCE=3D$cf_XOPEN_SOURCE"
+	 cat >conftest.$ac_ext <<_ACEOF
+#line 3096 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3115: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3118: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3121: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3124: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_xopen_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_xopen_source=3D$cf_XOPEN_SOURCE
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	CPPFLAGS=3D"$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3139: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+
+if test "$cf_cv_xopen_source" !=3D no ; then
+
+CFLAGS=3D`echo "$CFLAGS" | \
+	sed	-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+	cf_temp_xopen_source=3D"-D_XOPEN_SOURCE=3D$cf_cv_xopen_source"
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_temp_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+cf_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS=3D"$CFLAGS"
+cf_save_CPPFLAGS=3D"$CPPFLAGS"
+
+cf_trim_CFLAGS=3D`echo "$cf_save_CFLAGS" | \
+	sed	-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+cf_trim_CPPFLAGS=3D`echo "$cf_save_CPPFLAGS" | \
+	sed	-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_POSIX_C_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+echo "$as_me:3247: checking if we should define _POSIX_C_SOURCE" >&5
+echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_posix_c_source+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+echo "${as_me:-configure}:3253: testing if the symbol is already defined g=
o no further ..." 1>&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+#line 3256 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3271: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3274: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3277: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3280: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_posix_c_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_want_posix_source=3Dno
+	 case .$cf_POSIX_C_SOURCE in #(vi
+	 .[12]??*) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		;;
+	 .2) #(vi
+		cf_cv_posix_c_source=3D"-D_POSIX_C_SOURCE=3D$cf_POSIX_C_SOURCE"
+		cf_want_posix_source=3Dyes
+		;;
+	 .*)
+		cf_want_posix_source=3Dyes
+		;;
+	 esac
+	 if test "$cf_want_posix_source" =3D yes ; then
+		cat >conftest.$ac_ext <<_ACEOF
+#line 3301 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _POSIX_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3316: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3319: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3322: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3325: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=3D"$cf_cv_posix_c_source -D_POSIX_SOURCE"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	 fi
+
+echo "${as_me:-configure}:3336: testing ifdef from value $cf_POSIX_C_SOURC=
E ..." 1>&5
+
+	 CFLAGS=3D"$cf_trim_CFLAGS"
+	 CPPFLAGS=3D"$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:3341: testing if the second compile does not lea=
ve our definition intact error ..." 1>&5
+
+	 cat >conftest.$ac_ext <<_ACEOF
+#line 3344 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3359: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3362: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3365: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3368: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	 CFLAGS=3D"$cf_save_CFLAGS"
+	 CPPFLAGS=3D"$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3384: result: $cf_cv_posix_c_source" >&5
+echo "${ECHO_T}$cf_cv_posix_c_source" >&6
+
+if test "$cf_cv_posix_c_source" !=3D no ; then
+	CFLAGS=3D"$cf_trim_CFLAGS"
+	CPPFLAGS=3D"$cf_trim_CPPFLAGS"
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_cv_posix_c_source
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+	;;
+esac
+
+if test -n "$cf_xopen_source" ; then
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+	echo "$as_me:3557: checking if _XOPEN_SOURCE really is set" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
+	cat >conftest.$ac_ext <<_ACEOF
+#line 3560 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3575: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3578: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3581: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3584: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_XOPEN_SOURCE_set=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	echo "$as_me:3593: result: $cf_XOPEN_SOURCE_set" >&5
+echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
+	if test $cf_XOPEN_SOURCE_set =3D yes
+	then
+		cat >conftest.$ac_ext <<_ACEOF
+#line 3598 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3613: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3616: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3619: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3622: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_XOPEN_SOURCE_set_ok=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set_ok=3Dno
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+		if test $cf_XOPEN_SOURCE_set_ok =3D no
+		then
+			{ echo "$as_me:3633: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
+		fi
+	else
+
+echo "$as_me:3638: checking if we should define _XOPEN_SOURCE" >&5
+echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_xopen_source+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+	cat >conftest.$ac_ext <<_ACEOF
+#line 3645 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3664: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3667: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3670: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3673: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_xopen_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save=3D"$CPPFLAGS"
+	 CPPFLAGS=3D"$CPPFLAGS -D_XOPEN_SOURCE=3D$cf_XOPEN_SOURCE"
+	 cat >conftest.$ac_ext <<_ACEOF
+#line 3682 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3701: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3704: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:3707: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:3710: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_xopen_source=3Dno
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_xopen_source=3D$cf_XOPEN_SOURCE
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+	CPPFLAGS=3D"$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3725: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+
+if test "$cf_cv_xopen_source" !=3D no ; then
+
+CFLAGS=3D`echo "$CFLAGS" | \
+	sed	-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"_XOPEN_SOURCE"'\(=3D[^ 	]*\)\?$//g'`
+
+	cf_temp_xopen_source=3D"-D_XOPEN_SOURCE=3D$cf_cv_xopen_source"
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in $cf_temp_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+	fi
+fi
+
+ac_ext=3Dc
+ac_cpp=3D'$CPP $CPPFLAGS'
+ac_compile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$=
ac_ext $LIBS >&5'
+ac_compiler_gnu=3D$ac_cv_c_compiler_gnu
+ac_main_return=3Dreturn
+echo "$as_me:3829: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=3D
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=3Dfalse
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3850 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:3855: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3861: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3884 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:3888: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3894: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=3D:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=3D$CPP
+
+fi
+  CPP=3D$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=3D$CPP
+fi
+echo "$as_me:3931: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=3Dfalse
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3941 "configure"
+#include "confdefs.h"
+#include <assert.h>
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:3946: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3952: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line 3975 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:3979: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:3985: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  # Passes both tests.
+ac_preproc_ok=3D:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:4013: error: C preprocessor \"$CPP\" fails sanity check=
" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=3Dc
+ac_cpp=3D'$CPP $CPPFLAGS'
+ac_compile=3D'$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$=
ac_ext $LIBS >&5'
+ac_compiler_gnu=3D$ac_cv_c_compiler_gnu
+ac_main_return=3Dreturn
+
+for ac_header in fcntl.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:4028: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" =3D set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4034 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:4038: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:4044: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  eval "$as_ac_Header=3Dno"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:4063: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+for ac_func in atexit
+do
+as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:4076: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" =3D set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4082 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f =3D $ac_func;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4113: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4116: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4119: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4122: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=3Dno"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4132: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` =3D yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:4142: checking for working mkstemp" >&5
+echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6
+if test "${cf_cv_func_mkstemp+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+rm -rf conftest*
+if test "$cross_compiling" =3D yes; then
+  echo "$as_me:4150: checking for mkstemp" >&5
+echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
+if test "${ac_cv_func_mkstemp+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4156 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char mkstemp (); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char mkstemp ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_mkstemp) || defined (__stub___mkstemp)
+choke me
+#else
+f =3D mkstemp;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4187: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4190: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4193: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4196: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_mkstemp=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_mkstemp=3Dno
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4206: result: $ac_cv_func_mkstemp" >&5
+echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
+
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4211 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+int main()
+{
+	char *tmpl =3D "conftestXXXXXX";
+	char name[2][80];
+	int n;
+	int result =3D 0;
+	int fd;
+	struct stat sb;
+
+	umask(077);
+	for (n =3D 0; n < 2; ++n) {
+		strcpy(name[n], tmpl);
+		if ((fd =3D mkstemp(name[n])) >=3D 0) {
+			if (!strcmp(name[n], tmpl)
+			 || stat(name[n], &sb) !=3D 0
+			 || (sb.st_mode & S_IFMT) !=3D S_IFREG
+			 || (sb.st_mode & 077) !=3D 0) {
+				result =3D 1;
+			}
+			close(fd);
+		}
+	}
+	if (result =3D=3D 0
+	 && !strcmp(name[0], name[1]))
+		result =3D 1;
+	${cf_cv_main_return:-return}(result);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:4249: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4252: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
+  { (eval echo "$as_me:4254: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4257: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  cf_cv_func_mkstemp=3Dyes
+
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_func_mkstemp=3Dno
+
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$=
ac_ext
+fi
+
+fi
+echo "$as_me:4272: result: $cf_cv_func_mkstemp" >&5
+echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
+if test "x$cf_cv_func_mkstemp" =3D xyes || test "x$ac_cv_func_mkstemp" =3D=
 xyes ; then
+	cat >>confdefs.h <<\EOF
+#define HAVE_MKSTEMP 1
+EOF
+
+fi
+
+GCC_VERSION=3Dnone
+if test "$GCC" =3D yes ; then
+	echo "$as_me:4283: checking version of $CC" >&5
+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+	GCC_VERSION=3D"`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC=
) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+	test -z "$GCC_VERSION" && GCC_VERSION=3Dunknown
+	echo "$as_me:4287: result: $GCC_VERSION" >&5
+echo "${ECHO_T}$GCC_VERSION" >&6
+fi
+
+if ( test "$GCC" =3D yes || test "$GXX" =3D yes )
+then
+echo "$as_me:4293: checking if you want to check for gcc warnings" >&5
+echo $ECHO_N "checking if you want to check for gcc warnings... $ECHO_C" >=
&6
+
+# Check whether --with-warnings or --without-warnings was given.
+if test "${with_warnings+set}" =3D set; then
+  withval=3D"$with_warnings"
+  cf_opt_with_warnings=3D$withval
+else
+  cf_opt_with_warnings=3Dno
+fi;
+echo "$as_me:4303: result: $cf_opt_with_warnings" >&5
+echo "${ECHO_T}$cf_opt_with_warnings" >&6
+if test "$cf_opt_with_warnings" !=3D no ; then
+
+if test "$GCC" =3D yes
+then
+cat > conftest.i <<EOF
+#ifndef GCC_PRINTF
+#define GCC_PRINTF 0
+#endif
+#ifndef GCC_SCANF
+#define GCC_SCANF 0
+#endif
+#ifndef GCC_NORETURN
+#define GCC_NORETURN /* nothing */
+#endif
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+EOF
+if test "$GCC" =3D yes
+then
+	{ echo "$as_me:4325: checking for $CC __attribute__ directives..." >&5
+echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
+cat > conftest.$ac_ext <<EOF
+#line 4328 "${as_me:-configure}"
+#include "confdefs.h"
+#include "conftest.h"
+#include "conftest.i"
+#if	GCC_PRINTF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#if	GCC_SCANF
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
+#endif
+extern void wow(char *,...) GCC_SCANFLIKE(1,2);
+extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
+extern void foo(void) GCC_NORETURN;
+int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { return 0; }
+EOF
+	cf_printf_attribute=3Dno
+	cf_scanf_attribute=3Dno
+	for cf_attribute in scanf printf unused noreturn
+	do
+
+cf_ATTRIBUTE=3D`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-=
%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+		cf_directive=3D"__attribute__(($cf_attribute))"
+		echo "checking for $CC $cf_directive" 1>&5
+
+		case $cf_attribute in #(vi
+		printf) #(vi
+			cf_printf_attribute=3Dyes
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+			;;
+		scanf) #(vi
+			cf_scanf_attribute=3Dyes
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+			;;
+		*) #(vi
+			cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE $cf_directive
+EOF
+			;;
+		esac
+
+		if { (eval echo "$as_me:4377: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4380: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+			test -n "$verbose" && echo "$as_me:4382: result: ... $cf_attribute" >&5
+echo "${ECHO_T}... $cf_attribute" >&6
+			cat conftest.h >>confdefs.h
+			case $cf_attribute in #(vi
+			printf) #(vi
+				if test "$cf_printf_attribute" =3D no ; then
+					cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+EOF
+				else
+					cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+EOF
+				fi
+				;;
+			scanf) #(vi
+				if test "$cf_scanf_attribute" =3D no ; then
+					cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) /* nothing */
+EOF
+				else
+					cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
+EOF
+				fi
+				;;
+			esac
+		fi
+	done
+else
+	fgrep define conftest.i >>confdefs.h
+fi
+rm -rf conftest*
+fi
+
+INTEL_COMPILER=3Dno
+
+if test "$GCC" =3D yes ; then
+	case $host_os in
+	linux*|gnu*)
+		echo "$as_me:4422: checking if this is really Intel C compiler" >&5
+echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
+		cf_save_CFLAGS=3D"$CFLAGS"
+		CFLAGS=3D"$CFLAGS -no-gcc"
+		cat >conftest.$ac_ext <<_ACEOF
+#line 4427 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4444: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4447: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest.$ac_objext'
+  { (eval echo "$as_me:4450: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4453: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  INTEL_COMPILER=3Dyes
+cf_save_CFLAGS=3D"$cf_save_CFLAGS -we147 -no-gcc"
+
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+		CFLAGS=3D"$cf_save_CFLAGS"
+		echo "$as_me:4464: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+		;;
+	esac
+fi
+
+cat > conftest.$ac_ext <<EOF
+#line 4471 "${as_me:-configure}"
+int main(int argc, char *argv[]) { return (argv[argc-1] =3D=3D 0) ; }
+EOF
+
+if test "$INTEL_COMPILER" =3D yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller=
 integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (poten=
tial portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension=3D{unsigned short}" may=
 lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #279: controlling expression is constant
+
+	{ echo "$as_me:4488: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+	cf_save_CFLAGS=3D"$CFLAGS"
+	EXTRA_CFLAGS=3D"-Wall"
+	for cf_opt in \
+		wd1419 \
+		wd1683 \
+		wd1684 \
+		wd193 \
+		wd593 \
+		wd279 \
+		wd810 \
+		wd869 \
+		wd981
+	do
+		CFLAGS=3D"$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+		if { (eval echo "$as_me:4504: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4507: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+			test -n "$verbose" && echo "$as_me:4509: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+			EXTRA_CFLAGS=3D"$EXTRA_CFLAGS -$cf_opt"
+		fi
+	done
+	CFLAGS=3D"$cf_save_CFLAGS"
+
+elif test "$GCC" =3D yes
+then
+	{ echo "$as_me:4518: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+	cf_save_CFLAGS=3D"$CFLAGS"
+	EXTRA_CFLAGS=3D
+	cf_warn_CONST=3D""
+	test "$with_ext_const" =3D yes && cf_warn_CONST=3D"Wwrite-strings"
+	for cf_opt in W Wall \
+		Wbad-function-cast \
+		Wcast-align \
+		Wcast-qual \
+		Winline \
+		Wmissing-declarations \
+		Wmissing-prototypes \
+		Wnested-externs \
+		Wpointer-arith \
+		Wshadow \
+		Wstrict-prototypes \
+		Wundef $cf_warn_CONST Wwrite-strings
+	do
+		CFLAGS=3D"$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+		if { (eval echo "$as_me:4538: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4541: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; then
+			test -n "$verbose" && echo "$as_me:4543: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+			case $cf_opt in #(vi
+			Wcast-qual) #(vi
+				CPPFLAGS=3D"$CPPFLAGS -DXTSTRINGDEFINES"
+				;;
+			Winline) #(vi
+				case $GCC_VERSION in
+				[34].*)
+					test -n "$verbose" && echo "	feature is broken in gcc $GCC_VERSION" 1=
>&6
+
+echo "${as_me:-configure}:4554: testing feature is broken in gcc $GCC_VERS=
ION ..." 1>&5
+
+					continue;;
+				esac
+				;;
+			esac
+			EXTRA_CFLAGS=3D"$EXTRA_CFLAGS -$cf_opt"
+		fi
+	done
+	CFLAGS=3D"$cf_save_CFLAGS"
+fi
+rm -rf conftest*
+
+fi
+fi
+
+echo "$as_me:4570: checking if you want to see long compiling messages" >&5
+echo $ECHO_N "checking if you want to see long compiling messages... $ECHO=
_C" >&6
+
+# Check whether --enable-echo or --disable-echo was given.
+if test "${enable_echo+set}" =3D set; then
+  enableval=3D"$enable_echo"
+  test "$enableval" !=3D no && enableval=3Dyes
+  if test "$enableval" !=3D "yes" ; then
+
+    ECHO_LT=3D'--silent'
+    ECHO_LD=3D'@echo linking $@;'
+    RULE_CC=3D'@echo compiling $<'
+    SHOW_CC=3D'@echo compiling $@'
+    ECHO_CC=3D'@'
+
+  else
+
+    ECHO_LT=3D''
+    ECHO_LD=3D''
+    RULE_CC=3D''
+    SHOW_CC=3D''
+    ECHO_CC=3D''
+
+  fi
+else
+  enableval=3Dyes
+
+    ECHO_LT=3D''
+    ECHO_LD=3D''
+    RULE_CC=3D''
+    SHOW_CC=3D''
+    ECHO_CC=3D''
+
+fi;
+echo "$as_me:4604: result: $enableval" >&5
+echo "${ECHO_T}$enableval" >&6
+
+case $cf_cv_system_name in
+os2*)
+    CFLAGS=3D"$CFLAGS -Zmt"
+    CPPFLAGS=3D"$CPPFLAGS -D__ST_MT_ERRNO__"
+    CXXFLAGS=3D"$CXXFLAGS -Zmt"
+    # autoconf's macro sets -Zexe and suffix both, which conflict:w
+    LDFLAGS=3D"$LDFLAGS -Zmt -Zcrtdll"
+    ac_cv_exeext=3D.exe
+    ;;
+esac
+
+PROG_EXT=3D"$EXEEXT"
+
+test -n "$PROG_EXT" && cat >>confdefs.h <<EOF
+#define PROG_EXT "$PROG_EXT"
+EOF
+
+echo "$as_me:4624: checking if you want to use dmalloc for testing" >&5
+echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" =
>&6
+
+# Check whether --with-dmalloc or --without-dmalloc was given.
+if test "${with_dmalloc+set}" =3D set; then
+  withval=3D"$with_dmalloc"
+  cat >>confdefs.h <<\EOF
+#define USE_DMALLOC 1
+EOF
+
+	: ${with_cflags:=3D-g}
+	: ${with_no_leaks:=3Dyes}
+	 with_dmalloc=3Dyes
+else
+  with_dmalloc=3D
+fi;
+echo "$as_me:4640: result: ${with_dmalloc:-no}" >&5
+echo "${ECHO_T}${with_dmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+	case .$CFLAGS in #(vi
+	.*-g*) #(vi
+		;;
+	*)
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+		;;
+	esac
+	;;
+esac
+
+if test "$with_dmalloc" =3D yes ; then
+	echo "$as_me:4734: checking for dmalloc.h" >&5
+echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_dmalloc_h+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4740 "configure"
+#include "confdefs.h"
+#include <dmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:4744: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:4750: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_dmalloc_h=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_dmalloc_h=3Dno
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:4769: result: $ac_cv_header_dmalloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
+if test $ac_cv_header_dmalloc_h =3D yes; then
+
+echo "$as_me:4773: checking for dmalloc_debug in -ldmalloc" >&5
+echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
+if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-ldmalloc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4781 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dmalloc_debug ();
+int
+main ()
+{
+dmalloc_debug ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4800: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4803: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest$ac_exeext'
+  { (eval echo "$as_me:4806: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:4809: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dmalloc_dmalloc_debug=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dmalloc_dmalloc_debug=3Dno
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4820: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
+if test $ac_cv_lib_dmalloc_dmalloc_debug =3D yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBDMALLOC 1
+EOF
+
+  LIBS=3D"-ldmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:4835: checking if you want to use dbmalloc for testing" >&5
+echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C"=
 >&6
+
+# Check whether --with-dbmalloc or --without-dbmalloc was given.
+if test "${with_dbmalloc+set}" =3D set; then
+  withval=3D"$with_dbmalloc"
+  cat >>confdefs.h <<\EOF
+#define USE_DBMALLOC 1
+EOF
+
+	: ${with_cflags:=3D-g}
+	: ${with_no_leaks:=3Dyes}
+	 with_dbmalloc=3Dyes
+else
+  with_dbmalloc=3D
+fi;
+echo "$as_me:4851: result: ${with_dbmalloc:-no}" >&5
+echo "${ECHO_T}${with_dbmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+	case .$CFLAGS in #(vi
+	.*-g*) #(vi
+		;;
+	*)
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+		;;
+	esac
+	;;
+esac
+
+if test "$with_dbmalloc" =3D yes ; then
+	echo "$as_me:4945: checking for dbmalloc.h" >&5
+echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_dbmalloc_h+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line 4951 "configure"
+#include "confdefs.h"
+#include <dbmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:4955: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=3D$?
+  egrep -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:4961: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=3D$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=3D
+  fi
+else
+  ac_cpp_err=3Dyes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_dbmalloc_h=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  ac_cv_header_dbmalloc_h=3Dno
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:4980: result: $ac_cv_header_dbmalloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
+if test $ac_cv_header_dbmalloc_h =3D yes; then
+
+echo "$as_me:4984: checking for debug_malloc in -ldbmalloc" >&5
+echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
+if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-ldbmalloc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4992 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char debug_malloc ();
+int
+main ()
+{
+debug_malloc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5011: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=3D$?
+  echo "$as_me:5014: \$? =3D $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try=3D'test -s conftest$ac_exeext'
+  { (eval echo "$as_me:5017: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=3D$?
+  echo "$as_me:5020: \$? =3D $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dbmalloc_debug_malloc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dbmalloc_debug_malloc=3Dno
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+echo "$as_me:5031: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
+if test $ac_cv_lib_dbmalloc_debug_malloc =3D yes; then
+  cat >>confdefs.h <<EOF
+#define HAVE_LIBDBMALLOC 1
+EOF
+
+  LIBS=3D"-ldbmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:5046: checking if you want to use valgrind for testing" >&5
+echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C"=
 >&6
+
+# Check whether --with-valgrind or --without-valgrind was given.
+if test "${with_valgrind+set}" =3D set; then
+  withval=3D"$with_valgrind"
+  cat >>confdefs.h <<\EOF
+#define USE_VALGRIND 1
+EOF
+
+	: ${with_cflags:=3D-g}
+	: ${with_no_leaks:=3Dyes}
+	 with_valgrind=3Dyes
+else
+  with_valgrind=3D
+fi;
+echo "$as_me:5062: result: ${with_valgrind:-no}" >&5
+echo "${ECHO_T}${with_valgrind:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+	case .$CFLAGS in #(vi
+	.*-g*) #(vi
+		;;
+	*)
+
+cf_fix_cppflags=3Dno
+cf_new_cflags=3D
+cf_new_cppflags=3D
+cf_new_extra_cppflags=3D
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+	case $cf_add_cflags in #(vi
+	-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+		case $cf_add_cflags in
+		-D*)
+			cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^-D[^=3D]*=3D'\''\"[^=
"]*//'`
+
+			test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+				&& test -z "${cf_tst_cflags}" \
+				&& cf_fix_cppflags=3Dyes
+
+			if test $cf_fix_cppflags =3D yes ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			elif test "${cf_tst_cflags}" =3D "\"'" ; then
+				cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+				continue
+			fi
+			;;
+		esac
+		case "$CPPFLAGS" in
+		*$cf_add_cflags) #(vi
+			;;
+		*) #(vi
+			case $cf_add_cflags in #(vi
+			-D*)
+				cf_tst_cppflags=3D`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=
=3D.*//'`
+
+CPPFLAGS=3D`echo "$CPPFLAGS" | \
+	sed	-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?[ 	]/ /g' \
+		-e 's/-[UD]'"$cf_tst_cppflags"'\(=3D[^ 	]*\)\?$//g'`
+
+				;;
+			esac
+			cf_new_cppflags=3D"$cf_new_cppflags $cf_add_cflags"
+			;;
+		esac
+		;;
+	*)
+		cf_new_cflags=3D"$cf_new_cflags $cf_add_cflags"
+		;;
+	esac
+	;;
+yes)
+	cf_new_extra_cppflags=3D"$cf_new_extra_cppflags $cf_add_cflags"
+
+	cf_tst_cflags=3D`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+	test "${cf_add_cflags}" !=3D "${cf_tst_cflags}" \
+		&& test -z "${cf_tst_cflags}" \
+		&& cf_fix_cppflags=3Dno
+	;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+	CFLAGS=3D"$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+	CPPFLAGS=3D"$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+	EXTRA_CPPFLAGS=3D"$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+		;;
+	esac
+	;;
+esac
+
+echo "$as_me:5155: checking if you want to perform memory-leak testing" >&5
+echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO=
_C" >&6
+
+# Check whether --enable-leaks or --disable-leaks was given.
+if test "${enable_leaks+set}" =3D set; then
+  enableval=3D"$enable_leaks"
+  if test "x$enableval" =3D xno; then with_no_leaks=3Dyes; else with_no_le=
aks=3Dno; fi
+else
+  : ${with_no_leaks:=3Dno}
+fi;
+echo "$as_me:5165: result: $with_no_leaks" >&5
+echo "${ECHO_T}$with_no_leaks" >&6
+
+if test "$with_no_leaks" =3D yes ; then
+	cat >>confdefs.h <<\EOF
+#define NO_LEAKS 1
+EOF
+
+	cat >>confdefs.h <<\EOF
+#define YY_NO_LEAKS 1
+EOF
+
+fi
+
+###	output makefile
+ac_config_files=3D"$ac_config_files makefile"
+ac_config_commands=3D"$ac_config_commands default"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=3D' '; set | grep ac_space) 2>&1` in
+    *ac_space=3D\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+        "s/'/'\\\\''/g;
+    	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=3D\\(.*\\)/\\1=3D'\\2=
'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=3D\\(.*\\)/\\1=3D\\=
2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=3D]*\)=3D\(.*[{}].*\)$/test "${\1+set}" =3D set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=3D]*\)=3D\(.*\)$/\1=3D${\1=3D\2}/
+     : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" !=3D "x/dev/null" && echo "updating cache $cache_f=
ile"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" =3D xNONE && prefix=3D$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" =3D xNONE && exec_prefix=3D'${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" =3D x.; then
+  ac_vpsub=3D'/^[ 	]*VPATH[ 	]*=3D/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=3D]*=3D[ 	]*\):*/\1/;
+s/:*$//;
+s/^[^=3D]*=3D[ 	]*$//;
+}'
+fi
+
+DEFS=3D-DHAVE_CONFIG_H
+
+: ${CONFIG_STATUS=3D./config.status}
+ac_clean_files_save=3D$ac_clean_files
+ac_clean_files=3D"$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:5261: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=3Dfalse
+SHELL=3D\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation=3D"\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=3D:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Name of the executable.
+as_me=3D`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=3Dexpr
+else
+  as_expr=3Dfalse
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more gener=
ic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s=3D'cp -p'
+  else
+    as_ln_s=3D'ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=3Dln
+else
+  as_ln_s=3D'cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p=3D"test -f"
+
+# Support unset when possible.
+if (FOO=3DFOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=3Dunset
+else
+  as_unset=3Dfalse
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" !=3D set || { LANG=3DC; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" !=3D set || { LC_ALL=3DC; export =
LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" !=3D set || { LC_TIME=3DC; expo=
rt LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" !=3D set || { LC_CTYPE=3DC; e=
xport LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" !=3D set || { LANGUAGE=3DC; e=
xport LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" !=3D set || { LC_COLLATE=
=3DC; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" !=3D set || { LC_NUMERIC=
=3DC; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" !=3D set || { LC_MESSAG=
ES=3DC; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl=3D'
+'
+IFS=3D" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" !=3D set || { CDPATH=3D:; export =
CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=3D\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=3D\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=3D\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=3D\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage=3D"\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=3DFILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+  --header=3DFILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <dickey at invisible-island.net>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version=3D"\\
+config.status
+configured by $0, generated by GNU Autoconf 2.52.20101002,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`=
\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=3D$srcdir
+INSTALL=3D"$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=3D:
+while test $# !=3D 0
+do
+  case $1 in
+  --*=3D*)
+    ac_option=3D`expr "x$1" : 'x\([^=3D]*\)=3D'`
+    ac_optarg=3D`expr "x$1" : 'x[^=3D]*=3D\(.*\)'`
+    shift
+    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+    shift
+    ;;
+  -*);;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_need_defaults=3Dfalse;;
+  esac
+
+  case $1 in
+  # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recurs=
ion"
+    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:5437: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=3D: ;;
+  --file | --fil | --fi | --f )
+    shift
+    CONFIG_FILES=3D"$CONFIG_FILES $1"
+    ac_need_defaults=3Dfalse;;
+  --header | --heade | --head | --hea )
+    shift
+    CONFIG_HEADERS=3D"$CONFIG_HEADERS $1"
+    ac_need_defaults=3Dfalse;;
+
+  # This is an error.
+  -*) { { echo "$as_me:5456: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets=3D"$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+exec 5>>config.log
+cat >&5 << _ACEOF
+
+## ----------------------- ##
+## Running config.status.  ##
+## ----------------------- ##
+
+This file was extended by $as_me 2.52.20101002, executed with
+  CONFIG_FILES    =3D $CONFIG_FILES
+  CONFIG_HEADERS  =3D $CONFIG_HEADERS
+  CONFIG_LINKS    =3D $CONFIG_LINKS
+  CONFIG_COMMANDS =3D $CONFIG_COMMANDS
+  > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+
+_ACEOF
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "makefile" ) CONFIG_FILES=3D"$CONFIG_FILES makefile" ;;
+  "default" ) CONFIG_COMMANDS=3D"$CONFIG_COMMANDS default" ;;
+  "config.h" ) CONFIG_HEADERS=3D"$CONFIG_HEADERS config.h:config_h.in" ;;
+  *) { { echo "$as_me:5494: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiat=
e,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" =3D set || CONFIG_FILES=3D$config_files
+  test "${CONFIG_HEADERS+set}" =3D set || CONFIG_HEADERS=3D$config_headers
+  test "${CONFIG_COMMANDS+set}" =3D set || CONFIG_COMMANDS=3D$config_comma=
nds
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=3D$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=3D/tmp}
+{
+  tmp=3D`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=3D$TMPDIR/cs$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+   { (exit 1); exit 1; }
+}
+
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.statu=
s.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at DEFS@,$DEFS,;t t
+s, at LIBS@,$LIBS,;t t
+s, at build@,$build,;t t
+s, at build_cpu@,$build_cpu,;t t
+s, at build_vendor@,$build_vendor,;t t
+s, at build_os@,$build_os,;t t
+s, at host@,$host,;t t
+s, at host_cpu@,$host_cpu,;t t
+s, at host_vendor@,$host_vendor,;t t
+s, at host_os@,$host_os,;t t
+s, at target@,$target,;t t
+s, at target_cpu@,$target_cpu,;t t
+s, at target_vendor@,$target_vendor,;t t
+s, at target_os@,$target_os,;t t
+s, at CC@,$CC,;t t
+s, at CFLAGS@,$CFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CC@,$ac_ct_CC,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CTAGS@,$CTAGS,;t t
+s, at ETAGS@,$ETAGS,;t t
+s, at MAKE_LOWER_TAGS@,$MAKE_LOWER_TAGS,;t t
+s, at MAKE_UPPER_TAGS@,$MAKE_UPPER_TAGS,;t t
+s, at LINT@,$LINT,;t t
+s, at LINT_OPTS@,$LINT_OPTS,;t t
+s, at EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t
+s, at CPP@,$CPP,;t t
+s, at EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
+s, at ECHO_LT@,$ECHO_LT,;t t
+s, at ECHO_LD@,$ECHO_LD,;t t
+s, at RULE_CC@,$RULE_CC,;t t
+s, at SHOW_CC@,$SHOW_CC,;t t
+s, at ECHO_CC@,$ECHO_CC,;t t
+s, at PROG_EXT@,$PROG_EXT,;t t
+CEOF
+
+EOF
+
+  cat >>$CONFIG_STATUS <<\EOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=3D48
+  ac_sed_frag=3D1 # Number of current file.
+  ac_beg=3D1 # First line for current file.
+  ac_end=3D$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=3D:
+  ac_sed_cmds=3D
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=3Dfalse
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_=
frag.sed
+      if test -z "$ac_sed_cmds"; then
+  	ac_sed_cmds=3D"sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+  	ac_sed_cmds=3D"$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=3D`expr $ac_sed_frag + 1`
+      ac_beg=3D$ac_end
+      ac_end=3D`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=3Dcat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" =3D x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile=3D"outfile.i=
n".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=3D`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=3D`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=3D`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=3D`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=3D$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=3D`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  if test "$ac_dir" !=3D "$ac_file" && test "$ac_dir" !=3D .; then
+    { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=3D;;
+  *)                      as_incr_dir=3D.;;
+esac
+as_dummy=3D"$ac_dir"
+for as_mkdir_dir in `IFS=3D'/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=3D$as_mkdir_dir ;;
+    *)
+      as_incr_dir=3D$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+    ac_dir_suffix=3D"/`echo $ac_dir|sed 's,^\./,,'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=3D`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
+  else
+    ac_dir_suffix=3D ac_dots=3D
+  fi
+
+  case $srcdir in
+  .)  ac_srcdir=3D.
+      if test -z "$ac_dots"; then
+         ac_top_srcdir=3D.
+      else
+         ac_top_srcdir=3D`echo $ac_dots | sed 's,/$,,'`
+      fi ;;
+  [\\/]* | ?:[\\/]* )
+      ac_srcdir=3D$srcdir$ac_dir_suffix;
+      ac_top_srcdir=3D$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=3D$ac_dots$srcdir$ac_dir_suffix
+    ac_top_srcdir=3D$ac_dots$srcdir ;;
+  esac
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=3D$INSTALL ;;
+  *) ac_INSTALL=3D$ac_dots$INSTALL ;;
+  esac
+
+  if test x"$ac_file" !=3D x-; then
+    { echo "$as_me:5728: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  configure_input=3D"Generated automatically from `echo $ac_file_in |
+                                                 sed 's,.*/,,'` by configu=
re."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=3D`IFS=3D:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=3D:)
+         test -f "$f" || { { echo "$as_me:5746: error: cannot find input f=
ile: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5759: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+  sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" !=3D x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being g=
iven.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA=3D's,^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB=3D'[ 	].*$,\1#\2'
+ac_dC=3D' '
+ac_dD=3D',;t'
+# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_iA=3D's,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_iB=3D'\([ 	]\),\1#\2define\3'
+ac_iC=3D' '
+ac_iD=3D'\4,;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALU=
E".
+ac_uA=3D's,^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB=3D'$,\1#\2define\3'
+ac_uC=3D' '
+ac_uD=3D',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" =3D x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile=3D"outfile.i=
n".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=3D`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=3D`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=3D`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=3D`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=3D$ac_file.in ;;
+  esac
+
+  test x"$ac_file" !=3D x- && { echo "$as_me:5825: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=3D`IFS=3D:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=3D:)
+         test -f "$f" || { { echo "$as_me:5836: error: cannot find input f=
ile: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:5849: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[ 	]*$//' $ac_file_inputs >$tmp/in
+
+EOF
+
+# Transform confdefs.h into a list of #define's.  We won't use it as a sed
+# script, but as data to insert where we see @DEFS at .  We expect AC_SAVE_DE=
FS to
+# be either 'cat' or 'sort'.
+cat confdefs.h | uniq >conftest.vals
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+echo '  rm -f conftest.frag' >> $CONFIG_STATUS
+while grep . conftest.vals >/dev/null
+do
+  # Write chunks of a limited-size here document to conftest.frag.
+  echo '  cat >> conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> =
$CONFIG_STATUS
+  echo 'CEOF' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+# Run sed to substitute the contents of conftest.frag into $tmp/in at the
+# marker @DEFS at .
+echo '  cat >> conftest.edit <<CEOF
+/@DEFS@/r conftest.frag
+/@DEFS@/d
+CEOF
+sed -f conftest.edit $tmp/in > $tmp/out
+rm -f $tmp/in
+mv $tmp/out $tmp/in
+rm -f conftest.edit conftest.frag
+' >> $CONFIG_STATUS
+
+cat >>$CONFIG_STATUS <<\EOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated automatically by config.status.  */
+  if test x"$ac_file" =3D x-; then
+    echo "/* Generated automatically by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated automatically by configure.  */" >$tmp/c=
onfig.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" !=3D x-; then
+    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+      { echo "$as_me:5907: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=3D`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      if test "$ac_dir" !=3D "$ac_file" && test "$ac_dir" !=3D .; then
+        { case "$ac_dir" in
+  [\\/]* | ?:[\\/]* ) as_incr_dir=3D;;
+  *)                      as_incr_dir=3D.;;
+esac
+as_dummy=3D"$ac_dir"
+for as_mkdir_dir in `IFS=3D'/\\'; set X $as_dummy; shift; echo "$@"`; do
+  case $as_mkdir_dir in
+    # Skip DOS drivespec
+    ?:) as_incr_dir=3D$as_mkdir_dir ;;
+    *)
+      as_incr_dir=3D$as_incr_dir/$as_mkdir_dir
+      test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+    ;;
+  esac
+done; }
+
+      fi
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+done
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+
+{ (exit 0); exit 0; }
+EOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=3D$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" !=3D yes; then
+  ac_cs_success=3D:
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS || ac_cs_success=3Dfalse
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? =3D 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/configure.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/configure.in	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,30 @@
+dnl Process this file with 'autoconf' to produce a 'configure' script
+dnl $Id: configure.in,v 1.10 2010/12/26 19:10:21 tom Exp $
+AC_PREREQ(2.13.20020210)
+AC_REVISION($Revision: 1.10 $)
+AC_INIT(main.c)
+AC_CONFIG_HEADER(config.h:config_h.in)
+
+CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
+
+AC_ARG_PROGRAM
+AC_PROG_CC
+AC_CONST
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+CF_MAKE_TAGS
+CF_PROG_LINT
+
+CF_ANSI_CC_REQD
+CF_XOPEN_SOURCE
+AC_CHECK_HEADERS(fcntl.h)
+AC_CHECK_FUNCS(atexit)
+CF_MKSTEMP
+
+CF_WITH_WARNINGS(Wwrite-strings)
+CF_DISABLE_ECHO
+CF_PROG_EXT
+CF_DISABLE_LEAKS
+
+###	output makefile
+AC_OUTPUT(makefile,,,cat)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/defs.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/defs.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,438 @@
+/* $Id: defs.h,v 1.36 2011/12/20 01:31:16 tom Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <ctype.h>
+#include <stdio.h>
+
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define CONCAT(first,second)    first #second
+#define CONCAT1(string,number)  CONCAT(string, number)
+#define CONCAT2(first,second)   #first "." #second
+
+#ifdef YYPATCH
+#define VSTRING(a,b) CONCAT2(a,b) CONCAT1(" ",YYPATCH)
+#else
+#define VSTRING(a,b) CONCAT2(a,b)
+#endif
+
+#define VERSION VSTRING(YYMAJOR, YYMINOR)
+
+/*  machine-dependent definitions			*/
+/*  the following definitions are for the Tahoe		*/
+/*  they might have to be changed for other machines	*/
+
+/*  MAXCHAR is the largest unsigned character value	*/
+/*  MAXSHORT is the largest value of a C short		*/
+/*  MINSHORT is the most negative value of a C short	*/
+/*  MAXTABLE is the maximum table size			*/
+/*  BITS_PER_WORD is the number of bits in a C unsigned	*/
+/*  WORDSIZE computes the number of words needed to	*/
+/*	store n bits					*/
+/*  BIT returns the value of the n-th bit starting	*/
+/*	from r (0-indexed)				*/
+/*  SETBIT sets the n-th bit starting from r		*/
+
+#define	MAXCHAR		255
+#define	MAXSHORT	32767
+#define MINSHORT	-32768
+#define MAXTABLE	32500
+#define BITS_PER_WORD	32
+#define	WORDSIZE(n)	(((n)+(BITS_PER_WORD-1))/BITS_PER_WORD)
+#define	BIT(r, n)	((((r)[(n)>>5])>>((n)&31))&1)
+#define	SETBIT(r, n)	((r)[(n)>>5]|=3D((unsigned)1<<((n)&31)))
+
+/*  character names  */
+
+#define	NUL		'\0'	/*  the null character  */
+#define	NEWLINE		'\n'	/*  line feed  */
+#define	SP		' '	/*  space  */
+#define	BS		'\b'	/*  backspace  */
+#define	HT		'\t'	/*  horizontal tab  */
+#define	VT		'\013'	/*  vertical tab  */
+#define	CR		'\r'	/*  carriage return  */
+#define	FF		'\f'	/*  form feed  */
+#define	QUOTE		'\''	/*  single quote  */
+#define	DOUBLE_QUOTE	'\"'	/*  double quote  */
+#define	BACKSLASH	'\\'	/*  backslash  */
+
+#define UCH(c)          (unsigned char)(c)
+
+/* defines for constructing filenames */
+
+#if defined(VMS)
+#define CODE_SUFFIX	"_code.c"
+#define	DEFINES_SUFFIX	"_tab.h"
+#define	EXTERNS_SUFFIX	"_tab.i"
+#define	OUTPUT_SUFFIX	"_tab.c"
+#else
+#define CODE_SUFFIX	".code.c"
+#define	DEFINES_SUFFIX	".tab.h"
+#define	EXTERNS_SUFFIX	".tab.i"
+#define	OUTPUT_SUFFIX	".tab.c"
+#endif
+#define	VERBOSE_SUFFIX	".output"
+#define GRAPH_SUFFIX    ".dot"
+
+/* keyword codes */
+
+#define TOKEN 0
+#define LEFT 1
+#define RIGHT 2
+#define NONASSOC 3
+#define MARK 4
+#define TEXT 5
+#define TYPE 6
+#define START 7
+#define UNION 8
+#define IDENT 9
+#define EXPECT 10
+#define EXPECT_RR 11
+#define PURE_PARSER 12
+#define PARSE_PARAM 13
+#define LEX_PARAM 14
+#define POSIX_YACC 15
+
+/*  symbol classes  */
+
+#define UNKNOWN 0
+#define TERM 1
+#define NONTERM 2
+
+/*  the undefined value  */
+
+#define UNDEFINED (-1)
+
+/*  action codes  */
+
+#define SHIFT 1
+#define REDUCE 2
+
+/*  character macros  */
+
+#define IS_IDENT(c)	(isalnum(c) || (c) =3D=3D '_' || (c) =3D=3D '.' || (c)=
 =3D=3D '$')
+#define	IS_OCTAL(c)	((c) >=3D '0' && (c) <=3D '7')
+#define	NUMERIC_VALUE(c)	((c) - '0')
+
+/*  symbol macros  */
+
+#define ISTOKEN(s)	((s) < start_symbol)
+#define ISVAR(s)	((s) >=3D start_symbol)
+
+/*  storage allocation macros  */
+
+#define CALLOC(k,n)	(calloc((size_t)(k),(size_t)(n)))
+#define	FREE(x)		(free((char*)(x)))
+#define MALLOC(n)	(malloc((size_t)(n)))
+#define	NEW(t)		((t*)allocate(sizeof(t)))
+#define	NEW2(n,t)	((t*)allocate(((size_t)(n)*sizeof(t))))
+#define REALLOC(p,n)	(realloc((char*)(p),(size_t)(n)))
+
+#define DO_FREE(x)	if (x) { FREE(x); x =3D 0; }
+
+#define NO_SPACE(p)	if (p =3D=3D 0) no_space(); assert(p !=3D 0)
+
+/* messages */
+#define PLURAL(n) ((n) > 1 ? "s" : "")
+
+typedef char Assoc_t;
+typedef char Class_t;
+typedef short Index_t;
+typedef short Value_t;
+
+/*  the structure of a symbol table entry  */
+
+typedef struct bucket bucket;
+struct bucket
+{
+    struct bucket *link;
+    struct bucket *next;
+    char *name;
+    char *tag;
+    Value_t value;
+    Index_t index;
+    Value_t prec;
+    Class_t class;
+    Assoc_t assoc;
+};
+
+/*  the structure of the LR(0) state machine  */
+
+typedef struct core core;
+struct core
+{
+    struct core *next;
+    struct core *link;
+    Value_t number;
+    Value_t accessing_symbol;
+    Value_t nitems;
+    Value_t items[1];
+};
+
+/*  the structure used to record shifts  */
+
+typedef struct shifts shifts;
+struct shifts
+{
+    struct shifts *next;
+    Value_t number;
+    Value_t nshifts;
+    Value_t shift[1];
+};
+
+/*  the structure used to store reductions  */
+
+typedef struct reductions reductions;
+struct reductions
+{
+    struct reductions *next;
+    Value_t number;
+    Value_t nreds;
+    Value_t rules[1];
+};
+
+/*  the structure used to represent parser actions  */
+
+typedef struct action action;
+struct action
+{
+    struct action *next;
+    Value_t symbol;
+    Value_t number;
+    Value_t prec;
+    char action_code;
+    Assoc_t assoc;
+    char suppressed;
+};
+
+/*  the structure used to store parse/lex parameters  */
+typedef struct param param;
+struct param
+{
+    struct param *next;
+    char *name;		/* parameter name */
+    char *type;		/* everything before parameter name */
+    char *type2;	/* everything after parameter name */
+};
+
+/* global variables */
+
+extern char dflag;
+extern char gflag;
+extern char iflag;
+extern char lflag;
+extern char rflag;
+extern char sflag;
+extern char tflag;
+extern char vflag;
+extern const char *symbol_prefix;
+
+extern const char *myname;
+extern char *cptr;
+extern char *line;
+extern int lineno;
+extern int outline;
+extern int exit_code;
+
+extern const char *const banner[];
+extern const char *const xdecls[];
+extern const char *const tables[];
+extern const char *const global_vars[];
+extern const char *const impure_vars[];
+extern const char *const hdr_defs[];
+extern const char *const hdr_vars[];
+extern const char *const body_1[];
+extern const char *const body_vars[];
+extern const char *const body_2[];
+extern const char *const body_3[];
+extern const char *const trailer[];
+extern const char *const trailer_2[];
+
+extern char *code_file_name;
+extern char *input_file_name;
+extern char *defines_file_name;
+extern char *externs_file_name;
+
+extern FILE *action_file;
+extern FILE *code_file;
+extern FILE *defines_file;
+extern FILE *externs_file;
+extern FILE *input_file;
+extern FILE *output_file;
+extern FILE *text_file;
+extern FILE *union_file;
+extern FILE *verbose_file;
+extern FILE *graph_file;
+
+extern int nitems;
+extern int nrules;
+extern int nsyms;
+extern int ntokens;
+extern int nvars;
+extern int ntags;
+
+extern char unionized;
+extern char line_format[];
+
+extern Value_t start_symbol;
+extern char **symbol_name;
+extern char **symbol_pname;
+extern Value_t *symbol_value;
+extern Value_t *symbol_prec;
+extern char *symbol_assoc;
+
+extern Value_t *ritem;
+extern Value_t *rlhs;
+extern Value_t *rrhs;
+extern Value_t *rprec;
+extern Assoc_t *rassoc;
+
+extern Value_t **derives;
+extern char *nullable;
+
+extern bucket *first_symbol;
+extern bucket *last_symbol;
+
+extern int pure_parser;
+extern int nstates;
+extern core *first_state;
+extern shifts *first_shift;
+extern reductions *first_reduction;
+extern Value_t *accessing_symbol;
+extern core **state_table;
+extern shifts **shift_table;
+extern reductions **reduction_table;
+extern unsigned *LA;
+extern Value_t *LAruleno;
+extern Value_t *lookaheads;
+extern Value_t *goto_map;
+extern Value_t *from_state;
+extern Value_t *to_state;
+
+extern action **parser;
+extern int SRexpect;
+extern int RRexpect;
+extern int SRtotal;
+extern int RRtotal;
+extern Value_t *SRconflicts;
+extern Value_t *RRconflicts;
+extern Value_t *defred;
+extern Value_t *rules_used;
+extern Value_t nunused;
+extern Value_t final_state;
+
+extern Value_t *itemset;
+extern Value_t *itemsetend;
+extern unsigned *ruleset;
+
+extern param *lex_param;
+extern param *parse_param;
+
+/* global functions */
+
+extern bucket *lookup(const char *);
+extern bucket *make_bucket(const char *);
+
+#ifndef GCC_NORETURN
+#define GCC_NORETURN		/* nothing */
+#endif
+
+#ifndef GCC_UNUSED
+#define GCC_UNUSED		/* nothing */
+#endif
+
+/* closure.c */
+extern void closure(Value_t * nucleus, int n);
+extern void finalize_closure(void);
+extern void set_first_derives(void);
+
+/* error.c */
+extern void default_action_warning(void);
+extern void dollar_error(int a_lineno, char *a_line, char *a_cptr) GCC_NOR=
ETURN;
+extern void dollar_warning(int a_lineno, int i);
+extern void fatal(const char *msg) GCC_NORETURN;
+extern void illegal_character(char *c_cptr) GCC_NORETURN;
+extern void illegal_tag(int t_lineno, char *t_line, char *t_cptr) GCC_NORE=
TURN;
+extern void missing_brace(void) GCC_NORETURN;
+extern void no_grammar(void) GCC_NORETURN;
+extern void no_space(void) GCC_NORETURN;
+extern void open_error(const char *filename) GCC_NORETURN;
+extern void over_unionized(char *u_cptr) GCC_NORETURN;
+extern void prec_redeclared(void);
+extern void reprec_warning(char *s);
+extern void restarted_warning(void);
+extern void retyped_warning(char *s);
+extern void revalued_warning(char *s);
+extern void syntax_error(int st_lineno, char *st_line, char *st_cptr) GCC_=
NORETURN;
+extern void terminal_lhs(int s_lineno) GCC_NORETURN;
+extern void terminal_start(char *s) GCC_NORETURN;
+extern void tokenized_start(char *s) GCC_NORETURN;
+extern void undefined_goal(char *s) GCC_NORETURN;
+extern void undefined_symbol_warning(char *s);
+extern void unexpected_EOF(void) GCC_NORETURN;
+extern void unknown_rhs(int i) GCC_NORETURN;
+extern void unterminated_action(int a_lineno, char *a_line, char *a_cptr) =
GCC_NORETURN;
+extern void unterminated_comment(int c_lineno, char *c_line, char *c_cptr)=
 GCC_NORETURN;
+extern void unterminated_string(int s_lineno, char *s_line, char *s_cptr) =
GCC_NORETURN;
+extern void unterminated_text(int t_lineno, char *t_line, char *t_cptr) GC=
C_NORETURN;
+extern void unterminated_union(int u_lineno, char *u_line, char *u_cptr) G=
CC_NORETURN;
+extern void untyped_lhs(void) GCC_NORETURN;
+extern void untyped_rhs(int i, char *s) GCC_NORETURN;
+extern void used_reserved(char *s) GCC_NORETURN;
+
+/* graph.c */
+extern void graph(void);
+
+/* lalr.c */
+extern void create_symbol_table(void);
+extern void free_symbol_table(void);
+extern void free_symbols(void);
+
+/* lalr.c */
+extern void lalr(void);
+
+/* lr0.c */
+extern void lr0(void);
+extern void show_cores(void);
+extern void show_ritems(void);
+extern void show_rrhs(void);
+extern void show_shifts(void);
+
+/* main.c */
+extern void *allocate(size_t n);
+extern void done(int k) GCC_NORETURN;
+
+/* mkpar.c */
+extern void free_parser(void);
+extern void make_parser(void);
+
+/* output.c */
+extern void output(void);
+
+/* reader.c */
+extern void reader(void);
+
+/* skeleton.c */
+extern void write_section(FILE *fp, const char *const section[]);
+
+/* verbose.c */
+extern void verbose(void);
+
+/* warshall.c */
+extern void reflexive_transitive_closure(unsigned *R, int n);
+
+#ifdef NO_LEAKS
+extern void lr0_leaks(void);
+extern void lalr_leaks(void);
+extern void mkpar_leaks(void);
+extern void output_leaks(void);
+extern void reader_leaks(void);
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/descrip.mms
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/descrip.mms	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,37 @@
+CFLAGS =3D /decc $(CC_OPTIONS)/Diagnostics /Define=3D(NDEBUG) /Object=3D$@=
 /Include=3D([])
+
+LINKFLAGS	=3D /map=3D$(MMS$TARGET_NAME)/cross_reference/exec=3D$(MMS$TARGE=
T_NAME).exe
+
+LINKER	      =3D cc
+
+OBJS	      =3D closure.obj, \
+		error.obj, \
+		lalr.obj, \
+		lr0.obj, \
+		main.obj, \
+		mkpar.obj, \
+		output.obj, \
+		reader.obj, \
+		skeleton.obj, \
+		symtab.obj, \
+		verbose.obj, \
+		warshall.obj
+
+PROGRAM	      =3D yacc.exe
+
+all :		$(PROGRAM)
+
+$(PROGRAM) :     $(OBJS)
+	@ write sys$output "Loading $(PROGRAM) ... "
+	@ $(LINK) $(LINKFLAGS) $(OBJS)
+	@ write sys$output "done"
+
+clean :
+	@- if f$search("*.obj") .nes. "" then delete *.obj;*
+	@- if f$search("*.lis") .nes. "" then delete *.lis;*
+	@- if f$search("*.log") .nes. "" then delete *.log;*
+
+clobber :	clean
+	@- if f$search("*.exe") .nes. "" then delete *.exe;*
+
+$(OBJS) : defs.h
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/error.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/error.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,288 @@
+/* $Id: error.c,v 1.9 2011/09/05 23:27:43 tom Exp $ */
+
+/* routines for printing error messages  */
+
+#include "defs.h"
+
+void
+fatal(const char *msg)
+{
+    fprintf(stderr, "%s: f - %s\n", myname, msg);
+    done(2);
+}
+
+void
+no_space(void)
+{
+    fprintf(stderr, "%s: f - out of space\n", myname);
+    done(2);
+}
+
+void
+open_error(const char *filename)
+{
+    fprintf(stderr, "%s: f - cannot open \"%s\"\n", myname, filename);
+    done(2);
+}
+
+void
+missing_brace(void)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", missing '}'\n",
+	    myname, lineno, input_file_name);
+    done(1);
+}
+
+void
+unexpected_EOF(void)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unexpected end-of-file\n",
+	    myname, lineno, input_file_name);
+    done(1);
+}
+
+static void
+print_pos(char *st_line, char *st_cptr)
+{
+    char *s;
+
+    if (st_line =3D=3D 0)
+	return;
+    for (s =3D st_line; *s !=3D '\n'; ++s)
+    {
+	if (isprint(UCH(*s)) || *s =3D=3D '\t')
+	    putc(*s, stderr);
+	else
+	    putc('?', stderr);
+    }
+    putc('\n', stderr);
+    for (s =3D st_line; s < st_cptr; ++s)
+    {
+	if (*s =3D=3D '\t')
+	    putc('\t', stderr);
+	else
+	    putc(' ', stderr);
+    }
+    putc('^', stderr);
+    putc('\n', stderr);
+}
+
+void
+syntax_error(int st_lineno, char *st_line, char *st_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
+	    myname, st_lineno, input_file_name);
+    print_pos(st_line, st_cptr);
+    done(1);
+}
+
+void
+unterminated_comment(int c_lineno, char *c_line, char *c_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unmatched /*\n",
+	    myname, c_lineno, input_file_name);
+    print_pos(c_line, c_cptr);
+    done(1);
+}
+
+void
+unterminated_string(int s_lineno, char *s_line, char *s_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unterminated string\n",
+	    myname, s_lineno, input_file_name);
+    print_pos(s_line, s_cptr);
+    done(1);
+}
+
+void
+unterminated_text(int t_lineno, char *t_line, char *t_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unmatched %%{\n",
+	    myname, t_lineno, input_file_name);
+    print_pos(t_line, t_cptr);
+    done(1);
+}
+
+void
+unterminated_union(int u_lineno, char *u_line, char *u_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unterminated %%union \
+declaration\n", myname, u_lineno, input_file_name);
+    print_pos(u_line, u_cptr);
+    done(1);
+}
+
+void
+over_unionized(char *u_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
+declarations\n", myname, lineno, input_file_name);
+    print_pos(line, u_cptr);
+    done(1);
+}
+
+void
+illegal_tag(int t_lineno, char *t_line, char *t_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
+	    myname, t_lineno, input_file_name);
+    print_pos(t_line, t_cptr);
+    done(1);
+}
+
+void
+illegal_character(char *c_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
+	    myname, lineno, input_file_name);
+    print_pos(line, c_cptr);
+    done(1);
+}
+
+void
+used_reserved(char *s)
+{
+    fprintf(stderr,
+	    "%s: e - line %d of \"%s\", illegal use of reserved symbol \
+%s\n", myname, lineno, input_file_name, s);
+    done(1);
+}
+
+void
+tokenized_start(char *s)
+{
+    fprintf(stderr,
+	    "%s: e - line %d of \"%s\", the start symbol %s cannot be \
+declared to be a token\n", myname, lineno, input_file_name, s);
+    done(1);
+}
+
+void
+retyped_warning(char *s)
+{
+    fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
+redeclared\n", myname, lineno, input_file_name, s);
+}
+
+void
+reprec_warning(char *s)
+{
+    fprintf(stderr,
+	    "%s: w - line %d of \"%s\", the precedence of %s has been \
+redeclared\n", myname, lineno, input_file_name, s);
+}
+
+void
+revalued_warning(char *s)
+{
+    fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
+redeclared\n", myname, lineno, input_file_name, s);
+}
+
+void
+terminal_start(char *s)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
+token\n", myname, lineno, input_file_name, s);
+    done(1);
+}
+
+void
+restarted_warning(void)
+{
+    fprintf(stderr, "%s: w - line %d of \"%s\", the start symbol has been \
+redeclared\n", myname, lineno, input_file_name);
+}
+
+void
+no_grammar(void)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", no grammar has been \
+specified\n", myname, lineno, input_file_name);
+    done(1);
+}
+
+void
+terminal_lhs(int s_lineno)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", a token appears on the lhs=
 \
+of a production\n", myname, s_lineno, input_file_name);
+    done(1);
+}
+
+void
+prec_redeclared(void)
+{
+    fprintf(stderr, "%s: w - line %d of  \"%s\", conflicting %%prec \
+specifiers\n", myname, lineno, input_file_name);
+}
+
+void
+unterminated_action(int a_lineno, char *a_line, char *a_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", unterminated action\n",
+	    myname, a_lineno, input_file_name);
+    print_pos(a_line, a_cptr);
+    done(1);
+}
+
+void
+dollar_warning(int a_lineno, int i)
+{
+    fprintf(stderr, "%s: w - line %d of \"%s\", $%d references beyond the \
+end of the current rule\n", myname, a_lineno, input_file_name, i);
+}
+
+void
+dollar_error(int a_lineno, char *a_line, char *a_cptr)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
+	    myname, a_lineno, input_file_name);
+    print_pos(a_line, a_cptr);
+    done(1);
+}
+
+void
+untyped_lhs(void)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", $$ is untyped\n",
+	    myname, lineno, input_file_name);
+    done(1);
+}
+
+void
+untyped_rhs(int i, char *s)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
+	    myname, lineno, input_file_name, i, s);
+    done(1);
+}
+
+void
+unknown_rhs(int i)
+{
+    fprintf(stderr, "%s: e - line %d of \"%s\", $%d is untyped\n",
+	    myname, lineno, input_file_name, i);
+    done(1);
+}
+
+void
+default_action_warning(void)
+{
+    fprintf(stderr,
+	    "%s: w - line %d of \"%s\", the default action assigns an \
+undefined value to $$\n", myname, lineno, input_file_name);
+}
+
+void
+undefined_goal(char *s)
+{
+    fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, =
s);
+    done(1);
+}
+
+void
+undefined_symbol_warning(char *s)
+{
+    fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/graph.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/graph.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+/* $Id: graph.c,v 1.7 2009/10/27 09:25:20 tom Exp $ */
+
+#include "defs.h"
+
+static void graph_state(int stateno);
+static void graph_LA(int ruleno);
+
+static unsigned int larno;
+
+void
+graph(void)
+{
+    int i;
+    int j;
+    shifts *sp;
+    int sn;
+    int as;
+
+    if (!gflag)
+	return;
+
+    for (i =3D 0; i < nstates; ++i)
+    {
+	closure(state_table[i]->items, state_table[i]->nitems);
+	graph_state(i);
+    }
+
+    fprintf(graph_file, "\n\n");
+    for (i =3D 0; i < nstates; ++i)
+    {
+
+	sp =3D shift_table[i];
+	if (sp)
+	    for (j =3D 0; j < sp->nshifts; ++j)
+	    {
+		sn =3D sp->shift[j];
+		as =3D accessing_symbol[sn];
+		fprintf(graph_file,
+			"\tq%d -> q%d [label=3D\"%s\"];\n",
+			i, sn, symbol_pname[as]);
+	    }
+    }
+
+    fprintf(graph_file, "}\n");
+
+    for (i =3D 0; i < nsyms; ++i)
+	FREE(symbol_pname[i]);
+    FREE(symbol_pname);
+}
+
+static void
+graph_state(int stateno)
+{
+    short *isp;
+    int rule;
+    short *sp;
+    short *sp1;
+
+    larno =3D (unsigned)lookaheads[stateno];
+    fprintf(graph_file, "\n\tq%d [label=3D\"%d:\\l", stateno, stateno);
+
+    for (isp =3D itemset; isp < itemsetend; isp++)
+    {
+	sp1 =3D sp =3D ritem + *isp;
+
+	while (*sp >=3D 0)
+	    ++sp;
+	rule =3D -(*sp);
+	fprintf(graph_file, "  %s -> ", symbol_pname[rlhs[rule]]);
+
+	for (sp =3D ritem + rrhs[rule]; sp < sp1; sp++)
+	    fprintf(graph_file, "%s ", symbol_pname[*sp]);
+
+	putc('.', graph_file);
+
+	while (*sp >=3D 0)
+	{
+	    fprintf(graph_file, " %s", symbol_pname[*sp]);
+	    sp++;
+	}
+
+	if (*sp1 < 0)
+	    graph_LA(-*sp1);
+
+	fprintf(graph_file, "\\l");
+    }
+    fprintf(graph_file, "\"];");
+}
+
+static void
+graph_LA(int ruleno)
+{
+    int i;
+    unsigned tokensetsize;
+    unsigned *rowp;
+
+    tokensetsize =3D (unsigned)WORDSIZE(ntokens);
+
+    if (ruleno =3D=3D LAruleno[larno])
+    {
+	rowp =3D LA + larno * tokensetsize;
+
+	fprintf(graph_file, " { ");
+	for (i =3D ntokens - 1; i >=3D 0; i--)
+	{
+	    if (BIT(rowp, i))
+		fprintf(graph_file, "%s ", symbol_pname[i]);
+	}
+	fprintf(graph_file, "}");
+	++larno;
+    }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/install-sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/install-sh	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,294 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a =
copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation t=
he
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and=
/or
+# sell copies of the Software, and to permit persons to whom the Software =
is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included =
in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS =
OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL=
 THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHE=
R IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON=
NEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall n=
ot
+# be used in advertising or otherwise to promote the sale, use or other de=
al-
+# ings in this Software without prior written authorization from the X Con=
sor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=3D"${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. v=
ars.
+
+mvprog=3D"${MVPROG-mv}"
+cpprog=3D"${CPPROG-cp}"
+chmodprog=3D"${CHMODPROG-chmod}"
+chownprog=3D"${CHOWNPROG-chown}"
+chgrpprog=3D"${CHGRPPROG-chgrp}"
+stripprog=3D"${STRIPPROG-strip}"
+rmprog=3D"${RMPROG-rm}"
+mkdirprog=3D"${MKDIRPROG-mkdir}"
+
+transformbasename=3D""
+transform_arg=3D""
+instcmd=3D"$mvprog"
+chmodcmd=3D"$chmodprog 0755"
+chowncmd=3D""
+chgrpcmd=3D""
+stripcmd=3D""
+rmcmd=3D"$rmprog -f"
+mvcmd=3D"$mvprog"
+src=3D""
+dst=3D""
+dir_arg=3D""
+
+while [ x"$1" !=3D x ]; do
+    case $1 in
+	-c) instcmd=3D$cpprog
+	    shift
+	    continue;;
+
+	-d) dir_arg=3Dtrue
+	    shift
+	    continue;;
+
+	-m) chmodcmd=3D"$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd=3D"$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd=3D"$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd=3D$stripprog
+	    shift
+	    continue;;
+
+	-t=3D*) transformarg=3D`echo $1 | sed 's/-t=3D//'`
+	    shift
+	    continue;;
+
+	-b=3D*) transformbasename=3D`echo $1 | sed 's/-b=3D//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" =3D x ]
+	    then
+		src=3D$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=3D$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" =3D x ]
+then
+	echo "$0: no input file specified" >&2
+	exit 1
+else
+	:
+fi
+
+if [ x"$dir_arg" !=3D x ]; then
+	dst=3D$src
+	src=3D""
+
+	if [ -d "$dst" ]; then
+		instcmd=3D:
+		chmodcmd=3D""
+	else
+		instcmd=3D$mkdirprog
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f "$src" ] || [ -d "$src" ]
+	then
+		:
+	else
+		echo "$0: $src does not exist" >&2
+		exit 1
+	fi
+
+	if [ x"$dst" =3D x ]
+	then
+		echo "$0: no destination specified" >&2
+		exit 1
+	else
+		:
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d "$dst" ]
+	then
+		dst=3D$dst/`basename "$src"`
+	else
+		:
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=3D`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS=3D'
+	'
+IFS=3D"${IFS-$defaultIFS}"
+
+oIFS=3D$IFS
+# Some sh's can't handle IFS=3D/ for some reason.
+IFS=3D'%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=3D$oIFS
+
+pathcomp=3D''
+
+while [ $# -ne 0 ] ; do
+	pathcomp=3D$pathcomp$1
+	shift
+
+	if [ ! -d "$pathcomp" ] ;
+        then
+		$mkdirprog "$pathcomp"
+	else
+		:
+	fi
+
+	pathcomp=3D$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" !=3D x ]
+then
+	$doit $instcmd "$dst" &&
+
+	if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+	if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+	if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+	if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" =3D x ]
+	then
+		dstfile=3D`basename "$dst"`
+	else
+		dstfile=3D`basename "$dst" $transformbasename |
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" =3D x ]
+	then
+		dstfile=3D`basename "$dst"`
+	else
+		:
+	fi
+
+# Make a couple of temp file names in the proper directory.
+
+	dsttmp=3D$dstdir/#inst.$$#
+	rmtmp=3D$dstdir/#rm.$$#
+
+# Trap to clean up temp files at exit.
+
+	trap 'status=3D$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+	trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+	if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+	if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+	if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try t=
his
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+	if [ -f "$dstdir/$dstfile" ]
+	then
+		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+		{
+		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		  (exit 1); exit
+		}
+	else
+		:
+	fi
+} &&
+
+# Now rename the file to the real destination.
+
+	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit t=
rap.
+
+{
+	(exit 0); exit
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/lalr.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/lalr.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,655 @@
+/* $Id: lalr.c,v 1.9 2009/10/27 09:49:27 tom Exp $ */
+
+#include "defs.h"
+
+typedef struct shorts
+{
+    struct shorts *next;
+    Value_t value;
+}
+shorts;
+
+static Value_t map_goto(int state, int symbol);
+static Value_t **transpose(Value_t ** R, int n);
+static void add_lookback_edge(int stateno, int ruleno, int gotono);
+static void build_relations(void);
+static void compute_FOLLOWS(void);
+static void compute_lookaheads(void);
+static void digraph(Value_t ** relation);
+static void initialize_F(void);
+static void initialize_LA(void);
+static void set_accessing_symbol(void);
+static void set_goto_map(void);
+static void set_maxrhs(void);
+static void set_reduction_table(void);
+static void set_shift_table(void);
+static void set_state_table(void);
+static void traverse(int i);
+
+static int tokensetsize;
+Value_t *lookaheads;
+Value_t *LAruleno;
+unsigned *LA;
+Value_t *accessing_symbol;
+core **state_table;
+shifts **shift_table;
+reductions **reduction_table;
+Value_t *goto_map;
+Value_t *from_state;
+Value_t *to_state;
+
+static Value_t infinity;
+static int maxrhs;
+static int ngotos;
+static unsigned *F;
+static Value_t **includes;
+static shorts **lookback;
+static Value_t **R;
+static Value_t *INDEX;
+static Value_t *VERTICES;
+static Value_t top;
+
+void
+lalr(void)
+{
+    tokensetsize =3D WORDSIZE(ntokens);
+
+    set_state_table();
+    set_accessing_symbol();
+    set_shift_table();
+    set_reduction_table();
+    set_maxrhs();
+    initialize_LA();
+    set_goto_map();
+    initialize_F();
+    build_relations();
+    compute_FOLLOWS();
+    compute_lookaheads();
+}
+
+static void
+set_state_table(void)
+{
+    core *sp;
+
+    state_table =3D NEW2(nstates, core *);
+    for (sp =3D first_state; sp; sp =3D sp->next)
+	state_table[sp->number] =3D sp;
+}
+
+static void
+set_accessing_symbol(void)
+{
+    core *sp;
+
+    accessing_symbol =3D NEW2(nstates, Value_t);
+    for (sp =3D first_state; sp; sp =3D sp->next)
+	accessing_symbol[sp->number] =3D sp->accessing_symbol;
+}
+
+static void
+set_shift_table(void)
+{
+    shifts *sp;
+
+    shift_table =3D NEW2(nstates, shifts *);
+    for (sp =3D first_shift; sp; sp =3D sp->next)
+	shift_table[sp->number] =3D sp;
+}
+
+static void
+set_reduction_table(void)
+{
+    reductions *rp;
+
+    reduction_table =3D NEW2(nstates, reductions *);
+    for (rp =3D first_reduction; rp; rp =3D rp->next)
+	reduction_table[rp->number] =3D rp;
+}
+
+static void
+set_maxrhs(void)
+{
+    Value_t *itemp;
+    Value_t *item_end;
+    int length;
+    int max;
+
+    length =3D 0;
+    max =3D 0;
+    item_end =3D ritem + nitems;
+    for (itemp =3D ritem; itemp < item_end; itemp++)
+    {
+	if (*itemp >=3D 0)
+	{
+	    length++;
+	}
+	else
+	{
+	    if (length > max)
+		max =3D length;
+	    length =3D 0;
+	}
+    }
+
+    maxrhs =3D max;
+}
+
+static void
+initialize_LA(void)
+{
+    int i, j, k;
+    reductions *rp;
+
+    lookaheads =3D NEW2(nstates + 1, Value_t);
+
+    k =3D 0;
+    for (i =3D 0; i < nstates; i++)
+    {
+	lookaheads[i] =3D (Value_t) k;
+	rp =3D reduction_table[i];
+	if (rp)
+	    k +=3D rp->nreds;
+    }
+    lookaheads[nstates] =3D (Value_t) k;
+
+    LA =3D NEW2(k * tokensetsize, unsigned);
+    LAruleno =3D NEW2(k, Value_t);
+    lookback =3D NEW2(k, shorts *);
+
+    k =3D 0;
+    for (i =3D 0; i < nstates; i++)
+    {
+	rp =3D reduction_table[i];
+	if (rp)
+	{
+	    for (j =3D 0; j < rp->nreds; j++)
+	    {
+		LAruleno[k] =3D rp->rules[j];
+		k++;
+	    }
+	}
+    }
+}
+
+static void
+set_goto_map(void)
+{
+    shifts *sp;
+    int i;
+    int symbol;
+    int k;
+    Value_t *temp_map;
+    Value_t state2;
+    Value_t state1;
+
+    goto_map =3D NEW2(nvars + 1, Value_t) - ntokens;
+    temp_map =3D NEW2(nvars + 1, Value_t) - ntokens;
+
+    ngotos =3D 0;
+    for (sp =3D first_shift; sp; sp =3D sp->next)
+    {
+	for (i =3D sp->nshifts - 1; i >=3D 0; i--)
+	{
+	    symbol =3D accessing_symbol[sp->shift[i]];
+
+	    if (ISTOKEN(symbol))
+		break;
+
+	    if (ngotos =3D=3D MAXSHORT)
+		fatal("too many gotos");
+
+	    ngotos++;
+	    goto_map[symbol]++;
+	}
+    }
+
+    k =3D 0;
+    for (i =3D ntokens; i < nsyms; i++)
+    {
+	temp_map[i] =3D (Value_t) k;
+	k +=3D goto_map[i];
+    }
+
+    for (i =3D ntokens; i < nsyms; i++)
+	goto_map[i] =3D temp_map[i];
+
+    goto_map[nsyms] =3D (Value_t) ngotos;
+    temp_map[nsyms] =3D (Value_t) ngotos;
+
+    from_state =3D NEW2(ngotos, Value_t);
+    to_state =3D NEW2(ngotos, Value_t);
+
+    for (sp =3D first_shift; sp; sp =3D sp->next)
+    {
+	state1 =3D sp->number;
+	for (i =3D sp->nshifts - 1; i >=3D 0; i--)
+	{
+	    state2 =3D sp->shift[i];
+	    symbol =3D accessing_symbol[state2];
+
+	    if (ISTOKEN(symbol))
+		break;
+
+	    k =3D temp_map[symbol]++;
+	    from_state[k] =3D state1;
+	    to_state[k] =3D state2;
+	}
+    }
+
+    FREE(temp_map + ntokens);
+}
+
+/*  Map_goto maps a state/symbol pair into its numeric representation.	*/
+
+static Value_t
+map_goto(int state, int symbol)
+{
+    int high;
+    int low;
+    int middle;
+    int s;
+
+    low =3D goto_map[symbol];
+    high =3D goto_map[symbol + 1];
+
+    for (;;)
+    {
+	assert(low <=3D high);
+	middle =3D (low + high) >> 1;
+	s =3D from_state[middle];
+	if (s =3D=3D state)
+	    return (Value_t) (middle);
+	else if (s < state)
+	    low =3D middle + 1;
+	else
+	    high =3D middle - 1;
+    }
+}
+
+static void
+initialize_F(void)
+{
+    int i;
+    int j;
+    int k;
+    shifts *sp;
+    Value_t *edge;
+    unsigned *rowp;
+    Value_t *rp;
+    Value_t **reads;
+    int nedges;
+    int stateno;
+    int symbol;
+    int nwords;
+
+    nwords =3D ngotos * tokensetsize;
+    F =3D NEW2(nwords, unsigned);
+
+    reads =3D NEW2(ngotos, Value_t *);
+    edge =3D NEW2(ngotos + 1, Value_t);
+    nedges =3D 0;
+
+    rowp =3D F;
+    for (i =3D 0; i < ngotos; i++)
+    {
+	stateno =3D to_state[i];
+	sp =3D shift_table[stateno];
+
+	if (sp)
+	{
+	    k =3D sp->nshifts;
+
+	    for (j =3D 0; j < k; j++)
+	    {
+		symbol =3D accessing_symbol[sp->shift[j]];
+		if (ISVAR(symbol))
+		    break;
+		SETBIT(rowp, symbol);
+	    }
+
+	    for (; j < k; j++)
+	    {
+		symbol =3D accessing_symbol[sp->shift[j]];
+		if (nullable[symbol])
+		    edge[nedges++] =3D map_goto(stateno, symbol);
+	    }
+
+	    if (nedges)
+	    {
+		reads[i] =3D rp =3D NEW2(nedges + 1, Value_t);
+
+		for (j =3D 0; j < nedges; j++)
+		    rp[j] =3D edge[j];
+
+		rp[nedges] =3D -1;
+		nedges =3D 0;
+	    }
+	}
+
+	rowp +=3D tokensetsize;
+    }
+
+    SETBIT(F, 0);
+    digraph(reads);
+
+    for (i =3D 0; i < ngotos; i++)
+    {
+	if (reads[i])
+	    FREE(reads[i]);
+    }
+
+    FREE(reads);
+    FREE(edge);
+}
+
+static void
+build_relations(void)
+{
+    int i;
+    int j;
+    int k;
+    Value_t *rulep;
+    Value_t *rp;
+    shifts *sp;
+    int length;
+    int nedges;
+    int done_flag;
+    Value_t state1;
+    Value_t stateno;
+    int symbol1;
+    int symbol2;
+    Value_t *shortp;
+    Value_t *edge;
+    Value_t *states;
+    Value_t **new_includes;
+
+    includes =3D NEW2(ngotos, Value_t *);
+    edge =3D NEW2(ngotos + 1, Value_t);
+    states =3D NEW2(maxrhs + 1, Value_t);
+
+    for (i =3D 0; i < ngotos; i++)
+    {
+	nedges =3D 0;
+	state1 =3D from_state[i];
+	symbol1 =3D accessing_symbol[to_state[i]];
+
+	for (rulep =3D derives[symbol1]; *rulep >=3D 0; rulep++)
+	{
+	    length =3D 1;
+	    states[0] =3D state1;
+	    stateno =3D state1;
+
+	    for (rp =3D ritem + rrhs[*rulep]; *rp >=3D 0; rp++)
+	    {
+		symbol2 =3D *rp;
+		sp =3D shift_table[stateno];
+		k =3D sp->nshifts;
+
+		for (j =3D 0; j < k; j++)
+		{
+		    stateno =3D sp->shift[j];
+		    if (accessing_symbol[stateno] =3D=3D symbol2)
+			break;
+		}
+
+		states[length++] =3D stateno;
+	    }
+
+	    add_lookback_edge(stateno, *rulep, i);
+
+	    length--;
+	    done_flag =3D 0;
+	    while (!done_flag)
+	    {
+		done_flag =3D 1;
+		rp--;
+		if (ISVAR(*rp))
+		{
+		    stateno =3D states[--length];
+		    edge[nedges++] =3D map_goto(stateno, *rp);
+		    if (nullable[*rp] && length > 0)
+			done_flag =3D 0;
+		}
+	    }
+	}
+
+	if (nedges)
+	{
+	    includes[i] =3D shortp =3D NEW2(nedges + 1, Value_t);
+	    for (j =3D 0; j < nedges; j++)
+		shortp[j] =3D edge[j];
+	    shortp[nedges] =3D -1;
+	}
+    }
+
+    new_includes =3D transpose(includes, ngotos);
+
+    for (i =3D 0; i < ngotos; i++)
+	if (includes[i])
+	    FREE(includes[i]);
+
+    FREE(includes);
+
+    includes =3D new_includes;
+
+    FREE(edge);
+    FREE(states);
+}
+
+static void
+add_lookback_edge(int stateno, int ruleno, int gotono)
+{
+    int i, k;
+    int found;
+    shorts *sp;
+
+    i =3D lookaheads[stateno];
+    k =3D lookaheads[stateno + 1];
+    found =3D 0;
+    while (!found && i < k)
+    {
+	if (LAruleno[i] =3D=3D ruleno)
+	    found =3D 1;
+	else
+	    ++i;
+    }
+    assert(found);
+
+    sp =3D NEW(shorts);
+    sp->next =3D lookback[i];
+    sp->value =3D (Value_t) gotono;
+    lookback[i] =3D sp;
+}
+
+static Value_t **
+transpose(Value_t ** R2, int n)
+{
+    Value_t **new_R;
+    Value_t **temp_R;
+    Value_t *nedges;
+    Value_t *sp;
+    int i;
+    int k;
+
+    nedges =3D NEW2(n, Value_t);
+
+    for (i =3D 0; i < n; i++)
+    {
+	sp =3D R2[i];
+	if (sp)
+	{
+	    while (*sp >=3D 0)
+		nedges[*sp++]++;
+	}
+    }
+
+    new_R =3D NEW2(n, Value_t *);
+    temp_R =3D NEW2(n, Value_t *);
+
+    for (i =3D 0; i < n; i++)
+    {
+	k =3D nedges[i];
+	if (k > 0)
+	{
+	    sp =3D NEW2(k + 1, Value_t);
+	    new_R[i] =3D sp;
+	    temp_R[i] =3D sp;
+	    sp[k] =3D -1;
+	}
+    }
+
+    FREE(nedges);
+
+    for (i =3D 0; i < n; i++)
+    {
+	sp =3D R2[i];
+	if (sp)
+	{
+	    while (*sp >=3D 0)
+		*temp_R[*sp++]++ =3D (Value_t) i;
+	}
+    }
+
+    FREE(temp_R);
+
+    return (new_R);
+}
+
+static void
+compute_FOLLOWS(void)
+{
+    digraph(includes);
+}
+
+static void
+compute_lookaheads(void)
+{
+    int i, n;
+    unsigned *fp1, *fp2, *fp3;
+    shorts *sp, *next;
+    unsigned *rowp;
+
+    rowp =3D LA;
+    n =3D lookaheads[nstates];
+    for (i =3D 0; i < n; i++)
+    {
+	fp3 =3D rowp + tokensetsize;
+	for (sp =3D lookback[i]; sp; sp =3D sp->next)
+	{
+	    fp1 =3D rowp;
+	    fp2 =3D F + tokensetsize * sp->value;
+	    while (fp1 < fp3)
+		*fp1++ |=3D *fp2++;
+	}
+	rowp =3D fp3;
+    }
+
+    for (i =3D 0; i < n; i++)
+	for (sp =3D lookback[i]; sp; sp =3D next)
+	{
+	    next =3D sp->next;
+	    FREE(sp);
+	}
+
+    FREE(lookback);
+    FREE(F);
+}
+
+static void
+digraph(Value_t ** relation)
+{
+    int i;
+
+    infinity =3D (Value_t) (ngotos + 2);
+    INDEX =3D NEW2(ngotos + 1, Value_t);
+    VERTICES =3D NEW2(ngotos + 1, Value_t);
+    top =3D 0;
+
+    R =3D relation;
+
+    for (i =3D 0; i < ngotos; i++)
+	INDEX[i] =3D 0;
+
+    for (i =3D 0; i < ngotos; i++)
+    {
+	if (INDEX[i] =3D=3D 0 && R[i])
+	    traverse(i);
+    }
+
+    FREE(INDEX);
+    FREE(VERTICES);
+}
+
+static void
+traverse(int i)
+{
+    unsigned *fp1;
+    unsigned *fp2;
+    unsigned *fp3;
+    int j;
+    Value_t *rp;
+
+    Value_t height;
+    unsigned *base;
+
+    VERTICES[++top] =3D (Value_t) i;
+    INDEX[i] =3D height =3D top;
+
+    base =3D F + i * tokensetsize;
+    fp3 =3D base + tokensetsize;
+
+    rp =3D R[i];
+    if (rp)
+    {
+	while ((j =3D *rp++) >=3D 0)
+	{
+	    if (INDEX[j] =3D=3D 0)
+		traverse(j);
+
+	    if (INDEX[i] > INDEX[j])
+		INDEX[i] =3D INDEX[j];
+
+	    fp1 =3D base;
+	    fp2 =3D F + j * tokensetsize;
+
+	    while (fp1 < fp3)
+		*fp1++ |=3D *fp2++;
+	}
+    }
+
+    if (INDEX[i] =3D=3D height)
+    {
+	for (;;)
+	{
+	    j =3D VERTICES[top--];
+	    INDEX[j] =3D infinity;
+
+	    if (i =3D=3D j)
+		break;
+
+	    fp1 =3D base;
+	    fp2 =3D F + j * tokensetsize;
+
+	    while (fp1 < fp3)
+		*fp2++ =3D *fp1++;
+	}
+    }
+}
+
+#ifdef NO_LEAKS
+void
+lalr_leaks(void)
+{
+    int i;
+
+    if (includes !=3D 0)
+    {
+	for (i =3D 0; i < ngotos; i++)
+	{
+	    free(includes[i]);
+	}
+	DO_FREE(includes);
+    }
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/lr0.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/lr0.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,599 @@
+/* $Id: lr0.c,v 1.12 2010/06/09 08:53:17 tom Exp $ */
+
+#include "defs.h"
+
+static core *new_state(int symbol);
+static Value_t get_state(int symbol);
+static void allocate_itemsets(void);
+static void allocate_storage(void);
+static void append_states(void);
+static void free_storage(void);
+static void generate_states(void);
+static void initialize_states(void);
+static void new_itemsets(void);
+static void save_reductions(void);
+static void save_shifts(void);
+static void set_derives(void);
+static void set_nullable(void);
+
+int nstates;
+core *first_state;
+shifts *first_shift;
+reductions *first_reduction;
+
+static core **state_set;
+static core *this_state;
+static core *last_state;
+static shifts *last_shift;
+static reductions *last_reduction;
+
+static int nshifts;
+static short *shift_symbol;
+
+static Value_t *redset;
+static Value_t *shiftset;
+
+static Value_t **kernel_base;
+static Value_t **kernel_end;
+static Value_t *kernel_items;
+
+static void
+allocate_itemsets(void)
+{
+    short *itemp;
+    short *item_end;
+    int symbol;
+    int i;
+    int count;
+    int max;
+    short *symbol_count;
+
+    count =3D 0;
+    symbol_count =3D NEW2(nsyms, short);
+
+    item_end =3D ritem + nitems;
+    for (itemp =3D ritem; itemp < item_end; itemp++)
+    {
+	symbol =3D *itemp;
+	if (symbol >=3D 0)
+	{
+	    count++;
+	    symbol_count[symbol]++;
+	}
+    }
+
+    kernel_base =3D NEW2(nsyms, short *);
+    kernel_items =3D NEW2(count, short);
+
+    count =3D 0;
+    max =3D 0;
+    for (i =3D 0; i < nsyms; i++)
+    {
+	kernel_base[i] =3D kernel_items + count;
+	count +=3D symbol_count[i];
+	if (max < symbol_count[i])
+	    max =3D symbol_count[i];
+    }
+
+    shift_symbol =3D symbol_count;
+    kernel_end =3D NEW2(nsyms, short *);
+}
+
+static void
+allocate_storage(void)
+{
+    allocate_itemsets();
+    shiftset =3D NEW2(nsyms, short);
+    redset =3D NEW2(nrules + 1, short);
+    state_set =3D NEW2(nitems, core *);
+}
+
+static void
+append_states(void)
+{
+    int i;
+    int j;
+    Value_t symbol;
+
+#ifdef	TRACE
+    fprintf(stderr, "Entering append_states()\n");
+#endif
+    for (i =3D 1; i < nshifts; i++)
+    {
+	symbol =3D shift_symbol[i];
+	j =3D i;
+	while (j > 0 && shift_symbol[j - 1] > symbol)
+	{
+	    shift_symbol[j] =3D shift_symbol[j - 1];
+	    j--;
+	}
+	shift_symbol[j] =3D symbol;
+    }
+
+    for (i =3D 0; i < nshifts; i++)
+    {
+	symbol =3D shift_symbol[i];
+	shiftset[i] =3D get_state(symbol);
+    }
+}
+
+static void
+free_storage(void)
+{
+    FREE(shift_symbol);
+    FREE(redset);
+    FREE(shiftset);
+    FREE(kernel_base);
+    FREE(kernel_end);
+    FREE(kernel_items);
+    FREE(state_set);
+}
+
+static void
+generate_states(void)
+{
+    allocate_storage();
+    itemset =3D NEW2(nitems, short);
+    ruleset =3D NEW2(WORDSIZE(nrules), unsigned);
+    set_first_derives();
+    initialize_states();
+
+    while (this_state)
+    {
+	closure(this_state->items, this_state->nitems);
+	save_reductions();
+	new_itemsets();
+	append_states();
+
+	if (nshifts > 0)
+	    save_shifts();
+
+	this_state =3D this_state->next;
+    }
+
+    free_storage();
+}
+
+static Value_t
+get_state(int symbol)
+{
+    int key;
+    short *isp1;
+    short *isp2;
+    short *iend;
+    core *sp;
+    int found;
+    int n;
+
+#ifdef	TRACE
+    fprintf(stderr, "Entering get_state(%d)\n", symbol);
+#endif
+
+    isp1 =3D kernel_base[symbol];
+    iend =3D kernel_end[symbol];
+    n =3D (int)(iend - isp1);
+
+    key =3D *isp1;
+    assert(0 <=3D key && key < nitems);
+    sp =3D state_set[key];
+    if (sp)
+    {
+	found =3D 0;
+	while (!found)
+	{
+	    if (sp->nitems =3D=3D n)
+	    {
+		found =3D 1;
+		isp1 =3D kernel_base[symbol];
+		isp2 =3D sp->items;
+
+		while (found && isp1 < iend)
+		{
+		    if (*isp1++ !=3D *isp2++)
+			found =3D 0;
+		}
+	    }
+
+	    if (!found)
+	    {
+		if (sp->link)
+		{
+		    sp =3D sp->link;
+		}
+		else
+		{
+		    sp =3D sp->link =3D new_state(symbol);
+		    found =3D 1;
+		}
+	    }
+	}
+    }
+    else
+    {
+	state_set[key] =3D sp =3D new_state(symbol);
+    }
+
+    return (sp->number);
+}
+
+static void
+initialize_states(void)
+{
+    unsigned i;
+    short *start_derives;
+    core *p;
+
+    start_derives =3D derives[start_symbol];
+    for (i =3D 0; start_derives[i] >=3D 0; ++i)
+	continue;
+
+    p =3D (core *)MALLOC(sizeof(core) + i * sizeof(short));
+    NO_SPACE(p);
+
+    p->next =3D 0;
+    p->link =3D 0;
+    p->number =3D 0;
+    p->accessing_symbol =3D 0;
+    p->nitems =3D (Value_t) i;
+
+    for (i =3D 0; start_derives[i] >=3D 0; ++i)
+	p->items[i] =3D rrhs[start_derives[i]];
+
+    first_state =3D last_state =3D this_state =3D p;
+    nstates =3D 1;
+}
+
+static void
+new_itemsets(void)
+{
+    Value_t i;
+    int shiftcount;
+    short *isp;
+    short *ksp;
+    Value_t symbol;
+
+    for (i =3D 0; i < nsyms; i++)
+	kernel_end[i] =3D 0;
+
+    shiftcount =3D 0;
+    isp =3D itemset;
+    while (isp < itemsetend)
+    {
+	i =3D *isp++;
+	symbol =3D ritem[i];
+	if (symbol > 0)
+	{
+	    ksp =3D kernel_end[symbol];
+	    if (!ksp)
+	    {
+		shift_symbol[shiftcount++] =3D symbol;
+		ksp =3D kernel_base[symbol];
+	    }
+
+	    *ksp++ =3D (Value_t) (i + 1);
+	    kernel_end[symbol] =3D ksp;
+	}
+    }
+
+    nshifts =3D shiftcount;
+}
+
+static core *
+new_state(int symbol)
+{
+    unsigned n;
+    core *p;
+    short *isp1;
+    short *isp2;
+    short *iend;
+
+#ifdef	TRACE
+    fprintf(stderr, "Entering new_state(%d)\n", symbol);
+#endif
+
+    if (nstates >=3D MAXSHORT)
+	fatal("too many states");
+
+    isp1 =3D kernel_base[symbol];
+    iend =3D kernel_end[symbol];
+    n =3D (unsigned)(iend - isp1);
+
+    p =3D (core *)allocate((sizeof(core) + (n - 1) * sizeof(short)));
+    p->accessing_symbol =3D (Value_t) symbol;
+    p->number =3D (Value_t) nstates;
+    p->nitems =3D (Value_t) n;
+
+    isp2 =3D p->items;
+    while (isp1 < iend)
+	*isp2++ =3D *isp1++;
+
+    last_state->next =3D p;
+    last_state =3D p;
+
+    nstates++;
+
+    return (p);
+}
+
+/* show_cores is used for debugging */
+
+void
+show_cores(void)
+{
+    core *p;
+    int i, j, k, n;
+    int itemno;
+
+    k =3D 0;
+    for (p =3D first_state; p; ++k, p =3D p->next)
+    {
+	if (k)
+	    printf("\n");
+	printf("state %d, number =3D %d, accessing symbol =3D %s\n",
+	       k, p->number, symbol_name[p->accessing_symbol]);
+	n =3D p->nitems;
+	for (i =3D 0; i < n; ++i)
+	{
+	    itemno =3D p->items[i];
+	    printf("%4d  ", itemno);
+	    j =3D itemno;
+	    while (ritem[j] >=3D 0)
+		++j;
+	    printf("%s :", symbol_name[rlhs[-ritem[j]]]);
+	    j =3D rrhs[-ritem[j]];
+	    while (j < itemno)
+		printf(" %s", symbol_name[ritem[j++]]);
+	    printf(" .");
+	    while (ritem[j] >=3D 0)
+		printf(" %s", symbol_name[ritem[j++]]);
+	    printf("\n");
+	    fflush(stdout);
+	}
+    }
+}
+
+/* show_ritems is used for debugging */
+
+void
+show_ritems(void)
+{
+    int i;
+
+    for (i =3D 0; i < nitems; ++i)
+	printf("ritem[%d] =3D %d\n", i, ritem[i]);
+}
+
+/* show_rrhs is used for debugging */
+void
+show_rrhs(void)
+{
+    int i;
+
+    for (i =3D 0; i < nrules; ++i)
+	printf("rrhs[%d] =3D %d\n", i, rrhs[i]);
+}
+
+/* show_shifts is used for debugging */
+
+void
+show_shifts(void)
+{
+    shifts *p;
+    int i, j, k;
+
+    k =3D 0;
+    for (p =3D first_shift; p; ++k, p =3D p->next)
+    {
+	if (k)
+	    printf("\n");
+	printf("shift %d, number =3D %d, nshifts =3D %d\n", k, p->number,
+	       p->nshifts);
+	j =3D p->nshifts;
+	for (i =3D 0; i < j; ++i)
+	    printf("\t%d\n", p->shift[i]);
+    }
+}
+
+static void
+save_shifts(void)
+{
+    shifts *p;
+    short *sp1;
+    short *sp2;
+    short *send;
+
+    p =3D (shifts *)allocate((sizeof(shifts) +
+			      (unsigned)(nshifts - 1) * sizeof(short)));
+
+    p->number =3D this_state->number;
+    p->nshifts =3D (Value_t) nshifts;
+
+    sp1 =3D shiftset;
+    sp2 =3D p->shift;
+    send =3D shiftset + nshifts;
+
+    while (sp1 < send)
+	*sp2++ =3D *sp1++;
+
+    if (last_shift)
+    {
+	last_shift->next =3D p;
+	last_shift =3D p;
+    }
+    else
+    {
+	first_shift =3D p;
+	last_shift =3D p;
+    }
+}
+
+static void
+save_reductions(void)
+{
+    short *isp;
+    short *rp1;
+    short *rp2;
+    int item;
+    Value_t count;
+    reductions *p;
+    short *rend;
+
+    count =3D 0;
+    for (isp =3D itemset; isp < itemsetend; isp++)
+    {
+	item =3D ritem[*isp];
+	if (item < 0)
+	{
+	    redset[count++] =3D (Value_t) - item;
+	}
+    }
+
+    if (count)
+    {
+	p =3D (reductions *)allocate((sizeof(reductions) +
+				      (unsigned)(count - 1) *
+				    sizeof(short)));
+
+	p->number =3D this_state->number;
+	p->nreds =3D count;
+
+	rp1 =3D redset;
+	rp2 =3D p->rules;
+	rend =3D rp1 + count;
+
+	while (rp1 < rend)
+	    *rp2++ =3D *rp1++;
+
+	if (last_reduction)
+	{
+	    last_reduction->next =3D p;
+	    last_reduction =3D p;
+	}
+	else
+	{
+	    first_reduction =3D p;
+	    last_reduction =3D p;
+	}
+    }
+}
+
+static void
+set_derives(void)
+{
+    Value_t i, k;
+    int lhs;
+    short *rules;
+
+    derives =3D NEW2(nsyms, short *);
+    rules =3D NEW2(nvars + nrules, short);
+
+    k =3D 0;
+    for (lhs =3D start_symbol; lhs < nsyms; lhs++)
+    {
+	derives[lhs] =3D rules + k;
+	for (i =3D 0; i < nrules; i++)
+	{
+	    if (rlhs[i] =3D=3D lhs)
+	    {
+		rules[k] =3D i;
+		k++;
+	    }
+	}
+	rules[k] =3D -1;
+	k++;
+    }
+
+#ifdef	DEBUG
+    print_derives();
+#endif
+}
+
+#ifdef	DEBUG
+void
+print_derives(void)
+{
+    int i;
+    short *sp;
+
+    printf("\nDERIVES\n\n");
+
+    for (i =3D start_symbol; i < nsyms; i++)
+    {
+	printf("%s derives ", symbol_name[i]);
+	for (sp =3D derives[i]; *sp >=3D 0; sp++)
+	{
+	    printf("  %d", *sp);
+	}
+	putchar('\n');
+    }
+
+    putchar('\n');
+}
+#endif
+
+static void
+set_nullable(void)
+{
+    int i, j;
+    int empty;
+    int done_flag;
+
+    nullable =3D MALLOC(nsyms);
+    NO_SPACE(nullable);
+
+    for (i =3D 0; i < nsyms; ++i)
+	nullable[i] =3D 0;
+
+    done_flag =3D 0;
+    while (!done_flag)
+    {
+	done_flag =3D 1;
+	for (i =3D 1; i < nitems; i++)
+	{
+	    empty =3D 1;
+	    while ((j =3D ritem[i]) >=3D 0)
+	    {
+		if (!nullable[j])
+		    empty =3D 0;
+		++i;
+	    }
+	    if (empty)
+	    {
+		j =3D rlhs[-j];
+		if (!nullable[j])
+		{
+		    nullable[j] =3D 1;
+		    done_flag =3D 0;
+		}
+	    }
+	}
+    }
+
+#ifdef DEBUG
+    for (i =3D 0; i < nsyms; i++)
+    {
+	if (nullable[i])
+	    printf("%s is nullable\n", symbol_name[i]);
+	else
+	    printf("%s is not nullable\n", symbol_name[i]);
+    }
+#endif
+}
+
+void
+lr0(void)
+{
+    set_derives();
+    set_nullable();
+    generate_states();
+}
+
+#ifdef NO_LEAKS
+void
+lr0_leaks(void)
+{
+    DO_FREE(derives[start_symbol]);
+    DO_FREE(derives);
+    DO_FREE(nullable);
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/main.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/main.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,664 @@
+/* $Id: main.c,v 1.38 2012/01/14 01:01:15 tom Exp $ */
+
+#include <signal.h>
+#include <unistd.h>		/* for _exit() */
+
+#include "defs.h"
+
+#if defined(HAVE_ATEXIT)
+# ifdef HAVE_MKSTEMP
+#  define USE_MKSTEMP 1
+# elif defined(HAVE_FCNTL_H)
+#  define USE_MKSTEMP 1
+#  include <fcntl.h>		/* for open(), O_EXCL, etc. */
+# else
+#  define USE_MKSTEMP 0
+# endif
+#else
+# define USE_MKSTEMP 0
+#endif
+
+#if USE_MKSTEMP
+#include <sys/types.h>
+#include <sys/stat.h>
+
+typedef struct _my_tmpfiles
+{
+    struct _my_tmpfiles *next;
+    char *name;
+}
+MY_TMPFILES;
+
+static MY_TMPFILES *my_tmpfiles;
+#endif /* USE_MKSTEMP */
+
+char dflag;
+char gflag;
+char iflag;
+char lflag;
+static char oflag;
+char rflag;
+char sflag;
+char tflag;
+char vflag;
+
+const char *symbol_prefix;
+const char *myname =3D "yacc";
+
+int lineno;
+int outline;
+
+static char empty_string[] =3D "";
+static char default_file_prefix[] =3D "y";
+
+static char *file_prefix =3D default_file_prefix;
+
+char *code_file_name;
+char *input_file_name =3D empty_string;
+char *defines_file_name;
+char *externs_file_name;
+
+static char *graph_file_name;
+static char *output_file_name;
+static char *verbose_file_name;
+
+FILE *action_file;	/*  a temp file, used to save actions associated    */
+			/*  with rules until the parser is written          */
+FILE *code_file;	/*  y.code.c (used when the -r option is specified) */
+FILE *defines_file;	/*  y.tab.h                                         */
+FILE *externs_file;	/*  y.tab.i                                         */
+FILE *input_file;	/*  the input file                                  */
+FILE *output_file;	/*  y.tab.c                                         */
+FILE *text_file;	/*  a temp file, used to save text until all        */
+			/*  symbols have been defined                       */
+FILE *union_file;	/*  a temp file, used to save the union             */
+			/*  definition until all symbol have been           */
+			/*  defined                                         */
+FILE *verbose_file;	/*  y.output                                        */
+FILE *graph_file;	/*  y.dot                                           */
+
+int nitems;
+int nrules;
+int nsyms;
+int ntokens;
+int nvars;
+
+Value_t start_symbol;
+char **symbol_name;
+char **symbol_pname;
+Value_t *symbol_value;
+short *symbol_prec;
+char *symbol_assoc;
+
+int pure_parser;
+int exit_code;
+
+Value_t *ritem;
+Value_t *rlhs;
+Value_t *rrhs;
+Value_t *rprec;
+Assoc_t *rassoc;
+Value_t **derives;
+char *nullable;
+
+/*
+ * Since fclose() is called via the signal handler, it might die.  Don't l=
oop
+ * if there is a problem closing a file.
+ */
+#define DO_CLOSE(fp) \
+	if (fp !=3D 0) { \
+	    FILE *use =3D fp; \
+	    fp =3D 0; \
+	    fclose(use); \
+	}
+
+static int got_intr =3D 0;
+
+void
+done(int k)
+{
+    DO_CLOSE(input_file);
+    DO_CLOSE(output_file);
+
+    DO_CLOSE(action_file);
+    DO_CLOSE(defines_file);
+    DO_CLOSE(graph_file);
+    DO_CLOSE(text_file);
+    DO_CLOSE(union_file);
+    DO_CLOSE(verbose_file);
+
+    if (got_intr)
+	_exit(EXIT_FAILURE);
+
+#ifdef NO_LEAKS
+    if (rflag)
+	DO_FREE(code_file_name);
+
+    if (dflag)
+	DO_FREE(defines_file_name);
+
+    if (iflag)
+	DO_FREE(externs_file_name);
+
+    if (oflag)
+	DO_FREE(output_file_name);
+
+    if (vflag)
+	DO_FREE(verbose_file_name);
+
+    if (gflag)
+	DO_FREE(graph_file_name);
+
+    lr0_leaks();
+    lalr_leaks();
+    mkpar_leaks();
+    output_leaks();
+    reader_leaks();
+#endif
+
+    if (rflag)
+	DO_CLOSE(code_file);
+
+    exit(k);
+}
+
+static void
+onintr(__unused int sig)
+{
+    got_intr =3D 1;
+    done(EXIT_FAILURE);
+}
+
+static void
+set_signals(void)
+{
+#ifdef SIGINT
+    if (signal(SIGINT, SIG_IGN) !=3D SIG_IGN)
+	signal(SIGINT, onintr);
+#endif
+#ifdef SIGTERM
+    if (signal(SIGTERM, SIG_IGN) !=3D SIG_IGN)
+	signal(SIGTERM, onintr);
+#endif
+#ifdef SIGHUP
+    if (signal(SIGHUP, SIG_IGN) !=3D SIG_IGN)
+	signal(SIGHUP, onintr);
+#endif
+}
+
+static void
+usage(void)
+{
+    static const char *msg[] =3D
+    {
+	""
+	,"Options:"
+	,"  -b file_prefix        set filename prefix (default \"y.\")"
+	,"  -d                    write definitions (y.tab.h)"
+	,"  -i                    write interface (y.tab.i)"
+	,"  -g                    write a graphical description"
+	,"  -l                    suppress #line directives"
+	,"  -o output_file        (default \"y.tab.c\")"
+	,"  -p symbol_prefix      set symbol prefix (default \"yy\")"
+	,"  -P                    create a reentrant parser, e.g., \"%pure-parser=
\""
+	,"  -r                    produce separate code and table files (y.code.c=
)"
+	,"  -s                    suppress #define's for quoted names in %token l=
ines"
+	,"  -t                    add debugging support"
+	,"  -v                    write description (y.output)"
+	,"  -V                    show version information and exit"
+    };
+    unsigned n;
+
+    fflush(stdout);
+    fprintf(stderr, "Usage: %s [options] filename\n", myname);
+    for (n =3D 0; n < sizeof(msg) / sizeof(msg[0]); ++n)
+	fprintf(stderr, "%s\n", msg[n]);
+
+    exit(1);
+}
+
+static void
+setflag(int ch)
+{
+    switch (ch)
+    {
+    case 'd':
+	dflag =3D 1;
+	break;
+
+    case 'g':
+	gflag =3D 1;
+	break;
+
+    case 'i':
+	iflag =3D 1;
+	break;
+
+    case 'l':
+	lflag =3D 1;
+	break;
+
+    case 'P':
+	pure_parser =3D 1;
+	break;
+
+    case 'r':
+	rflag =3D 1;
+	break;
+
+    case 's':
+	sflag =3D 1;
+	break;
+
+    case 't':
+	tflag =3D 1;
+	break;
+
+    case 'v':
+	vflag =3D 1;
+	break;
+
+    case 'V':
+	printf("%s - %s\n", myname, VERSION);
+	exit(EXIT_SUCCESS);
+
+    case 'y':
+	/* noop for bison compatibility. byacc is already designed to be posix
+	 * yacc compatible. */
+	break;
+
+    default:
+	usage();
+    }
+}
+
+static void
+getargs(int argc, char *argv[])
+{
+    int i;
+    char *s;
+    int ch;
+
+    if (argc > 0)
+	myname =3D argv[0];
+
+    for (i =3D 1; i < argc; ++i)
+    {
+	s =3D argv[i];
+	if (*s !=3D '-')
+	    break;
+	switch (ch =3D *++s)
+	{
+	case '\0':
+	    input_file =3D stdin;
+	    if (i + 1 < argc)
+		usage();
+	    return;
+
+	case '-':
+	    ++i;
+	    goto no_more_options;
+
+	case 'b':
+	    if (*++s)
+		file_prefix =3D s;
+	    else if (++i < argc)
+		file_prefix =3D argv[i];
+	    else
+		usage();
+	    continue;
+
+	case 'o':
+	    if (*++s)
+		output_file_name =3D s;
+	    else if (++i < argc)
+		output_file_name =3D argv[i];
+	    else
+		usage();
+	    continue;
+
+	case 'p':
+	    if (*++s)
+		symbol_prefix =3D s;
+	    else if (++i < argc)
+		symbol_prefix =3D argv[i];
+	    else
+		usage();
+	    continue;
+
+	default:
+	    setflag(ch);
+	    break;
+	}
+
+	for (;;)
+	{
+	    switch (ch =3D *++s)
+	    {
+	    case '\0':
+		goto end_of_option;
+
+	    default:
+		setflag(ch);
+		break;
+	    }
+	}
+      end_of_option:;
+    }
+
+  no_more_options:;
+    if (i + 1 !=3D argc)
+	usage();
+    input_file_name =3D argv[i];
+}
+
+void *
+allocate(size_t n)
+{
+    void *p;
+
+    p =3D NULL;
+    if (n)
+    {
+	p =3D CALLOC(1, n);
+	NO_SPACE(p);
+    }
+    return (p);
+}
+
+#define CREATE_FILE_NAME(dest, suffix) \
+	dest =3D MALLOC(len + strlen(suffix) + 1); \
+	NO_SPACE(dest); \
+	strcpy(dest, file_prefix); \
+	strcpy(dest + len, suffix)
+
+static void
+create_file_names(void)
+{
+    size_t len;
+    const char *defines_suffix;
+    const char *externs_suffix;
+    char *prefix;
+
+    prefix =3D NULL;
+    defines_suffix =3D DEFINES_SUFFIX;
+    externs_suffix =3D EXTERNS_SUFFIX;
+
+    /* compute the file_prefix from the user provided output_file_name */
+    if (output_file_name !=3D 0)
+    {
+	if (!(prefix =3D strstr(output_file_name, ".tab.c"))
+	    && (prefix =3D strstr(output_file_name, ".c")))
+	{
+	    defines_suffix =3D ".h";
+	    externs_suffix =3D ".i";
+	}
+    }
+
+    if (prefix !=3D NULL)
+    {
+	len =3D (size_t) (prefix - output_file_name);
+	file_prefix =3D (char *)MALLOC(len + 1);
+	NO_SPACE(file_prefix);
+	strncpy(file_prefix, output_file_name, len)[len] =3D 0;
+    }
+    else
+	len =3D strlen(file_prefix);
+
+    /* if "-o filename" was not given */
+    if (output_file_name =3D=3D 0)
+    {
+	oflag =3D 1;
+	CREATE_FILE_NAME(output_file_name, OUTPUT_SUFFIX);
+    }
+
+    if (rflag)
+    {
+	CREATE_FILE_NAME(code_file_name, CODE_SUFFIX);
+    }
+    else
+	code_file_name =3D output_file_name;
+
+    if (dflag)
+    {
+	CREATE_FILE_NAME(defines_file_name, defines_suffix);
+    }
+
+    if (iflag)
+    {
+	CREATE_FILE_NAME(externs_file_name, externs_suffix);
+    }
+
+    if (vflag)
+    {
+	CREATE_FILE_NAME(verbose_file_name, VERBOSE_SUFFIX);
+    }
+
+    if (gflag)
+    {
+	CREATE_FILE_NAME(graph_file_name, GRAPH_SUFFIX);
+    }
+
+    if (prefix !=3D NULL)
+    {
+	FREE(file_prefix);
+    }
+}
+
+#if USE_MKSTEMP
+static void
+close_tmpfiles(void)
+{
+    while (my_tmpfiles !=3D 0)
+    {
+	MY_TMPFILES *next =3D my_tmpfiles->next;
+
+	chmod(my_tmpfiles->name, 0644);
+	unlink(my_tmpfiles->name);
+
+	free(my_tmpfiles->name);
+	free(my_tmpfiles);
+
+	my_tmpfiles =3D next;
+    }
+}
+
+#ifndef HAVE_MKSTEMP
+static int
+my_mkstemp(char *temp)
+{
+    int fd;
+    char *dname;
+    char *fname;
+    char *name;
+
+    /*
+     * Split-up to use tempnam, rather than tmpnam; the latter (like
+     * mkstemp) is unusable on Windows.
+     */
+    if ((fname =3D strrchr(temp, '/')) !=3D 0)
+    {
+	dname =3D strdup(temp);
+	dname[++fname - temp] =3D '\0';
+    }
+    else
+    {
+	dname =3D 0;
+	fname =3D temp;
+    }
+    if ((name =3D tempnam(dname, fname)) !=3D 0)
+    {
+	fd =3D open(name, O_CREAT | O_EXCL | O_RDWR);
+	strcpy(temp, name);
+    }
+    else
+    {
+	fd =3D -1;
+    }
+
+    if (dname !=3D 0)
+	free(dname);
+
+    return fd;
+}
+#define mkstemp(s) my_mkstemp(s)
+#endif
+
+#endif
+
+/*
+ * tmpfile() should be adequate, except that it may require special privil=
eges
+ * to use, e.g., MinGW and Windows 7 where it tries to use the root direct=
ory.
+ */
+static FILE *
+open_tmpfile(const char *label)
+{
+    FILE *result;
+#if USE_MKSTEMP
+    int fd;
+    const char *tmpdir;
+    char *name;
+    const char *mark;
+
+    if ((tmpdir =3D getenv("TMPDIR")) =3D=3D 0 || access(tmpdir, W_OK) !=
=3D 0)
+    {
+#ifdef P_tmpdir
+	tmpdir =3D P_tmpdir;
+#else
+	tmpdir =3D "/tmp";
+#endif
+	if (access(tmpdir, W_OK) !=3D 0)
+	    tmpdir =3D ".";
+    }
+
+    name =3D malloc(strlen(tmpdir) + 10 + strlen(label));
+
+    result =3D 0;
+    if (name !=3D 0)
+    {
+	if ((mark =3D strrchr(label, '_')) =3D=3D 0)
+	    mark =3D label + strlen(label);
+
+	sprintf(name, "%s/%.*sXXXXXX", tmpdir, (int)(mark - label), label);
+	fd =3D mkstemp(name);
+	if (fd >=3D 0)
+	{
+	    result =3D fdopen(fd, "w+");
+	    if (result !=3D 0)
+	    {
+		MY_TMPFILES *item;
+
+		if (my_tmpfiles =3D=3D 0)
+		{
+		    atexit(close_tmpfiles);
+		}
+
+		item =3D NEW(MY_TMPFILES);
+		NO_SPACE(item);
+
+		item->name =3D name;
+		NO_SPACE(item->name);
+
+		item->next =3D my_tmpfiles;
+		my_tmpfiles =3D item;
+	    }
+	}
+    }
+#else
+    result =3D tmpfile();
+#endif
+
+    if (result =3D=3D 0)
+	open_error(label);
+    return result;
+}
+
+static void
+open_files(void)
+{
+    create_file_names();
+
+    if (input_file =3D=3D 0)
+    {
+	input_file =3D fopen(input_file_name, "r");
+	if (input_file =3D=3D 0)
+	    open_error(input_file_name);
+    }
+
+    action_file =3D open_tmpfile("action_file");
+    text_file =3D open_tmpfile("text_file");
+
+    if (vflag)
+    {
+	verbose_file =3D fopen(verbose_file_name, "w");
+	if (verbose_file =3D=3D 0)
+	    open_error(verbose_file_name);
+    }
+
+    if (gflag)
+    {
+	graph_file =3D fopen(graph_file_name, "w");
+	if (graph_file =3D=3D 0)
+	    open_error(graph_file_name);
+	fprintf(graph_file, "digraph %s {\n", file_prefix);
+	fprintf(graph_file, "\tedge [fontsize=3D10];\n");
+	fprintf(graph_file, "\tnode [shape=3Dbox,fontsize=3D10];\n");
+	fprintf(graph_file, "\torientation=3Dlandscape;\n");
+	fprintf(graph_file, "\trankdir=3DLR;\n");
+	fprintf(graph_file, "\t/*\n");
+	fprintf(graph_file, "\tmargin=3D0.2;\n");
+	fprintf(graph_file, "\tpage=3D\"8.27,11.69\"; // for A4 printing\n");
+	fprintf(graph_file, "\tratio=3Dauto;\n");
+	fprintf(graph_file, "\t*/\n");
+    }
+
+    if (dflag)
+    {
+	defines_file =3D fopen(defines_file_name, "w");
+	if (defines_file =3D=3D 0)
+	    open_error(defines_file_name);
+	union_file =3D open_tmpfile("union_file");
+    }
+
+    if (iflag)
+    {
+	externs_file =3D fopen(externs_file_name, "w");
+	if (externs_file =3D=3D 0)
+	    open_error(externs_file_name);
+    }
+
+    output_file =3D fopen(output_file_name, "w");
+    if (output_file =3D=3D 0)
+	open_error(output_file_name);
+
+    if (rflag)
+    {
+	code_file =3D fopen(code_file_name, "w");
+	if (code_file =3D=3D 0)
+	    open_error(code_file_name);
+    }
+    else
+	code_file =3D output_file;
+}
+
+int
+main(int argc, char *argv[])
+{
+    SRexpect =3D -1;
+    RRexpect =3D -1;
+    exit_code =3D EXIT_SUCCESS;
+
+    set_signals();
+    getargs(argc, argv);
+    open_files();
+    reader();
+    lr0();
+    lalr();
+    make_parser();
+    graph();
+    finalize_closure();
+    verbose();
+    output();
+    done(exit_code);
+    /*NOTREACHED */
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/makefile.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,182 @@
+# $Id: makefile.in,v 1.17 2012/01/15 19:11:21 tom Exp $
+#
+# UNIX template-makefile for Berkeley Yacc
+
+THIS		=3D yacc
+
+#### Start of system configuration section. ####
+
+srcdir 		=3D @srcdir@
+VPATH  		=3D @srcdir@
+
+CC		=3D @CC@
+
+INSTALL		=3D @INSTALL@
+INSTALL_PROGRAM	=3D @INSTALL_PROGRAM@
+INSTALL_DATA	=3D @INSTALL_DATA@
+transform	=3D @program_transform_name@
+
+DEFINES		=3D
+EXTRA_CFLAGS	=3D @EXTRA_CFLAGS@
+CPPFLAGS	=3D -I. -I$(srcdir) $(DEFINES) -DHAVE_CONFIG_H -DYYPATCH=3D`cat $=
(srcdir)/VERSION` @CPPFLAGS@
+CFLAGS		=3D @CFLAGS@ $(CPPFLAGS) $(EXTRA_CFLAGS)
+
+LDFLAGS		=3D @LDFLAGS@
+LIBS		=3D @LIBS@
+
+CTAGS		=3D @CTAGS@
+ETAGS		=3D @ETAGS@
+LINT		=3D @LINT@
+
+prefix		=3D @prefix@
+exec_prefix	=3D @exec_prefix@
+
+bindir		=3D $(DESTDIR)@bindir@
+mandir		=3D $(DESTDIR)@mandir@/man1
+manext		=3D 1
+
+testdir		=3D $(srcdir)/test
+
+x		=3D @EXEEXT@
+o		=3D . at OBJEXT@
+
+#### End of system configuration section. ####
+
+SHELL		=3D /bin/sh
+ at SET_MAKE@
+
+H_FILES =3D \
+	defs.h
+
+C_FILES =3D \
+	closure.c \
+	error.c \
+	graph.c \
+	lalr.c \
+	lr0.c \
+	main.c \
+	mkpar.c \
+	output.c \
+	reader.c \
+	skeleton.c \
+	symtab.c \
+	verbose.c \
+	warshall.c
+
+OBJS	=3D \
+	closure$o \
+	error$o \
+	graph$o \
+	lalr$o \
+	lr0$o \
+	main$o \
+	mkpar$o \
+	output$o \
+	reader$o \
+	skeleton$o \
+	symtab$o \
+	verbose$o \
+	warshall$o
+
+TRANSFORM_BIN =3D sed 's/$x$$//'       |sed '$(transform)'|sed 's/$$/$x/'
+TRANSFORM_MAN =3D sed 's/$(manext)$$//'|sed '$(transform)'|sed 's/$$/$(man=
ext)/'
+
+actual_bin =3D `echo $(THIS)$x        | $(TRANSFORM_BIN)`
+actual_man =3D `echo $(THIS).$(manext)| $(TRANSFORM_MAN)`
+
+all : $(THIS)$x
+
+install: all installdirs
+	$(INSTALL_PROGRAM) $(THIS)$x $(bindir)/$(actual_bin)
+	- $(INSTALL_DATA) $(srcdir)/$(THIS).1 $(mandir)/$(actual_man)
+
+installdirs:
+	mkdir -p $(bindir)
+	- mkdir -p $(mandir)
+
+uninstall:
+	- rm -f $(bindir)/$(actual_bin)
+	- rm -f $(mandir)/$(actual_man)
+
+##########################################################################=
######
+.SUFFIXES : $o .i .html .$(manext) .cat .ps .pdf .txt
+
+.c$o:
+	@RULE_CC@
+	@ECHO_CC@$(CC) -c $(CFLAGS) $<
+
+.c.i :
+	@RULE_CC@
+	@ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@
+
+.$(manext).cat :
+	- nroff -man $(srcdir)/$(THIS).$(manext) >$@
+
+.$(manext).html :
+	GROFF_NO_SGR=3Dstupid $(SHELL) -c "tbl $*.$(manext) | groff -Thtml -man" =
>$@
+
+.$(manext).ps :
+	$(SHELL) -c "tbl $*.$(manext) | groff -man" >$@
+
+.$(manext).txt :
+	GROFF_NO_SGR=3Dstupid $(SHELL) -c "tbl $*.$(manext) | nroff -Tascii -man =
| col -bx" >$@
+
+.ps.pdf :
+	ps2pdf $*.ps
+
+##########################################################################=
######
+
+$(THIS)$x : $(OBJS)
+	@ECHO_LD@$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
+
+mostlyclean :
+	- rm -f core .nfs* *$o *.bak *.BAK *.out
+
+clean : mostlyclean
+	- rm -f $(THIS)$x
+
+distclean : clean
+	- rm -f config.log config.cache config.status config.h makefile
+	- rm -f *.html *.cat *.pdf *.ps *.txt
+	- cd test && rm -f test-*
+
+realclean: distclean
+	- rm -f tags TAGS
+
+##########################################################################=
######
+docs :: $(THIS).html \
+	$(THIS).pdf \
+	$(THIS).ps \
+	$(THIS).txt
+$(THIS).html : $(THIS).$(manext)
+$(THIS).pdf : $(THIS).ps
+$(THIS).ps : $(THIS).$(manext)
+$(THIS).txt : $(THIS).$(manext)
+##########################################################################=
######
+check:	$(THIS)$x
+	$(SHELL) $(testdir)/run_test.sh $(testdir)
+
+check_make: $(THIS)$x
+	$(SHELL) $(testdir)/run_make.sh $(testdir)
+
+check_lint:
+	$(SHELL) $(testdir)/run_lint.sh $(testdir)
+##########################################################################=
######
+tags: $(H_FILES) $(C_FILES)=20
+	$(CTAGS) $(C_FILES) $(H_FILES)
+
+lint: $(C_FILES)=20
+	$(LINT) $(CPPFLAGS) $(C_FILES)
+
+ at MAKE_UPPER_TAGS@TAGS: $(H_FILES) $(C_FILES)=20
+ at MAKE_UPPER_TAGS@	$(ETAGS) $(C_FILES) $(H_FILES)
+
+depend:
+	makedepend -- $(CPPFLAGS) -- $(C_FILES)
+
+$(OBJS) : defs.h
+
+main$o \
+skeleton$o : makefile VERSION
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/mkpar.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/mkpar.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,392 @@
+/* $Id: mkpar.c,v 1.11 2010/06/09 08:53:17 tom Exp $ */
+
+#include "defs.h"
+
+static action *add_reduce(action *actions, int ruleno, int symbol);
+static action *add_reductions(int stateno, action *actions);
+static action *get_shifts(int stateno);
+static action *parse_actions(int stateno);
+static int sole_reduction(int stateno);
+static void defreds(void);
+static void find_final_state(void);
+static void free_action_row(action *p);
+static void remove_conflicts(void);
+static void total_conflicts(void);
+static void unused_rules(void);
+
+action **parser;
+
+int SRexpect;
+int RRexpect;
+
+int SRtotal;
+int RRtotal;
+
+Value_t *SRconflicts;
+Value_t *RRconflicts;
+Value_t *defred;
+Value_t *rules_used;
+Value_t nunused;
+Value_t final_state;
+
+static Value_t SRcount;
+static Value_t RRcount;
+
+void
+make_parser(void)
+{
+    int i;
+
+    parser =3D NEW2(nstates, action *);
+    for (i =3D 0; i < nstates; i++)
+	parser[i] =3D parse_actions(i);
+
+    find_final_state();
+    remove_conflicts();
+    unused_rules();
+    if (SRtotal + RRtotal > 0)
+	total_conflicts();
+    defreds();
+}
+
+static action *
+parse_actions(int stateno)
+{
+    action *actions;
+
+    actions =3D get_shifts(stateno);
+    actions =3D add_reductions(stateno, actions);
+    return (actions);
+}
+
+static action *
+get_shifts(int stateno)
+{
+    action *actions, *temp;
+    shifts *sp;
+    Value_t *to_state2;
+    Value_t i, k;
+    Value_t symbol;
+
+    actions =3D 0;
+    sp =3D shift_table[stateno];
+    if (sp)
+    {
+	to_state2 =3D sp->shift;
+	for (i =3D (Value_t) (sp->nshifts - 1); i >=3D 0; i--)
+	{
+	    k =3D to_state2[i];
+	    symbol =3D accessing_symbol[k];
+	    if (ISTOKEN(symbol))
+	    {
+		temp =3D NEW(action);
+		temp->next =3D actions;
+		temp->symbol =3D symbol;
+		temp->number =3D k;
+		temp->prec =3D symbol_prec[symbol];
+		temp->action_code =3D SHIFT;
+		temp->assoc =3D symbol_assoc[symbol];
+		actions =3D temp;
+	    }
+	}
+    }
+    return (actions);
+}
+
+static action *
+add_reductions(int stateno, action *actions)
+{
+    int i, j, m, n;
+    int ruleno, tokensetsize;
+    unsigned *rowp;
+
+    tokensetsize =3D WORDSIZE(ntokens);
+    m =3D lookaheads[stateno];
+    n =3D lookaheads[stateno + 1];
+    for (i =3D m; i < n; i++)
+    {
+	ruleno =3D LAruleno[i];
+	rowp =3D LA + i * tokensetsize;
+	for (j =3D ntokens - 1; j >=3D 0; j--)
+	{
+	    if (BIT(rowp, j))
+		actions =3D add_reduce(actions, ruleno, j);
+	}
+    }
+    return (actions);
+}
+
+static action *
+add_reduce(action *actions,
+	   int ruleno,
+	   int symbol)
+{
+    action *temp, *prev, *next;
+
+    prev =3D 0;
+    for (next =3D actions; next && next->symbol < symbol; next =3D next->n=
ext)
+	prev =3D next;
+
+    while (next && next->symbol =3D=3D symbol && next->action_code =3D=3D =
SHIFT)
+    {
+	prev =3D next;
+	next =3D next->next;
+    }
+
+    while (next && next->symbol =3D=3D symbol &&
+	   next->action_code =3D=3D REDUCE && next->number < ruleno)
+    {
+	prev =3D next;
+	next =3D next->next;
+    }
+
+    temp =3D NEW(action);
+    temp->next =3D next;
+    temp->symbol =3D (Value_t) symbol;
+    temp->number =3D (Value_t) ruleno;
+    temp->prec =3D rprec[ruleno];
+    temp->action_code =3D REDUCE;
+    temp->assoc =3D rassoc[ruleno];
+
+    if (prev)
+	prev->next =3D temp;
+    else
+	actions =3D temp;
+
+    return (actions);
+}
+
+static void
+find_final_state(void)
+{
+    int goal, i;
+    Value_t *to_state2;
+    shifts *p;
+
+    p =3D shift_table[0];
+    to_state2 =3D p->shift;
+    goal =3D ritem[1];
+    for (i =3D p->nshifts - 1; i >=3D 0; --i)
+    {
+	final_state =3D to_state2[i];
+	if (accessing_symbol[final_state] =3D=3D goal)
+	    break;
+    }
+}
+
+static void
+unused_rules(void)
+{
+    int i;
+    action *p;
+
+    rules_used =3D (Value_t *) MALLOC((unsigned)nrules * sizeof(Value_t));
+    NO_SPACE(rules_used);
+
+    for (i =3D 0; i < nrules; ++i)
+	rules_used[i] =3D 0;
+
+    for (i =3D 0; i < nstates; ++i)
+    {
+	for (p =3D parser[i]; p; p =3D p->next)
+	{
+	    if (p->action_code =3D=3D REDUCE && p->suppressed =3D=3D 0)
+		rules_used[p->number] =3D 1;
+	}
+    }
+
+    nunused =3D 0;
+    for (i =3D 3; i < nrules; ++i)
+	if (!rules_used[i])
+	    ++nunused;
+
+    if (nunused)
+    {
+	if (nunused =3D=3D 1)
+	    fprintf(stderr, "%s: 1 rule never reduced\n", myname);
+	else
+	    fprintf(stderr, "%s: %d rules never reduced\n", myname, nunused);
+    }
+}
+
+static void
+remove_conflicts(void)
+{
+    int i;
+    int symbol;
+    action *p, *pref =3D 0;
+
+    SRtotal =3D 0;
+    RRtotal =3D 0;
+    SRconflicts =3D NEW2(nstates, Value_t);
+    RRconflicts =3D NEW2(nstates, Value_t);
+    for (i =3D 0; i < nstates; i++)
+    {
+	SRcount =3D 0;
+	RRcount =3D 0;
+	symbol =3D -1;
+	for (p =3D parser[i]; p; p =3D p->next)
+	{
+	    if (p->symbol !=3D symbol)
+	    {
+		pref =3D p;
+		symbol =3D p->symbol;
+	    }
+	    else if (i =3D=3D final_state && symbol =3D=3D 0)
+	    {
+		SRcount++;
+		p->suppressed =3D 1;
+	    }
+	    else if (pref !=3D 0 && pref->action_code =3D=3D SHIFT)
+	    {
+		if (pref->prec > 0 && p->prec > 0)
+		{
+		    if (pref->prec < p->prec)
+		    {
+			pref->suppressed =3D 2;
+			pref =3D p;
+		    }
+		    else if (pref->prec > p->prec)
+		    {
+			p->suppressed =3D 2;
+		    }
+		    else if (pref->assoc =3D=3D LEFT)
+		    {
+			pref->suppressed =3D 2;
+			pref =3D p;
+		    }
+		    else if (pref->assoc =3D=3D RIGHT)
+		    {
+			p->suppressed =3D 2;
+		    }
+		    else
+		    {
+			pref->suppressed =3D 2;
+			p->suppressed =3D 2;
+		    }
+		}
+		else
+		{
+		    SRcount++;
+		    p->suppressed =3D 1;
+		}
+	    }
+	    else
+	    {
+		RRcount++;
+		p->suppressed =3D 1;
+	    }
+	}
+	SRtotal +=3D SRcount;
+	RRtotal +=3D RRcount;
+	SRconflicts[i] =3D SRcount;
+	RRconflicts[i] =3D RRcount;
+    }
+}
+
+static void
+total_conflicts(void)
+{
+    fprintf(stderr, "%s: ", myname);
+    if (SRtotal =3D=3D 1)
+	fprintf(stderr, "1 shift/reduce conflict");
+    else if (SRtotal > 1)
+	fprintf(stderr, "%d shift/reduce conflicts", SRtotal);
+
+    if (SRtotal && RRtotal)
+	fprintf(stderr, ", ");
+
+    if (RRtotal =3D=3D 1)
+	fprintf(stderr, "1 reduce/reduce conflict");
+    else if (RRtotal > 1)
+	fprintf(stderr, "%d reduce/reduce conflicts", RRtotal);
+
+    fprintf(stderr, ".\n");
+
+    if (SRexpect >=3D 0 && SRtotal !=3D SRexpect)
+    {
+	fprintf(stderr, "%s: ", myname);
+	fprintf(stderr, "expected %d shift/reduce conflict%s.\n",
+		SRexpect, PLURAL(SRexpect));
+	exit_code =3D EXIT_FAILURE;
+    }
+    if (RRexpect >=3D 0 && RRtotal !=3D RRexpect)
+    {
+	fprintf(stderr, "%s: ", myname);
+	fprintf(stderr, "expected %d reduce/reduce conflict%s.\n",
+		RRexpect, PLURAL(RRexpect));
+	exit_code =3D EXIT_FAILURE;
+    }
+}
+
+static int
+sole_reduction(int stateno)
+{
+    int count, ruleno;
+    action *p;
+
+    count =3D 0;
+    ruleno =3D 0;
+    for (p =3D parser[stateno]; p; p =3D p->next)
+    {
+	if (p->action_code =3D=3D SHIFT && p->suppressed =3D=3D 0)
+	    return (0);
+	else if (p->action_code =3D=3D REDUCE && p->suppressed =3D=3D 0)
+	{
+	    if (ruleno > 0 && p->number !=3D ruleno)
+		return (0);
+	    if (p->symbol !=3D 1)
+		++count;
+	    ruleno =3D p->number;
+	}
+    }
+
+    if (count =3D=3D 0)
+	return (0);
+    return (ruleno);
+}
+
+static void
+defreds(void)
+{
+    int i;
+
+    defred =3D NEW2(nstates, Value_t);
+    for (i =3D 0; i < nstates; i++)
+	defred[i] =3D (Value_t) sole_reduction(i);
+}
+
+static void
+free_action_row(action *p)
+{
+    action *q;
+
+    while (p)
+    {
+	q =3D p->next;
+	FREE(p);
+	p =3D q;
+    }
+}
+
+void
+free_parser(void)
+{
+    int i;
+
+    for (i =3D 0; i < nstates; i++)
+	free_action_row(parser[i]);
+
+    FREE(parser);
+}
+
+#ifdef NO_LEAKS
+void
+mkpar_leaks(void)
+{
+    DO_FREE(defred);
+    DO_FREE(rules_used);
+    DO_FREE(SRconflicts);
+    DO_FREE(RRconflicts);
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/output.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/output.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1507 @@
+/* $Id: output.c,v 1.43 2012/01/14 17:03:52 tom Exp $ */
+
+#include "defs.h"
+
+#define StaticOrR	(rflag ? "" : "static ")
+#define CountLine(fp)   (!rflag || ((fp) =3D=3D code_file))
+
+static int nvectors;
+static int nentries;
+static Value_t **froms;
+static Value_t **tos;
+static Value_t *tally;
+static Value_t *width;
+static Value_t *state_count;
+static Value_t *order;
+static Value_t *base;
+static Value_t *pos;
+static int maxtable;
+static Value_t *table;
+static Value_t *check;
+static int lowzero;
+static int high;
+
+static void
+putc_code(FILE * fp, int c)
+{
+    if ((c =3D=3D '\n') && (fp =3D=3D code_file))
+	++outline;
+    putc(c, fp);
+}
+
+static void
+putl_code(FILE * fp, const char *s)
+{
+    if (fp =3D=3D code_file)
+	++outline;
+    fputs(s, fp);
+}
+
+static void
+puts_code(FILE * fp, const char *s)
+{
+    fputs(s, fp);
+}
+
+static void
+write_code_lineno(FILE * fp)
+{
+    if (!lflag && (fp =3D=3D code_file))
+    {
+	++outline;
+	fprintf(fp, line_format, outline, code_file_name);
+    }
+}
+
+static void
+write_input_lineno(void)
+{
+    if (!lflag)
+    {
+	++outline;
+	fprintf(code_file, line_format, lineno, input_file_name);
+    }
+}
+
+static void
+define_prefixed(FILE * fp, const char *name)
+{
+    int bump_line =3D CountLine(fp);
+    if (bump_line)
+	++outline;
+    fprintf(fp, "\n");
+
+    if (bump_line)
+	++outline;
+    fprintf(fp, "#ifndef %s\n", name);
+
+    if (bump_line)
+	++outline;
+    fprintf(fp, "#define %-10s %s%s\n", name, symbol_prefix, name + 2);
+
+    if (bump_line)
+	++outline;
+    fprintf(fp, "#endif /* %s */\n", name);
+}
+
+static void
+output_prefix(FILE * fp)
+{
+    if (symbol_prefix =3D=3D NULL)
+    {
+	symbol_prefix =3D "yy";
+    }
+    else
+    {
+	define_prefixed(fp, "yyparse");
+	define_prefixed(fp, "yylex");
+	define_prefixed(fp, "yyerror");
+	define_prefixed(fp, "yychar");
+	define_prefixed(fp, "yyval");
+	define_prefixed(fp, "yylval");
+	define_prefixed(fp, "yydebug");
+	define_prefixed(fp, "yynerrs");
+	define_prefixed(fp, "yyerrflag");
+	define_prefixed(fp, "yylhs");
+	define_prefixed(fp, "yylen");
+	define_prefixed(fp, "yydefred");
+	define_prefixed(fp, "yydgoto");
+	define_prefixed(fp, "yysindex");
+	define_prefixed(fp, "yyrindex");
+	define_prefixed(fp, "yygindex");
+	define_prefixed(fp, "yytable");
+	define_prefixed(fp, "yycheck");
+	define_prefixed(fp, "yyname");
+	define_prefixed(fp, "yyrule");
+    }
+    if (CountLine(fp))
+	++outline;
+    fprintf(fp, "#define YYPREFIX \"%s\"\n", symbol_prefix);
+}
+
+static void
+output_newline(void)
+{
+    if (!rflag)
+	++outline;
+    putc('\n', output_file);
+}
+
+static void
+output_line(const char *value)
+{
+    fputs(value, output_file);
+    output_newline();
+}
+
+static void
+output_int(int value)
+{
+    fprintf(output_file, "%5d,", value);
+}
+
+static void
+start_int_table(const char *name, int value)
+{
+    int need =3D 34 - (int)(strlen(symbol_prefix) + strlen(name));
+
+    if (need < 6)
+	need =3D 6;
+    fprintf(output_file,
+	    "%sconst short %s%s[] =3D {%*d,",
+	    StaticOrR, symbol_prefix, name, need, value);
+}
+
+static void
+start_str_table(const char *name)
+{
+    fprintf(output_file,
+	    "%sconst char *%s%s[] =3D {",
+	    StaticOrR, "yy", name);
+    output_newline();
+}
+
+static void
+end_table(void)
+{
+    output_newline();
+    output_line("};");
+}
+
+static void
+output_rule_data(void)
+{
+    int i;
+    int j;
+
+    start_int_table("lhs", symbol_value[start_symbol]);
+
+    j =3D 10;
+    for (i =3D 3; i < nrules; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(symbol_value[rlhs[i]]);
+    }
+    end_table();
+
+    start_int_table("len", 2);
+
+    j =3D 10;
+    for (i =3D 3; i < nrules; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    j++;
+
+	output_int(rrhs[i + 1] - rrhs[i] - 1);
+    }
+    end_table();
+}
+
+static void
+output_yydefred(void)
+{
+    int i, j;
+
+    start_int_table("defred", (defred[0] ? defred[0] - 2 : 0));
+
+    j =3D 10;
+    for (i =3D 1; i < nstates; i++)
+    {
+	if (j < 10)
+	    ++j;
+	else
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+
+	output_int((defred[i] ? defred[i] - 2 : 0));
+    }
+
+    end_table();
+}
+
+static void
+token_actions(void)
+{
+    int i, j;
+    Value_t shiftcount, reducecount;
+    int max, min;
+    Value_t *actionrow, *r, *s;
+    action *p;
+
+    actionrow =3D NEW2(2 * ntokens, Value_t);
+    for (i =3D 0; i < nstates; ++i)
+    {
+	if (parser[i])
+	{
+	    for (j =3D 0; j < 2 * ntokens; ++j)
+		actionrow[j] =3D 0;
+
+	    shiftcount =3D 0;
+	    reducecount =3D 0;
+	    for (p =3D parser[i]; p; p =3D p->next)
+	    {
+		if (p->suppressed =3D=3D 0)
+		{
+		    if (p->action_code =3D=3D SHIFT)
+		    {
+			++shiftcount;
+			actionrow[p->symbol] =3D p->number;
+		    }
+		    else if (p->action_code =3D=3D REDUCE && p->number !=3D defred[i])
+		    {
+			++reducecount;
+			actionrow[p->symbol + ntokens] =3D p->number;
+		    }
+		}
+	    }
+
+	    tally[i] =3D shiftcount;
+	    tally[nstates + i] =3D reducecount;
+	    width[i] =3D 0;
+	    width[nstates + i] =3D 0;
+	    if (shiftcount > 0)
+	    {
+		froms[i] =3D r =3D NEW2(shiftcount, Value_t);
+		tos[i] =3D s =3D NEW2(shiftcount, Value_t);
+		min =3D MAXSHORT;
+		max =3D 0;
+		for (j =3D 0; j < ntokens; ++j)
+		{
+		    if (actionrow[j])
+		    {
+			if (min > symbol_value[j])
+			    min =3D symbol_value[j];
+			if (max < symbol_value[j])
+			    max =3D symbol_value[j];
+			*r++ =3D symbol_value[j];
+			*s++ =3D actionrow[j];
+		    }
+		}
+		width[i] =3D (Value_t) (max - min + 1);
+	    }
+	    if (reducecount > 0)
+	    {
+		froms[nstates + i] =3D r =3D NEW2(reducecount, Value_t);
+		tos[nstates + i] =3D s =3D NEW2(reducecount, Value_t);
+		min =3D MAXSHORT;
+		max =3D 0;
+		for (j =3D 0; j < ntokens; ++j)
+		{
+		    if (actionrow[ntokens + j])
+		    {
+			if (min > symbol_value[j])
+			    min =3D symbol_value[j];
+			if (max < symbol_value[j])
+			    max =3D symbol_value[j];
+			*r++ =3D symbol_value[j];
+			*s++ =3D (Value_t) (actionrow[ntokens + j] - 2);
+		    }
+		}
+		width[nstates + i] =3D (Value_t) (max - min + 1);
+	    }
+	}
+    }
+    FREE(actionrow);
+}
+
+static int
+default_goto(int symbol)
+{
+    int i;
+    int m;
+    int n;
+    int default_state;
+    int max;
+
+    m =3D goto_map[symbol];
+    n =3D goto_map[symbol + 1];
+
+    if (m =3D=3D n)
+	return (0);
+
+    for (i =3D 0; i < nstates; i++)
+	state_count[i] =3D 0;
+
+    for (i =3D m; i < n; i++)
+	state_count[to_state[i]]++;
+
+    max =3D 0;
+    default_state =3D 0;
+    for (i =3D 0; i < nstates; i++)
+    {
+	if (state_count[i] > max)
+	{
+	    max =3D state_count[i];
+	    default_state =3D i;
+	}
+    }
+
+    return (default_state);
+}
+
+static void
+save_column(int symbol, int default_state)
+{
+    int i;
+    int m;
+    int n;
+    Value_t *sp;
+    Value_t *sp1;
+    Value_t *sp2;
+    Value_t count;
+    int symno;
+
+    m =3D goto_map[symbol];
+    n =3D goto_map[symbol + 1];
+
+    count =3D 0;
+    for (i =3D m; i < n; i++)
+    {
+	if (to_state[i] !=3D default_state)
+	    ++count;
+    }
+    if (count =3D=3D 0)
+	return;
+
+    symno =3D symbol_value[symbol] + 2 * nstates;
+
+    froms[symno] =3D sp1 =3D sp =3D NEW2(count, Value_t);
+    tos[symno] =3D sp2 =3D NEW2(count, Value_t);
+
+    for (i =3D m; i < n; i++)
+    {
+	if (to_state[i] !=3D default_state)
+	{
+	    *sp1++ =3D from_state[i];
+	    *sp2++ =3D to_state[i];
+	}
+    }
+
+    tally[symno] =3D count;
+    width[symno] =3D (Value_t) (sp1[-1] - sp[0] + 1);
+}
+
+static void
+goto_actions(void)
+{
+    int i, j, k;
+
+    state_count =3D NEW2(nstates, Value_t);
+
+    k =3D default_goto(start_symbol + 1);
+    start_int_table("dgoto", k);
+    save_column(start_symbol + 1, k);
+
+    j =3D 10;
+    for (i =3D start_symbol + 2; i < nsyms; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	k =3D default_goto(i);
+	output_int(k);
+	save_column(i, k);
+    }
+
+    end_table();
+    FREE(state_count);
+}
+
+static void
+sort_actions(void)
+{
+    Value_t i;
+    int j;
+    int k;
+    int t;
+    int w;
+
+    order =3D NEW2(nvectors, Value_t);
+    nentries =3D 0;
+
+    for (i =3D 0; i < nvectors; i++)
+    {
+	if (tally[i] > 0)
+	{
+	    t =3D tally[i];
+	    w =3D width[i];
+	    j =3D nentries - 1;
+
+	    while (j >=3D 0 && (width[order[j]] < w))
+		j--;
+
+	    while (j >=3D 0 && (width[order[j]] =3D=3D w) && (tally[order[j]] < t=
))
+		j--;
+
+	    for (k =3D nentries - 1; k > j; k--)
+		order[k + 1] =3D order[k];
+
+	    order[j + 1] =3D i;
+	    nentries++;
+	}
+    }
+}
+
+/*  The function matching_vector determines if the vector specified by	*/
+/*  the input parameter matches a previously considered	vector.  The	*/
+/*  test at the start of the function checks if the vector represents	*/
+/*  a row of shifts over terminal symbols or a row of reductions, or a	*/
+/*  column of shifts over a nonterminal symbol.  Berkeley Yacc does not	*/
+/*  check if a column of shifts over a nonterminal symbols matches a	*/
+/*  previously considered vector.  Because of the nature of LR parsing	*/
+/*  tables, no two columns can match.  Therefore, the only possible	*/
+/*  match would be between a row and a column.  Such matches are	*/
+/*  unlikely.  Therefore, to save time, no attempt is made to see if a	*/
+/*  column matches a previously considered vector.			*/
+/*									*/
+/*  Matching_vector is poorly designed.  The test could easily be made	*/
+/*  faster.  Also, it depends on the vectors being in a specific	*/
+/*  order.								*/
+
+static int
+matching_vector(int vector)
+{
+    int i;
+    int j;
+    int k;
+    int t;
+    int w;
+    int match;
+    int prev;
+
+    i =3D order[vector];
+    if (i >=3D 2 * nstates)
+	return (-1);
+
+    t =3D tally[i];
+    w =3D width[i];
+
+    for (prev =3D vector - 1; prev >=3D 0; prev--)
+    {
+	j =3D order[prev];
+	if (width[j] !=3D w || tally[j] !=3D t)
+	    return (-1);
+
+	match =3D 1;
+	for (k =3D 0; match && k < t; k++)
+	{
+	    if (tos[j][k] !=3D tos[i][k] || froms[j][k] !=3D froms[i][k])
+		match =3D 0;
+	}
+
+	if (match)
+	    return (j);
+    }
+
+    return (-1);
+}
+
+static int
+pack_vector(int vector)
+{
+    int i, j, k, l;
+    int t;
+    int loc;
+    int ok;
+    Value_t *from;
+    Value_t *to;
+    int newmax;
+
+    i =3D order[vector];
+    t =3D tally[i];
+    assert(t);
+
+    from =3D froms[i];
+    to =3D tos[i];
+
+    j =3D lowzero - from[0];
+    for (k =3D 1; k < t; ++k)
+	if (lowzero - from[k] > j)
+	    j =3D lowzero - from[k];
+    for (;; ++j)
+    {
+	if (j =3D=3D 0)
+	    continue;
+	ok =3D 1;
+	for (k =3D 0; ok && k < t; k++)
+	{
+	    loc =3D j + from[k];
+	    if (loc >=3D maxtable - 1)
+	    {
+		if (loc >=3D MAXTABLE - 1)
+		    fatal("maximum table size exceeded");
+
+		newmax =3D maxtable;
+		do
+		{
+		    newmax +=3D 200;
+		}
+		while (newmax <=3D loc);
+
+		table =3D (Value_t *) REALLOC(table, (unsigned)newmax * sizeof(Value_t));
+		NO_SPACE(table);
+
+		check =3D (Value_t *) REALLOC(check, (unsigned)newmax * sizeof(Value_t));
+		NO_SPACE(check);
+
+		for (l =3D maxtable; l < newmax; ++l)
+		{
+		    table[l] =3D 0;
+		    check[l] =3D -1;
+		}
+		maxtable =3D newmax;
+	    }
+
+	    if (check[loc] !=3D -1)
+		ok =3D 0;
+	}
+	for (k =3D 0; ok && k < vector; k++)
+	{
+	    if (pos[k] =3D=3D j)
+		ok =3D 0;
+	}
+	if (ok)
+	{
+	    for (k =3D 0; k < t; k++)
+	    {
+		loc =3D j + from[k];
+		table[loc] =3D to[k];
+		check[loc] =3D from[k];
+		if (loc > high)
+		    high =3D loc;
+	    }
+
+	    while (check[lowzero] !=3D -1)
+		++lowzero;
+
+	    return (j);
+	}
+    }
+}
+
+static void
+pack_table(void)
+{
+    int i;
+    Value_t place;
+    int state;
+
+    base =3D NEW2(nvectors, Value_t);
+    pos =3D NEW2(nentries, Value_t);
+
+    maxtable =3D 1000;
+    table =3D NEW2(maxtable, Value_t);
+    check =3D NEW2(maxtable, Value_t);
+
+    lowzero =3D 0;
+    high =3D 0;
+
+    for (i =3D 0; i < maxtable; i++)
+	check[i] =3D -1;
+
+    for (i =3D 0; i < nentries; i++)
+    {
+	state =3D matching_vector(i);
+
+	if (state < 0)
+	    place =3D (Value_t) pack_vector(i);
+	else
+	    place =3D base[state];
+
+	pos[i] =3D place;
+	base[order[i]] =3D place;
+    }
+
+    for (i =3D 0; i < nvectors; i++)
+    {
+	if (froms[i])
+	    FREE(froms[i]);
+	if (tos[i])
+	    FREE(tos[i]);
+    }
+
+    FREE(froms);
+    FREE(tos);
+    FREE(pos);
+}
+
+static void
+output_base(void)
+{
+    int i, j;
+
+    start_int_table("sindex", base[0]);
+
+    j =3D 10;
+    for (i =3D 1; i < nstates; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(base[i]);
+    }
+
+    end_table();
+
+    start_int_table("rindex", base[nstates]);
+
+    j =3D 10;
+    for (i =3D nstates + 1; i < 2 * nstates; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(base[i]);
+    }
+
+    end_table();
+
+    start_int_table("gindex", base[2 * nstates]);
+
+    j =3D 10;
+    for (i =3D 2 * nstates + 1; i < nvectors - 1; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(base[i]);
+    }
+
+    end_table();
+    FREE(base);
+}
+
+static void
+output_table(void)
+{
+    int i;
+    int j;
+
+    ++outline;
+    fprintf(code_file, "#define YYTABLESIZE %d\n", high);
+    start_int_table("table", table[0]);
+
+    j =3D 10;
+    for (i =3D 1; i <=3D high; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(table[i]);
+    }
+
+    end_table();
+    FREE(table);
+}
+
+static void
+output_check(void)
+{
+    int i;
+    int j;
+
+    start_int_table("check", check[0]);
+
+    j =3D 10;
+    for (i =3D 1; i <=3D high; i++)
+    {
+	if (j >=3D 10)
+	{
+	    output_newline();
+	    j =3D 1;
+	}
+	else
+	    ++j;
+
+	output_int(check[i]);
+    }
+
+    end_table();
+    FREE(check);
+}
+
+static void
+output_actions(void)
+{
+    nvectors =3D 2 * nstates + nvars;
+
+    froms =3D NEW2(nvectors, Value_t *);
+    tos =3D NEW2(nvectors, Value_t *);
+    tally =3D NEW2(nvectors, Value_t);
+    width =3D NEW2(nvectors, Value_t);
+
+    token_actions();
+    FREE(lookaheads);
+    FREE(LA);
+    FREE(LAruleno);
+    FREE(accessing_symbol);
+
+    goto_actions();
+    FREE(goto_map + ntokens);
+    FREE(from_state);
+    FREE(to_state);
+
+    sort_actions();
+    pack_table();
+    output_base();
+    output_table();
+    output_check();
+}
+
+static int
+is_C_identifier(char *name)
+{
+    char *s;
+    int c;
+
+    s =3D name;
+    c =3D *s;
+    if (c =3D=3D '"')
+    {
+	c =3D *++s;
+	if (!isalpha(c) && c !=3D '_' && c !=3D '$')
+	    return (0);
+	while ((c =3D *++s) !=3D '"')
+	{
+	    if (!isalnum(c) && c !=3D '_' && c !=3D '$')
+		return (0);
+	}
+	return (1);
+    }
+
+    if (!isalpha(c) && c !=3D '_' && c !=3D '$')
+	return (0);
+    while ((c =3D *++s) !=3D 0)
+    {
+	if (!isalnum(c) && c !=3D '_' && c !=3D '$')
+	    return (0);
+    }
+    return (1);
+}
+
+static void
+output_defines(FILE * fp)
+{
+    int c, i;
+    char *s;
+
+    for (i =3D 2; i < ntokens; ++i)
+    {
+	s =3D symbol_name[i];
+	if (is_C_identifier(s) && (!sflag || *s !=3D '"'))
+	{
+	    fprintf(fp, "#define ");
+	    c =3D *s;
+	    if (c =3D=3D '"')
+	    {
+		while ((c =3D *++s) !=3D '"')
+		{
+		    putc(c, fp);
+		}
+	    }
+	    else
+	    {
+		do
+		{
+		    putc(c, fp);
+		}
+		while ((c =3D *++s) !=3D 0);
+	    }
+	    if (fp =3D=3D code_file)
+		++outline;
+	    fprintf(fp, " %d\n", symbol_value[i]);
+	}
+    }
+
+    if (fp =3D=3D code_file)
+	++outline;
+    if (fp !=3D defines_file || iflag)
+	fprintf(fp, "#define YYERRCODE %d\n", symbol_value[1]);
+
+    if (fp =3D=3D defines_file || (iflag && !dflag))
+    {
+	if (unionized)
+	{
+	    rewind(union_file);
+	    while ((c =3D getc(union_file)) !=3D EOF)
+		putc(c, fp);
+	    fprintf(fp, "extern YYSTYPE %slval;\n", symbol_prefix);
+	}
+    }
+}
+
+static void
+output_stored_text(FILE * fp)
+{
+    int c;
+    FILE *in;
+
+    rewind(text_file);
+    if (text_file =3D=3D NULL)
+	open_error("text_file");
+    in =3D text_file;
+    if ((c =3D getc(in)) =3D=3D EOF)
+	return;
+    putc_code(fp, c);
+    while ((c =3D getc(in)) !=3D EOF)
+    {
+	putc_code(fp, c);
+    }
+    write_code_lineno(fp);
+}
+
+static void
+output_debug(void)
+{
+    int i, j, k, max;
+    const char **symnam;
+    const char *s;
+
+    ++outline;
+    fprintf(code_file, "#define YYFINAL %d\n", final_state);
+
+    putl_code(code_file, "#ifndef YYDEBUG\n");
+    ++outline;
+    fprintf(code_file, "#define YYDEBUG %d\n", tflag);
+    putl_code(code_file, "#endif\n");
+
+    if (rflag)
+    {
+	fprintf(output_file, "#ifndef YYDEBUG\n");
+	fprintf(output_file, "#define YYDEBUG %d\n", tflag);
+	fprintf(output_file, "#endif\n");
+    }
+
+    max =3D 0;
+    for (i =3D 2; i < ntokens; ++i)
+	if (symbol_value[i] > max)
+	    max =3D symbol_value[i];
+
+    ++outline;
+    fprintf(code_file, "#define YYMAXTOKEN %d\n", max);
+
+    symnam =3D (const char **)MALLOC((unsigned)(max + 1) * sizeof(char *));
+    NO_SPACE(symnam);
+
+    /* Note that it is  not necessary to initialize the element         */
+    /* symnam[max].                                                     */
+    for (i =3D 0; i < max; ++i)
+	symnam[i] =3D 0;
+    for (i =3D ntokens - 1; i >=3D 2; --i)
+	symnam[symbol_value[i]] =3D symbol_name[i];
+    symnam[0] =3D "end-of-file";
+
+    output_line("#if YYDEBUG");
+
+    start_str_table("name");
+    j =3D 80;
+    for (i =3D 0; i <=3D max; ++i)
+    {
+	if ((s =3D symnam[i]) !=3D 0)
+	{
+	    if (s[0] =3D=3D '"')
+	    {
+		k =3D 7;
+		while (*++s !=3D '"')
+		{
+		    ++k;
+		    if (*s =3D=3D '\\')
+		    {
+			k +=3D 2;
+			if (*++s =3D=3D '\\')
+			    ++k;
+		    }
+		}
+		j +=3D k;
+		if (j > 80)
+		{
+		    output_newline();
+		    j =3D k;
+		}
+		fprintf(output_file, "\"\\\"");
+		s =3D symnam[i];
+		while (*++s !=3D '"')
+		{
+		    if (*s =3D=3D '\\')
+		    {
+			fprintf(output_file, "\\\\");
+			if (*++s =3D=3D '\\')
+			    fprintf(output_file, "\\\\");
+			else
+			    putc(*s, output_file);
+		    }
+		    else
+			putc(*s, output_file);
+		}
+		fprintf(output_file, "\\\"\",");
+	    }
+	    else if (s[0] =3D=3D '\'')
+	    {
+		if (s[1] =3D=3D '"')
+		{
+		    j +=3D 7;
+		    if (j > 80)
+		    {
+			output_newline();
+			j =3D 7;
+		    }
+		    fprintf(output_file, "\"'\\\"'\",");
+		}
+		else
+		{
+		    k =3D 5;
+		    while (*++s !=3D '\'')
+		    {
+			++k;
+			if (*s =3D=3D '\\')
+			{
+			    k +=3D 2;
+			    if (*++s =3D=3D '\\')
+				++k;
+			}
+		    }
+		    j +=3D k;
+		    if (j > 80)
+		    {
+			output_newline();
+			j =3D k;
+		    }
+		    fprintf(output_file, "\"'");
+		    s =3D symnam[i];
+		    while (*++s !=3D '\'')
+		    {
+			if (*s =3D=3D '\\')
+			{
+			    fprintf(output_file, "\\\\");
+			    if (*++s =3D=3D '\\')
+				fprintf(output_file, "\\\\");
+			    else
+				putc(*s, output_file);
+			}
+			else
+			    putc(*s, output_file);
+		    }
+		    fprintf(output_file, "'\",");
+		}
+	    }
+	    else
+	    {
+		k =3D (int)strlen(s) + 3;
+		j +=3D k;
+		if (j > 80)
+		{
+		    output_newline();
+		    j =3D k;
+		}
+		putc('"', output_file);
+		do
+		{
+		    putc(*s, output_file);
+		}
+		while (*++s);
+		fprintf(output_file, "\",");
+	    }
+	}
+	else
+	{
+	    j +=3D 2;
+	    if (j > 80)
+	    {
+		output_newline();
+		j =3D 2;
+	    }
+	    fprintf(output_file, "0,");
+	}
+    }
+    end_table();
+    FREE(symnam);
+
+    start_str_table("rule");
+    for (i =3D 2; i < nrules; ++i)
+    {
+	fprintf(output_file, "\"%s :", symbol_name[rlhs[i]]);
+	for (j =3D rrhs[i]; ritem[j] > 0; ++j)
+	{
+	    s =3D symbol_name[ritem[j]];
+	    if (s[0] =3D=3D '"')
+	    {
+		fprintf(output_file, " \\\"");
+		while (*++s !=3D '"')
+		{
+		    if (*s =3D=3D '\\')
+		    {
+			if (s[1] =3D=3D '\\')
+			    fprintf(output_file, "\\\\\\\\");
+			else
+			    fprintf(output_file, "\\\\%c", s[1]);
+			++s;
+		    }
+		    else
+			putc(*s, output_file);
+		}
+		fprintf(output_file, "\\\"");
+	    }
+	    else if (s[0] =3D=3D '\'')
+	    {
+		if (s[1] =3D=3D '"')
+		    fprintf(output_file, " '\\\"'");
+		else if (s[1] =3D=3D '\\')
+		{
+		    if (s[2] =3D=3D '\\')
+			fprintf(output_file, " '\\\\\\\\");
+		    else
+			fprintf(output_file, " '\\\\%c", s[2]);
+		    s +=3D 2;
+		    while (*++s !=3D '\'')
+			putc(*s, output_file);
+		    putc('\'', output_file);
+		}
+		else
+		    fprintf(output_file, " '%c'", s[1]);
+	    }
+	    else
+		fprintf(output_file, " %s", s);
+	}
+	fprintf(output_file, "\",");
+	output_newline();
+    }
+
+    end_table();
+    output_line("#endif");
+}
+
+static void
+output_pure_parser(FILE * fp)
+{
+    putc_code(fp, '\n');
+
+    if (fp =3D=3D code_file)
+	outline +=3D 1;
+    fprintf(fp, "#define YYPURE %d\n", pure_parser);
+    putc_code(fp, '\n');
+}
+
+static void
+output_stype(FILE * fp)
+{
+    if (!unionized && ntags =3D=3D 0)
+    {
+	putc_code(fp, '\n');
+	putl_code(fp, "#ifndef YYSTYPE\n");
+	putl_code(fp, "typedef int YYSTYPE;\n");
+	putl_code(fp, "#endif\n");
+    }
+}
+
+static void
+output_trailing_text(void)
+{
+    int c, last;
+    FILE *in;
+
+    if (line =3D=3D 0)
+	return;
+
+    in =3D input_file;
+    c =3D *cptr;
+    if (c =3D=3D '\n')
+    {
+	++lineno;
+	if ((c =3D getc(in)) =3D=3D EOF)
+	    return;
+	write_input_lineno();
+	putc_code(code_file, c);
+	last =3D c;
+    }
+    else
+    {
+	write_input_lineno();
+	do
+	{
+	    putc_code(code_file, c);
+	}
+	while ((c =3D *++cptr) !=3D '\n');
+	putc_code(code_file, c);
+	last =3D '\n';
+    }
+
+    while ((c =3D getc(in)) !=3D EOF)
+    {
+	putc_code(code_file, c);
+	last =3D c;
+    }
+
+    if (last !=3D '\n')
+    {
+	putc_code(code_file, '\n');
+    }
+    write_code_lineno(code_file);
+}
+
+static void
+output_semantic_actions(void)
+{
+    int c, last;
+
+    rewind(action_file);
+    if ((c =3D getc(action_file)) =3D=3D EOF)
+	return;
+
+    last =3D c;
+    putc_code(code_file, c);
+    while ((c =3D getc(action_file)) !=3D EOF)
+    {
+	putc_code(code_file, c);
+	last =3D c;
+    }
+
+    if (last !=3D '\n')
+    {
+	putc_code(code_file, '\n');
+    }
+
+    write_code_lineno(code_file);
+}
+
+static void
+output_parse_decl(FILE * fp)
+{
+    putl_code(fp, "\n");
+    putl_code(fp, "/* compatibility with bison */\n");
+    putl_code(fp, "#ifdef YYPARSE_PARAM\n");
+    putl_code(fp, "/* compatibility with FreeBSD */\n");
+    putl_code(fp, "# ifdef YYPARSE_PARAM_TYPE\n");
+    putl_code(fp,
+	      "#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)=
\n");
+    putl_code(fp, "# else\n");
+    putl_code(fp, "#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)\n=
");
+    putl_code(fp, "# endif\n");
+    putl_code(fp, "#else\n");
+
+    puts_code(fp, "# define YYPARSE_DECL() yyparse(");
+    if (!parse_param)
+	puts_code(fp, "void");
+    else
+    {
+	param *p;
+	for (p =3D parse_param; p; p =3D p->next)
+	    fprintf(fp, "%s %s%s%s", p->type, p->name, p->type2,
+		    p->next ? ", " : "");
+    }
+    putl_code(fp, ")\n");
+
+    putl_code(fp, "#endif\n");
+}
+
+static void
+output_lex_decl(FILE * fp)
+{
+    putl_code(fp, "\n");
+    putl_code(fp, "/* Parameters sent to lex. */\n");
+    putl_code(fp, "#ifdef YYLEX_PARAM\n");
+    if (pure_parser)
+    {
+	putl_code(fp, "# ifdef YYLEX_PARAM_TYPE\n");
+	putl_code(fp, "#  define YYLEX_DECL() yylex(YYSTYPE *yylval,"
+		  " YYLEX_PARAM_TYPE YYLEX_PARAM)\n");
+	putl_code(fp, "# else\n");
+	putl_code(fp, "#  define YYLEX_DECL() yylex(YYSTYPE *yylval,"
+		  " void * YYLEX_PARAM)\n");
+	putl_code(fp, "# endif\n");
+	putl_code(fp, "# define YYLEX yylex(&yylval, YYLEX_PARAM)\n");
+    }
+    else
+    {
+	putl_code(fp, "# define YYLEX_DECL() yylex(void *YYLEX_PARAM)\n");
+	putl_code(fp, "# define YYLEX yylex(YYLEX_PARAM)\n");
+    }
+    putl_code(fp, "#else\n");
+    if (pure_parser && lex_param)
+    {
+	param *p;
+	puts_code(fp, "# define YYLEX_DECL() yylex(YYSTYPE *yylval, ");
+	for (p =3D lex_param; p; p =3D p->next)
+	    fprintf(fp, "%s %s%s%s", p->type, p->name, p->type2,
+		    p->next ? ", " : "");
+	putl_code(fp, ")\n");
+
+	puts_code(fp, "# define YYLEX yylex(&yylval, ");
+	for (p =3D lex_param; p; p =3D p->next)
+	    fprintf(fp, "%s%s", p->name, p->next ? ", " : "");
+	putl_code(fp, ")\n");
+    }
+    else if (pure_parser)
+    {
+	putl_code(fp, "# define YYLEX_DECL() yylex(YYSTYPE *yylval)\n");
+	putl_code(fp, "# define YYLEX yylex(&yylval)\n");
+    }
+    else if (lex_param)
+    {
+	param *p;
+	puts_code(fp, "# define YYLEX_DECL() yylex(");
+	for (p =3D lex_param; p; p =3D p->next)
+	    fprintf(fp, "%s %s%s%s", p->type, p->name, p->type2,
+		    p->next ? ", " : "");
+	putl_code(fp, ")\n");
+
+	puts_code(fp, "# define YYLEX yylex(");
+	for (p =3D lex_param; p; p =3D p->next)
+	    fprintf(fp, "%s%s", p->name, p->next ? ", " : "");
+	putl_code(fp, ")\n");
+    }
+    else
+    {
+	putl_code(fp, "# define YYLEX_DECL() yylex(void)\n");
+	putl_code(fp, "# define YYLEX yylex()\n");
+    }
+    putl_code(fp, "#endif\n");
+}
+
+static void
+output_error_decl(FILE * fp)
+{
+    putl_code(fp, "\n");
+    putl_code(fp, "/* Parameters sent to yyerror. */\n");
+    if (parse_param)
+    {
+	param *p;
+
+	putl_code(fp, "#ifndef YYERROR_DECL\n");
+	fprintf(fp, "#define YYERROR_DECL() yyerror(");
+	for (p =3D parse_param; p; p =3D p->next)
+	    fprintf(fp, "%s %s%s, ", p->type, p->name, p->type2);
+	putl_code(fp, "const char *s)\n");
+	putl_code(fp, "#endif\n");
+
+	putl_code(fp, "#ifndef YYERROR_CALL\n");
+	puts_code(fp, "#define YYERROR_CALL(msg) yyerror(");
+
+	for (p =3D parse_param; p; p =3D p->next)
+	    fprintf(fp, "%s, ", p->name);
+
+	putl_code(fp, "msg)\n");
+	putl_code(fp, "#endif\n");
+    }
+    else
+    {
+	putl_code(fp, "#ifndef YYERROR_DECL\n");
+	putl_code(fp, "#define YYERROR_DECL() yyerror(const char *s)\n");
+	putl_code(fp, "#endif\n");
+	putl_code(fp, "#ifndef YYERROR_CALL\n");
+	putl_code(fp, "#define YYERROR_CALL(msg) yyerror(msg)\n");
+	putl_code(fp, "#endif\n");
+    }
+}
+
+static void
+free_itemsets(void)
+{
+    core *cp, *next;
+
+    FREE(state_table);
+    for (cp =3D first_state; cp; cp =3D next)
+    {
+	next =3D cp->next;
+	FREE(cp);
+    }
+}
+
+static void
+free_shifts(void)
+{
+    shifts *sp, *next;
+
+    FREE(shift_table);
+    for (sp =3D first_shift; sp; sp =3D next)
+    {
+	next =3D sp->next;
+	FREE(sp);
+    }
+}
+
+static void
+free_reductions(void)
+{
+    reductions *rp, *next;
+
+    FREE(reduction_table);
+    for (rp =3D first_reduction; rp; rp =3D next)
+    {
+	next =3D rp->next;
+	FREE(rp);
+    }
+}
+
+static void
+output_yyerror_call(const char *msg)
+{
+    FILE *fp =3D code_file;
+
+    puts_code(fp, "    yyerror(");
+    if (parse_param)
+    {
+	param *p;
+	for (p =3D parse_param; p; p =3D p->next)
+	    fprintf(fp, "%s, ", p->name);
+    }
+    puts_code(fp, "\"");
+    puts_code(fp, msg);
+    putl_code(fp, "\");\n");
+}
+
+static void
+output_externs(FILE * fp, const char *const section[])
+{
+    int c;
+    int i;
+    const char *s;
+
+    for (i =3D 0; (s =3D section[i]) !=3D 0; ++i)
+    {
+	if (*s && *s !=3D '#')
+	    fputs("extern\t", fp);
+	while ((c =3D *s) !=3D 0)
+	{
+	    putc(c, fp);
+	    ++s;
+	}
+	if (fp =3D=3D code_file)
+	    ++outline;
+	putc('\n', fp);
+    }
+}
+
+void
+output(void)
+{
+    FILE *fp;
+
+    free_itemsets();
+    free_shifts();
+    free_reductions();
+
+    if (iflag)
+    {
+	++outline;
+	fprintf(code_file, "#include \"%s\"\n", externs_file_name);
+	fp =3D externs_file;
+    }
+    else
+	fp =3D code_file;
+
+    output_prefix(iflag ? externs_file : output_file);
+    output_pure_parser(fp);
+    output_stored_text(fp);
+    output_stype(fp);
+    output_parse_decl(fp);
+    output_lex_decl(fp);
+    output_error_decl(fp);
+    write_section(fp, xdecls);
+
+    if (iflag)
+    {
+	output_externs(externs_file, global_vars);
+	if (!pure_parser)
+	    output_externs(externs_file, impure_vars);
+    }
+
+    if (iflag)
+    {
+	++outline;
+	fprintf(code_file, "#include \"%s\"\n", defines_file_name);
+	if (!dflag)
+	    output_defines(externs_file);
+    }
+    else
+    {
+	putc_code(code_file, '\n');
+	output_defines(code_file);
+    }
+
+    if (dflag)
+	output_defines(defines_file);
+
+    output_rule_data();
+    output_yydefred();
+    output_actions();
+    free_parser();
+    output_debug();
+    if (rflag)
+    {
+	output_prefix(code_file);
+	write_section(code_file, xdecls);
+	write_section(code_file, tables);
+    }
+    write_section(code_file, global_vars);
+    if (!pure_parser)
+    {
+	write_section(code_file, impure_vars);
+    }
+    write_section(code_file, hdr_defs);
+    if (!pure_parser)
+    {
+	write_section(code_file, hdr_vars);
+    }
+    output_trailing_text();
+    write_section(code_file, body_1);
+    if (pure_parser)
+    {
+	write_section(code_file, body_vars);
+    }
+    write_section(code_file, body_2);
+    output_yyerror_call("syntax error");
+    write_section(code_file, body_3);
+    output_semantic_actions();
+    write_section(code_file, trailer);
+    output_yyerror_call("yacc stack overflow");
+    write_section(code_file, trailer_2);
+}
+
+#ifdef NO_LEAKS
+void
+output_leaks(void)
+{
+    DO_FREE(tally);
+    DO_FREE(width);
+    DO_FREE(order);
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/byacc.spec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/byacc.spec	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,60 @@
+Summary: byacc - public domain Berkeley LALR Yacc parser generator
+%define AppProgram byacc
+%define AppVersion 20120115
+%define UseProgram yacc
+# $XTermId: byacc.spec,v 1.13 2012/01/15 19:30:29 tom Exp $
+Name: %{AppProgram}
+Version: %{AppVersion}
+Release: 1
+License: Public Domain, MIT
+Group: Applications/Development
+URL: ftp://invisible-island.net/%{AppProgram}
+Source0: %{AppProgram}-%{AppVersion}.tgz
+Packager: Thomas Dickey <dickey at invisible-island.net>
+
+%description
+This package provides a parser generator utility that reads a grammar
+specification from a file and generates an LR(1) parser for it.  The
+parsers consist of a set of LALR(1) parsing tables and a driver
+routine written in the C programming language.  It has a public domain
+license which includes the generated C.
+
+%prep
+
+%setup -q -n %{AppProgram}-%{AppVersion}
+
+%build
+
+INSTALL_PROGRAM=3D'${INSTALL}' \
+	./configure \
+		--program-prefix=3Db \
+		--target %{_target_platform} \
+		--prefix=3D%{_prefix} \
+		--bindir=3D%{_bindir} \
+		--libdir=3D%{_libdir} \
+		--mandir=3D%{_mandir}
+
+make
+
+%install
+[ "$RPM_BUILD_ROOT" !=3D "/" ] && rm -rf $RPM_BUILD_ROOT
+
+make install                    DESTDIR=3D$RPM_BUILD_ROOT
+( cd $RPM_BUILD_ROOT%{_bindir} && ln -s %{AppProgram} %{UseProgram} )
+
+strip $RPM_BUILD_ROOT%{_bindir}/%{AppProgram}
+
+%clean
+[ "$RPM_BUILD_ROOT" !=3D "/" ] && rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%{_prefix}/bin/%{AppProgram}
+%{_prefix}/bin/%{UseProgram}
+%{_mandir}/man1/%{AppProgram}.*
+
+%changelog
+# each patch should add its ChangeLog entries here
+
+* Sun Jun 06 2010 Thomas Dickey
+- initial version
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/chan=
gelog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/changelog	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,223 @@
+byacc (20120115) unstable; urgency=3Dlow
+
+  * add testcases, improve documentation for "-s" option.
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Fri, 13 Jan 2012 20:44=
:34 -0500
+
+byacc (20111219) unstable; urgency=3Dlow
+
+  * add "-s" option.
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Mon, 19 Dec 2011 20:54=
:09 -0500
+
+byacc (20110908) unstable; urgency=3Dlow
+
+  * add "-i" option.
+  * add error-check in reader.c
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Mon, 05 Sep 2011 20:05=
:51 -0400
+
+byacc (20101229) unstable; urgency=3Dlow
+
+  * fixes from Christos Zoulos
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Wed, 29 Dec 2010 13:03=
:50 -0500
+
+byacc (20101226) unstable; urgency=3Dlow
+
+  * portability fix for MinGW
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Sat, 25 Dec 2010 19:37=
:54 -0500
+
+byacc (20101127) unstable; urgency=3Dlow
+
+  * corrected yyerror use of %parse-param data
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Sat, 27 Nov 2010 12:32=
:00 -0500
+
+byacc (20101126) unstable; urgency=3Dlow
+
+  * additional fix to generated code to avoid symbol conflict
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Fri, 26 Nov 2010 04:23=
:08 -0500
+
+byacc (20101124) unstable; urgency=3Dlow
+
+  * amend fix for Red Hat #112617 to restore warning message.
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Mon, 22 Nov 2010 08:21=
:23 -0500
+
+byacc (20101122) unstable; urgency=3Dlow
+
+  * fix for generated header to avoid symbol conflict
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Mon, 22 Nov 2010 08:21=
:23 -0500
+
+byacc (20100610) unstable; urgency=3Dlow
+
+  * Add package scripts to upstream source, for test-builds.
+
+ -- Thomas E. Dickey <dickey at invisible-island.net>  Thu, 10 Jun 2010 08:59=
:11 -0400
+
+byacc (20100216-1) unstable; urgency=3Dlow
+
+  * New upstream release
+  * debian/source/format: Added using format "3.0 (quilt)"
+
+ -- Dave Beckett <dajobe at debian.org>  Tue, 20 Apr 2010 12:56:11 -0700
+
+byacc (20091027-1) unstable; urgency=3Dlow
+
+  * New upstream release
+  * debian/control:
+    - Updated to policy 3.8.4
+    - Add ${misc:Depends}
+
+ -- Dave Beckett <dajobe at debian.org>  Tue, 02 Feb 2010 21:36:34 -0800
+
+byacc (20090221-1) unstable; urgency=3Dlow
+
+  * New upstream release
+
+ -- Dave Beckett <dajobe at debian.org>  Thu, 26 Feb 2009 21:06:20 -0800
+
+byacc (20080826-1) unstable; urgency=3Dhigh
+
+  * New upstream release
+  * debian/patches/02-skeleton.patch: Removed - merged upstream
+  * debian/control: Updated to policy 3.8.0
+  * debian/preinst, debian/postrm: removed - empty (lintian)
+  * debian/watch: version 3 and make FTP passive
+  * Acknowledge NMU - thanks.
+
+ -- Dave Beckett <dajobe at debian.org>  Wed, 11 Sep 2008 23:58:00 -0700
+
+byacc (20070509-1.1) unstable; urgency=3Dhigh
+
+  * Non-maintainer upload.
+  * Fix stack overflow in skeleton.c with upstream patch.
+    Closes: #491182 aka CVE-2008-3196
+
+ -- Thomas Viehmann <tv at beamnet.de>  Sun, 24 Aug 2008 23:13:07 +0200
+
+byacc (20070509-1) unstable; urgency=3Dlow
+
+  * New upstream release
+  * debian/watch: Fix to use passive FTP
+  * debian/compat: added instead of use of DH_COMPAT in debian/rules
+
+ -- Dave Beckett <dajobe at debian.org>  Tue, 26 Jun 2007 22:39:45 -0700
+
+byacc (20050813-1) unstable; urgency=3Dlow
+
+  * New upstream release:
+    - Do not close union_file for -d option (Closes: #322858)
+
+ -- Dave Beckett <dajobe at debian.org>  Sun, 14 Aug 2005 10:14:12 +0100
+
+byacc (20050505-1) unstable; urgency=3Dlow
+
+  * New maintainer (Closes: #321377)
+  * Switch to new upstream and new source (Closes: #240662)
+  * debian/copyright: Update to new upstream and add source information
+    (Closes: #166300)
+  * Acknowledge fix in NMUs (Closes: #283174)
+  * New manual page does not have the formatting problem (Closes: #100947)
+  * Added debian/watch file.
+
+ -- Dave Beckett <dajobe at debian.org>  Fri,  5 Aug 2005 22:50:20 +0100
+
+byacc (1.9.1-1.1) unstable; urgency=3Dlow
+
+  * Remove alternative in prerm.  Closes: #283174
+
+ -- LaMont Jones <lamont at debian.org>  Fri, 26 Nov 2004 18:49:09 -0700
+
+byacc (1.9.1-1) unstable; urgency=3Dlow
+
+  * Maintainer upload.
+  * Fixed alternatives entry, closes: Bug#146195;
+  * Changed priority to "extra" at behest of Daniel Bungert,
+    closes: Bug#142271.
+  * Fixed awful packaging error which meant the test/ directory was exclud=
ed
+    from the orig.tar.gz.
+
+ -- Jason Henry Parker <henry at debian.org>  Fri, 27 Sep 2002 16:25:27 -0400
+
+byacc (1.9-13.1) unstable; urgency=3Dlow
+
+  * Non-maintainer upload
+  * Removed erraneous escapes in manpage - some data wasn't visable,
+    closes: Bug#100947
+  * Alternatives entry added, closes: Bug#113168
+  * Standards-version: 3.5.6
+  * Maintainer script cleaning
+
+ -- Daniel Bungert <drb at debian.org>  Fri, 29 Mar 2002 16:58:30 -0500
+
+byacc (1.9-13) unstable; urgency=3Dlow
+
+  * Applied patch from "Randolph Chung" <tausq at debian.org> to fix build pr=
oblems
+    on ia64, closes: Bug#91966
+
+ -- Jason Henry Parker <henry at debian.org>  Thu, 29 Mar 2001 21:41:19 +1000
+
+byacc (1.9-12) unstable; urgency=3Dlow
+
+  * Updated to latest version of debhelper, and Standards-Version: 3.2.1.0=
, closes: Bug#81444
+  * Added Build-Depends: debhelper, closes: Bug#70207
+  * Removed mktemp() calls in main.c
+ =20
+ -- Jason Henry Parker <henry at debian.org>  Mon, 18 Dec 2000 08:02:54 +1000
+
+byacc (1.9-11.7) unstable; urgency=3Dlow
+
+  * New maintainer.
+  * Updated to dh_make and standards version 2.4.0.0, no lintian errors
+    or warnings.
+  * Added several more files from the upstream distribution to
+    /usr/doc/byacc.
+
+ -- Jason Henry Parker <henry at debian.org>  Sat,  2 Jan 1999 03:04:17 +1000
+
+byacc (1.9-11.6) unstable; urgency=3Dlow
+
+  * Patch by <mdorman at law.miami.edu> to remove some
+    superfluous files that can interfere with the build process on other
+    architectures. (Bug #21607).
+
+ -- Vincent Renardias <vincent at waw.com>  Fri, 24 Apr 1998 19:56:58 +0200
+
+byacc (1.9-11.5) unstable; urgency=3Dlow
+
+  * Added 'binary-arch' target in debian/rules (Bug #12742).
+
+ -- Vincent Renardias <vincent at waw.com>  Sun, 9 Nov 1997 23:37:31 +0100
+
+byacc (1.9-11.4) unstable; urgency=3Dlow
+
+  * Cosmetic change (Fix bug #9623).
+
+ -- Vincent Renardias <vincent at waw.com>  Fri, 9 May 1997 16:30:24 +0200
+
+byacc (1.9-11.3) unstable; urgency=3Dlow
+
+  * Rebuilt with libc6.
+
+ -- Debian QA Group <debian-qa at lists.debian.org>  Thu, 1 May 1997 22:02:04=
 +0200
+
+byacc (1.9-11.2) unstable; urgency=3Dlow
+
+  * Orphaned the package at his maintainer's request (dgregor at coil.com).
+
+ -- Debian QA Group <debian-qa at lists.debian.org>  Sun, 20 Apr 1997 20:03:0=
3 +0200
+
+byacc (1.9-11.1) unstable; urgency=3Dlow
+
+  * Converted to new source format (Fixes #8085).
+  * Compressed manpage.
+  * Fixed to allow compilation on non-i386 (Fixes #3361).
+  * Added extended description (Fixes #3567).
+  * Added diversion to avoid conflict with bison (Fixes #8086).=20
+
+ -- Vincent Renardias <vincent at waw.com>  Sun, 20 Apr 1997 15:59:28 +0200
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/comp=
at
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/compat	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,1 @@
+5
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/cont=
rol
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/control	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,17 @@
+Source: byacc
+Maintainer: Dave Beckett <dajobe at debian.org>
+Section: devel
+Priority: extra
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>=3D 5)
+Homepage: http://invisible-island.net/byacc/
+
+Package: byacc
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: public domain Berkeley LALR Yacc parser generator
+ This package provides a parser generator utility that reads a grammar
+ specification from a file and generates an LR(1) parser for it.  The
+ parsers consist of a set of LALR(1) parsing tables and a driver
+ routine written in the C programming language.  It has a public domain
+ license which includes the generated C.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/copy=
right
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/copyright	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,120 @@
+Upstream source http://dickey.his.com/byacc/byacc.html
+
+Berkeley Yacc is in the public domain; changes made to it by the current
+maintainer are likewise unrestricted.  That applies to most of the files.
+A few files (currently those related to autoconf scripting) have other
+licenses as noted here.
+
+Current byacc upstream maintainer: Thomas Dickey <dickey at invisible-island.=
net>
+
+Public domain notice and no warranty:
+--------------------------------------------------------------------------=
-----
+    Berkeley Yacc is an LALR(1) parser generator.  Berkeley Yacc has been =
made
+as compatible as possible with AT&T Yacc.  Berkeley Yacc can accept any in=
put
+specification that conforms to the AT&T Yacc documentation.  Specifications
+that take advantage of undocumented features of AT&T Yacc will probably be
+rejected.
+
+    Berkeley Yacc is distributed with no warranty whatever.  The code
+is certain to contain errors.  Neither the author nor any contributor
+takes responsibility for any consequences of its use.
+
+    Berkeley Yacc is in the public domain.  The data structures and algori=
thms
+used in Berkeley Yacc are all either taken from documents available to the
+general public or are inventions of the author.  Anyone may freely distrib=
ute
+source or binary forms of Berkeley Yacc whether unchanged or modified.
+Distributers may charge whatever fees they can obtain for Berkeley Yacc.
+Programs generated by Berkeley Yacc may be distributed freely.
+
+    Please report bugs to
+
+			robert.corbett at eng.Sun.COM
+
+Include a small example if possible.  Please include the banner string from
+skeleton.c with the bug report.  Do not expect rapid responses.
+--------------------------------------------------------------------------=
-----
+
+Files: aclocal.m4
+Licence: other-BSD
+Copyright:  2004-2011,2012 by Thomas E. Dickey
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, distribute with modifications, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+   =20
+    The above copyright notice and this permission notice shall be included
+    in all copies or portions of the Software.
+   =20
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+    DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+    OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+    THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   =20
+    Except as contained in this notice, the name(s) of the above copyright
+    holders shall not be used in advertising or otherwise to promote the
+    sale, use or other dealings in this Software without prior written
+    authorization.
+
+Files: install-sh
+Copyright:  1994 X Consortium
+Licence: other-BSD
+    Permission is hereby granted, free of charge, to any person obtaining =
a copy
+    of this software and associated documentation files (the "Software"), =
to
+    deal in the Software without restriction, including without limitation=
 the
+    rights to use, copy, modify, merge, publish, distribute, sublicense, a=
nd/or
+    sell copies of the Software, and to permit persons to whom the Softwar=
e is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be include=
d in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRES=
S OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILIT=
Y,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHA=
LL THE
+    X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHET=
HER IN
+    AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN C=
ONNEC-
+    TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+    Except as contained in this notice, the name of the X Consortium shall=
 not
+    be used in advertising or otherwise to promote the sale, use or other =
deal-
+    ings in this Software without prior written authorization from the X C=
onsor-
+    tium.
+
+    FSF changes to this file are in the public domain.
+
+    Calling this script install-sh is preferred over install.sh, to prevent
+    `make' implicit rules from creating a file called install from it
+    when there is no Makefile.
+
+    This script is compatible with the BSD install script, but was written
+    from scratch.  It can only install one file at a time, a restriction
+    shared with many OS's install programs.
+
+Files: debian/*
+Copyright:  2012 Thomas E. Dickey
+Licence: other-BSD
+    Permission to use, copy, modify, and distribute this software and its
+    documentation for any purpose and without fee is hereby granted,
+    provided that the above copyright notice appear in all copies and that
+    both that copyright notice and this permission notice appear in
+    supporting documentation, and that the name of the above listed
+    copyright holder(s) not be used in advertising or publicity pertaining
+    to distribution of the software without specific, written prior
+    permission.
+
+    THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGA=
RD
+    TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
+    LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAG=
ES
+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL-2'
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/docs
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/docs	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,4 @@
+README
+ACKNOWLEDGEMENTS
+NEW_FEATURES
+NOTES
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/post=
inst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/postinst	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,15 @@
+#! /bin/sh
+# postinst script for byacc
+
+set -e
+
+if [ $1 !=3D "upgrade" ] ; then
+	update-alternatives \
+		--install /usr/bin/yacc yacc /usr/bin/byacc 80 \
+		--slave /usr/share/man/man1/yacc.1.gz yaccman \
+			/usr/share/man/man1/byacc.1.gz
+fi
+
+#DEBHELPER#
+
+exit 0
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/prerm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/prerm	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,12 @@
+#! /bin/sh
+# prerm script for byacc
+
+set -e
+
+if [ $1 !=3D "upgrade" ]; then
+	update-alternatives --remove yacc /usr/bin/byacc
+fi
+
+#DEBHELPER#
+
+exit 0
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/rules
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/rules	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,93 @@
+#!/usr/bin/make -f
+# MAde with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=3D1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?=3D $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?=3D $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+CFLAGS =3D
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+        CFLAGS +=3D -O0
+else
+        CFLAGS +=3D -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+        INSTALL_PROGRAM +=3D -s
+endif
+
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+
+	CFLAGS=3D"$(CFLAGS)" ./configure \
+		--host=3D$(DEB_HOST_GNU_TYPE) \
+		--build=3D$(DEB_BUILD_GNU_TYPE) \
+		--prefix=3D/usr \
+		--mandir=3D\$${prefix}/share/man \
+		--sysconfdir=3D/etc \
+		--program-transform-name=3D's,^,b,'
+
+	touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+	dh_testdir
+
+	$(MAKE)
+
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+
+	[ ! -f Makefile ] || $(MAKE) clean
+
+	rm -f configure-stamp build-stamp install-stamp \
+		config.cache config.h config.status config.log makefile
+
+	rm -f *.o yacc
+
+	dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	$(MAKE) install DESTDIR=3D$(CURDIR)/debian/byacc
+
+	touch install-stamp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# No binary-indep target.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs
+	dh_installexamples
+	dh_installchangelogs CHANGES
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install install-stamp
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/sour=
ce/format
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/source/format	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,1 @@
+3.0 (quilt)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/debian/watch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/debian/watch	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,4 @@
+version=3D3
+
+opts=3Dpassive ftp://invisible-island.net/byacc/byacc-(\d+)\.tgz \
+ debian  uupdate
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/pkgsrc/DESCR
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/pkgsrc/DESCR	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,6 @@
+Berkeley Yacc (byacc) is a LALR(1) parser generator.  Berkeley Yacc
+has been made as compatible as possible with AT&T Yacc.  Berkeley
+Yacc can accept any input specification that conforms to the AT&T
+Yacc documentation.
+
+Some programs depend on a byacc (instead of bison).
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/pkgsrc/Make=
file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/pkgsrc/Makefile	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,19 @@
+# $NetBSD: Makefile,v 1.9 2008/07/24 17:13:00 tonnerre Exp $
+#
+
+DISTNAME=3D	byacc-20050813
+PKGREVISION=3D	1
+CATEGORIES=3D	devel
+MASTER_SITES=3D	ftp://invisible-island.net/byacc/
+EXTRACT_SUFX=3D	.tgz
+
+MAINTAINER=3D	pkgsrc-users at NetBSD.org
+HOMEPAGE=3D	http://dickey.his.com/byacc/byacc.html
+COMMENT=3D	Berkeley Yacc
+
+PKG_DESTDIR_SUPPORT=3D	user-destdir
+
+GNU_CONFIGURE=3D	YES
+MAKE_FILE=3D	makefile
+
+.include "../../mk/bsd.pkg.mk"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/pkgsrc/PLIST
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/pkgsrc/PLIST	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+ at comment $NetBSD: PLIST,v 1.2 2005/04/13 14:11:54 wiz Exp $
+bin/yacc
+man/man1/yacc.1
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/package/pkgsrc/dist=
info
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/package/pkgsrc/distinfo	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,6 @@
+$NetBSD: distinfo,v 1.4 2008/07/24 17:13:00 tonnerre Exp $
+
+SHA1 (byacc-20050813.tgz) =3D 3258494f3422eb3150944c1823af1c9c2c386062
+RMD160 (byacc-20050813.tgz) =3D 3ee159857a79025a83e2b0807577925fe460f816
+Size (byacc-20050813.tgz) =3D 138684 bytes
+SHA1 (patch-aa) =3D decae78775a5e0f1e1f7aaaa258da53903aa1f7a
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/reader.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/reader.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,2254 @@
+/* $Id: reader.c,v 1.33 2011/09/06 22:56:53 tom Exp $ */
+
+#include "defs.h"
+
+/*  The line size must be a positive integer.  One hundred was chosen	*/
+/*  because few lines in Yacc input grammars exceed 100 characters.	*/
+/*  Note that if a line exceeds LINESIZE characters, the line buffer	*/
+/*  will be expanded to accomodate it.					*/
+
+#define LINESIZE 100
+
+#define L_CURL '{'
+#define R_CURL '}'
+
+static void start_rule(bucket *bp, int s_lineno);
+
+static char *cache;
+static int cinc, cache_size;
+
+int ntags;
+static int tagmax;
+static char **tag_table;
+
+static char saw_eof;
+char unionized;
+char *cptr, *line;
+static int linesize;
+
+static bucket *goal;
+static Value_t prec;
+static int gensym;
+static char last_was_action;
+
+static int maxitems;
+static bucket **pitem;
+
+static int maxrules;
+static bucket **plhs;
+
+static size_t name_pool_size;
+static char *name_pool;
+
+char line_format[] =3D "#line %d \"%s\"\n";
+
+param *lex_param;
+param *parse_param;
+
+static void
+cachec(int c)
+{
+    assert(cinc >=3D 0);
+    if (cinc >=3D cache_size)
+    {
+	cache_size +=3D 256;
+	cache =3D REALLOC(cache, cache_size);
+	NO_SPACE(cache);
+    }
+    cache[cinc] =3D (char)c;
+    ++cinc;
+}
+
+static void
+get_line(void)
+{
+    FILE *f =3D input_file;
+    int c;
+    int i;
+
+    if (saw_eof || (c =3D getc(f)) =3D=3D EOF)
+    {
+	if (line)
+	{
+	    FREE(line);
+	    line =3D 0;
+	}
+	cptr =3D 0;
+	saw_eof =3D 1;
+	return;
+    }
+
+    if (line =3D=3D 0 || linesize !=3D (LINESIZE + 1))
+    {
+	if (line)
+	    FREE(line);
+	linesize =3D LINESIZE + 1;
+	line =3D MALLOC(linesize);
+	NO_SPACE(line);
+    }
+
+    i =3D 0;
+    ++lineno;
+    for (;;)
+    {
+	line[i] =3D (char)c;
+	if (c =3D=3D '\n')
+	{
+	    cptr =3D line;
+	    return;
+	}
+	if (++i >=3D linesize)
+	{
+	    linesize +=3D LINESIZE;
+	    line =3D REALLOC(line, linesize);
+	    NO_SPACE(line);
+	}
+	c =3D getc(f);
+	if (c =3D=3D EOF)
+	{
+	    line[i] =3D '\n';
+	    saw_eof =3D 1;
+	    cptr =3D line;
+	    return;
+	}
+    }
+}
+
+static char *
+dup_line(void)
+{
+    char *p, *s, *t;
+
+    if (line =3D=3D 0)
+	return (0);
+    s =3D line;
+    while (*s !=3D '\n')
+	++s;
+    p =3D MALLOC(s - line + 1);
+    NO_SPACE(p);
+
+    s =3D line;
+    t =3D p;
+    while ((*t++ =3D *s++) !=3D '\n')
+	continue;
+    return (p);
+}
+
+static void
+skip_comment(void)
+{
+    char *s;
+
+    int st_lineno =3D lineno;
+    char *st_line =3D dup_line();
+    char *st_cptr =3D st_line + (cptr - line);
+
+    s =3D cptr + 2;
+    for (;;)
+    {
+	if (*s =3D=3D '*' && s[1] =3D=3D '/')
+	{
+	    cptr =3D s + 2;
+	    FREE(st_line);
+	    return;
+	}
+	if (*s =3D=3D '\n')
+	{
+	    get_line();
+	    if (line =3D=3D 0)
+		unterminated_comment(st_lineno, st_line, st_cptr);
+	    s =3D cptr;
+	}
+	else
+	    ++s;
+    }
+}
+
+static int
+nextc(void)
+{
+    char *s;
+
+    if (line =3D=3D 0)
+    {
+	get_line();
+	if (line =3D=3D 0)
+	    return (EOF);
+    }
+
+    s =3D cptr;
+    for (;;)
+    {
+	switch (*s)
+	{
+	case '\n':
+	    get_line();
+	    if (line =3D=3D 0)
+		return (EOF);
+	    s =3D cptr;
+	    break;
+
+	case ' ':
+	case '\t':
+	case '\f':
+	case '\r':
+	case '\v':
+	case ',':
+	case ';':
+	    ++s;
+	    break;
+
+	case '\\':
+	    cptr =3D s;
+	    return ('%');
+
+	case '/':
+	    if (s[1] =3D=3D '*')
+	    {
+		cptr =3D s;
+		skip_comment();
+		s =3D cptr;
+		break;
+	    }
+	    else if (s[1] =3D=3D '/')
+	    {
+		get_line();
+		if (line =3D=3D 0)
+		    return (EOF);
+		s =3D cptr;
+		break;
+	    }
+	    /* FALLTHRU */
+
+	default:
+	    cptr =3D s;
+	    return (*s);
+	}
+    }
+}
+
+/*
+ * Compare keyword to cached token, treating '_' and '-' the same.  Some
+ * grammars rely upon this misfeature.
+ */
+static int
+matchec(const char *name)
+{
+    const char *p =3D cache;
+    const char *q =3D name;
+    int code =3D 0;	/* assume mismatch */
+
+    while (*p !=3D '\0' && *q !=3D '\0')
+    {
+	char a =3D *p++;
+	char b =3D *q++;
+	if (a =3D=3D '_')
+	    a =3D '-';
+	if (b =3D=3D '_')
+	    b =3D '-';
+	if (a !=3D b)
+	    break;
+	if (*p =3D=3D '\0' && *q =3D=3D '\0')
+	{
+	    code =3D 1;
+	    break;
+	}
+    }
+    return code;
+}
+
+static int
+keyword(void)
+{
+    int c;
+    char *t_cptr =3D cptr;
+
+    c =3D *++cptr;
+    if (isalpha(c))
+    {
+	cinc =3D 0;
+	for (;;)
+	{
+	    if (isalpha(c))
+	    {
+		if (isupper(c))
+		    c =3D tolower(c);
+		cachec(c);
+	    }
+	    else if (isdigit(c)
+		     || c =3D=3D '-'
+		     || c =3D=3D '_'
+		     || c =3D=3D '.'
+		     || c =3D=3D '$')
+	    {
+		cachec(c);
+	    }
+	    else
+	    {
+		break;
+	    }
+	    c =3D *++cptr;
+	}
+	cachec(NUL);
+
+	if (matchec("token") || matchec("term"))
+	    return (TOKEN);
+	if (matchec("type"))
+	    return (TYPE);
+	if (matchec("left"))
+	    return (LEFT);
+	if (matchec("right"))
+	    return (RIGHT);
+	if (matchec("nonassoc") || matchec("binary"))
+	    return (NONASSOC);
+	if (matchec("start"))
+	    return (START);
+	if (matchec("union"))
+	    return (UNION);
+	if (matchec("ident"))
+	    return (IDENT);
+	if (matchec("expect"))
+	    return (EXPECT);
+	if (matchec("expect-rr"))
+	    return (EXPECT_RR);
+	if (matchec("pure-parser"))
+	    return (PURE_PARSER);
+	if (matchec("parse-param"))
+	    return (PARSE_PARAM);
+	if (matchec("lex-param"))
+	    return (LEX_PARAM);
+	if (matchec("yacc"))
+	    return (POSIX_YACC);
+    }
+    else
+    {
+	++cptr;
+	if (c =3D=3D L_CURL)
+	    return (TEXT);
+	if (c =3D=3D '%' || c =3D=3D '\\')
+	    return (MARK);
+	if (c =3D=3D '<')
+	    return (LEFT);
+	if (c =3D=3D '>')
+	    return (RIGHT);
+	if (c =3D=3D '0')
+	    return (TOKEN);
+	if (c =3D=3D '2')
+	    return (NONASSOC);
+    }
+    syntax_error(lineno, line, t_cptr);
+    /*NOTREACHED */
+    return (-1);
+}
+
+static void
+copy_ident(void)
+{
+    int c;
+    FILE *f =3D output_file;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c !=3D '"')
+	syntax_error(lineno, line, cptr);
+    ++outline;
+    fprintf(f, "#ident \"");
+    for (;;)
+    {
+	c =3D *++cptr;
+	if (c =3D=3D '\n')
+	{
+	    fprintf(f, "\"\n");
+	    return;
+	}
+	putc(c, f);
+	if (c =3D=3D '"')
+	{
+	    putc('\n', f);
+	    ++cptr;
+	    return;
+	}
+    }
+}
+
+static void
+copy_text(void)
+{
+    int c;
+    int quote;
+    FILE *f =3D text_file;
+    int need_newline =3D 0;
+    int t_lineno =3D lineno;
+    char *t_line =3D dup_line();
+    char *t_cptr =3D t_line + (cptr - line - 2);
+
+    if (*cptr =3D=3D '\n')
+    {
+	get_line();
+	if (line =3D=3D 0)
+	    unterminated_text(t_lineno, t_line, t_cptr);
+    }
+    if (!lflag)
+	fprintf(f, line_format, lineno, input_file_name);
+
+  loop:
+    c =3D *cptr++;
+    switch (c)
+    {
+    case '\n':
+      next_line:
+	putc('\n', f);
+	need_newline =3D 0;
+	get_line();
+	if (line)
+	    goto loop;
+	unterminated_text(t_lineno, t_line, t_cptr);
+
+    case '\'':
+    case '"':
+	{
+	    int s_lineno =3D lineno;
+	    char *s_line =3D dup_line();
+	    char *s_cptr =3D s_line + (cptr - line - 1);
+
+	    quote =3D c;
+	    putc(c, f);
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc(c, f);
+		if (c =3D=3D quote)
+		{
+		    need_newline =3D 1;
+		    FREE(s_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		    unterminated_string(s_lineno, s_line, s_cptr);
+		if (c =3D=3D '\\')
+		{
+		    c =3D *cptr++;
+		    putc(c, f);
+		    if (c =3D=3D '\n')
+		    {
+			get_line();
+			if (line =3D=3D 0)
+			    unterminated_string(s_lineno, s_line, s_cptr);
+		    }
+		}
+	    }
+	}
+
+    case '/':
+	putc(c, f);
+	need_newline =3D 1;
+	c =3D *cptr;
+	if (c =3D=3D '/')
+	{
+	    putc('*', f);
+	    while ((c =3D *++cptr) !=3D '\n')
+	    {
+		if (c =3D=3D '*' && cptr[1] =3D=3D '/')
+		    fprintf(f, "* ");
+		else
+		    putc(c, f);
+	    }
+	    fprintf(f, "*/");
+	    goto next_line;
+	}
+	if (c =3D=3D '*')
+	{
+	    int c_lineno =3D lineno;
+	    char *c_line =3D dup_line();
+	    char *c_cptr =3D c_line + (cptr - line - 1);
+
+	    putc('*', f);
+	    ++cptr;
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc(c, f);
+		if (c =3D=3D '*' && *cptr =3D=3D '/')
+		{
+		    putc('/', f);
+		    ++cptr;
+		    FREE(c_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		{
+		    get_line();
+		    if (line =3D=3D 0)
+			unterminated_comment(c_lineno, c_line, c_cptr);
+		}
+	    }
+	}
+	need_newline =3D 1;
+	goto loop;
+
+    case '%':
+    case '\\':
+	if (*cptr =3D=3D R_CURL)
+	{
+	    if (need_newline)
+		putc('\n', f);
+	    ++cptr;
+	    FREE(t_line);
+	    return;
+	}
+	/* FALLTHRU */
+
+    default:
+	putc(c, f);
+	need_newline =3D 1;
+	goto loop;
+    }
+}
+
+static void
+puts_both(const char *s)
+{
+    fputs(s, text_file);
+    if (dflag)
+	fputs(s, union_file);
+}
+
+static void
+putc_both(int c)
+{
+    putc(c, text_file);
+    if (dflag)
+	putc(c, union_file);
+}
+
+static void
+copy_union(void)
+{
+    int c;
+    int quote;
+    int depth;
+    int u_lineno =3D lineno;
+    char *u_line =3D dup_line();
+    char *u_cptr =3D u_line + (cptr - line - 6);
+
+    if (unionized)
+	over_unionized(cptr - 6);
+    unionized =3D 1;
+
+    if (!lflag)
+	fprintf(text_file, line_format, lineno, input_file_name);
+
+    puts_both("#ifdef YYSTYPE\n");
+    puts_both("#undef  YYSTYPE_IS_DECLARED\n");
+    puts_both("#define YYSTYPE_IS_DECLARED 1\n");
+    puts_both("#endif\n");
+    puts_both("#ifndef YYSTYPE_IS_DECLARED\n");
+    puts_both("#define YYSTYPE_IS_DECLARED 1\n");
+    puts_both("typedef union");
+
+    depth =3D 0;
+  loop:
+    c =3D *cptr++;
+    putc_both(c);
+    switch (c)
+    {
+    case '\n':
+      next_line:
+	get_line();
+	if (line =3D=3D 0)
+	    unterminated_union(u_lineno, u_line, u_cptr);
+	goto loop;
+
+    case L_CURL:
+	++depth;
+	goto loop;
+
+    case R_CURL:
+	if (--depth =3D=3D 0)
+	{
+	    puts_both(" YYSTYPE;\n");
+	    puts_both("#endif /* !YYSTYPE_IS_DECLARED */\n");
+	    FREE(u_line);
+	    return;
+	}
+	goto loop;
+
+    case '\'':
+    case '"':
+	{
+	    int s_lineno =3D lineno;
+	    char *s_line =3D dup_line();
+	    char *s_cptr =3D s_line + (cptr - line - 1);
+
+	    quote =3D c;
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc_both(c);
+		if (c =3D=3D quote)
+		{
+		    FREE(s_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		    unterminated_string(s_lineno, s_line, s_cptr);
+		if (c =3D=3D '\\')
+		{
+		    c =3D *cptr++;
+		    putc_both(c);
+		    if (c =3D=3D '\n')
+		    {
+			get_line();
+			if (line =3D=3D 0)
+			    unterminated_string(s_lineno, s_line, s_cptr);
+		    }
+		}
+	    }
+	}
+
+    case '/':
+	c =3D *cptr;
+	if (c =3D=3D '/')
+	{
+	    putc_both('*');
+	    while ((c =3D *++cptr) !=3D '\n')
+	    {
+		if (c =3D=3D '*' && cptr[1] =3D=3D '/')
+		{
+		    puts_both("* ");
+		}
+		else
+		{
+		    putc_both(c);
+		}
+	    }
+	    puts_both("*/\n");
+	    goto next_line;
+	}
+	if (c =3D=3D '*')
+	{
+	    int c_lineno =3D lineno;
+	    char *c_line =3D dup_line();
+	    char *c_cptr =3D c_line + (cptr - line - 1);
+
+	    putc_both('*');
+	    ++cptr;
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc_both(c);
+		if (c =3D=3D '*' && *cptr =3D=3D '/')
+		{
+		    putc_both('/');
+		    ++cptr;
+		    FREE(c_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		{
+		    get_line();
+		    if (line =3D=3D 0)
+			unterminated_comment(c_lineno, c_line, c_cptr);
+		}
+	    }
+	}
+	goto loop;
+
+    default:
+	goto loop;
+    }
+}
+
+/*
+ * Keep a linked list of parameters
+ */
+static void
+copy_param(int k)
+{
+    char *buf;
+    int c;
+    param *head, *p;
+    int i;
+    int name, type2;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c !=3D '{')
+	goto out;
+    cptr++;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c =3D=3D '}')
+	goto out;
+
+    buf =3D MALLOC(linesize);
+    NO_SPACE(buf);
+
+    for (i =3D 0; (c =3D *cptr++) !=3D '}'; i++)
+    {
+	if (c =3D=3D '\0')
+	    missing_brace();
+	if (c =3D=3D EOF)
+	    unexpected_EOF();
+	buf[i] =3D (char)c;
+    }
+
+    if (i =3D=3D 0)
+	goto out;
+
+    buf[i--] =3D '\0';
+    while (i >=3D 0 && isspace(UCH(buf[i])))
+	buf[i--] =3D '\0';
+
+    if (buf[i] =3D=3D ']')
+    {
+	int level =3D 1;
+	while (i >=3D 0 && level > 0 && buf[i] !=3D '[')
+	{
+	    if (buf[i] =3D=3D ']')
+		++level;
+	    else if (buf[i] =3D=3D '[')
+		--level;
+	    i--;
+	}
+	if (i <=3D 0)
+	    unexpected_EOF();
+	type2 =3D i--;
+    }
+    else
+    {
+	type2 =3D i + 1;
+    }
+
+    while (i >=3D 0 && (isalnum(UCH(buf[i])) ||
+		      UCH(buf[i]) =3D=3D '_'))
+	i--;
+
+    if (!isspace(UCH(buf[i])) && buf[i] !=3D '*')
+	goto out;
+
+    name =3D i + 1;
+
+    p =3D MALLOC(sizeof(*p));
+    NO_SPACE(p);
+
+    p->type2 =3D strdup(buf + type2);
+    NO_SPACE(p->type2);
+
+    buf[type2] =3D '\0';
+
+    p->name =3D strdup(buf + name);
+    NO_SPACE(p->name);
+
+    buf[name] =3D '\0';
+    p->type =3D buf;
+
+    if (k =3D=3D LEX_PARAM)
+	head =3D lex_param;
+    else
+	head =3D parse_param;
+
+    if (head !=3D NULL)
+    {
+	while (head->next)
+	    head =3D head->next;
+	head->next =3D p;
+    }
+    else
+    {
+	if (k =3D=3D LEX_PARAM)
+	    lex_param =3D p;
+	else
+	    parse_param =3D p;
+    }
+    p->next =3D NULL;
+    return;
+
+  out:
+    syntax_error(lineno, line, cptr);
+}
+
+static int
+hexval(int c)
+{
+    if (c >=3D '0' && c <=3D '9')
+	return (c - '0');
+    if (c >=3D 'A' && c <=3D 'F')
+	return (c - 'A' + 10);
+    if (c >=3D 'a' && c <=3D 'f')
+	return (c - 'a' + 10);
+    return (-1);
+}
+
+static bucket *
+get_literal(void)
+{
+    int c, quote;
+    int i;
+    int n;
+    char *s;
+    bucket *bp;
+    int s_lineno =3D lineno;
+    char *s_line =3D dup_line();
+    char *s_cptr =3D s_line + (cptr - line);
+
+    quote =3D *cptr++;
+    cinc =3D 0;
+    for (;;)
+    {
+	c =3D *cptr++;
+	if (c =3D=3D quote)
+	    break;
+	if (c =3D=3D '\n')
+	    unterminated_string(s_lineno, s_line, s_cptr);
+	if (c =3D=3D '\\')
+	{
+	    char *c_cptr =3D cptr - 1;
+
+	    c =3D *cptr++;
+	    switch (c)
+	    {
+	    case '\n':
+		get_line();
+		if (line =3D=3D 0)
+		    unterminated_string(s_lineno, s_line, s_cptr);
+		continue;
+
+	    case '0':
+	    case '1':
+	    case '2':
+	    case '3':
+	    case '4':
+	    case '5':
+	    case '6':
+	    case '7':
+		n =3D c - '0';
+		c =3D *cptr;
+		if (IS_OCTAL(c))
+		{
+		    n =3D (n << 3) + (c - '0');
+		    c =3D *++cptr;
+		    if (IS_OCTAL(c))
+		    {
+			n =3D (n << 3) + (c - '0');
+			++cptr;
+		    }
+		}
+		if (n > MAXCHAR)
+		    illegal_character(c_cptr);
+		c =3D n;
+		break;
+
+	    case 'x':
+		c =3D *cptr++;
+		n =3D hexval(c);
+		if (n < 0 || n >=3D 16)
+		    illegal_character(c_cptr);
+		for (;;)
+		{
+		    c =3D *cptr;
+		    i =3D hexval(c);
+		    if (i < 0 || i >=3D 16)
+			break;
+		    ++cptr;
+		    n =3D (n << 4) + i;
+		    if (n > MAXCHAR)
+			illegal_character(c_cptr);
+		}
+		c =3D n;
+		break;
+
+	    case 'a':
+		c =3D 7;
+		break;
+	    case 'b':
+		c =3D '\b';
+		break;
+	    case 'f':
+		c =3D '\f';
+		break;
+	    case 'n':
+		c =3D '\n';
+		break;
+	    case 'r':
+		c =3D '\r';
+		break;
+	    case 't':
+		c =3D '\t';
+		break;
+	    case 'v':
+		c =3D '\v';
+		break;
+	    }
+	}
+	cachec(c);
+    }
+    FREE(s_line);
+
+    n =3D cinc;
+    s =3D MALLOC(n);
+    NO_SPACE(s);
+
+    for (i =3D 0; i < n; ++i)
+	s[i] =3D cache[i];
+
+    cinc =3D 0;
+    if (n =3D=3D 1)
+	cachec('\'');
+    else
+	cachec('"');
+
+    for (i =3D 0; i < n; ++i)
+    {
+	c =3D UCH(s[i]);
+	if (c =3D=3D '\\' || c =3D=3D cache[0])
+	{
+	    cachec('\\');
+	    cachec(c);
+	}
+	else if (isprint(c))
+	    cachec(c);
+	else
+	{
+	    cachec('\\');
+	    switch (c)
+	    {
+	    case 7:
+		cachec('a');
+		break;
+	    case '\b':
+		cachec('b');
+		break;
+	    case '\f':
+		cachec('f');
+		break;
+	    case '\n':
+		cachec('n');
+		break;
+	    case '\r':
+		cachec('r');
+		break;
+	    case '\t':
+		cachec('t');
+		break;
+	    case '\v':
+		cachec('v');
+		break;
+	    default:
+		cachec(((c >> 6) & 7) + '0');
+		cachec(((c >> 3) & 7) + '0');
+		cachec((c & 7) + '0');
+		break;
+	    }
+	}
+    }
+
+    if (n =3D=3D 1)
+	cachec('\'');
+    else
+	cachec('"');
+
+    cachec(NUL);
+    bp =3D lookup(cache);
+    bp->class =3D TERM;
+    if (n =3D=3D 1 && bp->value =3D=3D UNDEFINED)
+	bp->value =3D UCH(*s);
+    FREE(s);
+
+    return (bp);
+}
+
+static int
+is_reserved(char *name)
+{
+    char *s;
+
+    if (strcmp(name, ".") =3D=3D 0 ||
+	strcmp(name, "$accept") =3D=3D 0 ||
+	strcmp(name, "$end") =3D=3D 0)
+	return (1);
+
+    if (name[0] =3D=3D '$' && name[1] =3D=3D '$' && isdigit(UCH(name[2])))
+    {
+	s =3D name + 3;
+	while (isdigit(UCH(*s)))
+	    ++s;
+	if (*s =3D=3D NUL)
+	    return (1);
+    }
+
+    return (0);
+}
+
+static bucket *
+get_name(void)
+{
+    int c;
+
+    cinc =3D 0;
+    for (c =3D *cptr; IS_IDENT(c); c =3D *++cptr)
+	cachec(c);
+    cachec(NUL);
+
+    if (is_reserved(cache))
+	used_reserved(cache);
+
+    return (lookup(cache));
+}
+
+static Value_t
+get_number(void)
+{
+    int c;
+    Value_t n;
+
+    n =3D 0;
+    for (c =3D *cptr; isdigit(c); c =3D *++cptr)
+	n =3D (Value_t) (10 * n + (c - '0'));
+
+    return (n);
+}
+
+static char *
+get_tag(void)
+{
+    int c;
+    int i;
+    char *s;
+    int t_lineno =3D lineno;
+    char *t_line =3D dup_line();
+    char *t_cptr =3D t_line + (cptr - line);
+
+    ++cptr;
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (!isalpha(c) && c !=3D '_' && c !=3D '$')
+	illegal_tag(t_lineno, t_line, t_cptr);
+
+    cinc =3D 0;
+    do
+    {
+	cachec(c);
+	c =3D *++cptr;
+    }
+    while (IS_IDENT(c));
+    cachec(NUL);
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c !=3D '>')
+	illegal_tag(t_lineno, t_line, t_cptr);
+    ++cptr;
+
+    for (i =3D 0; i < ntags; ++i)
+    {
+	if (strcmp(cache, tag_table[i]) =3D=3D 0)
+	{
+	    FREE(t_line);
+	    return (tag_table[i]);
+	}
+    }
+
+    if (ntags >=3D tagmax)
+    {
+	tagmax +=3D 16;
+	tag_table =3D (char **)
+	    (tag_table
+	     ? REALLOC(tag_table, (unsigned)tagmax * sizeof(char *))
+	     : MALLOC((unsigned)tagmax * sizeof(char *)));
+	NO_SPACE(tag_table);
+    }
+
+    s =3D MALLOC(cinc);
+    NO_SPACE(s);
+
+    strcpy(s, cache);
+    tag_table[ntags] =3D s;
+    ++ntags;
+    FREE(t_line);
+    return (s);
+}
+
+static void
+declare_tokens(int assoc)
+{
+    int c;
+    bucket *bp;
+    Value_t value;
+    char *tag =3D 0;
+
+    if (assoc !=3D TOKEN)
+	++prec;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c =3D=3D '<')
+    {
+	tag =3D get_tag();
+	c =3D nextc();
+	if (c =3D=3D EOF)
+	    unexpected_EOF();
+    }
+
+    for (;;)
+    {
+	if (isalpha(c) || c =3D=3D '_' || c =3D=3D '.' || c =3D=3D '$')
+	    bp =3D get_name();
+	else if (c =3D=3D '\'' || c =3D=3D '"')
+	    bp =3D get_literal();
+	else
+	    return;
+
+	if (bp =3D=3D goal)
+	    tokenized_start(bp->name);
+	bp->class =3D TERM;
+
+	if (tag)
+	{
+	    if (bp->tag && tag !=3D bp->tag)
+		retyped_warning(bp->name);
+	    bp->tag =3D tag;
+	}
+
+	if (assoc !=3D TOKEN)
+	{
+	    if (bp->prec && prec !=3D bp->prec)
+		reprec_warning(bp->name);
+	    bp->assoc =3D (Assoc_t) assoc;
+	    bp->prec =3D prec;
+	}
+
+	c =3D nextc();
+	if (c =3D=3D EOF)
+	    unexpected_EOF();
+
+	if (isdigit(c))
+	{
+	    value =3D get_number();
+	    if (bp->value !=3D UNDEFINED && value !=3D bp->value)
+		revalued_warning(bp->name);
+	    bp->value =3D value;
+	    c =3D nextc();
+	    if (c =3D=3D EOF)
+		unexpected_EOF();
+	}
+    }
+}
+
+/*
+ * %expect requires special handling
+ * as it really isn't part of the yacc
+ * grammar only a flag for yacc proper.
+ */
+static void
+declare_expect(int assoc)
+{
+    int c;
+
+    if (assoc !=3D EXPECT && assoc !=3D EXPECT_RR)
+	++prec;
+
+    /*
+     * Stay away from nextc - doesn't
+     * detect EOL and will read to EOF.
+     */
+    c =3D *++cptr;
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+
+    for (;;)
+    {
+	if (isdigit(c))
+	{
+	    if (assoc =3D=3D EXPECT)
+		SRexpect =3D get_number();
+	    else
+		RRexpect =3D get_number();
+	    break;
+	}
+	/*
+	 * Looking for number before EOL.
+	 * Spaces, tabs, and numbers are ok,
+	 * words, punc., etc. are syntax errors.
+	 */
+	else if (c =3D=3D '\n' || isalpha(c) || !isspace(c))
+	{
+	    syntax_error(lineno, line, cptr);
+	}
+	else
+	{
+	    c =3D *++cptr;
+	    if (c =3D=3D EOF)
+		unexpected_EOF();
+	}
+    }
+}
+
+static void
+declare_types(void)
+{
+    int c;
+    bucket *bp;
+    char *tag;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c !=3D '<')
+	syntax_error(lineno, line, cptr);
+    tag =3D get_tag();
+
+    for (;;)
+    {
+	c =3D nextc();
+	if (isalpha(c) || c =3D=3D '_' || c =3D=3D '.' || c =3D=3D '$')
+	    bp =3D get_name();
+	else if (c =3D=3D '\'' || c =3D=3D '"')
+	    bp =3D get_literal();
+	else
+	    return;
+
+	if (bp->tag && tag !=3D bp->tag)
+	    retyped_warning(bp->name);
+	bp->tag =3D tag;
+    }
+}
+
+static void
+declare_start(void)
+{
+    int c;
+    bucket *bp;
+
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (!isalpha(c) && c !=3D '_' && c !=3D '.' && c !=3D '$')
+	syntax_error(lineno, line, cptr);
+    bp =3D get_name();
+    if (bp->class =3D=3D TERM)
+	terminal_start(bp->name);
+    if (goal && goal !=3D bp)
+	restarted_warning();
+    goal =3D bp;
+}
+
+static void
+read_declarations(void)
+{
+    int c, k;
+
+    cache_size =3D 256;
+    cache =3D MALLOC(cache_size);
+    NO_SPACE(cache);
+
+    for (;;)
+    {
+	c =3D nextc();
+	if (c =3D=3D EOF)
+	    unexpected_EOF();
+	if (c !=3D '%')
+	    syntax_error(lineno, line, cptr);
+	switch (k =3D keyword())
+	{
+	case MARK:
+	    return;
+
+	case IDENT:
+	    copy_ident();
+	    break;
+
+	case TEXT:
+	    copy_text();
+	    break;
+
+	case UNION:
+	    copy_union();
+	    break;
+
+	case TOKEN:
+	case LEFT:
+	case RIGHT:
+	case NONASSOC:
+	    declare_tokens(k);
+	    break;
+
+	case EXPECT:
+	case EXPECT_RR:
+	    declare_expect(k);
+	    break;
+
+	case TYPE:
+	    declare_types();
+	    break;
+
+	case START:
+	    declare_start();
+	    break;
+
+	case PURE_PARSER:
+	    pure_parser =3D 1;
+	    break;
+
+	case PARSE_PARAM:
+	case LEX_PARAM:
+	    copy_param(k);
+	    break;
+
+	case POSIX_YACC:
+	    /* noop for bison compatibility. byacc is already designed to be posix
+	     * yacc compatible. */
+	    break;
+	}
+    }
+}
+
+static void
+initialize_grammar(void)
+{
+    nitems =3D 4;
+    maxitems =3D 300;
+
+    pitem =3D (bucket **)MALLOC((unsigned)maxitems * sizeof(bucket *));
+    NO_SPACE(pitem);
+
+    pitem[0] =3D 0;
+    pitem[1] =3D 0;
+    pitem[2] =3D 0;
+    pitem[3] =3D 0;
+
+    nrules =3D 3;
+    maxrules =3D 100;
+
+    plhs =3D (bucket **)MALLOC((unsigned)maxrules * sizeof(bucket *));
+    NO_SPACE(plhs);
+
+    plhs[0] =3D 0;
+    plhs[1] =3D 0;
+    plhs[2] =3D 0;
+
+    rprec =3D (short *)MALLOC((unsigned)maxrules * sizeof(short));
+    NO_SPACE(rprec);
+
+    rprec[0] =3D 0;
+    rprec[1] =3D 0;
+    rprec[2] =3D 0;
+
+    rassoc =3D (char *)MALLOC((unsigned)maxrules * sizeof(char));
+    NO_SPACE(rassoc);
+
+    rassoc[0] =3D TOKEN;
+    rassoc[1] =3D TOKEN;
+    rassoc[2] =3D TOKEN;
+}
+
+static void
+expand_items(void)
+{
+    maxitems +=3D 300;
+    pitem =3D (bucket **)REALLOC(pitem, (unsigned)maxitems * sizeof(bucket=
 *));
+    NO_SPACE(pitem);
+}
+
+static void
+expand_rules(void)
+{
+    maxrules +=3D 100;
+
+    plhs =3D (bucket **)REALLOC(plhs, (unsigned)maxrules * sizeof(bucket *=
));
+    NO_SPACE(plhs);
+
+    rprec =3D (short *)REALLOC(rprec, (unsigned)maxrules * sizeof(short));
+    NO_SPACE(rprec);
+
+    rassoc =3D (char *)REALLOC(rassoc, (unsigned)maxrules * sizeof(char));
+    NO_SPACE(rassoc);
+}
+
+static void
+advance_to_start(void)
+{
+    int c;
+    bucket *bp;
+    char *s_cptr;
+    int s_lineno;
+
+    for (;;)
+    {
+	c =3D nextc();
+	if (c !=3D '%')
+	    break;
+	s_cptr =3D cptr;
+	switch (keyword())
+	{
+	case MARK:
+	    no_grammar();
+
+	case TEXT:
+	    copy_text();
+	    break;
+
+	case START:
+	    declare_start();
+	    break;
+
+	default:
+	    syntax_error(lineno, line, s_cptr);
+	}
+    }
+
+    c =3D nextc();
+    if (!isalpha(c) && c !=3D '_' && c !=3D '.' && c !=3D '_')
+	syntax_error(lineno, line, cptr);
+    bp =3D get_name();
+    if (goal =3D=3D 0)
+    {
+	if (bp->class =3D=3D TERM)
+	    terminal_start(bp->name);
+	goal =3D bp;
+    }
+
+    s_lineno =3D lineno;
+    c =3D nextc();
+    if (c =3D=3D EOF)
+	unexpected_EOF();
+    if (c !=3D ':')
+	syntax_error(lineno, line, cptr);
+    start_rule(bp, s_lineno);
+    ++cptr;
+}
+
+static void
+start_rule(bucket *bp, int s_lineno)
+{
+    if (bp->class =3D=3D TERM)
+	terminal_lhs(s_lineno);
+    bp->class =3D NONTERM;
+    if (nrules >=3D maxrules)
+	expand_rules();
+    plhs[nrules] =3D bp;
+    rprec[nrules] =3D UNDEFINED;
+    rassoc[nrules] =3D TOKEN;
+}
+
+static void
+end_rule(void)
+{
+    int i;
+
+    if (!last_was_action && plhs[nrules]->tag)
+    {
+	if (pitem[nitems - 1])
+	{
+	    for (i =3D nitems - 1; (i > 0) && pitem[i]; --i)
+		continue;
+	    if (pitem[i + 1] =3D=3D 0 || pitem[i + 1]->tag !=3D plhs[nrules]->tag)
+		default_action_warning();
+	}
+	else
+	{
+	    default_action_warning();
+	}
+    }
+
+    last_was_action =3D 0;
+    if (nitems >=3D maxitems)
+	expand_items();
+    pitem[nitems] =3D 0;
+    ++nitems;
+    ++nrules;
+}
+
+static void
+insert_empty_rule(void)
+{
+    bucket *bp, **bpp;
+
+    assert(cache);
+    sprintf(cache, "$$%d", ++gensym);
+    bp =3D make_bucket(cache);
+    last_symbol->next =3D bp;
+    last_symbol =3D bp;
+    bp->tag =3D plhs[nrules]->tag;
+    bp->class =3D NONTERM;
+
+    if ((nitems +=3D 2) > maxitems)
+	expand_items();
+    bpp =3D pitem + nitems - 1;
+    *bpp-- =3D bp;
+    while ((bpp[0] =3D bpp[-1]) !=3D 0)
+	--bpp;
+
+    if (++nrules >=3D maxrules)
+	expand_rules();
+    plhs[nrules] =3D plhs[nrules - 1];
+    plhs[nrules - 1] =3D bp;
+    rprec[nrules] =3D rprec[nrules - 1];
+    rprec[nrules - 1] =3D 0;
+    rassoc[nrules] =3D rassoc[nrules - 1];
+    rassoc[nrules - 1] =3D TOKEN;
+}
+
+static void
+add_symbol(void)
+{
+    int c;
+    bucket *bp;
+    int s_lineno =3D lineno;
+
+    c =3D *cptr;
+    if (c =3D=3D '\'' || c =3D=3D '"')
+	bp =3D get_literal();
+    else
+	bp =3D get_name();
+
+    c =3D nextc();
+    if (c =3D=3D ':')
+    {
+	end_rule();
+	start_rule(bp, s_lineno);
+	++cptr;
+	return;
+    }
+
+    if (last_was_action)
+	insert_empty_rule();
+    last_was_action =3D 0;
+
+    if (++nitems > maxitems)
+	expand_items();
+    pitem[nitems - 1] =3D bp;
+}
+
+static char *
+after_blanks(char *s)
+{
+    while (*s !=3D '\0' && isspace(UCH(*s)))
+	++s;
+    return s;
+}
+
+static void
+copy_action(void)
+{
+    int c;
+    int i, n;
+    int depth;
+    int quote;
+    char *tag;
+    FILE *f =3D action_file;
+    int a_lineno =3D lineno;
+    char *a_line =3D dup_line();
+    char *a_cptr =3D a_line + (cptr - line);
+
+    if (last_was_action)
+	insert_empty_rule();
+    last_was_action =3D 1;
+
+    fprintf(f, "case %d:\n", nrules - 2);
+    if (!lflag)
+	fprintf(f, line_format, lineno, input_file_name);
+    if (*cptr =3D=3D '=3D')
+	++cptr;
+
+    /* avoid putting curly-braces in first column, to ease editing */
+    if (*after_blanks(cptr) =3D=3D L_CURL)
+    {
+	putc('\t', f);
+	cptr =3D after_blanks(cptr);
+    }
+
+    n =3D 0;
+    for (i =3D nitems - 1; pitem[i]; --i)
+	++n;
+
+    depth =3D 0;
+  loop:
+    c =3D *cptr;
+    if (c =3D=3D '$')
+    {
+	if (cptr[1] =3D=3D '<')
+	{
+	    int d_lineno =3D lineno;
+	    char *d_line =3D dup_line();
+	    char *d_cptr =3D d_line + (cptr - line);
+
+	    ++cptr;
+	    tag =3D get_tag();
+	    c =3D *cptr;
+	    if (c =3D=3D '$')
+	    {
+		fprintf(f, "yyval.%s", tag);
+		++cptr;
+		FREE(d_line);
+		goto loop;
+	    }
+	    else if (isdigit(c))
+	    {
+		i =3D get_number();
+		if (i > n)
+		    dollar_warning(d_lineno, i);
+		fprintf(f, "yystack.l_mark[%d].%s", i - n, tag);
+		FREE(d_line);
+		goto loop;
+	    }
+	    else if (c =3D=3D '-' && isdigit(UCH(cptr[1])))
+	    {
+		++cptr;
+		i =3D -get_number() - n;
+		fprintf(f, "yystack.l_mark[%d].%s", i, tag);
+		FREE(d_line);
+		goto loop;
+	    }
+	    else
+		dollar_error(d_lineno, d_line, d_cptr);
+	}
+	else if (cptr[1] =3D=3D '$')
+	{
+	    if (ntags)
+	    {
+		tag =3D plhs[nrules]->tag;
+		if (tag =3D=3D 0)
+		    untyped_lhs();
+		fprintf(f, "yyval.%s", tag);
+	    }
+	    else
+		fprintf(f, "yyval");
+	    cptr +=3D 2;
+	    goto loop;
+	}
+	else if (isdigit(UCH(cptr[1])))
+	{
+	    ++cptr;
+	    i =3D get_number();
+	    if (ntags)
+	    {
+		if (i <=3D 0 || i > n)
+		    unknown_rhs(i);
+		tag =3D pitem[nitems + i - n - 1]->tag;
+		if (tag =3D=3D 0)
+		    untyped_rhs(i, pitem[nitems + i - n - 1]->name);
+		fprintf(f, "yystack.l_mark[%d].%s", i - n, tag);
+	    }
+	    else
+	    {
+		if (i > n)
+		    dollar_warning(lineno, i);
+		fprintf(f, "yystack.l_mark[%d]", i - n);
+	    }
+	    goto loop;
+	}
+	else if (cptr[1] =3D=3D '-')
+	{
+	    cptr +=3D 2;
+	    i =3D get_number();
+	    if (ntags)
+		unknown_rhs(-i);
+	    fprintf(f, "yystack.l_mark[%d]", -i - n);
+	    goto loop;
+	}
+    }
+    if (isalpha(c) || c =3D=3D '_' || c =3D=3D '$')
+    {
+	do
+	{
+	    putc(c, f);
+	    c =3D *++cptr;
+	}
+	while (isalnum(c) || c =3D=3D '_' || c =3D=3D '$');
+	goto loop;
+    }
+    putc(c, f);
+    ++cptr;
+    switch (c)
+    {
+    case '\n':
+      next_line:
+	get_line();
+	if (line)
+	    goto loop;
+	unterminated_action(a_lineno, a_line, a_cptr);
+
+    case ';':
+	if (depth > 0)
+	    goto loop;
+	fprintf(f, "\nbreak;\n");
+	free(a_line);
+	return;
+
+    case L_CURL:
+	++depth;
+	goto loop;
+
+    case R_CURL:
+	if (--depth > 0)
+	    goto loop;
+	fprintf(f, "\nbreak;\n");
+	free(a_line);
+	return;
+
+    case '\'':
+    case '"':
+	{
+	    int s_lineno =3D lineno;
+	    char *s_line =3D dup_line();
+	    char *s_cptr =3D s_line + (cptr - line - 1);
+
+	    quote =3D c;
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc(c, f);
+		if (c =3D=3D quote)
+		{
+		    FREE(s_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		    unterminated_string(s_lineno, s_line, s_cptr);
+		if (c =3D=3D '\\')
+		{
+		    c =3D *cptr++;
+		    putc(c, f);
+		    if (c =3D=3D '\n')
+		    {
+			get_line();
+			if (line =3D=3D 0)
+			    unterminated_string(s_lineno, s_line, s_cptr);
+		    }
+		}
+	    }
+	}
+
+    case '/':
+	c =3D *cptr;
+	if (c =3D=3D '/')
+	{
+	    putc('*', f);
+	    while ((c =3D *++cptr) !=3D '\n')
+	    {
+		if (c =3D=3D '*' && cptr[1] =3D=3D '/')
+		    fprintf(f, "* ");
+		else
+		    putc(c, f);
+	    }
+	    fprintf(f, "*/\n");
+	    goto next_line;
+	}
+	if (c =3D=3D '*')
+	{
+	    int c_lineno =3D lineno;
+	    char *c_line =3D dup_line();
+	    char *c_cptr =3D c_line + (cptr - line - 1);
+
+	    putc('*', f);
+	    ++cptr;
+	    for (;;)
+	    {
+		c =3D *cptr++;
+		putc(c, f);
+		if (c =3D=3D '*' && *cptr =3D=3D '/')
+		{
+		    putc('/', f);
+		    ++cptr;
+		    FREE(c_line);
+		    goto loop;
+		}
+		if (c =3D=3D '\n')
+		{
+		    get_line();
+		    if (line =3D=3D 0)
+			unterminated_comment(c_lineno, c_line, c_cptr);
+		}
+	    }
+	}
+	goto loop;
+
+    default:
+	goto loop;
+    }
+}
+
+static int
+mark_symbol(void)
+{
+    int c;
+    bucket *bp;
+
+    bp =3D NULL;
+
+    c =3D cptr[1];
+    if (c =3D=3D '%' || c =3D=3D '\\')
+    {
+	cptr +=3D 2;
+	return (1);
+    }
+
+    if (c =3D=3D '=3D')
+	cptr +=3D 2;
+    else if ((c =3D=3D 'p' || c =3D=3D 'P') &&
+	     ((c =3D cptr[2]) =3D=3D 'r' || c =3D=3D 'R') &&
+	     ((c =3D cptr[3]) =3D=3D 'e' || c =3D=3D 'E') &&
+	     ((c =3D cptr[4]) =3D=3D 'c' || c =3D=3D 'C') &&
+	     ((c =3D cptr[5], !IS_IDENT(c))))
+	cptr +=3D 5;
+    else
+	syntax_error(lineno, line, cptr);
+
+    c =3D nextc();
+    if (isalpha(c) || c =3D=3D '_' || c =3D=3D '.' || c =3D=3D '$')
+	bp =3D get_name();
+    else if (c =3D=3D '\'' || c =3D=3D '"')
+	bp =3D get_literal();
+    else
+    {
+	syntax_error(lineno, line, cptr);
+	/*NOTREACHED */
+    }
+
+    if (rprec[nrules] !=3D UNDEFINED && bp->prec !=3D rprec[nrules])
+	prec_redeclared();
+
+    rprec[nrules] =3D bp->prec;
+    rassoc[nrules] =3D bp->assoc;
+    return (0);
+}
+
+static void
+read_grammar(void)
+{
+    int c;
+
+    initialize_grammar();
+    advance_to_start();
+
+    for (;;)
+    {
+	c =3D nextc();
+	if (c =3D=3D EOF)
+	    break;
+	if (isalpha(c)
+	    || c =3D=3D '_'
+	    || c =3D=3D '.'
+	    || c =3D=3D '$'
+	    || c =3D=3D '\''
+	    || c =3D=3D '"')
+	    add_symbol();
+	else if (c =3D=3D L_CURL || c =3D=3D '=3D')
+	    copy_action();
+	else if (c =3D=3D '|')
+	{
+	    end_rule();
+	    start_rule(plhs[nrules - 1], 0);
+	    ++cptr;
+	}
+	else if (c =3D=3D '%')
+	{
+	    if (mark_symbol())
+		break;
+	}
+	else
+	    syntax_error(lineno, line, cptr);
+    }
+    end_rule();
+}
+
+static void
+free_tags(void)
+{
+    int i;
+
+    if (tag_table =3D=3D 0)
+	return;
+
+    for (i =3D 0; i < ntags; ++i)
+    {
+	assert(tag_table[i]);
+	FREE(tag_table[i]);
+    }
+    FREE(tag_table);
+}
+
+static void
+pack_names(void)
+{
+    bucket *bp;
+    char *p, *s, *t;
+
+    name_pool_size =3D 13;	/* 13 =3D=3D sizeof("$end") + sizeof("$accept")=
 */
+    for (bp =3D first_symbol; bp; bp =3D bp->next)
+	name_pool_size +=3D strlen(bp->name) + 1;
+
+    name_pool =3D MALLOC(name_pool_size);
+    NO_SPACE(name_pool);
+
+    strcpy(name_pool, "$accept");
+    strcpy(name_pool + 8, "$end");
+    t =3D name_pool + 13;
+    for (bp =3D first_symbol; bp; bp =3D bp->next)
+    {
+	p =3D t;
+	s =3D bp->name;
+	while ((*t++ =3D *s++) !=3D 0)
+	    continue;
+	FREE(bp->name);
+	bp->name =3D p;
+    }
+}
+
+static void
+check_symbols(void)
+{
+    bucket *bp;
+
+    if (goal->class =3D=3D UNKNOWN)
+	undefined_goal(goal->name);
+
+    for (bp =3D first_symbol; bp; bp =3D bp->next)
+    {
+	if (bp->class =3D=3D UNKNOWN)
+	{
+	    undefined_symbol_warning(bp->name);
+	    bp->class =3D TERM;
+	}
+    }
+}
+
+static void
+protect_string(char *src, char **des)
+{
+    unsigned len;
+    char *s;
+    char *d;
+
+    *des =3D src;
+    if (src)
+    {
+	len =3D 1;
+	s =3D src;
+	while (*s)
+	{
+	    if ('\\' =3D=3D *s || '"' =3D=3D *s)
+		len++;
+	    s++;
+	    len++;
+	}
+
+	*des =3D d =3D (char *)MALLOC(len);
+	NO_SPACE(d);
+
+	s =3D src;
+	while (*s)
+	{
+	    if ('\\' =3D=3D *s || '"' =3D=3D *s)
+		*d++ =3D '\\';
+	    *d++ =3D *s++;
+	}
+	*d =3D '\0';
+    }
+}
+
+static void
+pack_symbols(void)
+{
+    bucket *bp;
+    bucket **v;
+    Value_t i, j, k, n;
+
+    nsyms =3D 2;
+    ntokens =3D 1;
+    for (bp =3D first_symbol; bp; bp =3D bp->next)
+    {
+	++nsyms;
+	if (bp->class =3D=3D TERM)
+	    ++ntokens;
+    }
+    start_symbol =3D (Value_t) ntokens;
+    nvars =3D nsyms - ntokens;
+
+    symbol_name =3D (char **)MALLOC((unsigned)nsyms * sizeof(char *));
+    NO_SPACE(symbol_name);
+
+    symbol_value =3D (short *)MALLOC((unsigned)nsyms * sizeof(short));
+    NO_SPACE(symbol_value);
+
+    symbol_prec =3D (short *)MALLOC((unsigned)nsyms * sizeof(short));
+    NO_SPACE(symbol_prec);
+
+    symbol_assoc =3D MALLOC(nsyms);
+    NO_SPACE(symbol_assoc);
+
+    v =3D (bucket **)MALLOC((unsigned)nsyms * sizeof(bucket *));
+    NO_SPACE(v);
+
+    v[0] =3D 0;
+    v[start_symbol] =3D 0;
+
+    i =3D 1;
+    j =3D (Value_t) (start_symbol + 1);
+    for (bp =3D first_symbol; bp; bp =3D bp->next)
+    {
+	if (bp->class =3D=3D TERM)
+	    v[i++] =3D bp;
+	else
+	    v[j++] =3D bp;
+    }
+    assert(i =3D=3D ntokens && j =3D=3D nsyms);
+
+    for (i =3D 1; i < ntokens; ++i)
+	v[i]->index =3D i;
+
+    goal->index =3D (Index_t) (start_symbol + 1);
+    k =3D (Value_t) (start_symbol + 2);
+    while (++i < nsyms)
+	if (v[i] !=3D goal)
+	{
+	    v[i]->index =3D k;
+	    ++k;
+	}
+
+    goal->value =3D 0;
+    k =3D 1;
+    for (i =3D (Value_t) (start_symbol + 1); i < nsyms; ++i)
+    {
+	if (v[i] !=3D goal)
+	{
+	    v[i]->value =3D k;
+	    ++k;
+	}
+    }
+
+    k =3D 0;
+    for (i =3D 1; i < ntokens; ++i)
+    {
+	n =3D v[i]->value;
+	if (n > 256)
+	{
+	    for (j =3D k++; j > 0 && symbol_value[j - 1] > n; --j)
+		symbol_value[j] =3D symbol_value[j - 1];
+	    symbol_value[j] =3D n;
+	}
+    }
+
+    assert(v[1] !=3D 0);
+
+    if (v[1]->value =3D=3D UNDEFINED)
+	v[1]->value =3D 256;
+
+    j =3D 0;
+    n =3D 257;
+    for (i =3D 2; i < ntokens; ++i)
+    {
+	if (v[i]->value =3D=3D UNDEFINED)
+	{
+	    while (j < k && n =3D=3D symbol_value[j])
+	    {
+		while (++j < k && n =3D=3D symbol_value[j])
+		    continue;
+		++n;
+	    }
+	    v[i]->value =3D n;
+	    ++n;
+	}
+    }
+
+    symbol_name[0] =3D name_pool + 8;
+    symbol_value[0] =3D 0;
+    symbol_prec[0] =3D 0;
+    symbol_assoc[0] =3D TOKEN;
+    for (i =3D 1; i < ntokens; ++i)
+    {
+	symbol_name[i] =3D v[i]->name;
+	symbol_value[i] =3D v[i]->value;
+	symbol_prec[i] =3D v[i]->prec;
+	symbol_assoc[i] =3D v[i]->assoc;
+    }
+    symbol_name[start_symbol] =3D name_pool;
+    symbol_value[start_symbol] =3D -1;
+    symbol_prec[start_symbol] =3D 0;
+    symbol_assoc[start_symbol] =3D TOKEN;
+    for (++i; i < nsyms; ++i)
+    {
+	k =3D v[i]->index;
+	symbol_name[k] =3D v[i]->name;
+	symbol_value[k] =3D v[i]->value;
+	symbol_prec[k] =3D v[i]->prec;
+	symbol_assoc[k] =3D v[i]->assoc;
+    }
+
+    if (gflag)
+    {
+	symbol_pname =3D (char **)MALLOC((unsigned)nsyms * sizeof(char *));
+	NO_SPACE(symbol_pname);
+
+	for (i =3D 0; i < nsyms; ++i)
+	    protect_string(symbol_name[i], &(symbol_pname[i]));
+    }
+
+    FREE(v);
+}
+
+static void
+pack_grammar(void)
+{
+    int i;
+    Value_t j;
+    Assoc_t assoc;
+    Value_t prec2;
+
+    ritem =3D (short *)MALLOC((unsigned)nitems * sizeof(short));
+    NO_SPACE(ritem);
+
+    rlhs =3D (short *)MALLOC((unsigned)nrules * sizeof(short));
+    NO_SPACE(rlhs);
+
+    rrhs =3D (short *)MALLOC((unsigned)(nrules + 1) * sizeof(short));
+    NO_SPACE(rrhs);
+
+    rprec =3D (short *)REALLOC(rprec, (unsigned)nrules * sizeof(short));
+    NO_SPACE(rprec);
+
+    rassoc =3D REALLOC(rassoc, nrules);
+    NO_SPACE(rassoc);
+
+    ritem[0] =3D -1;
+    ritem[1] =3D goal->index;
+    ritem[2] =3D 0;
+    ritem[3] =3D -2;
+    rlhs[0] =3D 0;
+    rlhs[1] =3D 0;
+    rlhs[2] =3D start_symbol;
+    rrhs[0] =3D 0;
+    rrhs[1] =3D 0;
+    rrhs[2] =3D 1;
+
+    j =3D 4;
+    for (i =3D 3; i < nrules; ++i)
+    {
+	rlhs[i] =3D plhs[i]->index;
+	rrhs[i] =3D j;
+	assoc =3D TOKEN;
+	prec2 =3D 0;
+	while (pitem[j])
+	{
+	    ritem[j] =3D pitem[j]->index;
+	    if (pitem[j]->class =3D=3D TERM)
+	    {
+		prec2 =3D pitem[j]->prec;
+		assoc =3D pitem[j]->assoc;
+	    }
+	    ++j;
+	}
+	ritem[j] =3D (Value_t) - i;
+	++j;
+	if (rprec[i] =3D=3D UNDEFINED)
+	{
+	    rprec[i] =3D prec2;
+	    rassoc[i] =3D assoc;
+	}
+    }
+    rrhs[i] =3D j;
+
+    FREE(plhs);
+    FREE(pitem);
+}
+
+static void
+print_grammar(void)
+{
+    int i, k;
+    size_t j, spacing =3D 0;
+    FILE *f =3D verbose_file;
+
+    if (!vflag)
+	return;
+
+    k =3D 1;
+    for (i =3D 2; i < nrules; ++i)
+    {
+	if (rlhs[i] !=3D rlhs[i - 1])
+	{
+	    if (i !=3D 2)
+		fprintf(f, "\n");
+	    fprintf(f, "%4d  %s :", i - 2, symbol_name[rlhs[i]]);
+	    spacing =3D strlen(symbol_name[rlhs[i]]) + 1;
+	}
+	else
+	{
+	    fprintf(f, "%4d  ", i - 2);
+	    j =3D spacing;
+	    while (j-- !=3D 0)
+		putc(' ', f);
+	    putc('|', f);
+	}
+
+	while (ritem[k] >=3D 0)
+	{
+	    fprintf(f, " %s", symbol_name[ritem[k]]);
+	    ++k;
+	}
+	++k;
+	putc('\n', f);
+    }
+}
+
+void
+reader(void)
+{
+    write_section(code_file, banner);
+    create_symbol_table();
+    read_declarations();
+    read_grammar();
+    free_symbol_table();
+    free_tags();
+    pack_names();
+    check_symbols();
+    pack_symbols();
+    pack_grammar();
+    free_symbols();
+    print_grammar();
+}
+
+#ifdef NO_LEAKS
+static param *
+free_declarations(param * list)
+{
+    while (list !=3D 0)
+    {
+	param *next =3D list->next;
+	free(list->type);
+	free(list->name);
+	free(list->type2);
+	free(list);
+	list =3D next;
+    }
+    return list;
+}
+
+void
+reader_leaks(void)
+{
+    lex_param =3D free_declarations(lex_param);
+    parse_param =3D free_declarations(parse_param);
+
+    DO_FREE(line);
+    DO_FREE(rrhs);
+    DO_FREE(rlhs);
+    DO_FREE(rprec);
+    DO_FREE(ritem);
+    DO_FREE(rassoc);
+    DO_FREE(cache);
+    DO_FREE(name_pool);
+    DO_FREE(symbol_name);
+    DO_FREE(symbol_prec);
+    DO_FREE(symbol_assoc);
+    DO_FREE(symbol_value);
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/skeleton.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/skeleton.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,439 @@
+/* $Id: skeleton.c,v 1.31 2011/09/07 09:37:59 tom Exp $ */
+
+#include "defs.h"
+
+/*  The definition of yysccsid in the banner should be replaced with	*/
+/*  a #pragma ident directive if the target C compiler supports		*/
+/*  #pragma ident directives.						*/
+/*									*/
+/*  If the skeleton is changed, the banner should be changed so that	*/
+/*  the altered version can be easily distinguished from the original.	*/
+/*									*/
+/*  The #defines included with the banner are there because they are	*/
+/*  useful in subsequent code.  The macros #defined in the header or	*/
+/*  the body either are not useful outside of semantic actions or	*/
+/*  are conditional.							*/
+
+const char *const banner[] =3D
+{
+    "#ifndef lint",
+    "static const char yysccsid[] =3D \"@(#)yaccpar	1.9 (Berkeley) 02/21/9=
3\";",
+    "#endif",
+    "",
+    "#define YYBYACC 1",
+    CONCAT1("#define YYMAJOR ", YYMAJOR),
+    CONCAT1("#define YYMINOR ", YYMINOR),
+#ifdef YYPATCH
+    CONCAT1("#define YYPATCH ", YYPATCH),
+#endif
+    "",
+    "#define YYEMPTY        (-1)",
+    "#define yyclearin      (yychar =3D YYEMPTY)",
+    "#define yyerrok        (yyerrflag =3D 0)",
+    "#define YYRECOVERING() (yyerrflag !=3D 0)",
+    "",
+    0
+};
+
+const char *const xdecls[] =3D
+{
+    "",
+    "extern int YYPARSE_DECL();",
+    0
+};
+
+const char *const tables[] =3D
+{
+    "extern short yylhs[];",
+    "extern short yylen[];",
+    "extern short yydefred[];",
+    "extern short yydgoto[];",
+    "extern short yysindex[];",
+    "extern short yyrindex[];",
+    "extern short yygindex[];",
+    "extern short yytable[];",
+    "extern short yycheck[];",
+    "",
+    "#if YYDEBUG",
+    "extern char *yyname[];",
+    "extern char *yyrule[];",
+    "#endif",
+    0
+};
+
+const char *const global_vars[] =3D
+{
+    "",
+    "int      yydebug;",
+    "int      yynerrs;",
+    0
+};
+
+const char *const impure_vars[] =3D
+{
+    "",
+    "int      yyerrflag;",
+    "int      yychar;",
+    "YYSTYPE  yyval;",
+    "YYSTYPE  yylval;",
+    0
+};
+
+const char *const hdr_defs[] =3D
+{
+    "",
+    "/* define the initial stack-sizes */",
+    "#ifdef YYSTACKSIZE",
+    "#undef YYMAXDEPTH",
+    "#define YYMAXDEPTH  YYSTACKSIZE",
+    "#else",
+    "#ifdef YYMAXDEPTH",
+    "#define YYSTACKSIZE YYMAXDEPTH",
+    "#else",
+    "#define YYSTACKSIZE 500",
+    "#define YYMAXDEPTH  500",
+    "#endif",
+    "#endif",
+    "",
+    "#define YYINITSTACKSIZE 500",
+    "",
+    "typedef struct {",
+    "    unsigned stacksize;",
+    "    short    *s_base;",
+    "    short    *s_mark;",
+    "    short    *s_last;",
+    "    YYSTYPE  *l_base;",
+    "    YYSTYPE  *l_mark;",
+    "} YYSTACKDATA;",
+    0
+};
+
+const char *const hdr_vars[] =3D
+{
+    "/* variables for the parser stack */",
+    "static YYSTACKDATA yystack;",
+    0
+};
+
+const char *const body_vars[] =3D
+{
+    "    int      yyerrflag;",
+    "    int      yychar;",
+    "    YYSTYPE  yyval;",
+    "    YYSTYPE  yylval;",
+    "",
+    "    /* variables for the parser stack */",
+    "    YYSTACKDATA yystack;",
+    0
+};
+
+const char *const body_1[] =3D
+{
+    "",
+    "#if YYDEBUG",
+    "#include <stdio.h>		/* needed for printf */",
+    "#endif",
+    "",
+    "#include <stdlib.h>	/* needed for malloc, etc */",
+    "#include <string.h>	/* needed for memset */",
+    "",
+    "/* allocate initial stack or double stack size, up to YYMAXDEPTH */",
+    "static int yygrowstack(YYSTACKDATA *data)",
+    "{",
+    "    int i;",
+    "    unsigned newsize;",
+    "    short *newss;",
+    "    YYSTYPE *newvs;",
+    "",
+    "    if ((newsize =3D data->stacksize) =3D=3D 0)",
+    "        newsize =3D YYINITSTACKSIZE;",
+    "    else if (newsize >=3D YYMAXDEPTH)",
+    "        return -1;",
+    "    else if ((newsize *=3D 2) > YYMAXDEPTH)",
+    "        newsize =3D YYMAXDEPTH;",
+    "",
+    "    i =3D data->s_mark - data->s_base;",
+    "    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss)=
);",
+    "    if (newss =3D=3D 0)",
+    "        return -1;",
+    "",
+    "    data->s_base =3D newss;",
+    "    data->s_mark =3D newss + i;",
+    "",
+    "    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newv=
s));",
+    "    if (newvs =3D=3D 0)",
+    "        return -1;",
+    "",
+    "    data->l_base =3D newvs;",
+    "    data->l_mark =3D newvs + i;",
+    "",
+    "    data->stacksize =3D newsize;",
+    "    data->s_last =3D data->s_base + newsize - 1;",
+    "    return 0;",
+    "}",
+    "",
+    "#if YYPURE || defined(YY_NO_LEAKS)",
+    "static void yyfreestack(YYSTACKDATA *data)",
+    "{",
+    "    free(data->s_base);",
+    "    free(data->l_base);",
+    "    memset(data, 0, sizeof(*data));",
+    "}",
+    "#else",
+    "#define yyfreestack(data) /* nothing */",
+    "#endif",
+    "",
+    "#define YYABORT  goto yyabort",
+    "#define YYREJECT goto yyabort",
+    "#define YYACCEPT goto yyaccept",
+    "#define YYERROR  goto yyerrlab",
+    "",
+    "int",
+    "YYPARSE_DECL()",
+    "{",
+    0
+};
+
+const char *const body_2[] =3D
+{
+    "    int yym, yyn, yystate;",
+    "#if YYDEBUG",
+    "    const char *yys;",
+    "",
+    "    if ((yys =3D getenv(\"YYDEBUG\")) !=3D 0)",
+    "    {",
+    "        yyn =3D *yys;",
+    "        if (yyn >=3D '0' && yyn <=3D '9')",
+    "            yydebug =3D yyn - '0';",
+    "    }",
+    "#endif",
+    "",
+    "    yynerrs =3D 0;",
+    "    yyerrflag =3D 0;",
+    "    yychar =3D YYEMPTY;",
+    "    yystate =3D 0;",
+    "",
+    "#if YYPURE",
+    "    memset(&yystack, 0, sizeof(yystack));",
+    "#endif",
+    "",
+    "    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyo=
verflow;",
+    "    yystack.s_mark =3D yystack.s_base;",
+    "    yystack.l_mark =3D yystack.l_base;",
+    "    yystate =3D 0;",
+    "    *yystack.s_mark =3D 0;",
+    "",
+    "yyloop:",
+    "    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;",
+    "    if (yychar < 0)",
+    "    {",
+    "        if ((yychar =3D YYLEX) < 0) yychar =3D 0;",
+    "#if YYDEBUG",
+    "        if (yydebug)",
+    "        {",
+    "            yys =3D 0;",
+    "            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];",
+    "            if (!yys) yys =3D \"illegal-symbol\";",
+    "            printf(\"%sdebug: state %d, reading %d (%s)\\n\",",
+    "                    YYPREFIX, yystate, yychar, yys);",
+    "        }",
+    "#endif",
+    "    }",
+    "    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&",
+    "            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)",
+    "    {",
+    "#if YYDEBUG",
+    "        if (yydebug)",
+    "            printf(\"%sdebug: state %d, shifting to state %d\\n\",",
+    "                    YYPREFIX, yystate, yytable[yyn]);",
+    "#endif",
+    "        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystac=
k))",
+    "        {",
+    "            goto yyoverflow;",
+    "        }",
+    "        yystate =3D yytable[yyn];",
+    "        *++yystack.s_mark =3D yytable[yyn];",
+    "        *++yystack.l_mark =3D yylval;",
+    "        yychar =3D YYEMPTY;",
+    "        if (yyerrflag > 0)  --yyerrflag;",
+    "        goto yyloop;",
+    "    }",
+    "    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&",
+    "            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)",
+    "    {",
+    "        yyn =3D yytable[yyn];",
+    "        goto yyreduce;",
+    "    }",
+    "    if (yyerrflag) goto yyinrecovery;",
+    "",
+    0
+};
+
+const char *const body_3[] =3D
+{
+    "",
+    "    goto yyerrlab;",
+    "",
+    "yyerrlab:",
+    "    ++yynerrs;",
+    "",
+    "yyinrecovery:",
+    "    if (yyerrflag < 3)",
+    "    {",
+    "        yyerrflag =3D 3;",
+    "        for (;;)",
+    "        {",
+    "            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYER=
RCODE) >=3D 0 &&",
+    "                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERR=
CODE)",
+    "            {",
+    "#if YYDEBUG",
+    "                if (yydebug)",
+    "                    printf(\"%sdebug: state %d, error recovery shifti=
ng\\",
+    " to state %d\\n\", YYPREFIX, *yystack.s_mark, yytable[yyn]);",
+    "#endif",
+    "                if (yystack.s_mark >=3D yystack.s_last && yygrowstack=
(&yystack))",
+    "                {",
+    "                    goto yyoverflow;",
+    "                }",
+    "                yystate =3D yytable[yyn];",
+    "                *++yystack.s_mark =3D yytable[yyn];",
+    "                *++yystack.l_mark =3D yylval;",
+    "                goto yyloop;",
+    "            }",
+    "            else",
+    "            {",
+    "#if YYDEBUG",
+    "                if (yydebug)",
+    "                    printf(\"%sdebug: error recovery discarding state=
 %d\
+\\n\",",
+    "                            YYPREFIX, *yystack.s_mark);",
+    "#endif",
+    "                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;=
",
+    "                --yystack.s_mark;",
+    "                --yystack.l_mark;",
+    "            }",
+    "        }",
+    "    }",
+    "    else",
+    "    {",
+    "        if (yychar =3D=3D 0) goto yyabort;",
+    "#if YYDEBUG",
+    "        if (yydebug)",
+    "        {",
+    "            yys =3D 0;",
+    "            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];",
+    "            if (!yys) yys =3D \"illegal-symbol\";",
+    "            printf(\"%sdebug: state %d, error recovery discards token=
 %d\
+ (%s)\\n\",",
+    "                    YYPREFIX, yystate, yychar, yys);",
+    "        }",
+    "#endif",
+    "        yychar =3D YYEMPTY;",
+    "        goto yyloop;",
+    "    }",
+    "",
+    "yyreduce:",
+    "#if YYDEBUG",
+    "    if (yydebug)",
+    "        printf(\"%sdebug: state %d, reducing by rule %d (%s)\\n\",",
+    "                YYPREFIX, yystate, yyn, yyrule[yyn]);",
+    "#endif",
+    "    yym =3D yylen[yyn];",
+    "    if (yym)",
+    "        yyval =3D yystack.l_mark[1-yym];",
+    "    else",
+    "        memset(&yyval, 0, sizeof yyval);",
+    "    switch (yyn)",
+    "    {",
+    0
+};
+
+const char *const trailer[] =3D
+{
+    "    }",
+    "    yystack.s_mark -=3D yym;",
+    "    yystate =3D *yystack.s_mark;",
+    "    yystack.l_mark -=3D yym;",
+    "    yym =3D yylhs[yyn];",
+    "    if (yystate =3D=3D 0 && yym =3D=3D 0)",
+    "    {",
+    "#if YYDEBUG",
+    "        if (yydebug)",
+    "            printf(\"%sdebug: after reduction, shifting from state 0 =
to\\",
+    " state %d\\n\", YYPREFIX, YYFINAL);",
+    "#endif",
+    "        yystate =3D YYFINAL;",
+    "        *++yystack.s_mark =3D YYFINAL;",
+    "        *++yystack.l_mark =3D yyval;",
+    "        if (yychar < 0)",
+    "        {",
+    "            if ((yychar =3D YYLEX) < 0) yychar =3D 0;",
+    "#if YYDEBUG",
+    "            if (yydebug)",
+    "            {",
+    "                yys =3D 0;",
+    "                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];",
+    "                if (!yys) yys =3D \"illegal-symbol\";",
+    "                printf(\"%sdebug: state %d, reading %d (%s)\\n\",",
+    "                        YYPREFIX, YYFINAL, yychar, yys);",
+    "            }",
+    "#endif",
+    "        }",
+    "        if (yychar =3D=3D 0) goto yyaccept;",
+    "        goto yyloop;",
+    "    }",
+    "    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&",
+    "            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)",
+    "        yystate =3D yytable[yyn];",
+    "    else",
+    "        yystate =3D yydgoto[yym];",
+    "#if YYDEBUG",
+    "    if (yydebug)",
+    "        printf(\"%sdebug: after reduction, shifting from state %d \\",
+    "to state %d\\n\", YYPREFIX, *yystack.s_mark, yystate);",
+    "#endif",
+    "    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))",
+    "    {",
+    "        goto yyoverflow;",
+    "    }",
+    "    *++yystack.s_mark =3D (short) yystate;",
+    "    *++yystack.l_mark =3D yyval;",
+    "    goto yyloop;",
+    "",
+    "yyoverflow:",
+    0
+};
+
+const char *const trailer_2[] =3D
+{
+    "",
+    "yyabort:",
+    "    yyfreestack(&yystack);",
+    "    return (1);",
+    "",
+    "yyaccept:",
+    "    yyfreestack(&yystack);",
+    "    return (0);",
+    "}",
+    0
+};
+
+void
+write_section(FILE * fp, const char *const section[])
+{
+    int c;
+    int i;
+    const char *s;
+
+    for (i =3D 0; (s =3D section[i]) !=3D 0; ++i)
+    {
+	while ((c =3D *s) !=3D 0)
+	{
+	    putc(c, fp);
+	    ++s;
+	}
+	if (fp =3D=3D code_file)
+	    ++outline;
+	putc('\n', fp);
+    }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/symtab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/symtab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,117 @@
+/* $Id: symtab.c,v 1.9 2010/11/24 15:12:29 tom Exp $ */
+
+#include "defs.h"
+
+/* TABLE_SIZE is the number of entries in the symbol table. */
+/* TABLE_SIZE must be a power of two.			    */
+
+#define	TABLE_SIZE 1024
+
+static bucket **symbol_table =3D 0;
+bucket *first_symbol;
+bucket *last_symbol;
+
+static int
+hash(const char *name)
+{
+    const char *s;
+    int c, k;
+
+    assert(name && *name);
+    s =3D name;
+    k =3D *s;
+    while ((c =3D *++s) !=3D 0)
+	k =3D (31 * k + c) & (TABLE_SIZE - 1);
+
+    return (k);
+}
+
+bucket *
+make_bucket(const char *name)
+{
+    bucket *bp;
+
+    assert(name !=3D 0);
+
+    bp =3D (bucket *)MALLOC(sizeof(bucket));
+    NO_SPACE(bp);
+
+    bp->link =3D 0;
+    bp->next =3D 0;
+
+    bp->name =3D MALLOC(strlen(name) + 1);
+    NO_SPACE(bp->name);
+
+    bp->tag =3D 0;
+    bp->value =3D UNDEFINED;
+    bp->index =3D 0;
+    bp->prec =3D 0;
+    bp->class =3D UNKNOWN;
+    bp->assoc =3D TOKEN;
+    strcpy(bp->name, name);
+
+    return (bp);
+}
+
+bucket *
+lookup(const char *name)
+{
+    bucket *bp, **bpp;
+
+    bpp =3D symbol_table + hash(name);
+    bp =3D *bpp;
+
+    while (bp)
+    {
+	if (strcmp(name, bp->name) =3D=3D 0)
+	    return (bp);
+	bpp =3D &bp->link;
+	bp =3D *bpp;
+    }
+
+    *bpp =3D bp =3D make_bucket(name);
+    last_symbol->next =3D bp;
+    last_symbol =3D bp;
+
+    return (bp);
+}
+
+void
+create_symbol_table(void)
+{
+    int i;
+    bucket *bp;
+
+    symbol_table =3D (bucket **)MALLOC(TABLE_SIZE * sizeof(bucket *));
+    NO_SPACE(symbol_table);
+
+    for (i =3D 0; i < TABLE_SIZE; i++)
+	symbol_table[i] =3D 0;
+
+    bp =3D make_bucket("error");
+    bp->index =3D 1;
+    bp->class =3D TERM;
+
+    first_symbol =3D bp;
+    last_symbol =3D bp;
+    symbol_table[hash("error")] =3D bp;
+}
+
+void
+free_symbol_table(void)
+{
+    FREE(symbol_table);
+    symbol_table =3D 0;
+}
+
+void
+free_symbols(void)
+{
+    bucket *p, *q;
+
+    for (p =3D first_symbol; p; p =3D q)
+    {
+	q =3D p->next;
+	FREE(p);
+    }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/README
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/README	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,4 @@
+-- $Id: README,v 1.1 2004/03/28 19:10:48 tom Exp $
+
+The files in this directory are input (.y) and output (.output, .tab.c, .t=
ab.h)
+examples.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,461 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr '+' expr
+   8       | expr '-' expr
+   9       | expr '*' expr
+  10       | expr '/' expr
+  11       | expr '%' expr
+  12       | expr '&' expr
+  13       | expr '|' expr
+  14       | '-' expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	DIGIT  shift 3
+	LETTER  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 4
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 11
+	'|'  reduce 15
+	'&'  reduce 15
+	'+'  reduce 15
+	'-'  reduce 15
+	'*'  reduce 15
+	'/'  reduce 15
+	'%'  reduce 15
+	'\n'  reduce 15
+
+
+state 5
+	expr : '-' . expr  (14)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 13
+	number  goto 9
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	'|'  reduce 16
+	'&'  reduce 16
+	'+'  reduce 16
+	'-'  reduce 16
+	'*'  reduce 16
+	'/'  reduce 16
+	'%'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	stat : LETTER '=3D' . expr  (5)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 12
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+state 13
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : '-' expr .  (14)
+
+	.  reduce 14
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr '|' . expr  (13)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr '&' . expr  (12)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr '+' . expr  (7)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr '-' . expr  (8)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr '*' . expr  (9)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr '/' . expr  (10)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '%' . expr  (11)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+state 26
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+state 27
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr '&' expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 12
+	'&'  reduce 12
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+state 28
+	expr : expr . '+' expr  (7)
+	expr : expr '+' expr .  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 7
+	'&'  reduce 7
+	'+'  reduce 7
+	'-'  reduce 7
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+state 29
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr '-' expr .  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 8
+	'&'  reduce 8
+	'+'  reduce 8
+	'-'  reduce 8
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+state 30
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr '*' expr .  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 9
+
+
+state 31
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr '/' expr .  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 10
+
+
+state 32
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr '%' expr .  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 11
+
+
+16 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,673 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc_rule
+#endif /* yyrule */
+#define YYPREFIX "calc_"
+
+#define YYPURE 0
+
+#line 2 "calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+extern int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "calc.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+static const short calc_lhs[] =3D {                        -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short calc_len[] =3D {                         2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short calc_defred[] =3D {                      1,
+    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
+    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
+   10,   11,
+};
+static const short calc_dgoto[] =3D {                       1,
+    7,    8,    9,
+};
+static const short calc_sindex[] =3D {                      0,
+  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
+  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
+  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
+    0,    0,
+};
+static const short calc_rindex[] =3D {                      0,
+    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
+    0,    0,
+};
+static const short calc_gindex[] =3D {                      0,
+    0,   65,    0,
+};
+#define YYTABLESIZE 220
+static const short calc_table[] =3D {                       6,
+   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
+   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
+    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
+    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
+    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
+    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
+    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
+   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
+    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
+    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
+    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
+    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
+    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
+    0,    0,    0,    0,    0,   16,    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,    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,    2,    3,    4,    3,   12,
+};
+static const short calc_check[] =3D {                      40,
+   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
+   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
+   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
+   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
+   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
+   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
+   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
+    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
+   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
+   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 66 "calc.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 347 "calc.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 28 "calc.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 32 "calc.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 34 "calc.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 38 "calc.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 40 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 42 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 44 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 46 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 48 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 50 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 52 "calc.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 54 "calc.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 56 "calc.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 61 "calc.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 63 "calc.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 613 "calc.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,106 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+extern int yylex(void);
+static void yyerror(const char *s);
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr '+' expr
+            {  $$ =3D $1 + $3; }
+      |  expr '-' expr
+            {  $$ =3D $1 - $3; }
+      |  expr '*' expr
+            {  $$ =3D $1 * $3; }
+      |  expr '/' expr
+            {  $$ =3D $1 / $3; }
+      |  expr '%' expr
+            {  $$ =3D $1 % $3; }
+      |  expr '&' expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  '-' expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc1.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc1.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,877 @@
+   0  $accept : line $end
+
+   1  lines :
+   2        | lines line
+
+   3  line : dexp '\n'
+   4       | vexp '\n'
+   5       | DREG '=3D' dexp '\n'
+   6       | VREG '=3D' vexp '\n'
+   7       | error '\n'
+
+   8  dexp : CONST
+   9       | DREG
+  10       | dexp '+' dexp
+  11       | dexp '-' dexp
+  12       | dexp '*' dexp
+  13       | dexp '/' dexp
+  14       | '-' dexp
+  15       | '(' dexp ')'
+
+  16  vexp : dexp
+  17       | '(' dexp ',' dexp ')'
+  18       | VREG
+  19       | vexp '+' vexp
+  20       | dexp '+' vexp
+  21       | vexp '-' vexp
+  22       | dexp '-' vexp
+  23       | vexp '*' vexp
+  24       | dexp '*' vexp
+  25       | vexp '/' vexp
+  26       | dexp '/' vexp
+  27       | '-' vexp
+  28       | '(' vexp ')'
+=0C
+state 0
+	$accept : . line $end  (0)
+
+	error  shift 1
+	DREG  shift 2
+	VREG  shift 3
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	line  goto 7
+	dexp  goto 8
+	vexp  goto 9
+
+
+state 1
+	line : error . '\n'  (7)
+
+	'\n'  shift 10
+	.  error
+
+
+state 2
+	line : DREG . '=3D' dexp '\n'  (5)
+	dexp : DREG .  (9)
+
+	'=3D'  shift 11
+	'+'  reduce 9
+	'-'  reduce 9
+	'*'  reduce 9
+	'/'  reduce 9
+	'\n'  reduce 9
+
+
+state 3
+	line : VREG . '=3D' vexp '\n'  (6)
+	vexp : VREG .  (18)
+
+	'=3D'  shift 12
+	'+'  reduce 18
+	'-'  reduce 18
+	'*'  reduce 18
+	'/'  reduce 18
+	'\n'  reduce 18
+
+
+state 4
+	dexp : CONST .  (8)
+
+	.  reduce 8
+
+
+state 5
+	dexp : '-' . dexp  (14)
+	vexp : '-' . vexp  (27)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 15
+	vexp  goto 16
+
+
+state 6
+	dexp : '(' . dexp ')'  (15)
+	vexp : '(' . dexp ',' dexp ')'  (17)
+	vexp : '(' . vexp ')'  (28)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 17
+	vexp  goto 18
+
+
+state 7
+	$accept : line . $end  (0)
+
+	$end  accept
+
+
+8: shift/reduce conflict (shift 19, reduce 16) on '+'
+8: shift/reduce conflict (shift 20, reduce 16) on '-'
+8: shift/reduce conflict (shift 21, reduce 16) on '*'
+8: shift/reduce conflict (shift 22, reduce 16) on '/'
+8: shift/reduce conflict (shift 23, reduce 16) on '\n'
+state 8
+	line : dexp . '\n'  (3)
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	'+'  shift 19
+	'-'  shift 20
+	'*'  shift 21
+	'/'  shift 22
+	'\n'  shift 23
+
+
+state 9
+	line : vexp . '\n'  (4)
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'+'  shift 24
+	'-'  shift 25
+	'*'  shift 26
+	'/'  shift 27
+	'\n'  shift 28
+	.  error
+
+
+state 10
+	line : error '\n' .  (7)
+
+	.  reduce 7
+
+
+state 11
+	line : DREG '=3D' . dexp '\n'  (5)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 31
+
+
+state 12
+	line : VREG '=3D' . vexp '\n'  (6)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 32
+	vexp  goto 33
+
+
+state 13
+	dexp : DREG .  (9)
+
+	.  reduce 9
+
+
+state 14
+	vexp : VREG .  (18)
+
+	.  reduce 18
+
+
+15: reduce/reduce conflict (reduce 14, reduce 16) on '+'
+15: reduce/reduce conflict (reduce 14, reduce 16) on '-'
+15: reduce/reduce conflict (reduce 14, reduce 16) on '*'
+15: reduce/reduce conflict (reduce 14, reduce 16) on '/'
+15: reduce/reduce conflict (reduce 14, reduce 16) on '\n'
+15: reduce/reduce conflict (reduce 14, reduce 16) on ')'
+state 15
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : '-' dexp .  (14)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	.  reduce 14
+
+
+state 16
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+	vexp : '-' vexp .  (27)
+
+	.  reduce 27
+
+
+17: shift/reduce conflict (shift 19, reduce 16) on '+'
+17: shift/reduce conflict (shift 20, reduce 16) on '-'
+17: shift/reduce conflict (shift 21, reduce 16) on '*'
+17: shift/reduce conflict (shift 22, reduce 16) on '/'
+17: shift/reduce conflict (shift 34, reduce 16) on ')'
+state 17
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : '(' dexp . ')'  (15)
+	vexp : dexp .  (16)
+	vexp : '(' dexp . ',' dexp ')'  (17)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	'+'  shift 19
+	'-'  shift 20
+	'*'  shift 21
+	'/'  shift 22
+	')'  shift 34
+	','  shift 35
+
+
+state 18
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+	vexp : '(' vexp . ')'  (28)
+
+	'+'  shift 24
+	'-'  shift 25
+	'*'  shift 26
+	'/'  shift 27
+	')'  shift 36
+	.  error
+
+
+state 19
+	dexp : dexp '+' . dexp  (10)
+	vexp : dexp '+' . vexp  (20)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 37
+	vexp  goto 38
+
+
+state 20
+	dexp : dexp '-' . dexp  (11)
+	vexp : dexp '-' . vexp  (22)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 39
+	vexp  goto 40
+
+
+state 21
+	dexp : dexp '*' . dexp  (12)
+	vexp : dexp '*' . vexp  (24)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 41
+	vexp  goto 42
+
+
+state 22
+	dexp : dexp '/' . dexp  (13)
+	vexp : dexp '/' . vexp  (26)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 43
+	vexp  goto 44
+
+
+state 23
+	line : dexp '\n' .  (3)
+
+	.  reduce 3
+
+
+state 24
+	vexp : vexp '+' . vexp  (19)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 32
+	vexp  goto 45
+
+
+state 25
+	vexp : vexp '-' . vexp  (21)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 32
+	vexp  goto 46
+
+
+state 26
+	vexp : vexp '*' . vexp  (23)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 32
+	vexp  goto 47
+
+
+state 27
+	vexp : vexp '/' . vexp  (25)
+
+	DREG  shift 13
+	VREG  shift 14
+	CONST  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	dexp  goto 32
+	vexp  goto 48
+
+
+state 28
+	line : vexp '\n' .  (4)
+
+	.  reduce 4
+
+
+state 29
+	dexp : '-' . dexp  (14)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 49
+
+
+state 30
+	dexp : '(' . dexp ')'  (15)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 50
+
+
+state 31
+	line : DREG '=3D' dexp . '\n'  (5)
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+
+	'+'  shift 51
+	'-'  shift 52
+	'*'  shift 53
+	'/'  shift 54
+	'\n'  shift 55
+	.  error
+
+
+32: shift/reduce conflict (shift 19, reduce 16) on '+'
+32: shift/reduce conflict (shift 20, reduce 16) on '-'
+32: shift/reduce conflict (shift 21, reduce 16) on '*'
+32: shift/reduce conflict (shift 22, reduce 16) on '/'
+state 32
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	'+'  shift 19
+	'-'  shift 20
+	'*'  shift 21
+	'/'  shift 22
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 33
+	line : VREG '=3D' vexp . '\n'  (6)
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'+'  shift 24
+	'-'  shift 25
+	'*'  shift 26
+	'/'  shift 27
+	'\n'  shift 56
+	.  error
+
+
+state 34
+	dexp : '(' dexp ')' .  (15)
+
+	.  reduce 15
+
+
+state 35
+	vexp : '(' dexp ',' . dexp ')'  (17)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 57
+
+
+state 36
+	vexp : '(' vexp ')' .  (28)
+
+	.  reduce 28
+
+
+37: reduce/reduce conflict (reduce 10, reduce 16) on '+'
+37: reduce/reduce conflict (reduce 10, reduce 16) on '-'
+37: shift/reduce conflict (shift 21, reduce 16) on '*'
+37: shift/reduce conflict (shift 22, reduce 16) on '/'
+37: reduce/reduce conflict (reduce 10, reduce 16) on '\n'
+37: reduce/reduce conflict (reduce 10, reduce 16) on ')'
+state 37
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp '+' dexp .  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	'*'  shift 21
+	'/'  shift 22
+	'+'  reduce 10
+	'-'  reduce 10
+	'\n'  reduce 10
+	')'  reduce 10
+	','  reduce 10
+
+
+state 38
+	vexp : vexp . '+' vexp  (19)
+	vexp : dexp '+' vexp .  (20)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'*'  shift 26
+	'/'  shift 27
+	'+'  reduce 20
+	'-'  reduce 20
+	'\n'  reduce 20
+	')'  reduce 20
+
+
+39: reduce/reduce conflict (reduce 11, reduce 16) on '+'
+39: reduce/reduce conflict (reduce 11, reduce 16) on '-'
+39: shift/reduce conflict (shift 21, reduce 16) on '*'
+39: shift/reduce conflict (shift 22, reduce 16) on '/'
+39: reduce/reduce conflict (reduce 11, reduce 16) on '\n'
+39: reduce/reduce conflict (reduce 11, reduce 16) on ')'
+state 39
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp '-' dexp .  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	'*'  shift 21
+	'/'  shift 22
+	'+'  reduce 11
+	'-'  reduce 11
+	'\n'  reduce 11
+	')'  reduce 11
+	','  reduce 11
+
+
+state 40
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : dexp '-' vexp .  (22)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'*'  shift 26
+	'/'  shift 27
+	'+'  reduce 22
+	'-'  reduce 22
+	'\n'  reduce 22
+	')'  reduce 22
+
+
+41: reduce/reduce conflict (reduce 12, reduce 16) on '+'
+41: reduce/reduce conflict (reduce 12, reduce 16) on '-'
+41: reduce/reduce conflict (reduce 12, reduce 16) on '*'
+41: reduce/reduce conflict (reduce 12, reduce 16) on '/'
+41: reduce/reduce conflict (reduce 12, reduce 16) on '\n'
+41: reduce/reduce conflict (reduce 12, reduce 16) on ')'
+state 41
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp '*' dexp .  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	.  reduce 12
+
+
+state 42
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : dexp '*' vexp .  (24)
+	vexp : vexp . '/' vexp  (25)
+
+	.  reduce 24
+
+
+43: reduce/reduce conflict (reduce 13, reduce 16) on '+'
+43: reduce/reduce conflict (reduce 13, reduce 16) on '-'
+43: reduce/reduce conflict (reduce 13, reduce 16) on '*'
+43: reduce/reduce conflict (reduce 13, reduce 16) on '/'
+43: reduce/reduce conflict (reduce 13, reduce 16) on '\n'
+43: reduce/reduce conflict (reduce 13, reduce 16) on ')'
+state 43
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : dexp '/' dexp .  (13)
+	vexp : dexp .  (16)
+	vexp : dexp . '+' vexp  (20)
+	vexp : dexp . '-' vexp  (22)
+	vexp : dexp . '*' vexp  (24)
+	vexp : dexp . '/' vexp  (26)
+
+	.  reduce 13
+
+
+state 44
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+	vexp : dexp '/' vexp .  (26)
+
+	.  reduce 26
+
+
+state 45
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp '+' vexp .  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'*'  shift 26
+	'/'  shift 27
+	'+'  reduce 19
+	'-'  reduce 19
+	'\n'  reduce 19
+	')'  reduce 19
+
+
+state 46
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp '-' vexp .  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	'*'  shift 26
+	'/'  shift 27
+	'+'  reduce 21
+	'-'  reduce 21
+	'\n'  reduce 21
+	')'  reduce 21
+
+
+state 47
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp '*' vexp .  (23)
+	vexp : vexp . '/' vexp  (25)
+
+	.  reduce 23
+
+
+state 48
+	vexp : vexp . '+' vexp  (19)
+	vexp : vexp . '-' vexp  (21)
+	vexp : vexp . '*' vexp  (23)
+	vexp : vexp . '/' vexp  (25)
+	vexp : vexp '/' vexp .  (25)
+
+	.  reduce 25
+
+
+state 49
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : '-' dexp .  (14)
+
+	.  reduce 14
+
+
+state 50
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : '(' dexp . ')'  (15)
+
+	'+'  shift 51
+	'-'  shift 52
+	'*'  shift 53
+	'/'  shift 54
+	')'  shift 34
+	.  error
+
+
+state 51
+	dexp : dexp '+' . dexp  (10)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 58
+
+
+state 52
+	dexp : dexp '-' . dexp  (11)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 59
+
+
+state 53
+	dexp : dexp '*' . dexp  (12)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 60
+
+
+state 54
+	dexp : dexp '/' . dexp  (13)
+
+	DREG  shift 13
+	CONST  shift 4
+	'-'  shift 29
+	'('  shift 30
+	.  error
+
+	dexp  goto 61
+
+
+state 55
+	line : DREG '=3D' dexp '\n' .  (5)
+
+	.  reduce 5
+
+
+state 56
+	line : VREG '=3D' vexp '\n' .  (6)
+
+	.  reduce 6
+
+
+state 57
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	vexp : '(' dexp ',' dexp . ')'  (17)
+
+	'+'  shift 51
+	'-'  shift 52
+	'*'  shift 53
+	'/'  shift 54
+	')'  shift 62
+	.  error
+
+
+state 58
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp '+' dexp .  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+
+	'*'  shift 53
+	'/'  shift 54
+	'+'  reduce 10
+	'-'  reduce 10
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+state 59
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp '-' dexp .  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+
+	'*'  shift 53
+	'/'  shift 54
+	'+'  reduce 11
+	'-'  reduce 11
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+state 60
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp '*' dexp .  (12)
+	dexp : dexp . '/' dexp  (13)
+
+	.  reduce 12
+
+
+state 61
+	dexp : dexp . '+' dexp  (10)
+	dexp : dexp . '-' dexp  (11)
+	dexp : dexp . '*' dexp  (12)
+	dexp : dexp . '/' dexp  (13)
+	dexp : dexp '/' dexp .  (13)
+
+	.  reduce 13
+
+
+state 62
+	vexp : '(' dexp ',' dexp ')' .  (17)
+
+	.  reduce 17
+
+
+Rules never reduced:
+	lines :  (1)
+	lines : lines line  (2)
+
+
+State 8 contains 5 shift/reduce conflicts.
+State 15 contains 6 reduce/reduce conflicts.
+State 17 contains 5 shift/reduce conflicts.
+State 32 contains 4 shift/reduce conflicts.
+State 37 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
+State 39 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
+State 41 contains 6 reduce/reduce conflicts.
+State 43 contains 6 reduce/reduce conflicts.
+
+
+15 terminals, 5 nonterminals
+29 grammar rules, 63 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc1.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc1.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,915 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    calc1_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc1_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc1_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc1_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc1_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc1_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc1_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc1_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc1_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc1_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc1_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc1_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc1_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc1_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc1_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc1_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc1_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc1_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc1_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc1_rule
+#endif /* yyrule */
+#define YYPREFIX "calc1_"
+
+#define YYPURE 0
+
+#line 2 "calc1.y"
+
+/* http://dinosaur.compilertools.net/yacc/index.html */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <math.h>
+
+typedef struct interval
+{
+    double lo, hi;
+}
+INTERVAL;
+
+INTERVAL vmul(double, double, INTERVAL);
+INTERVAL vdiv(double, double, INTERVAL);
+
+extern int yylex(void);
+static void yyerror(const char *s);
+
+int dcheck(INTERVAL);
+
+double dreg[26];
+INTERVAL vreg[26];
+
+#line 31 "calc1.y"
+#ifdef YYSTYPE
+#undef  YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+#endif
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union
+{
+	int ival;
+	double dval;
+	INTERVAL vval;
+} YYSTYPE;
+#endif /* !YYSTYPE_IS_DECLARED */
+#line 139 "calc1.tab.c"
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DREG 257
+#define VREG 258
+#define CONST 259
+#define UMINUS 260
+#define YYERRCODE 256
+static const short calc1_lhs[] =3D {                       -1,
+    3,    3,    0,    0,    0,    0,    0,    1,    1,    1,
+    1,    1,    1,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    2,    2,
+};
+static const short calc1_len[] =3D {                        2,
+    0,    2,    2,    2,    4,    4,    2,    1,    1,    3,
+    3,    3,    3,    2,    3,    1,    5,    1,    3,    3,
+    3,    3,    3,    3,    3,    3,    2,    3,
+};
+static const short calc1_defred[] =3D {                     0,
+    0,    0,    0,    8,    0,    0,    0,    0,    0,    7,
+    0,    0,    9,   18,   14,   27,    0,    0,    0,    0,
+    0,    0,    3,    0,    0,    0,    0,    4,    0,    0,
+    0,    0,    0,   15,    0,   28,    0,    0,    0,    0,
+   12,   24,   13,   26,    0,    0,   23,   25,   14,    0,
+    0,    0,    0,    0,    5,    6,    0,    0,    0,   12,
+   13,   17,
+};
+static const short calc1_dgoto[] =3D {                      7,
+   32,    9,    0,
+};
+static const short calc1_sindex[] =3D {                   -40,
+   -8,  -48,  -47,    0,  -37,  -37,    0,    2,   17,    0,
+  -34,  -37,    0,    0,    0,    0,  -25,   90,  -37,  -37,
+  -37,  -37,    0,  -37,  -37,  -37,  -37,    0,  -34,  -34,
+   25,  125,   31,    0,  -34,    0,  -11,   37,  -11,   37,
+    0,    0,    0,    0,   37,   37,    0,    0,    0,  111,
+  -34,  -34,  -34,  -34,    0,    0,  118,   69,   69,    0,
+    0,    0,
+};
+static const short calc1_rindex[] =3D {                     0,
+    0,   38,   44,    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,   -9,    0,    0,    0,    0,   51,   -3,   56,   61,
+    0,    0,    0,    0,   67,   72,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,   78,   83,    0,
+    0,    0,
+};
+static const short calc1_gindex[] =3D {                     0,
+    4,  124,    0,
+};
+#define YYTABLESIZE 225
+static const short calc1_table[] =3D {                      6,
+   16,   10,    6,    8,    5,   30,   20,    5,   15,   17,
+   29,   23,   11,   12,   31,   34,   21,   19,   35,   20,
+    0,   22,   37,   39,   41,   43,   28,    0,    0,    0,
+   21,   16,   49,   50,   55,   22,    0,   20,   57,   20,
+   56,   20,    0,   21,   19,    0,   20,    9,   22,    0,
+    0,    0,    0,   18,   58,   59,   60,   61,   26,   24,
+   10,   25,    0,   27,    0,   11,   53,   51,    0,   52,
+   22,   54,   26,   24,    0,   25,   19,   27,   26,    9,
+    9,   21,    9,   27,    9,   18,   18,   10,   18,    0,
+   18,   10,   11,   10,   10,   10,   11,    0,   11,   11,
+   11,   22,    0,   22,    0,   22,    0,   19,    0,   19,
+   53,   19,   21,    0,   21,   54,   21,    0,   10,    0,
+   10,    0,   10,   11,    0,   11,    0,   11,   16,   18,
+   36,   26,   24,    0,   25,   33,   27,    0,    0,    0,
+    0,    0,   38,   40,   42,   44,    0,   45,   46,   47,
+   48,   34,   53,   51,    0,   52,    0,   54,   62,   53,
+   51,    0,   52,    0,   54,    0,   21,   19,    0,   20,
+    0,   22,    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,    0,    0,    1,    2,    3,    4,   13,
+   14,    4,   13,    0,    4,
+};
+static const short calc1_check[] =3D {                     40,
+   10,   10,   40,    0,   45,   40,   10,   45,    5,    6,
+   45,   10,   61,   61,   11,   41,   42,   43,   44,   45,
+   -1,   47,   19,   20,   21,   22,   10,   -1,   -1,   -1,
+   42,   41,   29,   30,   10,   47,   -1,   41,   35,   43,
+   10,   45,   -1,   42,   43,   -1,   45,   10,   47,   -1,
+   -1,   -1,   -1,   10,   51,   52,   53,   54,   42,   43,
+   10,   45,   -1,   47,   -1,   10,   42,   43,   -1,   45,
+   10,   47,   42,   43,   -1,   45,   10,   47,   42,   42,
+   43,   10,   45,   47,   47,   42,   43,   10,   45,   -1,
+   47,   41,   10,   43,   44,   45,   41,   -1,   43,   44,
+   45,   41,   -1,   43,   -1,   45,   -1,   41,   -1,   43,
+   42,   45,   41,   -1,   43,   47,   45,   -1,   41,   -1,
+   43,   -1,   45,   41,   -1,   43,   -1,   45,    5,    6,
+   41,   42,   43,   -1,   45,   12,   47,   -1,   -1,   -1,
+   -1,   -1,   19,   20,   21,   22,   -1,   24,   25,   26,
+   27,   41,   42,   43,   -1,   45,   -1,   47,   41,   42,
+   43,   -1,   45,   -1,   47,   -1,   42,   43,   -1,   45,
+   -1,   47,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  259,  257,
+  258,  259,  257,   -1,  259,
+};
+#define YYFINAL 7
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 260
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,0,"'=3D'",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,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,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,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,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,"DREG","VREG","CONST","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : line",
+"lines :",
+"lines : lines line",
+"line : dexp '\\n'",
+"line : vexp '\\n'",
+"line : DREG '=3D' dexp '\\n'",
+"line : VREG '=3D' vexp '\\n'",
+"line : error '\\n'",
+"dexp : CONST",
+"dexp : DREG",
+"dexp : dexp '+' dexp",
+"dexp : dexp '-' dexp",
+"dexp : dexp '*' dexp",
+"dexp : dexp '/' dexp",
+"dexp : '-' dexp",
+"dexp : '(' dexp ')'",
+"vexp : dexp",
+"vexp : '(' dexp ',' dexp ')'",
+"vexp : VREG",
+"vexp : vexp '+' vexp",
+"vexp : dexp '+' vexp",
+"vexp : vexp '-' vexp",
+"vexp : dexp '-' vexp",
+"vexp : vexp '*' vexp",
+"vexp : dexp '*' vexp",
+"vexp : vexp '/' vexp",
+"vexp : dexp '/' vexp",
+"vexp : '-' vexp",
+"vexp : '(' vexp ')'",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 176 "calc1.y"
+	/* beginning of subroutines section */
+
+#define BSZ 50			/* buffer size for floating point numbers */
+
+	/* lexical analysis */
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+    int c;
+
+    while ((c =3D getchar()) =3D=3D ' ')
+    {				/* skip over blanks */
+    }
+
+    if (isupper(c))
+    {
+	yylval.ival =3D c - 'A';
+	return (VREG);
+    }
+    if (islower(c))
+    {
+	yylval.ival =3D c - 'a';
+	return (DREG);
+    }
+
+    if (isdigit(c) || c =3D=3D '.')
+    {
+	/* gobble up digits, points, exponents */
+	char buf[BSZ + 1], *cp =3D buf;
+	int dot =3D 0, expr =3D 0;
+
+	for (; (cp - buf) < BSZ; ++cp, c =3D getchar())
+	{
+
+	    *cp =3D c;
+	    if (isdigit(c))
+		continue;
+	    if (c =3D=3D '.')
+	    {
+		if (dot++ || expr)
+		    return ('.');	/* will cause syntax error */
+		continue;
+	    }
+
+	    if (c =3D=3D 'e')
+	    {
+		if (expr++)
+		    return ('e');	/*  will  cause  syntax  error  */
+		continue;
+	    }
+
+	    /*  end  of  number  */
+	    break;
+	}
+	*cp =3D '\0';
+
+	if ((cp - buf) >=3D BSZ)
+	    printf("constant  too  long:  truncated\n");
+	else
+	    ungetc(c, stdin);	/*  push  back  last  char  read  */
+	yylval.dval =3D atof(buf);
+	return (CONST);
+    }
+    return (c);
+}
+
+static INTERVAL
+hilo(double a, double b, double c, double d)
+{
+    /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  =
*/
+    /*  used  by  *,  /  routines  */
+    INTERVAL v;
+
+    if (a > b)
+    {
+	v.hi =3D a;
+	v.lo =3D b;
+    }
+    else
+    {
+	v.hi =3D b;
+	v.lo =3D a;
+    }
+
+    if (c > d)
+    {
+	if (c > v.hi)
+	    v.hi =3D c;
+	if (d < v.lo)
+	    v.lo =3D d;
+    }
+    else
+    {
+	if (d > v.hi)
+	    v.hi =3D d;
+	if (c < v.lo)
+	    v.lo =3D c;
+    }
+    return (v);
+}
+
+INTERVAL
+vmul(double a, double b, INTERVAL v)
+{
+    return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
+}
+
+int
+dcheck(INTERVAL v)
+{
+    if (v.hi >=3D 0. && v.lo <=3D 0.)
+    {
+	printf("divisor  interval  contains  0.\n");
+	return (1);
+    }
+    return (0);
+}
+
+INTERVAL
+vdiv(double a, double b, INTERVAL v)
+{
+    return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
+}
+#line 486 "calc1.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 57 "calc1.y"
+	{
+		(void) printf("%15.8f\n", yystack.l_mark[-1].dval);
+	}
+break;
+case 4:
+#line 61 "calc1.y"
+	{
+		(void) printf("(%15.8f, %15.8f)\n", yystack.l_mark[-1].vval.lo, yystack.=
l_mark[-1].vval.hi);
+	}
+break;
+case 5:
+#line 65 "calc1.y"
+	{
+		dreg[yystack.l_mark[-3].ival] =3D yystack.l_mark[-1].dval;
+	}
+break;
+case 6:
+#line 69 "calc1.y"
+	{
+		vreg[yystack.l_mark[-3].ival] =3D yystack.l_mark[-1].vval;
+	}
+break;
+case 7:
+#line 73 "calc1.y"
+	{
+		yyerrok;
+	}
+break;
+case 9:
+#line 80 "calc1.y"
+	{
+		yyval.dval =3D dreg[yystack.l_mark[0].ival];
+	}
+break;
+case 10:
+#line 84 "calc1.y"
+	{
+		yyval.dval =3D yystack.l_mark[-2].dval + yystack.l_mark[0].dval;
+	}
+break;
+case 11:
+#line 88 "calc1.y"
+	{
+		yyval.dval =3D yystack.l_mark[-2].dval - yystack.l_mark[0].dval;
+	}
+break;
+case 12:
+#line 92 "calc1.y"
+	{
+		yyval.dval =3D yystack.l_mark[-2].dval * yystack.l_mark[0].dval;
+	}
+break;
+case 13:
+#line 96 "calc1.y"
+	{
+		yyval.dval =3D yystack.l_mark[-2].dval / yystack.l_mark[0].dval;
+	}
+break;
+case 14:
+#line 100 "calc1.y"
+	{
+		yyval.dval =3D -yystack.l_mark[0].dval;
+	}
+break;
+case 15:
+#line 104 "calc1.y"
+	{
+		yyval.dval =3D yystack.l_mark[-1].dval;
+	}
+break;
+case 16:
+#line 110 "calc1.y"
+	{
+		yyval.vval.hi =3D yyval.vval.lo =3D yystack.l_mark[0].dval;
+	}
+break;
+case 17:
+#line 114 "calc1.y"
+	{
+		yyval.vval.lo =3D yystack.l_mark[-3].dval;
+		yyval.vval.hi =3D yystack.l_mark[-1].dval;
+		if ( yyval.vval.lo > yyval.vval.hi )=20
+		{
+			(void) printf("interval out of order\n");
+			YYERROR;
+		}
+	}
+break;
+case 18:
+#line 124 "calc1.y"
+	{
+		yyval.vval =3D vreg[yystack.l_mark[0].ival];
+	}
+break;
+case 19:
+#line 128 "calc1.y"
+	{
+		yyval.vval.hi =3D yystack.l_mark[-2].vval.hi + yystack.l_mark[0].vval.hi;
+		yyval.vval.lo =3D yystack.l_mark[-2].vval.lo + yystack.l_mark[0].vval.lo;
+	}
+break;
+case 20:
+#line 133 "calc1.y"
+	{
+		yyval.vval.hi =3D yystack.l_mark[-2].dval + yystack.l_mark[0].vval.hi;
+		yyval.vval.lo =3D yystack.l_mark[-2].dval + yystack.l_mark[0].vval.lo;
+	}
+break;
+case 21:
+#line 138 "calc1.y"
+	{
+		yyval.vval.hi =3D yystack.l_mark[-2].vval.hi - yystack.l_mark[0].vval.lo;
+		yyval.vval.lo =3D yystack.l_mark[-2].vval.lo - yystack.l_mark[0].vval.hi;
+	}
+break;
+case 22:
+#line 143 "calc1.y"
+	{
+		yyval.vval.hi =3D yystack.l_mark[-2].dval - yystack.l_mark[0].vval.lo;
+		yyval.vval.lo =3D yystack.l_mark[-2].dval - yystack.l_mark[0].vval.hi;
+	}
+break;
+case 23:
+#line 148 "calc1.y"
+	{
+		yyval.vval =3D vmul( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vval=
.hi, yystack.l_mark[0].vval );
+	}
+break;
+case 24:
+#line 152 "calc1.y"
+	{
+		yyval.vval =3D vmul (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, y=
ystack.l_mark[0].vval );
+	}
+break;
+case 25:
+#line 156 "calc1.y"
+	{
+		if (dcheck(yystack.l_mark[0].vval)) YYERROR;
+		yyval.vval =3D vdiv ( yystack.l_mark[-2].vval.lo, yystack.l_mark[-2].vva=
l.hi, yystack.l_mark[0].vval );
+	}
+break;
+case 26:
+#line 161 "calc1.y"
+	{
+		if (dcheck ( yystack.l_mark[0].vval )) YYERROR;
+		yyval.vval =3D vdiv (yystack.l_mark[-2].dval, yystack.l_mark[-2].dval, y=
ystack.l_mark[0].vval );
+	}
+break;
+case 27:
+#line 166 "calc1.y"
+	{
+		yyval.vval.hi =3D -yystack.l_mark[0].vval.lo;
+		yyval.vval.lo =3D -yystack.l_mark[0].vval.hi;
+	}
+break;
+case 28:
+#line 171 "calc1.y"
+	{
+		yyval.vval =3D yystack.l_mark[-1].vval;
+	}
+break;
+#line 855 "calc1.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc1.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc1.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,18 @@
+#define DREG 257
+#define VREG 258
+#define CONST 259
+#define UMINUS 260
+#ifdef YYSTYPE
+#undef  YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+#endif
+#ifndef YYSTYPE_IS_DECLARED
+#define YYSTYPE_IS_DECLARED 1
+typedef union
+{
+	int ival;
+	double dval;
+	INTERVAL vval;
+} YYSTYPE;
+#endif /* !YYSTYPE_IS_DECLARED */
+extern YYSTYPE calc1_lval;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc1.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc1.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,305 @@
+%{
+
+/* http://dinosaur.compilertools.net/yacc/index.html */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <math.h>
+
+typedef struct interval
+{
+    double lo, hi;
+}
+INTERVAL;
+
+INTERVAL vmul(double, double, INTERVAL);
+INTERVAL vdiv(double, double, INTERVAL);
+
+extern int yylex(void);
+static void yyerror(const char *s);
+
+int dcheck(INTERVAL);
+
+double dreg[26];
+INTERVAL vreg[26];
+
+%}
+%expect 18
+
+%start line
+%union
+{
+	int ival;
+	double dval;
+	INTERVAL vval;
+}
+
+%token <ival> DREG VREG		/* indices into dreg, vreg arrays */
+%token <dval> CONST		/* floating point constant */
+
+%type <dval> dexp		/* expression */
+%type <vval> vexp		/* interval expression */
+
+	/* precedence information about the operators */
+
+%left '+' '-'
+%left '*' '/'
+%left UMINUS			/* precedence for unary minus */
+
+%%	/* beginning of rules section */
+
+lines   : /* empty */
+	| lines line
+	;
+
+line	: dexp '\n'
+	{
+		(void) printf("%15.8f\n", $1);
+	}
+	| vexp '\n'
+	{
+		(void) printf("(%15.8f, %15.8f)\n", $1.lo, $1.hi);
+	}
+	| DREG '=3D' dexp '\n'
+	{
+		dreg[$1] =3D $3;
+	}
+	| VREG '=3D' vexp '\n'
+	{
+		vreg[$1] =3D $3;
+	}
+	| error '\n'
+	{
+		yyerrok;
+	}
+	;
+
+dexp	: CONST
+	| DREG
+	{
+		$$ =3D dreg[$1];
+	}
+	| dexp '+' dexp
+	{
+		$$ =3D $1 + $3;
+	}
+	| dexp '-' dexp
+	{
+		$$ =3D $1 - $3;
+	}
+	| dexp '*' dexp
+	{
+		$$ =3D $1 * $3;
+	}
+	| dexp '/' dexp
+	{
+		$$ =3D $1 / $3;
+	}
+	| '-' dexp %prec UMINUS
+	{
+		$$ =3D -$2;
+	}
+	| '(' dexp ')'
+	{
+		$$ =3D $2;
+	}
+	;
+
+vexp	: dexp
+	{
+		$$.hi =3D $$.lo =3D $1;
+	}
+	| '(' dexp ',' dexp ')'
+	{
+		$$.lo =3D $2;
+		$$.hi =3D $4;
+		if ( $$.lo > $$.hi )=20
+		{
+			(void) printf("interval out of order\n");
+			YYERROR;
+		}
+	}
+	| VREG
+	{
+		$$ =3D vreg[$1];
+	}
+	| vexp '+' vexp
+	{
+		$$.hi =3D $1.hi + $3.hi;
+		$$.lo =3D $1.lo + $3.lo;
+	}
+	| dexp '+' vexp
+	{
+		$$.hi =3D $1 + $3.hi;
+		$$.lo =3D $1 + $3.lo;
+	}
+	| vexp '-' vexp
+	{
+		$$.hi =3D $1.hi - $3.lo;
+		$$.lo =3D $1.lo - $3.hi;
+	}
+	| dexp '-' vexp
+	{
+		$$.hi =3D $1 - $3.lo;
+		$$.lo =3D $1 - $3.hi;
+	}
+	| vexp '*' vexp
+	{
+		$$ =3D vmul( $1.lo, $1.hi, $3 );
+	}
+	| dexp '*' vexp
+	{
+		$$ =3D vmul ($1, $1, $3 );
+	}
+	| vexp '/' vexp
+	{
+		if (dcheck($3)) YYERROR;
+		$$ =3D vdiv ( $1.lo, $1.hi, $3 );
+	}
+	| dexp '/' vexp
+	{
+		if (dcheck ( $3 )) YYERROR;
+		$$ =3D vdiv ($1, $1, $3 );
+	}
+	| '-' vexp %prec UMINUS
+	{
+		$$.hi =3D -$2.lo;
+		$$.lo =3D -$2.hi;
+	}
+	| '(' vexp ')'
+	{
+		$$ =3D $2;
+	}
+	;
+
+%%	/* beginning of subroutines section */
+
+#define BSZ 50			/* buffer size for floating point numbers */
+
+	/* lexical analysis */
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+    int c;
+
+    while ((c =3D getchar()) =3D=3D ' ')
+    {				/* skip over blanks */
+    }
+
+    if (isupper(c))
+    {
+	yylval.ival =3D c - 'A';
+	return (VREG);
+    }
+    if (islower(c))
+    {
+	yylval.ival =3D c - 'a';
+	return (DREG);
+    }
+
+    if (isdigit(c) || c =3D=3D '.')
+    {
+	/* gobble up digits, points, exponents */
+	char buf[BSZ + 1], *cp =3D buf;
+	int dot =3D 0, expr =3D 0;
+
+	for (; (cp - buf) < BSZ; ++cp, c =3D getchar())
+	{
+
+	    *cp =3D c;
+	    if (isdigit(c))
+		continue;
+	    if (c =3D=3D '.')
+	    {
+		if (dot++ || expr)
+		    return ('.');	/* will cause syntax error */
+		continue;
+	    }
+
+	    if (c =3D=3D 'e')
+	    {
+		if (expr++)
+		    return ('e');	/*  will  cause  syntax  error  */
+		continue;
+	    }
+
+	    /*  end  of  number  */
+	    break;
+	}
+	*cp =3D '\0';
+
+	if ((cp - buf) >=3D BSZ)
+	    printf("constant  too  long:  truncated\n");
+	else
+	    ungetc(c, stdin);	/*  push  back  last  char  read  */
+	yylval.dval =3D atof(buf);
+	return (CONST);
+    }
+    return (c);
+}
+
+static INTERVAL
+hilo(double a, double b, double c, double d)
+{
+    /*  returns  the  smallest  interval  containing  a,  b,  c,  and  d  =
*/
+    /*  used  by  *,  /  routines  */
+    INTERVAL v;
+
+    if (a > b)
+    {
+	v.hi =3D a;
+	v.lo =3D b;
+    }
+    else
+    {
+	v.hi =3D b;
+	v.lo =3D a;
+    }
+
+    if (c > d)
+    {
+	if (c > v.hi)
+	    v.hi =3D c;
+	if (d < v.lo)
+	    v.lo =3D d;
+    }
+    else
+    {
+	if (d > v.hi)
+	    v.hi =3D d;
+	if (c < v.lo)
+	    v.lo =3D c;
+    }
+    return (v);
+}
+
+INTERVAL
+vmul(double a, double b, INTERVAL v)
+{
+    return (hilo(a * v.hi, a * v.lo, b * v.hi, b * v.lo));
+}
+
+int
+dcheck(INTERVAL v)
+{
+    if (v.hi >=3D 0. && v.lo <=3D 0.)
+    {
+	printf("divisor  interval  contains  0.\n");
+	return (1);
+    }
+    return (0);
+}
+
+INTERVAL
+vdiv(double a, double b, INTERVAL v)
+{
+    return (hilo(a / v.hi, a / v.lo, b / v.hi, b / v.lo));
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc2.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc2.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,461 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr '+' expr
+   8       | expr '-' expr
+   9       | expr '*' expr
+  10       | expr '/' expr
+  11       | expr '%' expr
+  12       | expr '&' expr
+  13       | expr '|' expr
+  14       | '-' expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	DIGIT  shift 3
+	LETTER  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 4
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 11
+	'|'  reduce 15
+	'&'  reduce 15
+	'+'  reduce 15
+	'-'  reduce 15
+	'*'  reduce 15
+	'/'  reduce 15
+	'%'  reduce 15
+	'\n'  reduce 15
+
+
+state 5
+	expr : '-' . expr  (14)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 13
+	number  goto 9
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	'|'  reduce 16
+	'&'  reduce 16
+	'+'  reduce 16
+	'-'  reduce 16
+	'*'  reduce 16
+	'/'  reduce 16
+	'%'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	stat : LETTER '=3D' . expr  (5)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 12
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+state 13
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : '-' expr .  (14)
+
+	.  reduce 14
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr '|' . expr  (13)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr '&' . expr  (12)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr '+' . expr  (7)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr '-' . expr  (8)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr '*' . expr  (9)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr '/' . expr  (10)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '%' . expr  (11)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+state 26
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+state 27
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr '&' expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 12
+	'&'  reduce 12
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+state 28
+	expr : expr . '+' expr  (7)
+	expr : expr '+' expr .  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 7
+	'&'  reduce 7
+	'+'  reduce 7
+	'-'  reduce 7
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+state 29
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr '-' expr .  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 8
+	'&'  reduce 8
+	'+'  reduce 8
+	'-'  reduce 8
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+state 30
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr '*' expr .  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 9
+
+
+state 31
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr '/' expr .  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 10
+
+
+state 32
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr '%' expr .  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 11
+
+
+16 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc2.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc2.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,682 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    calc2_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc2_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc2_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc2_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc2_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc2_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc2_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc2_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc2_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc2_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc2_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc2_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc2_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc2_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc2_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc2_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc2_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc2_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc2_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc2_rule
+#endif /* yyrule */
+#define YYPREFIX "calc2_"
+
+#define YYPURE 0
+
+#line 7 "calc2.y"
+# include <stdio.h>
+# include <ctype.h>
+
+#ifdef YYBISON
+#define YYLEX_PARAM base
+#define YYLEX_DECL() yylex(int *YYLEX_PARAM)
+#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+#line 111 "calc2.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(int  regs[26], int * base)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(int * base)
+# define YYLEX yylex(base)
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(int  regs[26], int * base, const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(regs, base, msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+static const short calc2_lhs[] =3D {                       -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short calc2_len[] =3D {                        2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short calc2_defred[] =3D {                     1,
+    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
+    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
+   10,   11,
+};
+static const short calc2_dgoto[] =3D {                      1,
+    7,    8,    9,
+};
+static const short calc2_sindex[] =3D {                     0,
+  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
+  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
+  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
+    0,    0,
+};
+static const short calc2_rindex[] =3D {                     0,
+    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
+    0,    0,
+};
+static const short calc2_gindex[] =3D {                     0,
+    0,   65,    0,
+};
+#define YYTABLESIZE 220
+static const short calc2_table[] =3D {                      6,
+   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
+   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
+    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
+    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
+    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
+    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
+    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
+   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
+    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
+    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
+    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
+    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
+    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
+    0,    0,    0,    0,    0,   16,    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,    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,    2,    3,    4,    3,   12,
+};
+static const short calc2_check[] =3D {                     40,
+   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
+   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
+   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
+   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
+   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
+   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
+   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
+    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
+   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
+   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "calc2.y"
+ /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    int regs[26];
+    int base =3D 10;
+
+    while(!feof(stdin)) {
+	yyparse(regs, &base);
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D (c - '0') % (*base);
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 356 "calc2.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror(regs, base, "syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "calc2.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "calc2.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "calc2.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "calc2.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "calc2.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "calc2.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "calc2.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "calc2.y"
+	{  yyval =3D yystack.l_mark[0]; (*base) =3D (yystack.l_mark[0]=3D=3D0) ? =
8 : 10; }
+break;
+case 18:
+#line 70 "calc2.y"
+	{  yyval =3D (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 622 "calc2.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror(regs, base, "yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc2.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc2.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc2.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc2.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,120 @@
+%parse-param { int regs[26] }
+%parse-param { int *base }
+
+%lex-param { int *base }
+
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+#ifdef YYBISON
+#define YYLEX_PARAM base
+#define YYLEX_DECL() yylex(int *YYLEX_PARAM)
+#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr '+' expr
+            {  $$ =3D $1 + $3; }
+      |  expr '-' expr
+            {  $$ =3D $1 - $3; }
+      |  expr '*' expr
+            {  $$ =3D $1 * $3; }
+      |  expr '/' expr
+            {  $$ =3D $1 / $3; }
+      |  expr '%' expr
+            {  $$ =3D $1 % $3; }
+      |  expr '&' expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  '-' expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; (*base) =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D (*base) * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    int regs[26];
+    int base =3D 10;
+
+    while(!feof(stdin)) {
+	yyparse(regs, &base);
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D (c - '0') % (*base);
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc3.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc3.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,461 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr '+' expr
+   8       | expr '-' expr
+   9       | expr '*' expr
+  10       | expr '/' expr
+  11       | expr '%' expr
+  12       | expr '&' expr
+  13       | expr '|' expr
+  14       | '-' expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	DIGIT  shift 3
+	LETTER  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 4
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 11
+	'|'  reduce 15
+	'&'  reduce 15
+	'+'  reduce 15
+	'-'  reduce 15
+	'*'  reduce 15
+	'/'  reduce 15
+	'%'  reduce 15
+	'\n'  reduce 15
+
+
+state 5
+	expr : '-' . expr  (14)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 13
+	number  goto 9
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	'|'  reduce 16
+	'&'  reduce 16
+	'+'  reduce 16
+	'-'  reduce 16
+	'*'  reduce 16
+	'/'  reduce 16
+	'%'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	stat : LETTER '=3D' . expr  (5)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 12
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+state 13
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : '-' expr .  (14)
+
+	.  reduce 14
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr '|' . expr  (13)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr '&' . expr  (12)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr '+' . expr  (7)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr '-' . expr  (8)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr '*' . expr  (9)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr '/' . expr  (10)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '%' . expr  (11)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+state 26
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+state 27
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr '&' expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 12
+	'&'  reduce 12
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+state 28
+	expr : expr . '+' expr  (7)
+	expr : expr '+' expr .  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 7
+	'&'  reduce 7
+	'+'  reduce 7
+	'-'  reduce 7
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+state 29
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr '-' expr .  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 8
+	'&'  reduce 8
+	'+'  reduce 8
+	'-'  reduce 8
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+state 30
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr '*' expr .  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 9
+
+
+state 31
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr '/' expr .  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 10
+
+
+state 32
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr '%' expr .  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 11
+
+
+16 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc3.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc3.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,687 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    calc3_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc3_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc3_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc3_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc3_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc3_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc3_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc3_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc3_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc3_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc3_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc3_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc3_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc3_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc3_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc3_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc3_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc3_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc3_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc3_rule
+#endif /* yyrule */
+#define YYPREFIX "calc3_"
+
+#define YYPURE 1
+
+#line 9 "calc3.y"
+# include <stdio.h>
+# include <ctype.h>
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM base
+#define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)
+#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+#line 112 "calc3.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(int  regs[26], int * base)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# ifdef YYLEX_PARAM_TYPE
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
+# else
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
+# endif
+# define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(YYSTYPE *yylval, int * base)
+# define YYLEX yylex(&yylval, base)
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(int  regs[26], int * base, const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(regs, base, msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+static const short calc3_lhs[] =3D {                       -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short calc3_len[] =3D {                        2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short calc3_defred[] =3D {                     1,
+    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
+    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
+   10,   11,
+};
+static const short calc3_dgoto[] =3D {                      1,
+    7,    8,    9,
+};
+static const short calc3_sindex[] =3D {                     0,
+  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
+  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
+  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
+    0,    0,
+};
+static const short calc3_rindex[] =3D {                     0,
+    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
+    0,    0,
+};
+static const short calc3_gindex[] =3D {                     0,
+    0,   65,    0,
+};
+#define YYTABLESIZE 220
+static const short calc3_table[] =3D {                      6,
+   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
+   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
+    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
+    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
+    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
+    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
+    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
+   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
+    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
+    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
+    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
+    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
+    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
+    0,    0,    0,    0,    0,   16,    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,    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,    2,    3,    4,    3,   12,
+};
+static const short calc3_check[] =3D {                     40,
+   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
+   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
+   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
+   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
+   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
+   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
+   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
+    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
+   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
+   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+#line 76 "calc3.y"
+ /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    int regs[26];
+    int base =3D 10;
+
+    while(!feof(stdin)) {
+	yyparse(regs, &base);
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	*yylval =3D (c - 'a');
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	*yylval =3D (c - '0') % (*base);
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 354 "calc3.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int      yyerrflag;
+    int      yychar;
+    YYSTYPE  yyval;
+    YYSTYPE  yylval;
+
+    /* variables for the parser stack */
+    YYSTACKDATA yystack;
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror(regs, base, "syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 38 "calc3.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 42 "calc3.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 44 "calc3.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 48 "calc3.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 50 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 52 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 54 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 56 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 58 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 60 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 62 "calc3.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 64 "calc3.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 66 "calc3.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 71 "calc3.y"
+	{  yyval =3D yystack.l_mark[0]; (*base) =3D (yystack.l_mark[0]=3D=3D0) ? =
8 : 10; }
+break;
+case 18:
+#line 73 "calc3.y"
+	{  yyval =3D (*base) * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 627 "calc3.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror(regs, base, "yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc3.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc3.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/calc3.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/calc3.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,123 @@
+%pure-parser
+
+%parse-param { int regs[26] }
+%parse-param { int *base }
+
+%lex-param { int *base }
+
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM base
+#define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)
+#define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr '+' expr
+            {  $$ =3D $1 + $3; }
+      |  expr '-' expr
+            {  $$ =3D $1 - $3; }
+      |  expr '*' expr
+            {  $$ =3D $1 * $3; }
+      |  expr '/' expr
+            {  $$ =3D $1 / $3; }
+      |  expr '%' expr
+            {  $$ =3D $1 % $3; }
+      |  expr '&' expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  '-' expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; (*base) =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D (*base) * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    int regs[26];
+    int base =3D 10;
+
+    while(!feof(stdin)) {
+	yyparse(regs, &base);
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	*yylval =3D (c - 'a');
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	*yylval =3D (c - '0') % (*base);
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_calc.code=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_calc.code.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,580 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#define YYPURE 0
+
+#line 2 "code_calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *s);
+#endif
+
+#line 30 "code_calc.code.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+#define YYTABLESIZE 220
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+
+#ifndef yyparse
+#define yyparse    calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc_rule
+#endif /* yyrule */
+#define YYPREFIX "calc_"
+
+extern int YYPARSE_DECL();
+extern short yylhs[];
+extern short yylen[];
+extern short yydefred[];
+extern short yydgoto[];
+extern short yysindex[];
+extern short yyrindex[];
+extern short yygindex[];
+extern short yytable[];
+extern short yycheck[];
+
+#if YYDEBUG
+extern char *yyname[];
+extern char *yyrule[];
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 68 "code_calc.y"
+ /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 254 "code_calc.code.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 30 "code_calc.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 34 "code_calc.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 36 "code_calc.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 40 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 42 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 44 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 46 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 48 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 50 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 52 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 54 "code_calc.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 56 "code_calc.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 58 "code_calc.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 63 "code_calc.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 65 "code_calc.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 520 "code_calc.code.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_calc.outp=
ut
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_calc.output	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,461 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr '+' expr
+   8       | expr '-' expr
+   9       | expr '*' expr
+  10       | expr '/' expr
+  11       | expr '%' expr
+  12       | expr '&' expr
+  13       | expr '|' expr
+  14       | '-' expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	DIGIT  shift 3
+	LETTER  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 4
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 11
+	'|'  reduce 15
+	'&'  reduce 15
+	'+'  reduce 15
+	'-'  reduce 15
+	'*'  reduce 15
+	'/'  reduce 15
+	'%'  reduce 15
+	'\n'  reduce 15
+
+
+state 5
+	expr : '-' . expr  (14)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 13
+	number  goto 9
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	'|'  reduce 16
+	'&'  reduce 16
+	'+'  reduce 16
+	'-'  reduce 16
+	'*'  reduce 16
+	'/'  reduce 16
+	'%'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	stat : LETTER '=3D' . expr  (5)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 12
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+state 13
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : '-' expr .  (14)
+
+	.  reduce 14
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr '|' . expr  (13)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr '&' . expr  (12)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr '+' . expr  (7)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr '-' . expr  (8)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr '*' . expr  (9)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr '/' . expr  (10)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '%' . expr  (11)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+state 26
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+state 27
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr '&' expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 12
+	'&'  reduce 12
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+state 28
+	expr : expr . '+' expr  (7)
+	expr : expr '+' expr .  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 7
+	'&'  reduce 7
+	'+'  reduce 7
+	'-'  reduce 7
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+state 29
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr '-' expr .  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 8
+	'&'  reduce 8
+	'+'  reduce 8
+	'-'  reduce 8
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+state 30
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr '*' expr .  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 9
+
+
+state 31
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr '/' expr .  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 10
+
+
+state 32
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr '%' expr .  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 11
+
+
+16 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_calc.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_calc.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,199 @@
+
+#ifndef yyparse
+#define yyparse    calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc_rule
+#endif /* yyrule */
+#define YYPREFIX "calc_"
+const short calc_lhs[] =3D {                        -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+const short calc_len[] =3D {                         2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+const short calc_defred[] =3D {                      1,
+    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
+    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
+   10,   11,
+};
+const short calc_dgoto[] =3D {                       1,
+    7,    8,    9,
+};
+const short calc_sindex[] =3D {                      0,
+  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
+  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
+  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
+    0,    0,
+};
+const short calc_rindex[] =3D {                      0,
+    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
+    0,    0,
+};
+const short calc_gindex[] =3D {                      0,
+    0,   65,    0,
+};
+const short calc_table[] =3D {                       6,
+   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
+   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
+    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
+    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
+    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
+    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
+    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
+   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
+    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
+    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
+    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
+    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
+    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
+    0,    0,    0,    0,    0,   16,    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,    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,    2,    3,    4,    3,   12,
+};
+const short calc_check[] =3D {                      40,
+   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
+   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
+   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
+   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
+   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
+   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
+   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
+    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
+   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
+   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
+};
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#if YYDEBUG
+const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"DIGIT","LETTER","UMINUS",
+};
+const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_calc.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_calc.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_calc.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_calc.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *s);
+#endif
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr '+' expr
+            {  $$ =3D $1 + $3; }
+      |  expr '-' expr
+            {  $$ =3D $1 - $3; }
+      |  expr '*' expr
+            {  $$ =3D $1 * $3; }
+      |  expr '/' expr
+            {  $$ =3D $1 / $3; }
+      |  expr '%' expr
+            {  $$ =3D $1 % $3; }
+      |  expr '&' expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  '-' expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void)
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_error.cod=
e.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_error.code.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,491 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#define YYPURE 0
+
+#line 2 "code_error.y"
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *);
+#endif
+
+#line 25 "code_error.code.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define YYERRCODE 256
+#define YYTABLESIZE 0
+#define YYFINAL 2
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 0
+
+#ifndef yyparse
+#define yyparse    error_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      error_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    error_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     error_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      error_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     error_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    error_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    error_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  error_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      error_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      error_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   error_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    error_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   error_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   error_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   error_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    error_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    error_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     error_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     error_rule
+#endif /* yyrule */
+#define YYPREFIX "error_"
+
+extern int YYPARSE_DECL();
+extern short yylhs[];
+extern short yylen[];
+extern short yydefred[];
+extern short yydgoto[];
+extern short yysindex[];
+extern short yyrindex[];
+extern short yygindex[];
+extern short yytable[];
+extern short yycheck[];
+
+#if YYDEBUG
+extern char *yyname[];
+extern char *yyrule[];
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 12 "code_error.y"
+
+#include <stdio.h>
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(void)
+{
+    return -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
+#line 226 "code_error.code.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_error.out=
put
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_error.output	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,27 @@
+   0  $accept : S $end
+
+   1  S : error
+=0C
+state 0
+	$accept : . S $end  (0)
+
+	error  shift 1
+	.  error
+
+	S  goto 2
+
+
+state 1
+	S : error .  (1)
+
+	.  reduce 1
+
+
+state 2
+	$accept : S . $end  (0)
+
+	$end  accept
+
+
+2 terminals, 2 nonterminals
+2 grammar rules, 3 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_error.tab=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_error.tab.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,118 @@
+
+#ifndef yyparse
+#define yyparse    error_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      error_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    error_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     error_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      error_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     error_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    error_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    error_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  error_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      error_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      error_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   error_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    error_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   error_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   error_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   error_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    error_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    error_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     error_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     error_rule
+#endif /* yyrule */
+#define YYPREFIX "error_"
+const short error_lhs[] =3D {                       -1,
+    0,
+};
+const short error_len[] =3D {                        2,
+    1,
+};
+const short error_defred[] =3D {                     0,
+    1,    0,
+};
+const short error_dgoto[] =3D {                      2,
+};
+const short error_sindex[] =3D {                  -256,
+    0,    0,
+};
+const short error_rindex[] =3D {                     0,
+    0,    0,
+};
+const short error_gindex[] =3D {                     0,
+};
+const short error_table[] =3D {                      1,
+};
+const short error_check[] =3D {                    256,
+};
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#if YYDEBUG
+const char *yyname[] =3D {
+
+"end-of-file",
+};
+const char *yyrule[] =3D {
+"$accept : S",
+"S : error",
+
+};
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/code_error.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/code_error.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,36 @@
+%{
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *);
+#endif
+
+%}
+%%
+S: error
+%%
+
+#include <stdio.h>
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(void)
+{
+    return -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/error.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/error.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,27 @@
+   0  $accept : S $end
+
+   1  S : error
+=0C
+state 0
+	$accept : . S $end  (0)
+
+	error  shift 1
+	.  error
+
+	S  goto 2
+
+
+state 1
+	S : error .  (1)
+
+	.  reduce 1
+
+
+state 2
+	$accept : S . $end  (0)
+
+	$end  accept
+
+
+2 terminals, 2 nonterminals
+2 grammar rules, 3 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/error.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/error.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,501 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    error_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      error_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    error_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     error_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      error_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     error_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    error_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    error_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  error_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      error_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      error_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   error_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    error_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   error_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   error_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   error_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    error_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    error_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     error_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     error_rule
+#endif /* yyrule */
+#define YYPREFIX "error_"
+
+#define YYPURE 0
+
+#line 2 "error.y"
+int yylex(void);
+static void yyerror(const char *);
+#line 102 "error.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define YYERRCODE 256
+static const short error_lhs[] =3D {                       -1,
+    0,
+};
+static const short error_len[] =3D {                        2,
+    1,
+};
+static const short error_defred[] =3D {                     0,
+    1,    0,
+};
+static const short error_dgoto[] =3D {                      2,
+};
+static const short error_sindex[] =3D {                  -256,
+    0,    0,
+};
+static const short error_rindex[] =3D {                     0,
+    0,    0,
+};
+static const short error_gindex[] =3D {                     0,
+};
+#define YYTABLESIZE 0
+static const short error_table[] =3D {                      1,
+};
+static const short error_check[] =3D {                    256,
+};
+#define YYFINAL 2
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 0
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",
+};
+static const char *yyrule[] =3D {
+"$accept : S",
+"S : error",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 8 "error.y"
+
+#include <stdio.h>
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(void)
+{
+    return -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
+#line 236 "error.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/error.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/error.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,28 @@
+%{
+int yylex(void);
+static void yyerror(const char *);
+%}
+%%
+S: error
+%%
+
+#include <stdio.h>
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(void)
+{
+    return -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/ftp.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/ftp.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1625 @@
+   0  $accept : cmd_list $end
+
+   1  cmd_list :
+   2           | cmd_list cmd
+   3           | cmd_list rcmd
+
+   4  cmd : USER SP username CRLF
+   5      | PASS SP password CRLF
+   6      | PORT SP host_port CRLF
+   7      | PASV CRLF
+   8      | TYPE SP type_code CRLF
+   9      | STRU SP struct_code CRLF
+  10      | MODE SP mode_code CRLF
+  11      | ALLO SP NUMBER CRLF
+  12      | ALLO SP NUMBER SP R SP NUMBER CRLF
+  13      | RETR check_login SP pathname CRLF
+  14      | STOR check_login SP pathname CRLF
+  15      | APPE check_login SP pathname CRLF
+  16      | NLST check_login CRLF
+  17      | NLST check_login SP STRING CRLF
+  18      | LIST check_login CRLF
+  19      | LIST check_login SP pathname CRLF
+  20      | STAT check_login SP pathname CRLF
+  21      | STAT CRLF
+  22      | DELE check_login SP pathname CRLF
+  23      | RNTO SP pathname CRLF
+  24      | ABOR CRLF
+  25      | CWD check_login CRLF
+  26      | CWD check_login SP pathname CRLF
+  27      | HELP CRLF
+  28      | HELP SP STRING CRLF
+  29      | NOOP CRLF
+  30      | MKD check_login SP pathname CRLF
+  31      | RMD check_login SP pathname CRLF
+  32      | PWD check_login CRLF
+  33      | CDUP check_login CRLF
+  34      | SITE SP HELP CRLF
+  35      | SITE SP HELP SP STRING CRLF
+  36      | SITE SP UMASK check_login CRLF
+  37      | SITE SP UMASK check_login SP octal_number CRLF
+  38      | SITE SP CHMOD check_login SP octal_number SP pathname CRLF
+  39      | SITE SP IDLE CRLF
+  40      | SITE SP IDLE SP NUMBER CRLF
+  41      | STOU check_login SP pathname CRLF
+  42      | SYST CRLF
+  43      | SIZE check_login SP pathname CRLF
+  44      | MDTM check_login SP pathname CRLF
+  45      | QUIT CRLF
+  46      | error CRLF
+
+  47  rcmd : RNFR check_login SP pathname CRLF
+
+  48  username : STRING
+
+  49  password :
+  50           | STRING
+
+  51  byte_size : NUMBER
+
+  52  host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMB=
ER COMMA NUMBER
+
+  53  form_code : N
+  54            | T
+  55            | C
+
+  56  type_code : A
+  57            | A SP form_code
+  58            | E
+  59            | E SP form_code
+  60            | I
+  61            | L
+  62            | L SP byte_size
+  63            | L byte_size
+
+  64  struct_code : F
+  65              | R
+  66              | P
+
+  67  mode_code : S
+  68            | B
+  69            | C
+
+  70  pathname : pathstring
+
+  71  pathstring : STRING
+
+  72  octal_number : NUMBER
+
+  73  check_login :
+=0C
+state 0
+	$accept : . cmd_list $end  (0)
+	cmd_list : .  (1)
+
+	.  reduce 1
+
+	cmd_list  goto 1
+
+
+state 1
+	$accept : cmd_list . $end  (0)
+	cmd_list : cmd_list . cmd  (2)
+	cmd_list : cmd_list . rcmd  (3)
+
+	$end  accept
+	error  shift 2
+	USER  shift 3
+	PASS  shift 4
+	QUIT  shift 5
+	PORT  shift 6
+	PASV  shift 7
+	TYPE  shift 8
+	STRU  shift 9
+	MODE  shift 10
+	RETR  shift 11
+	STOR  shift 12
+	APPE  shift 13
+	ALLO  shift 14
+	RNFR  shift 15
+	RNTO  shift 16
+	ABOR  shift 17
+	DELE  shift 18
+	CWD  shift 19
+	LIST  shift 20
+	NLST  shift 21
+	SITE  shift 22
+	STAT  shift 23
+	HELP  shift 24
+	NOOP  shift 25
+	MKD  shift 26
+	RMD  shift 27
+	PWD  shift 28
+	CDUP  shift 29
+	STOU  shift 30
+	SYST  shift 31
+	SIZE  shift 32
+	MDTM  shift 33
+	.  error
+
+	cmd  goto 34
+	rcmd  goto 35
+
+
+state 2
+	cmd : error . CRLF  (46)
+
+	CRLF  shift 36
+	.  error
+
+
+state 3
+	cmd : USER . SP username CRLF  (4)
+
+	SP  shift 37
+	.  error
+
+
+state 4
+	cmd : PASS . SP password CRLF  (5)
+
+	SP  shift 38
+	.  error
+
+
+state 5
+	cmd : QUIT . CRLF  (45)
+
+	CRLF  shift 39
+	.  error
+
+
+state 6
+	cmd : PORT . SP host_port CRLF  (6)
+
+	SP  shift 40
+	.  error
+
+
+state 7
+	cmd : PASV . CRLF  (7)
+
+	CRLF  shift 41
+	.  error
+
+
+state 8
+	cmd : TYPE . SP type_code CRLF  (8)
+
+	SP  shift 42
+	.  error
+
+
+state 9
+	cmd : STRU . SP struct_code CRLF  (9)
+
+	SP  shift 43
+	.  error
+
+
+state 10
+	cmd : MODE . SP mode_code CRLF  (10)
+
+	SP  shift 44
+	.  error
+
+
+state 11
+	cmd : RETR . check_login SP pathname CRLF  (13)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 45
+
+
+state 12
+	cmd : STOR . check_login SP pathname CRLF  (14)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 46
+
+
+state 13
+	cmd : APPE . check_login SP pathname CRLF  (15)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 47
+
+
+state 14
+	cmd : ALLO . SP NUMBER CRLF  (11)
+	cmd : ALLO . SP NUMBER SP R SP NUMBER CRLF  (12)
+
+	SP  shift 48
+	.  error
+
+
+state 15
+	rcmd : RNFR . check_login SP pathname CRLF  (47)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 49
+
+
+state 16
+	cmd : RNTO . SP pathname CRLF  (23)
+
+	SP  shift 50
+	.  error
+
+
+state 17
+	cmd : ABOR . CRLF  (24)
+
+	CRLF  shift 51
+	.  error
+
+
+state 18
+	cmd : DELE . check_login SP pathname CRLF  (22)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 52
+
+
+state 19
+	cmd : CWD . check_login CRLF  (25)
+	cmd : CWD . check_login SP pathname CRLF  (26)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 53
+
+
+state 20
+	cmd : LIST . check_login CRLF  (18)
+	cmd : LIST . check_login SP pathname CRLF  (19)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 54
+
+
+state 21
+	cmd : NLST . check_login CRLF  (16)
+	cmd : NLST . check_login SP STRING CRLF  (17)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 55
+
+
+state 22
+	cmd : SITE . SP HELP CRLF  (34)
+	cmd : SITE . SP HELP SP STRING CRLF  (35)
+	cmd : SITE . SP UMASK check_login CRLF  (36)
+	cmd : SITE . SP UMASK check_login SP octal_number CRLF  (37)
+	cmd : SITE . SP CHMOD check_login SP octal_number SP pathname CRLF  (38)
+	cmd : SITE . SP IDLE CRLF  (39)
+	cmd : SITE . SP IDLE SP NUMBER CRLF  (40)
+
+	SP  shift 56
+	.  error
+
+
+state 23
+	cmd : STAT . check_login SP pathname CRLF  (20)
+	cmd : STAT . CRLF  (21)
+	check_login : .  (73)
+
+	CRLF  shift 57
+	SP  reduce 73
+
+	check_login  goto 58
+
+
+state 24
+	cmd : HELP . CRLF  (27)
+	cmd : HELP . SP STRING CRLF  (28)
+
+	SP  shift 59
+	CRLF  shift 60
+	.  error
+
+
+state 25
+	cmd : NOOP . CRLF  (29)
+
+	CRLF  shift 61
+	.  error
+
+
+state 26
+	cmd : MKD . check_login SP pathname CRLF  (30)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 62
+
+
+state 27
+	cmd : RMD . check_login SP pathname CRLF  (31)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 63
+
+
+state 28
+	cmd : PWD . check_login CRLF  (32)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 64
+
+
+state 29
+	cmd : CDUP . check_login CRLF  (33)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 65
+
+
+state 30
+	cmd : STOU . check_login SP pathname CRLF  (41)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 66
+
+
+state 31
+	cmd : SYST . CRLF  (42)
+
+	CRLF  shift 67
+	.  error
+
+
+state 32
+	cmd : SIZE . check_login SP pathname CRLF  (43)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 68
+
+
+state 33
+	cmd : MDTM . check_login SP pathname CRLF  (44)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 69
+
+
+state 34
+	cmd_list : cmd_list cmd .  (2)
+
+	.  reduce 2
+
+
+state 35
+	cmd_list : cmd_list rcmd .  (3)
+
+	.  reduce 3
+
+
+state 36
+	cmd : error CRLF .  (46)
+
+	.  reduce 46
+
+
+state 37
+	cmd : USER SP . username CRLF  (4)
+
+	STRING  shift 70
+	.  error
+
+	username  goto 71
+
+
+state 38
+	cmd : PASS SP . password CRLF  (5)
+	password : .  (49)
+
+	STRING  shift 72
+	CRLF  reduce 49
+
+	password  goto 73
+
+
+state 39
+	cmd : QUIT CRLF .  (45)
+
+	.  reduce 45
+
+
+state 40
+	cmd : PORT SP . host_port CRLF  (6)
+
+	NUMBER  shift 74
+	.  error
+
+	host_port  goto 75
+
+
+state 41
+	cmd : PASV CRLF .  (7)
+
+	.  reduce 7
+
+
+state 42
+	cmd : TYPE SP . type_code CRLF  (8)
+
+	A  shift 76
+	E  shift 77
+	I  shift 78
+	L  shift 79
+	.  error
+
+	type_code  goto 80
+
+
+state 43
+	cmd : STRU SP . struct_code CRLF  (9)
+
+	F  shift 81
+	P  shift 82
+	R  shift 83
+	.  error
+
+	struct_code  goto 84
+
+
+state 44
+	cmd : MODE SP . mode_code CRLF  (10)
+
+	B  shift 85
+	C  shift 86
+	S  shift 87
+	.  error
+
+	mode_code  goto 88
+
+
+state 45
+	cmd : RETR check_login . SP pathname CRLF  (13)
+
+	SP  shift 89
+	.  error
+
+
+state 46
+	cmd : STOR check_login . SP pathname CRLF  (14)
+
+	SP  shift 90
+	.  error
+
+
+state 47
+	cmd : APPE check_login . SP pathname CRLF  (15)
+
+	SP  shift 91
+	.  error
+
+
+state 48
+	cmd : ALLO SP . NUMBER CRLF  (11)
+	cmd : ALLO SP . NUMBER SP R SP NUMBER CRLF  (12)
+
+	NUMBER  shift 92
+	.  error
+
+
+state 49
+	rcmd : RNFR check_login . SP pathname CRLF  (47)
+
+	SP  shift 93
+	.  error
+
+
+state 50
+	cmd : RNTO SP . pathname CRLF  (23)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 95
+	pathstring  goto 96
+
+
+state 51
+	cmd : ABOR CRLF .  (24)
+
+	.  reduce 24
+
+
+state 52
+	cmd : DELE check_login . SP pathname CRLF  (22)
+
+	SP  shift 97
+	.  error
+
+
+state 53
+	cmd : CWD check_login . CRLF  (25)
+	cmd : CWD check_login . SP pathname CRLF  (26)
+
+	SP  shift 98
+	CRLF  shift 99
+	.  error
+
+
+state 54
+	cmd : LIST check_login . CRLF  (18)
+	cmd : LIST check_login . SP pathname CRLF  (19)
+
+	SP  shift 100
+	CRLF  shift 101
+	.  error
+
+
+state 55
+	cmd : NLST check_login . CRLF  (16)
+	cmd : NLST check_login . SP STRING CRLF  (17)
+
+	SP  shift 102
+	CRLF  shift 103
+	.  error
+
+
+state 56
+	cmd : SITE SP . HELP CRLF  (34)
+	cmd : SITE SP . HELP SP STRING CRLF  (35)
+	cmd : SITE SP . UMASK check_login CRLF  (36)
+	cmd : SITE SP . UMASK check_login SP octal_number CRLF  (37)
+	cmd : SITE SP . CHMOD check_login SP octal_number SP pathname CRLF  (38)
+	cmd : SITE SP . IDLE CRLF  (39)
+	cmd : SITE SP . IDLE SP NUMBER CRLF  (40)
+
+	HELP  shift 104
+	UMASK  shift 105
+	IDLE  shift 106
+	CHMOD  shift 107
+	.  error
+
+
+state 57
+	cmd : STAT CRLF .  (21)
+
+	.  reduce 21
+
+
+state 58
+	cmd : STAT check_login . SP pathname CRLF  (20)
+
+	SP  shift 108
+	.  error
+
+
+state 59
+	cmd : HELP SP . STRING CRLF  (28)
+
+	STRING  shift 109
+	.  error
+
+
+state 60
+	cmd : HELP CRLF .  (27)
+
+	.  reduce 27
+
+
+state 61
+	cmd : NOOP CRLF .  (29)
+
+	.  reduce 29
+
+
+state 62
+	cmd : MKD check_login . SP pathname CRLF  (30)
+
+	SP  shift 110
+	.  error
+
+
+state 63
+	cmd : RMD check_login . SP pathname CRLF  (31)
+
+	SP  shift 111
+	.  error
+
+
+state 64
+	cmd : PWD check_login . CRLF  (32)
+
+	CRLF  shift 112
+	.  error
+
+
+state 65
+	cmd : CDUP check_login . CRLF  (33)
+
+	CRLF  shift 113
+	.  error
+
+
+state 66
+	cmd : STOU check_login . SP pathname CRLF  (41)
+
+	SP  shift 114
+	.  error
+
+
+state 67
+	cmd : SYST CRLF .  (42)
+
+	.  reduce 42
+
+
+state 68
+	cmd : SIZE check_login . SP pathname CRLF  (43)
+
+	SP  shift 115
+	.  error
+
+
+state 69
+	cmd : MDTM check_login . SP pathname CRLF  (44)
+
+	SP  shift 116
+	.  error
+
+
+state 70
+	username : STRING .  (48)
+
+	.  reduce 48
+
+
+state 71
+	cmd : USER SP username . CRLF  (4)
+
+	CRLF  shift 117
+	.  error
+
+
+state 72
+	password : STRING .  (50)
+
+	.  reduce 50
+
+
+state 73
+	cmd : PASS SP password . CRLF  (5)
+
+	CRLF  shift 118
+	.  error
+
+
+state 74
+	host_port : NUMBER . COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	COMMA  shift 119
+	.  error
+
+
+state 75
+	cmd : PORT SP host_port . CRLF  (6)
+
+	CRLF  shift 120
+	.  error
+
+
+state 76
+	type_code : A .  (56)
+	type_code : A . SP form_code  (57)
+
+	SP  shift 121
+	CRLF  reduce 56
+
+
+state 77
+	type_code : E .  (58)
+	type_code : E . SP form_code  (59)
+
+	SP  shift 122
+	CRLF  reduce 58
+
+
+state 78
+	type_code : I .  (60)
+
+	.  reduce 60
+
+
+state 79
+	type_code : L .  (61)
+	type_code : L . SP byte_size  (62)
+	type_code : L . byte_size  (63)
+
+	SP  shift 123
+	NUMBER  shift 124
+	CRLF  reduce 61
+
+	byte_size  goto 125
+
+
+state 80
+	cmd : TYPE SP type_code . CRLF  (8)
+
+	CRLF  shift 126
+	.  error
+
+
+state 81
+	struct_code : F .  (64)
+
+	.  reduce 64
+
+
+state 82
+	struct_code : P .  (66)
+
+	.  reduce 66
+
+
+state 83
+	struct_code : R .  (65)
+
+	.  reduce 65
+
+
+state 84
+	cmd : STRU SP struct_code . CRLF  (9)
+
+	CRLF  shift 127
+	.  error
+
+
+state 85
+	mode_code : B .  (68)
+
+	.  reduce 68
+
+
+state 86
+	mode_code : C .  (69)
+
+	.  reduce 69
+
+
+state 87
+	mode_code : S .  (67)
+
+	.  reduce 67
+
+
+state 88
+	cmd : MODE SP mode_code . CRLF  (10)
+
+	CRLF  shift 128
+	.  error
+
+
+state 89
+	cmd : RETR check_login SP . pathname CRLF  (13)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 129
+	pathstring  goto 96
+
+
+state 90
+	cmd : STOR check_login SP . pathname CRLF  (14)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 130
+	pathstring  goto 96
+
+
+state 91
+	cmd : APPE check_login SP . pathname CRLF  (15)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 131
+	pathstring  goto 96
+
+
+state 92
+	cmd : ALLO SP NUMBER . CRLF  (11)
+	cmd : ALLO SP NUMBER . SP R SP NUMBER CRLF  (12)
+
+	SP  shift 132
+	CRLF  shift 133
+	.  error
+
+
+state 93
+	rcmd : RNFR check_login SP . pathname CRLF  (47)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 134
+	pathstring  goto 96
+
+
+state 94
+	pathstring : STRING .  (71)
+
+	.  reduce 71
+
+
+state 95
+	cmd : RNTO SP pathname . CRLF  (23)
+
+	CRLF  shift 135
+	.  error
+
+
+state 96
+	pathname : pathstring .  (70)
+
+	.  reduce 70
+
+
+state 97
+	cmd : DELE check_login SP . pathname CRLF  (22)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 136
+	pathstring  goto 96
+
+
+state 98
+	cmd : CWD check_login SP . pathname CRLF  (26)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 137
+	pathstring  goto 96
+
+
+state 99
+	cmd : CWD check_login CRLF .  (25)
+
+	.  reduce 25
+
+
+state 100
+	cmd : LIST check_login SP . pathname CRLF  (19)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 138
+	pathstring  goto 96
+
+
+state 101
+	cmd : LIST check_login CRLF .  (18)
+
+	.  reduce 18
+
+
+state 102
+	cmd : NLST check_login SP . STRING CRLF  (17)
+
+	STRING  shift 139
+	.  error
+
+
+state 103
+	cmd : NLST check_login CRLF .  (16)
+
+	.  reduce 16
+
+
+state 104
+	cmd : SITE SP HELP . CRLF  (34)
+	cmd : SITE SP HELP . SP STRING CRLF  (35)
+
+	SP  shift 140
+	CRLF  shift 141
+	.  error
+
+
+state 105
+	cmd : SITE SP UMASK . check_login CRLF  (36)
+	cmd : SITE SP UMASK . check_login SP octal_number CRLF  (37)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 142
+
+
+state 106
+	cmd : SITE SP IDLE . CRLF  (39)
+	cmd : SITE SP IDLE . SP NUMBER CRLF  (40)
+
+	SP  shift 143
+	CRLF  shift 144
+	.  error
+
+
+state 107
+	cmd : SITE SP CHMOD . check_login SP octal_number SP pathname CRLF  (38)
+	check_login : .  (73)
+
+	.  reduce 73
+
+	check_login  goto 145
+
+
+state 108
+	cmd : STAT check_login SP . pathname CRLF  (20)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 146
+	pathstring  goto 96
+
+
+state 109
+	cmd : HELP SP STRING . CRLF  (28)
+
+	CRLF  shift 147
+	.  error
+
+
+state 110
+	cmd : MKD check_login SP . pathname CRLF  (30)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 148
+	pathstring  goto 96
+
+
+state 111
+	cmd : RMD check_login SP . pathname CRLF  (31)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 149
+	pathstring  goto 96
+
+
+state 112
+	cmd : PWD check_login CRLF .  (32)
+
+	.  reduce 32
+
+
+state 113
+	cmd : CDUP check_login CRLF .  (33)
+
+	.  reduce 33
+
+
+state 114
+	cmd : STOU check_login SP . pathname CRLF  (41)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 150
+	pathstring  goto 96
+
+
+state 115
+	cmd : SIZE check_login SP . pathname CRLF  (43)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 151
+	pathstring  goto 96
+
+
+state 116
+	cmd : MDTM check_login SP . pathname CRLF  (44)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 152
+	pathstring  goto 96
+
+
+state 117
+	cmd : USER SP username CRLF .  (4)
+
+	.  reduce 4
+
+
+state 118
+	cmd : PASS SP password CRLF .  (5)
+
+	.  reduce 5
+
+
+state 119
+	host_port : NUMBER COMMA . NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	NUMBER  shift 153
+	.  error
+
+
+state 120
+	cmd : PORT SP host_port CRLF .  (6)
+
+	.  reduce 6
+
+
+state 121
+	type_code : A SP . form_code  (57)
+
+	C  shift 154
+	N  shift 155
+	T  shift 156
+	.  error
+
+	form_code  goto 157
+
+
+state 122
+	type_code : E SP . form_code  (59)
+
+	C  shift 154
+	N  shift 155
+	T  shift 156
+	.  error
+
+	form_code  goto 158
+
+
+state 123
+	type_code : L SP . byte_size  (62)
+
+	NUMBER  shift 124
+	.  error
+
+	byte_size  goto 159
+
+
+state 124
+	byte_size : NUMBER .  (51)
+
+	.  reduce 51
+
+
+state 125
+	type_code : L byte_size .  (63)
+
+	.  reduce 63
+
+
+state 126
+	cmd : TYPE SP type_code CRLF .  (8)
+
+	.  reduce 8
+
+
+state 127
+	cmd : STRU SP struct_code CRLF .  (9)
+
+	.  reduce 9
+
+
+state 128
+	cmd : MODE SP mode_code CRLF .  (10)
+
+	.  reduce 10
+
+
+state 129
+	cmd : RETR check_login SP pathname . CRLF  (13)
+
+	CRLF  shift 160
+	.  error
+
+
+state 130
+	cmd : STOR check_login SP pathname . CRLF  (14)
+
+	CRLF  shift 161
+	.  error
+
+
+state 131
+	cmd : APPE check_login SP pathname . CRLF  (15)
+
+	CRLF  shift 162
+	.  error
+
+
+state 132
+	cmd : ALLO SP NUMBER SP . R SP NUMBER CRLF  (12)
+
+	R  shift 163
+	.  error
+
+
+state 133
+	cmd : ALLO SP NUMBER CRLF .  (11)
+
+	.  reduce 11
+
+
+state 134
+	rcmd : RNFR check_login SP pathname . CRLF  (47)
+
+	CRLF  shift 164
+	.  error
+
+
+state 135
+	cmd : RNTO SP pathname CRLF .  (23)
+
+	.  reduce 23
+
+
+state 136
+	cmd : DELE check_login SP pathname . CRLF  (22)
+
+	CRLF  shift 165
+	.  error
+
+
+state 137
+	cmd : CWD check_login SP pathname . CRLF  (26)
+
+	CRLF  shift 166
+	.  error
+
+
+state 138
+	cmd : LIST check_login SP pathname . CRLF  (19)
+
+	CRLF  shift 167
+	.  error
+
+
+state 139
+	cmd : NLST check_login SP STRING . CRLF  (17)
+
+	CRLF  shift 168
+	.  error
+
+
+state 140
+	cmd : SITE SP HELP SP . STRING CRLF  (35)
+
+	STRING  shift 169
+	.  error
+
+
+state 141
+	cmd : SITE SP HELP CRLF .  (34)
+
+	.  reduce 34
+
+
+state 142
+	cmd : SITE SP UMASK check_login . CRLF  (36)
+	cmd : SITE SP UMASK check_login . SP octal_number CRLF  (37)
+
+	SP  shift 170
+	CRLF  shift 171
+	.  error
+
+
+state 143
+	cmd : SITE SP IDLE SP . NUMBER CRLF  (40)
+
+	NUMBER  shift 172
+	.  error
+
+
+state 144
+	cmd : SITE SP IDLE CRLF .  (39)
+
+	.  reduce 39
+
+
+state 145
+	cmd : SITE SP CHMOD check_login . SP octal_number SP pathname CRLF  (38)
+
+	SP  shift 173
+	.  error
+
+
+state 146
+	cmd : STAT check_login SP pathname . CRLF  (20)
+
+	CRLF  shift 174
+	.  error
+
+
+state 147
+	cmd : HELP SP STRING CRLF .  (28)
+
+	.  reduce 28
+
+
+state 148
+	cmd : MKD check_login SP pathname . CRLF  (30)
+
+	CRLF  shift 175
+	.  error
+
+
+state 149
+	cmd : RMD check_login SP pathname . CRLF  (31)
+
+	CRLF  shift 176
+	.  error
+
+
+state 150
+	cmd : STOU check_login SP pathname . CRLF  (41)
+
+	CRLF  shift 177
+	.  error
+
+
+state 151
+	cmd : SIZE check_login SP pathname . CRLF  (43)
+
+	CRLF  shift 178
+	.  error
+
+
+state 152
+	cmd : MDTM check_login SP pathname . CRLF  (44)
+
+	CRLF  shift 179
+	.  error
+
+
+state 153
+	host_port : NUMBER COMMA NUMBER . COMMA NUMBER COMMA NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	COMMA  shift 180
+	.  error
+
+
+state 154
+	form_code : C .  (55)
+
+	.  reduce 55
+
+
+state 155
+	form_code : N .  (53)
+
+	.  reduce 53
+
+
+state 156
+	form_code : T .  (54)
+
+	.  reduce 54
+
+
+state 157
+	type_code : A SP form_code .  (57)
+
+	.  reduce 57
+
+
+state 158
+	type_code : E SP form_code .  (59)
+
+	.  reduce 59
+
+
+state 159
+	type_code : L SP byte_size .  (62)
+
+	.  reduce 62
+
+
+state 160
+	cmd : RETR check_login SP pathname CRLF .  (13)
+
+	.  reduce 13
+
+
+state 161
+	cmd : STOR check_login SP pathname CRLF .  (14)
+
+	.  reduce 14
+
+
+state 162
+	cmd : APPE check_login SP pathname CRLF .  (15)
+
+	.  reduce 15
+
+
+state 163
+	cmd : ALLO SP NUMBER SP R . SP NUMBER CRLF  (12)
+
+	SP  shift 181
+	.  error
+
+
+state 164
+	rcmd : RNFR check_login SP pathname CRLF .  (47)
+
+	.  reduce 47
+
+
+state 165
+	cmd : DELE check_login SP pathname CRLF .  (22)
+
+	.  reduce 22
+
+
+state 166
+	cmd : CWD check_login SP pathname CRLF .  (26)
+
+	.  reduce 26
+
+
+state 167
+	cmd : LIST check_login SP pathname CRLF .  (19)
+
+	.  reduce 19
+
+
+state 168
+	cmd : NLST check_login SP STRING CRLF .  (17)
+
+	.  reduce 17
+
+
+state 169
+	cmd : SITE SP HELP SP STRING . CRLF  (35)
+
+	CRLF  shift 182
+	.  error
+
+
+state 170
+	cmd : SITE SP UMASK check_login SP . octal_number CRLF  (37)
+
+	NUMBER  shift 183
+	.  error
+
+	octal_number  goto 184
+
+
+state 171
+	cmd : SITE SP UMASK check_login CRLF .  (36)
+
+	.  reduce 36
+
+
+state 172
+	cmd : SITE SP IDLE SP NUMBER . CRLF  (40)
+
+	CRLF  shift 185
+	.  error
+
+
+state 173
+	cmd : SITE SP CHMOD check_login SP . octal_number SP pathname CRLF  (38)
+
+	NUMBER  shift 183
+	.  error
+
+	octal_number  goto 186
+
+
+state 174
+	cmd : STAT check_login SP pathname CRLF .  (20)
+
+	.  reduce 20
+
+
+state 175
+	cmd : MKD check_login SP pathname CRLF .  (30)
+
+	.  reduce 30
+
+
+state 176
+	cmd : RMD check_login SP pathname CRLF .  (31)
+
+	.  reduce 31
+
+
+state 177
+	cmd : STOU check_login SP pathname CRLF .  (41)
+
+	.  reduce 41
+
+
+state 178
+	cmd : SIZE check_login SP pathname CRLF .  (43)
+
+	.  reduce 43
+
+
+state 179
+	cmd : MDTM check_login SP pathname CRLF .  (44)
+
+	.  reduce 44
+
+
+state 180
+	host_port : NUMBER COMMA NUMBER COMMA . NUMBER COMMA NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	NUMBER  shift 187
+	.  error
+
+
+state 181
+	cmd : ALLO SP NUMBER SP R SP . NUMBER CRLF  (12)
+
+	NUMBER  shift 188
+	.  error
+
+
+state 182
+	cmd : SITE SP HELP SP STRING CRLF .  (35)
+
+	.  reduce 35
+
+
+state 183
+	octal_number : NUMBER .  (72)
+
+	.  reduce 72
+
+
+state 184
+	cmd : SITE SP UMASK check_login SP octal_number . CRLF  (37)
+
+	CRLF  shift 189
+	.  error
+
+
+state 185
+	cmd : SITE SP IDLE SP NUMBER CRLF .  (40)
+
+	.  reduce 40
+
+
+state 186
+	cmd : SITE SP CHMOD check_login SP octal_number . SP pathname CRLF  (38)
+
+	SP  shift 190
+	.  error
+
+
+state 187
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER . COMMA NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	COMMA  shift 191
+	.  error
+
+
+state 188
+	cmd : ALLO SP NUMBER SP R SP NUMBER . CRLF  (12)
+
+	CRLF  shift 192
+	.  error
+
+
+state 189
+	cmd : SITE SP UMASK check_login SP octal_number CRLF .  (37)
+
+	.  reduce 37
+
+
+state 190
+	cmd : SITE SP CHMOD check_login SP octal_number SP . pathname CRLF  (38)
+
+	STRING  shift 94
+	.  error
+
+	pathname  goto 193
+	pathstring  goto 96
+
+
+state 191
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA . NUMBER COMMA NUMBER =
COMMA NUMBER  (52)
+
+	NUMBER  shift 194
+	.  error
+
+
+state 192
+	cmd : ALLO SP NUMBER SP R SP NUMBER CRLF .  (12)
+
+	.  reduce 12
+
+
+state 193
+	cmd : SITE SP CHMOD check_login SP octal_number SP pathname . CRLF  (38)
+
+	CRLF  shift 195
+	.  error
+
+
+state 194
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER . COMMA NUMBER =
COMMA NUMBER  (52)
+
+	COMMA  shift 196
+	.  error
+
+
+state 195
+	cmd : SITE SP CHMOD check_login SP octal_number SP pathname CRLF .  (38)
+
+	.  reduce 38
+
+
+state 196
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA . NUMBER =
COMMA NUMBER  (52)
+
+	NUMBER  shift 197
+	.  error
+
+
+state 197
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER . =
COMMA NUMBER  (52)
+
+	COMMA  shift 198
+	.  error
+
+
+state 198
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER CO=
MMA . NUMBER  (52)
+
+	NUMBER  shift 199
+	.  error
+
+
+state 199
+	host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER CO=
MMA NUMBER .  (52)
+
+	.  reduce 52
+
+
+65 terminals, 16 nonterminals
+74 grammar rules, 200 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/ftp.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/ftp.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1995 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    ftp_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      ftp_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    ftp_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     ftp_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      ftp_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     ftp_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    ftp_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    ftp_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  ftp_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      ftp_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      ftp_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   ftp_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    ftp_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   ftp_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   ftp_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   ftp_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    ftp_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    ftp_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     ftp_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     ftp_rule
+#endif /* yyrule */
+#define YYPREFIX "ftp_"
+
+#define YYPURE 0
+
+#line 26 "ftp.y"
+
+/* sccsid[] =3D "@(#)ftpcmd.y	5.20.1.1 (Berkeley) 3/2/89"; */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/ftp.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <signal.h>
+#include <ctype.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <syslog.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *);
+#endif
+
+extern	struct sockaddr_in data_dest;
+extern	int logged_in;
+extern	struct passwd *pw;
+extern	int guest;
+extern	int logging;
+extern	int type;
+extern	int form;
+extern	int debug;
+extern	int timeout;
+extern	int maxtimeout;
+extern  int pdata;
+extern	char hostname[], remotehost[];
+extern	char proctitle[];
+extern	char *globerr;
+extern	int usedefault;
+extern  int transflag;
+extern  char tmpline[];
+
+extern char **glob(char *);
+extern char *renamefrom(char *);
+extern void cwd(const char *);
+
+extern void dologout(int);
+extern void fatal(const char *);
+extern void makedir(const char *);
+extern void nack(const char *);
+extern void pass(const char *);
+extern void passive(void);
+extern void pwd(void);
+extern void removedir(char *);
+extern void renamecmd(char *, char *);
+extern void retrieve(const char *, const char *);
+extern void send_file_list(const char *);
+extern void statcmd(void);
+extern void statfilecmd(const char *);
+extern void store(char *, const char *, int);
+extern void user(const char *);
+
+extern void perror_reply(int, const char *, ...);
+extern void reply(int, const char *, ...);
+extern void lreply(int, const char *, ...);
+
+static	int cmd_type;
+static	int cmd_form;
+static	int cmd_bytesz;
+char	cbuf[512];
+char	*fromname;
+
+struct tab {
+	const char *name;
+	short	token;
+	short	state;
+	short	implemented;	/* 1 if command is implemented */
+	const char *help;
+};
+
+static char * copy(const char *);
+
+#ifdef YYBISON
+static void sizecmd(char *filename);
+static void help(struct tab *ctab, char *s);
+struct tab cmdtab[];
+struct tab sitetab[];
+#endif
+
+static void
+yyerror(const char *msg)
+{
+	perror(msg);
+}
+#line 198 "ftp.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define A 257
+#define B 258
+#define C 259
+#define E 260
+#define F 261
+#define I 262
+#define L 263
+#define N 264
+#define P 265
+#define R 266
+#define S 267
+#define T 268
+#define SP 269
+#define CRLF 270
+#define COMMA 271
+#define STRING 272
+#define NUMBER 273
+#define USER 274
+#define PASS 275
+#define ACCT 276
+#define REIN 277
+#define QUIT 278
+#define PORT 279
+#define PASV 280
+#define TYPE 281
+#define STRU 282
+#define MODE 283
+#define RETR 284
+#define STOR 285
+#define APPE 286
+#define MLFL 287
+#define MAIL 288
+#define MSND 289
+#define MSOM 290
+#define MSAM 291
+#define MRSQ 292
+#define MRCP 293
+#define ALLO 294
+#define REST 295
+#define RNFR 296
+#define RNTO 297
+#define ABOR 298
+#define DELE 299
+#define CWD 300
+#define LIST 301
+#define NLST 302
+#define SITE 303
+#define STAT 304
+#define HELP 305
+#define NOOP 306
+#define MKD 307
+#define RMD 308
+#define PWD 309
+#define CDUP 310
+#define STOU 311
+#define SMNT 312
+#define SYST 313
+#define SIZE 314
+#define MDTM 315
+#define UMASK 316
+#define IDLE 317
+#define CHMOD 318
+#define LEXERR 319
+#define YYERRCODE 256
+static const short ftp_lhs[] =3D {                         -1,
+    0,    0,    0,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    2,    3,    4,    4,
+   12,    5,   13,   13,   13,    6,    6,    6,    6,    6,
+    6,    6,    6,    7,    7,    7,    8,    8,    8,   10,
+   14,   11,    9,
+};
+static const short ftp_len[] =3D {                          2,
+    0,    2,    2,    4,    4,    4,    2,    4,    4,    4,
+    4,    8,    5,    5,    5,    3,    5,    3,    5,    5,
+    2,    5,    4,    2,    3,    5,    2,    4,    2,    5,
+    5,    3,    3,    4,    6,    5,    7,    9,    4,    6,
+    5,    2,    5,    5,    2,    2,    5,    1,    0,    1,
+    1,   11,    1,    1,    1,    1,    3,    1,    3,    1,
+    1,    3,    2,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    0,
+};
+static const short ftp_defred[] =3D {                       1,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   73,   73,   73,    0,   73,    0,    0,   73,   73,   73,
+   73,    0,    0,    0,    0,   73,   73,   73,   73,   73,
+    0,   73,   73,    2,    3,   46,    0,    0,   45,    0,
+    7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   24,    0,    0,    0,    0,    0,   21,    0,    0,   27,
+   29,    0,    0,    0,    0,    0,   42,    0,    0,   48,
+    0,   50,    0,    0,    0,    0,    0,   60,    0,    0,
+   64,   66,   65,    0,   68,   69,   67,    0,    0,    0,
+    0,    0,    0,   71,    0,   70,    0,    0,   25,    0,
+   18,    0,   16,    0,   73,    0,   73,    0,    0,    0,
+    0,   32,   33,    0,    0,    0,    4,    5,    0,    6,
+    0,    0,    0,   51,   63,    8,    9,   10,    0,    0,
+    0,    0,   11,    0,   23,    0,    0,    0,    0,    0,
+   34,    0,    0,   39,    0,    0,   28,    0,    0,    0,
+    0,    0,    0,   55,   53,   54,   57,   59,   62,   13,
+   14,   15,    0,   47,   22,   26,   19,   17,    0,    0,
+   36,    0,    0,   20,   30,   31,   41,   43,   44,    0,
+    0,   35,   72,    0,   40,    0,    0,    0,   37,    0,
+    0,   12,    0,    0,   38,    0,    0,    0,   52,
+};
+static const short ftp_dgoto[] =3D {                        1,
+   34,   35,   71,   73,   75,   80,   84,   88,   45,   95,
+  184,  125,  157,   96,
+};
+static const short ftp_sindex[] =3D {                       0,
+ -224, -247, -239, -236, -232, -222, -204, -200, -181, -177,
+    0,    0,    0, -166,    0, -161, -199,    0,    0,    0,
+    0, -160, -159, -264, -158,    0,    0,    0,    0,    0,
+ -157,    0,    0,    0,    0,    0, -167, -162,    0, -156,
+    0, -250, -198, -165, -155, -154, -153, -151, -150, -152,
+    0, -145, -252, -229, -217, -302,    0, -144, -146,    0,
+    0, -142, -141, -140, -139, -137,    0, -136, -135,    0,
+ -134,    0, -133, -132, -130, -131, -128,    0, -249, -127,
+    0,    0,    0, -126,    0,    0,    0, -125, -152, -152,
+ -152, -205, -152,    0, -124,    0, -152, -152,    0, -152,
+    0, -143,    0, -173,    0, -171,    0, -152, -123, -152,
+ -152,    0,    0, -152, -152, -152,    0,    0, -138,    0,
+ -164, -164, -122,    0,    0,    0,    0,    0, -121, -120,
+ -118, -148,    0, -117,    0, -116, -115, -114, -113, -112,
+    0, -163, -111,    0, -110, -109,    0, -107, -106, -105,
+ -104, -103, -129,    0,    0,    0,    0,    0,    0,    0,
+    0,    0, -101,    0,    0,    0,    0,    0, -100, -102,
+    0,  -98, -102,    0,    0,    0,    0,    0,    0,  -99,
+  -97,    0,    0,  -95,    0,  -96,  -94,  -92,    0, -152,
+  -93,    0,  -91,  -90,    0,  -88,  -87,  -86,    0,
+};
+static const short ftp_rindex[] =3D {                       0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  -83,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  -82,    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,  -81,  -80,    0, -158,    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,
+    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,    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,
+};
+static const short ftp_gindex[] =3D {                       0,
+    0,    0,    0,    0,    0,    0,    0,    0,   16,  -89,
+  -25,   35,   47,    0,
+};
+#define YYTABLESIZE 190
+static const short ftp_table[] =3D {                      129,
+  130,  131,  104,  134,   59,   60,   76,  136,  137,   77,
+  138,   78,   79,  105,  106,  107,   98,   99,  146,  123,
+  148,  149,   36,  124,  150,  151,  152,   46,   47,   37,
+   49,    2,   38,   52,   53,   54,   55,   39,   58,  100,
+  101,   62,   63,   64,   65,   66,   40,   68,   69,    3,
+    4,  102,  103,    5,    6,    7,    8,    9,   10,   11,
+   12,   13,   81,  132,  133,   41,   82,   83,   42,   14,
+   51,   15,   16,   17,   18,   19,   20,   21,   22,   23,
+   24,   25,   26,   27,   28,   29,   30,   43,   31,   32,
+   33,   44,   85,   86,  154,  140,  141,  143,  144,  155,
+  193,   87,   48,  156,   70,  170,  171,   50,   56,   72,
+   57,   61,   67,   89,   90,   91,   74,  163,   93,   94,
+  142,   92,  145,   97,  108,  109,  110,  111,  139,  112,
+  113,  114,  115,  116,  153,  117,  118,  121,  119,  120,
+  122,  180,  126,  127,  128,  135,  147,  186,  160,  161,
+  124,  162,  164,  165,  166,  167,  168,  159,  173,  169,
+  174,  172,  175,  176,  177,  178,  179,  181,  158,  182,
+  183,  185,  190,  187,  189,  188,  191,  192,  195,  194,
+  196,    0,    0,  198,  197,   73,  199,   49,   56,   58,
+};
+static const short ftp_check[] =3D {                       89,
+   90,   91,  305,   93,  269,  270,  257,   97,   98,  260,
+  100,  262,  263,  316,  317,  318,  269,  270,  108,  269,
+  110,  111,  270,  273,  114,  115,  116,   12,   13,  269,
+   15,  256,  269,   18,   19,   20,   21,  270,   23,  269,
+  270,   26,   27,   28,   29,   30,  269,   32,   33,  274,
+  275,  269,  270,  278,  279,  280,  281,  282,  283,  284,
+  285,  286,  261,  269,  270,  270,  265,  266,  269,  294,
+  270,  296,  297,  298,  299,  300,  301,  302,  303,  304,
+  305,  306,  307,  308,  309,  310,  311,  269,  313,  314,
+  315,  269,  258,  259,  259,  269,  270,  269,  270,  264,
+  190,  267,  269,  268,  272,  269,  270,  269,  269,  272,
+  270,  270,  270,  269,  269,  269,  273,  266,  269,  272,
+  105,  273,  107,  269,  269,  272,  269,  269,  272,  270,
+  270,  269,  269,  269,  273,  270,  270,  269,  271,  270,
+  269,  271,  270,  270,  270,  270,  270,  173,  270,  270,
+  273,  270,  270,  270,  270,  270,  270,  123,  269,  272,
+  270,  273,  270,  270,  270,  270,  270,  269,  122,  270,
+  273,  270,  269,  273,  270,  273,  271,  270,  270,  273,
+  271,   -1,   -1,  271,  273,  269,  273,  270,  270,  270,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 319
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",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,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,"A","B","C","E","F","I","L",=
"N",
+"P","R","S","T","SP","CRLF","COMMA","STRING","NUMBER","USER","PASS","ACCT",
+"REIN","QUIT","PORT","PASV","TYPE","STRU","MODE","RETR","STOR","APPE","MLF=
L",
+"MAIL","MSND","MSOM","MSAM","MRSQ","MRCP","ALLO","REST","RNFR","RNTO","ABO=
R",
+"DELE","CWD","LIST","NLST","SITE","STAT","HELP","NOOP","MKD","RMD","PWD","=
CDUP",
+"STOU","SMNT","SYST","SIZE","MDTM","UMASK","IDLE","CHMOD","LEXERR",
+};
+static const char *yyrule[] =3D {
+"$accept : cmd_list",
+"cmd_list :",
+"cmd_list : cmd_list cmd",
+"cmd_list : cmd_list rcmd",
+"cmd : USER SP username CRLF",
+"cmd : PASS SP password CRLF",
+"cmd : PORT SP host_port CRLF",
+"cmd : PASV CRLF",
+"cmd : TYPE SP type_code CRLF",
+"cmd : STRU SP struct_code CRLF",
+"cmd : MODE SP mode_code CRLF",
+"cmd : ALLO SP NUMBER CRLF",
+"cmd : ALLO SP NUMBER SP R SP NUMBER CRLF",
+"cmd : RETR check_login SP pathname CRLF",
+"cmd : STOR check_login SP pathname CRLF",
+"cmd : APPE check_login SP pathname CRLF",
+"cmd : NLST check_login CRLF",
+"cmd : NLST check_login SP STRING CRLF",
+"cmd : LIST check_login CRLF",
+"cmd : LIST check_login SP pathname CRLF",
+"cmd : STAT check_login SP pathname CRLF",
+"cmd : STAT CRLF",
+"cmd : DELE check_login SP pathname CRLF",
+"cmd : RNTO SP pathname CRLF",
+"cmd : ABOR CRLF",
+"cmd : CWD check_login CRLF",
+"cmd : CWD check_login SP pathname CRLF",
+"cmd : HELP CRLF",
+"cmd : HELP SP STRING CRLF",
+"cmd : NOOP CRLF",
+"cmd : MKD check_login SP pathname CRLF",
+"cmd : RMD check_login SP pathname CRLF",
+"cmd : PWD check_login CRLF",
+"cmd : CDUP check_login CRLF",
+"cmd : SITE SP HELP CRLF",
+"cmd : SITE SP HELP SP STRING CRLF",
+"cmd : SITE SP UMASK check_login CRLF",
+"cmd : SITE SP UMASK check_login SP octal_number CRLF",
+"cmd : SITE SP CHMOD check_login SP octal_number SP pathname CRLF",
+"cmd : SITE SP IDLE CRLF",
+"cmd : SITE SP IDLE SP NUMBER CRLF",
+"cmd : STOU check_login SP pathname CRLF",
+"cmd : SYST CRLF",
+"cmd : SIZE check_login SP pathname CRLF",
+"cmd : MDTM check_login SP pathname CRLF",
+"cmd : QUIT CRLF",
+"cmd : error CRLF",
+"rcmd : RNFR check_login SP pathname CRLF",
+"username : STRING",
+"password :",
+"password : STRING",
+"byte_size : NUMBER",
+"host_port : NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER CO=
MMA NUMBER",
+"form_code : N",
+"form_code : T",
+"form_code : C",
+"type_code : A",
+"type_code : A SP form_code",
+"type_code : E",
+"type_code : E SP form_code",
+"type_code : I",
+"type_code : L",
+"type_code : L SP byte_size",
+"type_code : L byte_size",
+"struct_code : F",
+"struct_code : R",
+"struct_code : P",
+"mode_code : S",
+"mode_code : B",
+"mode_code : C",
+"pathname : pathstring",
+"pathstring : STRING",
+"octal_number : NUMBER",
+"check_login :",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 707 "ftp.y"
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+extern jmp_buf errcatch;
+
+static void upper(char *);
+
+#define	CMD	0	/* beginning of command */
+#define	ARGS	1	/* expect miscellaneous arguments */
+#define	STR1	2	/* expect SP followed by STRING */
+#define	STR2	3	/* expect STRING */
+#define	OSTR	4	/* optional SP then STRING */
+#define	ZSTR1	5	/* SP then optional STRING */
+#define	ZSTR2	6	/* optional STRING after SP */
+#define	SITECMD	7	/* SITE command */
+#define	NSTR	8	/* Number followed by a string */
+
+struct tab cmdtab[] =3D {		/* In order defined in RFC 765 */
+	{ "USER", USER, STR1, 1,	"<sp> username" },
+	{ "PASS", PASS, ZSTR1, 1,	"<sp> password" },
+	{ "ACCT", ACCT, STR1, 0,	"(specify account)" },
+	{ "SMNT", SMNT, ARGS, 0,	"(structure mount)" },
+	{ "REIN", REIN, ARGS, 0,	"(reinitialize server state)" },
+	{ "QUIT", QUIT, ARGS, 1,	"(terminate service)", },
+	{ "PORT", PORT, ARGS, 1,	"<sp> b0, b1, b2, b3, b4" },
+	{ "PASV", PASV, ARGS, 1,	"(set server in passive mode)" },
+	{ "TYPE", TYPE, ARGS, 1,	"<sp> [ A | E | I | L ]" },
+	{ "STRU", STRU, ARGS, 1,	"(specify file structure)" },
+	{ "MODE", MODE, ARGS, 1,	"(specify transfer mode)" },
+	{ "RETR", RETR, STR1, 1,	"<sp> file-name" },
+	{ "STOR", STOR, STR1, 1,	"<sp> file-name" },
+	{ "APPE", APPE, STR1, 1,	"<sp> file-name" },
+	{ "MLFL", MLFL, OSTR, 0,	"(mail file)" },
+	{ "MAIL", MAIL, OSTR, 0,	"(mail to user)" },
+	{ "MSND", MSND, OSTR, 0,	"(mail send to terminal)" },
+	{ "MSOM", MSOM, OSTR, 0,	"(mail send to terminal or mailbox)" },
+	{ "MSAM", MSAM, OSTR, 0,	"(mail send to terminal and mailbox)" },
+	{ "MRSQ", MRSQ, OSTR, 0,	"(mail recipient scheme question)" },
+	{ "MRCP", MRCP, STR1, 0,	"(mail recipient)" },
+	{ "ALLO", ALLO, ARGS, 1,	"allocate storage (vacuously)" },
+	{ "REST", REST, ARGS, 0,	"(restart command)" },
+	{ "RNFR", RNFR, STR1, 1,	"<sp> file-name" },
+	{ "RNTO", RNTO, STR1, 1,	"<sp> file-name" },
+	{ "ABOR", ABOR, ARGS, 1,	"(abort operation)" },
+	{ "DELE", DELE, STR1, 1,	"<sp> file-name" },
+	{ "CWD",  CWD,  OSTR, 1,	"[ <sp> directory-name ]" },
+	{ "XCWD", CWD,	OSTR, 1,	"[ <sp> directory-name ]" },
+	{ "LIST", LIST, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "NLST", NLST, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "SITE", SITE, SITECMD, 1,	"site-cmd [ <sp> arguments ]" },
+	{ "SYST", SYST, ARGS, 1,	"(get type of operating system)" },
+	{ "STAT", STAT, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "HELP", HELP, OSTR, 1,	"[ <sp> <string> ]" },
+	{ "NOOP", NOOP, ARGS, 1,	"" },
+	{ "MKD",  MKD,  STR1, 1,	"<sp> path-name" },
+	{ "XMKD", MKD,  STR1, 1,	"<sp> path-name" },
+	{ "RMD",  RMD,  STR1, 1,	"<sp> path-name" },
+	{ "XRMD", RMD,  STR1, 1,	"<sp> path-name" },
+	{ "PWD",  PWD,  ARGS, 1,	"(return current directory)" },
+	{ "XPWD", PWD,  ARGS, 1,	"(return current directory)" },
+	{ "CDUP", CDUP, ARGS, 1,	"(change to parent directory)" },
+	{ "XCUP", CDUP, ARGS, 1,	"(change to parent directory)" },
+	{ "STOU", STOU, STR1, 1,	"<sp> file-name" },
+	{ "SIZE", SIZE, OSTR, 1,	"<sp> path-name" },
+	{ "MDTM", MDTM, OSTR, 1,	"<sp> path-name" },
+	{ 0,   0,    0,    0,	0 }
+};
+
+struct tab sitetab[] =3D {
+	{ "UMASK", UMASK, ARGS, 1,	"[ <sp> umask ]" },
+	{ "IDLE", IDLE, ARGS, 1,	"[ <sp> maximum-idle-time ]" },
+	{ "CHMOD", CHMOD, NSTR, 1,	"<sp> mode <sp> file-name" },
+	{ "HELP", HELP, OSTR, 1,	"[ <sp> <string> ]" },
+	{ 0,   0,    0,    0,	0 }
+};
+
+static struct tab *
+lookup(struct tab *p, char *cmd)
+{
+
+	for (; p->name !=3D 0; p++)
+		if (strcmp(cmd, p->name) =3D=3D 0)
+			return (p);
+	return (0);
+}
+
+#include <arpa/telnet.h>
+
+/*
+ * get_line - a hacked up version of fgets to ignore TELNET escape codes.
+ */
+static char *
+get_line(char *s, int n, FILE *iop)
+{
+	register int c;
+	register char *cs;
+
+	cs =3D s;
+/* tmpline may contain saved command from urgent mode interruption */
+	for (c =3D 0; tmpline[c] !=3D '\0' && --n > 0; ++c) {
+		*cs++ =3D tmpline[c];
+		if (tmpline[c] =3D=3D '\n') {
+			*cs =3D '\0';
+			if (debug)
+				syslog(LOG_DEBUG, "command: %s", s);
+			tmpline[0] =3D '\0';
+			return(s);
+		}
+		if (c =3D=3D 0)
+			tmpline[0] =3D '\0';
+	}
+	while ((c =3D getc(iop)) !=3D EOF) {
+		c &=3D 0377;
+		if (c =3D=3D IAC) {
+		    if ((c =3D getc(iop)) !=3D EOF) {
+			c &=3D 0377;
+			switch (c) {
+			case WILL:
+			case WONT:
+				c =3D getc(iop);
+				printf("%c%c%c", IAC, DONT, 0377&c);
+				(void) fflush(stdout);
+				continue;
+			case DO:
+			case DONT:
+				c =3D getc(iop);
+				printf("%c%c%c", IAC, WONT, 0377&c);
+				(void) fflush(stdout);
+				continue;
+			case IAC:
+				break;
+			default:
+				continue;	/* ignore command */
+			}
+		    }
+		}
+		*cs++ =3D c;
+		if (--n <=3D 0 || c =3D=3D '\n')
+			break;
+	}
+	if (c =3D=3D EOF && cs =3D=3D s)
+		return (0);
+	*cs =3D '\0';
+	if (debug)
+		syslog(LOG_DEBUG, "command: %s", s);
+	return (s);
+}
+
+static void
+toolong(int sig)
+{
+	time_t now;
+
+	(void) sig;
+	reply(421,
+	  "Timeout (%d seconds): closing control connection.", timeout);
+	(void) time(&now);
+	if (logging) {
+		syslog(LOG_INFO,
+			"User %s timed out after %d seconds at %s",
+			(pw ? pw -> pw_name : "unknown"), timeout, ctime(&now));
+	}
+	dologout(1);
+}
+
+int
+yylex(void)
+{
+	static int cpos, state;
+	register char *cp, *cp2;
+	register struct tab *p;
+	int n;
+	char c;
+
+	for (;;) {
+		switch (state) {
+
+		case CMD:
+			(void) signal(SIGALRM, toolong);
+			(void) alarm((unsigned) timeout);
+			if (get_line(cbuf, sizeof(cbuf)-1, stdin) =3D=3D 0) {
+				reply(221, "You could at least say goodbye.");
+				dologout(0);
+			}
+			(void) alarm(0);
+#ifdef SETPROCTITLE
+			if (strncasecmp(cbuf, "PASS", 4) !=3D 0)
+				setproctitle("%s: %s", proctitle, cbuf);
+#endif /* SETPROCTITLE */
+			if ((cp =3D strchr(cbuf, '\r'))) {
+				*cp++ =3D '\n';
+				*cp =3D '\0';
+			}
+			if ((cp =3D strpbrk(cbuf, " \n")))
+				cpos =3D cp - cbuf;
+			if (cpos =3D=3D 0)
+				cpos =3D 4;
+			c =3D cbuf[cpos];
+			cbuf[cpos] =3D '\0';
+			upper(cbuf);
+			p =3D lookup(cmdtab, cbuf);
+			cbuf[cpos] =3D c;
+			if (p !=3D 0) {
+				if (p->implemented =3D=3D 0) {
+					nack(p->name);
+					longjmp(errcatch,0);
+					/* NOTREACHED */
+				}
+				state =3D p->state;
+				*(const char **)(&yylval) =3D p->name;
+				return (p->token);
+			}
+			break;
+
+		case SITECMD:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				return (SP);
+			}
+			cp =3D &cbuf[cpos];
+			if ((cp2 =3D strpbrk(cp, " \n")))
+				cpos =3D cp2 - cbuf;
+			c =3D cbuf[cpos];
+			cbuf[cpos] =3D '\0';
+			upper(cp);
+			p =3D lookup(sitetab, cp);
+			cbuf[cpos] =3D c;
+			if (p !=3D 0) {
+				if (p->implemented =3D=3D 0) {
+					state =3D CMD;
+					nack(p->name);
+					longjmp(errcatch,0);
+					/* NOTREACHED */
+				}
+				state =3D p->state;
+				*(const char **)(&yylval) =3D p->name;
+				return (p->token);
+			}
+			state =3D CMD;
+			break;
+
+		case OSTR:
+			if (cbuf[cpos] =3D=3D '\n') {
+				state =3D CMD;
+				return (CRLF);
+			}
+			/* FALLTHROUGH */
+
+		case STR1:
+		case ZSTR1:
+		dostr1:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				if (state =3D=3D OSTR)
+					state =3D STR2;
+				else
+					++state;
+				return (SP);
+			}
+			break;
+
+		case ZSTR2:
+			if (cbuf[cpos] =3D=3D '\n') {
+				state =3D CMD;
+				return (CRLF);
+			}
+			/* FALLTHROUGH */
+
+		case STR2:
+			cp =3D &cbuf[cpos];
+			n =3D strlen(cp);
+			cpos +=3D n - 1;
+			/*
+			 * Make sure the string is nonempty and \n terminated.
+			 */
+			if (n > 1 && cbuf[cpos] =3D=3D '\n') {
+				cbuf[cpos] =3D '\0';
+				*(char **)&yylval =3D copy(cp);
+				cbuf[cpos] =3D '\n';
+				state =3D ARGS;
+				return (STRING);
+			}
+			break;
+
+		case NSTR:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				return (SP);
+			}
+			if (isdigit(cbuf[cpos])) {
+				cp =3D &cbuf[cpos];
+				while (isdigit(cbuf[++cpos]))
+					;
+				c =3D cbuf[cpos];
+				cbuf[cpos] =3D '\0';
+				yylval =3D atoi(cp);
+				cbuf[cpos] =3D c;
+				state =3D STR1;
+				return (NUMBER);
+			}
+			state =3D STR1;
+			goto dostr1;
+
+		case ARGS:
+			if (isdigit(cbuf[cpos])) {
+				cp =3D &cbuf[cpos];
+				while (isdigit(cbuf[++cpos]))
+					;
+				c =3D cbuf[cpos];
+				cbuf[cpos] =3D '\0';
+				yylval =3D atoi(cp);
+				cbuf[cpos] =3D c;
+				return (NUMBER);
+			}
+			switch (cbuf[cpos++]) {
+
+			case '\n':
+				state =3D CMD;
+				return (CRLF);
+
+			case ' ':
+				return (SP);
+
+			case ',':
+				return (COMMA);
+
+			case 'A':
+			case 'a':
+				return (A);
+
+			case 'B':
+			case 'b':
+				return (B);
+
+			case 'C':
+			case 'c':
+				return (C);
+
+			case 'E':
+			case 'e':
+				return (E);
+
+			case 'F':
+			case 'f':
+				return (F);
+
+			case 'I':
+			case 'i':
+				return (I);
+
+			case 'L':
+			case 'l':
+				return (L);
+
+			case 'N':
+			case 'n':
+				return (N);
+
+			case 'P':
+			case 'p':
+				return (P);
+
+			case 'R':
+			case 'r':
+				return (R);
+
+			case 'S':
+			case 's':
+				return (S);
+
+			case 'T':
+			case 't':
+				return (T);
+
+			}
+			break;
+
+		default:
+			fatal("Unknown state in scanner.");
+		}
+		yyerror((char *) 0);
+		state =3D CMD;
+		longjmp(errcatch,0);
+	}
+}
+
+static void
+upper(char *s)
+{
+	while (*s !=3D '\0') {
+		if (islower(*s))
+			*s =3D toupper(*s);
+		s++;
+	}
+}
+
+static char *
+copy(const char *s)
+{
+	char *p;
+
+	p =3D (char * )malloc(strlen(s) + 1);
+	if (p =3D=3D 0)
+		fatal("Ran out of memory.");
+	else
+		(void) strcpy(p, s);
+	return (p);
+}
+
+static void
+help(struct tab *ctab, char *s)
+{
+	register struct tab *c;
+	register int width, NCMDS;
+	const char *help_type;
+
+	if (ctab =3D=3D sitetab)
+		help_type =3D "SITE ";
+	else
+		help_type =3D "";
+	width =3D 0, NCMDS =3D 0;
+	for (c =3D ctab; c->name !=3D 0; c++) {
+		int len =3D strlen(c->name);
+
+		if (len > width)
+			width =3D len;
+		NCMDS++;
+	}
+	width =3D (width + 8) &~ 7;
+	if (s =3D=3D 0) {
+		register int i, j, w;
+		int columns, lines;
+
+		lreply(214, "The following %scommands are recognized %s.",
+		    help_type, "(* =3D>'s unimplemented)");
+		columns =3D 76 / width;
+		if (columns =3D=3D 0)
+			columns =3D 1;
+		lines =3D (NCMDS + columns - 1) / columns;
+		for (i =3D 0; i < lines; i++) {
+			printf("   ");
+			for (j =3D 0; j < columns; j++) {
+				c =3D ctab + j * lines + i;
+				assert(c->name !=3D 0);
+				printf("%s%c", c->name,
+					c->implemented ? ' ' : '*');
+				if (c + lines >=3D &ctab[NCMDS])
+					break;
+				w =3D strlen(c->name) + 1;
+				while (w < width) {
+					putchar(' ');
+					w++;
+				}
+			}
+			printf("\r\n");
+		}
+		(void) fflush(stdout);
+		reply(214, "Direct comments to ftp-bugs@%s.", hostname);
+		return;
+	}
+	upper(s);
+	c =3D lookup(ctab, s);
+	if (c =3D=3D (struct tab *)0) {
+		reply(502, "Unknown command %s.", s);
+		return;
+	}
+	if (c->implemented)
+		reply(214, "Syntax: %s%s %s", help_type, c->name, c->help);
+	else
+		reply(214, "%s%-*s\t%s; unimplemented.", help_type, width,
+		    c->name, c->help);
+}
+
+static void
+sizecmd(char *filename)
+{
+	switch (type) {
+	case TYPE_L:
+	case TYPE_I: {
+		struct stat stbuf;
+		if (stat(filename, &stbuf) < 0 ||
+		    (stbuf.st_mode&S_IFMT) !=3D S_IFREG)
+			reply(550, "%s: not a plain file.", filename);
+		else
+#ifdef HAVE_LONG_LONG
+			reply(213, "%llu", (long long) stbuf.st_size);
+#else
+			reply(213, "%lu", stbuf.st_size);
+#endif
+		break;}
+	case TYPE_A: {
+		FILE *fin;
+		register int c, count;
+		struct stat stbuf;
+		fin =3D fopen(filename, "r");
+		if (fin =3D=3D 0) {
+			perror_reply(550, filename);
+			return;
+		}
+		if (fstat(fileno(fin), &stbuf) < 0 ||
+		    (stbuf.st_mode&S_IFMT) !=3D S_IFREG) {
+			reply(550, "%s: not a plain file.", filename);
+			(void) fclose(fin);
+			return;
+		}
+
+		count =3D 0;
+		while((c=3Dgetc(fin)) !=3D EOF) {
+			if (c =3D=3D '\n')	/* will get expanded to \r\n */
+				count++;
+			count++;
+		}
+		(void) fclose(fin);
+
+		reply(213, "%ld", count);
+		break;}
+	default:
+		reply(504, "SIZE not implemented for Type %c.", "?AEIL"[type]);
+	}
+}
+#line 1092 "ftp.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 2:
+#line 150 "ftp.y"
+	{
+			fromname =3D (char *) 0;
+		}
+break;
+case 4:
+#line 157 "ftp.y"
+	{
+			user((char *) yystack.l_mark[-1]);
+			free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 5:
+#line 162 "ftp.y"
+	{
+			pass((char *) yystack.l_mark[-1]);
+			free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 6:
+#line 167 "ftp.y"
+	{
+			usedefault =3D 0;
+			if (pdata >=3D 0) {
+				(void) close(pdata);
+				pdata =3D -1;
+			}
+			reply(200, "PORT command successful.");
+		}
+break;
+case 7:
+#line 176 "ftp.y"
+	{
+			passive();
+		}
+break;
+case 8:
+#line 180 "ftp.y"
+	{
+			switch (cmd_type) {
+
+			case TYPE_A:
+				if (cmd_form =3D=3D FORM_N) {
+					reply(200, "Type set to A.");
+					type =3D cmd_type;
+					form =3D cmd_form;
+				} else
+					reply(504, "Form must be N.");
+				break;
+
+			case TYPE_E:
+				reply(504, "Type E not implemented.");
+				break;
+
+			case TYPE_I:
+				reply(200, "Type set to I.");
+				type =3D cmd_type;
+				break;
+
+			case TYPE_L:
+#if NBBY =3D=3D 8
+				if (cmd_bytesz =3D=3D 8) {
+					reply(200,
+					    "Type set to L (byte size 8).");
+					type =3D cmd_type;
+				} else
+					reply(504, "Byte size must be 8.");
+#else /* NBBY =3D=3D 8 */
+				UNIMPLEMENTED for NBBY !=3D 8
+#endif /* NBBY =3D=3D 8 */
+			}
+		}
+break;
+case 9:
+#line 215 "ftp.y"
+	{
+			switch (yystack.l_mark[-1]) {
+
+			case STRU_F:
+				reply(200, "STRU F ok.");
+				break;
+
+			default:
+				reply(504, "Unimplemented STRU type.");
+			}
+		}
+break;
+case 10:
+#line 227 "ftp.y"
+	{
+			switch (yystack.l_mark[-1]) {
+
+			case MODE_S:
+				reply(200, "MODE S ok.");
+				break;
+
+			default:
+				reply(502, "Unimplemented MODE type.");
+			}
+		}
+break;
+case 11:
+#line 239 "ftp.y"
+	{
+			reply(202, "ALLO command ignored.");
+		}
+break;
+case 12:
+#line 243 "ftp.y"
+	{
+			reply(202, "ALLO command ignored.");
+		}
+break;
+case 13:
+#line 247 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				retrieve((char *) 0, (char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 14:
+#line 254 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				store((char *) yystack.l_mark[-1], "w", 0);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 15:
+#line 261 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				store((char *) yystack.l_mark[-1], "a", 0);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 16:
+#line 268 "ftp.y"
+	{
+			if (yystack.l_mark[-1])
+				send_file_list(".");
+		}
+break;
+case 17:
+#line 273 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				send_file_list((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 18:
+#line 280 "ftp.y"
+	{
+			if (yystack.l_mark[-1])
+				retrieve("/bin/ls -lgA", "");
+		}
+break;
+case 19:
+#line 285 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				retrieve("/bin/ls -lgA %s", (char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 20:
+#line 292 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				statfilecmd((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 21:
+#line 299 "ftp.y"
+	{
+			statcmd();
+		}
+break;
+case 22:
+#line 303 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				remove((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 23:
+#line 310 "ftp.y"
+	{
+			if (fromname) {
+				renamecmd(fromname, (char *) yystack.l_mark[-1]);
+				free(fromname);
+				fromname =3D (char *) 0;
+			} else {
+				reply(503, "Bad sequence of commands.");
+			}
+			free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 24:
+#line 321 "ftp.y"
+	{
+			reply(225, "ABOR command successful.");
+		}
+break;
+case 25:
+#line 325 "ftp.y"
+	{
+			if (yystack.l_mark[-1])
+				cwd(pw->pw_dir);
+		}
+break;
+case 26:
+#line 330 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				cwd((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 27:
+#line 337 "ftp.y"
+	{
+			help(cmdtab, (char *) 0);
+		}
+break;
+case 28:
+#line 341 "ftp.y"
+	{
+			register char *cp =3D (char *)yystack.l_mark[-1];
+
+			if (strncasecmp(cp, "SITE", 4) =3D=3D 0) {
+				cp =3D (char *)yystack.l_mark[-1] + 4;
+				if (*cp =3D=3D ' ')
+					cp++;
+				if (*cp)
+					help(sitetab, cp);
+				else
+					help(sitetab, (char *) 0);
+			} else
+				help(cmdtab, (char *) yystack.l_mark[-1]);
+		}
+break;
+case 29:
+#line 356 "ftp.y"
+	{
+			reply(200, "NOOP command successful.");
+		}
+break;
+case 30:
+#line 360 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				makedir((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 31:
+#line 367 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				removedir((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 32:
+#line 374 "ftp.y"
+	{
+			if (yystack.l_mark[-1])
+				pwd();
+		}
+break;
+case 33:
+#line 379 "ftp.y"
+	{
+			if (yystack.l_mark[-1])
+				cwd("..");
+		}
+break;
+case 34:
+#line 384 "ftp.y"
+	{
+			help(sitetab, (char *) 0);
+		}
+break;
+case 35:
+#line 388 "ftp.y"
+	{
+			help(sitetab, (char *) yystack.l_mark[-1]);
+		}
+break;
+case 36:
+#line 392 "ftp.y"
+	{
+			int oldmask;
+
+			if (yystack.l_mark[-1]) {
+				oldmask =3D umask(0);
+				(void) umask(oldmask);
+				reply(200, "Current UMASK is %03o", oldmask);
+			}
+		}
+break;
+case 37:
+#line 402 "ftp.y"
+	{
+			int oldmask;
+
+			if (yystack.l_mark[-3]) {
+				if ((yystack.l_mark[-1] =3D=3D -1) || (yystack.l_mark[-1] > 0777)) {
+					reply(501, "Bad UMASK value");
+				} else {
+					oldmask =3D umask(yystack.l_mark[-1]);
+					reply(200,
+					    "UMASK set to %03o (was %03o)",
+					    yystack.l_mark[-1], oldmask);
+				}
+			}
+		}
+break;
+case 38:
+#line 417 "ftp.y"
+	{
+			if (yystack.l_mark[-5] && (yystack.l_mark[-1] !=3D 0)) {
+				if (yystack.l_mark[-3] > 0777)
+					reply(501,
+				"CHMOD: Mode value must be between 0 and 0777");
+				else if (chmod((char *) yystack.l_mark[-1], yystack.l_mark[-3]) < 0)
+					perror_reply(550, (char *) yystack.l_mark[-1]);
+				else
+					reply(200, "CHMOD command successful.");
+			}
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 39:
+#line 431 "ftp.y"
+	{
+			reply(200,
+			    "Current IDLE time limit is %d seconds; max %d",
+				timeout, maxtimeout);
+		}
+break;
+case 40:
+#line 437 "ftp.y"
+	{
+			if (yystack.l_mark[-1] < 30 || yystack.l_mark[-1] > maxtimeout) {
+				reply(501,
+			"Maximum IDLE time must be between 30 and %d seconds",
+				    maxtimeout);
+			} else {
+				timeout =3D yystack.l_mark[-1];
+				(void) alarm((unsigned) timeout);
+				reply(200,
+				    "Maximum IDLE time set to %d seconds",
+				    timeout);
+			}
+		}
+break;
+case 41:
+#line 451 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				store((char *) yystack.l_mark[-1], "w", 1);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 42:
+#line 458 "ftp.y"
+	{
+#ifdef unix
+#ifdef BSD
+			reply(215, "UNIX Type: L%d Version: BSD-%d",
+				NBBY, BSD);
+#else /* BSD */
+			reply(215, "UNIX Type: L%d", NBBY);
+#endif /* BSD */
+#else /* unix */
+			reply(215, "UNKNOWN Type: L%d", NBBY);
+#endif /* unix */
+		}
+break;
+case 43:
+#line 479 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0)
+				sizecmd((char *) yystack.l_mark[-1]);
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 44:
+#line 496 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1] !=3D 0) {
+				struct stat stbuf;
+				if (stat((char *) yystack.l_mark[-1], &stbuf) < 0)
+					perror_reply(550, "%s", (char *) yystack.l_mark[-1]);
+				else if ((stbuf.st_mode&S_IFMT) !=3D S_IFREG) {
+					reply(550, "%s: not a plain file.",
+						(char *) yystack.l_mark[-1]);
+				} else {
+					register struct tm *t;
+					t =3D gmtime(&stbuf.st_mtime);
+					reply(213,
+					    "%04d%02d%02d%02d%02d%02d",
+					    1900 + t->tm_year,
+					    t->tm_mon+1, t->tm_mday,
+					    t->tm_hour, t->tm_min, t->tm_sec);
+				}
+			}
+			if (yystack.l_mark[-1] !=3D 0)
+				free((char *) yystack.l_mark[-1]);
+		}
+break;
+case 45:
+#line 518 "ftp.y"
+	{
+			reply(221, "Goodbye.");
+			dologout(0);
+		}
+break;
+case 46:
+#line 523 "ftp.y"
+	{
+			yyerrok;
+		}
+break;
+case 47:
+#line 528 "ftp.y"
+	{
+			if (yystack.l_mark[-3] && yystack.l_mark[-1]) {
+				fromname =3D renamefrom((char *) yystack.l_mark[-1]);
+				if (fromname =3D=3D (char *) 0 && yystack.l_mark[-1]) {
+					free((char *) yystack.l_mark[-1]);
+				}
+			}
+		}
+break;
+case 49:
+#line 542 "ftp.y"
+	{
+			*(const char **)(&(yyval)) =3D "";
+		}
+break;
+case 52:
+#line 553 "ftp.y"
+	{
+			register char *a, *p;
+
+			a =3D (char *)&data_dest.sin_addr;
+			a[0] =3D yystack.l_mark[-10]; a[1] =3D yystack.l_mark[-8]; a[2] =3D yys=
tack.l_mark[-6]; a[3] =3D yystack.l_mark[-4];
+			p =3D (char *)&data_dest.sin_port;
+			p[0] =3D yystack.l_mark[-2]; p[1] =3D yystack.l_mark[0];
+			data_dest.sin_family =3D AF_INET;
+		}
+break;
+case 53:
+#line 565 "ftp.y"
+	{
+		yyval =3D FORM_N;
+	}
+break;
+case 54:
+#line 569 "ftp.y"
+	{
+		yyval =3D FORM_T;
+	}
+break;
+case 55:
+#line 573 "ftp.y"
+	{
+		yyval =3D FORM_C;
+	}
+break;
+case 56:
+#line 579 "ftp.y"
+	{
+		cmd_type =3D TYPE_A;
+		cmd_form =3D FORM_N;
+	}
+break;
+case 57:
+#line 584 "ftp.y"
+	{
+		cmd_type =3D TYPE_A;
+		cmd_form =3D yystack.l_mark[0];
+	}
+break;
+case 58:
+#line 589 "ftp.y"
+	{
+		cmd_type =3D TYPE_E;
+		cmd_form =3D FORM_N;
+	}
+break;
+case 59:
+#line 594 "ftp.y"
+	{
+		cmd_type =3D TYPE_E;
+		cmd_form =3D yystack.l_mark[0];
+	}
+break;
+case 60:
+#line 599 "ftp.y"
+	{
+		cmd_type =3D TYPE_I;
+	}
+break;
+case 61:
+#line 603 "ftp.y"
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D NBBY;
+	}
+break;
+case 62:
+#line 608 "ftp.y"
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D yystack.l_mark[0];
+	}
+break;
+case 63:
+#line 614 "ftp.y"
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D yystack.l_mark[0];
+	}
+break;
+case 64:
+#line 621 "ftp.y"
+	{
+		yyval =3D STRU_F;
+	}
+break;
+case 65:
+#line 625 "ftp.y"
+	{
+		yyval =3D STRU_R;
+	}
+break;
+case 66:
+#line 629 "ftp.y"
+	{
+		yyval =3D STRU_P;
+	}
+break;
+case 67:
+#line 635 "ftp.y"
+	{
+		yyval =3D MODE_S;
+	}
+break;
+case 68:
+#line 639 "ftp.y"
+	{
+		yyval =3D MODE_B;
+	}
+break;
+case 69:
+#line 643 "ftp.y"
+	{
+		yyval =3D MODE_C;
+	}
+break;
+case 70:
+#line 649 "ftp.y"
+	{
+		/*
+		 * Problem: this production is used for all pathname
+		 * processing, but only gives a 550 error reply.
+		 * This is a valid reply in some cases but not in others.
+		 */
+		if (logged_in && yystack.l_mark[0] && strncmp((char *) yystack.l_mark[0]=
, "~", 1) =3D=3D 0) {
+			*(char **)&(yyval) =3D *glob((char *) yystack.l_mark[0]);
+			if (globerr !=3D 0) {
+				reply(550, globerr);
+				yyval =3D 0;
+			}
+			free((char *) yystack.l_mark[0]);
+		} else
+			yyval =3D yystack.l_mark[0];
+	}
+break;
+case 72:
+#line 671 "ftp.y"
+	{
+		register int ret, dec, multby, digit;
+
+		/*
+		 * Convert a number that was read as decimal number
+		 * to what it would be if it had been read as octal.
+		 */
+		dec =3D yystack.l_mark[0];
+		multby =3D 1;
+		ret =3D 0;
+		while (dec) {
+			digit =3D dec%10;
+			if (digit > 7) {
+				ret =3D -1;
+				break;
+			}
+			ret +=3D digit * multby;
+			multby *=3D 8;
+			dec /=3D 10;
+		}
+		yyval =3D ret;
+	}
+break;
+case 73:
+#line 696 "ftp.y"
+	{
+		if (logged_in)
+			yyval =3D 1;
+		else {
+			reply(530, "Please login with USER and PASS.");
+			yyval =3D 0;
+		}
+	}
+break;
+#line 1935 "ftp.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/ftp.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/ftp.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,63 @@
+#define A 257
+#define B 258
+#define C 259
+#define E 260
+#define F 261
+#define I 262
+#define L 263
+#define N 264
+#define P 265
+#define R 266
+#define S 267
+#define T 268
+#define SP 269
+#define CRLF 270
+#define COMMA 271
+#define STRING 272
+#define NUMBER 273
+#define USER 274
+#define PASS 275
+#define ACCT 276
+#define REIN 277
+#define QUIT 278
+#define PORT 279
+#define PASV 280
+#define TYPE 281
+#define STRU 282
+#define MODE 283
+#define RETR 284
+#define STOR 285
+#define APPE 286
+#define MLFL 287
+#define MAIL 288
+#define MSND 289
+#define MSOM 290
+#define MSAM 291
+#define MRSQ 292
+#define MRCP 293
+#define ALLO 294
+#define REST 295
+#define RNFR 296
+#define RNTO 297
+#define ABOR 298
+#define DELE 299
+#define CWD 300
+#define LIST 301
+#define NLST 302
+#define SITE 303
+#define STAT 304
+#define HELP 305
+#define NOOP 306
+#define MKD 307
+#define RMD 308
+#define PWD 309
+#define CDUP 310
+#define STOU 311
+#define SMNT 312
+#define SYST 313
+#define SIZE 314
+#define MDTM 315
+#define UMASK 316
+#define IDLE 317
+#define CHMOD 318
+#define LEXERR 319
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/ftp.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/ftp.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1228 @@
+/*
+ * Copyright (c) 1985, 1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ *	@(#)ftpcmd.y	5.20.1.1 (Berkeley) 3/2/89
+ */
+
+/*
+ * Grammar for FTP commands.
+ * See RFC 959.
+ */
+
+%{
+
+/* sccsid[] =3D "@(#)ftpcmd.y	5.20.1.1 (Berkeley) 3/2/89"; */
+
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/ftp.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <signal.h>
+#include <ctype.h>
+#include <pwd.h>
+#include <setjmp.h>
+#include <syslog.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <time.h>
+#include <assert.h>
+
+#ifdef YYBISON
+int yylex(void);
+static void yyerror(const char *);
+#endif
+
+extern	struct sockaddr_in data_dest;
+extern	int logged_in;
+extern	struct passwd *pw;
+extern	int guest;
+extern	int logging;
+extern	int type;
+extern	int form;
+extern	int debug;
+extern	int timeout;
+extern	int maxtimeout;
+extern  int pdata;
+extern	char hostname[], remotehost[];
+extern	char proctitle[];
+extern	char *globerr;
+extern	int usedefault;
+extern  int transflag;
+extern  char tmpline[];
+
+extern char **glob(char *);
+extern char *renamefrom(char *);
+extern void cwd(const char *);
+
+extern void dologout(int);
+extern void fatal(const char *);
+extern void makedir(const char *);
+extern void nack(const char *);
+extern void pass(const char *);
+extern void passive(void);
+extern void pwd(void);
+extern void removedir(char *);
+extern void renamecmd(char *, char *);
+extern void retrieve(const char *, const char *);
+extern void send_file_list(const char *);
+extern void statcmd(void);
+extern void statfilecmd(const char *);
+extern void store(char *, const char *, int);
+extern void user(const char *);
+
+extern void perror_reply(int, const char *, ...);
+extern void reply(int, const char *, ...);
+extern void lreply(int, const char *, ...);
+
+static	int cmd_type;
+static	int cmd_form;
+static	int cmd_bytesz;
+char	cbuf[512];
+char	*fromname;
+
+struct tab {
+	const char *name;
+	short	token;
+	short	state;
+	short	implemented;	/* 1 if command is implemented */
+	const char *help;
+};
+
+static char * copy(const char *);
+
+#ifdef YYBISON
+static void sizecmd(char *filename);
+static void help(struct tab *ctab, char *s);
+struct tab cmdtab[];
+struct tab sitetab[];
+#endif
+
+static void
+yyerror(const char *msg)
+{
+	perror(msg);
+}
+%}
+
+%token
+	A	B	C	E	F	I
+	L	N	P	R	S	T
+
+	SP	CRLF	COMMA	STRING	NUMBER
+
+	USER	PASS	ACCT	REIN	QUIT	PORT
+	PASV	TYPE	STRU	MODE	RETR	STOR
+	APPE	MLFL	MAIL	MSND	MSOM	MSAM
+	MRSQ	MRCP	ALLO	REST	RNFR	RNTO
+	ABOR	DELE	CWD	LIST	NLST	SITE
+	STAT	HELP	NOOP	MKD	RMD	PWD
+	CDUP	STOU	SMNT	SYST	SIZE	MDTM
+
+	UMASK	IDLE	CHMOD
+
+	LEXERR
+
+%start	cmd_list
+
+%%
+
+cmd_list:	/* empty */
+	|	cmd_list cmd
+		{
+			fromname =3D (char *) 0;
+		}
+	|	cmd_list rcmd
+	;
+
+cmd:		USER SP username CRLF
+		{
+			user((char *) $3);
+			free((char *) $3);
+		}
+	|	PASS SP password CRLF
+		{
+			pass((char *) $3);
+			free((char *) $3);
+		}
+	|	PORT SP host_port CRLF
+		{
+			usedefault =3D 0;
+			if (pdata >=3D 0) {
+				(void) close(pdata);
+				pdata =3D -1;
+			}
+			reply(200, "PORT command successful.");
+		}
+	|	PASV CRLF
+		{
+			passive();
+		}
+	|	TYPE SP type_code CRLF
+		{
+			switch (cmd_type) {
+
+			case TYPE_A:
+				if (cmd_form =3D=3D FORM_N) {
+					reply(200, "Type set to A.");
+					type =3D cmd_type;
+					form =3D cmd_form;
+				} else
+					reply(504, "Form must be N.");
+				break;
+
+			case TYPE_E:
+				reply(504, "Type E not implemented.");
+				break;
+
+			case TYPE_I:
+				reply(200, "Type set to I.");
+				type =3D cmd_type;
+				break;
+
+			case TYPE_L:
+#if NBBY =3D=3D 8
+				if (cmd_bytesz =3D=3D 8) {
+					reply(200,
+					    "Type set to L (byte size 8).");
+					type =3D cmd_type;
+				} else
+					reply(504, "Byte size must be 8.");
+#else /* NBBY =3D=3D 8 */
+				UNIMPLEMENTED for NBBY !=3D 8
+#endif /* NBBY =3D=3D 8 */
+			}
+		}
+	|	STRU SP struct_code CRLF
+		{
+			switch ($3) {
+
+			case STRU_F:
+				reply(200, "STRU F ok.");
+				break;
+
+			default:
+				reply(504, "Unimplemented STRU type.");
+			}
+		}
+	|	MODE SP mode_code CRLF
+		{
+			switch ($3) {
+
+			case MODE_S:
+				reply(200, "MODE S ok.");
+				break;
+
+			default:
+				reply(502, "Unimplemented MODE type.");
+			}
+		}
+	|	ALLO SP NUMBER CRLF
+		{
+			reply(202, "ALLO command ignored.");
+		}
+	|	ALLO SP NUMBER SP R SP NUMBER CRLF
+		{
+			reply(202, "ALLO command ignored.");
+		}
+	|	RETR check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				retrieve((char *) 0, (char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	STOR check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				store((char *) $4, "w", 0);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	APPE check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				store((char *) $4, "a", 0);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	NLST check_login CRLF
+		{
+			if ($2)
+				send_file_list(".");
+		}
+	|	NLST check_login SP STRING CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				send_file_list((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	LIST check_login CRLF
+		{
+			if ($2)
+				retrieve("/bin/ls -lgA", "");
+		}
+	|	LIST check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				retrieve("/bin/ls -lgA %s", (char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	STAT check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				statfilecmd((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	STAT CRLF
+		{
+			statcmd();
+		}
+	|	DELE check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				remove((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	RNTO SP pathname CRLF
+		{
+			if (fromname) {
+				renamecmd(fromname, (char *) $3);
+				free(fromname);
+				fromname =3D (char *) 0;
+			} else {
+				reply(503, "Bad sequence of commands.");
+			}
+			free((char *) $3);
+		}
+	|	ABOR CRLF
+		{
+			reply(225, "ABOR command successful.");
+		}
+	|	CWD check_login CRLF
+		{
+			if ($2)
+				cwd(pw->pw_dir);
+		}
+	|	CWD check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				cwd((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	HELP CRLF
+		{
+			help(cmdtab, (char *) 0);
+		}
+	|	HELP SP STRING CRLF
+		{
+			register char *cp =3D (char *)$3;
+
+			if (strncasecmp(cp, "SITE", 4) =3D=3D 0) {
+				cp =3D (char *)$3 + 4;
+				if (*cp =3D=3D ' ')
+					cp++;
+				if (*cp)
+					help(sitetab, cp);
+				else
+					help(sitetab, (char *) 0);
+			} else
+				help(cmdtab, (char *) $3);
+		}
+	|	NOOP CRLF
+		{
+			reply(200, "NOOP command successful.");
+		}
+	|	MKD check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				makedir((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	RMD check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				removedir((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	PWD check_login CRLF
+		{
+			if ($2)
+				pwd();
+		}
+	|	CDUP check_login CRLF
+		{
+			if ($2)
+				cwd("..");
+		}
+	|	SITE SP HELP CRLF
+		{
+			help(sitetab, (char *) 0);
+		}
+	|	SITE SP HELP SP STRING CRLF
+		{
+			help(sitetab, (char *) $5);
+		}
+	|	SITE SP UMASK check_login CRLF
+		{
+			int oldmask;
+
+			if ($4) {
+				oldmask =3D umask(0);
+				(void) umask(oldmask);
+				reply(200, "Current UMASK is %03o", oldmask);
+			}
+		}
+	|	SITE SP UMASK check_login SP octal_number CRLF
+		{
+			int oldmask;
+
+			if ($4) {
+				if (($6 =3D=3D -1) || ($6 > 0777)) {
+					reply(501, "Bad UMASK value");
+				} else {
+					oldmask =3D umask($6);
+					reply(200,
+					    "UMASK set to %03o (was %03o)",
+					    $6, oldmask);
+				}
+			}
+		}
+	|	SITE SP CHMOD check_login SP octal_number SP pathname CRLF
+		{
+			if ($4 && ($8 !=3D 0)) {
+				if ($6 > 0777)
+					reply(501,
+				"CHMOD: Mode value must be between 0 and 0777");
+				else if (chmod((char *) $8, $6) < 0)
+					perror_reply(550, (char *) $8);
+				else
+					reply(200, "CHMOD command successful.");
+			}
+			if ($8 !=3D 0)
+				free((char *) $8);
+		}
+	|	SITE SP IDLE CRLF
+		{
+			reply(200,
+			    "Current IDLE time limit is %d seconds; max %d",
+				timeout, maxtimeout);
+		}
+	|	SITE SP IDLE SP NUMBER CRLF
+		{
+			if ($5 < 30 || $5 > maxtimeout) {
+				reply(501,
+			"Maximum IDLE time must be between 30 and %d seconds",
+				    maxtimeout);
+			} else {
+				timeout =3D $5;
+				(void) alarm((unsigned) timeout);
+				reply(200,
+				    "Maximum IDLE time set to %d seconds",
+				    timeout);
+			}
+		}
+	|	STOU check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				store((char *) $4, "w", 1);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	SYST CRLF
+		{
+#ifdef unix
+#ifdef BSD
+			reply(215, "UNIX Type: L%d Version: BSD-%d",
+				NBBY, BSD);
+#else /* BSD */
+			reply(215, "UNIX Type: L%d", NBBY);
+#endif /* BSD */
+#else /* unix */
+			reply(215, "UNKNOWN Type: L%d", NBBY);
+#endif /* unix */
+		}
+
+		/*
+		 * SIZE is not in RFC959, but Postel has blessed it and
+		 * it will be in the updated RFC.
+		 *
+		 * Return size of file in a format suitable for
+		 * using with RESTART (we just count bytes).
+		 */
+	|	SIZE check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0)
+				sizecmd((char *) $4);
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+
+		/*
+		 * MDTM is not in RFC959, but Postel has blessed it and
+		 * it will be in the updated RFC.
+		 *
+		 * Return modification time of file as an ISO 3307
+		 * style time. E.g. YYYYMMDDHHMMSS or YYYYMMDDHHMMSS.xxx
+		 * where xxx is the fractional second (of any precision,
+		 * not necessarily 3 digits)
+		 */
+	|	MDTM check_login SP pathname CRLF
+		{
+			if ($2 && $4 !=3D 0) {
+				struct stat stbuf;
+				if (stat((char *) $4, &stbuf) < 0)
+					perror_reply(550, "%s", (char *) $4);
+				else if ((stbuf.st_mode&S_IFMT) !=3D S_IFREG) {
+					reply(550, "%s: not a plain file.",
+						(char *) $4);
+				} else {
+					register struct tm *t;
+					t =3D gmtime(&stbuf.st_mtime);
+					reply(213,
+					    "%04d%02d%02d%02d%02d%02d",
+					    1900 + t->tm_year,
+					    t->tm_mon+1, t->tm_mday,
+					    t->tm_hour, t->tm_min, t->tm_sec);
+				}
+			}
+			if ($4 !=3D 0)
+				free((char *) $4);
+		}
+	|	QUIT CRLF
+		{
+			reply(221, "Goodbye.");
+			dologout(0);
+		}
+	|	error CRLF
+		{
+			yyerrok;
+		}
+	;
+rcmd:		RNFR check_login SP pathname CRLF
+		{
+			if ($2 && $4) {
+				fromname =3D renamefrom((char *) $4);
+				if (fromname =3D=3D (char *) 0 && $4) {
+					free((char *) $4);
+				}
+			}
+		}
+	;
+
+username:	STRING
+	;
+
+password:	/* empty */
+		{
+			*(const char **)(&($$)) =3D "";
+		}
+	|	STRING
+	;
+
+byte_size:	NUMBER
+	;
+
+host_port:	NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER COMMA
+		NUMBER COMMA NUMBER
+		{
+			register char *a, *p;
+
+			a =3D (char *)&data_dest.sin_addr;
+			a[0] =3D $1; a[1] =3D $3; a[2] =3D $5; a[3] =3D $7;
+			p =3D (char *)&data_dest.sin_port;
+			p[0] =3D $9; p[1] =3D $11;
+			data_dest.sin_family =3D AF_INET;
+		}
+	;
+
+form_code:	N
+	{
+		$$ =3D FORM_N;
+	}
+	|	T
+	{
+		$$ =3D FORM_T;
+	}
+	|	C
+	{
+		$$ =3D FORM_C;
+	}
+	;
+
+type_code:	A
+	{
+		cmd_type =3D TYPE_A;
+		cmd_form =3D FORM_N;
+	}
+	|	A SP form_code
+	{
+		cmd_type =3D TYPE_A;
+		cmd_form =3D $3;
+	}
+	|	E
+	{
+		cmd_type =3D TYPE_E;
+		cmd_form =3D FORM_N;
+	}
+	|	E SP form_code
+	{
+		cmd_type =3D TYPE_E;
+		cmd_form =3D $3;
+	}
+	|	I
+	{
+		cmd_type =3D TYPE_I;
+	}
+	|	L
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D NBBY;
+	}
+	|	L SP byte_size
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D $3;
+	}
+	/* this is for a bug in the BBN ftp */
+	|	L byte_size
+	{
+		cmd_type =3D TYPE_L;
+		cmd_bytesz =3D $2;
+	}
+	;
+
+struct_code:	F
+	{
+		$$ =3D STRU_F;
+	}
+	|	R
+	{
+		$$ =3D STRU_R;
+	}
+	|	P
+	{
+		$$ =3D STRU_P;
+	}
+	;
+
+mode_code:	S
+	{
+		$$ =3D MODE_S;
+	}
+	|	B
+	{
+		$$ =3D MODE_B;
+	}
+	|	C
+	{
+		$$ =3D MODE_C;
+	}
+	;
+
+pathname:	pathstring
+	{
+		/*
+		 * Problem: this production is used for all pathname
+		 * processing, but only gives a 550 error reply.
+		 * This is a valid reply in some cases but not in others.
+		 */
+		if (logged_in && $1 && strncmp((char *) $1, "~", 1) =3D=3D 0) {
+			*(char **)&($$) =3D *glob((char *) $1);
+			if (globerr !=3D 0) {
+				reply(550, globerr);
+				$$ =3D 0;
+			}
+			free((char *) $1);
+		} else
+			$$ =3D $1;
+	}
+	;
+
+pathstring:	STRING
+	;
+
+octal_number:	NUMBER
+	{
+		register int ret, dec, multby, digit;
+
+		/*
+		 * Convert a number that was read as decimal number
+		 * to what it would be if it had been read as octal.
+		 */
+		dec =3D $1;
+		multby =3D 1;
+		ret =3D 0;
+		while (dec) {
+			digit =3D dec%10;
+			if (digit > 7) {
+				ret =3D -1;
+				break;
+			}
+			ret +=3D digit * multby;
+			multby *=3D 8;
+			dec /=3D 10;
+		}
+		$$ =3D ret;
+	}
+	;
+
+check_login:	/* empty */
+	{
+		if (logged_in)
+			$$ =3D 1;
+		else {
+			reply(530, "Please login with USER and PASS.");
+			$$ =3D 0;
+		}
+	}
+	;
+
+%%
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+extern jmp_buf errcatch;
+
+static void upper(char *);
+
+#define	CMD	0	/* beginning of command */
+#define	ARGS	1	/* expect miscellaneous arguments */
+#define	STR1	2	/* expect SP followed by STRING */
+#define	STR2	3	/* expect STRING */
+#define	OSTR	4	/* optional SP then STRING */
+#define	ZSTR1	5	/* SP then optional STRING */
+#define	ZSTR2	6	/* optional STRING after SP */
+#define	SITECMD	7	/* SITE command */
+#define	NSTR	8	/* Number followed by a string */
+
+struct tab cmdtab[] =3D {		/* In order defined in RFC 765 */
+	{ "USER", USER, STR1, 1,	"<sp> username" },
+	{ "PASS", PASS, ZSTR1, 1,	"<sp> password" },
+	{ "ACCT", ACCT, STR1, 0,	"(specify account)" },
+	{ "SMNT", SMNT, ARGS, 0,	"(structure mount)" },
+	{ "REIN", REIN, ARGS, 0,	"(reinitialize server state)" },
+	{ "QUIT", QUIT, ARGS, 1,	"(terminate service)", },
+	{ "PORT", PORT, ARGS, 1,	"<sp> b0, b1, b2, b3, b4" },
+	{ "PASV", PASV, ARGS, 1,	"(set server in passive mode)" },
+	{ "TYPE", TYPE, ARGS, 1,	"<sp> [ A | E | I | L ]" },
+	{ "STRU", STRU, ARGS, 1,	"(specify file structure)" },
+	{ "MODE", MODE, ARGS, 1,	"(specify transfer mode)" },
+	{ "RETR", RETR, STR1, 1,	"<sp> file-name" },
+	{ "STOR", STOR, STR1, 1,	"<sp> file-name" },
+	{ "APPE", APPE, STR1, 1,	"<sp> file-name" },
+	{ "MLFL", MLFL, OSTR, 0,	"(mail file)" },
+	{ "MAIL", MAIL, OSTR, 0,	"(mail to user)" },
+	{ "MSND", MSND, OSTR, 0,	"(mail send to terminal)" },
+	{ "MSOM", MSOM, OSTR, 0,	"(mail send to terminal or mailbox)" },
+	{ "MSAM", MSAM, OSTR, 0,	"(mail send to terminal and mailbox)" },
+	{ "MRSQ", MRSQ, OSTR, 0,	"(mail recipient scheme question)" },
+	{ "MRCP", MRCP, STR1, 0,	"(mail recipient)" },
+	{ "ALLO", ALLO, ARGS, 1,	"allocate storage (vacuously)" },
+	{ "REST", REST, ARGS, 0,	"(restart command)" },
+	{ "RNFR", RNFR, STR1, 1,	"<sp> file-name" },
+	{ "RNTO", RNTO, STR1, 1,	"<sp> file-name" },
+	{ "ABOR", ABOR, ARGS, 1,	"(abort operation)" },
+	{ "DELE", DELE, STR1, 1,	"<sp> file-name" },
+	{ "CWD",  CWD,  OSTR, 1,	"[ <sp> directory-name ]" },
+	{ "XCWD", CWD,	OSTR, 1,	"[ <sp> directory-name ]" },
+	{ "LIST", LIST, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "NLST", NLST, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "SITE", SITE, SITECMD, 1,	"site-cmd [ <sp> arguments ]" },
+	{ "SYST", SYST, ARGS, 1,	"(get type of operating system)" },
+	{ "STAT", STAT, OSTR, 1,	"[ <sp> path-name ]" },
+	{ "HELP", HELP, OSTR, 1,	"[ <sp> <string> ]" },
+	{ "NOOP", NOOP, ARGS, 1,	"" },
+	{ "MKD",  MKD,  STR1, 1,	"<sp> path-name" },
+	{ "XMKD", MKD,  STR1, 1,	"<sp> path-name" },
+	{ "RMD",  RMD,  STR1, 1,	"<sp> path-name" },
+	{ "XRMD", RMD,  STR1, 1,	"<sp> path-name" },
+	{ "PWD",  PWD,  ARGS, 1,	"(return current directory)" },
+	{ "XPWD", PWD,  ARGS, 1,	"(return current directory)" },
+	{ "CDUP", CDUP, ARGS, 1,	"(change to parent directory)" },
+	{ "XCUP", CDUP, ARGS, 1,	"(change to parent directory)" },
+	{ "STOU", STOU, STR1, 1,	"<sp> file-name" },
+	{ "SIZE", SIZE, OSTR, 1,	"<sp> path-name" },
+	{ "MDTM", MDTM, OSTR, 1,	"<sp> path-name" },
+	{ 0,   0,    0,    0,	0 }
+};
+
+struct tab sitetab[] =3D {
+	{ "UMASK", UMASK, ARGS, 1,	"[ <sp> umask ]" },
+	{ "IDLE", IDLE, ARGS, 1,	"[ <sp> maximum-idle-time ]" },
+	{ "CHMOD", CHMOD, NSTR, 1,	"<sp> mode <sp> file-name" },
+	{ "HELP", HELP, OSTR, 1,	"[ <sp> <string> ]" },
+	{ 0,   0,    0,    0,	0 }
+};
+
+static struct tab *
+lookup(struct tab *p, char *cmd)
+{
+
+	for (; p->name !=3D 0; p++)
+		if (strcmp(cmd, p->name) =3D=3D 0)
+			return (p);
+	return (0);
+}
+
+#include <arpa/telnet.h>
+
+/*
+ * get_line - a hacked up version of fgets to ignore TELNET escape codes.
+ */
+static char *
+get_line(char *s, int n, FILE *iop)
+{
+	register int c;
+	register char *cs;
+
+	cs =3D s;
+/* tmpline may contain saved command from urgent mode interruption */
+	for (c =3D 0; tmpline[c] !=3D '\0' && --n > 0; ++c) {
+		*cs++ =3D tmpline[c];
+		if (tmpline[c] =3D=3D '\n') {
+			*cs =3D '\0';
+			if (debug)
+				syslog(LOG_DEBUG, "command: %s", s);
+			tmpline[0] =3D '\0';
+			return(s);
+		}
+		if (c =3D=3D 0)
+			tmpline[0] =3D '\0';
+	}
+	while ((c =3D getc(iop)) !=3D EOF) {
+		c &=3D 0377;
+		if (c =3D=3D IAC) {
+		    if ((c =3D getc(iop)) !=3D EOF) {
+			c &=3D 0377;
+			switch (c) {
+			case WILL:
+			case WONT:
+				c =3D getc(iop);
+				printf("%c%c%c", IAC, DONT, 0377&c);
+				(void) fflush(stdout);
+				continue;
+			case DO:
+			case DONT:
+				c =3D getc(iop);
+				printf("%c%c%c", IAC, WONT, 0377&c);
+				(void) fflush(stdout);
+				continue;
+			case IAC:
+				break;
+			default:
+				continue;	/* ignore command */
+			}
+		    }
+		}
+		*cs++ =3D c;
+		if (--n <=3D 0 || c =3D=3D '\n')
+			break;
+	}
+	if (c =3D=3D EOF && cs =3D=3D s)
+		return (0);
+	*cs =3D '\0';
+	if (debug)
+		syslog(LOG_DEBUG, "command: %s", s);
+	return (s);
+}
+
+static void
+toolong(int sig)
+{
+	time_t now;
+
+	(void) sig;
+	reply(421,
+	  "Timeout (%d seconds): closing control connection.", timeout);
+	(void) time(&now);
+	if (logging) {
+		syslog(LOG_INFO,
+			"User %s timed out after %d seconds at %s",
+			(pw ? pw -> pw_name : "unknown"), timeout, ctime(&now));
+	}
+	dologout(1);
+}
+
+int
+yylex(void)
+{
+	static int cpos, state;
+	register char *cp, *cp2;
+	register struct tab *p;
+	int n;
+	char c;
+
+	for (;;) {
+		switch (state) {
+
+		case CMD:
+			(void) signal(SIGALRM, toolong);
+			(void) alarm((unsigned) timeout);
+			if (get_line(cbuf, sizeof(cbuf)-1, stdin) =3D=3D 0) {
+				reply(221, "You could at least say goodbye.");
+				dologout(0);
+			}
+			(void) alarm(0);
+#ifdef SETPROCTITLE
+			if (strncasecmp(cbuf, "PASS", 4) !=3D 0)
+				setproctitle("%s: %s", proctitle, cbuf);
+#endif /* SETPROCTITLE */
+			if ((cp =3D strchr(cbuf, '\r'))) {
+				*cp++ =3D '\n';
+				*cp =3D '\0';
+			}
+			if ((cp =3D strpbrk(cbuf, " \n")))
+				cpos =3D cp - cbuf;
+			if (cpos =3D=3D 0)
+				cpos =3D 4;
+			c =3D cbuf[cpos];
+			cbuf[cpos] =3D '\0';
+			upper(cbuf);
+			p =3D lookup(cmdtab, cbuf);
+			cbuf[cpos] =3D c;
+			if (p !=3D 0) {
+				if (p->implemented =3D=3D 0) {
+					nack(p->name);
+					longjmp(errcatch,0);
+					/* NOTREACHED */
+				}
+				state =3D p->state;
+				*(const char **)(&yylval) =3D p->name;
+				return (p->token);
+			}
+			break;
+
+		case SITECMD:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				return (SP);
+			}
+			cp =3D &cbuf[cpos];
+			if ((cp2 =3D strpbrk(cp, " \n")))
+				cpos =3D cp2 - cbuf;
+			c =3D cbuf[cpos];
+			cbuf[cpos] =3D '\0';
+			upper(cp);
+			p =3D lookup(sitetab, cp);
+			cbuf[cpos] =3D c;
+			if (p !=3D 0) {
+				if (p->implemented =3D=3D 0) {
+					state =3D CMD;
+					nack(p->name);
+					longjmp(errcatch,0);
+					/* NOTREACHED */
+				}
+				state =3D p->state;
+				*(const char **)(&yylval) =3D p->name;
+				return (p->token);
+			}
+			state =3D CMD;
+			break;
+
+		case OSTR:
+			if (cbuf[cpos] =3D=3D '\n') {
+				state =3D CMD;
+				return (CRLF);
+			}
+			/* FALLTHROUGH */
+
+		case STR1:
+		case ZSTR1:
+		dostr1:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				if (state =3D=3D OSTR)
+					state =3D STR2;
+				else
+					++state;
+				return (SP);
+			}
+			break;
+
+		case ZSTR2:
+			if (cbuf[cpos] =3D=3D '\n') {
+				state =3D CMD;
+				return (CRLF);
+			}
+			/* FALLTHROUGH */
+
+		case STR2:
+			cp =3D &cbuf[cpos];
+			n =3D strlen(cp);
+			cpos +=3D n - 1;
+			/*
+			 * Make sure the string is nonempty and \n terminated.
+			 */
+			if (n > 1 && cbuf[cpos] =3D=3D '\n') {
+				cbuf[cpos] =3D '\0';
+				*(char **)&yylval =3D copy(cp);
+				cbuf[cpos] =3D '\n';
+				state =3D ARGS;
+				return (STRING);
+			}
+			break;
+
+		case NSTR:
+			if (cbuf[cpos] =3D=3D ' ') {
+				cpos++;
+				return (SP);
+			}
+			if (isdigit(cbuf[cpos])) {
+				cp =3D &cbuf[cpos];
+				while (isdigit(cbuf[++cpos]))
+					;
+				c =3D cbuf[cpos];
+				cbuf[cpos] =3D '\0';
+				yylval =3D atoi(cp);
+				cbuf[cpos] =3D c;
+				state =3D STR1;
+				return (NUMBER);
+			}
+			state =3D STR1;
+			goto dostr1;
+
+		case ARGS:
+			if (isdigit(cbuf[cpos])) {
+				cp =3D &cbuf[cpos];
+				while (isdigit(cbuf[++cpos]))
+					;
+				c =3D cbuf[cpos];
+				cbuf[cpos] =3D '\0';
+				yylval =3D atoi(cp);
+				cbuf[cpos] =3D c;
+				return (NUMBER);
+			}
+			switch (cbuf[cpos++]) {
+
+			case '\n':
+				state =3D CMD;
+				return (CRLF);
+
+			case ' ':
+				return (SP);
+
+			case ',':
+				return (COMMA);
+
+			case 'A':
+			case 'a':
+				return (A);
+
+			case 'B':
+			case 'b':
+				return (B);
+
+			case 'C':
+			case 'c':
+				return (C);
+
+			case 'E':
+			case 'e':
+				return (E);
+
+			case 'F':
+			case 'f':
+				return (F);
+
+			case 'I':
+			case 'i':
+				return (I);
+
+			case 'L':
+			case 'l':
+				return (L);
+
+			case 'N':
+			case 'n':
+				return (N);
+
+			case 'P':
+			case 'p':
+				return (P);
+
+			case 'R':
+			case 'r':
+				return (R);
+
+			case 'S':
+			case 's':
+				return (S);
+
+			case 'T':
+			case 't':
+				return (T);
+
+			}
+			break;
+
+		default:
+			fatal("Unknown state in scanner.");
+		}
+		yyerror((char *) 0);
+		state =3D CMD;
+		longjmp(errcatch,0);
+	}
+}
+
+static void
+upper(char *s)
+{
+	while (*s !=3D '\0') {
+		if (islower(*s))
+			*s =3D toupper(*s);
+		s++;
+	}
+}
+
+static char *
+copy(const char *s)
+{
+	char *p;
+
+	p =3D (char * )malloc(strlen(s) + 1);
+	if (p =3D=3D 0)
+		fatal("Ran out of memory.");
+	else
+		(void) strcpy(p, s);
+	return (p);
+}
+
+static void
+help(struct tab *ctab, char *s)
+{
+	register struct tab *c;
+	register int width, NCMDS;
+	const char *help_type;
+
+	if (ctab =3D=3D sitetab)
+		help_type =3D "SITE ";
+	else
+		help_type =3D "";
+	width =3D 0, NCMDS =3D 0;
+	for (c =3D ctab; c->name !=3D 0; c++) {
+		int len =3D strlen(c->name);
+
+		if (len > width)
+			width =3D len;
+		NCMDS++;
+	}
+	width =3D (width + 8) &~ 7;
+	if (s =3D=3D 0) {
+		register int i, j, w;
+		int columns, lines;
+
+		lreply(214, "The following %scommands are recognized %s.",
+		    help_type, "(* =3D>'s unimplemented)");
+		columns =3D 76 / width;
+		if (columns =3D=3D 0)
+			columns =3D 1;
+		lines =3D (NCMDS + columns - 1) / columns;
+		for (i =3D 0; i < lines; i++) {
+			printf("   ");
+			for (j =3D 0; j < columns; j++) {
+				c =3D ctab + j * lines + i;
+				assert(c->name !=3D 0);
+				printf("%s%c", c->name,
+					c->implemented ? ' ' : '*');
+				if (c + lines >=3D &ctab[NCMDS])
+					break;
+				w =3D strlen(c->name) + 1;
+				while (w < width) {
+					putchar(' ');
+					w++;
+				}
+			}
+			printf("\r\n");
+		}
+		(void) fflush(stdout);
+		reply(214, "Direct comments to ftp-bugs@%s.", hostname);
+		return;
+	}
+	upper(s);
+	c =3D lookup(ctab, s);
+	if (c =3D=3D (struct tab *)0) {
+		reply(502, "Unknown command %s.", s);
+		return;
+	}
+	if (c->implemented)
+		reply(214, "Syntax: %s%s %s", help_type, c->name, c->help);
+	else
+		reply(214, "%s%-*s\t%s; unimplemented.", help_type, width,
+		    c->name, c->help);
+}
+
+static void
+sizecmd(char *filename)
+{
+	switch (type) {
+	case TYPE_L:
+	case TYPE_I: {
+		struct stat stbuf;
+		if (stat(filename, &stbuf) < 0 ||
+		    (stbuf.st_mode&S_IFMT) !=3D S_IFREG)
+			reply(550, "%s: not a plain file.", filename);
+		else
+#ifdef HAVE_LONG_LONG
+			reply(213, "%llu", (long long) stbuf.st_size);
+#else
+			reply(213, "%lu", stbuf.st_size);
+#endif
+		break;}
+	case TYPE_A: {
+		FILE *fin;
+		register int c, count;
+		struct stat stbuf;
+		fin =3D fopen(filename, "r");
+		if (fin =3D=3D 0) {
+			perror_reply(550, filename);
+			return;
+		}
+		if (fstat(fileno(fin), &stbuf) < 0 ||
+		    (stbuf.st_mode&S_IFMT) !=3D S_IFREG) {
+			reply(550, "%s: not a plain file.", filename);
+			(void) fclose(fin);
+			return;
+		}
+
+		count =3D 0;
+		while((c=3Dgetc(fin)) !=3D EOF) {
+			if (c =3D=3D '\n')	/* will get expanded to \r\n */
+				count++;
+			count++;
+		}
+		(void) fclose(fin);
+
+		reply(213, "%ld", count);
+		break;}
+	default:
+		reply(504, "SIZE not implemented for Type %c.", "?AEIL"[type]);
+	}
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/grammar.output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/grammar.output	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,2214 @@
+   0  $accept : program $end
+
+   1  program :
+   2          | translation_unit
+
+   3  translation_unit : external_declaration
+   4                   | translation_unit external_declaration
+
+   5  external_declaration : declaration
+   6                       | function_definition
+   7                       | ';'
+   8                       | linkage_specification
+   9                       | T_ASM T_ASMARG ';'
+  10                       | error T_MATCHRBRACE
+  11                       | error ';'
+
+  12  braces : T_LBRACE T_MATCHRBRACE
+
+  13  linkage_specification : T_EXTERN T_STRING_LITERAL braces
+  14                        | T_EXTERN T_STRING_LITERAL declaration
+
+  15  declaration : decl_specifiers ';'
+  16              | decl_specifiers init_declarator_list ';'
+
+  17  $$1 :
+
+  18  declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'
+
+  19  any_typedef : T_EXTENSION T_TYPEDEF
+  20              | T_TYPEDEF
+
+  21  opt_declarator_list :
+  22                      | declarator_list
+
+  23  declarator_list : declarator
+  24                  | declarator_list ',' declarator
+
+  25  $$2 :
+
+  26  $$3 :
+
+  27  function_definition : decl_specifiers declarator $$2 opt_declaration=
_list T_LBRACE $$3 T_MATCHRBRACE
+
+  28  $$4 :
+
+  29  function_definition : declarator $$4 opt_declaration_list T_LBRACE T=
_MATCHRBRACE
+
+  30  opt_declaration_list :
+  31                       | T_VA_DCL
+  32                       | declaration_list
+
+  33  declaration_list : declaration
+  34                   | declaration_list declaration
+
+  35  decl_specifiers : decl_specifier
+  36                  | decl_specifiers decl_specifier
+
+  37  decl_specifier : storage_class
+  38                 | type_specifier
+  39                 | type_qualifier
+
+  40  storage_class : T_AUTO
+  41                | T_EXTERN
+  42                | T_REGISTER
+  43                | T_STATIC
+  44                | T_INLINE
+  45                | T_EXTENSION
+
+  46  type_specifier : T_CHAR
+  47                 | T_DOUBLE
+  48                 | T_FLOAT
+  49                 | T_INT
+  50                 | T_LONG
+  51                 | T_SHORT
+  52                 | T_SIGNED
+  53                 | T_UNSIGNED
+  54                 | T_VOID
+  55                 | T_Bool
+  56                 | T_Complex
+  57                 | T_Imaginary
+  58                 | T_TYPEDEF_NAME
+  59                 | struct_or_union_specifier
+  60                 | enum_specifier
+
+  61  type_qualifier : T_TYPE_QUALIFIER
+  62                 | T_DEFINE_NAME
+
+  63  struct_or_union_specifier : struct_or_union any_id braces
+  64                            | struct_or_union braces
+  65                            | struct_or_union any_id
+
+  66  struct_or_union : T_STRUCT
+  67                  | T_UNION
+
+  68  init_declarator_list : init_declarator
+  69                       | init_declarator_list ',' init_declarator
+
+  70  init_declarator : declarator
+
+  71  $$5 :
+
+  72  init_declarator : declarator '=3D' $$5 T_INITIALIZER
+
+  73  enum_specifier : enumeration any_id braces
+  74                 | enumeration braces
+  75                 | enumeration any_id
+
+  76  enumeration : T_ENUM
+
+  77  any_id : T_IDENTIFIER
+  78         | T_TYPEDEF_NAME
+
+  79  declarator : pointer direct_declarator
+  80             | direct_declarator
+
+  81  direct_declarator : identifier_or_ref
+  82                    | '(' declarator ')'
+  83                    | direct_declarator T_BRACKETS
+  84                    | direct_declarator '(' parameter_type_list ')'
+  85                    | direct_declarator '(' opt_identifier_list ')'
+
+  86  pointer : '*' opt_type_qualifiers
+  87          | '*' opt_type_qualifiers pointer
+
+  88  opt_type_qualifiers :
+  89                      | type_qualifier_list
+
+  90  type_qualifier_list : type_qualifier
+  91                      | type_qualifier_list type_qualifier
+
+  92  parameter_type_list : parameter_list
+  93                      | parameter_list ',' T_ELLIPSIS
+
+  94  parameter_list : parameter_declaration
+  95                 | parameter_list ',' parameter_declaration
+
+  96  parameter_declaration : decl_specifiers declarator
+  97                        | decl_specifiers abs_declarator
+  98                        | decl_specifiers
+
+  99  opt_identifier_list :
+ 100                      | identifier_list
+
+ 101  identifier_list : any_id
+ 102                  | identifier_list ',' any_id
+
+ 103  identifier_or_ref : any_id
+ 104                    | '&' any_id
+
+ 105  abs_declarator : pointer
+ 106                 | pointer direct_abs_declarator
+ 107                 | direct_abs_declarator
+
+ 108  direct_abs_declarator : '(' abs_declarator ')'
+ 109                        | direct_abs_declarator T_BRACKETS
+ 110                        | T_BRACKETS
+ 111                        | direct_abs_declarator '(' parameter_type_lis=
t ')'
+ 112                        | direct_abs_declarator '(' ')'
+ 113                        | '(' parameter_type_list ')'
+ 114                        | '(' ')'
+=0C
+state 0
+	$accept : . program $end  (0)
+	program : .  (1)
+
+	error  shift 1
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 9
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_ASM  shift 31
+	';'  shift 32
+	$end  reduce 1
+
+	program  goto 33
+	decl_specifiers  goto 34
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	declarator  goto 41
+	direct_declarator  goto 42
+	struct_or_union  goto 43
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+	translation_unit  goto 48
+	external_declaration  goto 49
+	declaration  goto 50
+	function_definition  goto 51
+	linkage_specification  goto 52
+	any_typedef  goto 53
+
+
+state 1
+	external_declaration : error . T_MATCHRBRACE  (10)
+	external_declaration : error . ';'  (11)
+
+	T_MATCHRBRACE  shift 54
+	';'  shift 55
+	.  error
+
+
+state 2
+	direct_declarator : '(' . declarator ')'  (82)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	declarator  goto 57
+	direct_declarator  goto 42
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+
+
+state 3
+	pointer : '*' . opt_type_qualifiers  (86)
+	pointer : '*' . opt_type_qualifiers pointer  (87)
+	opt_type_qualifiers : .  (88)
+
+	T_DEFINE_NAME  shift 7
+	T_TYPE_QUALIFIER  shift 30
+	'('  reduce 88
+	'*'  reduce 88
+	'&'  reduce 88
+	T_IDENTIFIER  reduce 88
+	T_TYPEDEF_NAME  reduce 88
+	T_BRACKETS  reduce 88
+	','  reduce 88
+	')'  reduce 88
+
+	type_qualifier  goto 58
+	opt_type_qualifiers  goto 59
+	type_qualifier_list  goto 60
+
+
+state 4
+	identifier_or_ref : '&' . any_id  (104)
+
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	any_id  goto 61
+
+
+state 5
+	any_id : T_IDENTIFIER .  (77)
+
+	.  reduce 77
+
+
+6: reduce/reduce conflict (reduce 58, reduce 78) on '('
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_TYPEDEF_NAME
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_DEFINE_NAME
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_AUTO
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_EXTERN
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_REGISTER
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_STATIC
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_INLINE
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_EXTENSION
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_CHAR
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_DOUBLE
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_FLOAT
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_INT
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_VOID
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_LONG
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_SHORT
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_SIGNED
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_UNSIGNED
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_ENUM
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_STRUCT
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_UNION
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_Bool
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_Complex
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_Imaginary
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_TYPE_QUALIFIER
+6: reduce/reduce conflict (reduce 58, reduce 78) on T_BRACKETS
+6: reduce/reduce conflict (reduce 58, reduce 78) on ';'
+6: reduce/reduce conflict (reduce 58, reduce 78) on ','
+6: reduce/reduce conflict (reduce 58, reduce 78) on ')'
+state 6
+	type_specifier : T_TYPEDEF_NAME .  (58)
+	any_id : T_TYPEDEF_NAME .  (78)
+
+	'('  reduce 58
+	'*'  reduce 58
+	'&'  reduce 58
+	T_IDENTIFIER  reduce 58
+	T_TYPEDEF_NAME  reduce 58
+	T_DEFINE_NAME  reduce 58
+	T_AUTO  reduce 58
+	T_EXTERN  reduce 58
+	T_REGISTER  reduce 58
+	T_STATIC  reduce 58
+	T_TYPEDEF  reduce 78
+	T_INLINE  reduce 58
+	T_EXTENSION  reduce 58
+	T_CHAR  reduce 58
+	T_DOUBLE  reduce 58
+	T_FLOAT  reduce 58
+	T_INT  reduce 58
+	T_VOID  reduce 58
+	T_LONG  reduce 58
+	T_SHORT  reduce 58
+	T_SIGNED  reduce 58
+	T_UNSIGNED  reduce 58
+	T_ENUM  reduce 58
+	T_STRUCT  reduce 58
+	T_UNION  reduce 58
+	T_Bool  reduce 58
+	T_Complex  reduce 58
+	T_Imaginary  reduce 58
+	T_TYPE_QUALIFIER  reduce 58
+	T_BRACKETS  reduce 58
+	T_LBRACE  reduce 78
+	T_VA_DCL  reduce 78
+	';'  reduce 58
+	','  reduce 58
+	'=3D'  reduce 78
+	')'  reduce 58
+
+
+state 7
+	type_qualifier : T_DEFINE_NAME .  (62)
+
+	.  reduce 62
+
+
+state 8
+	storage_class : T_AUTO .  (40)
+
+	.  reduce 40
+
+
+state 9
+	linkage_specification : T_EXTERN . T_STRING_LITERAL braces  (13)
+	linkage_specification : T_EXTERN . T_STRING_LITERAL declaration  (14)
+	storage_class : T_EXTERN .  (41)
+
+	T_STRING_LITERAL  shift 62
+	'('  reduce 41
+	'*'  reduce 41
+	'&'  reduce 41
+	T_IDENTIFIER  reduce 41
+	T_TYPEDEF_NAME  reduce 41
+	T_DEFINE_NAME  reduce 41
+	T_AUTO  reduce 41
+	T_EXTERN  reduce 41
+	T_REGISTER  reduce 41
+	T_STATIC  reduce 41
+	T_INLINE  reduce 41
+	T_EXTENSION  reduce 41
+	T_CHAR  reduce 41
+	T_DOUBLE  reduce 41
+	T_FLOAT  reduce 41
+	T_INT  reduce 41
+	T_VOID  reduce 41
+	T_LONG  reduce 41
+	T_SHORT  reduce 41
+	T_SIGNED  reduce 41
+	T_UNSIGNED  reduce 41
+	T_ENUM  reduce 41
+	T_STRUCT  reduce 41
+	T_UNION  reduce 41
+	T_Bool  reduce 41
+	T_Complex  reduce 41
+	T_Imaginary  reduce 41
+	T_TYPE_QUALIFIER  reduce 41
+	';'  reduce 41
+
+
+state 10
+	storage_class : T_REGISTER .  (42)
+
+	.  reduce 42
+
+
+state 11
+	storage_class : T_STATIC .  (43)
+
+	.  reduce 43
+
+
+state 12
+	any_typedef : T_TYPEDEF .  (20)
+
+	.  reduce 20
+
+
+state 13
+	storage_class : T_INLINE .  (44)
+
+	.  reduce 44
+
+
+state 14
+	any_typedef : T_EXTENSION . T_TYPEDEF  (19)
+	storage_class : T_EXTENSION .  (45)
+
+	T_TYPEDEF  shift 63
+	'('  reduce 45
+	'*'  reduce 45
+	'&'  reduce 45
+	T_IDENTIFIER  reduce 45
+	T_TYPEDEF_NAME  reduce 45
+	T_DEFINE_NAME  reduce 45
+	T_AUTO  reduce 45
+	T_EXTERN  reduce 45
+	T_REGISTER  reduce 45
+	T_STATIC  reduce 45
+	T_INLINE  reduce 45
+	T_EXTENSION  reduce 45
+	T_CHAR  reduce 45
+	T_DOUBLE  reduce 45
+	T_FLOAT  reduce 45
+	T_INT  reduce 45
+	T_VOID  reduce 45
+	T_LONG  reduce 45
+	T_SHORT  reduce 45
+	T_SIGNED  reduce 45
+	T_UNSIGNED  reduce 45
+	T_ENUM  reduce 45
+	T_STRUCT  reduce 45
+	T_UNION  reduce 45
+	T_Bool  reduce 45
+	T_Complex  reduce 45
+	T_Imaginary  reduce 45
+	T_TYPE_QUALIFIER  reduce 45
+	';'  reduce 45
+
+
+state 15
+	type_specifier : T_CHAR .  (46)
+
+	.  reduce 46
+
+
+state 16
+	type_specifier : T_DOUBLE .  (47)
+
+	.  reduce 47
+
+
+state 17
+	type_specifier : T_FLOAT .  (48)
+
+	.  reduce 48
+
+
+state 18
+	type_specifier : T_INT .  (49)
+
+	.  reduce 49
+
+
+state 19
+	type_specifier : T_VOID .  (54)
+
+	.  reduce 54
+
+
+state 20
+	type_specifier : T_LONG .  (50)
+
+	.  reduce 50
+
+
+state 21
+	type_specifier : T_SHORT .  (51)
+
+	.  reduce 51
+
+
+state 22
+	type_specifier : T_SIGNED .  (52)
+
+	.  reduce 52
+
+
+state 23
+	type_specifier : T_UNSIGNED .  (53)
+
+	.  reduce 53
+
+
+state 24
+	enumeration : T_ENUM .  (76)
+
+	.  reduce 76
+
+
+state 25
+	struct_or_union : T_STRUCT .  (66)
+
+	.  reduce 66
+
+
+state 26
+	struct_or_union : T_UNION .  (67)
+
+	.  reduce 67
+
+
+state 27
+	type_specifier : T_Bool .  (55)
+
+	.  reduce 55
+
+
+state 28
+	type_specifier : T_Complex .  (56)
+
+	.  reduce 56
+
+
+state 29
+	type_specifier : T_Imaginary .  (57)
+
+	.  reduce 57
+
+
+state 30
+	type_qualifier : T_TYPE_QUALIFIER .  (61)
+
+	.  reduce 61
+
+
+state 31
+	external_declaration : T_ASM . T_ASMARG ';'  (9)
+
+	T_ASMARG  shift 64
+	.  error
+
+
+state 32
+	external_declaration : ';' .  (7)
+
+	.  reduce 7
+
+
+state 33
+	$accept : program . $end  (0)
+
+	$end  accept
+
+
+state 34
+	declaration : decl_specifiers . ';'  (15)
+	declaration : decl_specifiers . init_declarator_list ';'  (16)
+	function_definition : decl_specifiers . declarator $$2 opt_declaration_li=
st T_LBRACE $$3 T_MATCHRBRACE  (27)
+	decl_specifiers : decl_specifiers . decl_specifier  (36)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	';'  shift 67
+	.  error
+
+	decl_specifier  goto 68
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	init_declarator_list  goto 69
+	init_declarator  goto 70
+	declarator  goto 71
+	direct_declarator  goto 42
+	struct_or_union  goto 43
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+
+
+state 35
+	decl_specifiers : decl_specifier .  (35)
+
+	.  reduce 35
+
+
+state 36
+	decl_specifier : storage_class .  (37)
+
+	.  reduce 37
+
+
+state 37
+	decl_specifier : type_specifier .  (38)
+
+	.  reduce 38
+
+
+state 38
+	decl_specifier : type_qualifier .  (39)
+
+	.  reduce 39
+
+
+state 39
+	type_specifier : struct_or_union_specifier .  (59)
+
+	.  reduce 59
+
+
+state 40
+	type_specifier : enum_specifier .  (60)
+
+	.  reduce 60
+
+
+state 41
+	function_definition : declarator . $$4 opt_declaration_list T_LBRACE T_MA=
TCHRBRACE  (29)
+	$$4 : .  (28)
+
+	.  reduce 28
+
+	$$4  goto 72
+
+
+state 42
+	declarator : direct_declarator .  (80)
+	direct_declarator : direct_declarator . T_BRACKETS  (83)
+	direct_declarator : direct_declarator . '(' parameter_type_list ')'  (84)
+	direct_declarator : direct_declarator . '(' opt_identifier_list ')'  (85)
+
+	'('  shift 73
+	T_BRACKETS  shift 74
+	T_TYPEDEF_NAME  reduce 80
+	T_DEFINE_NAME  reduce 80
+	T_AUTO  reduce 80
+	T_EXTERN  reduce 80
+	T_REGISTER  reduce 80
+	T_STATIC  reduce 80
+	T_TYPEDEF  reduce 80
+	T_INLINE  reduce 80
+	T_EXTENSION  reduce 80
+	T_CHAR  reduce 80
+	T_DOUBLE  reduce 80
+	T_FLOAT  reduce 80
+	T_INT  reduce 80
+	T_VOID  reduce 80
+	T_LONG  reduce 80
+	T_SHORT  reduce 80
+	T_SIGNED  reduce 80
+	T_UNSIGNED  reduce 80
+	T_ENUM  reduce 80
+	T_STRUCT  reduce 80
+	T_UNION  reduce 80
+	T_Bool  reduce 80
+	T_Complex  reduce 80
+	T_Imaginary  reduce 80
+	T_TYPE_QUALIFIER  reduce 80
+	T_LBRACE  reduce 80
+	T_VA_DCL  reduce 80
+	';'  reduce 80
+	','  reduce 80
+	'=3D'  reduce 80
+	')'  reduce 80
+
+
+state 43
+	struct_or_union_specifier : struct_or_union . any_id braces  (63)
+	struct_or_union_specifier : struct_or_union . braces  (64)
+	struct_or_union_specifier : struct_or_union . any_id  (65)
+
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	T_LBRACE  shift 75
+	.  error
+
+	any_id  goto 76
+	braces  goto 77
+
+
+state 44
+	declarator : pointer . direct_declarator  (79)
+
+	'('  shift 2
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	direct_declarator  goto 78
+	any_id  goto 45
+	identifier_or_ref  goto 46
+
+
+state 45
+	identifier_or_ref : any_id .  (103)
+
+	.  reduce 103
+
+
+state 46
+	direct_declarator : identifier_or_ref .  (81)
+
+	.  reduce 81
+
+
+state 47
+	enum_specifier : enumeration . any_id braces  (73)
+	enum_specifier : enumeration . braces  (74)
+	enum_specifier : enumeration . any_id  (75)
+
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	T_LBRACE  shift 75
+	.  error
+
+	any_id  goto 79
+	braces  goto 80
+
+
+state 48
+	program : translation_unit .  (2)
+	translation_unit : translation_unit . external_declaration  (4)
+
+	error  shift 1
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 9
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_ASM  shift 31
+	';'  shift 32
+	$end  reduce 2
+
+	decl_specifiers  goto 34
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	declarator  goto 41
+	direct_declarator  goto 42
+	struct_or_union  goto 43
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+	external_declaration  goto 81
+	declaration  goto 50
+	function_definition  goto 51
+	linkage_specification  goto 52
+	any_typedef  goto 53
+
+
+state 49
+	translation_unit : external_declaration .  (3)
+
+	.  reduce 3
+
+
+state 50
+	external_declaration : declaration .  (5)
+
+	.  reduce 5
+
+
+state 51
+	external_declaration : function_definition .  (6)
+
+	.  reduce 6
+
+
+state 52
+	external_declaration : linkage_specification .  (8)
+
+	.  reduce 8
+
+
+state 53
+	declaration : any_typedef . decl_specifiers $$1 opt_declarator_list ';'  =
(18)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	.  error
+
+	decl_specifiers  goto 83
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+
+
+state 54
+	external_declaration : error T_MATCHRBRACE .  (10)
+
+	.  reduce 10
+
+
+state 55
+	external_declaration : error ';' .  (11)
+
+	.  reduce 11
+
+
+state 56
+	any_id : T_TYPEDEF_NAME .  (78)
+
+	.  reduce 78
+
+
+state 57
+	direct_declarator : '(' declarator . ')'  (82)
+
+	')'  shift 84
+	.  error
+
+
+state 58
+	type_qualifier_list : type_qualifier .  (90)
+
+	.  reduce 90
+
+
+state 59
+	pointer : '*' opt_type_qualifiers .  (86)
+	pointer : '*' opt_type_qualifiers . pointer  (87)
+
+	'*'  shift 3
+	'('  reduce 86
+	'&'  reduce 86
+	T_IDENTIFIER  reduce 86
+	T_TYPEDEF_NAME  reduce 86
+	T_BRACKETS  reduce 86
+	','  reduce 86
+	')'  reduce 86
+
+	pointer  goto 85
+
+
+state 60
+	opt_type_qualifiers : type_qualifier_list .  (89)
+	type_qualifier_list : type_qualifier_list . type_qualifier  (91)
+
+	T_DEFINE_NAME  shift 7
+	T_TYPE_QUALIFIER  shift 30
+	'('  reduce 89
+	'*'  reduce 89
+	'&'  reduce 89
+	T_IDENTIFIER  reduce 89
+	T_TYPEDEF_NAME  reduce 89
+	T_BRACKETS  reduce 89
+	','  reduce 89
+	')'  reduce 89
+
+	type_qualifier  goto 86
+
+
+state 61
+	identifier_or_ref : '&' any_id .  (104)
+
+	.  reduce 104
+
+
+state 62
+	linkage_specification : T_EXTERN T_STRING_LITERAL . braces  (13)
+	linkage_specification : T_EXTERN T_STRING_LITERAL . declaration  (14)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_LBRACE  shift 75
+	.  error
+
+	decl_specifiers  goto 87
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+	declaration  goto 88
+	braces  goto 89
+	any_typedef  goto 53
+
+
+state 63
+	any_typedef : T_EXTENSION T_TYPEDEF .  (19)
+
+	.  reduce 19
+
+
+state 64
+	external_declaration : T_ASM T_ASMARG . ';'  (9)
+
+	';'  shift 90
+	.  error
+
+
+state 65
+	storage_class : T_EXTERN .  (41)
+
+	.  reduce 41
+
+
+state 66
+	storage_class : T_EXTENSION .  (45)
+
+	.  reduce 45
+
+
+state 67
+	declaration : decl_specifiers ';' .  (15)
+
+	.  reduce 15
+
+
+state 68
+	decl_specifiers : decl_specifiers decl_specifier .  (36)
+
+	.  reduce 36
+
+
+state 69
+	declaration : decl_specifiers init_declarator_list . ';'  (16)
+	init_declarator_list : init_declarator_list . ',' init_declarator  (69)
+
+	';'  shift 91
+	','  shift 92
+	.  error
+
+
+state 70
+	init_declarator_list : init_declarator .  (68)
+
+	.  reduce 68
+
+
+state 71
+	function_definition : decl_specifiers declarator . $$2 opt_declaration_li=
st T_LBRACE $$3 T_MATCHRBRACE  (27)
+	init_declarator : declarator .  (70)
+	init_declarator : declarator . '=3D' $$5 T_INITIALIZER  (72)
+	$$2 : .  (25)
+
+	'=3D'  shift 93
+	T_TYPEDEF_NAME  reduce 25
+	T_DEFINE_NAME  reduce 25
+	T_AUTO  reduce 25
+	T_EXTERN  reduce 25
+	T_REGISTER  reduce 25
+	T_STATIC  reduce 25
+	T_TYPEDEF  reduce 25
+	T_INLINE  reduce 25
+	T_EXTENSION  reduce 25
+	T_CHAR  reduce 25
+	T_DOUBLE  reduce 25
+	T_FLOAT  reduce 25
+	T_INT  reduce 25
+	T_VOID  reduce 25
+	T_LONG  reduce 25
+	T_SHORT  reduce 25
+	T_SIGNED  reduce 25
+	T_UNSIGNED  reduce 25
+	T_ENUM  reduce 25
+	T_STRUCT  reduce 25
+	T_UNION  reduce 25
+	T_Bool  reduce 25
+	T_Complex  reduce 25
+	T_Imaginary  reduce 25
+	T_TYPE_QUALIFIER  reduce 25
+	T_LBRACE  reduce 25
+	T_VA_DCL  reduce 25
+	';'  reduce 70
+	','  reduce 70
+
+	$$2  goto 94
+
+
+state 72
+	function_definition : declarator $$4 . opt_declaration_list T_LBRACE T_MA=
TCHRBRACE  (29)
+	opt_declaration_list : .  (30)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_VA_DCL  shift 95
+	T_LBRACE  reduce 30
+
+	decl_specifiers  goto 87
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+	declaration  goto 96
+	any_typedef  goto 53
+	opt_declaration_list  goto 97
+	declaration_list  goto 98
+
+
+state 73
+	direct_declarator : direct_declarator '(' . parameter_type_list ')'  (84)
+	direct_declarator : direct_declarator '(' . opt_identifier_list ')'  (85)
+	opt_identifier_list : .  (99)
+
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	')'  reduce 99
+
+	decl_specifiers  goto 99
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	parameter_type_list  goto 100
+	parameter_list  goto 101
+	parameter_declaration  goto 102
+	opt_identifier_list  goto 103
+	identifier_list  goto 104
+	struct_or_union  goto 43
+	any_id  goto 105
+	enumeration  goto 47
+
+
+state 74
+	direct_declarator : direct_declarator T_BRACKETS .  (83)
+
+	.  reduce 83
+
+
+state 75
+	braces : T_LBRACE . T_MATCHRBRACE  (12)
+
+	T_MATCHRBRACE  shift 106
+	.  error
+
+
+state 76
+	struct_or_union_specifier : struct_or_union any_id . braces  (63)
+	struct_or_union_specifier : struct_or_union any_id .  (65)
+
+	T_LBRACE  shift 75
+	'('  reduce 65
+	'*'  reduce 65
+	'&'  reduce 65
+	T_IDENTIFIER  reduce 65
+	T_TYPEDEF_NAME  reduce 65
+	T_DEFINE_NAME  reduce 65
+	T_AUTO  reduce 65
+	T_EXTERN  reduce 65
+	T_REGISTER  reduce 65
+	T_STATIC  reduce 65
+	T_INLINE  reduce 65
+	T_EXTENSION  reduce 65
+	T_CHAR  reduce 65
+	T_DOUBLE  reduce 65
+	T_FLOAT  reduce 65
+	T_INT  reduce 65
+	T_VOID  reduce 65
+	T_LONG  reduce 65
+	T_SHORT  reduce 65
+	T_SIGNED  reduce 65
+	T_UNSIGNED  reduce 65
+	T_ENUM  reduce 65
+	T_STRUCT  reduce 65
+	T_UNION  reduce 65
+	T_Bool  reduce 65
+	T_Complex  reduce 65
+	T_Imaginary  reduce 65
+	T_TYPE_QUALIFIER  reduce 65
+	T_BRACKETS  reduce 65
+	';'  reduce 65
+	','  reduce 65
+	')'  reduce 65
+
+	braces  goto 107
+
+
+state 77
+	struct_or_union_specifier : struct_or_union braces .  (64)
+
+	.  reduce 64
+
+
+state 78
+	declarator : pointer direct_declarator .  (79)
+	direct_declarator : direct_declarator . T_BRACKETS  (83)
+	direct_declarator : direct_declarator . '(' parameter_type_list ')'  (84)
+	direct_declarator : direct_declarator . '(' opt_identifier_list ')'  (85)
+
+	'('  shift 73
+	T_BRACKETS  shift 74
+	T_TYPEDEF_NAME  reduce 79
+	T_DEFINE_NAME  reduce 79
+	T_AUTO  reduce 79
+	T_EXTERN  reduce 79
+	T_REGISTER  reduce 79
+	T_STATIC  reduce 79
+	T_TYPEDEF  reduce 79
+	T_INLINE  reduce 79
+	T_EXTENSION  reduce 79
+	T_CHAR  reduce 79
+	T_DOUBLE  reduce 79
+	T_FLOAT  reduce 79
+	T_INT  reduce 79
+	T_VOID  reduce 79
+	T_LONG  reduce 79
+	T_SHORT  reduce 79
+	T_SIGNED  reduce 79
+	T_UNSIGNED  reduce 79
+	T_ENUM  reduce 79
+	T_STRUCT  reduce 79
+	T_UNION  reduce 79
+	T_Bool  reduce 79
+	T_Complex  reduce 79
+	T_Imaginary  reduce 79
+	T_TYPE_QUALIFIER  reduce 79
+	T_LBRACE  reduce 79
+	T_VA_DCL  reduce 79
+	';'  reduce 79
+	','  reduce 79
+	'=3D'  reduce 79
+	')'  reduce 79
+
+
+state 79
+	enum_specifier : enumeration any_id . braces  (73)
+	enum_specifier : enumeration any_id .  (75)
+
+	T_LBRACE  shift 75
+	'('  reduce 75
+	'*'  reduce 75
+	'&'  reduce 75
+	T_IDENTIFIER  reduce 75
+	T_TYPEDEF_NAME  reduce 75
+	T_DEFINE_NAME  reduce 75
+	T_AUTO  reduce 75
+	T_EXTERN  reduce 75
+	T_REGISTER  reduce 75
+	T_STATIC  reduce 75
+	T_INLINE  reduce 75
+	T_EXTENSION  reduce 75
+	T_CHAR  reduce 75
+	T_DOUBLE  reduce 75
+	T_FLOAT  reduce 75
+	T_INT  reduce 75
+	T_VOID  reduce 75
+	T_LONG  reduce 75
+	T_SHORT  reduce 75
+	T_SIGNED  reduce 75
+	T_UNSIGNED  reduce 75
+	T_ENUM  reduce 75
+	T_STRUCT  reduce 75
+	T_UNION  reduce 75
+	T_Bool  reduce 75
+	T_Complex  reduce 75
+	T_Imaginary  reduce 75
+	T_TYPE_QUALIFIER  reduce 75
+	T_BRACKETS  reduce 75
+	';'  reduce 75
+	','  reduce 75
+	')'  reduce 75
+
+	braces  goto 108
+
+
+state 80
+	enum_specifier : enumeration braces .  (74)
+
+	.  reduce 74
+
+
+state 81
+	translation_unit : translation_unit external_declaration .  (4)
+
+	.  reduce 4
+
+
+state 82
+	type_specifier : T_TYPEDEF_NAME .  (58)
+
+	.  reduce 58
+
+
+83: shift/reduce conflict (shift 82, reduce 17) on T_TYPEDEF_NAME
+state 83
+	declaration : any_typedef decl_specifiers . $$1 opt_declarator_list ';'  =
(18)
+	decl_specifiers : decl_specifiers . decl_specifier  (36)
+	$$1 : .  (17)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	'('  reduce 17
+	'*'  reduce 17
+	'&'  reduce 17
+	T_IDENTIFIER  reduce 17
+	';'  reduce 17
+
+	decl_specifier  goto 68
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+	$$1  goto 109
+
+
+state 84
+	direct_declarator : '(' declarator ')' .  (82)
+
+	.  reduce 82
+
+
+state 85
+	pointer : '*' opt_type_qualifiers pointer .  (87)
+
+	.  reduce 87
+
+
+state 86
+	type_qualifier_list : type_qualifier_list type_qualifier .  (91)
+
+	.  reduce 91
+
+
+state 87
+	declaration : decl_specifiers . ';'  (15)
+	declaration : decl_specifiers . init_declarator_list ';'  (16)
+	decl_specifiers : decl_specifiers . decl_specifier  (36)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	';'  shift 67
+	.  error
+
+	decl_specifier  goto 68
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	init_declarator_list  goto 69
+	init_declarator  goto 70
+	declarator  goto 110
+	direct_declarator  goto 42
+	struct_or_union  goto 43
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+
+
+state 88
+	linkage_specification : T_EXTERN T_STRING_LITERAL declaration .  (14)
+
+	.  reduce 14
+
+
+state 89
+	linkage_specification : T_EXTERN T_STRING_LITERAL braces .  (13)
+
+	.  reduce 13
+
+
+state 90
+	external_declaration : T_ASM T_ASMARG ';' .  (9)
+
+	.  reduce 9
+
+
+state 91
+	declaration : decl_specifiers init_declarator_list ';' .  (16)
+
+	.  reduce 16
+
+
+state 92
+	init_declarator_list : init_declarator_list ',' . init_declarator  (69)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	init_declarator  goto 111
+	declarator  goto 110
+	direct_declarator  goto 42
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+
+
+state 93
+	init_declarator : declarator '=3D' . $$5 T_INITIALIZER  (72)
+	$$5 : .  (71)
+
+	.  reduce 71
+
+	$$5  goto 112
+
+
+state 94
+	function_definition : decl_specifiers declarator $$2 . opt_declaration_li=
st T_LBRACE $$3 T_MATCHRBRACE  (27)
+	opt_declaration_list : .  (30)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_VA_DCL  shift 95
+	T_LBRACE  reduce 30
+
+	decl_specifiers  goto 87
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+	declaration  goto 96
+	any_typedef  goto 53
+	opt_declaration_list  goto 113
+	declaration_list  goto 98
+
+
+state 95
+	opt_declaration_list : T_VA_DCL .  (31)
+
+	.  reduce 31
+
+
+state 96
+	declaration_list : declaration .  (33)
+
+	.  reduce 33
+
+
+state 97
+	function_definition : declarator $$4 opt_declaration_list . T_LBRACE T_MA=
TCHRBRACE  (29)
+
+	T_LBRACE  shift 114
+	.  error
+
+
+state 98
+	opt_declaration_list : declaration_list .  (32)
+	declaration_list : declaration_list . declaration  (34)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_TYPEDEF  shift 12
+	T_INLINE  shift 13
+	T_EXTENSION  shift 14
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_LBRACE  reduce 32
+
+	decl_specifiers  goto 87
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	struct_or_union  goto 43
+	enumeration  goto 47
+	declaration  goto 115
+	any_typedef  goto 53
+
+
+state 99
+	decl_specifiers : decl_specifiers . decl_specifier  (36)
+	parameter_declaration : decl_specifiers . declarator  (96)
+	parameter_declaration : decl_specifiers . abs_declarator  (97)
+	parameter_declaration : decl_specifiers .  (98)
+
+	'('  shift 116
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_BRACKETS  shift 117
+	','  reduce 98
+	')'  reduce 98
+
+	decl_specifier  goto 68
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	declarator  goto 118
+	direct_declarator  goto 42
+	abs_declarator  goto 119
+	direct_abs_declarator  goto 120
+	struct_or_union  goto 43
+	pointer  goto 121
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+
+
+state 100
+	direct_declarator : direct_declarator '(' parameter_type_list . ')'  (84)
+
+	')'  shift 122
+	.  error
+
+
+state 101
+	parameter_type_list : parameter_list .  (92)
+	parameter_type_list : parameter_list . ',' T_ELLIPSIS  (93)
+	parameter_list : parameter_list . ',' parameter_declaration  (95)
+
+	','  shift 123
+	')'  reduce 92
+
+
+state 102
+	parameter_list : parameter_declaration .  (94)
+
+	.  reduce 94
+
+
+state 103
+	direct_declarator : direct_declarator '(' opt_identifier_list . ')'  (85)
+
+	')'  shift 124
+	.  error
+
+
+state 104
+	opt_identifier_list : identifier_list .  (100)
+	identifier_list : identifier_list . ',' any_id  (102)
+
+	','  shift 125
+	')'  reduce 100
+
+
+state 105
+	identifier_list : any_id .  (101)
+
+	.  reduce 101
+
+
+state 106
+	braces : T_LBRACE T_MATCHRBRACE .  (12)
+
+	.  reduce 12
+
+
+state 107
+	struct_or_union_specifier : struct_or_union any_id braces .  (63)
+
+	.  reduce 63
+
+
+state 108
+	enum_specifier : enumeration any_id braces .  (73)
+
+	.  reduce 73
+
+
+state 109
+	declaration : any_typedef decl_specifiers $$1 . opt_declarator_list ';'  =
(18)
+	opt_declarator_list : .  (21)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	';'  reduce 21
+
+	declarator  goto 126
+	direct_declarator  goto 42
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	opt_declarator_list  goto 127
+	declarator_list  goto 128
+
+
+state 110
+	init_declarator : declarator .  (70)
+	init_declarator : declarator . '=3D' $$5 T_INITIALIZER  (72)
+
+	'=3D'  shift 93
+	';'  reduce 70
+	','  reduce 70
+
+
+state 111
+	init_declarator_list : init_declarator_list ',' init_declarator .  (69)
+
+	.  reduce 69
+
+
+state 112
+	init_declarator : declarator '=3D' $$5 . T_INITIALIZER  (72)
+
+	T_INITIALIZER  shift 129
+	.  error
+
+
+state 113
+	function_definition : decl_specifiers declarator $$2 opt_declaration_list=
 . T_LBRACE $$3 T_MATCHRBRACE  (27)
+
+	T_LBRACE  shift 130
+	.  error
+
+
+state 114
+	function_definition : declarator $$4 opt_declaration_list T_LBRACE . T_MA=
TCHRBRACE  (29)
+
+	T_MATCHRBRACE  shift 131
+	.  error
+
+
+state 115
+	declaration_list : declaration_list declaration .  (34)
+
+	.  reduce 34
+
+
+state 116
+	direct_declarator : '(' . declarator ')'  (82)
+	direct_abs_declarator : '(' . abs_declarator ')'  (108)
+	direct_abs_declarator : '(' . parameter_type_list ')'  (113)
+	direct_abs_declarator : '(' . ')'  (114)
+
+	'('  shift 116
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 6
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_BRACKETS  shift 117
+	')'  shift 132
+	.  error
+
+	decl_specifiers  goto 99
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	declarator  goto 57
+	direct_declarator  goto 42
+	abs_declarator  goto 133
+	direct_abs_declarator  goto 120
+	parameter_type_list  goto 134
+	parameter_list  goto 101
+	parameter_declaration  goto 102
+	struct_or_union  goto 43
+	pointer  goto 121
+	any_id  goto 45
+	identifier_or_ref  goto 46
+	enumeration  goto 47
+
+
+state 117
+	direct_abs_declarator : T_BRACKETS .  (110)
+
+	.  reduce 110
+
+
+state 118
+	parameter_declaration : decl_specifiers declarator .  (96)
+
+	.  reduce 96
+
+
+state 119
+	parameter_declaration : decl_specifiers abs_declarator .  (97)
+
+	.  reduce 97
+
+
+state 120
+	abs_declarator : direct_abs_declarator .  (107)
+	direct_abs_declarator : direct_abs_declarator . T_BRACKETS  (109)
+	direct_abs_declarator : direct_abs_declarator . '(' parameter_type_list '=
)'  (111)
+	direct_abs_declarator : direct_abs_declarator . '(' ')'  (112)
+
+	'('  shift 135
+	T_BRACKETS  shift 136
+	','  reduce 107
+	')'  reduce 107
+
+
+state 121
+	declarator : pointer . direct_declarator  (79)
+	abs_declarator : pointer .  (105)
+	abs_declarator : pointer . direct_abs_declarator  (106)
+
+	'('  shift 116
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	T_BRACKETS  shift 117
+	','  reduce 105
+	')'  reduce 105
+
+	direct_declarator  goto 78
+	direct_abs_declarator  goto 137
+	any_id  goto 45
+	identifier_or_ref  goto 46
+
+
+state 122
+	direct_declarator : direct_declarator '(' parameter_type_list ')' .  (84)
+
+	.  reduce 84
+
+
+state 123
+	parameter_type_list : parameter_list ',' . T_ELLIPSIS  (93)
+	parameter_list : parameter_list ',' . parameter_declaration  (95)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	T_ELLIPSIS  shift 138
+	.  error
+
+	decl_specifiers  goto 99
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	parameter_declaration  goto 139
+	struct_or_union  goto 43
+	enumeration  goto 47
+
+
+state 124
+	direct_declarator : direct_declarator '(' opt_identifier_list ')' .  (85)
+
+	.  reduce 85
+
+
+state 125
+	identifier_list : identifier_list ',' . any_id  (102)
+
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	any_id  goto 140
+
+
+state 126
+	declarator_list : declarator .  (23)
+
+	.  reduce 23
+
+
+state 127
+	declaration : any_typedef decl_specifiers $$1 opt_declarator_list . ';'  =
(18)
+
+	';'  shift 141
+	.  error
+
+
+state 128
+	opt_declarator_list : declarator_list .  (22)
+	declarator_list : declarator_list . ',' declarator  (24)
+
+	','  shift 142
+	';'  reduce 22
+
+
+state 129
+	init_declarator : declarator '=3D' $$5 T_INITIALIZER .  (72)
+
+	.  reduce 72
+
+
+state 130
+	function_definition : decl_specifiers declarator $$2 opt_declaration_list=
 T_LBRACE . $$3 T_MATCHRBRACE  (27)
+	$$3 : .  (26)
+
+	.  reduce 26
+
+	$$3  goto 143
+
+
+state 131
+	function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATC=
HRBRACE .  (29)
+
+	.  reduce 29
+
+
+state 132
+	direct_abs_declarator : '(' ')' .  (114)
+
+	.  reduce 114
+
+
+state 133
+	direct_abs_declarator : '(' abs_declarator . ')'  (108)
+
+	')'  shift 144
+	.  error
+
+
+state 134
+	direct_abs_declarator : '(' parameter_type_list . ')'  (113)
+
+	')'  shift 145
+	.  error
+
+
+state 135
+	direct_abs_declarator : direct_abs_declarator '(' . parameter_type_list '=
)'  (111)
+	direct_abs_declarator : direct_abs_declarator '(' . ')'  (112)
+
+	T_TYPEDEF_NAME  shift 82
+	T_DEFINE_NAME  shift 7
+	T_AUTO  shift 8
+	T_EXTERN  shift 65
+	T_REGISTER  shift 10
+	T_STATIC  shift 11
+	T_INLINE  shift 13
+	T_EXTENSION  shift 66
+	T_CHAR  shift 15
+	T_DOUBLE  shift 16
+	T_FLOAT  shift 17
+	T_INT  shift 18
+	T_VOID  shift 19
+	T_LONG  shift 20
+	T_SHORT  shift 21
+	T_SIGNED  shift 22
+	T_UNSIGNED  shift 23
+	T_ENUM  shift 24
+	T_STRUCT  shift 25
+	T_UNION  shift 26
+	T_Bool  shift 27
+	T_Complex  shift 28
+	T_Imaginary  shift 29
+	T_TYPE_QUALIFIER  shift 30
+	')'  shift 146
+	.  error
+
+	decl_specifiers  goto 99
+	decl_specifier  goto 35
+	storage_class  goto 36
+	type_specifier  goto 37
+	type_qualifier  goto 38
+	struct_or_union_specifier  goto 39
+	enum_specifier  goto 40
+	parameter_type_list  goto 147
+	parameter_list  goto 101
+	parameter_declaration  goto 102
+	struct_or_union  goto 43
+	enumeration  goto 47
+
+
+state 136
+	direct_abs_declarator : direct_abs_declarator T_BRACKETS .  (109)
+
+	.  reduce 109
+
+
+state 137
+	abs_declarator : pointer direct_abs_declarator .  (106)
+	direct_abs_declarator : direct_abs_declarator . T_BRACKETS  (109)
+	direct_abs_declarator : direct_abs_declarator . '(' parameter_type_list '=
)'  (111)
+	direct_abs_declarator : direct_abs_declarator . '(' ')'  (112)
+
+	'('  shift 135
+	T_BRACKETS  shift 136
+	','  reduce 106
+	')'  reduce 106
+
+
+state 138
+	parameter_type_list : parameter_list ',' T_ELLIPSIS .  (93)
+
+	.  reduce 93
+
+
+state 139
+	parameter_list : parameter_list ',' parameter_declaration .  (95)
+
+	.  reduce 95
+
+
+state 140
+	identifier_list : identifier_list ',' any_id .  (102)
+
+	.  reduce 102
+
+
+state 141
+	declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';' .  =
(18)
+
+	.  reduce 18
+
+
+state 142
+	declarator_list : declarator_list ',' . declarator  (24)
+
+	'('  shift 2
+	'*'  shift 3
+	'&'  shift 4
+	T_IDENTIFIER  shift 5
+	T_TYPEDEF_NAME  shift 56
+	.  error
+
+	declarator  goto 148
+	direct_declarator  goto 42
+	pointer  goto 44
+	any_id  goto 45
+	identifier_or_ref  goto 46
+
+
+state 143
+	function_definition : decl_specifiers declarator $$2 opt_declaration_list=
 T_LBRACE $$3 . T_MATCHRBRACE  (27)
+
+	T_MATCHRBRACE  shift 149
+	.  error
+
+
+state 144
+	direct_abs_declarator : '(' abs_declarator ')' .  (108)
+
+	.  reduce 108
+
+
+state 145
+	direct_abs_declarator : '(' parameter_type_list ')' .  (113)
+
+	.  reduce 113
+
+
+state 146
+	direct_abs_declarator : direct_abs_declarator '(' ')' .  (112)
+
+	.  reduce 112
+
+
+state 147
+	direct_abs_declarator : direct_abs_declarator '(' parameter_type_list . '=
)'  (111)
+
+	')'  shift 150
+	.  error
+
+
+state 148
+	declarator_list : declarator_list ',' declarator .  (24)
+
+	.  reduce 24
+
+
+state 149
+	function_definition : decl_specifiers declarator $$2 opt_declaration_list=
 T_LBRACE $$3 T_MATCHRBRACE .  (27)
+
+	.  reduce 27
+
+
+state 150
+	direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'=
 .  (111)
+
+	.  reduce 111
+
+
+State 6 contains 29 reduce/reduce conflicts.
+State 83 contains 1 shift/reduce conflict.
+
+
+44 terminals, 43 nonterminals
+115 grammar rules, 151 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/grammar.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/grammar.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,2025 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    grammar_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      grammar_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    grammar_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     grammar_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      grammar_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     grammar_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    grammar_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    grammar_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  grammar_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      grammar_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      grammar_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   grammar_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    grammar_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   grammar_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   grammar_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   grammar_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    grammar_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    grammar_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     grammar_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     grammar_rule
+#endif /* yyrule */
+#define YYPREFIX "grammar_"
+
+#define YYPURE 0
+
+#line 9 "grammar.y"
+#ifdef YYBISON
+#include <stdlib.h>
+#define YYSTYPE_IS_DECLARED
+#define yyerror yaccError
+#endif
+
+#if defined(YYBISON) || !defined(YYBYACC)
+static void yyerror(const char *s);
+#endif
+#line 81 "grammar.y"
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#define OPT_LINTLIBRARY 1
+
+#ifndef TRUE
+#define	TRUE	(1)
+#endif
+
+#ifndef FALSE
+#define	FALSE	(0)
+#endif
+
+/* #include "cproto.h" */
+#define MAX_TEXT_SIZE 1024
+
+/* Prototype styles */
+#if OPT_LINTLIBRARY
+#define PROTO_ANSI_LLIB		-2	/* form ANSI lint-library source */
+#define PROTO_LINTLIBRARY	-1	/* form lint-library source */
+#endif
+#define PROTO_NONE		0	/* do not output any prototypes */
+#define PROTO_TRADITIONAL	1	/* comment out parameters */
+#define PROTO_ABSTRACT		2	/* comment out parameter names */
+#define PROTO_ANSI		3	/* ANSI C prototype */
+
+typedef int PrototypeStyle;
+
+typedef char boolean;
+
+extern boolean types_out;
+extern PrototypeStyle proto_style;
+
+#define ansiLintLibrary() (proto_style =3D=3D PROTO_ANSI_LLIB)
+#define knrLintLibrary()  (proto_style =3D=3D PROTO_LINTLIBRARY)
+#define lintLibrary()     (knrLintLibrary() || ansiLintLibrary())
+
+#if OPT_LINTLIBRARY
+#define FUNC_UNKNOWN		-1	/* unspecified */
+#else
+#define FUNC_UNKNOWN		0	/* unspecified (same as FUNC_NONE) */
+#endif
+#define FUNC_NONE		0	/* not a function definition */
+#define FUNC_TRADITIONAL	1	/* traditional style */
+#define FUNC_ANSI		2	/* ANSI style */
+#define FUNC_BOTH		3	/* both styles */
+
+typedef int FuncDefStyle;
+
+/* Source file text */
+typedef struct text {
+    char text[MAX_TEXT_SIZE];	/* source text */
+    long begin; 		/* offset in temporary file */
+} Text;
+
+/* Declaration specifier flags */
+#define DS_NONE 	0	/* default */
+#define DS_EXTERN	1	/* contains "extern" specifier */
+#define DS_STATIC	2	/* contains "static" specifier */
+#define DS_CHAR 	4	/* contains "char" type specifier */
+#define DS_SHORT	8	/* contains "short" type specifier */
+#define DS_FLOAT	16	/* contains "float" type specifier */
+#define DS_INLINE	32	/* contains "inline" specifier */
+#define DS_JUNK 	64	/* we're not interested in this declaration */
+
+/* This structure stores information about a declaration specifier. */
+typedef struct decl_spec {
+    unsigned short flags;	/* flags defined above */
+    char *text; 		/* source text */
+    long begin; 		/* offset in temporary file */
+} DeclSpec;
+
+/* This is a list of function parameters. */
+typedef struct _ParameterList {
+    struct parameter *first;	/* pointer to first parameter in list */
+    struct parameter *last;	/* pointer to last parameter in list */ =20
+    long begin_comment; 	/* begin offset of comment */
+    long end_comment;		/* end offset of comment */
+    char *comment;		/* comment at start of parameter list */
+} ParameterList;
+
+/* This structure stores information about a declarator. */
+typedef struct _Declarator {
+    char *name; 			/* name of variable or function */
+    char *text; 			/* source text */
+    long begin; 			/* offset in temporary file */
+    long begin_comment; 		/* begin offset of comment */
+    long end_comment;			/* end offset of comment */
+    FuncDefStyle func_def;		/* style of function definition */
+    ParameterList params;		/* function parameters */
+    boolean pointer;			/* TRUE if it declares a pointer */
+    struct _Declarator *head;		/* head function declarator */
+    struct _Declarator *func_stack;	/* stack of function declarators */
+    struct _Declarator *next;		/* next declarator in list */
+} Declarator;
+
+/* This structure stores information about a function parameter. */
+typedef struct parameter {
+    struct parameter *next;	/* next parameter in list */
+    DeclSpec decl_spec;
+    Declarator *declarator;
+    char *comment;		/* comment following the parameter */
+} Parameter;
+
+/* This is a list of declarators. */
+typedef struct declarator_list {
+    Declarator *first;		/* pointer to first declarator in list */
+    Declarator *last;		/* pointer to last declarator in list */ =20
+} DeclaratorList;
+
+/* #include "symbol.h" */
+typedef struct symbol {
+    struct symbol *next;	/* next symbol in list */
+    char *name; 		/* name of symbol */
+    char *value;		/* value of symbol (for defines) */
+    short flags;		/* symbol attributes */
+} Symbol;
+
+/* parser stack entry type */
+typedef union {
+    Text text;
+    DeclSpec decl_spec;
+    Parameter *parameter;
+    ParameterList param_list;
+    Declarator *declarator;
+    DeclaratorList decl_list;
+} YYSTYPE;
+
+/* The hash table length should be a prime number. */
+#define SYM_MAX_HASH 251
+
+typedef struct symbol_table {
+    Symbol *bucket[SYM_MAX_HASH];	/* hash buckets */
+} SymbolTable;
+
+extern SymbolTable *new_symbol_table	/* Create symbol table */
+	(void);
+extern void free_symbol_table		/* Destroy symbol table */
+	(SymbolTable *s);
+extern Symbol *find_symbol		/* Lookup symbol name */
+	(SymbolTable *s, const char *n);
+extern Symbol *new_symbol		/* Define new symbol */
+	(SymbolTable *s, const char *n, const char *v, int f);
+
+/* #include "semantic.h" */
+extern void new_decl_spec (DeclSpec *, const char *, long, int);
+extern void free_decl_spec (DeclSpec *);
+extern void join_decl_specs (DeclSpec *, DeclSpec *, DeclSpec *);
+extern void check_untagged (DeclSpec *);
+extern Declarator *new_declarator (const char *, const char *, long);
+extern void free_declarator (Declarator *);
+extern void new_decl_list (DeclaratorList *, Declarator *);
+extern void free_decl_list (DeclaratorList *);
+extern void add_decl_list (DeclaratorList *, DeclaratorList *, Declarator =
*);
+extern Parameter *new_parameter (DeclSpec *, Declarator *);
+extern void free_parameter (Parameter *);
+extern void new_param_list (ParameterList *, Parameter *);
+extern void free_param_list (ParameterList *);
+extern void add_param_list (ParameterList *, ParameterList *, Parameter *);
+extern void new_ident_list (ParameterList *);
+extern void add_ident_list (ParameterList *, ParameterList *, const char *=
);
+extern void set_param_types (ParameterList *, DeclSpec *, DeclaratorList *=
);
+extern void gen_declarations (DeclSpec *, DeclaratorList *);
+extern void gen_prototype (DeclSpec *, Declarator *);
+extern void gen_func_declarator (Declarator *);
+extern void gen_func_definition (DeclSpec *, Declarator *);
+
+extern void init_parser     (void);
+extern void process_file    (FILE *infile, char *name);
+extern char *cur_text       (void);
+extern char *cur_file_name  (void);
+extern char *implied_typedef (void);
+extern void include_file    (char *name, int convert);
+extern char *supply_parm    (int count);
+extern char *xstrdup        (const char *);
+extern int already_declared (char *name);
+extern int is_actual_func   (Declarator *d);
+extern int lint_ellipsis    (Parameter *p);
+extern int want_typedef     (void);
+extern void begin_tracking  (void);
+extern void begin_typedef   (void);
+extern void copy_typedef    (char *s);
+extern void ellipsis_varargs (Declarator *d);
+extern void end_typedef     (void);
+extern void flush_varargs   (void);
+extern void fmt_library     (int code);
+extern void imply_typedef   (const char *s);
+extern void indent          (FILE *outf);
+extern void put_blankline   (FILE *outf);
+extern void put_body        (FILE *outf, DeclSpec *decl_spec, Declarator *=
declarator);
+extern void put_char        (FILE *outf, int c);
+extern void put_error       (void);
+extern void put_newline     (FILE *outf);
+extern void put_padded      (FILE *outf, const char *s);
+extern void put_string      (FILE *outf, const char *s);
+extern void track_in        (void);
+
+extern boolean file_comments;
+extern FuncDefStyle func_style;
+extern char base_file[];
+
+extern	int	yylex (void);
+
+/* declaration specifier attributes for the typedef statement currently be=
ing
+ * scanned
+ */
+static int cur_decl_spec_flags;
+
+/* pointer to parameter list for the current function definition */
+static ParameterList *func_params;
+
+/* A parser semantic action sets this pointer to the current declarator in
+ * a function parameter declaration in order to catch any comments followi=
ng
+ * the parameter declaration on the same line.  If the lexer scans a comme=
nt
+ * and <cur_declarator> is not NULL, then the comment is attached to the
+ * declarator.  To ignore subsequent comments, the lexer sets this to NULL
+ * after scanning a comment or end of line.
+ */
+static Declarator *cur_declarator;
+
+/* temporary string buffer */
+static char buf[MAX_TEXT_SIZE];
+
+/* table of typedef names */
+static SymbolTable *typedef_names;
+
+/* table of define names */
+static SymbolTable *define_names;
+
+/* table of type qualifiers */
+static SymbolTable *type_qualifiers;
+
+/* information about the current input file */
+typedef struct {
+    char *base_name;		/* base input file name */
+    char *file_name;		/* current file name */
+    FILE *file; 		/* input file */
+    unsigned line_num;		/* current line number in input file */
+    FILE *tmp_file;		/* temporary file */
+    long begin_comment; 	/* tmp file offset after last written ) or ; */
+    long end_comment;		/* tmp file offset after last comment */
+    boolean convert;		/* if TRUE, convert function definitions */
+    boolean changed;		/* TRUE if conversion done in this file */
+} IncludeStack;
+
+static IncludeStack *cur_file;	/* current input file */
+
+/* #include "yyerror.c" */
+
+static int haveAnsiParam (void);
+
+
+/* Flags to enable us to find if a procedure returns a value.
+ */
+static int return_val;	/* nonzero on BRACES iff return-expression found */
+
+static const char *
+dft_decl_spec (void)
+{
+    return (lintLibrary() && !return_val) ? "void" : "int";
+}
+
+static int
+haveAnsiParam (void)
+{
+    Parameter *p;
+    if (func_params !=3D 0) {
+	for (p =3D func_params->first; p !=3D 0; p =3D p->next) {
+	    if (p->declarator->func_def =3D=3D FUNC_ANSI) {
+		return TRUE;
+	    }
+	}
+    }
+    return FALSE;
+}
+#line 386 "grammar.tab.c"
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define T_IDENTIFIER 257
+#define T_TYPEDEF_NAME 258
+#define T_DEFINE_NAME 259
+#define T_AUTO 260
+#define T_EXTERN 261
+#define T_REGISTER 262
+#define T_STATIC 263
+#define T_TYPEDEF 264
+#define T_INLINE 265
+#define T_EXTENSION 266
+#define T_CHAR 267
+#define T_DOUBLE 268
+#define T_FLOAT 269
+#define T_INT 270
+#define T_VOID 271
+#define T_LONG 272
+#define T_SHORT 273
+#define T_SIGNED 274
+#define T_UNSIGNED 275
+#define T_ENUM 276
+#define T_STRUCT 277
+#define T_UNION 278
+#define T_Bool 279
+#define T_Complex 280
+#define T_Imaginary 281
+#define T_TYPE_QUALIFIER 282
+#define T_BRACKETS 283
+#define T_LBRACE 284
+#define T_MATCHRBRACE 285
+#define T_ELLIPSIS 286
+#define T_INITIALIZER 287
+#define T_STRING_LITERAL 288
+#define T_ASM 289
+#define T_ASMARG 290
+#define T_VA_DCL 291
+#define YYERRCODE 256
+static const short grammar_lhs[] =3D {                     -1,
+    0,    0,   26,   26,   27,   27,   27,   27,   27,   27,
+   27,   31,   30,   30,   28,   28,   34,   28,   32,   32,
+   33,   33,   35,   35,   37,   38,   29,   39,   29,   36,
+   36,   36,   40,   40,    1,    1,    2,    2,    2,    3,
+    3,    3,    3,    3,    3,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    5,    5,    6,    6,    6,   19,   19,    8,    8,    9,
+   41,    9,    7,    7,    7,   25,   23,   23,   10,   10,
+   11,   11,   11,   11,   11,   20,   20,   21,   21,   22,
+   22,   14,   14,   15,   15,   16,   16,   16,   17,   17,
+   18,   18,   24,   24,   12,   12,   12,   13,   13,   13,
+   13,   13,   13,   13,
+};
+static const short grammar_len[] =3D {                      2,
+    0,    1,    1,    2,    1,    1,    1,    1,    3,    2,
+    2,    2,    3,    3,    2,    3,    0,    5,    2,    1,
+    0,    1,    1,    3,    0,    0,    7,    0,    5,    0,
+    1,    1,    1,    2,    1,    2,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    3,    2,    2,    1,    1,    1,    3,    1,
+    0,    4,    3,    2,    2,    1,    1,    1,    2,    1,
+    1,    3,    2,    4,    4,    2,    3,    0,    1,    1,
+    2,    1,    3,    1,    3,    2,    2,    1,    0,    1,
+    1,    3,    1,    2,    1,    2,    1,    3,    2,    1,
+    4,    3,    3,    2,
+};
+static const short grammar_defred[] =3D {                   0,
+    0,    0,    0,    0,   77,    0,   62,   40,    0,   42,
+   43,   20,   44,    0,   46,   47,   48,   49,   54,   50,
+   51,   52,   53,   76,   66,   67,   55,   56,   57,   61,
+    0,    7,    0,    0,   35,   37,   38,   39,   59,   60,
+   28,    0,    0,    0,  103,   81,    0,    0,    3,    5,
+    6,    8,    0,   10,   11,   78,    0,   90,    0,    0,
+  104,    0,   19,    0,   41,   45,   15,   36,    0,   68,
+    0,    0,    0,   83,    0,    0,   64,    0,    0,   74,
+    4,   58,    0,   82,   87,   91,    0,   14,   13,    9,
+   16,    0,   71,    0,   31,   33,    0,    0,    0,    0,
+    0,   94,    0,    0,  101,   12,   63,   73,    0,    0,
+   69,    0,    0,    0,   34,    0,  110,   96,   97,    0,
+    0,   84,    0,   85,    0,   23,    0,    0,   72,   26,
+   29,  114,    0,    0,    0,  109,    0,   93,   95,  102,
+   18,    0,    0,  108,  113,  112,    0,   24,   27,  111,
+};
+static const short grammar_dgoto[] =3D {                   33,
+   87,   35,   36,   37,   38,   39,   40,   69,   70,   41,
+   42,  119,  120,  100,  101,  102,  103,  104,   43,   44,
+   59,   60,   45,   46,   47,   48,   49,   50,   51,   52,
+   77,   53,  127,  109,  128,   97,   94,  143,   72,   98,
+  112,
+};
+static const short grammar_sindex[] =3D {                  -2,
+   -3,   27, -239, -177,    0,    0,    0,    0, -274,    0,
+    0,    0,    0, -246,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+ -266,    0,    0,  455,    0,    0,    0,    0,    0,    0,
+    0,  -35, -245,  128,    0,    0, -245,   -2,    0,    0,
+    0,    0,  642,    0,    0,    0,  -15,    0,  -12, -239,
+    0,  590,    0,  -27,    0,    0,    0,    0,  -10,    0,
+  -11,  534,  -72,    0, -237, -232,    0,  -35, -232,    0,
+    0,    0,  642,    0,    0,    0,  455,    0,    0,    0,
+    0,   27,    0,  534,    0,    0, -222,  617,  209,   34,
+   39,    0,   44,   42,    0,    0,    0,    0,   27,  -11,
+    0, -200, -196, -195,    0,  174,    0,    0,    0,  -33,
+  243,    0,  561,    0, -177,    0,   33,   49,    0,    0,
+    0,    0,   53,   55,  417,    0,  -33,    0,    0,    0,
+    0,   27, -188,    0,    0,    0,   57,    0,    0,    0,
+};
+static const short grammar_rindex[] =3D {                  99,
+    0,    0,  275,    0,    0,  -38,    0,    0,  481,    0,
+    0,    0,    0,  509,    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,   30,    0,    0,    0,    0,    0,  101,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  343,  309,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   98, -182,   62,    0,    0,  133,    0,   64,  379,    0,
+    0,    0,   -5,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0, -182,    0,    0,    0, -180,  -19,    0,
+   65,    0,    0,   68,    0,    0,    0,    0,   51,    9,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  -13,
+   19,    0,    0,    0,    0,    0,    0,   52,    0,    0,
+    0,    0,    0,    0,    0,    0,   35,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+};
+static const short grammar_gindex[] =3D {                   0,
+   11,  -17,    0,    0,   13,    0,    0,    0,   20,    8,
+  -43,   -1,   -8,  -89,    0,   -9,    0,    0,    0,  -44,
+    0,    0,    4,    0,    0,    0,   70,  -53,    0,    0,
+  -18,    0,    0,    0,    0,   22,    0,    0,    0,    0,
+    0,
+};
+#define YYTABLESIZE 924
+static const short grammar_table[] =3D {                   58,
+   78,   58,   58,   58,   73,   58,  135,   61,   88,   57,
+   34,    5,   56,   62,   85,   58,   68,   63,   96,    7,
+   58,   98,   78,   64,   98,   84,  134,  107,   80,    3,
+  107,   90,   17,   92,   17,    4,   17,    2,   75,    3,
+   96,   71,   30,   89,  115,  147,   76,  106,   91,   93,
+   79,   75,   70,   17,  121,   55,   32,  107,   34,  105,
+  108,  114,  105,   83,    4,   68,    2,   70,    3,   68,
+   80,  121,   86,   80,  122,  106,  105,   78,  106,    5,
+   56,   68,  123,   99,  124,  125,  129,  130,   80,  131,
+   80,  141,  142,  144,  110,  145,  149,  150,    1,  110,
+    2,   30,   99,   32,   79,   92,  118,   79,  100,   21,
+   22,  111,  137,  139,  133,  113,  126,   81,    0,    0,
+    0,    0,   79,   57,   79,    0,   99,    0,  140,    0,
+    0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
+    0,   70,    0,    0,    0,   99,    0,    0,    0,  148,
+    0,    0,    0,    0,    0,    0,   70,    0,    0,    0,
+    0,    0,    0,    0,    0,    4,    0,    2,    0,    0,
+   65,    0,   65,   65,   65,    0,   65,    0,    0,    0,
+    0,    0,    0,    0,    5,    6,    7,    8,   65,   10,
+   11,   65,   13,   66,   15,   16,   17,   18,   19,   20,
+   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+    0,    4,    0,  116,  132,    3,    0,    0,   58,   58,
+   58,   58,   58,   58,   58,   78,   58,   58,   58,   58,
+   58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+   58,   58,   58,   58,   58,   78,    4,   74,  116,  136,
+    3,   17,   78,    1,    5,    6,    7,    8,    9,   10,
+   11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
+   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+    4,   54,  116,    5,   56,    0,   31,   80,   80,   80,
+   80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+   80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+   80,   80,   88,   80,   88,   88,   88,    0,   88,    0,
+   80,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+   79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+   79,   79,   79,   79,   79,   79,   89,   79,   89,   89,
+   89,    0,   89,    0,   79,   25,   25,   25,   25,   25,
+   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+   25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+   86,   25,   86,   86,    5,   56,   86,    0,   25,   65,
+   65,   65,   65,   65,   65,   65,    0,   65,   65,   65,
+   65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+   65,   65,   65,   65,   65,   65,   75,    0,   75,   75,
+   75,    0,   75,    0,    0,    0,    0,    0,    0,    0,
+    5,    6,    7,    8,   65,   10,   11,   75,   13,   66,
+   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
+   25,   26,   27,   28,   29,   30,  117,  146,    0,    0,
+    0,    0,    0,    0,    0,    5,    6,    7,    8,   65,
+   10,   11,    0,   13,   66,   15,   16,   17,   18,   19,
+   20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
+   30,  117,    4,    0,    2,    0,    3,    0,    0,    5,
+   56,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   67,    0,    0,    0,    0,   41,    0,
+   41,    0,   41,    0,    0,  117,    0,    0,    0,    0,
+    0,   88,   88,    0,    0,    0,    0,    0,    0,   41,
+    0,    0,    0,    0,    0,    0,   45,    0,   45,    0,
+   45,    0,    0,    0,    0,    0,    0,   88,    0,    0,
+    0,    0,    0,    0,    0,   89,   89,   45,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,   89,    0,    0,    0,    0,    0,    0,    0,   86,
+   86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   86,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   75,   75,   75,   75,   75,
+   75,   75,    0,   75,   75,   75,   75,   75,   75,   75,
+   75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+   75,   75,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   82,    7,    8,   65,   10,   11,
+    0,   13,   66,   15,   16,   17,   18,   19,   20,   21,
+   22,   23,   24,   25,   26,   27,   28,   29,   30,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    5,    6,    7,    8,   65,   10,   11,    0,   13,
+   66,   15,   16,   17,   18,   19,   20,   21,   22,   23,
+   24,   25,   26,   27,   28,   29,   30,   41,   41,   41,
+   41,   41,   41,   41,    0,   41,   41,   41,   41,   41,
+   41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+   41,   41,   41,    0,    0,   45,   45,   45,   45,   45,
+   45,   45,    0,   45,   45,   45,   45,   45,   45,   45,
+   45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+   45,   82,    7,    8,   65,   10,   11,   12,   13,   14,
+   15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
+   25,   26,   27,   28,   29,   30,    0,    0,   82,    7,
+    8,   65,   10,   11,   95,   13,   66,   15,   16,   17,
+   18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
+   28,   29,   30,    0,    0,    0,  138,   82,    7,    8,
+   65,   10,   11,   12,   13,   14,   15,   16,   17,   18,
+   19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
+   29,   30,    0,   75,   82,    7,    8,   65,   10,   11,
+   12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
+   22,   23,   24,   25,   26,   27,   28,   29,   30,   82,
+    7,    8,   65,   10,   11,    0,   13,   66,   15,   16,
+   17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
+   27,   28,   29,   30,
+};
+static const short grammar_check[] =3D {                   38,
+   44,   40,   41,   42,   40,   44,   40,    4,   62,    2,
+    0,  257,  258,  288,   59,    3,   34,  264,   72,  259,
+   59,   41,   61,  290,   44,   41,  116,   41,   47,   42,
+   44,   59,   38,   44,   40,   38,   42,   40,  284,   42,
+   94,   34,  282,   62,   98,  135,   43,  285,   59,   61,
+   47,  284,   44,   59,   99,   59,   59,   76,   48,   41,
+   79,  284,   44,   53,   38,   83,   40,   59,   42,   87,
+   41,  116,   60,   44,   41,   41,   73,  121,   44,  257,
+  258,   99,   44,   73,   41,   44,  287,  284,   59,  285,
+   61,   59,   44,   41,   87,   41,  285,   41,    0,   92,
+    0,  284,   41,  284,   41,   41,   99,   44,   41,   59,
+   59,   92,  121,  123,  116,   94,  109,   48,   -1,   -1,
+   -1,   -1,   59,  116,   61,   -1,  116,   -1,  125,   -1,
+   -1,   -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   44,   -1,   -1,   -1,  135,   -1,   -1,   -1,  142,
+   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,   -1,
+   38,   -1,   40,   41,   42,   -1,   44,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,  262,
+  263,   59,  265,  266,  267,  268,  269,  270,  271,  272,
+  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
+   -1,   38,   -1,   40,   41,   42,   -1,   -1,  257,  258,
+  259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
+  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
+  279,  280,  281,  282,  283,  284,   38,  283,   40,  283,
+   42,  257,  291,  256,  257,  258,  259,  260,  261,  262,
+  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
+  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
+   38,  285,   40,  257,  258,   -1,  289,  258,  259,  260,
+  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
+  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
+  281,  282,   38,  284,   40,   41,   42,   -1,   44,   -1,
+  291,  258,  259,  260,  261,  262,  263,  264,  265,  266,
+  267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
+  277,  278,  279,  280,  281,  282,   38,  284,   40,   41,
+   42,   -1,   44,   -1,  291,  258,  259,  260,  261,  262,
+  263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
+  273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
+   38,  284,   40,   41,  257,  258,   44,   -1,  291,  257,
+  258,  259,  260,  261,  262,  263,   -1,  265,  266,  267,
+  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
+  278,  279,  280,  281,  282,  283,   38,   -1,   40,   41,
+   42,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  257,  258,  259,  260,  261,  262,  263,   59,  265,  266,
+  267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
+  277,  278,  279,  280,  281,  282,  283,   41,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
+  262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
+  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
+  282,  283,   38,   -1,   40,   -1,   42,   -1,   -1,  257,
+  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   38,   -1,
+   40,   -1,   42,   -1,   -1,  283,   -1,   -1,   -1,   -1,
+   -1,  257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   59,
+   -1,   -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,
+   42,   -1,   -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,  258,   59,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
+  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
+  262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
+  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
+  282,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  258,  259,  260,  261,  262,  263,
+   -1,  265,  266,  267,  268,  269,  270,  271,  272,  273,
+  274,  275,  276,  277,  278,  279,  280,  281,  282,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  257,  258,  259,  260,  261,  262,  263,   -1,  265,
+  266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
+  276,  277,  278,  279,  280,  281,  282,  257,  258,  259,
+  260,  261,  262,  263,   -1,  265,  266,  267,  268,  269,
+  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
+  280,  281,  282,   -1,   -1,  257,  258,  259,  260,  261,
+  262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
+  272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
+  282,  258,  259,  260,  261,  262,  263,  264,  265,  266,
+  267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
+  277,  278,  279,  280,  281,  282,   -1,   -1,  258,  259,
+  260,  261,  262,  263,  291,  265,  266,  267,  268,  269,
+  270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
+  280,  281,  282,   -1,   -1,   -1,  286,  258,  259,  260,
+  261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
+  271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
+  281,  282,   -1,  284,  258,  259,  260,  261,  262,  263,
+  264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
+  274,  275,  276,  277,  278,  279,  280,  281,  282,  258,
+  259,  260,  261,  262,  263,   -1,  265,  266,  267,  268,
+  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
+  279,  280,  281,  282,
+};
+#define YYFINAL 33
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 291
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",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,0,0,0,0,0,0,0,0,0,0,0,0,"';'=
",0,
+"'=3D'",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,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,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,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,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,
+"T_IDENTIFIER","T_TYPEDEF_NAME","T_DEFINE_NAME","T_AUTO","T_EXTERN",
+"T_REGISTER","T_STATIC","T_TYPEDEF","T_INLINE","T_EXTENSION","T_CHAR",
+"T_DOUBLE","T_FLOAT","T_INT","T_VOID","T_LONG","T_SHORT","T_SIGNED",
+"T_UNSIGNED","T_ENUM","T_STRUCT","T_UNION","T_Bool","T_Complex","T_Imagina=
ry",
+"T_TYPE_QUALIFIER","T_BRACKETS","T_LBRACE","T_MATCHRBRACE","T_ELLIPSIS",
+"T_INITIALIZER","T_STRING_LITERAL","T_ASM","T_ASMARG","T_VA_DCL",
+};
+static const char *yyrule[] =3D {
+"$accept : program",
+"program :",
+"program : translation_unit",
+"translation_unit : external_declaration",
+"translation_unit : translation_unit external_declaration",
+"external_declaration : declaration",
+"external_declaration : function_definition",
+"external_declaration : ';'",
+"external_declaration : linkage_specification",
+"external_declaration : T_ASM T_ASMARG ';'",
+"external_declaration : error T_MATCHRBRACE",
+"external_declaration : error ';'",
+"braces : T_LBRACE T_MATCHRBRACE",
+"linkage_specification : T_EXTERN T_STRING_LITERAL braces",
+"linkage_specification : T_EXTERN T_STRING_LITERAL declaration",
+"declaration : decl_specifiers ';'",
+"declaration : decl_specifiers init_declarator_list ';'",
+"$$1 :",
+"declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'",
+"any_typedef : T_EXTENSION T_TYPEDEF",
+"any_typedef : T_TYPEDEF",
+"opt_declarator_list :",
+"opt_declarator_list : declarator_list",
+"declarator_list : declarator",
+"declarator_list : declarator_list ',' declarator",
+"$$2 :",
+"$$3 :",
+"function_definition : decl_specifiers declarator $$2 opt_declaration_list=
 T_LBRACE $$3 T_MATCHRBRACE",
+"$$4 :",
+"function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATC=
HRBRACE",
+"opt_declaration_list :",
+"opt_declaration_list : T_VA_DCL",
+"opt_declaration_list : declaration_list",
+"declaration_list : declaration",
+"declaration_list : declaration_list declaration",
+"decl_specifiers : decl_specifier",
+"decl_specifiers : decl_specifiers decl_specifier",
+"decl_specifier : storage_class",
+"decl_specifier : type_specifier",
+"decl_specifier : type_qualifier",
+"storage_class : T_AUTO",
+"storage_class : T_EXTERN",
+"storage_class : T_REGISTER",
+"storage_class : T_STATIC",
+"storage_class : T_INLINE",
+"storage_class : T_EXTENSION",
+"type_specifier : T_CHAR",
+"type_specifier : T_DOUBLE",
+"type_specifier : T_FLOAT",
+"type_specifier : T_INT",
+"type_specifier : T_LONG",
+"type_specifier : T_SHORT",
+"type_specifier : T_SIGNED",
+"type_specifier : T_UNSIGNED",
+"type_specifier : T_VOID",
+"type_specifier : T_Bool",
+"type_specifier : T_Complex",
+"type_specifier : T_Imaginary",
+"type_specifier : T_TYPEDEF_NAME",
+"type_specifier : struct_or_union_specifier",
+"type_specifier : enum_specifier",
+"type_qualifier : T_TYPE_QUALIFIER",
+"type_qualifier : T_DEFINE_NAME",
+"struct_or_union_specifier : struct_or_union any_id braces",
+"struct_or_union_specifier : struct_or_union braces",
+"struct_or_union_specifier : struct_or_union any_id",
+"struct_or_union : T_STRUCT",
+"struct_or_union : T_UNION",
+"init_declarator_list : init_declarator",
+"init_declarator_list : init_declarator_list ',' init_declarator",
+"init_declarator : declarator",
+"$$5 :",
+"init_declarator : declarator '=3D' $$5 T_INITIALIZER",
+"enum_specifier : enumeration any_id braces",
+"enum_specifier : enumeration braces",
+"enum_specifier : enumeration any_id",
+"enumeration : T_ENUM",
+"any_id : T_IDENTIFIER",
+"any_id : T_TYPEDEF_NAME",
+"declarator : pointer direct_declarator",
+"declarator : direct_declarator",
+"direct_declarator : identifier_or_ref",
+"direct_declarator : '(' declarator ')'",
+"direct_declarator : direct_declarator T_BRACKETS",
+"direct_declarator : direct_declarator '(' parameter_type_list ')'",
+"direct_declarator : direct_declarator '(' opt_identifier_list ')'",
+"pointer : '*' opt_type_qualifiers",
+"pointer : '*' opt_type_qualifiers pointer",
+"opt_type_qualifiers :",
+"opt_type_qualifiers : type_qualifier_list",
+"type_qualifier_list : type_qualifier",
+"type_qualifier_list : type_qualifier_list type_qualifier",
+"parameter_type_list : parameter_list",
+"parameter_type_list : parameter_list ',' T_ELLIPSIS",
+"parameter_list : parameter_declaration",
+"parameter_list : parameter_list ',' parameter_declaration",
+"parameter_declaration : decl_specifiers declarator",
+"parameter_declaration : decl_specifiers abs_declarator",
+"parameter_declaration : decl_specifiers",
+"opt_identifier_list :",
+"opt_identifier_list : identifier_list",
+"identifier_list : any_id",
+"identifier_list : identifier_list ',' any_id",
+"identifier_or_ref : any_id",
+"identifier_or_ref : '&' any_id",
+"abs_declarator : pointer",
+"abs_declarator : pointer direct_abs_declarator",
+"abs_declarator : direct_abs_declarator",
+"direct_abs_declarator : '(' abs_declarator ')'",
+"direct_abs_declarator : direct_abs_declarator T_BRACKETS",
+"direct_abs_declarator : T_BRACKETS",
+"direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'=
",
+"direct_abs_declarator : direct_abs_declarator '(' ')'",
+"direct_abs_declarator : '(' parameter_type_list ')'",
+"direct_abs_declarator : '(' ')'",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 1014 "grammar.y"
+
+/* lex.yy.c */
+#define BEGIN yy_start =3D 1 + 2 *
+
+#define CPP1 1
+#define INIT1 2
+#define INIT2 3
+#define CURLY 4
+#define LEXYACC 5
+#define ASM 6
+#define CPP_INLINE 7
+
+extern char *yytext;
+extern FILE *yyin, *yyout;
+
+static int curly;			/* number of curly brace nesting levels */
+static int ly_count;			/* number of occurances of %% */
+static int inc_depth;			/* include nesting level */
+static SymbolTable *included_files;	/* files already included */
+static int yy_start =3D 0;		/* start state number */
+
+#define grammar_error(s) yaccError(s)
+
+static void
+yaccError (const char *msg)
+{
+    func_params =3D NULL;
+    put_error();		/* tell what line we're on, and what file */
+    fprintf(stderr, "%s at token '%s'\n", msg, yytext);
+}
+
+/* Initialize the table of type qualifier keywords recognized by the lexic=
al
+ * analyzer.
+ */
+void
+init_parser (void)
+{
+    static const char *keywords[] =3D {
+	"const",
+	"restrict",
+	"volatile",
+	"interrupt",
+#ifdef vms
+	"noshare",
+	"readonly",
+#endif
+#if defined(MSDOS) || defined(OS2)
+	"__cdecl",
+	"__export",
+	"__far",
+	"__fastcall",
+	"__fortran",
+	"__huge",
+	"__inline",
+	"__interrupt",
+	"__loadds",
+	"__near",
+	"__pascal",
+	"__saveregs",
+	"__segment",
+	"__stdcall",
+	"__syscall",
+	"_cdecl",
+	"_cs",
+	"_ds",
+	"_es",
+	"_export",
+	"_far",
+	"_fastcall",
+	"_fortran",
+	"_huge",
+	"_interrupt",
+	"_loadds",
+	"_near",
+	"_pascal",
+	"_saveregs",
+	"_seg",
+	"_segment",
+	"_ss",
+	"cdecl",
+	"far",
+	"huge",
+	"near",
+	"pascal",
+#ifdef OS2
+	"__far16",
+#endif
+#endif
+#ifdef __GNUC__
+	/* gcc aliases */
+	"__builtin_va_arg",
+	"__builtin_va_list",
+	"__const",
+	"__const__",
+	"__inline",
+	"__inline__",
+	"__restrict",
+	"__restrict__",
+	"__volatile",
+	"__volatile__",
+#endif
+    };
+    unsigned i;
+
+    /* Initialize type qualifier table. */
+    type_qualifiers =3D new_symbol_table();
+    for (i =3D 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
+	new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
+    }
+}
+
+/* Process the C source file.  Write function prototypes to the standard
+ * output.  Convert function definitions and write the converted source
+ * code to a temporary file.
+ */
+void
+process_file (FILE *infile, char *name)
+{
+    char *s;
+
+    if (strlen(name) > 2) {
+	s =3D name + strlen(name) - 2;
+	if (*s =3D=3D '.') {
+	    ++s;
+	    if (*s =3D=3D 'l' || *s =3D=3D 'y')
+		BEGIN LEXYACC;
+#if defined(MSDOS) || defined(OS2)
+	    if (*s =3D=3D 'L' || *s =3D=3D 'Y')
+		BEGIN LEXYACC;
+#endif
+	}
+    }
+
+    included_files =3D new_symbol_table();
+    typedef_names =3D new_symbol_table();
+    define_names =3D new_symbol_table();
+    inc_depth =3D -1;
+    curly =3D 0;
+    ly_count =3D 0;
+    func_params =3D NULL;
+    yyin =3D infile;
+    include_file(strcpy(base_file, name), func_style !=3D FUNC_NONE);
+    if (file_comments) {
+#if OPT_LINTLIBRARY
+    	if (lintLibrary()) {
+	    put_blankline(stdout);
+	    begin_tracking();
+	}
+#endif
+	put_string(stdout, "/* ");
+	put_string(stdout, cur_file_name());
+	put_string(stdout, " */\n");
+    }
+    yyparse();
+    free_symbol_table(define_names);
+    free_symbol_table(typedef_names);
+    free_symbol_table(included_files);
+}
+
+#ifdef NO_LEAKS
+void
+free_parser(void)
+{
+    free_symbol_table (type_qualifiers);
+#ifdef FLEX_SCANNER
+    if (yy_current_buffer !=3D 0)
+	yy_delete_buffer(yy_current_buffer);
+#endif
+}
+#endif
+#line 1085 "grammar.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 10:
+#line 377 "grammar.y"
+	{
+	    yyerrok;
+	}
+break;
+case 11:
+#line 381 "grammar.y"
+	{
+	    yyerrok;
+	}
+break;
+case 13:
+#line 392 "grammar.y"
+	{
+	    /* Provide an empty action here so bison will not complain about
+	     * incompatible types in the default action it normally would
+	     * have generated.
+	     */
+	}
+break;
+case 14:
+#line 399 "grammar.y"
+	{
+	    /* empty */
+	}
+break;
+case 15:
+#line 406 "grammar.y"
+	{
+#if OPT_LINTLIBRARY
+	    if (types_out && want_typedef()) {
+		gen_declarations(&yystack.l_mark[-1].decl_spec, (DeclaratorList *)0);
+		flush_varargs();
+	    }
+#endif
+	    free_decl_spec(&yystack.l_mark[-1].decl_spec);
+	    end_typedef();
+	}
+break;
+case 16:
+#line 417 "grammar.y"
+	{
+	    if (func_params !=3D NULL) {
+		set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_m=
ark[-1].decl_list);
+	    } else {
+		gen_declarations(&yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl=
_list);
+#if OPT_LINTLIBRARY
+		flush_varargs();
+#endif
+		free_decl_list(&yystack.l_mark[-1].decl_list);
+	    }
+	    free_decl_spec(&yystack.l_mark[-2].decl_spec);
+	    end_typedef();
+	}
+break;
+case 17:
+#line 431 "grammar.y"
+	{
+	    cur_decl_spec_flags =3D yystack.l_mark[0].decl_spec.flags;
+	    free_decl_spec(&yystack.l_mark[0].decl_spec);
+	}
+break;
+case 18:
+#line 436 "grammar.y"
+	{
+	    end_typedef();
+	}
+break;
+case 19:
+#line 443 "grammar.y"
+	{
+	    begin_typedef();
+	}
+break;
+case 20:
+#line 447 "grammar.y"
+	{
+	    begin_typedef();
+	}
+break;
+case 23:
+#line 459 "grammar.y"
+	{
+	    int flags =3D cur_decl_spec_flags;
+
+	    /* If the typedef is a pointer type, then reset the short type
+	     * flags so it does not get promoted.
+	     */
+	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].decl=
arator->name) !=3D 0)
+		flags &=3D ~(DS_CHAR | DS_SHORT | DS_FLOAT);
+	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, f=
lags);
+	    free_declarator(yystack.l_mark[0].declarator);
+	}
+break;
+case 24:
+#line 471 "grammar.y"
+	{
+	    int flags =3D cur_decl_spec_flags;
+
+	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].decl=
arator->name) !=3D 0)
+		flags &=3D ~(DS_CHAR | DS_SHORT | DS_FLOAT);
+	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, f=
lags);
+	    free_declarator(yystack.l_mark[0].declarator);
+	}
+break;
+case 25:
+#line 483 "grammar.y"
+	{
+	    check_untagged(&yystack.l_mark[-1].decl_spec);
+	    if (yystack.l_mark[0].declarator->func_def =3D=3D FUNC_NONE) {
+		yyerror("syntax error");
+		YYERROR;
+	    }
+	    func_params =3D &(yystack.l_mark[0].declarator->head->params);
+	    func_params->begin_comment =3D cur_file->begin_comment;
+	    func_params->end_comment =3D cur_file->end_comment;
+	}
+break;
+case 26:
+#line 494 "grammar.y"
+	{
+	    /* If we're converting to K&R and we've got a nominally K&R
+	     * function which has a parameter which is ANSI (i.e., a prototyped
+	     * function pointer), then we must override the deciphered value of
+	     * 'func_def' so that the parameter will be converted.
+	     */
+	    if (func_style =3D=3D FUNC_TRADITIONAL
+	     && haveAnsiParam()
+	     && yystack.l_mark[-3].declarator->head->func_def =3D=3D func_style) {
+		yystack.l_mark[-3].declarator->head->func_def =3D FUNC_BOTH;
+	    }
+
+	    func_params =3D NULL;
+
+	    if (cur_file->convert)
+		gen_func_definition(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].de=
clarator);
+	    gen_prototype(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].decla=
rator);
+#if OPT_LINTLIBRARY
+	    flush_varargs();
+#endif
+	    free_decl_spec(&yystack.l_mark[-4].decl_spec);
+	    free_declarator(yystack.l_mark[-3].declarator);
+	}
+break;
+case 28:
+#line 519 "grammar.y"
+	{
+	    if (yystack.l_mark[0].declarator->func_def =3D=3D FUNC_NONE) {
+		yyerror("syntax error");
+		YYERROR;
+	    }
+	    func_params =3D &(yystack.l_mark[0].declarator->head->params);
+	    func_params->begin_comment =3D cur_file->begin_comment;
+	    func_params->end_comment =3D cur_file->end_comment;
+	}
+break;
+case 29:
+#line 529 "grammar.y"
+	{
+	    DeclSpec decl_spec;
+
+	    func_params =3D NULL;
+
+	    new_decl_spec(&decl_spec, dft_decl_spec(), yystack.l_mark[-4].declara=
tor->begin, DS_NONE);
+	    if (cur_file->convert)
+		gen_func_definition(&decl_spec, yystack.l_mark[-4].declarator);
+	    gen_prototype(&decl_spec, yystack.l_mark[-4].declarator);
+#if OPT_LINTLIBRARY
+	    flush_varargs();
+#endif
+	    free_decl_spec(&decl_spec);
+	    free_declarator(yystack.l_mark[-4].declarator);
+	}
+break;
+case 36:
+#line 560 "grammar.y"
+	{
+	    join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yys=
tack.l_mark[0].decl_spec);
+	    free(yystack.l_mark[-1].decl_spec.text);
+	    free(yystack.l_mark[0].decl_spec.text);
+	}
+break;
+case 40:
+#line 575 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 41:
+#line 579 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_EXTERN);
+	}
+break;
+case 42:
+#line 583 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 43:
+#line 587 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_STATIC);
+	}
+break;
+case 44:
+#line 591 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_INLINE);
+	}
+break;
+case 45:
+#line 595 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_JUNK);
+	}
+break;
+case 46:
+#line 602 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_CHAR);
+	}
+break;
+case 47:
+#line 606 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 48:
+#line 610 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_FLOAT);
+	}
+break;
+case 49:
+#line 614 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 50:
+#line 618 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 51:
+#line 622 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_SHORT);
+	}
+break;
+case 52:
+#line 626 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 53:
+#line 630 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 54:
+#line 634 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 55:
+#line 638 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_CHAR);
+	}
+break;
+case 56:
+#line 642 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 57:
+#line 646 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 58:
+#line 650 "grammar.y"
+	{
+	    Symbol *s;
+	    s =3D find_symbol(typedef_names, yystack.l_mark[0].text.text);
+	    if (s !=3D NULL)
+		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_m=
ark[0].text.begin, s->flags);
+	}
+break;
+case 61:
+#line 662 "grammar.y"
+	{
+	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.=
l_mark[0].text.begin, DS_NONE);
+	}
+break;
+case 62:
+#line 666 "grammar.y"
+	{
+	    /* This rule allows the <pointer> nonterminal to scan #define
+	     * names as if they were type modifiers.
+	     */
+	    Symbol *s;
+	    s =3D find_symbol(define_names, yystack.l_mark[0].text.text);
+	    if (s !=3D NULL)
+		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_m=
ark[0].text.begin, s->flags);
+	}
+break;
+case 63:
+#line 679 "grammar.y"
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+	        (void)sprintf(s =3D buf, "%s %s", yystack.l_mark[-2].text.text, y=
ystack.l_mark[-1].text.text);
+	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_=
NONE);
+	}
+break;
+case 64:
+#line 686 "grammar.y"
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "%s {}", yystack.l_mark[-1].text.text);
+	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_=
NONE);
+	}
+break;
+case 65:
+#line 693 "grammar.y"
+	{
+	    (void)sprintf(buf, "%s %s", yystack.l_mark[-1].text.text, yystack.l_m=
ark[0].text.text);
+	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, D=
S_NONE);
+	}
+break;
+case 66:
+#line 701 "grammar.y"
+	{
+	    imply_typedef(yyval.text.text);
+	}
+break;
+case 67:
+#line 705 "grammar.y"
+	{
+	    imply_typedef(yyval.text.text);
+	}
+break;
+case 68:
+#line 712 "grammar.y"
+	{
+	    new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
+	}
+break;
+case 69:
+#line 716 "grammar.y"
+	{
+	    add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystac=
k.l_mark[0].declarator);
+	}
+break;
+case 70:
+#line 723 "grammar.y"
+	{
+	    if (yystack.l_mark[0].declarator->func_def !=3D FUNC_NONE && func_par=
ams =3D=3D NULL &&
+		func_style =3D=3D FUNC_TRADITIONAL && cur_file->convert) {
+		gen_func_declarator(yystack.l_mark[0].declarator);
+		fputs(cur_text(), cur_file->tmp_file);
+	    }
+	    cur_declarator =3D yyval.declarator;
+	}
+break;
+case 71:
+#line 732 "grammar.y"
+	{
+	    if (yystack.l_mark[-1].declarator->func_def !=3D FUNC_NONE && func_pa=
rams =3D=3D NULL &&
+		func_style =3D=3D FUNC_TRADITIONAL && cur_file->convert) {
+		gen_func_declarator(yystack.l_mark[-1].declarator);
+		fputs(" =3D", cur_file->tmp_file);
+	    }
+	}
+break;
+case 73:
+#line 744 "grammar.y"
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "enum %s", yystack.l_mark[-1].text.text);
+	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_=
NONE);
+	}
+break;
+case 74:
+#line 751 "grammar.y"
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "%s {}", yystack.l_mark[-1].text.text);
+	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_=
NONE);
+	}
+break;
+case 75:
+#line 758 "grammar.y"
+	{
+	    (void)sprintf(buf, "enum %s", yystack.l_mark[0].text.text);
+	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, D=
S_NONE);
+	}
+break;
+case 76:
+#line 766 "grammar.y"
+	{
+	    imply_typedef("enum");
+	    yyval.text =3D yystack.l_mark[0].text;
+	}
+break;
+case 79:
+#line 779 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[0].declarator;
+	    (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declar=
ator->text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	    yyval.declarator->begin =3D yystack.l_mark[-1].text.begin;
+	    yyval.declarator->pointer =3D TRUE;
+	}
+break;
+case 81:
+#line 792 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator(yystack.l_mark[0].text.text, yyst=
ack.l_mark[0].text.text, yystack.l_mark[0].text.begin);
+	}
+break;
+case 82:
+#line 796 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[-1].declarator;
+	    (void)sprintf(buf, "(%s)", yyval.declarator->text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	    yyval.declarator->begin =3D yystack.l_mark[-2].text.begin;
+	}
+break;
+case 83:
+#line 804 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[-1].declarator;
+	    (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].=
text.text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	}
+break;
+case 84:
+#line 811 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator("%s()", yystack.l_mark[-3].declar=
ator->name, yystack.l_mark[-3].declarator->begin);
+	    yyval.declarator->params =3D yystack.l_mark[-1].param_list;
+	    yyval.declarator->func_stack =3D yystack.l_mark[-3].declarator;
+	    yyval.declarator->head =3D (yystack.l_mark[-3].declarator->func_stack=
 =3D=3D NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
+	    yyval.declarator->func_def =3D FUNC_ANSI;
+	}
+break;
+case 85:
+#line 819 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator("%s()", yystack.l_mark[-3].declar=
ator->name, yystack.l_mark[-3].declarator->begin);
+	    yyval.declarator->params =3D yystack.l_mark[-1].param_list;
+	    yyval.declarator->func_stack =3D yystack.l_mark[-3].declarator;
+	    yyval.declarator->head =3D (yystack.l_mark[-3].declarator->func_stack=
 =3D=3D NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
+	    yyval.declarator->func_def =3D FUNC_TRADITIONAL;
+	}
+break;
+case 86:
+#line 830 "grammar.y"
+	{
+	    (void)sprintf(yyval.text.text, "*%s", yystack.l_mark[0].text.text);
+	    yyval.text.begin =3D yystack.l_mark[-1].text.begin;
+	}
+break;
+case 87:
+#line 835 "grammar.y"
+	{
+	    (void)sprintf(yyval.text.text, "*%s%s", yystack.l_mark[-1].text.text,=
 yystack.l_mark[0].text.text);
+	    yyval.text.begin =3D yystack.l_mark[-2].text.begin;
+	}
+break;
+case 88:
+#line 843 "grammar.y"
+	{
+	    strcpy(yyval.text.text, "");
+	    yyval.text.begin =3D 0L;
+	}
+break;
+case 90:
+#line 852 "grammar.y"
+	{
+	    (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.tex=
t);
+	    yyval.text.begin =3D yystack.l_mark[0].decl_spec.begin;
+	    free(yystack.l_mark[0].decl_spec.text);
+	}
+break;
+case 91:
+#line 858 "grammar.y"
+	{
+	    (void)sprintf(yyval.text.text, "%s%s ", yystack.l_mark[-1].text.text,=
 yystack.l_mark[0].decl_spec.text);
+	    yyval.text.begin =3D yystack.l_mark[-1].text.begin;
+	    free(yystack.l_mark[0].decl_spec.text);
+	}
+break;
+case 93:
+#line 868 "grammar.y"
+	{
+	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "..=
.");
+	}
+break;
+case 94:
+#line 875 "grammar.y"
+	{
+	    new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
+	}
+break;
+case 95:
+#line 879 "grammar.y"
+	{
+	    add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yys=
tack.l_mark[0].parameter);
+	}
+break;
+case 96:
+#line 886 "grammar.y"
+	{
+	    check_untagged(&yystack.l_mark[-1].decl_spec);
+	    yyval.parameter =3D new_parameter(&yystack.l_mark[-1].decl_spec, yyst=
ack.l_mark[0].declarator);
+	}
+break;
+case 97:
+#line 891 "grammar.y"
+	{
+	    check_untagged(&yystack.l_mark[-1].decl_spec);
+	    yyval.parameter =3D new_parameter(&yystack.l_mark[-1].decl_spec, yyst=
ack.l_mark[0].declarator);
+	}
+break;
+case 98:
+#line 896 "grammar.y"
+	{
+	    check_untagged(&yystack.l_mark[0].decl_spec);
+	    yyval.parameter =3D new_parameter(&yystack.l_mark[0].decl_spec, (Decl=
arator *)0);
+	}
+break;
+case 99:
+#line 904 "grammar.y"
+	{
+	    new_ident_list(&yyval.param_list);
+	}
+break;
+case 101:
+#line 912 "grammar.y"
+	{
+	    new_ident_list(&yyval.param_list);
+	    add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0=
].text.text);
+	}
+break;
+case 102:
+#line 917 "grammar.y"
+	{
+	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yys=
tack.l_mark[0].text.text);
+	}
+break;
+case 103:
+#line 924 "grammar.y"
+	{
+	    yyval.text =3D yystack.l_mark[0].text;
+	}
+break;
+case 104:
+#line 928 "grammar.y"
+	{
+#if OPT_LINTLIBRARY
+	    if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
+		yyval.text =3D yystack.l_mark[0].text;
+	    } else
+#endif
+		(void)sprintf(yyval.text.text, "&%s", yystack.l_mark[0].text.text);
+	    yyval.text.begin =3D yystack.l_mark[-1].text.begin;
+	}
+break;
+case 105:
+#line 941 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator(yystack.l_mark[0].text.text, "", =
yystack.l_mark[0].text.begin);
+	}
+break;
+case 106:
+#line 945 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[0].declarator;
+	    (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declar=
ator->text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	    yyval.declarator->begin =3D yystack.l_mark[-1].text.begin;
+	}
+break;
+case 108:
+#line 957 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[-1].declarator;
+	    (void)sprintf(buf, "(%s)", yyval.declarator->text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	    yyval.declarator->begin =3D yystack.l_mark[-2].text.begin;
+	}
+break;
+case 109:
+#line 965 "grammar.y"
+	{
+	    yyval.declarator =3D yystack.l_mark[-1].declarator;
+	    (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].=
text.text);
+	    free(yyval.declarator->text);
+	    yyval.declarator->text =3D xstrdup(buf);
+	}
+break;
+case 110:
+#line 972 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator(yystack.l_mark[0].text.text, "", =
yystack.l_mark[0].text.begin);
+	}
+break;
+case 111:
+#line 976 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator("%s()", "", yystack.l_mark[-3].de=
clarator->begin);
+	    yyval.declarator->params =3D yystack.l_mark[-1].param_list;
+	    yyval.declarator->func_stack =3D yystack.l_mark[-3].declarator;
+	    yyval.declarator->head =3D (yystack.l_mark[-3].declarator->func_stack=
 =3D=3D NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
+	    yyval.declarator->func_def =3D FUNC_ANSI;
+	}
+break;
+case 112:
+#line 984 "grammar.y"
+	{
+	    yyval.declarator =3D new_declarator("%s()", "", yystack.l_mark[-2].de=
clarator->begin);
+	    yyval.declarator->func_stack =3D yystack.l_mark[-2].declarator;
+	    yyval.declarator->head =3D (yystack.l_mark[-2].declarator->func_stack=
 =3D=3D NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
+	    yyval.declarator->func_def =3D FUNC_ANSI;
+	}
+break;
+case 113:
+#line 991 "grammar.y"
+	{
+	    Declarator *d;
+
+	    d =3D new_declarator("", "", yystack.l_mark[-2].text.begin);
+	    yyval.declarator =3D new_declarator("%s()", "", yystack.l_mark[-2].te=
xt.begin);
+	    yyval.declarator->params =3D yystack.l_mark[-1].param_list;
+	    yyval.declarator->func_stack =3D d;
+	    yyval.declarator->head =3D yyval.declarator;
+	    yyval.declarator->func_def =3D FUNC_ANSI;
+	}
+break;
+case 114:
+#line 1002 "grammar.y"
+	{
+	    Declarator *d;
+
+	    d =3D new_declarator("", "", yystack.l_mark[-1].text.begin);
+	    yyval.declarator =3D new_declarator("%s()", "", yystack.l_mark[-1].te=
xt.begin);
+	    yyval.declarator->func_stack =3D d;
+	    yyval.declarator->head =3D yyval.declarator;
+	    yyval.declarator->func_def =3D FUNC_ANSI;
+	}
+break;
+#line 1965 "grammar.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/grammar.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/grammar.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,35 @@
+#define T_IDENTIFIER 257
+#define T_TYPEDEF_NAME 258
+#define T_DEFINE_NAME 259
+#define T_AUTO 260
+#define T_EXTERN 261
+#define T_REGISTER 262
+#define T_STATIC 263
+#define T_TYPEDEF 264
+#define T_INLINE 265
+#define T_EXTENSION 266
+#define T_CHAR 267
+#define T_DOUBLE 268
+#define T_FLOAT 269
+#define T_INT 270
+#define T_VOID 271
+#define T_LONG 272
+#define T_SHORT 273
+#define T_SIGNED 274
+#define T_UNSIGNED 275
+#define T_ENUM 276
+#define T_STRUCT 277
+#define T_UNION 278
+#define T_Bool 279
+#define T_Complex 280
+#define T_Imaginary 281
+#define T_TYPE_QUALIFIER 282
+#define T_BRACKETS 283
+#define T_LBRACE 284
+#define T_MATCHRBRACE 285
+#define T_ELLIPSIS 286
+#define T_INITIALIZER 287
+#define T_STRING_LITERAL 288
+#define T_ASM 289
+#define T_ASMARG 290
+#define T_VA_DCL 291
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/grammar.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/grammar.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,1183 @@
+/* $Id: grammar.y,v 1.5 2012/01/15 20:00:59 tom Exp $
+ *
+ * yacc grammar for C function prototype generator
+ * This was derived from the grammar in Appendix A of
+ * "The C Programming Language" by Kernighan and Ritchie.
+ */
+%expect 1
+%{
+#ifdef YYBISON
+#include <stdlib.h>
+#define YYSTYPE_IS_DECLARED
+#define yyerror yaccError
+#endif
+
+#if defined(YYBISON) || !defined(YYBYACC)
+static void yyerror(const char *s);
+#endif
+%}
+
+%token <text> '(' '*' '&'
+	/* identifiers that are not reserved words */
+	T_IDENTIFIER T_TYPEDEF_NAME T_DEFINE_NAME
+
+	/* storage class */
+	T_AUTO T_EXTERN T_REGISTER T_STATIC T_TYPEDEF
+	/* This keyword included for compatibility with C++. */
+	T_INLINE
+	/* This keyword included for compatibility with GCC */
+	T_EXTENSION
+
+	/* type specifiers */
+	T_CHAR T_DOUBLE T_FLOAT T_INT T_VOID
+	T_LONG T_SHORT T_SIGNED T_UNSIGNED
+	T_ENUM T_STRUCT T_UNION
+	/* C9X new types */
+	T_Bool T_Complex T_Imaginary
+
+	/* type qualifiers */
+	T_TYPE_QUALIFIER
+
+	/* paired square brackets and everything between them: [ ... ] */
+	T_BRACKETS
+
+%token
+	/* left brace */
+	T_LBRACE
+	/* all input to the matching right brace */
+	T_MATCHRBRACE
+
+	/* three periods */
+	T_ELLIPSIS
+
+	/* constant expression or paired braces following an equal sign */
+	T_INITIALIZER
+
+	/* string literal */
+	T_STRING_LITERAL
+
+	/* asm */
+	T_ASM
+	/* ( "string literal" ) following asm keyword */
+	T_ASMARG
+
+	/* va_dcl from <varargs.h> */
+	T_VA_DCL
+
+%type <decl_spec> decl_specifiers decl_specifier
+%type <decl_spec> storage_class type_specifier type_qualifier
+%type <decl_spec> struct_or_union_specifier enum_specifier
+%type <decl_list> init_declarator_list
+%type <declarator> init_declarator declarator direct_declarator
+%type <declarator> abs_declarator direct_abs_declarator
+%type <param_list> parameter_type_list parameter_list
+%type <parameter> parameter_declaration
+%type <param_list> opt_identifier_list identifier_list
+%type <text> struct_or_union pointer opt_type_qualifiers type_qualifier_li=
st
+	any_id identifier_or_ref
+%type <text> enumeration
+
+%{
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#define OPT_LINTLIBRARY 1
+
+#ifndef TRUE
+#define	TRUE	(1)
+#endif
+
+#ifndef FALSE
+#define	FALSE	(0)
+#endif
+
+/* #include "cproto.h" */
+#define MAX_TEXT_SIZE 1024
+
+/* Prototype styles */
+#if OPT_LINTLIBRARY
+#define PROTO_ANSI_LLIB		-2	/* form ANSI lint-library source */
+#define PROTO_LINTLIBRARY	-1	/* form lint-library source */
+#endif
+#define PROTO_NONE		0	/* do not output any prototypes */
+#define PROTO_TRADITIONAL	1	/* comment out parameters */
+#define PROTO_ABSTRACT		2	/* comment out parameter names */
+#define PROTO_ANSI		3	/* ANSI C prototype */
+
+typedef int PrototypeStyle;
+
+typedef char boolean;
+
+extern boolean types_out;
+extern PrototypeStyle proto_style;
+
+#define ansiLintLibrary() (proto_style =3D=3D PROTO_ANSI_LLIB)
+#define knrLintLibrary()  (proto_style =3D=3D PROTO_LINTLIBRARY)
+#define lintLibrary()     (knrLintLibrary() || ansiLintLibrary())
+
+#if OPT_LINTLIBRARY
+#define FUNC_UNKNOWN		-1	/* unspecified */
+#else
+#define FUNC_UNKNOWN		0	/* unspecified (same as FUNC_NONE) */
+#endif
+#define FUNC_NONE		0	/* not a function definition */
+#define FUNC_TRADITIONAL	1	/* traditional style */
+#define FUNC_ANSI		2	/* ANSI style */
+#define FUNC_BOTH		3	/* both styles */
+
+typedef int FuncDefStyle;
+
+/* Source file text */
+typedef struct text {
+    char text[MAX_TEXT_SIZE];	/* source text */
+    long begin; 		/* offset in temporary file */
+} Text;
+
+/* Declaration specifier flags */
+#define DS_NONE 	0	/* default */
+#define DS_EXTERN	1	/* contains "extern" specifier */
+#define DS_STATIC	2	/* contains "static" specifier */
+#define DS_CHAR 	4	/* contains "char" type specifier */
+#define DS_SHORT	8	/* contains "short" type specifier */
+#define DS_FLOAT	16	/* contains "float" type specifier */
+#define DS_INLINE	32	/* contains "inline" specifier */
+#define DS_JUNK 	64	/* we're not interested in this declaration */
+
+/* This structure stores information about a declaration specifier. */
+typedef struct decl_spec {
+    unsigned short flags;	/* flags defined above */
+    char *text; 		/* source text */
+    long begin; 		/* offset in temporary file */
+} DeclSpec;
+
+/* This is a list of function parameters. */
+typedef struct _ParameterList {
+    struct parameter *first;	/* pointer to first parameter in list */
+    struct parameter *last;	/* pointer to last parameter in list */ =20
+    long begin_comment; 	/* begin offset of comment */
+    long end_comment;		/* end offset of comment */
+    char *comment;		/* comment at start of parameter list */
+} ParameterList;
+
+/* This structure stores information about a declarator. */
+typedef struct _Declarator {
+    char *name; 			/* name of variable or function */
+    char *text; 			/* source text */
+    long begin; 			/* offset in temporary file */
+    long begin_comment; 		/* begin offset of comment */
+    long end_comment;			/* end offset of comment */
+    FuncDefStyle func_def;		/* style of function definition */
+    ParameterList params;		/* function parameters */
+    boolean pointer;			/* TRUE if it declares a pointer */
+    struct _Declarator *head;		/* head function declarator */
+    struct _Declarator *func_stack;	/* stack of function declarators */
+    struct _Declarator *next;		/* next declarator in list */
+} Declarator;
+
+/* This structure stores information about a function parameter. */
+typedef struct parameter {
+    struct parameter *next;	/* next parameter in list */
+    DeclSpec decl_spec;
+    Declarator *declarator;
+    char *comment;		/* comment following the parameter */
+} Parameter;
+
+/* This is a list of declarators. */
+typedef struct declarator_list {
+    Declarator *first;		/* pointer to first declarator in list */
+    Declarator *last;		/* pointer to last declarator in list */ =20
+} DeclaratorList;
+
+/* #include "symbol.h" */
+typedef struct symbol {
+    struct symbol *next;	/* next symbol in list */
+    char *name; 		/* name of symbol */
+    char *value;		/* value of symbol (for defines) */
+    short flags;		/* symbol attributes */
+} Symbol;
+
+/* parser stack entry type */
+typedef union {
+    Text text;
+    DeclSpec decl_spec;
+    Parameter *parameter;
+    ParameterList param_list;
+    Declarator *declarator;
+    DeclaratorList decl_list;
+} YYSTYPE;
+
+/* The hash table length should be a prime number. */
+#define SYM_MAX_HASH 251
+
+typedef struct symbol_table {
+    Symbol *bucket[SYM_MAX_HASH];	/* hash buckets */
+} SymbolTable;
+
+extern SymbolTable *new_symbol_table	/* Create symbol table */
+	(void);
+extern void free_symbol_table		/* Destroy symbol table */
+	(SymbolTable *s);
+extern Symbol *find_symbol		/* Lookup symbol name */
+	(SymbolTable *s, const char *n);
+extern Symbol *new_symbol		/* Define new symbol */
+	(SymbolTable *s, const char *n, const char *v, int f);
+
+/* #include "semantic.h" */
+extern void new_decl_spec (DeclSpec *, const char *, long, int);
+extern void free_decl_spec (DeclSpec *);
+extern void join_decl_specs (DeclSpec *, DeclSpec *, DeclSpec *);
+extern void check_untagged (DeclSpec *);
+extern Declarator *new_declarator (const char *, const char *, long);
+extern void free_declarator (Declarator *);
+extern void new_decl_list (DeclaratorList *, Declarator *);
+extern void free_decl_list (DeclaratorList *);
+extern void add_decl_list (DeclaratorList *, DeclaratorList *, Declarator =
*);
+extern Parameter *new_parameter (DeclSpec *, Declarator *);
+extern void free_parameter (Parameter *);
+extern void new_param_list (ParameterList *, Parameter *);
+extern void free_param_list (ParameterList *);
+extern void add_param_list (ParameterList *, ParameterList *, Parameter *);
+extern void new_ident_list (ParameterList *);
+extern void add_ident_list (ParameterList *, ParameterList *, const char *=
);
+extern void set_param_types (ParameterList *, DeclSpec *, DeclaratorList *=
);
+extern void gen_declarations (DeclSpec *, DeclaratorList *);
+extern void gen_prototype (DeclSpec *, Declarator *);
+extern void gen_func_declarator (Declarator *);
+extern void gen_func_definition (DeclSpec *, Declarator *);
+
+extern void init_parser     (void);
+extern void process_file    (FILE *infile, char *name);
+extern char *cur_text       (void);
+extern char *cur_file_name  (void);
+extern char *implied_typedef (void);
+extern void include_file    (char *name, int convert);
+extern char *supply_parm    (int count);
+extern char *xstrdup        (const char *);
+extern int already_declared (char *name);
+extern int is_actual_func   (Declarator *d);
+extern int lint_ellipsis    (Parameter *p);
+extern int want_typedef     (void);
+extern void begin_tracking  (void);
+extern void begin_typedef   (void);
+extern void copy_typedef    (char *s);
+extern void ellipsis_varargs (Declarator *d);
+extern void end_typedef     (void);
+extern void flush_varargs   (void);
+extern void fmt_library     (int code);
+extern void imply_typedef   (const char *s);
+extern void indent          (FILE *outf);
+extern void put_blankline   (FILE *outf);
+extern void put_body        (FILE *outf, DeclSpec *decl_spec, Declarator *=
declarator);
+extern void put_char        (FILE *outf, int c);
+extern void put_error       (void);
+extern void put_newline     (FILE *outf);
+extern void put_padded      (FILE *outf, const char *s);
+extern void put_string      (FILE *outf, const char *s);
+extern void track_in        (void);
+
+extern boolean file_comments;
+extern FuncDefStyle func_style;
+extern char base_file[];
+
+extern	int	yylex (void);
+
+/* declaration specifier attributes for the typedef statement currently be=
ing
+ * scanned
+ */
+static int cur_decl_spec_flags;
+
+/* pointer to parameter list for the current function definition */
+static ParameterList *func_params;
+
+/* A parser semantic action sets this pointer to the current declarator in
+ * a function parameter declaration in order to catch any comments followi=
ng
+ * the parameter declaration on the same line.  If the lexer scans a comme=
nt
+ * and <cur_declarator> is not NULL, then the comment is attached to the
+ * declarator.  To ignore subsequent comments, the lexer sets this to NULL
+ * after scanning a comment or end of line.
+ */
+static Declarator *cur_declarator;
+
+/* temporary string buffer */
+static char buf[MAX_TEXT_SIZE];
+
+/* table of typedef names */
+static SymbolTable *typedef_names;
+
+/* table of define names */
+static SymbolTable *define_names;
+
+/* table of type qualifiers */
+static SymbolTable *type_qualifiers;
+
+/* information about the current input file */
+typedef struct {
+    char *base_name;		/* base input file name */
+    char *file_name;		/* current file name */
+    FILE *file; 		/* input file */
+    unsigned line_num;		/* current line number in input file */
+    FILE *tmp_file;		/* temporary file */
+    long begin_comment; 	/* tmp file offset after last written ) or ; */
+    long end_comment;		/* tmp file offset after last comment */
+    boolean convert;		/* if TRUE, convert function definitions */
+    boolean changed;		/* TRUE if conversion done in this file */
+} IncludeStack;
+
+static IncludeStack *cur_file;	/* current input file */
+
+/* #include "yyerror.c" */
+
+static int haveAnsiParam (void);
+
+
+/* Flags to enable us to find if a procedure returns a value.
+ */
+static int return_val;	/* nonzero on BRACES iff return-expression found */
+
+static const char *
+dft_decl_spec (void)
+{
+    return (lintLibrary() && !return_val) ? "void" : "int";
+}
+
+static int
+haveAnsiParam (void)
+{
+    Parameter *p;
+    if (func_params !=3D 0) {
+	for (p =3D func_params->first; p !=3D 0; p =3D p->next) {
+	    if (p->declarator->func_def =3D=3D FUNC_ANSI) {
+		return TRUE;
+	    }
+	}
+    }
+    return FALSE;
+}
+%}
+%%
+
+program
+	: /* empty */
+	| translation_unit
+	;
+
+translation_unit
+	: external_declaration
+	| translation_unit external_declaration
+	;
+
+external_declaration
+	: declaration
+	| function_definition
+	| ';'
+	| linkage_specification
+	| T_ASM T_ASMARG ';'
+	| error T_MATCHRBRACE
+	{
+	    yyerrok;
+	}
+	| error ';'
+	{
+	    yyerrok;
+	}
+	;
+
+braces
+	: T_LBRACE T_MATCHRBRACE
+	;
+
+linkage_specification
+	: T_EXTERN T_STRING_LITERAL braces
+	{
+	    /* Provide an empty action here so bison will not complain about
+	     * incompatible types in the default action it normally would
+	     * have generated.
+	     */
+	}
+	| T_EXTERN T_STRING_LITERAL declaration
+	{
+	    /* empty */
+	}
+	;
+
+declaration
+	: decl_specifiers ';'
+	{
+#if OPT_LINTLIBRARY
+	    if (types_out && want_typedef()) {
+		gen_declarations(&$1, (DeclaratorList *)0);
+		flush_varargs();
+	    }
+#endif
+	    free_decl_spec(&$1);
+	    end_typedef();
+	}
+	| decl_specifiers init_declarator_list ';'
+	{
+	    if (func_params !=3D NULL) {
+		set_param_types(func_params, &$1, &$2);
+	    } else {
+		gen_declarations(&$1, &$2);
+#if OPT_LINTLIBRARY
+		flush_varargs();
+#endif
+		free_decl_list(&$2);
+	    }
+	    free_decl_spec(&$1);
+	    end_typedef();
+	}
+	| any_typedef decl_specifiers
+	{
+	    cur_decl_spec_flags =3D $2.flags;
+	    free_decl_spec(&$2);
+	}
+	  opt_declarator_list ';'
+	{
+	    end_typedef();
+	}
+	;
+
+any_typedef
+	: T_EXTENSION T_TYPEDEF
+	{
+	    begin_typedef();
+	}
+	| T_TYPEDEF
+	{
+	    begin_typedef();
+	}
+	;
+
+opt_declarator_list
+	: /* empty */
+	| declarator_list
+	;
+
+declarator_list
+	: declarator
+	{
+	    int flags =3D cur_decl_spec_flags;
+
+	    /* If the typedef is a pointer type, then reset the short type
+	     * flags so it does not get promoted.
+	     */
+	    if (strcmp($1->text, $1->name) !=3D 0)
+		flags &=3D ~(DS_CHAR | DS_SHORT | DS_FLOAT);
+	    new_symbol(typedef_names, $1->name, NULL, flags);
+	    free_declarator($1);
+	}
+	| declarator_list ',' declarator
+	{
+	    int flags =3D cur_decl_spec_flags;
+
+	    if (strcmp($3->text, $3->name) !=3D 0)
+		flags &=3D ~(DS_CHAR | DS_SHORT | DS_FLOAT);
+	    new_symbol(typedef_names, $3->name, NULL, flags);
+	    free_declarator($3);
+	}
+	;
+
+function_definition
+	: decl_specifiers declarator
+	{
+	    check_untagged(&$1);
+	    if ($2->func_def =3D=3D FUNC_NONE) {
+		yyerror("syntax error");
+		YYERROR;
+	    }
+	    func_params =3D &($2->head->params);
+	    func_params->begin_comment =3D cur_file->begin_comment;
+	    func_params->end_comment =3D cur_file->end_comment;
+	}
+	  opt_declaration_list T_LBRACE
+	{
+	    /* If we're converting to K&R and we've got a nominally K&R
+	     * function which has a parameter which is ANSI (i.e., a prototyped
+	     * function pointer), then we must override the deciphered value of
+	     * 'func_def' so that the parameter will be converted.
+	     */
+	    if (func_style =3D=3D FUNC_TRADITIONAL
+	     && haveAnsiParam()
+	     && $2->head->func_def =3D=3D func_style) {
+		$2->head->func_def =3D FUNC_BOTH;
+	    }
+
+	    func_params =3D NULL;
+
+	    if (cur_file->convert)
+		gen_func_definition(&$1, $2);
+	    gen_prototype(&$1, $2);
+#if OPT_LINTLIBRARY
+	    flush_varargs();
+#endif
+	    free_decl_spec(&$1);
+	    free_declarator($2);
+	}
+	  T_MATCHRBRACE
+	| declarator
+	{
+	    if ($1->func_def =3D=3D FUNC_NONE) {
+		yyerror("syntax error");
+		YYERROR;
+	    }
+	    func_params =3D &($1->head->params);
+	    func_params->begin_comment =3D cur_file->begin_comment;
+	    func_params->end_comment =3D cur_file->end_comment;
+	}
+	  opt_declaration_list T_LBRACE T_MATCHRBRACE
+	{
+	    DeclSpec decl_spec;
+
+	    func_params =3D NULL;
+
+	    new_decl_spec(&decl_spec, dft_decl_spec(), $1->begin, DS_NONE);
+	    if (cur_file->convert)
+		gen_func_definition(&decl_spec, $1);
+	    gen_prototype(&decl_spec, $1);
+#if OPT_LINTLIBRARY
+	    flush_varargs();
+#endif
+	    free_decl_spec(&decl_spec);
+	    free_declarator($1);
+	}
+	;
+
+opt_declaration_list
+	: /* empty */
+	| T_VA_DCL
+	| declaration_list
+	;
+
+declaration_list
+	: declaration
+	| declaration_list declaration
+	;
+
+decl_specifiers
+	: decl_specifier
+	| decl_specifiers decl_specifier
+	{
+	    join_decl_specs(&$$, &$1, &$2);
+	    free($1.text);
+	    free($2.text);
+	}
+	;
+
+decl_specifier
+	: storage_class
+	| type_specifier
+	| type_qualifier
+	;
+
+storage_class
+	: T_AUTO
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_EXTERN
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_EXTERN);
+	}
+	| T_REGISTER
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_STATIC
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_STATIC);
+	}
+	| T_INLINE
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_INLINE);
+	}
+	| T_EXTENSION
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_JUNK);
+	}
+	;
+
+type_specifier
+	: T_CHAR
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_CHAR);
+	}
+	| T_DOUBLE
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_FLOAT
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_FLOAT);
+	}
+	| T_INT
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_LONG
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_SHORT
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_SHORT);
+	}
+	| T_SIGNED
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_UNSIGNED
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_VOID
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_Bool
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_CHAR);
+	}
+	| T_Complex
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_Imaginary
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_TYPEDEF_NAME
+	{
+	    Symbol *s;
+	    s =3D find_symbol(typedef_names, $1.text);
+	    if (s !=3D NULL)
+		new_decl_spec(&$$, $1.text, $1.begin, s->flags);
+	}
+	| struct_or_union_specifier
+	| enum_specifier
+	;
+
+type_qualifier
+	: T_TYPE_QUALIFIER
+	{
+	    new_decl_spec(&$$, $1.text, $1.begin, DS_NONE);
+	}
+	| T_DEFINE_NAME
+	{
+	    /* This rule allows the <pointer> nonterminal to scan #define
+	     * names as if they were type modifiers.
+	     */
+	    Symbol *s;
+	    s =3D find_symbol(define_names, $1.text);
+	    if (s !=3D NULL)
+		new_decl_spec(&$$, $1.text, $1.begin, s->flags);
+	}
+	;
+
+struct_or_union_specifier
+	: struct_or_union any_id braces
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+	        (void)sprintf(s =3D buf, "%s %s", $1.text, $2.text);
+	    new_decl_spec(&$$, s, $1.begin, DS_NONE);
+	}
+	| struct_or_union braces
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "%s {}", $1.text);
+	    new_decl_spec(&$$, s, $1.begin, DS_NONE);
+	}
+	| struct_or_union any_id
+	{
+	    (void)sprintf(buf, "%s %s", $1.text, $2.text);
+	    new_decl_spec(&$$, buf, $1.begin, DS_NONE);
+	}
+	;
+
+struct_or_union
+	: T_STRUCT
+	{
+	    imply_typedef($$.text);
+	}
+	| T_UNION
+	{
+	    imply_typedef($$.text);
+	}
+	;
+
+init_declarator_list
+	: init_declarator
+	{
+	    new_decl_list(&$$, $1);
+	}
+	| init_declarator_list ',' init_declarator
+	{
+	    add_decl_list(&$$, &$1, $3);
+	}
+	;
+
+init_declarator
+	: declarator
+	{
+	    if ($1->func_def !=3D FUNC_NONE && func_params =3D=3D NULL &&
+		func_style =3D=3D FUNC_TRADITIONAL && cur_file->convert) {
+		gen_func_declarator($1);
+		fputs(cur_text(), cur_file->tmp_file);
+	    }
+	    cur_declarator =3D $$;
+	}
+	| declarator '=3D'
+	{
+	    if ($1->func_def !=3D FUNC_NONE && func_params =3D=3D NULL &&
+		func_style =3D=3D FUNC_TRADITIONAL && cur_file->convert) {
+		gen_func_declarator($1);
+		fputs(" =3D", cur_file->tmp_file);
+	    }
+	}
+	  T_INITIALIZER
+	;
+
+enum_specifier
+	: enumeration any_id braces
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "enum %s", $2.text);
+	    new_decl_spec(&$$, s, $1.begin, DS_NONE);
+	}
+	| enumeration braces
+	{
+	    char *s;
+	    if ((s =3D implied_typedef()) =3D=3D 0)
+		(void)sprintf(s =3D buf, "%s {}", $1.text);
+	    new_decl_spec(&$$, s, $1.begin, DS_NONE);
+	}
+	| enumeration any_id
+	{
+	    (void)sprintf(buf, "enum %s", $2.text);
+	    new_decl_spec(&$$, buf, $1.begin, DS_NONE);
+	}
+	;
+
+enumeration
+	: T_ENUM
+	{
+	    imply_typedef("enum");
+	    $$ =3D $1;
+	}
+	;
+
+any_id
+	: T_IDENTIFIER
+	| T_TYPEDEF_NAME
+	;
+
+declarator
+	: pointer direct_declarator
+	{
+	    $$ =3D $2;
+	    (void)sprintf(buf, "%s%s", $1.text, $$->text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	    $$->begin =3D $1.begin;
+	    $$->pointer =3D TRUE;
+	}
+	| direct_declarator
+	;
+
+direct_declarator
+	: identifier_or_ref
+	{
+	    $$ =3D new_declarator($1.text, $1.text, $1.begin);
+	}
+	| '(' declarator ')'
+	{
+	    $$ =3D $2;
+	    (void)sprintf(buf, "(%s)", $$->text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	    $$->begin =3D $1.begin;
+	}
+	| direct_declarator T_BRACKETS
+	{
+	    $$ =3D $1;
+	    (void)sprintf(buf, "%s%s", $$->text, $2.text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	}
+	| direct_declarator '(' parameter_type_list ')'
+	{
+	    $$ =3D new_declarator("%s()", $1->name, $1->begin);
+	    $$->params =3D $3;
+	    $$->func_stack =3D $1;
+	    $$->head =3D ($1->func_stack =3D=3D NULL) ? $$ : $1->head;
+	    $$->func_def =3D FUNC_ANSI;
+	}
+	| direct_declarator '(' opt_identifier_list ')'
+	{
+	    $$ =3D new_declarator("%s()", $1->name, $1->begin);
+	    $$->params =3D $3;
+	    $$->func_stack =3D $1;
+	    $$->head =3D ($1->func_stack =3D=3D NULL) ? $$ : $1->head;
+	    $$->func_def =3D FUNC_TRADITIONAL;
+	}
+	;
+
+pointer
+	: '*' opt_type_qualifiers
+	{
+	    (void)sprintf($$.text, "*%s", $2.text);
+	    $$.begin =3D $1.begin;
+	}
+	| '*' opt_type_qualifiers pointer
+	{
+	    (void)sprintf($$.text, "*%s%s", $2.text, $3.text);
+	    $$.begin =3D $1.begin;
+	}
+	;
+
+opt_type_qualifiers
+	: /* empty */
+	{
+	    strcpy($$.text, "");
+	    $$.begin =3D 0L;
+	}
+	| type_qualifier_list
+	;
+
+type_qualifier_list
+	: type_qualifier
+	{
+	    (void)sprintf($$.text, "%s ", $1.text);
+	    $$.begin =3D $1.begin;
+	    free($1.text);
+	}
+	| type_qualifier_list type_qualifier
+	{
+	    (void)sprintf($$.text, "%s%s ", $1.text, $2.text);
+	    $$.begin =3D $1.begin;
+	    free($2.text);
+	}
+	;
+
+parameter_type_list
+	: parameter_list
+	| parameter_list ',' T_ELLIPSIS
+	{
+	    add_ident_list(&$$, &$1, "...");
+	}
+	;
+
+parameter_list
+	: parameter_declaration
+	{
+	    new_param_list(&$$, $1);
+	}
+	| parameter_list ',' parameter_declaration
+	{
+	    add_param_list(&$$, &$1, $3);
+	}
+	;
+
+parameter_declaration
+	: decl_specifiers declarator
+	{
+	    check_untagged(&$1);
+	    $$ =3D new_parameter(&$1, $2);
+	}
+	| decl_specifiers abs_declarator
+	{
+	    check_untagged(&$1);
+	    $$ =3D new_parameter(&$1, $2);
+	}
+	| decl_specifiers
+	{
+	    check_untagged(&$1);
+	    $$ =3D new_parameter(&$1, (Declarator *)0);
+	}
+	;
+
+opt_identifier_list
+	: /* empty */
+	{
+	    new_ident_list(&$$);
+	}
+	| identifier_list
+	;
+
+identifier_list
+	: any_id
+	{
+	    new_ident_list(&$$);
+	    add_ident_list(&$$, &$$, $1.text);
+	}
+	| identifier_list ',' any_id
+	{
+	    add_ident_list(&$$, &$1, $3.text);
+	}
+	;
+
+identifier_or_ref
+	: any_id
+	{
+	    $$ =3D $1;
+	}
+	| '&' any_id
+	{
+#if OPT_LINTLIBRARY
+	    if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
+		$$ =3D $2;
+	    } else
+#endif
+		(void)sprintf($$.text, "&%s", $2.text);
+	    $$.begin =3D $1.begin;
+	}
+	;
+
+abs_declarator
+	: pointer
+	{
+	    $$ =3D new_declarator($1.text, "", $1.begin);
+	}
+	| pointer direct_abs_declarator
+	{
+	    $$ =3D $2;
+	    (void)sprintf(buf, "%s%s", $1.text, $$->text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	    $$->begin =3D $1.begin;
+	}
+	| direct_abs_declarator
+	;
+
+direct_abs_declarator
+	: '(' abs_declarator ')'
+	{
+	    $$ =3D $2;
+	    (void)sprintf(buf, "(%s)", $$->text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	    $$->begin =3D $1.begin;
+	}
+	| direct_abs_declarator T_BRACKETS
+	{
+	    $$ =3D $1;
+	    (void)sprintf(buf, "%s%s", $$->text, $2.text);
+	    free($$->text);
+	    $$->text =3D xstrdup(buf);
+	}
+	| T_BRACKETS
+	{
+	    $$ =3D new_declarator($1.text, "", $1.begin);
+	}
+	| direct_abs_declarator '(' parameter_type_list ')'
+	{
+	    $$ =3D new_declarator("%s()", "", $1->begin);
+	    $$->params =3D $3;
+	    $$->func_stack =3D $1;
+	    $$->head =3D ($1->func_stack =3D=3D NULL) ? $$ : $1->head;
+	    $$->func_def =3D FUNC_ANSI;
+	}
+	| direct_abs_declarator '(' ')'
+	{
+	    $$ =3D new_declarator("%s()", "", $1->begin);
+	    $$->func_stack =3D $1;
+	    $$->head =3D ($1->func_stack =3D=3D NULL) ? $$ : $1->head;
+	    $$->func_def =3D FUNC_ANSI;
+	}
+	| '(' parameter_type_list ')'
+	{
+	    Declarator *d;
+
+	    d =3D new_declarator("", "", $1.begin);
+	    $$ =3D new_declarator("%s()", "", $1.begin);
+	    $$->params =3D $2;
+	    $$->func_stack =3D d;
+	    $$->head =3D $$;
+	    $$->func_def =3D FUNC_ANSI;
+	}
+	| '(' ')'
+	{
+	    Declarator *d;
+
+	    d =3D new_declarator("", "", $1.begin);
+	    $$ =3D new_declarator("%s()", "", $1.begin);
+	    $$->func_stack =3D d;
+	    $$->head =3D $$;
+	    $$->func_def =3D FUNC_ANSI;
+	}
+	;
+
+%%
+
+/* lex.yy.c */
+#define BEGIN yy_start =3D 1 + 2 *
+
+#define CPP1 1
+#define INIT1 2
+#define INIT2 3
+#define CURLY 4
+#define LEXYACC 5
+#define ASM 6
+#define CPP_INLINE 7
+
+extern char *yytext;
+extern FILE *yyin, *yyout;
+
+static int curly;			/* number of curly brace nesting levels */
+static int ly_count;			/* number of occurances of %% */
+static int inc_depth;			/* include nesting level */
+static SymbolTable *included_files;	/* files already included */
+static int yy_start =3D 0;		/* start state number */
+
+#define grammar_error(s) yaccError(s)
+
+static void
+yaccError (const char *msg)
+{
+    func_params =3D NULL;
+    put_error();		/* tell what line we're on, and what file */
+    fprintf(stderr, "%s at token '%s'\n", msg, yytext);
+}
+
+/* Initialize the table of type qualifier keywords recognized by the lexic=
al
+ * analyzer.
+ */
+void
+init_parser (void)
+{
+    static const char *keywords[] =3D {
+	"const",
+	"restrict",
+	"volatile",
+	"interrupt",
+#ifdef vms
+	"noshare",
+	"readonly",
+#endif
+#if defined(MSDOS) || defined(OS2)
+	"__cdecl",
+	"__export",
+	"__far",
+	"__fastcall",
+	"__fortran",
+	"__huge",
+	"__inline",
+	"__interrupt",
+	"__loadds",
+	"__near",
+	"__pascal",
+	"__saveregs",
+	"__segment",
+	"__stdcall",
+	"__syscall",
+	"_cdecl",
+	"_cs",
+	"_ds",
+	"_es",
+	"_export",
+	"_far",
+	"_fastcall",
+	"_fortran",
+	"_huge",
+	"_interrupt",
+	"_loadds",
+	"_near",
+	"_pascal",
+	"_saveregs",
+	"_seg",
+	"_segment",
+	"_ss",
+	"cdecl",
+	"far",
+	"huge",
+	"near",
+	"pascal",
+#ifdef OS2
+	"__far16",
+#endif
+#endif
+#ifdef __GNUC__
+	/* gcc aliases */
+	"__builtin_va_arg",
+	"__builtin_va_list",
+	"__const",
+	"__const__",
+	"__inline",
+	"__inline__",
+	"__restrict",
+	"__restrict__",
+	"__volatile",
+	"__volatile__",
+#endif
+    };
+    unsigned i;
+
+    /* Initialize type qualifier table. */
+    type_qualifiers =3D new_symbol_table();
+    for (i =3D 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
+	new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
+    }
+}
+
+/* Process the C source file.  Write function prototypes to the standard
+ * output.  Convert function definitions and write the converted source
+ * code to a temporary file.
+ */
+void
+process_file (FILE *infile, char *name)
+{
+    char *s;
+
+    if (strlen(name) > 2) {
+	s =3D name + strlen(name) - 2;
+	if (*s =3D=3D '.') {
+	    ++s;
+	    if (*s =3D=3D 'l' || *s =3D=3D 'y')
+		BEGIN LEXYACC;
+#if defined(MSDOS) || defined(OS2)
+	    if (*s =3D=3D 'L' || *s =3D=3D 'Y')
+		BEGIN LEXYACC;
+#endif
+	}
+    }
+
+    included_files =3D new_symbol_table();
+    typedef_names =3D new_symbol_table();
+    define_names =3D new_symbol_table();
+    inc_depth =3D -1;
+    curly =3D 0;
+    ly_count =3D 0;
+    func_params =3D NULL;
+    yyin =3D infile;
+    include_file(strcpy(base_file, name), func_style !=3D FUNC_NONE);
+    if (file_comments) {
+#if OPT_LINTLIBRARY
+    	if (lintLibrary()) {
+	    put_blankline(stdout);
+	    begin_tracking();
+	}
+#endif
+	put_string(stdout, "/* ");
+	put_string(stdout, cur_file_name());
+	put_string(stdout, " */\n");
+    }
+    yyparse();
+    free_symbol_table(define_names);
+    free_symbol_table(typedef_names);
+    free_symbol_table(included_files);
+}
+
+#ifdef NO_LEAKS
+void
+free_parser(void)
+{
+    free_symbol_table (type_qualifiers);
+#ifdef FLEX_SCANNER
+    if (yy_current_buffer !=3D 0)
+	yy_delete_buffer(yy_current_buffer);
+#endif
+}
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_calc.outp=
ut
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_calc.output	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,461 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr '+' expr
+   8       | expr '-' expr
+   9       | expr '*' expr
+  10       | expr '/' expr
+  11       | expr '%' expr
+  12       | expr '&' expr
+  13       | expr '|' expr
+  14       | '-' expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	DIGIT  shift 3
+	LETTER  shift 4
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 4
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 11
+	'|'  reduce 15
+	'&'  reduce 15
+	'+'  reduce 15
+	'-'  reduce 15
+	'*'  reduce 15
+	'/'  reduce 15
+	'%'  reduce 15
+	'\n'  reduce 15
+
+
+state 5
+	expr : '-' . expr  (14)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 13
+	number  goto 9
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	'|'  reduce 16
+	'&'  reduce 16
+	'+'  reduce 16
+	'-'  reduce 16
+	'*'  reduce 16
+	'/'  reduce 16
+	'%'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	stat : LETTER '=3D' . expr  (5)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 12
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+state 13
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : '-' expr .  (14)
+
+	.  reduce 14
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr '|' . expr  (13)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr '&' . expr  (12)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr '+' . expr  (7)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr '-' . expr  (8)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr '*' . expr  (9)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr '/' . expr  (10)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '%' . expr  (11)
+
+	DIGIT  shift 3
+	LETTER  shift 12
+	'-'  shift 5
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'|'  shift 16
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+state 26
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	'&'  shift 17
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+state 27
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr '&' expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	'+'  shift 18
+	'-'  shift 19
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 12
+	'&'  reduce 12
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+state 28
+	expr : expr . '+' expr  (7)
+	expr : expr '+' expr .  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 7
+	'&'  reduce 7
+	'+'  reduce 7
+	'-'  reduce 7
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+state 29
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr '-' expr .  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	'*'  shift 20
+	'/'  shift 21
+	'%'  shift 22
+	'|'  reduce 8
+	'&'  reduce 8
+	'+'  reduce 8
+	'-'  reduce 8
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+state 30
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr '*' expr .  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 9
+
+
+state 31
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr '/' expr .  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 10
+
+
+state 32
+	expr : expr . '+' expr  (7)
+	expr : expr . '-' expr  (8)
+	expr : expr . '*' expr  (9)
+	expr : expr . '/' expr  (10)
+	expr : expr . '%' expr  (11)
+	expr : expr '%' expr .  (11)
+	expr : expr . '&' expr  (12)
+	expr : expr . '|' expr  (13)
+
+	.  reduce 11
+
+
+16 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_calc.tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_calc.tab.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,687 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     calc_rule
+#endif /* yyrule */
+#define YYPREFIX "calc_"
+
+#define YYPURE 1
+
+#line 2 "pure_calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM &yylval
+#define YYLEX_DECL() yylex(YYSTYPE *yylval)
+#define YYERROR_DECL() yyerror(const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+#line 115 "pure_calc.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# ifdef YYLEX_PARAM_TYPE
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
+# else
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
+# endif
+# define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(YYSTYPE *yylval)
+# define YYLEX yylex(&yylval)
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
+#define YYERRCODE 256
+static const short calc_lhs[] =3D {                        -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short calc_len[] =3D {                         2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short calc_defred[] =3D {                      1,
+    0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
+    0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
+   10,   11,
+};
+static const short calc_dgoto[] =3D {                       1,
+    7,    8,    9,
+};
+static const short calc_sindex[] =3D {                      0,
+  -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
+  -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
+  -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
+    0,    0,
+};
+static const short calc_rindex[] =3D {                      0,
+    0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
+    0,    0,
+};
+static const short calc_gindex[] =3D {                      0,
+    0,   65,    0,
+};
+#define YYTABLESIZE 220
+static const short calc_table[] =3D {                       6,
+   16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
+   15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
+    0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
+    0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
+    0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
+    8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
+    0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
+   14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
+   26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
+    0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
+    0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
+    0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
+    0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
+    0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
+    0,    0,    0,    0,    0,   16,    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,    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,    2,    3,    4,    3,   12,
+};
+static const short calc_check[] =3D {                      40,
+   10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
+   10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
+   -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
+   -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
+   -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
+   38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
+   -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
+    6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+   16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
+   -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
+   -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 259
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr '+' expr",
+"expr : expr '-' expr",
+"expr : expr '*' expr",
+"expr : expr '/' expr",
+"expr : expr '%' expr",
+"expr : expr '&' expr",
+"expr : expr '|' expr",
+"expr : '-' expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+#line 72 "pure_calc.y"
+ /* start of programs */
+
+#ifdef YYBYACC
+static int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	*yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	*yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 354 "pure_calc.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int      yyerrflag;
+    int      yychar;
+    YYSTYPE  yyval;
+    YYSTYPE  yylval;
+
+    /* variables for the parser stack */
+    YYSTACKDATA yystack;
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 34 "pure_calc.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 38 "pure_calc.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 40 "pure_calc.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 44 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 46 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 48 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 50 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 52 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 54 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 56 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 58 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 60 "pure_calc.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 62 "pure_calc.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 67 "pure_calc.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 69 "pure_calc.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 627 "pure_calc.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_calc.tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_calc.tab.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,3 @@
+#define DIGIT 257
+#define LETTER 258
+#define UMINUS 259
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_calc.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_calc.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,116 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM &yylval
+#define YYLEX_DECL() yylex(YYSTYPE *yylval)
+#define YYERROR_DECL() yyerror(const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr '+' expr
+            {  $$ =3D $1 + $3; }
+      |  expr '-' expr
+            {  $$ =3D $1 - $3; }
+      |  expr '*' expr
+            {  $$ =3D $1 * $3; }
+      |  expr '/' expr
+            {  $$ =3D $1 / $3; }
+      |  expr '%' expr
+            {  $$ =3D $1 % $3; }
+      |  expr '&' expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  '-' expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+#ifdef YYBYACC
+static int YYLEX_DECL();
+#endif
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+YYERROR_DECL()
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+YYLEX_DECL()
+{
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	*yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	*yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_error.out=
put
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_error.output	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,27 @@
+   0  $accept : S $end
+
+   1  S : error
+=0C
+state 0
+	$accept : . S $end  (0)
+
+	error  shift 1
+	.  error
+
+	S  goto 2
+
+
+state 1
+	S : error .  (1)
+
+	.  reduce 1
+
+
+state 2
+	$accept : S . $end  (0)
+
+	$end  accept
+
+
+2 terminals, 2 nonterminals
+2 grammar rules, 3 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_error.tab=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_error.tab.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,517 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    error_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      error_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    error_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     error_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      error_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     error_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    error_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    error_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  error_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      error_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      error_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   error_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    error_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   error_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   error_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   error_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    error_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    error_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     error_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     error_rule
+#endif /* yyrule */
+#define YYPREFIX "error_"
+
+#define YYPURE 1
+
+#line 2 "pure_error.y"
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM &yylval
+#define YYLEX_DECL() yylex(YYSTYPE *yylval)
+#define YYERROR_DECL() yyerror(const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+#line 110 "pure_error.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# ifdef YYLEX_PARAM_TYPE
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
+# else
+#  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
+# endif
+# define YYLEX yylex(&yylval, YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(YYSTYPE *yylval)
+# define YYLEX yylex(&yylval)
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define YYERRCODE 256
+static const short error_lhs[] =3D {                       -1,
+    0,
+};
+static const short error_len[] =3D {                        2,
+    1,
+};
+static const short error_defred[] =3D {                     0,
+    1,    0,
+};
+static const short error_dgoto[] =3D {                      2,
+};
+static const short error_sindex[] =3D {                  -256,
+    0,    0,
+};
+static const short error_rindex[] =3D {                     0,
+    0,    0,
+};
+static const short error_gindex[] =3D {                     0,
+};
+#define YYTABLESIZE 0
+static const short error_table[] =3D {                      1,
+};
+static const short error_check[] =3D {                    256,
+};
+#define YYFINAL 2
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 0
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",
+};
+static const char *yyrule[] =3D {
+"$accept : S",
+"S : error",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+#line 17 "pure_error.y"
+
+#include <stdio.h>
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(YYSTYPE *value)
+{
+    return value ? 0 : -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
+#line 245 "pure_error.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int      yyerrflag;
+    int      yychar;
+    YYSTYPE  yyval;
+    YYSTYPE  yylval;
+
+    /* variables for the parser stack */
+    YYSTACKDATA yystack;
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/pure_error.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/pure_error.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,41 @@
+%{
+
+#ifdef YYBISON
+#define YYSTYPE int
+#define YYLEX_PARAM &yylval
+#define YYLEX_DECL() yylex(YYSTYPE *yylval)
+#define YYERROR_DECL() yyerror(const char *s)
+int YYLEX_DECL();
+static void YYERROR_DECL();
+#endif
+
+%}
+
+%%
+S: error
+%%
+
+#include <stdio.h>
+
+#ifdef YYBYACC
+extern int YYLEX_DECL();
+#endif
+
+int
+main(void)
+{
+    printf("yyparse() =3D %d\n", yyparse());
+    return 0;
+}
+
+int
+yylex(YYSTYPE *value)
+{
+    return value ? 0 : -1;
+}
+
+static void
+yyerror(const char* s)
+{
+    printf("%s\n", s);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc-s.o=
utput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc-s.output	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr OP_ADD expr
+   8       | expr OP_SUB expr
+   9       | expr OP_MUL expr
+  10       | expr OP_DIV expr
+  11       | expr OP_MOD expr
+  12       | expr OP_AND expr
+  13       | expr '|' expr
+  14       | OP_SUB expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : OP_SUB . expr  (14)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	OP_ADD  reduce 15
+	OP_SUB  reduce 15
+	OP_MUL  reduce 15
+	OP_DIV  reduce 15
+	OP_MOD  reduce 15
+	OP_AND  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	OP_ADD  reduce 16
+	OP_SUB  reduce 16
+	OP_MUL  reduce 16
+	OP_DIV  reduce 16
+	OP_MOD  reduce 16
+	OP_AND  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on OP_ADD
+12: shift/reduce conflict (shift 17, reduce 14) on OP_SUB
+12: shift/reduce conflict (shift 18, reduce 14) on OP_MUL
+12: shift/reduce conflict (shift 19, reduce 14) on OP_DIV
+12: shift/reduce conflict (shift 20, reduce 14) on OP_MOD
+12: shift/reduce conflict (shift 21, reduce 14) on OP_AND
+state 12
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : OP_SUB expr .  (14)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr OP_ADD . expr  (7)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr OP_SUB . expr  (8)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr OP_MUL . expr  (9)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr OP_DIV . expr  (10)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr OP_MOD . expr  (11)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr OP_AND . expr  (12)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on OP_ADD
+26: shift/reduce conflict (shift 17, reduce 7) on OP_SUB
+26: shift/reduce conflict (shift 18, reduce 7) on OP_MUL
+26: shift/reduce conflict (shift 19, reduce 7) on OP_DIV
+26: shift/reduce conflict (shift 20, reduce 7) on OP_MOD
+26: shift/reduce conflict (shift 21, reduce 7) on OP_AND
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . OP_ADD expr  (7)
+	expr : expr OP_ADD expr .  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on OP_ADD
+27: shift/reduce conflict (shift 17, reduce 8) on OP_SUB
+27: shift/reduce conflict (shift 18, reduce 8) on OP_MUL
+27: shift/reduce conflict (shift 19, reduce 8) on OP_DIV
+27: shift/reduce conflict (shift 20, reduce 8) on OP_MOD
+27: shift/reduce conflict (shift 21, reduce 8) on OP_AND
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr OP_SUB expr .  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on OP_ADD
+28: shift/reduce conflict (shift 17, reduce 9) on OP_SUB
+28: shift/reduce conflict (shift 18, reduce 9) on OP_MUL
+28: shift/reduce conflict (shift 19, reduce 9) on OP_DIV
+28: shift/reduce conflict (shift 20, reduce 9) on OP_MOD
+28: shift/reduce conflict (shift 21, reduce 9) on OP_AND
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr OP_MUL expr .  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on OP_ADD
+29: shift/reduce conflict (shift 17, reduce 10) on OP_SUB
+29: shift/reduce conflict (shift 18, reduce 10) on OP_MUL
+29: shift/reduce conflict (shift 19, reduce 10) on OP_DIV
+29: shift/reduce conflict (shift 20, reduce 10) on OP_MOD
+29: shift/reduce conflict (shift 21, reduce 10) on OP_AND
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr OP_DIV expr .  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on OP_ADD
+30: shift/reduce conflict (shift 17, reduce 11) on OP_SUB
+30: shift/reduce conflict (shift 18, reduce 11) on OP_MUL
+30: shift/reduce conflict (shift 19, reduce 11) on OP_DIV
+30: shift/reduce conflict (shift 20, reduce 11) on OP_MOD
+30: shift/reduce conflict (shift 21, reduce 11) on OP_AND
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr OP_MOD expr .  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on OP_ADD
+31: shift/reduce conflict (shift 17, reduce 12) on OP_SUB
+31: shift/reduce conflict (shift 18, reduce 12) on OP_MUL
+31: shift/reduce conflict (shift 19, reduce 12) on OP_DIV
+31: shift/reduce conflict (shift 20, reduce 12) on OP_MOD
+31: shift/reduce conflict (shift 21, reduce 12) on OP_AND
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr OP_AND expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on OP_ADD
+32: shift/reduce conflict (shift 17, reduce 13) on OP_SUB
+32: shift/reduce conflict (shift 18, reduce 13) on OP_MUL
+32: shift/reduce conflict (shift 19, reduce 13) on OP_DIV
+32: shift/reduce conflict (shift 20, reduce 13) on OP_MOD
+32: shift/reduce conflict (shift 21, reduce 13) on OP_AND
+state 32
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc-s.t=
ab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc-s.tab.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,687 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc-s.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc_lhs[] =3D {                  -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc_len[] =3D {                   2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc_defred[] =3D {                1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc_dgoto[] =3D {                 1,
+    7,    8,    9,
+};
+static const short quote_calc_sindex[] =3D {                0,
+  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
+    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc_rindex[] =3D {                0,
+    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc_gindex[] =3D {                0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 258
+static const short quote_calc_table[] =3D {                16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
+   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
+    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
+   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc_check[] =3D {                10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
+  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
+   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
+  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
+  261,  261,  263,  263,  265,  265,  267,  267,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_D=
IV",
+"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr OP_ADD expr",
+"expr : expr OP_SUB expr",
+"expr : expr OP_MUL expr",
+"expr : expr OP_DIV expr",
+"expr : expr OP_MOD expr",
+"expr : expr OP_AND expr",
+"expr : expr '|' expr",
+"expr : OP_SUB expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 361 "quote_calc-s.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 627 "quote_calc-s.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc-s.t=
ab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc-s.tab.h	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc.out=
put
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc.output	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr OP_ADD expr
+   8       | expr OP_SUB expr
+   9       | expr OP_MUL expr
+  10       | expr OP_DIV expr
+  11       | expr OP_MOD expr
+  12       | expr OP_AND expr
+  13       | expr '|' expr
+  14       | OP_SUB expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : OP_SUB . expr  (14)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	OP_ADD  reduce 15
+	OP_SUB  reduce 15
+	OP_MUL  reduce 15
+	OP_DIV  reduce 15
+	OP_MOD  reduce 15
+	OP_AND  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	OP_ADD  reduce 16
+	OP_SUB  reduce 16
+	OP_MUL  reduce 16
+	OP_DIV  reduce 16
+	OP_MOD  reduce 16
+	OP_AND  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on OP_ADD
+12: shift/reduce conflict (shift 17, reduce 14) on OP_SUB
+12: shift/reduce conflict (shift 18, reduce 14) on OP_MUL
+12: shift/reduce conflict (shift 19, reduce 14) on OP_DIV
+12: shift/reduce conflict (shift 20, reduce 14) on OP_MOD
+12: shift/reduce conflict (shift 21, reduce 14) on OP_AND
+state 12
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : OP_SUB expr .  (14)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr OP_ADD . expr  (7)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr OP_SUB . expr  (8)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr OP_MUL . expr  (9)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr OP_DIV . expr  (10)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr OP_MOD . expr  (11)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr OP_AND . expr  (12)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on OP_ADD
+26: shift/reduce conflict (shift 17, reduce 7) on OP_SUB
+26: shift/reduce conflict (shift 18, reduce 7) on OP_MUL
+26: shift/reduce conflict (shift 19, reduce 7) on OP_DIV
+26: shift/reduce conflict (shift 20, reduce 7) on OP_MOD
+26: shift/reduce conflict (shift 21, reduce 7) on OP_AND
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . OP_ADD expr  (7)
+	expr : expr OP_ADD expr .  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on OP_ADD
+27: shift/reduce conflict (shift 17, reduce 8) on OP_SUB
+27: shift/reduce conflict (shift 18, reduce 8) on OP_MUL
+27: shift/reduce conflict (shift 19, reduce 8) on OP_DIV
+27: shift/reduce conflict (shift 20, reduce 8) on OP_MOD
+27: shift/reduce conflict (shift 21, reduce 8) on OP_AND
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr OP_SUB expr .  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on OP_ADD
+28: shift/reduce conflict (shift 17, reduce 9) on OP_SUB
+28: shift/reduce conflict (shift 18, reduce 9) on OP_MUL
+28: shift/reduce conflict (shift 19, reduce 9) on OP_DIV
+28: shift/reduce conflict (shift 20, reduce 9) on OP_MOD
+28: shift/reduce conflict (shift 21, reduce 9) on OP_AND
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr OP_MUL expr .  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on OP_ADD
+29: shift/reduce conflict (shift 17, reduce 10) on OP_SUB
+29: shift/reduce conflict (shift 18, reduce 10) on OP_MUL
+29: shift/reduce conflict (shift 19, reduce 10) on OP_DIV
+29: shift/reduce conflict (shift 20, reduce 10) on OP_MOD
+29: shift/reduce conflict (shift 21, reduce 10) on OP_AND
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr OP_DIV expr .  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on OP_ADD
+30: shift/reduce conflict (shift 17, reduce 11) on OP_SUB
+30: shift/reduce conflict (shift 18, reduce 11) on OP_MUL
+30: shift/reduce conflict (shift 19, reduce 11) on OP_DIV
+30: shift/reduce conflict (shift 20, reduce 11) on OP_MOD
+30: shift/reduce conflict (shift 21, reduce 11) on OP_AND
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr OP_MOD expr .  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on OP_ADD
+31: shift/reduce conflict (shift 17, reduce 12) on OP_SUB
+31: shift/reduce conflict (shift 18, reduce 12) on OP_MUL
+31: shift/reduce conflict (shift 19, reduce 12) on OP_DIV
+31: shift/reduce conflict (shift 20, reduce 12) on OP_MOD
+31: shift/reduce conflict (shift 21, reduce 12) on OP_AND
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr OP_AND expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on OP_ADD
+32: shift/reduce conflict (shift 17, reduce 13) on OP_SUB
+32: shift/reduce conflict (shift 18, reduce 13) on OP_MUL
+32: shift/reduce conflict (shift 19, reduce 13) on OP_DIV
+32: shift/reduce conflict (shift 20, reduce 13) on OP_MOD
+32: shift/reduce conflict (shift 21, reduce 13) on OP_AND
+state 32
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc.tab=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc.tab.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,693 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define ADD 258
+#define OP_SUB 259
+#define SUB 260
+#define OP_MUL 261
+#define MUL 262
+#define OP_DIV 263
+#define DIV 264
+#define OP_MOD 265
+#define MOD 266
+#define OP_AND 267
+#define AND 268
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc_lhs[] =3D {                  -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc_len[] =3D {                   2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc_defred[] =3D {                1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc_dgoto[] =3D {                 1,
+    7,    8,    9,
+};
+static const short quote_calc_sindex[] =3D {                0,
+  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
+    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc_rindex[] =3D {                0,
+    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc_gindex[] =3D {                0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 258
+static const short quote_calc_table[] =3D {                16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
+   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
+    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
+   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc_check[] =3D {                10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
+  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
+   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
+  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
+  261,  261,  263,  263,  265,  265,  267,  267,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_D=
IV",
+"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr OP_ADD expr",
+"expr : expr OP_SUB expr",
+"expr : expr OP_MUL expr",
+"expr : expr OP_DIV expr",
+"expr : expr OP_MOD expr",
+"expr : expr OP_AND expr",
+"expr : expr '|' expr",
+"expr : OP_SUB expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 367 "quote_calc.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 633 "quote_calc.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc.tab=
.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc.tab.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,15 @@
+#define OP_ADD 257
+#define ADD 258
+#define OP_SUB 259
+#define SUB 260
+#define OP_MUL 261
+#define MUL 262
+#define OP_DIV 263
+#define DIV 264
+#define OP_MOD 265
+#define MOD 266
+#define OP_AND 267
+#define AND 268
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+%}
+
+%start list
+
+%token OP_ADD "ADD"
+%token OP_SUB "SUB"
+%token OP_MUL "MUL"
+%token OP_DIV "DIV"
+%token OP_MOD "MOD"
+%token OP_AND "AND"
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr OP_ADD expr
+            {  $$ =3D $1 + $3; }
+      |  expr OP_SUB expr
+            {  $$ =3D $1 - $3; }
+      |  expr OP_MUL expr
+            {  $$ =3D $1 * $3; }
+      |  expr OP_DIV expr
+            {  $$ =3D $1 / $3; }
+      |  expr OP_MOD expr
+            {  $$ =3D $1 % $3; }
+      |  expr OP_AND expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  OP_SUB expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2-s.=
output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2-s.output	Wed Jul 25 16:21:35 2012=
 +0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr "ADD" expr
+   8       | expr "SUB" expr
+   9       | expr "MUL" expr
+  10       | expr "DIV" expr
+  11       | expr "MOD" expr
+  12       | expr "AND" expr
+  13       | expr '|' expr
+  14       | "SUB" expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : "SUB" . expr  (14)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	"ADD"  reduce 15
+	"SUB"  reduce 15
+	"MUL"  reduce 15
+	"DIV"  reduce 15
+	"MOD"  reduce 15
+	"AND"  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	"ADD"  reduce 16
+	"SUB"  reduce 16
+	"MUL"  reduce 16
+	"DIV"  reduce 16
+	"MOD"  reduce 16
+	"AND"  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on "ADD"
+12: shift/reduce conflict (shift 17, reduce 14) on "SUB"
+12: shift/reduce conflict (shift 18, reduce 14) on "MUL"
+12: shift/reduce conflict (shift 19, reduce 14) on "DIV"
+12: shift/reduce conflict (shift 20, reduce 14) on "MOD"
+12: shift/reduce conflict (shift 21, reduce 14) on "AND"
+state 12
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : "SUB" expr .  (14)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr "ADD" . expr  (7)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr "SUB" . expr  (8)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr "MUL" . expr  (9)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr "DIV" . expr  (10)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr "MOD" . expr  (11)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr "AND" . expr  (12)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on "ADD"
+26: shift/reduce conflict (shift 17, reduce 7) on "SUB"
+26: shift/reduce conflict (shift 18, reduce 7) on "MUL"
+26: shift/reduce conflict (shift 19, reduce 7) on "DIV"
+26: shift/reduce conflict (shift 20, reduce 7) on "MOD"
+26: shift/reduce conflict (shift 21, reduce 7) on "AND"
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . "ADD" expr  (7)
+	expr : expr "ADD" expr .  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on "ADD"
+27: shift/reduce conflict (shift 17, reduce 8) on "SUB"
+27: shift/reduce conflict (shift 18, reduce 8) on "MUL"
+27: shift/reduce conflict (shift 19, reduce 8) on "DIV"
+27: shift/reduce conflict (shift 20, reduce 8) on "MOD"
+27: shift/reduce conflict (shift 21, reduce 8) on "AND"
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr "SUB" expr .  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on "ADD"
+28: shift/reduce conflict (shift 17, reduce 9) on "SUB"
+28: shift/reduce conflict (shift 18, reduce 9) on "MUL"
+28: shift/reduce conflict (shift 19, reduce 9) on "DIV"
+28: shift/reduce conflict (shift 20, reduce 9) on "MOD"
+28: shift/reduce conflict (shift 21, reduce 9) on "AND"
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr "MUL" expr .  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on "ADD"
+29: shift/reduce conflict (shift 17, reduce 10) on "SUB"
+29: shift/reduce conflict (shift 18, reduce 10) on "MUL"
+29: shift/reduce conflict (shift 19, reduce 10) on "DIV"
+29: shift/reduce conflict (shift 20, reduce 10) on "MOD"
+29: shift/reduce conflict (shift 21, reduce 10) on "AND"
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr "DIV" expr .  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on "ADD"
+30: shift/reduce conflict (shift 17, reduce 11) on "SUB"
+30: shift/reduce conflict (shift 18, reduce 11) on "MUL"
+30: shift/reduce conflict (shift 19, reduce 11) on "DIV"
+30: shift/reduce conflict (shift 20, reduce 11) on "MOD"
+30: shift/reduce conflict (shift 21, reduce 11) on "AND"
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr "MOD" expr .  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on "ADD"
+31: shift/reduce conflict (shift 17, reduce 12) on "SUB"
+31: shift/reduce conflict (shift 18, reduce 12) on "MUL"
+31: shift/reduce conflict (shift 19, reduce 12) on "DIV"
+31: shift/reduce conflict (shift 20, reduce 12) on "MOD"
+31: shift/reduce conflict (shift 21, reduce 12) on "AND"
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr "AND" expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on "ADD"
+32: shift/reduce conflict (shift 17, reduce 13) on "SUB"
+32: shift/reduce conflict (shift 18, reduce 13) on "MUL"
+32: shift/reduce conflict (shift 19, reduce 13) on "DIV"
+32: shift/reduce conflict (shift 20, reduce 13) on "MOD"
+32: shift/reduce conflict (shift 21, reduce 13) on "AND"
+state 32
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2-s.=
tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2-s.tab.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,687 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc2_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc2_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc2_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc2_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc2_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc2_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc2_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc2_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc2_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc2_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc2_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc2_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc2_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc2_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc2_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc2_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc2_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc2_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc2_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc2_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc2_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc2.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc2-s.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc2_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc2_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc2_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc2_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc2_sindex[] =3D {               0,
+  -38,    4,  -36,    0,  -51,  -36,    6, -121, -249,    0,
+    0, -243,  -36,  -23,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc2_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   12,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   14,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc2_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 259
+static const short quote_calc2_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   10,   16,   15,   17,   25,   18,   23,
+   19,    4,   20,    5,   21,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,
+   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   16,    0,   17,    0,
+   18,    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    0,    3,    0,    3,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,    0,   16,   15,   16,
+   15,   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc2_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,   10,  258,   10,  260,   41,  262,  269,
+  264,   10,  266,   10,  268,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  258,   -1,  260,   -1,
+  262,   -1,  264,   -1,  266,   -1,  268,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+   -1,  260,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  258,   -1,  260,   -1,  262,   -1,
+  264,   -1,  266,   -1,  268,   -1,   -1,  258,  258,  260,
+  260,  262,  262,  264,  264,  266,  266,  268,  268,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_D=
IV",
+"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr \"ADD\" expr",
+"expr : expr \"SUB\" expr",
+"expr : expr \"MUL\" expr",
+"expr : expr \"DIV\" expr",
+"expr : expr \"MOD\" expr",
+"expr : expr \"AND\" expr",
+"expr : expr '|' expr",
+"expr : \"SUB\" expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc2.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 361 "quote_calc2-s.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc2.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc2.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc2.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc2.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc2.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc2.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 627 "quote_calc2-s.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2-s.=
tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2-s.tab.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2.ou=
tput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2.output	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr "ADD" expr
+   8       | expr "SUB" expr
+   9       | expr "MUL" expr
+  10       | expr "DIV" expr
+  11       | expr "MOD" expr
+  12       | expr "AND" expr
+  13       | expr '|' expr
+  14       | "SUB" expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : "SUB" . expr  (14)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	"ADD"  reduce 15
+	"SUB"  reduce 15
+	"MUL"  reduce 15
+	"DIV"  reduce 15
+	"MOD"  reduce 15
+	"AND"  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	"ADD"  reduce 16
+	"SUB"  reduce 16
+	"MUL"  reduce 16
+	"DIV"  reduce 16
+	"MOD"  reduce 16
+	"AND"  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on "ADD"
+12: shift/reduce conflict (shift 17, reduce 14) on "SUB"
+12: shift/reduce conflict (shift 18, reduce 14) on "MUL"
+12: shift/reduce conflict (shift 19, reduce 14) on "DIV"
+12: shift/reduce conflict (shift 20, reduce 14) on "MOD"
+12: shift/reduce conflict (shift 21, reduce 14) on "AND"
+state 12
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : "SUB" expr .  (14)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr "ADD" . expr  (7)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr "SUB" . expr  (8)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr "MUL" . expr  (9)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr "DIV" . expr  (10)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr "MOD" . expr  (11)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr "AND" . expr  (12)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	"SUB"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on "ADD"
+26: shift/reduce conflict (shift 17, reduce 7) on "SUB"
+26: shift/reduce conflict (shift 18, reduce 7) on "MUL"
+26: shift/reduce conflict (shift 19, reduce 7) on "DIV"
+26: shift/reduce conflict (shift 20, reduce 7) on "MOD"
+26: shift/reduce conflict (shift 21, reduce 7) on "AND"
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . "ADD" expr  (7)
+	expr : expr "ADD" expr .  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on "ADD"
+27: shift/reduce conflict (shift 17, reduce 8) on "SUB"
+27: shift/reduce conflict (shift 18, reduce 8) on "MUL"
+27: shift/reduce conflict (shift 19, reduce 8) on "DIV"
+27: shift/reduce conflict (shift 20, reduce 8) on "MOD"
+27: shift/reduce conflict (shift 21, reduce 8) on "AND"
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr "SUB" expr .  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on "ADD"
+28: shift/reduce conflict (shift 17, reduce 9) on "SUB"
+28: shift/reduce conflict (shift 18, reduce 9) on "MUL"
+28: shift/reduce conflict (shift 19, reduce 9) on "DIV"
+28: shift/reduce conflict (shift 20, reduce 9) on "MOD"
+28: shift/reduce conflict (shift 21, reduce 9) on "AND"
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr "MUL" expr .  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on "ADD"
+29: shift/reduce conflict (shift 17, reduce 10) on "SUB"
+29: shift/reduce conflict (shift 18, reduce 10) on "MUL"
+29: shift/reduce conflict (shift 19, reduce 10) on "DIV"
+29: shift/reduce conflict (shift 20, reduce 10) on "MOD"
+29: shift/reduce conflict (shift 21, reduce 10) on "AND"
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr "DIV" expr .  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on "ADD"
+30: shift/reduce conflict (shift 17, reduce 11) on "SUB"
+30: shift/reduce conflict (shift 18, reduce 11) on "MUL"
+30: shift/reduce conflict (shift 19, reduce 11) on "DIV"
+30: shift/reduce conflict (shift 20, reduce 11) on "MOD"
+30: shift/reduce conflict (shift 21, reduce 11) on "AND"
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr "MOD" expr .  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on "ADD"
+31: shift/reduce conflict (shift 17, reduce 12) on "SUB"
+31: shift/reduce conflict (shift 18, reduce 12) on "MUL"
+31: shift/reduce conflict (shift 19, reduce 12) on "DIV"
+31: shift/reduce conflict (shift 20, reduce 12) on "MOD"
+31: shift/reduce conflict (shift 21, reduce 12) on "AND"
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr "AND" expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on "ADD"
+32: shift/reduce conflict (shift 17, reduce 13) on "SUB"
+32: shift/reduce conflict (shift 18, reduce 13) on "MUL"
+32: shift/reduce conflict (shift 19, reduce 13) on "DIV"
+32: shift/reduce conflict (shift 20, reduce 13) on "MOD"
+32: shift/reduce conflict (shift 21, reduce 13) on "AND"
+state 32
+	expr : expr . "ADD" expr  (7)
+	expr : expr . "SUB" expr  (8)
+	expr : expr . "MUL" expr  (9)
+	expr : expr . "DIV" expr  (10)
+	expr : expr . "MOD" expr  (11)
+	expr : expr . "AND" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	"ADD"  shift 16
+	"SUB"  shift 17
+	"MUL"  shift 18
+	"DIV"  shift 19
+	"MOD"  shift 20
+	"AND"  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2.ta=
b.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2.tab.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,693 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc2_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc2_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc2_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc2_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc2_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc2_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc2_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc2_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc2_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc2_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc2_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc2_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc2_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc2_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc2_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc2_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc2_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc2_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc2_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc2_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc2_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc2.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc2.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define ADD 258
+#define OP_SUB 259
+#define SUB 260
+#define OP_MUL 261
+#define MUL 262
+#define OP_DIV 263
+#define DIV 264
+#define OP_MOD 265
+#define MOD 266
+#define OP_AND 267
+#define AND 268
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc2_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc2_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc2_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc2_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc2_sindex[] =3D {               0,
+  -38,    4,  -36,    0,  -51,  -36,    6, -121, -249,    0,
+    0, -243,  -36,  -23,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc2_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   12,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   14,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc2_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 259
+static const short quote_calc2_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   10,   16,   15,   17,   25,   18,   23,
+   19,    4,   20,    5,   21,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,
+   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   16,    0,   17,    0,
+   18,    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    0,    3,    0,    3,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,    0,   16,   15,   16,
+   15,   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc2_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,   10,  258,   10,  260,   41,  262,  269,
+  264,   10,  266,   10,  268,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  258,   -1,  260,   -1,
+  262,   -1,  264,   -1,  266,   -1,  268,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+   -1,  260,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  258,   -1,  260,   -1,  262,   -1,
+  264,   -1,  266,   -1,  268,   -1,   -1,  258,  258,  260,
+  260,  262,  262,  264,  264,  266,  266,  268,  268,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD\"","OP_SUB","\"SUB\"","OP_MUL","\"MUL\"","OP_D=
IV",
+"\"DIV\"","OP_MOD","\"MOD\"","OP_AND","\"AND\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr \"ADD\" expr",
+"expr : expr \"SUB\" expr",
+"expr : expr \"MUL\" expr",
+"expr : expr \"DIV\" expr",
+"expr : expr \"MOD\" expr",
+"expr : expr \"AND\" expr",
+"expr : expr '|' expr",
+"expr : \"SUB\" expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc2.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 367 "quote_calc2.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc2.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc2.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc2.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc2.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc2.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc2.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc2.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 633 "quote_calc2.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2.ta=
b.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2.tab.h	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,15 @@
+#define OP_ADD 257
+#define ADD 258
+#define OP_SUB 259
+#define SUB 260
+#define OP_MUL 261
+#define MUL 262
+#define OP_DIV 263
+#define DIV 264
+#define OP_MOD 265
+#define MOD 266
+#define OP_AND 267
+#define AND 268
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc2.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc2.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+%}
+
+%start list
+
+%token OP_ADD "ADD"
+%token OP_SUB "SUB"
+%token OP_MUL "MUL"
+%token OP_DIV "DIV"
+%token OP_MOD "MOD"
+%token OP_AND "AND"
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr "ADD" expr
+            {  $$ =3D $1 + $3; }
+      |  expr "SUB" expr
+            {  $$ =3D $1 - $3; }
+      |  expr "MUL" expr
+            {  $$ =3D $1 * $3; }
+      |  expr "DIV" expr
+            {  $$ =3D $1 / $3; }
+      |  expr "MOD" expr
+            {  $$ =3D $1 % $3; }
+      |  expr "AND" expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  "SUB" expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3-s.=
output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3-s.output	Wed Jul 25 16:21:35 2012=
 +0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr OP_ADD expr
+   8       | expr OP_SUB expr
+   9       | expr OP_MUL expr
+  10       | expr OP_DIV expr
+  11       | expr OP_MOD expr
+  12       | expr OP_AND expr
+  13       | expr '|' expr
+  14       | OP_SUB expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : OP_SUB . expr  (14)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	OP_ADD  reduce 15
+	OP_SUB  reduce 15
+	OP_MUL  reduce 15
+	OP_DIV  reduce 15
+	OP_MOD  reduce 15
+	OP_AND  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	OP_ADD  reduce 16
+	OP_SUB  reduce 16
+	OP_MUL  reduce 16
+	OP_DIV  reduce 16
+	OP_MOD  reduce 16
+	OP_AND  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on OP_ADD
+12: shift/reduce conflict (shift 17, reduce 14) on OP_SUB
+12: shift/reduce conflict (shift 18, reduce 14) on OP_MUL
+12: shift/reduce conflict (shift 19, reduce 14) on OP_DIV
+12: shift/reduce conflict (shift 20, reduce 14) on OP_MOD
+12: shift/reduce conflict (shift 21, reduce 14) on OP_AND
+state 12
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : OP_SUB expr .  (14)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr OP_ADD . expr  (7)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr OP_SUB . expr  (8)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr OP_MUL . expr  (9)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr OP_DIV . expr  (10)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr OP_MOD . expr  (11)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr OP_AND . expr  (12)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on OP_ADD
+26: shift/reduce conflict (shift 17, reduce 7) on OP_SUB
+26: shift/reduce conflict (shift 18, reduce 7) on OP_MUL
+26: shift/reduce conflict (shift 19, reduce 7) on OP_DIV
+26: shift/reduce conflict (shift 20, reduce 7) on OP_MOD
+26: shift/reduce conflict (shift 21, reduce 7) on OP_AND
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . OP_ADD expr  (7)
+	expr : expr OP_ADD expr .  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on OP_ADD
+27: shift/reduce conflict (shift 17, reduce 8) on OP_SUB
+27: shift/reduce conflict (shift 18, reduce 8) on OP_MUL
+27: shift/reduce conflict (shift 19, reduce 8) on OP_DIV
+27: shift/reduce conflict (shift 20, reduce 8) on OP_MOD
+27: shift/reduce conflict (shift 21, reduce 8) on OP_AND
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr OP_SUB expr .  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on OP_ADD
+28: shift/reduce conflict (shift 17, reduce 9) on OP_SUB
+28: shift/reduce conflict (shift 18, reduce 9) on OP_MUL
+28: shift/reduce conflict (shift 19, reduce 9) on OP_DIV
+28: shift/reduce conflict (shift 20, reduce 9) on OP_MOD
+28: shift/reduce conflict (shift 21, reduce 9) on OP_AND
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr OP_MUL expr .  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on OP_ADD
+29: shift/reduce conflict (shift 17, reduce 10) on OP_SUB
+29: shift/reduce conflict (shift 18, reduce 10) on OP_MUL
+29: shift/reduce conflict (shift 19, reduce 10) on OP_DIV
+29: shift/reduce conflict (shift 20, reduce 10) on OP_MOD
+29: shift/reduce conflict (shift 21, reduce 10) on OP_AND
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr OP_DIV expr .  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on OP_ADD
+30: shift/reduce conflict (shift 17, reduce 11) on OP_SUB
+30: shift/reduce conflict (shift 18, reduce 11) on OP_MUL
+30: shift/reduce conflict (shift 19, reduce 11) on OP_DIV
+30: shift/reduce conflict (shift 20, reduce 11) on OP_MOD
+30: shift/reduce conflict (shift 21, reduce 11) on OP_AND
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr OP_MOD expr .  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on OP_ADD
+31: shift/reduce conflict (shift 17, reduce 12) on OP_SUB
+31: shift/reduce conflict (shift 18, reduce 12) on OP_MUL
+31: shift/reduce conflict (shift 19, reduce 12) on OP_DIV
+31: shift/reduce conflict (shift 20, reduce 12) on OP_MOD
+31: shift/reduce conflict (shift 21, reduce 12) on OP_AND
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr OP_AND expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on OP_ADD
+32: shift/reduce conflict (shift 17, reduce 13) on OP_SUB
+32: shift/reduce conflict (shift 18, reduce 13) on OP_MUL
+32: shift/reduce conflict (shift 19, reduce 13) on OP_DIV
+32: shift/reduce conflict (shift 20, reduce 13) on OP_MOD
+32: shift/reduce conflict (shift 21, reduce 13) on OP_AND
+state 32
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3-s.=
tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3-s.tab.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,688 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc3_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc3_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc3_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc3_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc3_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc3_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc3_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc3_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc3_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc3_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc3_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc3_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc3_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc3_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc3_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc3_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc3_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc3_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc3_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc3_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc3_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc3.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc3-s.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc3_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc3_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc3_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc3_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc3_sindex[] =3D {               0,
+  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
+    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc3_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc3_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 258
+static const short quote_calc3_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
+   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
+    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
+   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc3_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
+  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
+   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
+  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
+  261,  261,  263,  263,  265,  265,  267,  267,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MU=
L",
+"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"",
+"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr OP_ADD expr",
+"expr : expr OP_SUB expr",
+"expr : expr OP_MUL expr",
+"expr : expr OP_DIV expr",
+"expr : expr OP_MOD expr",
+"expr : expr OP_AND expr",
+"expr : expr '|' expr",
+"expr : OP_SUB expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc3.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 362 "quote_calc3-s.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc3.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc3.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc3.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc3.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc3.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc3.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 628 "quote_calc3-s.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3-s.=
tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3-s.tab.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3.ou=
tput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3.output	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr OP_ADD expr
+   8       | expr OP_SUB expr
+   9       | expr OP_MUL expr
+  10       | expr OP_DIV expr
+  11       | expr OP_MOD expr
+  12       | expr OP_AND expr
+  13       | expr '|' expr
+  14       | OP_SUB expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : OP_SUB . expr  (14)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	OP_ADD  reduce 15
+	OP_SUB  reduce 15
+	OP_MUL  reduce 15
+	OP_DIV  reduce 15
+	OP_MOD  reduce 15
+	OP_AND  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	OP_ADD  reduce 16
+	OP_SUB  reduce 16
+	OP_MUL  reduce 16
+	OP_DIV  reduce 16
+	OP_MOD  reduce 16
+	OP_AND  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on OP_ADD
+12: shift/reduce conflict (shift 17, reduce 14) on OP_SUB
+12: shift/reduce conflict (shift 18, reduce 14) on OP_MUL
+12: shift/reduce conflict (shift 19, reduce 14) on OP_DIV
+12: shift/reduce conflict (shift 20, reduce 14) on OP_MOD
+12: shift/reduce conflict (shift 21, reduce 14) on OP_AND
+state 12
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : OP_SUB expr .  (14)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr OP_ADD . expr  (7)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr OP_SUB . expr  (8)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr OP_MUL . expr  (9)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr OP_DIV . expr  (10)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr OP_MOD . expr  (11)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr OP_AND . expr  (12)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	OP_SUB  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on OP_ADD
+26: shift/reduce conflict (shift 17, reduce 7) on OP_SUB
+26: shift/reduce conflict (shift 18, reduce 7) on OP_MUL
+26: shift/reduce conflict (shift 19, reduce 7) on OP_DIV
+26: shift/reduce conflict (shift 20, reduce 7) on OP_MOD
+26: shift/reduce conflict (shift 21, reduce 7) on OP_AND
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . OP_ADD expr  (7)
+	expr : expr OP_ADD expr .  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on OP_ADD
+27: shift/reduce conflict (shift 17, reduce 8) on OP_SUB
+27: shift/reduce conflict (shift 18, reduce 8) on OP_MUL
+27: shift/reduce conflict (shift 19, reduce 8) on OP_DIV
+27: shift/reduce conflict (shift 20, reduce 8) on OP_MOD
+27: shift/reduce conflict (shift 21, reduce 8) on OP_AND
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr OP_SUB expr .  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on OP_ADD
+28: shift/reduce conflict (shift 17, reduce 9) on OP_SUB
+28: shift/reduce conflict (shift 18, reduce 9) on OP_MUL
+28: shift/reduce conflict (shift 19, reduce 9) on OP_DIV
+28: shift/reduce conflict (shift 20, reduce 9) on OP_MOD
+28: shift/reduce conflict (shift 21, reduce 9) on OP_AND
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr OP_MUL expr .  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on OP_ADD
+29: shift/reduce conflict (shift 17, reduce 10) on OP_SUB
+29: shift/reduce conflict (shift 18, reduce 10) on OP_MUL
+29: shift/reduce conflict (shift 19, reduce 10) on OP_DIV
+29: shift/reduce conflict (shift 20, reduce 10) on OP_MOD
+29: shift/reduce conflict (shift 21, reduce 10) on OP_AND
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr OP_DIV expr .  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on OP_ADD
+30: shift/reduce conflict (shift 17, reduce 11) on OP_SUB
+30: shift/reduce conflict (shift 18, reduce 11) on OP_MUL
+30: shift/reduce conflict (shift 19, reduce 11) on OP_DIV
+30: shift/reduce conflict (shift 20, reduce 11) on OP_MOD
+30: shift/reduce conflict (shift 21, reduce 11) on OP_AND
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr OP_MOD expr .  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on OP_ADD
+31: shift/reduce conflict (shift 17, reduce 12) on OP_SUB
+31: shift/reduce conflict (shift 18, reduce 12) on OP_MUL
+31: shift/reduce conflict (shift 19, reduce 12) on OP_DIV
+31: shift/reduce conflict (shift 20, reduce 12) on OP_MOD
+31: shift/reduce conflict (shift 21, reduce 12) on OP_AND
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr OP_AND expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on OP_ADD
+32: shift/reduce conflict (shift 17, reduce 13) on OP_SUB
+32: shift/reduce conflict (shift 18, reduce 13) on OP_MUL
+32: shift/reduce conflict (shift 19, reduce 13) on OP_DIV
+32: shift/reduce conflict (shift 20, reduce 13) on OP_MOD
+32: shift/reduce conflict (shift 21, reduce 13) on OP_AND
+state 32
+	expr : expr . OP_ADD expr  (7)
+	expr : expr . OP_SUB expr  (8)
+	expr : expr . OP_MUL expr  (9)
+	expr : expr . OP_DIV expr  (10)
+	expr : expr . OP_MOD expr  (11)
+	expr : expr . OP_AND expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	OP_ADD  shift 16
+	OP_SUB  shift 17
+	OP_MUL  shift 18
+	OP_DIV  shift 19
+	OP_MOD  shift 20
+	OP_AND  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3.ta=
b.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3.tab.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,688 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc3_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc3_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc3_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc3_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc3_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc3_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc3_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc3_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc3_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc3_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc3_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc3_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc3_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc3_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc3_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc3_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc3_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc3_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc3_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc3_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc3_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc3.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc3.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc3_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc3_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc3_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc3_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc3_sindex[] =3D {               0,
+  -38,    5,  -36,    0,  -51,  -36,    7, -121, -248,    0,
+    0, -243,  -36,  -22,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc3_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   13,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   15,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc3_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 258
+static const short quote_calc3_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   16,   10,   17,   15,   18,   25,   19,
+   23,   20,    4,   21,    5,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   16,    0,   17,    0,   18,
+    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    3,    0,    3,    0,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,   16,   15,   16,   15,
+   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc3_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,  257,   10,  259,   10,  261,   41,  263,
+  269,  265,   10,  267,   10,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  257,   -1,  259,   -1,  261,
+   -1,  263,   -1,  265,   -1,  267,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+  259,   -1,  259,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  257,   -1,  259,   -1,  261,   -1,
+  263,   -1,  265,   -1,  267,   -1,  257,  257,  259,  259,
+  261,  261,  263,  263,  265,  265,  267,  267,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MU=
L",
+"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"",
+"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr OP_ADD expr",
+"expr : expr OP_SUB expr",
+"expr : expr OP_MUL expr",
+"expr : expr OP_DIV expr",
+"expr : expr OP_MOD expr",
+"expr : expr OP_AND expr",
+"expr : expr '|' expr",
+"expr : OP_SUB expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc3.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 362 "quote_calc3.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc3.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc3.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc3.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc3.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc3.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc3.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc3.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 628 "quote_calc3.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3.ta=
b.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3.tab.h	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc3.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc3.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+%}
+
+%start list
+
+%token OP_ADD "ADD-operator"
+%token OP_SUB "SUB-operator"
+%token OP_MUL "MUL-operator"
+%token OP_DIV "DIV-operator"
+%token OP_MOD "MOD-operator"
+%token OP_AND "AND-operator"
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr OP_ADD expr
+            {  $$ =3D $1 + $3; }
+      |  expr OP_SUB expr
+            {  $$ =3D $1 - $3; }
+      |  expr OP_MUL expr
+            {  $$ =3D $1 * $3; }
+      |  expr OP_DIV expr
+            {  $$ =3D $1 / $3; }
+      |  expr OP_MOD expr
+            {  $$ =3D $1 % $3; }
+      |  expr OP_AND expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  OP_SUB expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4-s.=
output
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4-s.output	Wed Jul 25 16:21:35 2012=
 +0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr "ADD-operator" expr
+   8       | expr "SUB-operator" expr
+   9       | expr "MUL-operator" expr
+  10       | expr "DIV-operator" expr
+  11       | expr "MOD-operator" expr
+  12       | expr "AND-operator" expr
+  13       | expr '|' expr
+  14       | "SUB-operator" expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : "SUB-operator" . expr  (14)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	"ADD-operator"  reduce 15
+	"SUB-operator"  reduce 15
+	"MUL-operator"  reduce 15
+	"DIV-operator"  reduce 15
+	"MOD-operator"  reduce 15
+	"AND-operator"  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	"ADD-operator"  reduce 16
+	"SUB-operator"  reduce 16
+	"MUL-operator"  reduce 16
+	"DIV-operator"  reduce 16
+	"MOD-operator"  reduce 16
+	"AND-operator"  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on "ADD-operator"
+12: shift/reduce conflict (shift 17, reduce 14) on "SUB-operator"
+12: shift/reduce conflict (shift 18, reduce 14) on "MUL-operator"
+12: shift/reduce conflict (shift 19, reduce 14) on "DIV-operator"
+12: shift/reduce conflict (shift 20, reduce 14) on "MOD-operator"
+12: shift/reduce conflict (shift 21, reduce 14) on "AND-operator"
+state 12
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : "SUB-operator" expr .  (14)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr "ADD-operator" . expr  (7)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr "SUB-operator" . expr  (8)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr "MUL-operator" . expr  (9)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr "DIV-operator" . expr  (10)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr "MOD-operator" . expr  (11)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr "AND-operator" . expr  (12)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on "ADD-operator"
+26: shift/reduce conflict (shift 17, reduce 7) on "SUB-operator"
+26: shift/reduce conflict (shift 18, reduce 7) on "MUL-operator"
+26: shift/reduce conflict (shift 19, reduce 7) on "DIV-operator"
+26: shift/reduce conflict (shift 20, reduce 7) on "MOD-operator"
+26: shift/reduce conflict (shift 21, reduce 7) on "AND-operator"
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr "ADD-operator" expr .  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on "ADD-operator"
+27: shift/reduce conflict (shift 17, reduce 8) on "SUB-operator"
+27: shift/reduce conflict (shift 18, reduce 8) on "MUL-operator"
+27: shift/reduce conflict (shift 19, reduce 8) on "DIV-operator"
+27: shift/reduce conflict (shift 20, reduce 8) on "MOD-operator"
+27: shift/reduce conflict (shift 21, reduce 8) on "AND-operator"
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr "SUB-operator" expr .  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on "ADD-operator"
+28: shift/reduce conflict (shift 17, reduce 9) on "SUB-operator"
+28: shift/reduce conflict (shift 18, reduce 9) on "MUL-operator"
+28: shift/reduce conflict (shift 19, reduce 9) on "DIV-operator"
+28: shift/reduce conflict (shift 20, reduce 9) on "MOD-operator"
+28: shift/reduce conflict (shift 21, reduce 9) on "AND-operator"
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr "MUL-operator" expr .  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on "ADD-operator"
+29: shift/reduce conflict (shift 17, reduce 10) on "SUB-operator"
+29: shift/reduce conflict (shift 18, reduce 10) on "MUL-operator"
+29: shift/reduce conflict (shift 19, reduce 10) on "DIV-operator"
+29: shift/reduce conflict (shift 20, reduce 10) on "MOD-operator"
+29: shift/reduce conflict (shift 21, reduce 10) on "AND-operator"
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr "DIV-operator" expr .  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on "ADD-operator"
+30: shift/reduce conflict (shift 17, reduce 11) on "SUB-operator"
+30: shift/reduce conflict (shift 18, reduce 11) on "MUL-operator"
+30: shift/reduce conflict (shift 19, reduce 11) on "DIV-operator"
+30: shift/reduce conflict (shift 20, reduce 11) on "MOD-operator"
+30: shift/reduce conflict (shift 21, reduce 11) on "AND-operator"
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr "MOD-operator" expr .  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on "ADD-operator"
+31: shift/reduce conflict (shift 17, reduce 12) on "SUB-operator"
+31: shift/reduce conflict (shift 18, reduce 12) on "MUL-operator"
+31: shift/reduce conflict (shift 19, reduce 12) on "DIV-operator"
+31: shift/reduce conflict (shift 20, reduce 12) on "MOD-operator"
+31: shift/reduce conflict (shift 21, reduce 12) on "AND-operator"
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr "AND-operator" expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on "ADD-operator"
+32: shift/reduce conflict (shift 17, reduce 13) on "SUB-operator"
+32: shift/reduce conflict (shift 18, reduce 13) on "MUL-operator"
+32: shift/reduce conflict (shift 19, reduce 13) on "DIV-operator"
+32: shift/reduce conflict (shift 20, reduce 13) on "MOD-operator"
+32: shift/reduce conflict (shift 21, reduce 13) on "AND-operator"
+state 32
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4-s.=
tab.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4-s.tab.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,688 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc4_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc4_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc4_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc4_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc4_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc4_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc4_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc4_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc4_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc4_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc4_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc4_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc4_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc4_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc4_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc4_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc4_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc4_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc4_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc4_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc4_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc4.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc4-s.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc4_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc4_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc4_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc4_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc4_sindex[] =3D {               0,
+  -38,    4,  -36,    0,  -51,  -36,    6, -121, -249,    0,
+    0, -243,  -36,  -23,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc4_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   12,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   14,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc4_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 259
+static const short quote_calc4_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   10,   16,   15,   17,   25,   18,   23,
+   19,    4,   20,    5,   21,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,
+   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   16,    0,   17,    0,
+   18,    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    0,    3,    0,    3,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,    0,   16,   15,   16,
+   15,   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc4_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,   10,  258,   10,  260,   41,  262,  269,
+  264,   10,  266,   10,  268,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  258,   -1,  260,   -1,
+  262,   -1,  264,   -1,  266,   -1,  268,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+   -1,  260,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  258,   -1,  260,   -1,  262,   -1,
+  264,   -1,  266,   -1,  268,   -1,   -1,  258,  258,  260,
+  260,  262,  262,  264,  264,  266,  266,  268,  268,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MU=
L",
+"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"",
+"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr \"ADD-operator\" expr",
+"expr : expr \"SUB-operator\" expr",
+"expr : expr \"MUL-operator\" expr",
+"expr : expr \"DIV-operator\" expr",
+"expr : expr \"MOD-operator\" expr",
+"expr : expr \"AND-operator\" expr",
+"expr : expr '|' expr",
+"expr : \"SUB-operator\" expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc4.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 362 "quote_calc4-s.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc4.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc4.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc4.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc4.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc4.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc4.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 628 "quote_calc4-s.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4-s.=
tab.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4-s.tab.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4.ou=
tput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4.output	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,557 @@
+   0  $accept : list $end
+
+   1  list :
+   2       | list stat '\n'
+   3       | list error '\n'
+
+   4  stat : expr
+   5       | LETTER '=3D' expr
+
+   6  expr : '(' expr ')'
+   7       | expr "ADD-operator" expr
+   8       | expr "SUB-operator" expr
+   9       | expr "MUL-operator" expr
+  10       | expr "DIV-operator" expr
+  11       | expr "MOD-operator" expr
+  12       | expr "AND-operator" expr
+  13       | expr '|' expr
+  14       | "SUB-operator" expr
+  15       | LETTER
+  16       | number
+
+  17  number : DIGIT
+  18         | number DIGIT
+=0C
+state 0
+	$accept : . list $end  (0)
+	list : .  (1)
+
+	.  reduce 1
+
+	list  goto 1
+
+
+state 1
+	$accept : list . $end  (0)
+	list : list . stat '\n'  (2)
+	list : list . error '\n'  (3)
+
+	$end  accept
+	error  shift 2
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 5
+	'('  shift 6
+	.  error
+
+	stat  goto 7
+	expr  goto 8
+	number  goto 9
+
+
+state 2
+	list : list error . '\n'  (3)
+
+	'\n'  shift 10
+	.  error
+
+
+state 3
+	expr : "SUB-operator" . expr  (14)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 12
+	number  goto 9
+
+
+state 4
+	number : DIGIT .  (17)
+
+	.  reduce 17
+
+
+state 5
+	stat : LETTER . '=3D' expr  (5)
+	expr : LETTER .  (15)
+
+	'=3D'  shift 13
+	"ADD-operator"  reduce 15
+	"SUB-operator"  reduce 15
+	"MUL-operator"  reduce 15
+	"DIV-operator"  reduce 15
+	"MOD-operator"  reduce 15
+	"AND-operator"  reduce 15
+	'|'  reduce 15
+	'\n'  reduce 15
+
+
+state 6
+	expr : '(' . expr ')'  (6)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 14
+	number  goto 9
+
+
+state 7
+	list : list stat . '\n'  (2)
+
+	'\n'  shift 15
+	.  error
+
+
+state 8
+	stat : expr .  (4)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 4
+
+
+state 9
+	expr : number .  (16)
+	number : number . DIGIT  (18)
+
+	DIGIT  shift 23
+	"ADD-operator"  reduce 16
+	"SUB-operator"  reduce 16
+	"MUL-operator"  reduce 16
+	"DIV-operator"  reduce 16
+	"MOD-operator"  reduce 16
+	"AND-operator"  reduce 16
+	'|'  reduce 16
+	'\n'  reduce 16
+	')'  reduce 16
+
+
+state 10
+	list : list error '\n' .  (3)
+
+	.  reduce 3
+
+
+state 11
+	expr : LETTER .  (15)
+
+	.  reduce 15
+
+
+12: shift/reduce conflict (shift 16, reduce 14) on "ADD-operator"
+12: shift/reduce conflict (shift 17, reduce 14) on "SUB-operator"
+12: shift/reduce conflict (shift 18, reduce 14) on "MUL-operator"
+12: shift/reduce conflict (shift 19, reduce 14) on "DIV-operator"
+12: shift/reduce conflict (shift 20, reduce 14) on "MOD-operator"
+12: shift/reduce conflict (shift 21, reduce 14) on "AND-operator"
+state 12
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : "SUB-operator" expr .  (14)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  reduce 14
+	'\n'  reduce 14
+	')'  reduce 14
+
+
+state 13
+	stat : LETTER '=3D' . expr  (5)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 24
+	number  goto 9
+
+
+state 14
+	expr : '(' expr . ')'  (6)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	')'  shift 25
+	.  error
+
+
+state 15
+	list : list stat '\n' .  (2)
+
+	.  reduce 2
+
+
+state 16
+	expr : expr "ADD-operator" . expr  (7)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 26
+	number  goto 9
+
+
+state 17
+	expr : expr "SUB-operator" . expr  (8)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 27
+	number  goto 9
+
+
+state 18
+	expr : expr "MUL-operator" . expr  (9)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 28
+	number  goto 9
+
+
+state 19
+	expr : expr "DIV-operator" . expr  (10)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 29
+	number  goto 9
+
+
+state 20
+	expr : expr "MOD-operator" . expr  (11)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 30
+	number  goto 9
+
+
+state 21
+	expr : expr "AND-operator" . expr  (12)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 31
+	number  goto 9
+
+
+state 22
+	expr : expr '|' . expr  (13)
+
+	"SUB-operator"  shift 3
+	DIGIT  shift 4
+	LETTER  shift 11
+	'('  shift 6
+	.  error
+
+	expr  goto 32
+	number  goto 9
+
+
+state 23
+	number : number DIGIT .  (18)
+
+	.  reduce 18
+
+
+state 24
+	stat : LETTER '=3D' expr .  (5)
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 5
+
+
+state 25
+	expr : '(' expr ')' .  (6)
+
+	.  reduce 6
+
+
+26: shift/reduce conflict (shift 16, reduce 7) on "ADD-operator"
+26: shift/reduce conflict (shift 17, reduce 7) on "SUB-operator"
+26: shift/reduce conflict (shift 18, reduce 7) on "MUL-operator"
+26: shift/reduce conflict (shift 19, reduce 7) on "DIV-operator"
+26: shift/reduce conflict (shift 20, reduce 7) on "MOD-operator"
+26: shift/reduce conflict (shift 21, reduce 7) on "AND-operator"
+26: shift/reduce conflict (shift 22, reduce 7) on '|'
+state 26
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr "ADD-operator" expr .  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 7
+	')'  reduce 7
+
+
+27: shift/reduce conflict (shift 16, reduce 8) on "ADD-operator"
+27: shift/reduce conflict (shift 17, reduce 8) on "SUB-operator"
+27: shift/reduce conflict (shift 18, reduce 8) on "MUL-operator"
+27: shift/reduce conflict (shift 19, reduce 8) on "DIV-operator"
+27: shift/reduce conflict (shift 20, reduce 8) on "MOD-operator"
+27: shift/reduce conflict (shift 21, reduce 8) on "AND-operator"
+27: shift/reduce conflict (shift 22, reduce 8) on '|'
+state 27
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr "SUB-operator" expr .  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 8
+	')'  reduce 8
+
+
+28: shift/reduce conflict (shift 16, reduce 9) on "ADD-operator"
+28: shift/reduce conflict (shift 17, reduce 9) on "SUB-operator"
+28: shift/reduce conflict (shift 18, reduce 9) on "MUL-operator"
+28: shift/reduce conflict (shift 19, reduce 9) on "DIV-operator"
+28: shift/reduce conflict (shift 20, reduce 9) on "MOD-operator"
+28: shift/reduce conflict (shift 21, reduce 9) on "AND-operator"
+28: shift/reduce conflict (shift 22, reduce 9) on '|'
+state 28
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr "MUL-operator" expr .  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 9
+	')'  reduce 9
+
+
+29: shift/reduce conflict (shift 16, reduce 10) on "ADD-operator"
+29: shift/reduce conflict (shift 17, reduce 10) on "SUB-operator"
+29: shift/reduce conflict (shift 18, reduce 10) on "MUL-operator"
+29: shift/reduce conflict (shift 19, reduce 10) on "DIV-operator"
+29: shift/reduce conflict (shift 20, reduce 10) on "MOD-operator"
+29: shift/reduce conflict (shift 21, reduce 10) on "AND-operator"
+29: shift/reduce conflict (shift 22, reduce 10) on '|'
+state 29
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr "DIV-operator" expr .  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 10
+	')'  reduce 10
+
+
+30: shift/reduce conflict (shift 16, reduce 11) on "ADD-operator"
+30: shift/reduce conflict (shift 17, reduce 11) on "SUB-operator"
+30: shift/reduce conflict (shift 18, reduce 11) on "MUL-operator"
+30: shift/reduce conflict (shift 19, reduce 11) on "DIV-operator"
+30: shift/reduce conflict (shift 20, reduce 11) on "MOD-operator"
+30: shift/reduce conflict (shift 21, reduce 11) on "AND-operator"
+30: shift/reduce conflict (shift 22, reduce 11) on '|'
+state 30
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr "MOD-operator" expr .  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 11
+	')'  reduce 11
+
+
+31: shift/reduce conflict (shift 16, reduce 12) on "ADD-operator"
+31: shift/reduce conflict (shift 17, reduce 12) on "SUB-operator"
+31: shift/reduce conflict (shift 18, reduce 12) on "MUL-operator"
+31: shift/reduce conflict (shift 19, reduce 12) on "DIV-operator"
+31: shift/reduce conflict (shift 20, reduce 12) on "MOD-operator"
+31: shift/reduce conflict (shift 21, reduce 12) on "AND-operator"
+31: shift/reduce conflict (shift 22, reduce 12) on '|'
+state 31
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr "AND-operator" expr .  (12)
+	expr : expr . '|' expr  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  shift 22
+	'\n'  reduce 12
+	')'  reduce 12
+
+
+32: shift/reduce conflict (shift 16, reduce 13) on "ADD-operator"
+32: shift/reduce conflict (shift 17, reduce 13) on "SUB-operator"
+32: shift/reduce conflict (shift 18, reduce 13) on "MUL-operator"
+32: shift/reduce conflict (shift 19, reduce 13) on "DIV-operator"
+32: shift/reduce conflict (shift 20, reduce 13) on "MOD-operator"
+32: shift/reduce conflict (shift 21, reduce 13) on "AND-operator"
+state 32
+	expr : expr . "ADD-operator" expr  (7)
+	expr : expr . "SUB-operator" expr  (8)
+	expr : expr . "MUL-operator" expr  (9)
+	expr : expr . "DIV-operator" expr  (10)
+	expr : expr . "MOD-operator" expr  (11)
+	expr : expr . "AND-operator" expr  (12)
+	expr : expr . '|' expr  (13)
+	expr : expr '|' expr .  (13)
+
+	"ADD-operator"  shift 16
+	"SUB-operator"  shift 17
+	"MUL-operator"  shift 18
+	"DIV-operator"  shift 19
+	"MOD-operator"  shift 20
+	"AND-operator"  shift 21
+	'|'  reduce 13
+	'\n'  reduce 13
+	')'  reduce 13
+
+
+State 12 contains 6 shift/reduce conflicts.
+State 26 contains 7 shift/reduce conflicts.
+State 27 contains 7 shift/reduce conflicts.
+State 28 contains 7 shift/reduce conflicts.
+State 29 contains 7 shift/reduce conflicts.
+State 30 contains 7 shift/reduce conflicts.
+State 31 contains 7 shift/reduce conflicts.
+State 32 contains 6 shift/reduce conflicts.
+
+
+28 terminals, 5 nonterminals
+19 grammar rules, 33 states
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4.ta=
b.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4.tab.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,688 @@
+#ifndef lint
+static const char yysccsid[] =3D "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
+#endif
+
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+
+#define YYEMPTY        (-1)
+#define yyclearin      (yychar =3D YYEMPTY)
+#define yyerrok        (yyerrflag =3D 0)
+#define YYRECOVERING() (yyerrflag !=3D 0)
+
+
+#ifndef yyparse
+#define yyparse    quote_calc4_parse
+#endif /* yyparse */
+
+#ifndef yylex
+#define yylex      quote_calc4_lex
+#endif /* yylex */
+
+#ifndef yyerror
+#define yyerror    quote_calc4_error
+#endif /* yyerror */
+
+#ifndef yychar
+#define yychar     quote_calc4_char
+#endif /* yychar */
+
+#ifndef yyval
+#define yyval      quote_calc4_val
+#endif /* yyval */
+
+#ifndef yylval
+#define yylval     quote_calc4_lval
+#endif /* yylval */
+
+#ifndef yydebug
+#define yydebug    quote_calc4_debug
+#endif /* yydebug */
+
+#ifndef yynerrs
+#define yynerrs    quote_calc4_nerrs
+#endif /* yynerrs */
+
+#ifndef yyerrflag
+#define yyerrflag  quote_calc4_errflag
+#endif /* yyerrflag */
+
+#ifndef yylhs
+#define yylhs      quote_calc4_lhs
+#endif /* yylhs */
+
+#ifndef yylen
+#define yylen      quote_calc4_len
+#endif /* yylen */
+
+#ifndef yydefred
+#define yydefred   quote_calc4_defred
+#endif /* yydefred */
+
+#ifndef yydgoto
+#define yydgoto    quote_calc4_dgoto
+#endif /* yydgoto */
+
+#ifndef yysindex
+#define yysindex   quote_calc4_sindex
+#endif /* yysindex */
+
+#ifndef yyrindex
+#define yyrindex   quote_calc4_rindex
+#endif /* yyrindex */
+
+#ifndef yygindex
+#define yygindex   quote_calc4_gindex
+#endif /* yygindex */
+
+#ifndef yytable
+#define yytable    quote_calc4_table
+#endif /* yytable */
+
+#ifndef yycheck
+#define yycheck    quote_calc4_check
+#endif /* yycheck */
+
+#ifndef yyname
+#define yyname     quote_calc4_name
+#endif /* yyname */
+
+#ifndef yyrule
+#define yyrule     quote_calc4_rule
+#endif /* yyrule */
+#define YYPREFIX "quote_calc4_"
+
+#define YYPURE 0
+
+#line 2 "quote_calc4.y"
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+#line 109 "quote_calc4.tab.c"
+
+#ifndef YYSTYPE
+typedef int YYSTYPE;
+#endif
+
+/* compatibility with bison */
+#ifdef YYPARSE_PARAM
+/* compatibility with FreeBSD */
+# ifdef YYPARSE_PARAM_TYPE
+#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
+# else
+#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
+# endif
+#else
+# define YYPARSE_DECL() yyparse(void)
+#endif
+
+/* Parameters sent to lex. */
+#ifdef YYLEX_PARAM
+# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
+# define YYLEX yylex(YYLEX_PARAM)
+#else
+# define YYLEX_DECL() yylex(void)
+# define YYLEX yylex()
+#endif
+
+/* Parameters sent to yyerror. */
+#ifndef YYERROR_DECL
+#define YYERROR_DECL() yyerror(const char *s)
+#endif
+#ifndef YYERROR_CALL
+#define YYERROR_CALL(msg) yyerror(msg)
+#endif
+
+extern int YYPARSE_DECL();
+
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
+#define YYERRCODE 256
+static const short quote_calc4_lhs[] =3D {                 -1,
+    0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
+    2,    2,    2,    2,    2,    2,    3,    3,
+};
+static const short quote_calc4_len[] =3D {                  2,
+    0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
+    3,    3,    3,    2,    1,    1,    1,    2,
+};
+static const short quote_calc4_defred[] =3D {               1,
+    0,    0,    0,   17,    0,    0,    0,    0,    0,    3,
+   15,    0,    0,    0,    2,    0,    0,    0,    0,    0,
+    0,    0,   18,    0,    6,    0,    0,    0,    0,    0,
+    0,    0,
+};
+static const short quote_calc4_dgoto[] =3D {                1,
+    7,    8,    9,
+};
+static const short quote_calc4_sindex[] =3D {               0,
+  -38,    4,  -36,    0,  -51,  -36,    6, -121, -249,    0,
+    0, -243,  -36,  -23,    0,  -36,  -36,  -36,  -36,  -36,
+  -36,  -36,    0, -121,    0, -121, -121, -121, -121, -121,
+ -121, -243,
+};
+static const short quote_calc4_rindex[] =3D {               0,
+    0,    0,    0,    0,   -9,    0,    0,   12,  -10,    0,
+    0,   -5,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   14,    0,   -3,   -2,   -1,    1,    2,
+    3,   -4,
+};
+static const short quote_calc4_gindex[] =3D {               0,
+    0,   42,    0,
+};
+#define YYTABLESIZE 259
+static const short quote_calc4_table[] =3D {               16,
+   15,    6,   22,    6,   14,   13,    7,    8,    9,   13,
+   10,   11,   12,   10,   16,   15,   17,   25,   18,   23,
+   19,    4,   20,    5,   21,    0,    0,    0,    0,    0,
+   16,    0,    0,    0,    0,   14,   13,    7,    8,    9,
+    0,   10,   11,   12,   12,    0,    0,   14,    0,    0,
+    0,    0,    0,    0,   24,    0,    0,   26,   27,   28,
+   29,   30,   31,   32,    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,
+   22,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   16,   15,    0,    0,    0,   14,   13,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   16,    0,   17,    0,
+   18,    0,   19,    0,   20,    0,   21,    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,    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,    2,    0,    0,
+    0,    3,    0,    3,    0,    0,    0,    0,    0,    0,
+    4,    5,    4,   11,   16,    0,   17,    0,   18,    0,
+   19,    0,   20,    0,   21,    0,    0,   16,   15,   16,
+   15,   16,   15,   16,   15,   16,   15,   16,   15,
+};
+static const short quote_calc4_check[] =3D {               10,
+   10,   40,  124,   40,   10,   10,   10,   10,   10,   61,
+   10,   10,   10,   10,  258,   10,  260,   41,  262,  269,
+  264,   10,  266,   10,  268,   -1,   -1,   -1,   -1,   -1,
+   41,   -1,   -1,   -1,   -1,   41,   41,   41,   41,   41,
+   -1,   41,   41,   41,    3,   -1,   -1,    6,   -1,   -1,
+   -1,   -1,   -1,   -1,   13,   -1,   -1,   16,   17,   18,
+   19,   20,   21,   22,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  124,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,  124,  124,   -1,   -1,   -1,  124,  124,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,  258,   -1,  260,   -1,
+  262,   -1,  264,   -1,  266,   -1,  268,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,   -1,
+   -1,  260,   -1,  260,   -1,   -1,   -1,   -1,   -1,   -1,
+  269,  270,  269,  270,  258,   -1,  260,   -1,  262,   -1,
+  264,   -1,  266,   -1,  268,   -1,   -1,  258,  258,  260,
+  260,  262,  262,  264,  264,  266,  266,  268,  268,
+};
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 271
+#if YYDEBUG
+static const char *yyname[] =3D {
+
+"end-of-file",0,0,0,0,0,0,0,0,0,"'\\n'",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,0,"'=3D'",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,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,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,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,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,"OP_ADD","\"ADD-operator\"","OP_SUB","\"SUB-operator\"","OP_MU=
L",
+"\"MUL-operator\"","OP_DIV","\"DIV-operator\"","OP_MOD","\"MOD-operator\"",
+"OP_AND","\"AND-operator\"","DIGIT","LETTER","UMINUS",
+};
+static const char *yyrule[] =3D {
+"$accept : list",
+"list :",
+"list : list stat '\\n'",
+"list : list error '\\n'",
+"stat : expr",
+"stat : LETTER '=3D' expr",
+"expr : '(' expr ')'",
+"expr : expr \"ADD-operator\" expr",
+"expr : expr \"SUB-operator\" expr",
+"expr : expr \"MUL-operator\" expr",
+"expr : expr \"DIV-operator\" expr",
+"expr : expr \"MOD-operator\" expr",
+"expr : expr \"AND-operator\" expr",
+"expr : expr '|' expr",
+"expr : \"SUB-operator\" expr",
+"expr : LETTER",
+"expr : number",
+"number : DIGIT",
+"number : number DIGIT",
+
+};
+#endif
+
+int      yydebug;
+int      yynerrs;
+
+int      yyerrflag;
+int      yychar;
+YYSTYPE  yyval;
+YYSTYPE  yylval;
+
+/* define the initial stack-sizes */
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH  YYSTACKSIZE
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH  500
+#endif
+#endif
+
+#define YYINITSTACKSIZE 500
+
+typedef struct {
+    unsigned stacksize;
+    short    *s_base;
+    short    *s_mark;
+    short    *s_last;
+    YYSTYPE  *l_base;
+    YYSTYPE  *l_mark;
+} YYSTACKDATA;
+/* variables for the parser stack */
+static YYSTACKDATA yystack;
+#line 73 "quote_calc4.y"
+ /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
+#line 362 "quote_calc4.tab.c"
+
+#if YYDEBUG
+#include <stdio.h>		/* needed for printf */
+#endif
+
+#include <stdlib.h>	/* needed for malloc, etc */
+#include <string.h>	/* needed for memset */
+
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack(YYSTACKDATA *data)
+{
+    int i;
+    unsigned newsize;
+    short *newss;
+    YYSTYPE *newvs;
+
+    if ((newsize =3D data->stacksize) =3D=3D 0)
+        newsize =3D YYINITSTACKSIZE;
+    else if (newsize >=3D YYMAXDEPTH)
+        return -1;
+    else if ((newsize *=3D 2) > YYMAXDEPTH)
+        newsize =3D YYMAXDEPTH;
+
+    i =3D data->s_mark - data->s_base;
+    newss =3D (short *)realloc(data->s_base, newsize * sizeof(*newss));
+    if (newss =3D=3D 0)
+        return -1;
+
+    data->s_base =3D newss;
+    data->s_mark =3D newss + i;
+
+    newvs =3D (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
+    if (newvs =3D=3D 0)
+        return -1;
+
+    data->l_base =3D newvs;
+    data->l_mark =3D newvs + i;
+
+    data->stacksize =3D newsize;
+    data->s_last =3D data->s_base + newsize - 1;
+    return 0;
+}
+
+#if YYPURE || defined(YY_NO_LEAKS)
+static void yyfreestack(YYSTACKDATA *data)
+{
+    free(data->s_base);
+    free(data->l_base);
+    memset(data, 0, sizeof(*data));
+}
+#else
+#define yyfreestack(data) /* nothing */
+#endif
+
+#define YYABORT  goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR  goto yyerrlab
+
+int
+YYPARSE_DECL()
+{
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys =3D getenv("YYDEBUG")) !=3D 0)
+    {
+        yyn =3D *yys;
+        if (yyn >=3D '0' && yyn <=3D '9')
+            yydebug =3D yyn - '0';
+    }
+#endif
+
+    yynerrs =3D 0;
+    yyerrflag =3D 0;
+    yychar =3D YYEMPTY;
+    yystate =3D 0;
+
+#if YYPURE
+    memset(&yystack, 0, sizeof(yystack));
+#endif
+
+    if (yystack.s_base =3D=3D NULL && yygrowstack(&yystack)) goto yyoverfl=
ow;
+    yystack.s_mark =3D yystack.s_base;
+    yystack.l_mark =3D yystack.l_base;
+    yystate =3D 0;
+    *yystack.s_mark =3D 0;
+
+yyloop:
+    if ((yyn =3D yydefred[yystate]) !=3D 0) goto yyreduce;
+    if (yychar < 0)
+    {
+        if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+    }
+    if ((yyn =3D yysindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
+#endif
+        if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+        {
+            goto yyoverflow;
+        }
+        yystate =3D yytable[yyn];
+        *++yystack.s_mark =3D yytable[yyn];
+        *++yystack.l_mark =3D yylval;
+        yychar =3D YYEMPTY;
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn =3D yyrindex[yystate]) && (yyn +=3D yychar) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yychar)
+    {
+        yyn =3D yytable[yyn];
+        goto yyreduce;
+    }
+    if (yyerrflag) goto yyinrecovery;
+
+    yyerror("syntax error");
+
+    goto yyerrlab;
+
+yyerrlab:
+    ++yynerrs;
+
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag =3D 3;
+        for (;;)
+        {
+            if ((yyn =3D yysindex[*yystack.s_mark]) && (yyn +=3D YYERRCODE=
) >=3D 0 &&
+                    yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
+#endif
+                if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yys=
tack))
+                {
+                    goto yyoverflow;
+                }
+                yystate =3D yytable[yyn];
+                *++yystack.s_mark =3D yytable[yyn];
+                *++yystack.l_mark =3D yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yystack.s_mark);
+#endif
+                if (yystack.s_mark <=3D yystack.s_base) goto yyabort;
+                --yystack.s_mark;
+                --yystack.l_mark;
+            }
+        }
+    }
+    else
+    {
+        if (yychar =3D=3D 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys =3D 0;
+            if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+            if (!yys) yys =3D "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%=
s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar =3D YYEMPTY;
+        goto yyloop;
+    }
+
+yyreduce:
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym =3D yylen[yyn];
+    if (yym)
+        yyval =3D yystack.l_mark[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
+    {
+case 3:
+#line 35 "quote_calc4.y"
+	{  yyerrok ; }
+break;
+case 4:
+#line 39 "quote_calc4.y"
+	{  printf("%d\n",yystack.l_mark[0]);}
+break;
+case 5:
+#line 41 "quote_calc4.y"
+	{  regs[yystack.l_mark[-2]] =3D yystack.l_mark[0]; }
+break;
+case 6:
+#line 45 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-1]; }
+break;
+case 7:
+#line 47 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] + yystack.l_mark[0]; }
+break;
+case 8:
+#line 49 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] - yystack.l_mark[0]; }
+break;
+case 9:
+#line 51 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] * yystack.l_mark[0]; }
+break;
+case 10:
+#line 53 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] / yystack.l_mark[0]; }
+break;
+case 11:
+#line 55 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] % yystack.l_mark[0]; }
+break;
+case 12:
+#line 57 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] & yystack.l_mark[0]; }
+break;
+case 13:
+#line 59 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[-2] | yystack.l_mark[0]; }
+break;
+case 14:
+#line 61 "quote_calc4.y"
+	{  yyval =3D - yystack.l_mark[0]; }
+break;
+case 15:
+#line 63 "quote_calc4.y"
+	{  yyval =3D regs[yystack.l_mark[0]]; }
+break;
+case 17:
+#line 68 "quote_calc4.y"
+	{  yyval =3D yystack.l_mark[0]; base =3D (yystack.l_mark[0]=3D=3D0) ? 8 :=
 10; }
+break;
+case 18:
+#line 70 "quote_calc4.y"
+	{  yyval =3D base * yystack.l_mark[-1] + yystack.l_mark[0]; }
+break;
+#line 628 "quote_calc4.tab.c"
+    }
+    yystack.s_mark -=3D yym;
+    yystate =3D *yystack.s_mark;
+    yystack.l_mark -=3D yym;
+    yym =3D yylhs[yyn];
+    if (yystate =3D=3D 0 && yym =3D=3D 0)
+    {
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
+#endif
+        yystate =3D YYFINAL;
+        *++yystack.s_mark =3D YYFINAL;
+        *++yystack.l_mark =3D yyval;
+        if (yychar < 0)
+        {
+            if ((yychar =3D YYLEX) < 0) yychar =3D 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys =3D 0;
+                if (yychar <=3D YYMAXTOKEN) yys =3D yyname[yychar];
+                if (!yys) yys =3D "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar =3D=3D 0) goto yyaccept;
+        goto yyloop;
+    }
+    if ((yyn =3D yygindex[yym]) && (yyn +=3D yystate) >=3D 0 &&
+            yyn <=3D YYTABLESIZE && yycheck[yyn] =3D=3D yystate)
+        yystate =3D yytable[yyn];
+    else
+        yystate =3D yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
+#endif
+    if (yystack.s_mark >=3D yystack.s_last && yygrowstack(&yystack))
+    {
+        goto yyoverflow;
+    }
+    *++yystack.s_mark =3D (short) yystate;
+    *++yystack.l_mark =3D yyval;
+    goto yyloop;
+
+yyoverflow:
+    yyerror("yacc stack overflow");
+
+yyabort:
+    yyfreestack(&yystack);
+    return (1);
+
+yyaccept:
+    yyfreestack(&yystack);
+    return (0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4.ta=
b.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4.tab.h	Wed Jul 25 16:21:35 2012 +0=
300
@@ -0,0 +1,9 @@
+#define OP_ADD 257
+#define OP_SUB 259
+#define OP_MUL 261
+#define OP_DIV 263
+#define OP_MOD 265
+#define OP_AND 267
+#define DIGIT 269
+#define LETTER 270
+#define UMINUS 271
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/quote_calc4.y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/quote_calc4.y	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,112 @@
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+int yylex(void);
+static void yyerror(const char *s);
+
+%}
+
+%start list
+
+%token OP_ADD "ADD-operator"
+%token OP_SUB "SUB-operator"
+%token OP_MUL "MUL-operator"
+%token OP_DIV "DIV-operator"
+%token OP_MOD "MOD-operator"
+%token OP_AND "AND-operator"
+
+%token DIGIT LETTER
+
+%left '|'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%left UMINUS   /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list  :  /* empty */
+      |  list stat '\n'
+      |  list error '\n'
+            {  yyerrok ; }
+      ;
+
+stat  :  expr
+            {  printf("%d\n",$1);}
+      |  LETTER '=3D' expr
+            {  regs[$1] =3D $3; }
+      ;
+
+expr  :  '(' expr ')'
+            {  $$ =3D $2; }
+      |  expr "ADD-operator" expr
+            {  $$ =3D $1 + $3; }
+      |  expr "SUB-operator" expr
+            {  $$ =3D $1 - $3; }
+      |  expr "MUL-operator" expr
+            {  $$ =3D $1 * $3; }
+      |  expr "DIV-operator" expr
+            {  $$ =3D $1 / $3; }
+      |  expr "MOD-operator" expr
+            {  $$ =3D $1 % $3; }
+      |  expr "AND-operator" expr
+            {  $$ =3D $1 & $3; }
+      |  expr '|' expr
+            {  $$ =3D $1 | $3; }
+      |  "SUB-operator" expr %prec UMINUS
+            {  $$ =3D - $2; }
+      |  LETTER
+            {  $$ =3D regs[$1]; }
+      |  number
+      ;
+
+number:  DIGIT
+         {  $$ =3D $1; base =3D ($1=3D=3D0) ? 8 : 10; }
+      |  number DIGIT
+         {  $$ =3D base * $1 + $2; }
+      ;
+
+%% /* start of programs */
+
+int
+main (void)
+{
+    while(!feof(stdin)) {
+	yyparse();
+    }
+    return 0;
+}
+
+static void
+yyerror(const char *s)
+{
+    fprintf(stderr, "%s\n", s);
+}
+
+int
+yylex(void) {
+	/* lexical analysis routine */
+	/* returns LETTER for a lower case letter, yylval =3D 0 through 25 */
+	/* return DIGIT for a digit, yylval =3D 0 through 9 */
+	/* all other characters are returned immediately */
+
+    int c;
+
+    while( (c=3Dgetchar()) =3D=3D ' ' )   { /* skip blanks */ }
+
+    /* c is now nonblank */
+
+    if( islower( c )) {
+	yylval =3D c - 'a';
+	return ( LETTER );
+    }
+    if( isdigit( c )) {
+	yylval =3D c - '0';
+	return ( DIGIT );
+    }
+    return( c );
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/run_lint.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/run_lint.sh	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,20 @@
+#!/bin/sh
+# $Id: run_lint.sh,v 1.1 2010/06/08 09:00:58 tom Exp $
+# vi:ts=3D4 sw=3D4:
+
+# run lint on each of the ".c" files in the test directory
+
+if test $# =3D 1
+then
+	PROG_DIR=3D`pwd`
+	TEST_DIR=3D$1
+else
+	PROG_DIR=3D..
+	TEST_DIR=3D.
+fi
+
+echo '** '`date`
+for i in ${TEST_DIR}/*.c
+do
+	make -f $PROG_DIR/makefile lint C_FILES=3D$i srcdir=3D$PROG_DIR
+done
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/run_make.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/run_make.sh	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,139 @@
+#!/bin/sh
+# $Id: run_make.sh,v 1.9 2012/01/15 22:35:01 tom Exp $
+# vi:ts=3D4 sw=3D4:
+
+# do a test-compile on each of the ".c" files in the test-directory
+
+BISON=3D`bison --version 2>/dev/null | head -n 1 | sed -e 's/^[^0-9.]*//' =
-e 's/[^0-9.]*$//'`
+
+if test $# =3D 1
+then
+	PROG_DIR=3D`pwd`
+	TEST_DIR=3D$1
+else
+	PROG_DIR=3D..
+	TEST_DIR=3D.
+fi
+
+MY_MAKE=3D"make -f $PROG_DIR/makefile srcdir=3D$PROG_DIR VPATH=3D$TEST_DIR"
+
+echo '** '`date`
+for input in ${TEST_DIR}/*.c
+do
+	test -f "$input" || continue
+
+	obj=3D`basename "$input" .c`.o
+
+	$MY_MAKE $obj C_FILES=3D$input
+	test -f $obj && rm $obj
+
+	DEFS=3D
+	case $input in #(vi
+	${TEST_DIR}/pure_*)
+		# DEFS=3D"-DYYLEX_PARAM=3Dflag -DYYLEX_PARAM_TYPE=3Dint"
+		;;
+	esac
+
+	if test "x$DEFS" !=3D "x"
+	then
+		$MY_MAKE $obj C_FILES=3D$input DEFINES=3D"$DEFS"
+		test -f $obj && rm -f $obj
+	fi
+done
+
+if test -n "$BISON"
+then
+	echo "** compare with bison $BISON"
+	for input in ${TEST_DIR}/*.y
+	do
+		test -f "$input" || continue
+
+		# Bison does not support pure-parser from command-line.
+		# Also, its support for %expect is generally broken.
+		# Work around these issues using a temporary file.
+
+		echo "... testing $input"
+		rm -f run_make.[coy]
+
+		case $input in
+		pure_*)
+			if test -z `fgrep -l '%pure-parser' $input`
+			then
+				echo "%pure-parser" >>run_make.y
+			fi
+			;;
+		esac
+
+		sed -e '/^%expect/s,%expect.*,,' $input >>run_make.y
+
+		bison -y run_make.y
+		sed -e '/^#line/s,"run_make.y","'$input'",' y.tab.c >run_make.c
+
+		rm -f y.tab.c
+
+		input=3Drun_make.c
+		object=3Drun_make.o
+		if test -f $input
+		then
+			$MY_MAKE $object DEFINES=3D'-DYYENABLE_NLS=3D0 -DYYLTYPE_IS_TRIVIAL=3D1=
 -DYYSTACK_USE_ALLOCA=3D0 -DYYMAXDEPTH=3D0'
+		else
+			echo "?? $input not found"
+		fi
+		rm -f run_make.[coy]
+	done
+fi
+
+YACC=3D
+for name in /usr/ccs/bin/yacc
+do
+	if test -f $name
+	then
+		YACC=3D$name
+	fi
+done
+
+if test -n "$YACC"
+then
+	echo "** compare with $YACC"
+	for input in ${TEST_DIR}/*.y
+	do
+		test -f "$input" || continue
+
+		echo "... testing $input"
+		rm -f run_make.[coy]
+
+		case $input in
+		pure_*)
+			echo "... skipping $input"
+			continue;
+			;;
+		*)
+			if fgrep '%pure-parser' $input >/dev/null ||
+			   fgrep '%parse-param' $input >/dev/null ||
+			   fgrep '%lex-param' $input >/dev/null ||
+			   fgrep 'YYLEX_PARAM' $input >/dev/null
+			then
+				echo "... skipping $input"
+				continue;
+			fi
+			;;
+		esac
+
+		sed -e '/^%expect/s,%expect.*,,' $input >>run_make.y
+
+		$YACC run_make.y
+		sed -e '/^#line/s,"run_make.y","'$input'",' y.tab.c >run_make.c
+
+		rm -f y.tab.c
+
+		input=3Drun_make.c
+		object=3Drun_make.o
+		if test -f $input
+		then
+			$MY_MAKE $object
+		else
+			echo "?? $input not found"
+		fi
+		rm -f run_make.[coy]
+	done
+fi
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/test/run_test.sh
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/test/run_test.sh	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,82 @@
+#!/bin/sh
+# $Id: run_test.sh,v 1.8 2012/01/15 11:50:35 tom Exp $
+# vi:ts=3D4 sw=3D4:
+
+if test $# =3D 1
+then
+	PROG_DIR=3D`pwd`
+	TEST_DIR=3D$1
+else
+	PROG_DIR=3D..
+	TEST_DIR=3D.
+fi
+
+YACC=3D$PROG_DIR/yacc
+
+tmpfile=3Dtemp$$
+rm -f test-*
+
+echo '** '`date`
+for input in ${TEST_DIR}/*.y
+do
+	case $input in
+	test*)
+		echo "?? ignored $input"
+		;;
+	*)
+		root=3D`basename $input .y`
+		ROOT=3D"test-$root"
+		prefix=3D${root}_
+
+		OPTS=3D
+		OPT2=3D
+		TYPE=3D".output .tab.c .tab.h"
+		case $input in
+		${TEST_DIR}/code_*)
+			OPTS=3D"$OPTS -r"
+			TYPE=3D"$TYPE .code.c"
+			prefix=3D`echo "$prefix" | sed -e 's/^code_//'`
+			;;
+		${TEST_DIR}/pure_*)
+			OPTS=3D"$OPTS -P"
+			prefix=3D`echo "$prefix" | sed -e 's/^pure_//'`
+			;;
+		${TEST_DIR}/quote_*)
+			OPT2=3D"-s"
+			;;
+		esac
+
+		for opt2 in "" $OPT2
+		do
+			$YACC $OPTS $opt2 -v -d -p $prefix -b $ROOT${opt2} $input
+			for type in $TYPE
+			do
+				REF=3D${TEST_DIR}/${root}${opt2}${type}
+				CMP=3D${ROOT}${opt2}${type}
+				if test ! -f $CMP
+				then
+					echo "...not found $CMP"
+				else
+					sed	-e s,$CMP,$REF, \
+						-e /YYPATCH/d \
+						-e 's,#line \([1-9][0-9]*\) "'$TEST_DIR'/,#line \1 ",' \
+						< $CMP >$tmpfile \
+						&& mv $tmpfile $CMP
+					if test ! -f $REF
+					then
+						mv $CMP $REF
+						echo "...saved $REF"
+					elif ( cmp -s $REF $CMP )
+					then
+						echo "...ok $REF"
+						rm -f $CMP
+					else
+						echo "...diff $REF"
+						diff -u $REF $CMP
+					fi
+				fi
+			done
+		done
+		;;
+	esac
+done
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/verbose.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/verbose.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,334 @@
+/* $Id: verbose.c,v 1.9 2010/06/09 08:58:29 tom Exp $ */
+
+#include "defs.h"
+
+static void log_conflicts(void);
+static void log_unused(void);
+static void print_actions(int stateno);
+static void print_conflicts(int state);
+static void print_core(int state);
+static void print_gotos(int stateno);
+static void print_nulls(int state);
+static void print_shifts(action *p);
+static void print_state(int state);
+static void print_reductions(action *p, int defred2);
+
+static short *null_rules;
+
+void
+verbose(void)
+{
+    int i;
+
+    if (!vflag)
+	return;
+
+    null_rules =3D (short *)MALLOC((unsigned)nrules * sizeof(short));
+    NO_SPACE(null_rules);
+
+    fprintf(verbose_file, "\f\n");
+    for (i =3D 0; i < nstates; i++)
+	print_state(i);
+    FREE(null_rules);
+
+    if (nunused)
+	log_unused();
+    if (SRtotal || RRtotal)
+	log_conflicts();
+
+    fprintf(verbose_file, "\n\n%d terminals, %d nonterminals\n", ntokens,
+	    nvars);
+    fprintf(verbose_file, "%d grammar rules, %d states\n", nrules - 2, nst=
ates);
+}
+
+static void
+log_unused(void)
+{
+    int i;
+    short *p;
+
+    fprintf(verbose_file, "\n\nRules never reduced:\n");
+    for (i =3D 3; i < nrules; ++i)
+    {
+	if (!rules_used[i])
+	{
+	    fprintf(verbose_file, "\t%s :", symbol_name[rlhs[i]]);
+	    for (p =3D ritem + rrhs[i]; *p >=3D 0; ++p)
+		fprintf(verbose_file, " %s", symbol_name[*p]);
+	    fprintf(verbose_file, "  (%d)\n", i - 2);
+	}
+    }
+}
+
+static void
+log_conflicts(void)
+{
+    int i;
+
+    fprintf(verbose_file, "\n\n");
+    for (i =3D 0; i < nstates; i++)
+    {
+	if (SRconflicts[i] || RRconflicts[i])
+	{
+	    fprintf(verbose_file, "State %d contains ", i);
+	    if (SRconflicts[i] > 0)
+		fprintf(verbose_file, "%d shift/reduce conflict%s",
+			SRconflicts[i],
+			PLURAL(SRconflicts[i]));
+	    if (SRconflicts[i] && RRconflicts[i])
+		fprintf(verbose_file, ", ");
+	    if (RRconflicts[i] > 0)
+		fprintf(verbose_file, "%d reduce/reduce conflict%s",
+			RRconflicts[i],
+			PLURAL(RRconflicts[i]));
+	    fprintf(verbose_file, ".\n");
+	}
+    }
+}
+
+static void
+print_state(int state)
+{
+    if (state)
+	fprintf(verbose_file, "\n\n");
+    if (SRconflicts[state] || RRconflicts[state])
+	print_conflicts(state);
+    fprintf(verbose_file, "state %d\n", state);
+    print_core(state);
+    print_nulls(state);
+    print_actions(state);
+}
+
+static void
+print_conflicts(int state)
+{
+    int symbol, act, number;
+    action *p;
+
+    act =3D 0;			/* not shift/reduce... */
+    number =3D -1;
+    symbol =3D -1;
+    for (p =3D parser[state]; p; p =3D p->next)
+    {
+	if (p->suppressed =3D=3D 2)
+	    continue;
+
+	if (p->symbol !=3D symbol)
+	{
+	    symbol =3D p->symbol;
+	    number =3D p->number;
+	    if (p->action_code =3D=3D SHIFT)
+		act =3D SHIFT;
+	    else
+		act =3D REDUCE;
+	}
+	else if (p->suppressed =3D=3D 1)
+	{
+	    if (state =3D=3D final_state && symbol =3D=3D 0)
+	    {
+		fprintf(verbose_file, "%d: shift/reduce conflict \
+(accept, reduce %d) on $end\n", state, p->number - 2);
+	    }
+	    else
+	    {
+		if (act =3D=3D SHIFT)
+		{
+		    fprintf(verbose_file, "%d: shift/reduce conflict \
+(shift %d, reduce %d) on %s\n", state, number, p->number - 2,
+			    symbol_name[symbol]);
+		}
+		else
+		{
+		    fprintf(verbose_file, "%d: reduce/reduce conflict \
+(reduce %d, reduce %d) on %s\n", state, number - 2, p->number - 2,
+			    symbol_name[symbol]);
+		}
+	    }
+	}
+    }
+}
+
+static void
+print_core(int state)
+{
+    int i;
+    int k;
+    int rule;
+    core *statep;
+    short *sp;
+    short *sp1;
+
+    statep =3D state_table[state];
+    k =3D statep->nitems;
+
+    for (i =3D 0; i < k; i++)
+    {
+	sp1 =3D sp =3D ritem + statep->items[i];
+
+	while (*sp >=3D 0)
+	    ++sp;
+	rule =3D -(*sp);
+	fprintf(verbose_file, "\t%s : ", symbol_name[rlhs[rule]]);
+
+	for (sp =3D ritem + rrhs[rule]; sp < sp1; sp++)
+	    fprintf(verbose_file, "%s ", symbol_name[*sp]);
+
+	putc('.', verbose_file);
+
+	while (*sp >=3D 0)
+	{
+	    fprintf(verbose_file, " %s", symbol_name[*sp]);
+	    sp++;
+	}
+	fprintf(verbose_file, "  (%d)\n", -2 - *sp);
+    }
+}
+
+static void
+print_nulls(int state)
+{
+    action *p;
+    Value_t i, j, k, nnulls;
+
+    nnulls =3D 0;
+    for (p =3D parser[state]; p; p =3D p->next)
+    {
+	if (p->action_code =3D=3D REDUCE &&
+	    (p->suppressed =3D=3D 0 || p->suppressed =3D=3D 1))
+	{
+	    i =3D p->number;
+	    if (rrhs[i] + 1 =3D=3D rrhs[i + 1])
+	    {
+		for (j =3D 0; j < nnulls && i > null_rules[j]; ++j)
+		    continue;
+
+		if (j =3D=3D nnulls)
+		{
+		    ++nnulls;
+		    null_rules[j] =3D i;
+		}
+		else if (i !=3D null_rules[j])
+		{
+		    ++nnulls;
+		    for (k =3D (Value_t) (nnulls - 1); k > j; --k)
+			null_rules[k] =3D null_rules[k - 1];
+		    null_rules[j] =3D i;
+		}
+	    }
+	}
+    }
+
+    for (i =3D 0; i < nnulls; ++i)
+    {
+	j =3D null_rules[i];
+	fprintf(verbose_file, "\t%s : .  (%d)\n", symbol_name[rlhs[j]],
+		j - 2);
+    }
+    fprintf(verbose_file, "\n");
+}
+
+static void
+print_actions(int stateno)
+{
+    action *p;
+    shifts *sp;
+    int as;
+
+    if (stateno =3D=3D final_state)
+	fprintf(verbose_file, "\t$end  accept\n");
+
+    p =3D parser[stateno];
+    if (p)
+    {
+	print_shifts(p);
+	print_reductions(p, defred[stateno]);
+    }
+
+    sp =3D shift_table[stateno];
+    if (sp && sp->nshifts > 0)
+    {
+	as =3D accessing_symbol[sp->shift[sp->nshifts - 1]];
+	if (ISVAR(as))
+	    print_gotos(stateno);
+    }
+}
+
+static void
+print_shifts(action *p)
+{
+    int count;
+    action *q;
+
+    count =3D 0;
+    for (q =3D p; q; q =3D q->next)
+    {
+	if (q->suppressed < 2 && q->action_code =3D=3D SHIFT)
+	    ++count;
+    }
+
+    if (count > 0)
+    {
+	for (; p; p =3D p->next)
+	{
+	    if (p->action_code =3D=3D SHIFT && p->suppressed =3D=3D 0)
+		fprintf(verbose_file, "\t%s  shift %d\n",
+			symbol_name[p->symbol], p->number);
+	}
+    }
+}
+
+static void
+print_reductions(action *p, int defred2)
+{
+    int k, anyreds;
+    action *q;
+
+    anyreds =3D 0;
+    for (q =3D p; q; q =3D q->next)
+    {
+	if (q->action_code =3D=3D REDUCE && q->suppressed < 2)
+	{
+	    anyreds =3D 1;
+	    break;
+	}
+    }
+
+    if (anyreds =3D=3D 0)
+	fprintf(verbose_file, "\t.  error\n");
+    else
+    {
+	for (; p; p =3D p->next)
+	{
+	    if (p->action_code =3D=3D REDUCE && p->number !=3D defred2)
+	    {
+		k =3D p->number - 2;
+		if (p->suppressed =3D=3D 0)
+		    fprintf(verbose_file, "\t%s  reduce %d\n",
+			    symbol_name[p->symbol], k);
+	    }
+	}
+
+	if (defred2 > 0)
+	    fprintf(verbose_file, "\t.  reduce %d\n", defred2 - 2);
+    }
+}
+
+static void
+print_gotos(int stateno)
+{
+    int i, k;
+    int as;
+    short *to_state2;
+    shifts *sp;
+
+    putc('\n', verbose_file);
+    sp =3D shift_table[stateno];
+    to_state2 =3D sp->shift;
+    for (i =3D 0; i < sp->nshifts; ++i)
+    {
+	k =3D to_state2[i];
+	as =3D accessing_symbol[k];
+	if (ISVAR(as))
+	    fprintf(verbose_file, "\t%s  goto %d\n", symbol_name[as], k);
+    }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/vmsbuild.com
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/vmsbuild.com	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,210 @@
+$! $Id: vmsbuild.com,v 1.1 2000/11/21 00:38:46 tom Exp $
+$! VMS build-script for BYACC.  Requires installed C compiler
+$!
+$! Screen Configurations
+$! ---------------------
+$! To build BYACC, type:
+$!        $ @vmsbuild [BYACC [<compiler> [bld_target]]]
+$!
+$! where:
+$!        <compiler> :=3D=3D { decc | vaxc }
+$!
+$! The default compiler on VAX hosts is vaxc, else decc (Alpha hosts).
+$!
+$! -----------------------------------------------------------
+$ hlp =3D f$edit("''p1'", "UPCASE")
+$ if "''hlp'" .eqs. "HELP" .or. -
+        "''hlp'" .eqs. "-H" .or. -
+                "''hlp'" .eqs. "-?" .or. -
+                        "''hlp'" .eqs. "?" then gosub usage
+$ goto start
+$!
+$ vaxc_config:
+$    comp       =3D "__vaxc__=3D1"
+$    CFLAGS     =3D "/VAXC"
+$    DEFS       =3D ",HAVE_STRERROR"
+$    using_vaxc =3D 1
+$    return
+$!
+$ decc_config:
+$    comp   =3D "__decc__=3D1"
+$    CFLAGS =3D "/DECC/prefix=3Dall"
+$    DEFS   =3D ",HAVE_ALARM,HAVE_STRERROR"
+$    return
+$!
+$ usage:
+$    write sys$output "usage: "
+$    write sys$output "      $ @vmsbuild [BYACC [{decc | vaxc} [<bldtarget=
>]]]"
+$    exit 2
+$!
+$ start:
+$! -----------------------------------------------------------
+$! pickup user's compiler choice, if any
+$! -----------------------------------------------------------
+$!
+$ comp =3D ""
+$ using_vaxc =3D 0
+$ if "''p2'" .nes. ""=20
+$ then
+$    comp =3D f$edit(p2, "UPCASE")
+$    if "''comp'" .eqs. "VAXC"
+$    then
+$        gosub vaxc_config
+$    else
+$        if "''comp'" .eqs. "DECC"
+$        then
+$            gosub decc_config
+$        else
+$            gosub usage
+$        endif
+$    endif
+$ endif
+$! -----------------------------------------------------------
+$!      Build the option-file
+$!
+$ open/write optf vms_link.opt
+$ write optf "closure.obj"
+$ write optf "error.obj"
+$ write optf "lalr.obj"
+$ write optf "lr0.obj"
+$ write optf "mkpar.obj"
+$ write optf "output.obj"
+$ write optf "reader.obj"
+$ write optf "skeleton.obj"
+$ write optf "symtab.obj"
+$ write optf "verbose.obj"
+$ write optf "warshall.obj"
+$! ----------------------------------
+$! Look for the compiler used and specify architecture.
+$!
+$ CC =3D "CC"
+$ if f$getsyi("HW_MODEL").ge.1024
+$ then
+$  arch =3D "__alpha__=3D1"
+$  if "''comp'" .eqs. "" then gosub decc_config
+$ else
+$  arch =3D "__vax__=3D1"
+$  if "''comp'" .nes. "" then goto screen_config
+$  if f$search("SYS$SYSTEM:VAXC.EXE").nes.""
+$  then
+$   gosub vaxc_config
+$  else
+$   if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes.""
+$   then
+$    gosub decc_config
+$   else
+$    DEFS =3D ",HAVE_STRERROR"
+$    if f$trnlnm("GNU_CC").eqs.""
+$    then
+$     write sys$output "C compiler required to rebuild BYACC"
+$     close optf
+$     exit
+$    else
+$     write optf "gnu_cc:[000000]gcclib.olb/lib"
+$     comp =3D "__gcc__=3D1"
+$     CC =3D "GCC"
+$    endif
+$   endif
+$  endif
+$ endif
+$!
+$ screen_config:
+$!
+$ if using_vaxc .eq. 1 then write optf "sys$library:vaxcrtl.exe/share"
+$ close optf
+$! -------------- vms_link.opt is created -------------
+$ if f$edit("''p1'", "UPCASE") .eqs. "VMS_LINK.OPT"
+$ then
+$!  mms called this script to build vms_link.opt.  all done
+$   exit
+$ endif
+$!
+$ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
+$ then
+$!  can also use /Debug /Listing, /Show=3DAll
+$
+$   CFLAGS :=3D 'CFLAGS/Diagnostics /Define=3D("''DEFS'") /Include=3D([])
+$
+$  	if "''p3'" .nes. "" then goto 'p3
+$!
+$!
+$ all :
+$!
+$	call make closure
+$	call make error
+$	call make lalr
+$	call make lr0
+$	call make main
+$	call make mkpar
+$	call make output
+$	call make reader
+$	call make skeleton
+$	call make symtab
+$	call make verbose
+$	call make warshall
+$!
+$	link /exec=3D'target/map/cross main.obj, vms_link/opt
+$	goto build_last
+$!
+$ install :
+$	WRITE SYS$ERROR "** no rule for install"
+$	goto build_last
+$!
+$ clobber :
+$	if f$search("BYACC.com") .nes. "" then delete BYACC.com;*
+$	if f$search("*.exe") .nes. "" then delete *.exe;*
+$! fallthru
+$!
+$ clean :
+$	if f$search("*.obj") .nes. "" then delete *.obj;*
+$	if f$search("*.bak") .nes. "" then delete *.bak;*
+$	if f$search("*.lis") .nes. "" then delete *.lis;*
+$	if f$search("*.log") .nes. "" then delete *.log;*
+$	if f$search("*.map") .nes. "" then delete *.map;*
+$	if f$search("*.opt") .nes. "" then delete *.opt;*
+$! fallthru
+$!
+$ build_last :
+$	if f$search("*.dia") .nes. "" then delete *.dia;*
+$	if f$search("*.lis") .nes. "" then purge *.lis
+$	if f$search("*.obj") .nes. "" then purge *.obj
+$	if f$search("*.map") .nes. "" then purge *.map
+$	if f$search("*.opt") .nes. "" then purge *.opt
+$	if f$search("*.exe") .nes. "" then purge *.exe
+$	if f$search("*.log") .nes. "" then purge *.log
+$! fallthru
+$!
+$ vms_link_opt :
+$	exit 1
+$!
+$! Runs BYACC from the current directory (used for testing)
+$ byacc_com :
+$	if "''f$search("BYACC.com")'" .nes. "" then delete BYACC.com;*
+$	copy nl: BYACC.com
+$	open/append  test_script BYACC.com
+$	write test_script "$ temp =3D f$environment(""procedure"")"
+$	write test_script "$ temp =3D temp -"
+$	write test_script "		- f$parse(temp,,,""version"",""syntax_only"") -"
+$	write test_script "		- f$parse(temp,,,""type"",""syntax_only"")"
+$	write test_script "$ BYACC :=3D=3D $ 'temp'.exe"
+$	write test_script "$ define/user_mode sys$input  sys$command"
+$	write test_script "$ define/user_mode sys$output sys$command"
+$	write test_script "$ BYACC 'p1 'p2 'p3 'p4 'p5 'p6 'p7 'p8"
+$	close test_script
+$	write sys$output "** made BYACC.com"
+$	exit
+$!
+$  else
+$   mms/ignore=3Dwarning/macro=3D('comp','mmstar','arch') 'p3
+$  endif
+$ exit
+$ make: subroutine
+$	if f$search("''p1'.obj") .eqs. ""
+$	then
+$		write sys$output "compiling ''p1'"
+$		'CC 'CFLAGS 'p1.c
+$		if f$search("''p1'.dia") .nes. "" then delete 'p1.dia;*
+$	endif
+$exit
+$	return
+$ endsubroutine
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/warshall.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/warshall.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,82 @@
+/* $Id: warshall.c,v 1.7 2010/06/06 22:48:51 tom Exp $ */
+
+#include "defs.h"
+
+static void
+transitive_closure(unsigned *R, int n)
+{
+    int rowsize;
+    unsigned i;
+    unsigned *rowj;
+    unsigned *rp;
+    unsigned *rend;
+    unsigned *ccol;
+    unsigned *relend;
+    unsigned *cword;
+    unsigned *rowi;
+
+    rowsize =3D WORDSIZE(n);
+    relend =3D R + n * rowsize;
+
+    cword =3D R;
+    i =3D 0;
+    rowi =3D R;
+    while (rowi < relend)
+    {
+	ccol =3D cword;
+	rowj =3D R;
+
+	while (rowj < relend)
+	{
+	    if (*ccol & (unsigned)(1 << i))
+	    {
+		rp =3D rowi;
+		rend =3D rowj + rowsize;
+		while (rowj < rend)
+		    *rowj++ |=3D *rp++;
+	    }
+	    else
+	    {
+		rowj +=3D rowsize;
+	    }
+
+	    ccol +=3D rowsize;
+	}
+
+	if (++i >=3D BITS_PER_WORD)
+	{
+	    i =3D 0;
+	    cword++;
+	}
+
+	rowi +=3D rowsize;
+    }
+}
+
+void
+reflexive_transitive_closure(unsigned *R, int n)
+{
+    int rowsize;
+    unsigned i;
+    unsigned *rp;
+    unsigned *relend;
+
+    transitive_closure(R, n);
+
+    rowsize =3D WORDSIZE(n);
+    relend =3D R + n * rowsize;
+
+    i =3D 0;
+    rp =3D R;
+    while (rp < relend)
+    {
+	*rp |=3D (unsigned)(1 << i);
+	if (++i >=3D BITS_PER_WORD)
+	{
+	    i =3D 0;
+	    rp++;
+	}
+
+	rp +=3D rowsize;
+    }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/byacc/yacc.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/byacc/yacc.1	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,242 @@
+.\" $Id: yacc.1,v 1.18 2012/01/15 18:12:28 tom Exp $
+.\"
+.\" .TH YACC 1 "July\ 15,\ 1990"
+.\" .UC 6
+.de ES
+.ne 8
+.nf
+.sp
+.in +4
+..
+.de EE
+.in -4
+.fi
+..
+.\" Bulleted paragraph
+.de bP
+.IP \(bu 4
+..
+.TH YACC 1 "September 7, 2011" "Berkeley Yacc" "User Commands"
+.SH NAME
+Yacc \- an LALR(1) parser generator
+.SH SYNOPSIS
+.B yacc [ -dgilrtv ] [ \-b
+.I file_prefix
+.B ] [ \-p
+.I symbol_prefix
+.B ]
+.I filename
+.SH DESCRIPTION
+.B Yacc
+reads the grammar specification in the file
+.I filename
+and generates an LALR(1) parser for it.
+The parsers consist of a set of LALR(1) parsing tables and a driver routine
+written in the C programming language.
+.B Yacc
+normally writes the parse tables and the driver routine to the file
+.IR y.tab.c.
+.PP
+The following options are available:
+.TP 5
+\fB\-b \fP\fIfile_prefix\fR
+The
+.B \-b
+option changes the prefix prepended to the output file names to
+the string denoted by
+.IR file_prefix.
+The default prefix is the character
+.IR y.
+.TP
+.B \-d
+The \fB-d\fR option causes the header file
+.BR y.tab.h
+to be written.
+It contains #define's for the token identifiers.
+.TP
+.B \-g
+The
+.B \-g
+option causes a graphical description of the generated LALR(1) parser to
+be written to the file
+.BR y.dot
+in graphviz format, ready to be processed by dot(1).
+.TP
+.B \-i
+The \fB-i\fR option causes a supplementary header file
+.BR y.tab.i
+to be written.
+It contains extern declarations
+and supplementary #define's as needed to map the conventional \fIyacc\fP
+\fByy\fP-prefixed names to whatever the \fB-p\fP option may specify.
+The code file, e.g., \fBy.tab.c\fP is modified to #include this file
+as well as the \fBy.tab.h\fP file, enforcing consistent usage of the
+symbols defined in those files.
+.IP
+The supplementary header file makes it simpler to separate compilation
+of lex- and yacc-files.
+.TP
+.B \-l
+If the
+.B \-l
+option is not specified,
+.B yacc
+will insert \fI#line\fP directives in the generated code.
+The \fI#line\fP directives let the C compiler relate errors in the
+generated code to the user's original code.
+If the \fB-l\fR option is specified,
+.B yacc
+will not insert the \fI#line\fP directives.
+\&\fI#line\fP directives specified by the user will be retained.
+.TP
+\fB\-o \fP\fIoutput_file\fR
+specify the filename for the parser file.
+If this option is not given, the output filename is
+the file prefix concatenated with the file suffix, e.g., \fBy.tab.c\fP.
+This overrides the \fB-p\fP option.
+.TP
+\fB\-p \fP\fIsymbol_prefix\fR
+The
+.B \-p
+option changes the prefix prepended to yacc-generated symbols to
+the string denoted by
+.IR symbol_prefix.
+The default prefix is the string
+.BR yy.
+.TP
+.B \-P
+create a reentrant parser, e.g., "%pure-parser".
+.TP
+.B \-r
+The
+.B \-r
+option causes
+.B yacc
+to produce separate files for code and tables.  The code file
+is named
+.IR y.code.c,
+and the tables file is named
+.IR y.tab.c.
+The prefix "\fIy.\fP" can be overridden using the \fB\-b\fP option.
+.TP
+.B \-s
+suppress "\fB#define\fP" statements generated for string literals in
+a "\fB%token\fP" statement, to more closely match original \fByacc\fP beha=
vior.
+.IP
+Normally when \fByacc\fP sees a line such as
+.ES
+%token OP_ADD "ADD"
+.EE
+.IP
+it notices that the quoted "ADD" is a valid C identifier,
+and generates a #define not only for OP_ADD,
+but for ADD as well,
+e.g.,
+.ES
+#define OP_ADD 257
+.br
+#define ADD 258
+.EE
+.IP
+The original \fByacc\fP does not generate the second "\fB#define\fP".
+The \fB\-s\fP option suppresses this "\fB#define\fP".
+.IP
+POSIX (IEEE 1003.1 2004) documents only names and numbers for "\fB%token\f=
P",
+though original \fByacc\fP and bison also accept string literals.
+.TP
+.B \-t
+The
+.B \-t
+option changes the preprocessor directives generated by
+.B yacc
+so that debugging statements will be incorporated in the compiled code.
+.TP
+.B \-v
+The
+.B \-v
+option causes a human-readable description of the generated parser to
+be written to the file
+.IR y.output.
+.TP
+.B \-V
+print the version number to the standard output.
+.TP
+.B \-y
+\fByacc\fP ignores this option,
+which bison supports for ostensible POSIX compatibility.
+.SH EXTENSIONS
+.B yacc
+provides some extensions for compatibility with bison and other implementa=
tions
+of yacc:
+.TP
+\fB %expect\fP \fInumber\fP
+tell \fByacc\fP the expected number of shift/reduce conflicts.
+That makes it only report the number if it differs.
+.TP
+\fB %expect-rr\fP \fInumber\fP
+tell \fByacc\fP the expected number of reduce/reduce conflicts.
+That makes it only report the number if it differs.
+This is (unlike bison) allowable in LALR parsers.
+.TP
+\fB %lex-param\fP { \fIargument-declaration\fP }
+By default, the lexer accepts no parameters, e.g., \fByylex()\fP.
+Use this directive to add parameter declarations for your customized lexer.
+.TP
+\fB %parse-param\fP { \fIargument-declaration\fP }
+By default, the parser accepts no parameters, e.g., \fByyparse()\fP.
+Use this directive to add parameter declarations for your customized parse=
r.
+.TP
+\fB %pure-parser\fP
+Most variables (other than \fByydebug\fP and \fByynerrs\fP) are
+allocated on the stack within \fByyparse\fP, making the parser reasonably
+reentrant.
+.SH PORTABILITY
+According to Robert Corbett,
+.ES
+    Berkeley Yacc is an LALR(1) parser generator.  Berkeley Yacc has been =
made
+as compatible as possible with AT&T Yacc.  Berkeley Yacc can accept any in=
put
+specification that conforms to the AT&T Yacc documentation.  Specifications
+that take advantage of undocumented features of AT&T Yacc will probably be
+rejected.
+.EE
+.PP
+The rationale in
+.ES
+http://pubs.opengroup.org/onlinepubs/9699919799/utilities/yacc.html
+.EE
+.PP
+documents some features of AT&T yacc which are no longer required for POSIX
+compliance.
+.PP
+That said, you may be interested in reusing grammary files with some
+other implementation which is not strictly compatible with AT&T yacc.
+For instance, there is bison.
+Here are a few differences:
+.bP
+\fBYacc\fP accepts an equals mark preceding the left curly brace
+of an action (as in the original grammar file \fBftp.y\fP):
+.ES
+	|	STAT CRLF
+		=3D {
+			statcmd();
+		}
+.EE
+.bP
+\fBYacc\fP and bison emit code in different order, and in particular bison
+makes forward reference to common functions such as yylex, yyparse and
+yyerror without providing prototypes.
+.bP
+Bison's support for "%expect" is broken in more than one release.
+For best results using bison, delete that directive.
+.bP
+Bison has no equivalent for some of \fByacc\fP's commmand-line options,
+relying on directives embedded in the grammar file.
+.bP
+Bison's "\fB\-y\fP" option does not affect bison's lack of support for
+features of AT&T yacc which were deemed obsolescent.
+.
+.SH DIAGNOSTICS
+If there are rules that are never reduced, the number of such rules is
+reported on standard error.
+If there are any LALR(1) conflicts, the number of conflicts is reported
+on standard error.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/com_err/com_err.3
--- a/head/contrib/com_err/com_err.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/com_err/com_err.3	Wed Jul 25 16:21:35 2012 +0300
@@ -54,7 +54,7 @@
 .Sh SYNOPSIS
 .Fd #include <stdio.h>
 .Fd #include <stdarg.h>
-.Fd #include <krb5/com_err.h>
+.Fd #include <com_err.h>
 .Fd #include \&"XXX_err.h\&"
 .Pp
 typedef void (*errf)(const char *, long, const char *, ...);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/compiler-rt/lib/sparc64/d=
ivmod.m4
--- a/head/contrib/compiler-rt/lib/sparc64/divmod.m4	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/compiler-rt/lib/sparc64/divmod.m4	Wed Jul 25 16:21:35 20=
12 +0300
@@ -59,9 +59,6 @@
=20
 #include "../assembly.h"
=20
-.text
-	.align 4
-
 define(DEVELOP_QUOTIENT_BITS,
 `	!depth $1, accumulated bits $2
 	bl	L.$1.eval(TWOSUPN+$2)
@@ -84,12 +81,14 @@
 	ifelse( $1, 1, `9:')
 ')
 ifelse( ANSWER, `quotient', `
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__udivsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	b	divide
 	mov	0,SIGN			! result always nonnegative
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__divsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	orcc	divisor,dividend,%g0	! are either dividend or divisor negative
 	bge	divide			! if not, skip this junk
 	xor	divisor,dividend,SIGN	! record sign of result in sign of SIGN
@@ -104,12 +103,14 @@
 	neg	dividend
 	! FALL THROUGH
 ',`
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__umodsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	b	divide
 	mov	0,SIGN			! result always nonnegative
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__modsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	orcc	divisor,dividend,%g0	! are either dividend or divisor negative
 	bge	divide			! if not, skip this junk
 	mov	dividend,SIGN		! record sign of result in sign of SIGN
@@ -184,8 +185,8 @@
 	nop
 	sub	R,V,R
 	mov	1,Q
-	b	end_single_divloop
-	nop
+	b,a	end_single_divloop
+	! EMPTY
 single_divloop:
 	sll	Q,1,Q
 	bl	1f
@@ -202,8 +203,8 @@
 		deccc	SC
 		bge	single_divloop
 		tst	R
-		b	end_regular_divide
-		nop
+		b,a	end_regular_divide
+		! EMPTY
=20
 not_really_big:
 1:
@@ -224,9 +225,8 @@
 	deccc	ITER
 	bge	divloop
 	tst	R
-	bge	got_result
-	nop
-	! non-restoring fixup here
+	bl,a	got_result
+	! non-restoring fixup if remainder < 0, otherwise annulled
 ifelse( ANSWER, `quotient',
 `	dec	Q
 ',`	add	R,divisor,R
@@ -234,13 +234,11 @@
=20
 got_result:
 	tst	SIGN
-	bge	1f
-	restore
-	! answer < 0
-	retl				! leaf-routine return
+	bl,a	1f
+	! negate for answer < 0, otherwise annulled
 ifelse( ANSWER, `quotient',
-`	neg	%o2,%o0			! quotient <- -Q
-',`	neg	%o3,%o0 		! remainder <- -R
+`	neg	%o2,%o2			! Q <- -Q
+',`	neg	%o3,%o3 		! R <- -R
 ')
 1:
 	retl				! leaf-routine return
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/compiler-rt/lib/sparc64/d=
ivsi3.S
--- a/head/contrib/compiler-rt/lib/sparc64/divsi3.S	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/compiler-rt/lib/sparc64/divsi3.S	Wed Jul 25 16:21:35 201=
2 +0300
@@ -47,13 +47,13 @@
  */
 #include "../assembly.h"
 .text
-	.align 4
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__udivsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	b	divide
 	mov	0,%g3			! result always nonnegative
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__divsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	orcc	%o1,%o0,%g0	! are either %o0 or %o1 negative
 	bge	divide			! if not, skip this junk
 	xor	%o1,%o0,%g3	! record sign of result in sign of %g3
@@ -126,8 +126,8 @@
 	nop
 	sub	%o3,%o5,%o3
 	mov	1,%o2
-	b	end_single_divloop
-	nop
+	b,a	end_single_divloop
+	! EMPTY
 single_divloop:
 	sll	%o2,1,%o2
 	bl	1f
@@ -144,8 +144,8 @@
 		deccc	%g2
 		bge	single_divloop
 		tst	%o3
-		b	end_regular_divide
-		nop
+		b,a	end_regular_divide
+		! EMPTY
 not_really_big:
 1:
 	sll	%o5,4,%o5
@@ -317,17 +317,14 @@
 	deccc	%o4
 	bge	divloop
 	tst	%o3
-	bge	got_result
-	nop
-	! non-restoring fixup here
+	bl,a	got_result
+	! non-restoring fixup if remainder < 0, otherwise annulled
 	dec	%o2
 got_result:
 	tst	%g3
-	bge	1f
-	restore
-	! answer < 0
-	retl				! leaf-routine return
-	neg	%o2,%o0			! quotient <- -%o2
+	bl,a	1f
+	! negate for answer < 0, otherwise annulled
+	neg	%o2,%o2			! %o2 <- -%o2
 1:
 	retl				! leaf-routine return
 	mov	%o2,%o0			! quotient <- %o2
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/compiler-rt/lib/sparc64/m=
odsi3.S
--- a/head/contrib/compiler-rt/lib/sparc64/modsi3.S	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/compiler-rt/lib/sparc64/modsi3.S	Wed Jul 25 16:21:35 201=
2 +0300
@@ -47,13 +47,13 @@
  */
 #include "../assembly.h"
 .text
-	.align 4
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__umodsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	b	divide
 	mov	0,%g3			! result always nonnegative
+.text
+	.align 32
 DEFINE_COMPILERRT_FUNCTION(__modsi3)
-	save	%sp,-64,%sp		! do this for debugging
 	orcc	%o1,%o0,%g0	! are either %o0 or %o1 negative
 	bge	divide			! if not, skip this junk
 	mov	%o0,%g3		! record sign of result in sign of %g3
@@ -126,8 +126,8 @@
 	nop
 	sub	%o3,%o5,%o3
 	mov	1,%o2
-	b	end_single_divloop
-	nop
+	b,a	end_single_divloop
+	! EMPTY
 single_divloop:
 	sll	%o2,1,%o2
 	bl	1f
@@ -144,8 +144,8 @@
 		deccc	%g2
 		bge	single_divloop
 		tst	%o3
-		b	end_regular_divide
-		nop
+		b,a	end_regular_divide
+		! EMPTY
 not_really_big:
 1:
 	sll	%o5,4,%o5
@@ -317,17 +317,14 @@
 	deccc	%o4
 	bge	divloop
 	tst	%o3
-	bge	got_result
-	nop
-	! non-restoring fixup here
+	bl,a	got_result
+	! non-restoring fixup if remainder < 0, otherwise annulled
 	add	%o3,%o1,%o3
 got_result:
 	tst	%g3
-	bge	1f
-	restore
-	! answer < 0
-	retl				! leaf-routine return
-	neg	%o3,%o0 		! remainder <- -%o3
+	bl,a	1f
+	! negate for answer < 0, otherwise annulled
+	neg	%o3,%o3 		! %o3 <- -%o3
 1:
 	retl				! leaf-routine return
 	mov	%o3,%o0			! remainder <- %o3
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/Documentation/dts-for=
mat.txt
--- a/head/contrib/dtc/Documentation/dts-format.txt	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/dtc/Documentation/dts-format.txt	Wed Jul 25 16:21:35 201=
2 +0300
@@ -29,18 +29,28 @@
 form:
 	[label:] property-name;
=20
-Property values may be defined as an array of 32-bit integer cells, as
-NUL-terminated strings, as bytestrings or a combination of these.
+Property values may be defined as an array of 8, 16, 32, or 64-bit integer
+elements, as NUL-terminated strings, as bytestrings or a combination of th=
ese.
=20
-* Arrays of cells are represented by angle brackets surrounding a
-  space separated list of C-style integers
+* Arrays are represented by angle brackets surrounding a space separated l=
ist
+  of C-style integers or character literals.  Array elements default to 32=
-bits
+  in size.  An array of 32-bit elements is also known as a cell list or a =
list
+  of cells.  A cell being an unsigned 32-bit integer.
=20
 	e.g. interrupts =3D <17 0xc>;
=20
-* A 64-bit value is represented with two 32-bit cells.
+* A 64-bit value can be represented with two 32-bit elements.
=20
 	e.g. clock-frequency =3D <0x00000001 0x00000000>;
=20
+* The storage size of an element can be changed using the /bits/ prefix.  =
The
+  /bits/ prefix allows for the creation of 8, 16, 32, and 64-bit elements.
+  The resulting array will not be padded to a multiple of the default 32-b=
it
+  element size.
+
+	e.g. interrupts =3D /bits/ 8 <17 0xc>;
+	e.g. clock-frequency =3D /bits/ 64 <0x0000000100000000>;
+
 * A NUL-terminated string value is represented using double quotes
   (the property value is considered to include the terminating NUL
   character).
@@ -59,19 +69,20 @@
 	e.g. compatible =3D "ns16550", "ns8250";
 	     example =3D <0xf00f0000 19>, "a strange property format";
=20
-* In a cell array a reference to another node will be expanded to that
-  node's phandle.  References may by '&' followed by a node's label:
+* In an array a reference to another node will be expanded to that node's
+  phandle.  References may by '&' followed by a node's label:
 	e.g. interrupt-parent =3D < &mpic >;
   or they may be '&' followed by a node's full path in braces:
 	e.g. interrupt-parent =3D < &{/soc/interrupt-controller at 40000} >;
+  References are only permitted in arrays that have an element size of
+  32-bits.
=20
-* Outside a cell array, a reference to another node will be expanded
-  to that node's full path.
+* Outside an array, a reference to another node will be expanded to that
+  node's full path.
 	e.g. ethernet0 =3D &EMAC0;
=20
 * Labels may also appear before or after any component of a property
-  value, or between cells of a cell array, or between bytes of a
-  bytestring.
+  value, or between elements of an array, or between bytes of a bytestring.
 	e.g. reg =3D reglabel: <0 sizelabel: 0x1000000>;
 	e.g. prop =3D [ab cd ef byte4: 00 ff fe];
 	e.g. str =3D start: "string value" end: ;
@@ -108,3 +119,4 @@
=20
 	-- David Gibson <david at gibson.dropbear.id.au>
 	-- Yoder Stuart <stuart.yoder at freescale.com>
+	-- Anton Staaf <robotboy at chromium.org>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/Documentation/manual.=
txt
--- a/head/contrib/dtc/Documentation/manual.txt	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/dtc/Documentation/manual.txt	Wed Jul 25 16:21:35 2012 +0=
300
@@ -21,7 +21,7 @@
=20
 IV - Utility Tools
     1) convert-dtsv0 -- Conversion to Version 1
-    1) ftdump
+    1) fdtdump
=20
=20
 I - "dtc", the device tree compiler
@@ -106,6 +106,9 @@
     -O <output_format>
 	The generated output format, as listed above.
=20
+    -d <dependency_filename>
+	Generate a dependency file during compilation.
+
     -q
 	Quiet: -q suppress warnings, -qq errors, -qqq all
=20
@@ -643,10 +646,10 @@
 Comments, empty lines, etc. are preserved.
=20
=20
-2) ftdump -- Flat Tree dumping utility
+2) fdtdump -- Flat Device Tree dumping utility
=20
-The ftdump program prints a readable version of a flat device tree file.
+The fdtdump program prints a readable version of a flat device tree file.
=20
-The syntax of the ftdump command line is:
+The syntax of the fdtdump command line is:
=20
-    ftdump <DTB-file-name>
+    fdtdump <DTB-file-name>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/Makefile
--- a/head/contrib/dtc/Makefile	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/Makefile	Wed Jul 25 16:21:35 2012 +0300
@@ -9,14 +9,16 @@
 # CONFIG_LOCALVERSION from some future config system.
 #
 VERSION =3D 1
-PATCHLEVEL =3D 2
+PATCHLEVEL =3D 3
 SUBLEVEL =3D 0
 EXTRAVERSION =3D
 LOCAL_VERSION =3D
 CONFIG_LOCALVERSION =3D
=20
-CPPFLAGS =3D -I libfdt
-CFLAGS =3D -Wall -g -Os -fPIC -Wpointer-arith -Wcast-qual
+CPPFLAGS =3D -I libfdt -I .
+WARNINGS =3D -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
+	-Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls
+CFLAGS =3D -g -Os -fPIC -Werror $(WARNINGS)
=20
 BISON =3D bison
 LEX =3D flex
@@ -103,12 +105,15 @@
=20
 include Makefile.convert-dtsv0
 include Makefile.dtc
-include Makefile.ftdump
+include Makefile.utils
=20
 BIN +=3D convert-dtsv0
 BIN +=3D dtc
-BIN +=3D ftdump
+BIN +=3D fdtdump
+BIN +=3D fdtget
+BIN +=3D fdtput
=20
+SCRIPTS =3D dtdiff
=20
 all: $(BIN) libfdt
=20
@@ -116,7 +121,9 @@
 ifneq ($(DEPTARGETS),)
 -include $(DTC_OBJS:%.o=3D%.d)
 -include $(CONVERT_OBJS:%.o=3D%.d)
--include $(FTDUMP_OBJS:%.o=3D%.d)
+-include $(FDTDUMP_OBJS:%.o=3D%.d)
+-include $(FDTGET_OBJS:%.o=3D%.d)
+-include $(FDTPUT_OBJS:%.o=3D%.d)
 endif
=20
=20
@@ -127,7 +134,7 @@
 LIBFDT_objdir =3D libfdt
 LIBFDT_srcdir =3D libfdt
 LIBFDT_archive =3D $(LIBFDT_objdir)/libfdt.a
-LIBFDT_lib =3D $(LIBFDT_objdir)/libfdt.$(SHAREDLIB_EXT)
+LIBFDT_lib =3D $(LIBFDT_objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT)
 LIBFDT_include =3D $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES))
 LIBFDT_version =3D $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION))
=20
@@ -153,12 +160,14 @@
 # intermediate target and building them again "for real"
 .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
=20
-install: all
+install: all $(SCRIPTS)
 	@$(VECHO) INSTALL
 	$(INSTALL) -d $(DESTDIR)$(BINDIR)
-	$(INSTALL) $(BIN) $(DESTDIR)$(BINDIR)
+	$(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
 	$(INSTALL) -d $(DESTDIR)$(LIBDIR)
 	$(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
+	ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
+	ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT)
 	$(INSTALL) -m 644 $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
 	$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
 	$(INSTALL) -m 644 $(LIBFDT_include) $(DESTDIR)$(INCLUDEDIR)
@@ -173,19 +182,29 @@
 	@$(VECHO) LD $@
 	$(LINK.c) -o $@ $^
=20
-ftdump:	$(FTDUMP_OBJS)
+fdtdump:	$(FDTDUMP_OBJS)
+
+fdtget:	$(FDTGET_OBJS) $(LIBFDT_archive)
+
+fdtput:	$(FDTPUT_OBJS) $(LIBFDT_archive)
=20
=20
 #
 # Testsuite rules
 #
 TESTS_PREFIX=3Dtests/
+
+TESTS_BIN +=3D dtc
+TESTS_BIN +=3D convert-dtsv0
+TESTS_BIN +=3D fdtput
+TESTS_BIN +=3D fdtget
+
 include tests/Makefile.tests
=20
 #
 # Clean rules
 #
-STD_CLEANFILES =3D *~ *.o *.so *.d *.a *.i *.s core a.out vgcore.* \
+STD_CLEANFILES =3D *~ *.o *.$(SHAREDLIB_EXT) *.d *.a *.i *.s core a.out vg=
core.* \
 	*.tab.[ch] *.lex.c *.output
=20
 clean: libfdt_clean tests_clean
@@ -231,8 +250,7 @@
=20
 $(LIBFDT_lib):
 	@$(VECHO) LD $@
-	$(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(notdir $@) -o $(LIBFDT_=
objdir)/libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $^
-	ln -sf libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) $(LIBFDT_objdir)/libfdt.$(S=
HAREDLIB_EXT)
+	$(CC) $(LDFLAGS) -fPIC $(SHAREDLIB_LINK_OPTIONS)$(LIBFDT_soname) -o $(LIB=
FDT_lib) $^
=20
 %.lex.c: %.l
 	@$(VECHO) LEX $@
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/Makefile.convert-dtsv0
--- a/head/contrib/dtc/Makefile.convert-dtsv0	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-#
-# This is not a complete Makefile of itself.
-# Instead, it is designed to be easily embeddable
-# into other systems of Makefiles.
-#
-
-CONVERT_SRCS =3D \
-	srcpos.c \
-	util.c
-
-CONVERT_GEN_SRCS =3D convert-dtsv0-lexer.lex.c
-
-CONVERT_OBJS =3D $(CONVERT_SRCS:%.c=3D%.o) $(CONVERT_GEN_SRCS:%.c=3D%.o)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/Makefile.ftdump
--- a/head/contrib/dtc/Makefile.ftdump	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#
-# This is not a complete Makefile of itself.
-# Instead, it is designed to be easily embeddable
-# into other systems of Makefiles.
-#
-
-FTDUMP_SRCS =3D \
-	ftdump.c
-
-FTDUMP_GEN_SRCS =3D
-
-FTDUMP_OBJS =3D $(FTDUMP_SRCS:%.c=3D%.o) $(FTDUMP_GEN_SRCS:%.c=3D%.o)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/checks.c
--- a/head/contrib/dtc/checks.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/checks.c	Wed Jul 25 16:21:35 2012 +0300
@@ -31,12 +31,6 @@
 #define TRACE(c, fmt, ...)	do { } while (0)
 #endif
=20
-enum checklevel {
-	IGNORE =3D 0,
-	WARN =3D 1,
-	ERROR =3D 2,
-};
-
 enum checkstatus {
 	UNCHECKED =3D 0,
 	PREREQ,
@@ -57,14 +51,14 @@
 	node_check_fn node_fn;
 	prop_check_fn prop_fn;
 	void *data;
-	enum checklevel level;
+	bool warn, error;
 	enum checkstatus status;
 	int inprogress;
 	int num_prereqs;
 	struct check **prereq;
 };
=20
-#define CHECK(nm, tfn, nfn, pfn, d, lvl, ...) \
+#define CHECK_ENTRY(nm, tfn, nfn, pfn, d, w, e, ...)	       \
 	static struct check *nm##_prereqs[] =3D { __VA_ARGS__ }; \
 	static struct check nm =3D { \
 		.name =3D #nm, \
@@ -72,20 +66,37 @@
 		.node_fn =3D (nfn), \
 		.prop_fn =3D (pfn), \
 		.data =3D (d), \
-		.level =3D (lvl), \
+		.warn =3D (w), \
+		.error =3D (e), \
 		.status =3D UNCHECKED, \
 		.num_prereqs =3D ARRAY_SIZE(nm##_prereqs), \
 		.prereq =3D nm##_prereqs, \
 	};
+#define WARNING(nm, tfn, nfn, pfn, d, ...) \
+	CHECK_ENTRY(nm, tfn, nfn, pfn, d, true, false, __VA_ARGS__)
+#define ERROR(nm, tfn, nfn, pfn, d, ...) \
+	CHECK_ENTRY(nm, tfn, nfn, pfn, d, false, true, __VA_ARGS__)
+#define CHECK(nm, tfn, nfn, pfn, d, ...) \
+	CHECK_ENTRY(nm, tfn, nfn, pfn, d, false, false, __VA_ARGS__)
=20
-#define TREE_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, check_##nm, NULL, NULL, d, lvl, __VA_ARGS__)
-#define NODE_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, NULL, check_##nm, NULL, d, lvl, __VA_ARGS__)
-#define PROP_CHECK(nm, d, lvl, ...) \
-	CHECK(nm, NULL, NULL, check_##nm, d, lvl, __VA_ARGS__)
-#define BATCH_CHECK(nm, lvl, ...) \
-	CHECK(nm, NULL, NULL, NULL, NULL, lvl, __VA_ARGS__)
+#define TREE_WARNING(nm, d, ...) \
+	WARNING(nm, check_##nm, NULL, NULL, d, __VA_ARGS__)
+#define TREE_ERROR(nm, d, ...) \
+	ERROR(nm, check_##nm, NULL, NULL, d, __VA_ARGS__)
+#define TREE_CHECK(nm, d, ...) \
+	CHECK(nm, check_##nm, NULL, NULL, d, __VA_ARGS__)
+#define NODE_WARNING(nm, d, ...) \
+	WARNING(nm, NULL, check_##nm, NULL, d,  __VA_ARGS__)
+#define NODE_ERROR(nm, d, ...) \
+	ERROR(nm, NULL, check_##nm, NULL, d, __VA_ARGS__)
+#define NODE_CHECK(nm, d, ...) \
+	CHECK(nm, NULL, check_##nm, NULL, d, __VA_ARGS__)
+#define PROP_WARNING(nm, d, ...) \
+	WARNING(nm, NULL, NULL, check_##nm, d, __VA_ARGS__)
+#define PROP_ERROR(nm, d, ...) \
+	ERROR(nm, NULL, NULL, check_##nm, d, __VA_ARGS__)
+#define PROP_CHECK(nm, d, ...) \
+	CHECK(nm, NULL, NULL, check_##nm, d, __VA_ARGS__)
=20
 #ifdef __GNUC__
 static inline void check_msg(struct check *c, const char *fmt, ...) __attr=
ibute__((format (printf, 2, 3)));
@@ -95,13 +106,13 @@
 	va_list ap;
 	va_start(ap, fmt);
=20
-	if ((c->level < WARN) || (c->level <=3D quiet))
-		return; /* Suppress message */
-
-	fprintf(stderr, "%s (%s): ",
-		(c->level =3D=3D ERROR) ? "ERROR" : "Warning", c->name);
-	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, "\n");
+	if ((c->warn && (quiet < 1))
+	    || (c->error && (quiet < 2))) {
+		fprintf(stderr, "%s (%s): ",
+			(c->error) ? "ERROR" : "Warning", c->name);
+		vfprintf(stderr, fmt, ap);
+		fprintf(stderr, "\n");
+	}
 }
=20
 #define FAIL(c, ...) \
@@ -167,7 +178,7 @@
=20
 out:
 	c->inprogress =3D 0;
-	if ((c->status !=3D PASSED) && (c->level =3D=3D ERROR))
+	if ((c->status !=3D PASSED) && (c->error))
 		error =3D 1;
 	return error;
 }
@@ -176,6 +187,13 @@
  * Utility check functions
  */
=20
+/* A check which always fails, for testing purposes only */
+static inline void check_always_fail(struct check *c, struct node *dt)
+{
+	FAIL(c, "always_fail check");
+}
+TREE_CHECK(always_fail, NULL);
+
 static void check_is_string(struct check *c, struct node *root,
 			    struct node *node)
 {
@@ -190,8 +208,10 @@
 		FAIL(c, "\"%s\" property in %s is not a string",
 		     propname, node->fullpath);
 }
-#define CHECK_IS_STRING(nm, propname, lvl) \
-	CHECK(nm, NULL, check_is_string, NULL, (propname), (lvl))
+#define WARNING_IF_NOT_STRING(nm, propname) \
+	WARNING(nm, NULL, check_is_string, NULL, (propname))
+#define ERROR_IF_NOT_STRING(nm, propname) \
+	ERROR(nm, NULL, check_is_string, NULL, (propname))
=20
 static void check_is_cell(struct check *c, struct node *root,
 			  struct node *node)
@@ -207,8 +227,10 @@
 		FAIL(c, "\"%s\" property in %s is not a single cell",
 		     propname, node->fullpath);
 }
-#define CHECK_IS_CELL(nm, propname, lvl) \
-	CHECK(nm, NULL, check_is_cell, NULL, (propname), (lvl))
+#define WARNING_IF_NOT_CELL(nm, propname) \
+	WARNING(nm, NULL, check_is_cell, NULL, (propname))
+#define ERROR_IF_NOT_CELL(nm, propname) \
+	ERROR(nm, NULL, check_is_cell, NULL, (propname))
=20
 /*
  * Structural check functions
@@ -227,7 +249,7 @@
 				FAIL(c, "Duplicate node name %s",
 				     child->fullpath);
 }
-NODE_CHECK(duplicate_node_names, NULL, ERROR);
+NODE_ERROR(duplicate_node_names, NULL);
=20
 static void check_duplicate_property_names(struct check *c, struct node *d=
t,
 					   struct node *node)
@@ -240,7 +262,7 @@
 				FAIL(c, "Duplicate property name %s in %s",
 				     prop->name, node->fullpath);
 }
-NODE_CHECK(duplicate_property_names, NULL, ERROR);
+NODE_ERROR(duplicate_property_names, NULL);
=20
 #define LOWERCASE	"abcdefghijklmnopqrstuvwxyz"
 #define UPPERCASE	"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -256,7 +278,7 @@
 		FAIL(c, "Bad character '%c' in node %s",
 		     node->name[n], node->fullpath);
 }
-NODE_CHECK(node_name_chars, PROPNODECHARS "@", ERROR);
+NODE_ERROR(node_name_chars, PROPNODECHARS "@");
=20
 static void check_node_name_format(struct check *c, struct node *dt,
 				   struct node *node)
@@ -265,7 +287,7 @@
 		FAIL(c, "Node %s has multiple '@' characters in name",
 		     node->fullpath);
 }
-NODE_CHECK(node_name_format, NULL, ERROR, &node_name_chars);
+NODE_ERROR(node_name_format, NULL, &node_name_chars);
=20
 static void check_property_name_chars(struct check *c, struct node *dt,
 				      struct node *node, struct property *prop)
@@ -276,7 +298,63 @@
 		FAIL(c, "Bad character '%c' in property name \"%s\", node %s",
 		     prop->name[n], prop->name, node->fullpath);
 }
-PROP_CHECK(property_name_chars, PROPNODECHARS, ERROR);
+PROP_ERROR(property_name_chars, PROPNODECHARS);
+
+#define DESCLABEL_FMT	"%s%s%s%s%s"
+#define DESCLABEL_ARGS(node,prop,mark)		\
+	((mark) ? "value of " : ""),		\
+	((prop) ? "'" : ""), \
+	((prop) ? (prop)->name : ""), \
+	((prop) ? "' in " : ""), (node)->fullpath
+
+static void check_duplicate_label(struct check *c, struct node *dt,
+				  const char *label, struct node *node,
+				  struct property *prop, struct marker *mark)
+{
+	struct node *othernode =3D NULL;
+	struct property *otherprop =3D NULL;
+	struct marker *othermark =3D NULL;
+
+	othernode =3D get_node_by_label(dt, label);
+
+	if (!othernode)
+		otherprop =3D get_property_by_label(dt, label, &othernode);
+	if (!othernode)
+		othermark =3D get_marker_label(dt, label, &othernode,
+					       &otherprop);
+
+	if (!othernode)
+		return;
+
+	if ((othernode !=3D node) || (otherprop !=3D prop) || (othermark !=3D mar=
k))
+		FAIL(c, "Duplicate label '%s' on " DESCLABEL_FMT
+		     " and " DESCLABEL_FMT,
+		     label, DESCLABEL_ARGS(node, prop, mark),
+		     DESCLABEL_ARGS(othernode, otherprop, othermark));
+}
+
+static void check_duplicate_label_node(struct check *c, struct node *dt,
+				       struct node *node)
+{
+	struct label *l;
+
+	for_each_label(node->labels, l)
+		check_duplicate_label(c, dt, l->label, node, NULL, NULL);
+}
+static void check_duplicate_label_prop(struct check *c, struct node *dt,
+				       struct node *node, struct property *prop)
+{
+	struct marker *m =3D prop->val.markers;
+	struct label *l;
+
+	for_each_label(prop->labels, l)
+		check_duplicate_label(c, dt, l->label, node, prop, NULL);
+
+	for_each_marker_of_type(m, LABEL)
+		check_duplicate_label(c, dt, m->ref, node, prop, m);
+}
+ERROR(duplicate_label, NULL, check_duplicate_label_node,
+      check_duplicate_label_prop, NULL);
=20
 static void check_explicit_phandles(struct check *c, struct node *root,
 				    struct node *node, struct property *prop)
@@ -335,7 +413,7 @@
=20
 	node->phandle =3D phandle;
 }
-PROP_CHECK(explicit_phandles, NULL, ERROR);
+PROP_ERROR(explicit_phandles, NULL);
=20
 static void check_name_properties(struct check *c, struct node *root,
 				  struct node *node)
@@ -364,8 +442,8 @@
 		free(prop);
 	}
 }
-CHECK_IS_STRING(name_is_string, "name", ERROR);
-NODE_CHECK(name_properties, NULL, ERROR, &name_is_string);
+ERROR_IF_NOT_STRING(name_is_string, "name");
+NODE_ERROR(name_properties, NULL, &name_is_string);
=20
 /*
  * Reference fixup functions
@@ -392,7 +470,7 @@
 		*((cell_t *)(prop->val.val + m->offset)) =3D cpu_to_fdt32(phandle);
 	}
 }
-CHECK(phandle_references, NULL, NULL, fixup_phandle_references, NULL, ERRO=
R,
+ERROR(phandle_references, NULL, NULL, fixup_phandle_references, NULL,
       &duplicate_node_names, &explicit_phandles);
=20
 static void fixup_path_references(struct check *c, struct node *dt,
@@ -417,19 +495,19 @@
 						  strlen(path) + 1);
 	}
 }
-CHECK(path_references, NULL, NULL, fixup_path_references, NULL, ERROR,
+ERROR(path_references, NULL, NULL, fixup_path_references, NULL,
       &duplicate_node_names);
=20
 /*
  * Semantic checks
  */
-CHECK_IS_CELL(address_cells_is_cell, "#address-cells", WARN);
-CHECK_IS_CELL(size_cells_is_cell, "#size-cells", WARN);
-CHECK_IS_CELL(interrupt_cells_is_cell, "#interrupt-cells", WARN);
+WARNING_IF_NOT_CELL(address_cells_is_cell, "#address-cells");
+WARNING_IF_NOT_CELL(size_cells_is_cell, "#size-cells");
+WARNING_IF_NOT_CELL(interrupt_cells_is_cell, "#interrupt-cells");
=20
-CHECK_IS_STRING(device_type_is_string, "device_type", WARN);
-CHECK_IS_STRING(model_is_string, "model", WARN);
-CHECK_IS_STRING(status_is_string, "status", WARN);
+WARNING_IF_NOT_STRING(device_type_is_string, "device_type");
+WARNING_IF_NOT_STRING(model_is_string, "model");
+WARNING_IF_NOT_STRING(status_is_string, "status");
=20
 static void fixup_addr_size_cells(struct check *c, struct node *dt,
 				  struct node *node)
@@ -447,8 +525,8 @@
 	if (prop)
 		node->size_cells =3D propval_cell(prop);
 }
-CHECK(addr_size_cells, NULL, fixup_addr_size_cells, NULL, NULL, WARN,
-      &address_cells_is_cell, &size_cells_is_cell);
+WARNING(addr_size_cells, NULL, fixup_addr_size_cells, NULL, NULL,
+	&address_cells_is_cell, &size_cells_is_cell);
=20
 #define node_addr_cells(n) \
 	(((n)->addr_cells =3D=3D -1) ? 2 : (n)->addr_cells)
@@ -482,7 +560,7 @@
 		     "(#address-cells =3D=3D %d, #size-cells =3D=3D %d)",
 		     node->fullpath, prop->val.len, addr_cells, size_cells);
 }
-NODE_CHECK(reg_format, NULL, WARN, &addr_size_cells);
+NODE_WARNING(reg_format, NULL, &addr_size_cells);
=20
 static void check_ranges_format(struct check *c, struct node *dt,
 				struct node *node)
@@ -523,7 +601,7 @@
 		     p_addr_cells, c_addr_cells, c_size_cells);
 	}
 }
-NODE_CHECK(ranges_format, NULL, WARN, &addr_size_cells);
+NODE_WARNING(ranges_format, NULL, &addr_size_cells);
=20
 /*
  * Style checks
@@ -550,7 +628,7 @@
 		FAIL(c, "Relying on default #size-cells value for %s",
 		     node->fullpath);
 }
-NODE_CHECK(avoid_default_addr_size, NULL, WARN, &addr_size_cells);
+NODE_WARNING(avoid_default_addr_size, NULL, &addr_size_cells);
=20
 static void check_obsolete_chosen_interrupt_controller(struct check *c,
 						       struct node *dt)
@@ -567,12 +645,15 @@
 		FAIL(c, "/chosen has obsolete \"interrupt-controller\" "
 		     "property");
 }
-TREE_CHECK(obsolete_chosen_interrupt_controller, NULL, WARN);
+TREE_WARNING(obsolete_chosen_interrupt_controller, NULL);
=20
 static struct check *check_table[] =3D {
 	&duplicate_node_names, &duplicate_property_names,
 	&node_name_chars, &node_name_format, &property_name_chars,
 	&name_is_string, &name_properties,
+
+	&duplicate_label,
+
 	&explicit_phandles,
 	&phandle_references, &path_references,
=20
@@ -583,8 +664,71 @@
=20
 	&avoid_default_addr_size,
 	&obsolete_chosen_interrupt_controller,
+
+	&always_fail,
 };
=20
+static void enable_warning_error(struct check *c, bool warn, bool error)
+{
+	int i;
+
+	/* Raising level, also raise it for prereqs */
+	if ((warn && !c->warn) || (error && !c->error))
+		for (i =3D 0; i < c->num_prereqs; i++)
+			enable_warning_error(c->prereq[i], warn, error);
+
+	c->warn =3D c->warn || warn;
+	c->error =3D c->error || error;
+}
+
+static void disable_warning_error(struct check *c, bool warn, bool error)
+{
+	int i;
+
+	/* Lowering level, also lower it for things this is the prereq
+	 * for */
+	if ((warn && c->warn) || (error && c->error)) {
+		for (i =3D 0; i < ARRAY_SIZE(check_table); i++) {
+			struct check *cc =3D check_table[i];
+			int j;
+
+			for (j =3D 0; j < cc->num_prereqs; j++)
+				if (cc->prereq[j] =3D=3D c)
+					disable_warning_error(cc, warn, error);
+		}
+	}
+
+	c->warn =3D c->warn && !warn;
+	c->error =3D c->error && !error;
+}
+
+void parse_checks_option(bool warn, bool error, const char *optarg)
+{
+	int i;
+	const char *name =3D optarg;
+	bool enable =3D true;
+
+	if ((strncmp(optarg, "no-", 3) =3D=3D 0)
+	    || (strncmp(optarg, "no_", 3) =3D=3D 0)) {
+		name =3D optarg + 3;
+		enable =3D false;
+	}
+
+	for (i =3D 0; i < ARRAY_SIZE(check_table); i++) {
+		struct check *c =3D check_table[i];
+
+		if (streq(c->name, name)) {
+			if (enable)
+				enable_warning_error(c, warn, error);
+			else
+				disable_warning_error(c, warn, error);
+			return;
+		}
+	}
+
+	die("Unrecognized check name \"%s\"\n", name);
+}
+
 void process_checks(int force, struct boot_info *bi)
 {
 	struct node *dt =3D bi->dt;
@@ -594,7 +738,7 @@
 	for (i =3D 0; i < ARRAY_SIZE(check_table); i++) {
 		struct check *c =3D check_table[i];
=20
-		if (c->level !=3D IGNORE)
+		if (c->warn || c->error)
 			error =3D error || run_check(c, dt);
 	}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/convert-dtsv0-lexer.l
--- a/head/contrib/dtc/convert-dtsv0-lexer.l	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*
- * (C) Copyright David Gibson <dwg at au1.ibm.com>, IBM Corporation.  2005, 2=
008.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *                                                                   USA
- */
-
-%option noyywrap nounput noinput
-
-%x INCLUDE
-%x BYTESTRING
-%x PROPNODENAME
-
-PROPNODECHAR	[a-zA-Z0-9,._+*#?@-]
-PATHCHAR	({PROPNODECHAR}|[/])
-LABEL		[a-zA-Z_][a-zA-Z0-9_]*
-STRING		\"([^\\"]|\\.)*\"
-WS		[[:space:]]
-COMMENT		"/*"([^*]|\*+[^*/])*\*+"/"
-LINECOMMENT	"//".*\n
-GAP		({WS}|{COMMENT}|{LINECOMMENT})*
-
-%{
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include <errno.h>
-#include <assert.h>
-#include <fnmatch.h>
-
-#include "srcpos.h"
-#include "util.h"
-
-static int v1_tagged; /* =3D 0 */
-static int cbase =3D 16;
-static int saw_hyphen; /* =3D 0 */
-static unsigned long long last_val;
-static char *last_name; /* =3D NULL */
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-const struct {
-	const char *pattern;
-	int obase, width;
-} guess_table[] =3D {
-	{ "*-frequency", 10, 0 },
-	{ "num-*", 10, 0 },
-	{ "#*-cells", 10, 0 },
-	{ "*cache-line-size", 10, 0 },
-	{ "*cache-block-size", 10, 0 },
-	{ "*cache-size", 10, 0 },
-	{ "*cache-sets", 10, 0 },
-	{ "cell-index", 10, 0 },
-	{ "bank-width", 10, 0 },
-	{ "*-fifo-size", 10, 0 },
-	{ "*-frame-size", 10, 0 },
-	{ "*-channel", 10, 0 },
-	{ "current-speed", 10, 0 },
-	{ "phy-map", 16, 8 },
-	{ "dcr-reg", 16, 3 },
-	{ "reg", 16, 8 },
-	{ "ranges", 16, 8},
-};
-%}
-
-%%
-<*>"/include/"{GAP}{STRING}	ECHO;
-
-<*>\"([^\\"]|\\.)*\"	ECHO;
-
-<*>"/dts-v1/"	{
-			die("Input dts file is already version 1\n");
-		}
-
-<*>"/memreserve/"	{
-			if (!v1_tagged) {
-				fprintf(yyout, "/dts-v1/;\n\n");
-				v1_tagged =3D 1;
-			}
-
-			ECHO;
-			BEGIN(INITIAL);
-		}
-
-<*>{LABEL}:		ECHO;
-
-<INITIAL>[bodh]# {
-			if (*yytext =3D=3D 'b')
-				cbase =3D 2;
-			else if (*yytext =3D=3D 'o')
-				cbase =3D 8;
-			else if (*yytext =3D=3D 'd')
-				cbase =3D 10;
-			else
-				cbase =3D 16;
-		}
-
-<INITIAL>[0-9a-fA-F]+	{
-			unsigned long long val;
-			int obase =3D 16, width =3D 0;
-			int i;
-
-			val =3D strtoull(yytext, NULL, cbase);
-
-			if (saw_hyphen)
-				val =3D val - last_val + 1;
-
-			if (last_name) {
-				for (i =3D 0; i < ARRAY_SIZE(guess_table); i++)
-					if (fnmatch(guess_table[i].pattern,
-					    last_name, 0) =3D=3D 0) {
-						obase =3D guess_table[i].obase;
-						width =3D guess_table[i].width;
-					}
-			} else {
-				obase =3D 16;
-				width =3D 16;
-			}
-
-			if (cbase !=3D 16)
-				obase =3D cbase;
-
-			switch (obase) {
-			case 2:
-			case 16:
-				fprintf(yyout, "0x%0*llx", width, val);
-				break;
-			case 8:
-				fprintf(yyout, "0%0*llo", width, val);
-				break;
-			case 10:
-				fprintf(yyout, "%*llu", width, val);
-				break;
-			}
-
-			cbase =3D 16;
-			last_val =3D val;
-			saw_hyphen =3D 0;
-		}
-
-\&{LABEL}		ECHO;
-
-"&{/"{PATHCHAR}+\}	ECHO;
-
-<INITIAL>"&/"{PATHCHAR}+ fprintf(yyout, "&{/%s}", yytext + 2);
-
-<BYTESTRING>[0-9a-fA-F]{2} ECHO;
-
-<BYTESTRING>"]"	{
-			ECHO;
-			BEGIN(INITIAL);
-		}
-
-<PROPNODENAME>{PROPNODECHAR}+ {
-			ECHO;
-			last_name =3D xstrdup(yytext);
-			BEGIN(INITIAL);
-		}
-
-<*>{GAP}	ECHO;
-
-<*>-		{	/* Hack to convert old style memreserves */
-			saw_hyphen =3D 1;
-			fprintf(yyout, " ");
-		}
-
-<*>.		{
-			if (!v1_tagged) {
-				fprintf(yyout, "/dts-v1/;\n\n");
-				v1_tagged =3D 1;
-			}
-
-			ECHO;
-			if (yytext[0] =3D=3D '[') {
-				BEGIN(BYTESTRING);
-			}
-			if ((yytext[0] =3D=3D '{')
-			    || (yytext[0] =3D=3D ';')) {
-				BEGIN(PROPNODENAME);
-			}
-		}
-
-%%
-static void usage(void)
-{
-	fprintf(stderr, "convert-dtsv0 <v0 dts file>...\n");
-	exit(3);
-}
-
-static void convert_file(const char *fname)
-{
-	const char suffix[] =3D "v1";
-	int len =3D strlen(fname);
-	char *newname;
-
-	newname =3D xmalloc(len + sizeof(suffix));
-	memcpy(newname, fname, len);
-	memcpy(newname + len, suffix, sizeof(suffix));
-
-	srcpos_file =3D dtc_open_file(fname, NULL);
-	yyin =3D srcpos_file->file;
-
-	yyout =3D fopen(newname, "w");
-	if (!yyout)
-		die("Couldn't open output file %s: %s\n",
-		    newname, strerror(errno));
-
-	while(yylex())
-		;
-}
-
-int main(int argc, char *argv[])
-{
-	int i;
-
-	if (argc < 2)
-		usage();
-
-	for (i =3D 1; i < argc; i++) {
-		fprintf(stderr, "Converting %s from dts v0 to dts v1\n", argv[i]);
-		convert_file(argv[i]);
-	}
-
-	exit(0);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/data.c
--- a/head/contrib/dtc/data.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/data.c	Wed Jul 25 16:21:35 2012 +0300
@@ -68,40 +68,6 @@
 	return d;
 }
=20
-static char get_oct_char(const char *s, int *i)
-{
-	char x[4];
-	char *endx;
-	long val;
-
-	x[3] =3D '\0';
-	strncpy(x, s + *i, 3);
-
-	val =3D strtol(x, &endx, 8);
-
-	assert(endx > x);
-
-	(*i) +=3D endx - x;
-	return val;
-}
-
-static char get_hex_char(const char *s, int *i)
-{
-	char x[3];
-	char *endx;
-	long val;
-
-	x[2] =3D '\0';
-	strncpy(x, s + *i, 2);
-
-	val =3D strtol(x, &endx, 16);
-	if (!(endx  > x))
-		die("\\x used with no following hex digits\n");
-
-	(*i) +=3D endx - x;
-	return val;
-}
-
 struct data data_copy_escape_string(const char *s, int len)
 {
 	int i =3D 0;
@@ -114,53 +80,10 @@
 	while (i < len) {
 		char c =3D s[i++];
=20
-		if (c !=3D '\\') {
-			q[d.len++] =3D c;
-			continue;
-		}
+		if (c =3D=3D '\\')
+			c =3D get_escape_char(s, &i);
=20
-		c =3D s[i++];
-		assert(c);
-		switch (c) {
-		case 'a':
-			q[d.len++] =3D '\a';
-			break;
-		case 'b':
-			q[d.len++] =3D '\b';
-			break;
-		case 't':
-			q[d.len++] =3D '\t';
-			break;
-		case 'n':
-			q[d.len++] =3D '\n';
-			break;
-		case 'v':
-			q[d.len++] =3D '\v';
-			break;
-		case 'f':
-			q[d.len++] =3D '\f';
-			break;
-		case 'r':
-			q[d.len++] =3D '\r';
-			break;
-		case '0':
-		case '1':
-		case '2':
-		case '3':
-		case '4':
-		case '5':
-		case '6':
-		case '7':
-			i--; /* need to re-read the first digit as
-			      * part of the octal value */
-			q[d.len++] =3D get_oct_char(s, &i);
-			break;
-		case 'x':
-			q[d.len++] =3D get_hex_char(s, &i);
-			break;
-		default:
-			q[d.len++] =3D c;
-		}
+		q[d.len++] =3D c;
 	}
=20
 	q[d.len++] =3D '\0';
@@ -245,11 +168,33 @@
 	return d;
 }
=20
-struct data data_append_cell(struct data d, cell_t word)
+struct data data_append_integer(struct data d, uint64_t value, int bits)
 {
-	cell_t beword =3D cpu_to_fdt32(word);
+	uint8_t value_8;
+	uint16_t value_16;
+	uint32_t value_32;
+	uint64_t value_64;
=20
-	return data_append_data(d, &beword, sizeof(beword));
+	switch (bits) {
+	case 8:
+		value_8 =3D value;
+		return data_append_data(d, &value_8, 1);
+
+	case 16:
+		value_16 =3D cpu_to_fdt16(value);
+		return data_append_data(d, &value_16, 2);
+
+	case 32:
+		value_32 =3D cpu_to_fdt32(value);
+		return data_append_data(d, &value_32, 4);
+
+	case 64:
+		value_64 =3D cpu_to_fdt64(value);
+		return data_append_data(d, &value_64, 8);
+
+	default:
+		die("Invalid literal size (%d)\n", bits);
+	}
 }
=20
 struct data data_append_re(struct data d, const struct fdt_reserve_entry *=
re)
@@ -262,11 +207,14 @@
 	return data_append_data(d, &bere, sizeof(bere));
 }
=20
+struct data data_append_cell(struct data d, cell_t word)
+{
+	return data_append_integer(d, word, sizeof(word) * 8);
+}
+
 struct data data_append_addr(struct data d, uint64_t addr)
 {
-	uint64_t beaddr =3D cpu_to_fdt64(addr);
-
-	return data_append_data(d, &beaddr, sizeof(beaddr));
+	return data_append_integer(d, addr, sizeof(addr) * 8);
 }
=20
 struct data data_append_byte(struct data d, uint8_t byte)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/dtc-lexer.l
--- a/head/contrib/dtc/dtc-lexer.l	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/dtc-lexer.l	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  *                                                                   USA
  */
=20
-%option noyywrap nounput noinput yylineno
+%option noyywrap nounput noinput never-interactive
=20
 %x INCLUDE
 %x BYTESTRING
@@ -29,6 +29,7 @@
 PATHCHAR	({PROPNODECHAR}|[/])
 LABEL		[a-zA-Z_][a-zA-Z0-9_]*
 STRING		\"([^\\"]|\\.)*\"
+CHAR_LITERAL	'([^']|\\')*'
 WS		[[:space:]]
 COMMENT		"/*"([^*]|\*+[^*/])*\*+"/"
 LINECOMMENT	"//".*\n
@@ -38,12 +39,16 @@
 #include "srcpos.h"
 #include "dtc-parser.tab.h"
=20
+#define MAX_INCLUDE_NESTING 100
+YY_BUFFER_STATE include_stack[MAX_INCLUDE_NESTING];
+int include_stack_pointer =3D 0;
+
 YYLTYPE yylloc;
=20
+/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
 #define	YY_USER_ACTION \
 	{ \
-		yylloc.file =3D srcpos_file; \
-		yylloc.first_line =3D yylineno; \
+		srcpos_update(&yylloc, yytext, yyleng); \
 	}
=20
 /*#define LEXDEBUG	1*/
@@ -96,6 +101,12 @@
 			return DT_MEMRESERVE;
 		}
=20
+<*>"/bits/"	{
+			DPRINT("Keyword: /bits/\n");
+			BEGIN_DEFAULT();
+			return DT_BITS;
+		}
+
 <*>{LABEL}:	{
 			DPRINT("Label: %s\n", yytext);
 			yylval.labelref =3D xstrdup(yytext);
@@ -103,19 +114,26 @@
 			return DT_LABEL;
 		}
=20
-<V1>[0-9]+|0[xX][0-9a-fA-F]+      {
+<V1>([0-9]+|0[xX][0-9a-fA-F]+)(U|L|UL|LL|ULL)? {
 			yylval.literal =3D xstrdup(yytext);
 			DPRINT("Literal: '%s'\n", yylval.literal);
 			return DT_LITERAL;
 		}
=20
-\&{LABEL}	{	/* label reference */
+<*>{CHAR_LITERAL}	{
+			yytext[yyleng-1] =3D '\0';
+			yylval.literal =3D xstrdup(yytext+1);
+			DPRINT("Character literal: %s\n", yylval.literal);
+			return DT_CHAR_LITERAL;
+		}
+
+<*>\&{LABEL}	{	/* label reference */
 			DPRINT("Ref: %s\n", yytext+1);
 			yylval.labelref =3D xstrdup(yytext+1);
 			return DT_REF;
 		}
=20
-"&{/"{PATHCHAR}+\}	{	/* new-style path reference */
+<*>"&{/"{PATHCHAR}+\}	{	/* new-style path reference */
 			yytext[yyleng-1] =3D '\0';
 			DPRINT("Ref: %s\n", yytext+2);
 			yylval.labelref =3D xstrdup(yytext+2);
@@ -150,6 +168,15 @@
 <*>{COMMENT}+	/* eat C-style comments */
 <*>{LINECOMMENT}+ /* eat C++-style comments */
=20
+<*>"<<"		{ return DT_LSHIFT; };
+<*>">>"		{ return DT_RSHIFT; };
+<*>"<=3D"		{ return DT_LE; };
+<*>">=3D"		{ return DT_GE; };
+<*>"=3D=3D"		{ return DT_EQ; };
+<*>"!=3D"		{ return DT_NE; };
+<*>"&&"		{ return DT_AND; };
+<*>"||"		{ return DT_OR; };
+
 <*>.		{
 			DPRINT("Char: %c (\\x%02x)\n", yytext[0],
 				(unsigned)yytext[0]);
@@ -167,100 +194,34 @@
=20
 %%
=20
-
-/*
- * Stack of nested include file contexts.
- */
-
-struct incl_file {
-	struct dtc_file *file;
-	YY_BUFFER_STATE yy_prev_buf;
-	int yy_prev_lineno;
-	struct incl_file *prev;
-};
-
-static struct incl_file *incl_file_stack;
-
-
-/*
- * Detect infinite include recursion.
- */
-#define MAX_INCLUDE_DEPTH	(100)
-
-static int incl_depth =3D 0;
-
-
 static void push_input_file(const char *filename)
 {
-	struct incl_file *incl_file;
-	struct dtc_file *newfile;
-	struct search_path search, *searchptr =3D NULL;
-
 	assert(filename);
=20
-	if (incl_depth++ >=3D MAX_INCLUDE_DEPTH)
-		die("Includes nested too deeply");
+	assert(include_stack_pointer >=3D MAX_INCLUDE_NESTING);
=20
-	if (srcpos_file) {
-		search.dir =3D srcpos_file->dir;
-		search.next =3D NULL;
-		search.prev =3D NULL;
-		searchptr =3D &search;
-	}
+	srcfile_push(filename);
=20
-	newfile =3D dtc_open_file(filename, searchptr);
+	yyin =3D current_srcfile->f;
=20
-	incl_file =3D xmalloc(sizeof(struct incl_file));
+	include_stack[include_stack_pointer++] =3D YY_CURRENT_BUFFER;
=20
-	/*
-	 * Save current context.
-	 */
-	incl_file->yy_prev_buf =3D YY_CURRENT_BUFFER;
-	incl_file->yy_prev_lineno =3D yylineno;
-	incl_file->file =3D srcpos_file;
-	incl_file->prev =3D incl_file_stack;
-
-	incl_file_stack =3D incl_file;
-
-	/*
-	 * Establish new context.
-	 */
-	srcpos_file =3D newfile;
-	yylineno =3D 1;
-	yyin =3D newfile->file;
 	yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
 }
=20
=20
 static int pop_input_file(void)
 {
-	struct incl_file *incl_file;
-
-	if (incl_file_stack =3D=3D 0)
+	if (srcfile_pop() =3D=3D 0)
 		return 0;
=20
-	dtc_close_file(srcpos_file);
+	assert(include_stack_pointer > 0);
=20
-	/*
-	 * Pop.
-	 */
-	--incl_depth;
-	incl_file =3D incl_file_stack;
-	incl_file_stack =3D incl_file->prev;
+	yy_delete_buffer( YY_CURRENT_BUFFER );
=20
-	/*
-	 * Recover old context.
-	 */
-	yy_delete_buffer(YY_CURRENT_BUFFER);
-	yy_switch_to_buffer(incl_file->yy_prev_buf);
-	yylineno =3D incl_file->yy_prev_lineno;
-	srcpos_file =3D incl_file->file;
-	yyin =3D incl_file->file ? incl_file->file->file : NULL;
+	yy_switch_to_buffer( include_stack[--include_stack_pointer] );
=20
-	/*
-	 * Free old state.
-	 */
-	free(incl_file);
+	yyin =3D current_srcfile->f;
=20
 	return 1;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/dtc-parser.y
--- a/head/contrib/dtc/dtc-parser.y	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/dtc-parser.y	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,6 @@
  *                                                                   USA
  */
=20
-
 %{
 #include <stdio.h>
=20
@@ -28,12 +27,14 @@
 YYLTYPE yylloc;
=20
 extern int yylex(void);
+extern void print_error(char const *fmt, ...);
 extern void yyerror(char const *s);
=20
 extern struct boot_info *the_boot_info;
 extern int treesource_error;
=20
 static unsigned long long eval_literal(const char *s, int base, int bits);
+static unsigned char eval_char_literal(const char *s);
 %}
=20
 %union {
@@ -44,19 +45,26 @@
 	uint8_t byte;
 	struct data data;
=20
-	uint64_t addr;
-	cell_t cell;
+	struct {
+		struct data	data;
+		int		bits;
+	} array;
+
 	struct property *prop;
 	struct property *proplist;
 	struct node *node;
 	struct node *nodelist;
 	struct reserve_info *re;
+	uint64_t integer;
 }
=20
 %token DT_V1
 %token DT_MEMRESERVE
+%token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR
+%token DT_BITS
 %token <propnodename> DT_PROPNODENAME
 %token <literal> DT_LITERAL
+%token <literal> DT_CHAR_LITERAL
 %token <cbase> DT_BASE
 %token <byte> DT_BYTE
 %token <data> DT_STRING
@@ -68,9 +76,7 @@
 %type <data> propdataprefix
 %type <re> memreserve
 %type <re> memreserves
-%type <addr> addr
-%type <data> celllist
-%type <cell> cellval
+%type <array> arrayprefix
 %type <data> bytestring
 %type <prop> propdef
 %type <proplist> proplist
@@ -79,14 +85,29 @@
 %type <node> nodedef
 %type <node> subnode
 %type <nodelist> subnodes
-%type <labelref> label
+
+%type <integer> integer_prim
+%type <integer> integer_unary
+%type <integer> integer_mul
+%type <integer> integer_add
+%type <integer> integer_shift
+%type <integer> integer_rela
+%type <integer> integer_eq
+%type <integer> integer_bitand
+%type <integer> integer_bitxor
+%type <integer> integer_bitor
+%type <integer> integer_and
+%type <integer> integer_or
+%type <integer> integer_trinary
+%type <integer> integer_expr
=20
 %%
=20
 sourcefile:
 	  DT_V1 ';' memreserves devicetree
 		{
-			the_boot_info =3D build_boot_info($3, $4, 0);
+			the_boot_info =3D build_boot_info($3, $4,
+							guess_boot_cpuid($4));
 		}
 	;
=20
@@ -102,23 +123,35 @@
 	;
=20
 memreserve:
-	  label DT_MEMRESERVE addr addr ';'
+	  DT_MEMRESERVE integer_prim integer_prim ';'
 		{
-			$$ =3D build_reserve_entry($3, $4, $1);
+			$$ =3D build_reserve_entry($2, $3);
+		}
+	| DT_LABEL memreserve
+		{
+			add_label(&$2->labels, $1);
+			$$ =3D $2;
 		}
 	;
=20
-addr:
-	  DT_LITERAL
-		{
-			$$ =3D eval_literal($1, 0, 64);
-		}
-	  ;
-
 devicetree:
 	  '/' nodedef
 		{
-			$$ =3D name_node($2, "", NULL);
+			$$ =3D name_node($2, "");
+		}
+	| devicetree '/' nodedef
+		{
+			$$ =3D merge_nodes($1, $3);
+		}
+	| devicetree DT_REF nodedef
+		{
+			struct node *target =3D get_node_by_ref($1, $2);
+
+			if (target)
+				merge_nodes(target, $3);
+			else
+				print_error("label or path, '%s', not found", $2);
+			$$ =3D $1;
 		}
 	;
=20
@@ -141,13 +174,18 @@
 	;
=20
 propdef:
-	  label DT_PROPNODENAME '=3D' propdata ';'
+	  DT_PROPNODENAME '=3D' propdata ';'
 		{
-			$$ =3D build_property($2, $4, $1);
+			$$ =3D build_property($1, $3);
 		}
-	| label DT_PROPNODENAME ';'
+	| DT_PROPNODENAME ';'
 		{
-			$$ =3D build_property($2, empty_data, $1);
+			$$ =3D build_property($1, empty_data);
+		}
+	| DT_LABEL propdef
+		{
+			add_label(&$2->labels, $1);
+			$$ =3D $2;
 		}
 	;
=20
@@ -156,9 +194,9 @@
 		{
 			$$ =3D data_merge($1, $2);
 		}
-	| propdataprefix '<' celllist '>'
+	| propdataprefix arrayprefix '>'
 		{
-			$$ =3D data_merge($1, $3);
+			$$ =3D data_merge($1, $2.data);
 		}
 	| propdataprefix '[' bytestring ']'
 		{
@@ -168,35 +206,32 @@
 		{
 			$$ =3D data_add_marker($1, REF_PATH, $2);
 		}
-	| propdataprefix DT_INCBIN '(' DT_STRING ',' addr ',' addr ')'
+	| propdataprefix DT_INCBIN '(' DT_STRING ',' integer_prim ',' integer_pri=
m ')'
 		{
-			struct search_path path =3D { srcpos_file->dir, NULL, NULL };
-			struct dtc_file *file =3D dtc_open_file($4.val, &path);
-			struct data d =3D empty_data;
+			FILE *f =3D srcfile_relative_open($4.val, NULL);
+			struct data d;
=20
 			if ($6 !=3D 0)
-				if (fseek(file->file, $6, SEEK_SET) !=3D 0)
-					srcpos_error(&yylloc,
-						     "Couldn't seek to offset %llu in \"%s\": %s",
+				if (fseek(f, $6, SEEK_SET) !=3D 0)
+					print_error("Couldn't seek to offset %llu in \"%s\": %s",
 						     (unsigned long long)$6,
 						     $4.val,
 						     strerror(errno));
=20
-			d =3D data_copy_file(file->file, $8);
+			d =3D data_copy_file(f, $8);
=20
 			$$ =3D data_merge($1, d);
-			dtc_close_file(file);
+			fclose(f);
 		}
 	| propdataprefix DT_INCBIN '(' DT_STRING ')'
 		{
-			struct search_path path =3D { srcpos_file->dir, NULL, NULL };
-			struct dtc_file *file =3D dtc_open_file($4.val, &path);
+			FILE *f =3D srcfile_relative_open($4.val, NULL);
 			struct data d =3D empty_data;
=20
-			d =3D data_copy_file(file->file, -1);
+			d =3D data_copy_file(f, -1);
=20
 			$$ =3D data_merge($1, d);
-			dtc_close_file(file);
+			fclose(f);
 		}
 	| propdata DT_LABEL
 		{
@@ -219,31 +254,154 @@
 		}
 	;
=20
-celllist:
-	  /* empty */
+arrayprefix:
+	DT_BITS DT_LITERAL '<'
 		{
-			$$ =3D empty_data;
+			$$.data =3D empty_data;
+			$$.bits =3D eval_literal($2, 0, 7);
+
+			if (($$.bits !=3D  8) &&
+			    ($$.bits !=3D 16) &&
+			    ($$.bits !=3D 32) &&
+			    ($$.bits !=3D 64))
+			{
+				print_error("Only 8, 16, 32 and 64-bit elements"
+					    " are currently supported");
+				$$.bits =3D 32;
+			}
 		}
-	| celllist cellval
+	| '<'
 		{
-			$$ =3D data_append_cell($1, $2);
+			$$.data =3D empty_data;
+			$$.bits =3D 32;
 		}
-	| celllist DT_REF
+	| arrayprefix integer_prim
 		{
-			$$ =3D data_append_cell(data_add_marker($1, REF_PHANDLE,
-							      $2), -1);
+			if ($1.bits < 64) {
+				uint64_t mask =3D (1ULL << $1.bits) - 1;
+				/*
+				 * Bits above mask must either be all zero
+				 * (positive within range of mask) or all one
+				 * (negative and sign-extended). The second
+				 * condition is true if when we set all bits
+				 * within the mask to one (i.e. | in the
+				 * mask), all bits are one.
+				 */
+				if (($2 > mask) && (($2 | mask) !=3D -1ULL))
+					print_error(
+						"integer value out of range "
+						"%016lx (%d bits)", $1.bits);
+			}
+
+			$$.data =3D data_append_integer($1.data, $2, $1.bits);
 		}
-	| celllist DT_LABEL
+	| arrayprefix DT_REF
 		{
-			$$ =3D data_add_marker($1, LABEL, $2);
+			uint64_t val =3D ~0ULL >> (64 - $1.bits);
+
+			if ($1.bits =3D=3D 32)
+				$1.data =3D data_add_marker($1.data,
+							  REF_PHANDLE,
+							  $2);
+			else
+				print_error("References are only allowed in "
+					    "arrays with 32-bit elements.");
+
+			$$.data =3D data_append_integer($1.data, val, $1.bits);
+		}
+	| arrayprefix DT_LABEL
+		{
+			$$.data =3D data_add_marker($1.data, LABEL, $2);
 		}
 	;
=20
-cellval:
+integer_prim:
 	  DT_LITERAL
 		{
-			$$ =3D eval_literal($1, 0, 32);
+			$$ =3D eval_literal($1, 0, 64);
 		}
+	| DT_CHAR_LITERAL
+		{
+			$$ =3D eval_char_literal($1);
+		}
+	| '(' integer_expr ')'
+		{
+			$$ =3D $2;
+		}
+	;
+
+integer_expr:
+	integer_trinary
+	;
+
+integer_trinary:
+	  integer_or
+	| integer_or '?' integer_expr ':' integer_trinary { $$ =3D $1 ? $3 : $5; }
+	;
+
+integer_or:
+	  integer_and
+	| integer_or DT_OR integer_and { $$ =3D $1 || $3; }
+	;
+
+integer_and:
+	  integer_bitor
+	| integer_and DT_AND integer_bitor { $$ =3D $1 && $3; }
+	;
+
+integer_bitor:
+	  integer_bitxor
+	| integer_bitor '|' integer_bitxor { $$ =3D $1 | $3; }
+	;
+
+integer_bitxor:
+	  integer_bitand
+	| integer_bitxor '^' integer_bitand { $$ =3D $1 ^ $3; }
+	;
+
+integer_bitand:
+	  integer_eq
+	| integer_bitand '&' integer_eq { $$ =3D $1 & $3; }
+	;
+
+integer_eq:
+	  integer_rela
+	| integer_eq DT_EQ integer_rela { $$ =3D $1 =3D=3D $3; }
+	| integer_eq DT_NE integer_rela { $$ =3D $1 !=3D $3; }
+	;
+
+integer_rela:
+	  integer_shift
+	| integer_rela '<' integer_shift { $$ =3D $1 < $3; }
+	| integer_rela '>' integer_shift { $$ =3D $1 > $3; }
+	| integer_rela DT_LE integer_shift { $$ =3D $1 <=3D $3; }
+	| integer_rela DT_GE integer_shift { $$ =3D $1 >=3D $3; }
+	;
+
+integer_shift:
+	  integer_shift DT_LSHIFT integer_add { $$ =3D $1 << $3; }
+	| integer_shift DT_RSHIFT integer_add { $$ =3D $1 >> $3; }
+	| integer_add
+	;
+
+integer_add:
+	  integer_add '+' integer_mul { $$ =3D $1 + $3; }
+	| integer_add '-' integer_mul { $$ =3D $1 - $3; }
+	| integer_mul
+	;
+
+integer_mul:
+	  integer_mul '*' integer_unary { $$ =3D $1 * $3; }
+	| integer_mul '/' integer_unary { $$ =3D $1 / $3; }
+	| integer_mul '%' integer_unary { $$ =3D $1 % $3; }
+	| integer_unary
+	;
+
+integer_unary:
+	  integer_prim
+	| '-' integer_unary { $$ =3D -$2; }
+	| '~' integer_unary { $$ =3D ~$2; }
+	| '!' integer_unary { $$ =3D !$2; }
 	;
=20
 bytestring:
@@ -266,43 +424,46 @@
 		{
 			$$ =3D NULL;
 		}
-	|  subnode subnodes
+	| subnode subnodes
 		{
 			$$ =3D chain_node($1, $2);
 		}
 	| subnode propdef
 		{
-			yyerror("syntax error: properties must precede subnodes");
+			print_error("syntax error: properties must precede subnodes");
 			YYERROR;
 		}
 	;
=20
 subnode:
-	  label DT_PROPNODENAME nodedef
+	  DT_PROPNODENAME nodedef
 		{
-			$$ =3D name_node($3, $2, $1);
+			$$ =3D name_node($2, $1);
 		}
-	;
-
-label:
-	  /* empty */
+	| DT_LABEL subnode
 		{
-			$$ =3D NULL;
-		}
-	| DT_LABEL
-		{
-			$$ =3D $1;
+			add_label(&$2->labels, $1);
+			$$ =3D $2;
 		}
 	;
=20
 %%
=20
-void yyerror(char const *s)
+void print_error(char const *fmt, ...)
 {
-	srcpos_error(&yylloc, "%s", s);
+	va_list va;
+
+	va_start(va, fmt);
+	srcpos_verror(&yylloc, fmt, va);
+	va_end(va);
+
 	treesource_error =3D 1;
 }
=20
+void yyerror(char const *s) {
+	print_error("%s", s);
+}
+
 static unsigned long long eval_literal(const char *s, int base, int bits)
 {
 	unsigned long long val;
@@ -310,12 +471,41 @@
=20
 	errno =3D 0;
 	val =3D strtoull(s, &e, base);
-	if (*e)
-		yyerror("bad characters in literal");
-	else if ((errno =3D=3D ERANGE)
+	if (*e) {
+		size_t uls =3D strspn(e, "UL");
+		if (e[uls])
+			print_error("bad characters in literal");
+	}
+	if ((errno =3D=3D ERANGE)
 		 || ((bits < 64) && (val >=3D (1ULL << bits))))
-		yyerror("literal out of range");
+		print_error("literal out of range");
 	else if (errno !=3D 0)
-		yyerror("bad literal");
+		print_error("bad literal");
 	return val;
 }
+
+static unsigned char eval_char_literal(const char *s)
+{
+	int i =3D 1;
+	char c =3D s[0];
+
+	if (c =3D=3D '\0')
+	{
+		print_error("empty character literal");
+		return 0;
+	}
+
+	/*
+	 * If the first character in the character literal is a \ then process
+	 * the remaining characters as an escape encoding. If the first
+	 * character is neither an escape or a terminator it should be the only
+	 * character in the literal and will be returned.
+	 */
+	if (c =3D=3D '\\')
+		c =3D get_escape_char(s, &i);
+
+	if (s[i] !=3D '\0')
+		print_error("malformed character literal");
+
+	return c;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/dtc.c
--- a/head/contrib/dtc/dtc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/dtc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -32,30 +32,6 @@
 int padsize;		/* Additional padding to blob */
 int phandle_format =3D PHANDLE_BOTH;	/* Use linux,phandle or phandle prope=
rties */
=20
-char *join_path(const char *path, const char *name)
-{
-	int lenp =3D strlen(path);
-	int lenn =3D strlen(name);
-	int len;
-	int needslash =3D 1;
-	char *str;
-
-	len =3D lenp + lenn + 2;
-	if ((lenp > 0) && (path[lenp-1] =3D=3D '/')) {
-		needslash =3D 0;
-		len--;
-	}
-
-	str =3D xmalloc(len);
-	memcpy(str, path, lenp);
-	if (needslash) {
-		str[lenp] =3D '/';
-		lenp++;
-	}
-	memcpy(str+lenp, name, lenn+1);
-	return str;
-}
-
 static void fill_fullpaths(struct node *tree, const char *prefix)
 {
 	struct node *child;
@@ -95,6 +71,7 @@
 	fprintf(stderr, "\t\t\tasm - assembler source\n");
 	fprintf(stderr, "\t-V <output version>\n");
 	fprintf(stderr, "\t\tBlob version to produce, defaults to %d (relevant fo=
r dtb\n\t\tand asm output only)\n", DEFAULT_FDT_VERSION);
+	fprintf(stderr, "\t-d <output dependency file>\n");
 	fprintf(stderr, "\t-R <number>\n");
 	fprintf(stderr, "\t\tMake space for <number> reserve map entries (relevan=
t for \n\t\tdtb and asm output only)\n");
 	fprintf(stderr, "\t-S <bytes>\n");
@@ -105,6 +82,10 @@
 	fprintf(stderr, "\t\tSet the physical boot cpu\n");
 	fprintf(stderr, "\t-f\n");
 	fprintf(stderr, "\t\tForce - try to produce output even if the input tree=
 has errors\n");
+	fprintf(stderr, "\t-i\n");
+	fprintf(stderr, "\t\tAdd a path to search for include files\n");
+	fprintf(stderr, "\t-s\n");
+	fprintf(stderr, "\t\tSort nodes and properties before outputting (only us=
eful for\n\t\tcomparing trees)\n");
 	fprintf(stderr, "\t-v\n");
 	fprintf(stderr, "\t\tPrint DTC version and exit\n");
 	fprintf(stderr, "\t-H <phandle format>\n");
@@ -112,6 +93,9 @@
 	fprintf(stderr, "\t\t\tlegacy - \"linux,phandle\" properties only\n");
 	fprintf(stderr, "\t\t\tepapr - \"phandle\" properties only\n");
 	fprintf(stderr, "\t\t\tboth - Both \"linux,phandle\" and \"phandle\" prop=
erties\n");
+	fprintf(stderr, "\t-W [no-]<checkname>\n");
+	fprintf(stderr, "\t-E [no-]<checkname>\n");
+	fprintf(stderr, "\t\t\tenable or disable warnings and errors\n");
 	exit(3);
 }
=20
@@ -121,7 +105,8 @@
 	const char *inform =3D "dts";
 	const char *outform =3D "dts";
 	const char *outname =3D "-";
-	int force =3D 0, check =3D 0;
+	const char *depname =3D NULL;
+	int force =3D 0, sort =3D 0;
 	const char *arg;
 	int opt;
 	FILE *outf =3D NULL;
@@ -133,7 +118,8 @@
 	minsize    =3D 0;
 	padsize    =3D 0;
=20
-	while ((opt =3D getopt(argc, argv, "hI:O:o:V:R:S:p:fcqb:vH:")) !=3D EOF) {
+	while ((opt =3D getopt(argc, argv, "hI:O:o:V:d:R:S:p:fqb:i:vH:sW:E:"))
+			!=3D EOF) {
 		switch (opt) {
 		case 'I':
 			inform =3D optarg;
@@ -147,6 +133,9 @@
 		case 'V':
 			outversion =3D strtol(optarg, NULL, 0);
 			break;
+		case 'd':
+			depname =3D optarg;
+			break;
 		case 'R':
 			reservenum =3D strtol(optarg, NULL, 0);
 			break;
@@ -159,15 +148,15 @@
 		case 'f':
 			force =3D 1;
 			break;
-		case 'c':
-			check =3D 1;
-			break;
 		case 'q':
 			quiet++;
 			break;
 		case 'b':
 			cmdline_boot_cpuid =3D strtoll(optarg, NULL, 0);
 			break;
+		case 'i':
+			srcfile_add_search_path(optarg);
+			break;
 		case 'v':
 			printf("Version: %s\n", DTC_VERSION);
 			exit(0);
@@ -183,6 +172,18 @@
 				    optarg);
 			break;
=20
+		case 's':
+			sort =3D 1;
+			break;
+
+		case 'W':
+			parse_checks_option(true, false, optarg);
+			break;
+
+		case 'E':
+			parse_checks_option(false, true, optarg);
+			break;
+
 		case 'h':
 		default:
 			usage();
@@ -203,8 +204,13 @@
 	if (minsize)
 		fprintf(stderr, "DTC: Use of \"-S\" is deprecated; it will be removed so=
on, use \"-p\" instead\n");
=20
-	fprintf(stderr, "DTC: %s->%s  on file \"%s\"\n",
-		inform, outform, arg);
+	if (depname) {
+		depfile =3D fopen(depname, "w");
+		if (!depfile)
+			die("Couldn't open dependency file %s: %s\n", depname,
+			    strerror(errno));
+		fprintf(depfile, "%s:", outname);
+	}
=20
 	if (streq(inform, "dts"))
 		bi =3D dt_from_source(arg);
@@ -215,12 +221,19 @@
 	else
 		die("Unknown input format \"%s\"\n", inform);
=20
+	if (depfile) {
+		fputc('\n', depfile);
+		fclose(depfile);
+	}
+
 	if (cmdline_boot_cpuid !=3D -1)
 		bi->boot_cpuid_phys =3D cmdline_boot_cpuid;
=20
 	fill_fullpaths(bi->dt, "");
 	process_checks(force, bi);
=20
+	if (sort)
+		sort_tree(bi);
=20
 	if (streq(outname, "-")) {
 		outf =3D stdout;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/dtc.h
--- a/head/contrib/dtc/dtc.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/dtc.h	Wed Jul 25 16:21:35 2012 +0300
@@ -25,6 +25,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <stdarg.h>
 #include <assert.h>
 #include <ctype.h>
@@ -109,6 +110,7 @@
 				  const void *p, int len);
 struct data data_merge(struct data d1, struct data d2);
 struct data data_append_cell(struct data d, cell_t word);
+struct data data_append_integer(struct data d, uint64_t word, int bits);
 struct data data_append_re(struct data d, const struct fdt_reserve_entry *=
re);
 struct data data_append_addr(struct data d, uint64_t addr);
 struct data data_append_byte(struct data d, uint8_t byte);
@@ -125,13 +127,18 @@
 #define MAX_NODENAME_LEN	31
=20
 /* Live trees */
+struct label {
+	char *label;
+	struct label *next;
+};
+
 struct property {
 	char *name;
 	struct data val;
=20
 	struct property *next;
=20
-	char *label;
+	struct label *labels;
 };
=20
 struct node {
@@ -148,22 +155,28 @@
 	cell_t phandle;
 	int addr_cells, size_cells;
=20
-	char *label;
+	struct label *labels;
 };
=20
+#define for_each_label(l0, l) \
+	for ((l) =3D (l0); (l); (l) =3D (l)->next)
+
 #define for_each_property(n, p) \
 	for ((p) =3D (n)->proplist; (p); (p) =3D (p)->next)
=20
 #define for_each_child(n, c)	\
 	for ((c) =3D (n)->children; (c); (c) =3D (c)->next_sibling)
=20
-struct property *build_property(char *name, struct data val, char *label);
+void add_label(struct label **labels, char *label);
+
+struct property *build_property(char *name, struct data val);
 struct property *chain_property(struct property *first, struct property *l=
ist);
 struct property *reverse_properties(struct property *first);
=20
 struct node *build_node(struct property *proplist, struct node *children);
-struct node *name_node(struct node *node, char *name, char *label);
+struct node *name_node(struct node *node, char *name);
 struct node *chain_node(struct node *first, struct node *list);
+struct node *merge_nodes(struct node *old_node, struct node *new_node);
=20
 void add_property(struct node *node, struct property *prop);
 void add_child(struct node *parent, struct node *child);
@@ -171,6 +184,10 @@
 const char *get_unitname(struct node *node);
 struct property *get_property(struct node *node, const char *propname);
 cell_t propval_cell(struct property *prop);
+struct property *get_property_by_label(struct node *tree, const char *labe=
l,
+				       struct node **node);
+struct marker *get_marker_label(struct node *tree, const char *label,
+				struct node **node, struct property **prop);
 struct node *get_subnode(struct node *node, const char *nodename);
 struct node *get_node_by_path(struct node *tree, const char *path);
 struct node *get_node_by_label(struct node *tree, const char *label);
@@ -178,6 +195,8 @@
 struct node *get_node_by_ref(struct node *tree, const char *ref);
 cell_t get_node_phandle(struct node *root, struct node *node);
=20
+uint32_t guess_boot_cpuid(struct node *tree);
+
 /* Boot info (tree plus memreserve information */
=20
 struct reserve_info {
@@ -185,10 +204,10 @@
=20
 	struct reserve_info *next;
=20
-	char *label;
+	struct label *labels;
 };
=20
-struct reserve_info *build_reserve_entry(uint64_t start, uint64_t len, cha=
r *label);
+struct reserve_info *build_reserve_entry(uint64_t start, uint64_t len);
 struct reserve_info *chain_reserve_entry(struct reserve_info *first,
 					 struct reserve_info *list);
 struct reserve_info *add_reserve_entry(struct reserve_info *list,
@@ -203,9 +222,11 @@
=20
 struct boot_info *build_boot_info(struct reserve_info *reservelist,
 				  struct node *tree, uint32_t boot_cpuid_phys);
+void sort_tree(struct boot_info *bi);
=20
 /* Checks */
=20
+void parse_checks_option(bool warn, bool error, const char *optarg);
 void process_checks(int force, struct boot_info *bi);
=20
 /* Flattened trees */
@@ -224,8 +245,4 @@
=20
 struct boot_info *dt_from_fs(const char *dirname);
=20
-/* misc */
-
-char *join_path(const char *path, const char *name);
-
 #endif /* _DTC_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/dtdiff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/dtc/dtdiff	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,38 @@
+#! /bin/bash
+
+# This script uses the bash <(...) extension.
+# If you want to change this to work with a generic /bin/sh, make sure
+# you fix that.
+
+
+DTC=3Ddtc
+
+source_and_sort () {
+    DT=3D"$1"
+    if [ -d "$DT" ]; then
+	IFORMAT=3Dfs
+    elif [ -f "$DT" ]; then
+	case "$DT" in
+	    *.dts)
+		IFORMAT=3Ddts
+		;;
+	    *.dtb)
+		IFORMAT=3Ddtb
+		;;
+	esac
+    fi
+
+    if [ -z "$IFORMAT" ]; then
+	echo "Unrecognized format for $DT" >&2
+	exit 2
+    fi
+
+    $DTC -I $IFORMAT -O dts -qq -f -s -o - "$DT"
+}
+
+if [ $# !=3D 2 ]; then
+    echo "Usage: dtdiff <device tree> <device tree>" >&2
+    exit 1
+fi
+
+diff -u <(source_and_sort "$1") <(source_and_sort "$2")
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/fdtdump.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/dtc/fdtdump.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,162 @@
+/*
+ * fdtdump.c - Contributed by Pantelis Antoniou <pantelis.antoniou AT gmai=
l.com>
+ */
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include <fdt.h>
+#include <libfdt_env.h>
+
+#include "util.h"
+
+#define ALIGN(x, a)	(((x) + ((a) - 1)) & ~((a) - 1))
+#define PALIGN(p, a)	((void *)(ALIGN((unsigned long)(p), (a))))
+#define GET_CELL(p)	(p +=3D 4, *((const uint32_t *)(p-4)))
+
+static void print_data(const char *data, int len)
+{
+	int i;
+	const char *p =3D data;
+
+	/* no data, don't print */
+	if (len =3D=3D 0)
+		return;
+
+	if (util_is_printable_string(data, len)) {
+		printf(" =3D \"%s\"", (const char *)data);
+	} else if ((len % 4) =3D=3D 0) {
+		printf(" =3D <");
+		for (i =3D 0; i < len; i +=3D 4)
+			printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)),
+			       i < (len - 4) ? " " : "");
+		printf(">");
+	} else {
+		printf(" =3D [");
+		for (i =3D 0; i < len; i++)
+			printf("%02x%s", *p++, i < len - 1 ? " " : "");
+		printf("]");
+	}
+}
+
+static void dump_blob(void *blob)
+{
+	struct fdt_header *bph =3D blob;
+	uint32_t off_mem_rsvmap =3D fdt32_to_cpu(bph->off_mem_rsvmap);
+	uint32_t off_dt =3D fdt32_to_cpu(bph->off_dt_struct);
+	uint32_t off_str =3D fdt32_to_cpu(bph->off_dt_strings);
+	struct fdt_reserve_entry *p_rsvmap =3D
+		(struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap);
+	const char *p_struct =3D (const char *)blob + off_dt;
+	const char *p_strings =3D (const char *)blob + off_str;
+	uint32_t version =3D fdt32_to_cpu(bph->version);
+	uint32_t totalsize =3D fdt32_to_cpu(bph->totalsize);
+	uint32_t tag;
+	const char *p, *s, *t;
+	int depth, sz, shift;
+	int i;
+	uint64_t addr, size;
+
+	depth =3D 0;
+	shift =3D 4;
+
+	printf("/dts-v1/;\n");
+	printf("// magic:\t\t0x%x\n", fdt32_to_cpu(bph->magic));
+	printf("// totalsize:\t\t0x%x (%d)\n", totalsize, totalsize);
+	printf("// off_dt_struct:\t0x%x\n", off_dt);
+	printf("// off_dt_strings:\t0x%x\n", off_str);
+	printf("// off_mem_rsvmap:\t0x%x\n", off_mem_rsvmap);
+	printf("// version:\t\t%d\n", version);
+	printf("// last_comp_version:\t%d\n",
+	       fdt32_to_cpu(bph->last_comp_version));
+	if (version >=3D 2)
+		printf("// boot_cpuid_phys:\t0x%x\n",
+		       fdt32_to_cpu(bph->boot_cpuid_phys));
+
+	if (version >=3D 3)
+		printf("// size_dt_strings:\t0x%x\n",
+		       fdt32_to_cpu(bph->size_dt_strings));
+	if (version >=3D 17)
+		printf("// size_dt_struct:\t0x%x\n",
+		       fdt32_to_cpu(bph->size_dt_struct));
+	printf("\n");
+
+	for (i =3D 0; ; i++) {
+		addr =3D fdt64_to_cpu(p_rsvmap[i].address);
+		size =3D fdt64_to_cpu(p_rsvmap[i].size);
+		if (addr =3D=3D 0 && size =3D=3D 0)
+			break;
+
+		printf("/memreserve/ %llx %llx;\n",
+		       (unsigned long long)addr, (unsigned long long)size);
+	}
+
+	p =3D p_struct;
+	while ((tag =3D fdt32_to_cpu(GET_CELL(p))) !=3D FDT_END) {
+
+		/* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */
+
+		if (tag =3D=3D FDT_BEGIN_NODE) {
+			s =3D p;
+			p =3D PALIGN(p + strlen(s) + 1, 4);
+
+			if (*s =3D=3D '\0')
+				s =3D "/";
+
+			printf("%*s%s {\n", depth * shift, "", s);
+
+			depth++;
+			continue;
+		}
+
+		if (tag =3D=3D FDT_END_NODE) {
+			depth--;
+
+			printf("%*s};\n", depth * shift, "");
+			continue;
+		}
+
+		if (tag =3D=3D FDT_NOP) {
+			printf("%*s// [NOP]\n", depth * shift, "");
+			continue;
+		}
+
+		if (tag !=3D FDT_PROP) {
+			fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag);
+			break;
+		}
+		sz =3D fdt32_to_cpu(GET_CELL(p));
+		s =3D p_strings + fdt32_to_cpu(GET_CELL(p));
+		if (version < 16 && sz >=3D 8)
+			p =3D PALIGN(p, 8);
+		t =3D p;
+
+		p =3D PALIGN(p + sz, 4);
+
+		printf("%*s%s", depth * shift, "", s);
+		print_data(t, sz);
+		printf(";\n");
+	}
+}
+
+
+int main(int argc, char *argv[])
+{
+	char *buf;
+
+	if (argc < 2) {
+		fprintf(stderr, "supply input filename\n");
+		return 5;
+	}
+
+	buf =3D utilfdt_read(argv[1]);
+	if (buf)
+		dump_blob(buf);
+	else
+		return 10;
+
+	return 0;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/fdtget.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/dtc/fdtget.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,366 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * Portions from U-Boot cmd_fdt.c (C) Copyright 2007
+ * Gerald Van Baren, Custom IDEAS, vanbaren at cideas.com
+ * Based on code written by:
+ *   Pantelis Antoniou <pantelis.antoniou at gmail.com> and
+ *   Matthew McClintock <msm at freescale.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <libfdt.h>
+
+#include "util.h"
+
+enum display_mode {
+	MODE_SHOW_VALUE,	/* show values for node properties */
+	MODE_LIST_PROPS,	/* list the properties for a node */
+	MODE_LIST_SUBNODES,	/* list the subnodes of a node */
+};
+
+/* Holds information which controls our output and options */
+struct display_info {
+	int type;		/* data type (s/i/u/x or 0 for default) */
+	int size;		/* data size (1/2/4) */
+	enum display_mode mode;	/* display mode that we are using */
+	const char *default_val; /* default value if node/property not found */
+};
+
+static void report_error(const char *where, int err)
+{
+	fprintf(stderr, "Error at '%s': %s\n", where, fdt_strerror(err));
+}
+
+/**
+ * Displays data of a given length according to selected options
+ *
+ * If a specific data type is provided in disp, then this is used. Otherwi=
se
+ * we try to guess the data type / size from the contents.
+ *
+ * @param disp		Display information / options
+ * @param data		Data to display
+ * @param len		Maximum length of buffer
+ * @return 0 if ok, -1 if data does not match format
+ */
+static int show_data(struct display_info *disp, const char *data, int len)
+{
+	int i, size;
+	const uint8_t *p =3D (const uint8_t *)data;
+	const char *s;
+	int value;
+	int is_string;
+	char fmt[3];
+
+	/* no data, don't print */
+	if (len =3D=3D 0)
+		return 0;
+
+	is_string =3D (disp->type) =3D=3D 's' ||
+		(!disp->type && util_is_printable_string(data, len));
+	if (is_string) {
+		if (data[len - 1] !=3D '\0') {
+			fprintf(stderr, "Unterminated string\n");
+			return -1;
+		}
+		for (s =3D data; s - data < len; s +=3D strlen(s) + 1) {
+			if (s !=3D data)
+				printf(" ");
+			printf("%s", (const char *)s);
+		}
+		return 0;
+	}
+	size =3D disp->size;
+	if (size =3D=3D -1) {
+		size =3D (len % 4) =3D=3D 0 ? 4 : 1;
+	} else if (len % size) {
+		fprintf(stderr, "Property length must be a multiple of "
+				"selected data size\n");
+		return -1;
+	}
+	fmt[0] =3D '%';
+	fmt[1] =3D disp->type ? disp->type : 'd';
+	fmt[2] =3D '\0';
+	for (i =3D 0; i < len; i +=3D size, p +=3D size) {
+		if (i)
+			printf(" ");
+		value =3D size =3D=3D 4 ? fdt32_to_cpu(*(const uint32_t *)p) :
+			size =3D=3D 2 ? (*p << 8) | p[1] : *p;
+		printf(fmt, value);
+	}
+	return 0;
+}
+
+/**
+ * List all properties in a node, one per line.
+ *
+ * @param blob		FDT blob
+ * @param node		Node to display
+ * @return 0 if ok, or FDT_ERR... if not.
+ */
+static int list_properties(const void *blob, int node)
+{
+	const struct fdt_property *data;
+	const char *name;
+	int prop;
+
+	prop =3D fdt_first_property_offset(blob, node);
+	do {
+		/* Stop silently when there are no more properties */
+		if (prop < 0)
+			return prop =3D=3D -FDT_ERR_NOTFOUND ? 0 : prop;
+		data =3D fdt_get_property_by_offset(blob, prop, NULL);
+		name =3D fdt_string(blob, fdt32_to_cpu(data->nameoff));
+		if (name)
+			puts(name);
+		prop =3D fdt_next_property_offset(blob, prop);
+	} while (1);
+}
+
+#define MAX_LEVEL	32		/* how deeply nested we will go */
+
+/**
+ * List all subnodes in a node, one per line
+ *
+ * @param blob		FDT blob
+ * @param node		Node to display
+ * @return 0 if ok, or FDT_ERR... if not.
+ */
+static int list_subnodes(const void *blob, int node)
+{
+	int nextoffset;		/* next node offset from libfdt */
+	uint32_t tag;		/* current tag */
+	int level =3D 0;		/* keep track of nesting level */
+	const char *pathp;
+	int depth =3D 1;		/* the assumed depth of this node */
+
+	while (level >=3D 0) {
+		tag =3D fdt_next_tag(blob, node, &nextoffset);
+		switch (tag) {
+		case FDT_BEGIN_NODE:
+			pathp =3D fdt_get_name(blob, node, NULL);
+			if (level <=3D depth) {
+				if (pathp =3D=3D NULL)
+					pathp =3D "/* NULL pointer error */";
+				if (*pathp =3D=3D '\0')
+					pathp =3D "/";	/* root is nameless */
+				if (level =3D=3D 1)
+					puts(pathp);
+			}
+			level++;
+			if (level >=3D MAX_LEVEL) {
+				printf("Nested too deep, aborting.\n");
+				return 1;
+			}
+			break;
+		case FDT_END_NODE:
+			level--;
+			if (level =3D=3D 0)
+				level =3D -1;		/* exit the loop */
+			break;
+		case FDT_END:
+			return 1;
+		case FDT_PROP:
+			break;
+		default:
+			if (level <=3D depth)
+				printf("Unknown tag 0x%08X\n", tag);
+			return 1;
+		}
+		node =3D nextoffset;
+	}
+	return 0;
+}
+
+/**
+ * Show the data for a given node (and perhaps property) according to the
+ * display option provided.
+ *
+ * @param blob		FDT blob
+ * @param disp		Display information / options
+ * @param node		Node to display
+ * @param property	Name of property to display, or NULL if none
+ * @return 0 if ok, -ve on error
+ */
+static int show_data_for_item(const void *blob, struct display_info *disp,
+		int node, const char *property)
+{
+	const void *value =3D NULL;
+	int len, err =3D 0;
+
+	switch (disp->mode) {
+	case MODE_LIST_PROPS:
+		err =3D list_properties(blob, node);
+		break;
+
+	case MODE_LIST_SUBNODES:
+		err =3D list_subnodes(blob, node);
+		break;
+
+	default:
+		assert(property);
+		value =3D fdt_getprop(blob, node, property, &len);
+		if (value) {
+			if (show_data(disp, value, len))
+				err =3D -1;
+			else
+				printf("\n");
+		} else if (disp->default_val) {
+			puts(disp->default_val);
+		} else {
+			report_error(property, len);
+			err =3D -1;
+		}
+		break;
+	}
+
+	return err;
+}
+
+/**
+ * Run the main fdtget operation, given a filename and valid arguments
+ *
+ * @param disp		Display information / options
+ * @param filename	Filename of blob file
+ * @param arg		List of arguments to process
+ * @param arg_count	Number of arguments
+ * @param return 0 if ok, -ve on error
+ */
+static int do_fdtget(struct display_info *disp, const char *filename,
+		     char **arg, int arg_count, int args_per_step)
+{
+	char *blob;
+	const char *prop;
+	int i, node;
+
+	blob =3D utilfdt_read(filename);
+	if (!blob)
+		return -1;
+
+	for (i =3D 0; i + args_per_step <=3D arg_count; i +=3D args_per_step) {
+		node =3D fdt_path_offset(blob, arg[i]);
+		if (node < 0) {
+			if (disp->default_val) {
+				puts(disp->default_val);
+				continue;
+			} else {
+				report_error(arg[i], node);
+				return -1;
+			}
+		}
+		prop =3D args_per_step =3D=3D 1 ? NULL : arg[i + 1];
+
+		if (show_data_for_item(blob, disp, node, prop))
+			return -1;
+	}
+	return 0;
+}
+
+static const char *usage_msg =3D
+	"fdtget - read values from device tree\n"
+	"\n"
+	"Each value is printed on a new line.\n\n"
+	"Usage:\n"
+	"	fdtget <options> <dt file> [<node> <property>]...\n"
+	"	fdtget -p <options> <dt file> [<node> ]...\n"
+	"Options:\n"
+	"\t-t <type>\tType of data\n"
+	"\t-p\t\tList properties for each node\n"
+	"\t-l\t\tList subnodes for each node\n"
+	"\t-d\t\tDefault value to display when the property is "
+			"missing\n"
+	"\t-h\t\tPrint this help\n\n"
+	USAGE_TYPE_MSG;
+
+static void usage(const char *msg)
+{
+	if (msg)
+		fprintf(stderr, "Error: %s\n\n", msg);
+
+	fprintf(stderr, "%s", usage_msg);
+	exit(2);
+}
+
+int main(int argc, char *argv[])
+{
+	char *filename =3D NULL;
+	struct display_info disp;
+	int args_per_step =3D 2;
+
+	/* set defaults */
+	memset(&disp, '\0', sizeof(disp));
+	disp.size =3D -1;
+	disp.mode =3D MODE_SHOW_VALUE;
+	for (;;) {
+		int c =3D getopt(argc, argv, "d:hlpt:");
+		if (c =3D=3D -1)
+			break;
+
+		switch (c) {
+		case 'h':
+		case '?':
+			usage(NULL);
+
+		case 't':
+			if (utilfdt_decode_type(optarg, &disp.type,
+					&disp.size))
+				usage("Invalid type string");
+			break;
+
+		case 'p':
+			disp.mode =3D MODE_LIST_PROPS;
+			args_per_step =3D 1;
+			break;
+
+		case 'l':
+			disp.mode =3D MODE_LIST_SUBNODES;
+			args_per_step =3D 1;
+			break;
+
+		case 'd':
+			disp.default_val =3D optarg;
+			break;
+		}
+	}
+
+	if (optind < argc)
+		filename =3D argv[optind++];
+	if (!filename)
+		usage("Missing filename");
+
+	argv +=3D optind;
+	argc -=3D optind;
+
+	/* Allow no arguments, and silently succeed */
+	if (!argc)
+		return 0;
+
+	/* Check for node, property arguments */
+	if (args_per_step =3D=3D 2 && (argc % 2))
+		usage("Must have an even number of arguments");
+
+	if (do_fdtget(&disp, filename, argv, argc, args_per_step))
+		return 1;
+	return 0;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/fdtput.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/dtc/fdtput.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,362 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <assert.h>
+#include <ctype.h>
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <libfdt.h>
+
+#include "util.h"
+
+/* These are the operations we support */
+enum oper_type {
+	OPER_WRITE_PROP,		/* Write a property in a node */
+	OPER_CREATE_NODE,		/* Create a new node */
+};
+
+struct display_info {
+	enum oper_type oper;	/* operation to perform */
+	int type;		/* data type (s/i/u/x or 0 for default) */
+	int size;		/* data size (1/2/4) */
+	int verbose;		/* verbose output */
+	int auto_path;		/* automatically create all path components */
+};
+
+
+/**
+ * Report an error with a particular node.
+ *
+ * @param name		Node name to report error on
+ * @param namelen	Length of node name, or -1 to use entire string
+ * @param err		Error number to report (-FDT_ERR_...)
+ */
+static void report_error(const char *name, int namelen, int err)
+{
+	if (namelen =3D=3D -1)
+		namelen =3D strlen(name);
+	fprintf(stderr, "Error at '%1.*s': %s\n", namelen, name,
+		fdt_strerror(err));
+}
+
+/**
+ * Encode a series of arguments in a property value.
+ *
+ * @param disp		Display information / options
+ * @param arg		List of arguments from command line
+ * @param arg_count	Number of arguments (may be 0)
+ * @param valuep	Returns buffer containing value
+ * @param *value_len	Returns length of value encoded
+ */
+static int encode_value(struct display_info *disp, char **arg, int arg_cou=
nt,
+			char **valuep, int *value_len)
+{
+	char *value =3D NULL;	/* holding area for value */
+	int value_size =3D 0;	/* size of holding area */
+	char *ptr;		/* pointer to current value position */
+	int len;		/* length of this cell/string/byte */
+	int ival;
+	int upto;	/* the number of bytes we have written to buf */
+	char fmt[3];
+
+	upto =3D 0;
+
+	if (disp->verbose)
+		fprintf(stderr, "Decoding value:\n");
+
+	fmt[0] =3D '%';
+	fmt[1] =3D disp->type ? disp->type : 'd';
+	fmt[2] =3D '\0';
+	for (; arg_count > 0; arg++, arg_count--, upto +=3D len) {
+		/* assume integer unless told otherwise */
+		if (disp->type =3D=3D 's')
+			len =3D strlen(*arg) + 1;
+		else
+			len =3D disp->size =3D=3D -1 ? 4 : disp->size;
+
+		/* enlarge our value buffer by a suitable margin if needed */
+		if (upto + len > value_size) {
+			value_size =3D (upto + len) + 500;
+			value =3D realloc(value, value_size);
+			if (!value) {
+				fprintf(stderr, "Out of mmory: cannot alloc "
+					"%d bytes\n", value_size);
+				return -1;
+			}
+		}
+
+		ptr =3D value + upto;
+		if (disp->type =3D=3D 's') {
+			memcpy(ptr, *arg, len);
+			if (disp->verbose)
+				fprintf(stderr, "\tstring: '%s'\n", ptr);
+		} else {
+			int *iptr =3D (int *)ptr;
+			sscanf(*arg, fmt, &ival);
+			if (len =3D=3D 4)
+				*iptr =3D cpu_to_fdt32(ival);
+			else
+				*ptr =3D (uint8_t)ival;
+			if (disp->verbose) {
+				fprintf(stderr, "\t%s: %d\n",
+					disp->size =3D=3D 1 ? "byte" :
+					disp->size =3D=3D 2 ? "short" : "int",
+					ival);
+			}
+		}
+	}
+	*value_len =3D upto;
+	*valuep =3D value;
+	if (disp->verbose)
+		fprintf(stderr, "Value size %d\n", upto);
+	return 0;
+}
+
+static int store_key_value(void *blob, const char *node_name,
+		const char *property, const char *buf, int len)
+{
+	int node;
+	int err;
+
+	node =3D fdt_path_offset(blob, node_name);
+	if (node < 0) {
+		report_error(node_name, -1, node);
+		return -1;
+	}
+
+	err =3D fdt_setprop(blob, node, property, buf, len);
+	if (err) {
+		report_error(property, -1, err);
+		return -1;
+	}
+	return 0;
+}
+
+/**
+ * Create paths as needed for all components of a path
+ *
+ * Any components of the path that do not exist are created. Errors are
+ * reported.
+ *
+ * @param blob		FDT blob to write into
+ * @param in_path	Path to process
+ * @return 0 if ok, -1 on error
+ */
+static int create_paths(void *blob, const char *in_path)
+{
+	const char *path =3D in_path;
+	const char *sep;
+	int node, offset =3D 0;
+
+	/* skip leading '/' */
+	while (*path =3D=3D '/')
+		path++;
+
+	for (sep =3D path; *sep; path =3D sep + 1, offset =3D node) {
+		/* equivalent to strchrnul(), but it requires _GNU_SOURCE */
+		sep =3D strchr(path, '/');
+		if (!sep)
+			sep =3D path + strlen(path);
+
+		node =3D fdt_subnode_offset_namelen(blob, offset, path,
+				sep - path);
+		if (node =3D=3D -FDT_ERR_NOTFOUND) {
+			node =3D fdt_add_subnode_namelen(blob, offset, path,
+						       sep - path);
+		}
+		if (node < 0) {
+			report_error(path, sep - path, node);
+			return -1;
+		}
+	}
+
+	return 0;
+}
+
+/**
+ * Create a new node in the fdt.
+ *
+ * This will overwrite the node_name string. Any error is reported.
+ *
+ * TODO: Perhaps create fdt_path_offset_namelen() so we don't need to do t=
his.
+ *
+ * @param blob		FDT blob to write into
+ * @param node_name	Name of node to create
+ * @return new node offset if found, or -1 on failure
+ */
+static int create_node(void *blob, const char *node_name)
+{
+	int node =3D 0;
+	char *p;
+
+	p =3D strrchr(node_name, '/');
+	if (!p) {
+		report_error(node_name, -1, -FDT_ERR_BADPATH);
+		return -1;
+	}
+	*p =3D '\0';
+
+	if (p > node_name) {
+		node =3D fdt_path_offset(blob, node_name);
+		if (node < 0) {
+			report_error(node_name, -1, node);
+			return -1;
+		}
+	}
+
+	node =3D fdt_add_subnode(blob, node, p + 1);
+	if (node < 0) {
+		report_error(p + 1, -1, node);
+		return -1;
+	}
+
+	return 0;
+}
+
+static int do_fdtput(struct display_info *disp, const char *filename,
+		    char **arg, int arg_count)
+{
+	char *value;
+	char *blob;
+	int len, ret =3D 0;
+
+	blob =3D utilfdt_read(filename);
+	if (!blob)
+		return -1;
+
+	switch (disp->oper) {
+	case OPER_WRITE_PROP:
+		/*
+		 * Convert the arguments into a single binary value, then
+		 * store them into the property.
+		 */
+		assert(arg_count >=3D 2);
+		if (disp->auto_path && create_paths(blob, *arg))
+			return -1;
+		if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) ||
+			store_key_value(blob, *arg, arg[1], value, len))
+			ret =3D -1;
+		break;
+	case OPER_CREATE_NODE:
+		for (; ret >=3D 0 && arg_count--; arg++) {
+			if (disp->auto_path)
+				ret =3D create_paths(blob, *arg);
+			else
+				ret =3D create_node(blob, *arg);
+		}
+		break;
+	}
+	if (ret >=3D 0)
+		ret =3D utilfdt_write(filename, blob);
+
+	free(blob);
+	return ret;
+}
+
+static const char *usage_msg =3D
+	"fdtput - write a property value to a device tree\n"
+	"\n"
+	"The command line arguments are joined together into a single value.\n"
+	"\n"
+	"Usage:\n"
+	"	fdtput <options> <dt file> <node> <property> [<value>...]\n"
+	"	fdtput -c <options> <dt file> [<node>...]\n"
+	"Options:\n"
+	"\t-c\t\tCreate nodes if they don't already exist\n"
+	"\t-p\t\tAutomatically create nodes as needed for the node path\n"
+	"\t-t <type>\tType of data\n"
+	"\t-v\t\tVerbose: display each value decoded from command line\n"
+	"\t-h\t\tPrint this help\n\n"
+	USAGE_TYPE_MSG;
+
+static void usage(const char *msg)
+{
+	if (msg)
+		fprintf(stderr, "Error: %s\n\n", msg);
+
+	fprintf(stderr, "%s", usage_msg);
+	exit(2);
+}
+
+int main(int argc, char *argv[])
+{
+	struct display_info disp;
+	char *filename =3D NULL;
+
+	memset(&disp, '\0', sizeof(disp));
+	disp.size =3D -1;
+	disp.oper =3D OPER_WRITE_PROP;
+	for (;;) {
+		int c =3D getopt(argc, argv, "chpt:v");
+		if (c =3D=3D -1)
+			break;
+
+		/*
+		 * TODO: add options to:
+		 * - delete property
+		 * - delete node (optionally recursively)
+		 * - rename node
+		 * - pack fdt before writing
+		 * - set amount of free space when writing
+		 * - expand fdt if value doesn't fit
+		 */
+		switch (c) {
+		case 'c':
+			disp.oper =3D OPER_CREATE_NODE;
+			break;
+		case 'h':
+		case '?':
+			usage(NULL);
+		case 'p':
+			disp.auto_path =3D 1;
+			break;
+		case 't':
+			if (utilfdt_decode_type(optarg, &disp.type,
+					&disp.size))
+				usage("Invalid type string");
+			break;
+
+		case 'v':
+			disp.verbose =3D 1;
+			break;
+		}
+	}
+
+	if (optind < argc)
+		filename =3D argv[optind++];
+	if (!filename)
+		usage("Missing filename");
+
+	argv +=3D optind;
+	argc -=3D optind;
+
+	if (disp.oper =3D=3D OPER_WRITE_PROP) {
+		if (argc < 1)
+			usage("Missing node");
+		if (argc < 2)
+			usage("Missing property");
+	}
+
+	if (do_fdtput(&disp, filename, argv, argc))
+		return 1;
+	return 0;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/flattree.c
--- a/head/contrib/dtc/flattree.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/flattree.c	Wed Jul 25 16:21:35 2012 +0300
@@ -52,9 +52,9 @@
 	void (*string)(void *, char *, int);
 	void (*align)(void *, int);
 	void (*data)(void *, struct data);
-	void (*beginnode)(void *, const char *);
-	void (*endnode)(void *, const char *);
-	void (*property)(void *, const char *);
+	void (*beginnode)(void *, struct label *labels);
+	void (*endnode)(void *, struct label *labels);
+	void (*property)(void *, struct label *labels);
 };
=20
 static void bin_emit_cell(void *e, cell_t val)
@@ -89,17 +89,17 @@
 	*dtbuf =3D data_append_data(*dtbuf, d.val, d.len);
 }
=20
-static void bin_emit_beginnode(void *e, const char *label)
+static void bin_emit_beginnode(void *e, struct label *labels)
 {
 	bin_emit_cell(e, FDT_BEGIN_NODE);
 }
=20
-static void bin_emit_endnode(void *e, const char *label)
+static void bin_emit_endnode(void *e, struct label *labels)
 {
 	bin_emit_cell(e, FDT_END_NODE);
 }
=20
-static void bin_emit_property(void *e, const char *label)
+static void bin_emit_property(void *e, struct label *labels)
 {
 	bin_emit_cell(e, FDT_PROP);
 }
@@ -191,37 +191,40 @@
 	assert(off =3D=3D d.len);
 }
=20
-static void asm_emit_beginnode(void *e, const char *label)
+static void asm_emit_beginnode(void *e, struct label *labels)
 {
 	FILE *f =3D e;
+	struct label *l;
=20
-	if (label) {
-		fprintf(f, "\t.globl\t%s\n", label);
-		fprintf(f, "%s:\n", label);
+	for_each_label(labels, l) {
+		fprintf(f, "\t.globl\t%s\n", l->label);
+		fprintf(f, "%s:\n", l->label);
 	}
 	fprintf(f, "\t/* FDT_BEGIN_NODE */\n");
 	asm_emit_cell(e, FDT_BEGIN_NODE);
 }
=20
-static void asm_emit_endnode(void *e, const char *label)
+static void asm_emit_endnode(void *e, struct label *labels)
 {
 	FILE *f =3D e;
+	struct label *l;
=20
 	fprintf(f, "\t/* FDT_END_NODE */\n");
 	asm_emit_cell(e, FDT_END_NODE);
-	if (label) {
-		fprintf(f, "\t.globl\t%s_end\n", label);
-		fprintf(f, "%s_end:\n", label);
+	for_each_label(labels, l) {
+		fprintf(f, "\t.globl\t%s_end\n", l->label);
+		fprintf(f, "%s_end:\n", l->label);
 	}
 }
=20
-static void asm_emit_property(void *e, const char *label)
+static void asm_emit_property(void *e, struct label *labels)
 {
 	FILE *f =3D e;
+	struct label *l;
=20
-	if (label) {
-		fprintf(f, "\t.globl\t%s\n", label);
-		fprintf(f, "%s:\n", label);
+	for_each_label(labels, l) {
+		fprintf(f, "\t.globl\t%s\n", l->label);
+		fprintf(f, "%s:\n", l->label);
 	}
 	fprintf(f, "\t/* FDT_PROP */\n");
 	asm_emit_cell(e, FDT_PROP);
@@ -260,7 +263,7 @@
 	struct node *child;
 	int seen_name_prop =3D 0;
=20
-	emit->beginnode(etarget, tree->label);
+	emit->beginnode(etarget, tree->labels);
=20
 	if (vi->flags & FTF_FULLPATH)
 		emit->string(etarget, tree->fullpath, 0);
@@ -277,7 +280,7 @@
=20
 		nameoff =3D stringtable_insert(strbuf, prop->name);
=20
-		emit->property(etarget, prop->label);
+		emit->property(etarget, prop->labels);
 		emit->cell(etarget, prop->val.len);
 		emit->cell(etarget, nameoff);
=20
@@ -304,7 +307,7 @@
 		flatten_tree(child, emit, etarget, strbuf, vi);
 	}
=20
-	emit->endnode(etarget, tree->label);
+	emit->endnode(etarget, tree->labels);
 }
=20
 static struct data flatten_reserve_list(struct reserve_info *reservelist,
@@ -525,9 +528,11 @@
 	 * as it appears .quad isn't available in some assemblers.
 	 */
 	for (re =3D bi->reservelist; re; re =3D re->next) {
-		if (re->label) {
-			fprintf(f, "\t.globl\t%s\n", re->label);
-			fprintf(f, "%s:\n", re->label);
+		struct label *l;
+
+		for_each_label(re->labels, l) {
+			fprintf(f, "\t.globl\t%s\n", l->label);
+			fprintf(f, "%s:\n", l->label);
 		}
 		ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.address >> 32));
 		ASM_EMIT_BELONG(f, "0x%08x",
@@ -684,7 +689,7 @@
=20
 	val =3D flat_read_data(dtbuf, proplen);
=20
-	return build_property(name, val, NULL);
+	return build_property(name, val);
 }
=20
=20
@@ -692,7 +697,6 @@
 {
 	struct reserve_info *reservelist =3D NULL;
 	struct reserve_info *new;
-	const char *p;
 	struct fdt_reserve_entry re;
=20
 	/*
@@ -701,7 +705,6 @@
 	 *
 	 * First pass, count entries.
 	 */
-	p =3D inb->ptr;
 	while (1) {
 		flat_read_chunk(inb, &re, sizeof(re));
 		re.address  =3D fdt64_to_cpu(re.address);
@@ -709,7 +712,7 @@
 		if (re.size =3D=3D 0)
 			break;
=20
-		new =3D build_reserve_entry(re.address, re.size, NULL);
+		new =3D build_reserve_entry(re.address, re.size);
 		reservelist =3D add_reserve_entry(reservelist, new);
 	}
=20
@@ -797,7 +800,7 @@
=20
 struct boot_info *dt_from_blob(const char *fname)
 {
-	struct dtc_file *dtcf;
+	FILE *f;
 	uint32_t magic, totalsize, version, size_dt, boot_cpuid_phys;
 	uint32_t off_dt, off_str, off_mem_rsvmap;
 	int rc;
@@ -812,14 +815,14 @@
 	uint32_t val;
 	int flags =3D 0;
=20
-	dtcf =3D dtc_open_file(fname, NULL);
+	f =3D srcfile_relative_open(fname, NULL);
=20
-	rc =3D fread(&magic, sizeof(magic), 1, dtcf->file);
-	if (ferror(dtcf->file))
+	rc =3D fread(&magic, sizeof(magic), 1, f);
+	if (ferror(f))
 		die("Error reading DT blob magic number: %s\n",
 		    strerror(errno));
 	if (rc < 1) {
-		if (feof(dtcf->file))
+		if (feof(f))
 			die("EOF reading DT blob magic number\n");
 		else
 			die("Mysterious short read reading magic number\n");
@@ -829,11 +832,11 @@
 	if (magic !=3D FDT_MAGIC)
 		die("Blob has incorrect magic number\n");
=20
-	rc =3D fread(&totalsize, sizeof(totalsize), 1, dtcf->file);
-	if (ferror(dtcf->file))
+	rc =3D fread(&totalsize, sizeof(totalsize), 1, f);
+	if (ferror(f))
 		die("Error reading DT blob size: %s\n", strerror(errno));
 	if (rc < 1) {
-		if (feof(dtcf->file))
+		if (feof(f))
 			die("EOF reading DT blob size\n");
 		else
 			die("Mysterious short read reading blob size\n");
@@ -853,12 +856,12 @@
 	p =3D blob + sizeof(magic)  + sizeof(totalsize);
=20
 	while (sizeleft) {
-		if (feof(dtcf->file))
+		if (feof(f))
 			die("EOF before reading %d bytes of DT blob\n",
 			    totalsize);
=20
-		rc =3D fread(p, 1, sizeleft, dtcf->file);
-		if (ferror(dtcf->file))
+		rc =3D fread(p, 1, sizeleft, f);
+		if (ferror(f))
 			die("Error reading DT blob: %s\n",
 			    strerror(errno));
=20
@@ -921,7 +924,7 @@
=20
 	free(blob);
=20
-	dtc_close_file(dtcf);
+	fclose(f);
=20
 	return build_boot_info(reservelist, tree, boot_cpuid_phys);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/fstree.c
--- a/head/contrib/dtc/fstree.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/fstree.c	Wed Jul 25 16:21:35 2012 +0300
@@ -60,8 +60,7 @@
 			} else {
 				prop =3D build_property(xstrdup(de->d_name),
 						      data_copy_file(pfile,
-								     st.st_size),
-						      NULL);
+								     st.st_size));
 				add_property(tree, prop);
 				fclose(pfile);
 			}
@@ -69,14 +68,14 @@
 			struct node *newchild;
=20
 			newchild =3D read_fstree(tmpnam);
-			newchild =3D name_node(newchild, xstrdup(de->d_name),
-					     NULL);
+			newchild =3D name_node(newchild, xstrdup(de->d_name));
 			add_child(tree, newchild);
 		}
=20
 		free(tmpnam);
 	}
=20
+	closedir(d);
 	return tree;
 }
=20
@@ -85,8 +84,8 @@
 	struct node *tree;
=20
 	tree =3D read_fstree(dirname);
-	tree =3D name_node(tree, "", NULL);
+	tree =3D name_node(tree, "");
=20
-	return build_boot_info(NULL, tree, 0);
+	return build_boot_info(NULL, tree, guess_boot_cpuid(tree));
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/ftdump.c
--- a/head/contrib/dtc/ftdump.c	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-/*
- * ftdump.c - Contributed by Pantelis Antoniou <pantelis.antoniou AT gmail=
.com>
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <fdt.h>
-#include <libfdt_env.h>
-
-#define FTDUMP_BUF_SIZE	65536
-
-#define ALIGN(x, a)	(((x) + ((a) - 1)) & ~((a) - 1))
-#define PALIGN(p, a)	((void *)(ALIGN((unsigned long)(p), (a))))
-#define GET_CELL(p)	(p +=3D 4, *((const uint32_t *)(p-4)))
-
-static int is_printable_string(const void *data, int len)
-{
-	const char *s =3D data;
-	const char *ss;
-
-	/* zero length is not */
-	if (len =3D=3D 0)
-		return 0;
-
-	/* must terminate with zero */
-	if (s[len - 1] !=3D '\0')
-		return 0;
-
-	ss =3D s;
-	while (*s && isprint(*s))
-		s++;
-
-	/* not zero, or not done yet */
-	if (*s !=3D '\0' || (s + 1 - ss) < len)
-		return 0;
-
-	return 1;
-}
-
-static void print_data(const char *data, int len)
-{
-	int i;
-	const char *p =3D data;
-
-	/* no data, don't print */
-	if (len =3D=3D 0)
-		return;
-
-	if (is_printable_string(data, len)) {
-		printf(" =3D \"%s\"", (const char *)data);
-	} else if ((len % 4) =3D=3D 0) {
-		printf(" =3D <");
-		for (i =3D 0; i < len; i +=3D 4)
-			printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)),
-			       i < (len - 4) ? " " : "");
-		printf(">");
-	} else {
-		printf(" =3D [");
-		for (i =3D 0; i < len; i++)
-			printf("%02x%s", *p++, i < len - 1 ? " " : "");
-		printf("]");
-	}
-}
-
-static void dump_blob(void *blob)
-{
-	struct fdt_header *bph =3D blob;
-	uint32_t off_mem_rsvmap =3D fdt32_to_cpu(bph->off_mem_rsvmap);
-	uint32_t off_dt =3D fdt32_to_cpu(bph->off_dt_struct);
-	uint32_t off_str =3D fdt32_to_cpu(bph->off_dt_strings);
-	struct fdt_reserve_entry *p_rsvmap =3D
-		(struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap);
-	const char *p_struct =3D (const char *)blob + off_dt;
-	const char *p_strings =3D (const char *)blob + off_str;
-	uint32_t version =3D fdt32_to_cpu(bph->version);
-	uint32_t totalsize =3D fdt32_to_cpu(bph->totalsize);
-	uint32_t tag;
-	const char *p, *s, *t;
-	int depth, sz, shift;
-	int i;
-	uint64_t addr, size;
-
-	depth =3D 0;
-	shift =3D 4;
-
-	printf("/dts-v1/;\n");
-	printf("// magic:\t\t0x%x\n", fdt32_to_cpu(bph->magic));
-	printf("// totalsize:\t\t0x%x (%d)\n", totalsize, totalsize);
-	printf("// off_dt_struct:\t0x%x\n", off_dt);
-	printf("// off_dt_strings:\t0x%x\n", off_str);
-	printf("// off_mem_rsvmap:\t0x%x\n", off_mem_rsvmap);
-	printf("// version:\t\t%d\n", version);
-	printf("// last_comp_version:\t%d\n",
-	       fdt32_to_cpu(bph->last_comp_version));
-	if (version >=3D 2)
-		printf("// boot_cpuid_phys:\t0x%x\n",
-		       fdt32_to_cpu(bph->boot_cpuid_phys));
-
-	if (version >=3D 3)
-		printf("// size_dt_strings:\t0x%x\n",
-		       fdt32_to_cpu(bph->size_dt_strings));
-	if (version >=3D 17)
-		printf("// size_dt_struct:\t0x%x\n",
-		       fdt32_to_cpu(bph->size_dt_struct));
-	printf("\n");
-
-	for (i =3D 0; ; i++) {
-		addr =3D fdt64_to_cpu(p_rsvmap[i].address);
-		size =3D fdt64_to_cpu(p_rsvmap[i].size);
-		if (addr =3D=3D 0 && size =3D=3D 0)
-			break;
-
-		printf("/memreserve/ %llx %llx;\n",
-		       (unsigned long long)addr, (unsigned long long)size);
-	}
-
-	p =3D p_struct;
-	while ((tag =3D fdt32_to_cpu(GET_CELL(p))) !=3D FDT_END) {
-
-		/* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */
-
-		if (tag =3D=3D FDT_BEGIN_NODE) {
-			s =3D p;
-			p =3D PALIGN(p + strlen(s) + 1, 4);
-
-			if (*s =3D=3D '\0')
-				s =3D "/";
-
-			printf("%*s%s {\n", depth * shift, "", s);
-
-			depth++;
-			continue;
-		}
-
-		if (tag =3D=3D FDT_END_NODE) {
-			depth--;
-
-			printf("%*s};\n", depth * shift, "");
-			continue;
-		}
-
-		if (tag =3D=3D FDT_NOP) {
-			printf("%*s// [NOP]\n", depth * shift, "");
-			continue;
-		}
-
-		if (tag !=3D FDT_PROP) {
-			fprintf(stderr, "%*s ** Unknown tag 0x%08x\n", depth * shift, "", tag);
-			break;
-		}
-		sz =3D fdt32_to_cpu(GET_CELL(p));
-		s =3D p_strings + fdt32_to_cpu(GET_CELL(p));
-		if (version < 16 && sz >=3D 8)
-			p =3D PALIGN(p, 8);
-		t =3D p;
-
-		p =3D PALIGN(p + sz, 4);
-
-		printf("%*s%s", depth * shift, "", s);
-		print_data(t, sz);
-		printf(";\n");
-	}
-}
-
-
-int main(int argc, char *argv[])
-{
-	FILE *fp;
-	char *buf;
-	int size;
-
-	if (argc < 2) {
-		fprintf(stderr, "supply input filename\n");
-		return 5;
-	}
-
-	if (strcmp(argv[1], "-") =3D=3D 0) {
-		fp =3D stdin;
-	} else {
-		fp =3D fopen(argv[1], "rb");
-		if (fp =3D=3D NULL) {
-			fprintf(stderr, "unable to open %s\n", argv[1]);
-			return 10;
-		}
-	}
-
-	buf =3D malloc(FTDUMP_BUF_SIZE);
-	if (!buf) {
-		fprintf(stderr, "Couldn't allocate %d byte buffer\n", FTDUMP_BUF_SIZE);
-		return 10;
-	}
-
-	size =3D fread(buf, 1, FTDUMP_BUF_SIZE, fp);
-	if (size =3D=3D FTDUMP_BUF_SIZE) {
-		fprintf(stderr, "file too large (maximum is %d bytes)\n", FTDUMP_BUF_SIZ=
E);
-		return 10;
-	}
-
-	dump_blob(buf);
-
-	fclose(fp);
-
-	return 0;
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/Makefile.libfdt
--- a/head/contrib/dtc/libfdt/Makefile.libfdt	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/Makefile.libfdt	Wed Jul 25 16:21:35 2012 +0300
@@ -3,7 +3,8 @@
 # This is not a complete Makefile of itself.  Instead, it is designed to
 # be easily embeddable into other systems of Makefiles.
 #
+LIBFDT_soname =3D libfdt.$(SHAREDLIB_EXT).1
 LIBFDT_INCLUDES =3D fdt.h libfdt.h
 LIBFDT_VERSION =3D version.lds
-LIBFDT_SRCS =3D fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+LIBFDT_SRCS =3D fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c =
fdt_empty_tree.c
 LIBFDT_OBJS =3D $(LIBFDT_SRCS:%.c=3D%.o)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/fdt.c
--- a/head/contrib/dtc/libfdt/fdt.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/fdt.c	Wed Jul 25 16:21:35 2012 +0300
@@ -149,6 +149,15 @@
 	return offset;
 }
=20
+int _fdt_check_prop_offset(const void *fdt, int offset)
+{
+	if ((offset < 0) || (offset % FDT_TAGSIZE)
+	    || (fdt_next_tag(fdt, offset, &offset) !=3D FDT_PROP))
+		return -FDT_ERR_BADOFFSET;
+
+	return offset;
+}
+
 int fdt_next_node(const void *fdt, int offset, int *depth)
 {
 	int nextoffset =3D 0;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/fdt_empty_tree=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/dtc/libfdt/fdt_empty_tree.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,84 @@
+/*
+ * libfdt - Flat Device Tree manipulation
+ * Copyright (C) 2012 David Gibson, IBM Corporation.
+ *
+ * libfdt is dual licensed: you can use it either under the terms of
+ * the GPL, or the BSD license, at your option.
+ *
+ *  a) This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this library; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Alternatively,
+ *
+ *  b) Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *     1. Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *     2. Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "libfdt_env.h"
+
+#include <fdt.h>
+#include <libfdt.h>
+
+#include "libfdt_internal.h"
+
+int fdt_create_empty_tree(void *buf, int bufsize)
+{
+	int err;
+
+	err =3D fdt_create(buf, bufsize);
+	if (err)
+		return err;
+
+	err =3D fdt_finish_reservemap(buf);
+	if (err)
+		return err;
+
+	err =3D fdt_begin_node(buf, "");
+	if (err)
+		return err;
+
+	err =3D  fdt_end_node(buf);
+	if (err)
+		return err;
+
+	err =3D fdt_finish(buf);
+	if (err)
+		return err;
+
+	return fdt_open_into(buf, buf, bufsize);
+}
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/fdt_ro.c
--- a/head/contrib/dtc/libfdt/fdt_ro.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/fdt_ro.c	Wed Jul 25 16:21:35 2012 +0300
@@ -105,6 +105,30 @@
 	return i;
 }
=20
+static int _nextprop(const void *fdt, int offset)
+{
+	uint32_t tag;
+	int nextoffset;
+
+	do {
+		tag =3D fdt_next_tag(fdt, offset, &nextoffset);
+
+		switch (tag) {
+		case FDT_END:
+			if (nextoffset >=3D 0)
+				return -FDT_ERR_BADSTRUCTURE;
+			else
+				return nextoffset;
+
+		case FDT_PROP:
+			return offset;
+		}
+		offset =3D nextoffset;
+	} while (tag =3D=3D FDT_NOP);
+
+	return -FDT_ERR_NOTFOUND;
+}
+
 int fdt_subnode_offset_namelen(const void *fdt, int offset,
 			       const char *name, int namelen)
 {
@@ -194,52 +218,66 @@
 	return NULL;
 }
=20
+int fdt_first_property_offset(const void *fdt, int nodeoffset)
+{
+	int offset;
+
+	if ((offset =3D _fdt_check_node_offset(fdt, nodeoffset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+int fdt_next_property_offset(const void *fdt, int offset)
+{
+	if ((offset =3D _fdt_check_prop_offset(fdt, offset)) < 0)
+		return offset;
+
+	return _nextprop(fdt, offset);
+}
+
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp)
+{
+	int err;
+	const struct fdt_property *prop;
+
+	if ((err =3D _fdt_check_prop_offset(fdt, offset)) < 0) {
+		if (lenp)
+			*lenp =3D err;
+		return NULL;
+	}
+
+	prop =3D _fdt_offset_ptr(fdt, offset);
+
+	if (lenp)
+		*lenp =3D fdt32_to_cpu(prop->len);
+
+	return prop;
+}
+
 const struct fdt_property *fdt_get_property_namelen(const void *fdt,
-						    int nodeoffset,
+						    int offset,
 						    const char *name,
 						    int namelen, int *lenp)
 {
-	uint32_t tag;
-	const struct fdt_property *prop;
-	int offset, nextoffset;
-	int err;
+	for (offset =3D fdt_first_property_offset(fdt, offset);
+	     (offset >=3D 0);
+	     (offset =3D fdt_next_property_offset(fdt, offset))) {
+		const struct fdt_property *prop;
=20
-	if (((err =3D fdt_check_header(fdt)) !=3D 0)
-	    || ((err =3D _fdt_check_node_offset(fdt, nodeoffset)) < 0))
-			goto fail;
-
-	nextoffset =3D err;
-	do {
-		offset =3D nextoffset;
-
-		tag =3D fdt_next_tag(fdt, offset, &nextoffset);
-		switch (tag) {
-		case FDT_END:
-			if (nextoffset < 0)
-				err =3D nextoffset;
-			else
-				/* FDT_END tag with unclosed nodes */
-				err =3D -FDT_ERR_BADSTRUCTURE;
-			goto fail;
-
-		case FDT_PROP:
-			prop =3D _fdt_offset_ptr(fdt, offset);
-			if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
-					   name, namelen)) {
-				/* Found it! */
-				if (lenp)
-					*lenp =3D fdt32_to_cpu(prop->len);
-
-				return prop;
-			}
+		if (!(prop =3D fdt_get_property_by_offset(fdt, offset, lenp))) {
+			offset =3D -FDT_ERR_INTERNAL;
 			break;
 		}
-	} while ((tag !=3D FDT_BEGIN_NODE) && (tag !=3D FDT_END_NODE));
+		if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff),
+				   name, namelen))
+			return prop;
+	}
=20
-	err =3D -FDT_ERR_NOTFOUND;
- fail:
 	if (lenp)
-		*lenp =3D err;
+		*lenp =3D offset;
 	return NULL;
 }
=20
@@ -263,6 +301,19 @@
 	return prop->data;
 }
=20
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp)
+{
+	const struct fdt_property *prop;
+
+	prop =3D fdt_get_property_by_offset(fdt, offset, lenp);
+	if (!prop)
+		return NULL;
+	if (namep)
+		*namep =3D fdt_string(fdt, fdt32_to_cpu(prop->nameoff));
+	return prop->data;
+}
+
 const void *fdt_getprop(const void *fdt, int nodeoffset,
 			const char *name, int *lenp)
 {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/fdt_rw.c
--- a/head/contrib/dtc/libfdt/fdt_rw.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/fdt_rw.c	Wed Jul 25 16:21:35 2012 +0300
@@ -289,6 +289,33 @@
 	return 0;
 }
=20
+int fdt_appendprop(void *fdt, int nodeoffset, const char *name,
+		   const void *val, int len)
+{
+	struct fdt_property *prop;
+	int err, oldlen, newlen;
+
+	FDT_RW_CHECK_HEADER(fdt);
+
+	prop =3D fdt_get_property_w(fdt, nodeoffset, name, &oldlen);
+	if (prop) {
+		newlen =3D len + oldlen;
+		err =3D _fdt_splice_struct(fdt, prop->data,
+					 FDT_TAGALIGN(oldlen),
+					 FDT_TAGALIGN(newlen));
+		if (err)
+			return err;
+		prop->len =3D cpu_to_fdt32(newlen);
+		memcpy(prop->data + oldlen, val, len);
+	} else {
+		err =3D _fdt_add_property(fdt, nodeoffset, name, len, &prop);
+		if (err)
+			return err;
+		memcpy(prop->data, val, len);
+	}
+	return 0;
+}
+
 int fdt_delprop(void *fdt, int nodeoffset, const char *name)
 {
 	struct fdt_property *prop;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/libfdt.h
--- a/head/contrib/dtc/libfdt/libfdt.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/libfdt.h	Wed Jul 25 16:21:35 2012 +0300
@@ -343,6 +343,75 @@
 const char *fdt_get_name(const void *fdt, int nodeoffset, int *lenp);
=20
 /**
+ * fdt_first_property_offset - find the offset of a node's first property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: structure block offset of a node
+ *
+ * fdt_first_property_offset() finds the first property of the node at
+ * the given structure block offset.
+ *
+ * returns:
+ *	structure block offset of the property (>=3D0), on success
+ *	-FDT_ERR_NOTFOUND, if the requested node has no properties
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_BEGIN_NODE tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_first_property_offset(const void *fdt, int nodeoffset);
+
+/**
+ * fdt_next_property_offset - step through a node's properties
+ * @fdt: pointer to the device tree blob
+ * @offset: structure block offset of a property
+ *
+ * fdt_next_property_offset() finds the property immediately after the
+ * one at the given structure block offset.  This will be a property
+ * of the same node as the given property.
+ *
+ * returns:
+ *	structure block offset of the next property (>=3D0), on success
+ *	-FDT_ERR_NOTFOUND, if the given property is the last in its node
+ *	-FDT_ERR_BADOFFSET, if nodeoffset did not point to an FDT_PROP tag
+ *      -FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings.
+ */
+int fdt_next_property_offset(const void *fdt, int offset);
+
+/**
+ * fdt_get_property_by_offset - retrieve the property at a given offset
+ * @fdt: pointer to the device tree blob
+ * @offset: offset of the property to retrieve
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_get_property_by_offset() retrieves a pointer to the
+ * fdt_property structure within the device tree blob at the given
+ * offset.  If lenp is non-NULL, the length of the property value is
+ * also returned, in the integer pointed to by lenp.
+ *
+ * returns:
+ *	pointer to the structure representing the property
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=3D0)
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const struct fdt_property *fdt_get_property_by_offset(const void *fdt,
+						      int offset,
+						      int *lenp);
+
+/**
  * fdt_get_property_namelen - find a property based on substring
  * @fdt: pointer to the device tree blob
  * @nodeoffset: offset of the node whose property to find
@@ -396,6 +465,40 @@
 }
=20
 /**
+ * fdt_getprop_by_offset - retrieve the value of a property at a given off=
set
+ * @fdt: pointer to the device tree blob
+ * @ffset: offset of the property to read
+ * @namep: pointer to a string variable (will be overwritten) or NULL
+ * @lenp: pointer to an integer variable (will be overwritten) or NULL
+ *
+ * fdt_getprop_by_offset() retrieves a pointer to the value of the
+ * property at structure block offset 'offset' (this will be a pointer
+ * to within the device blob itself, not a copy of the value).  If
+ * lenp is non-NULL, the length of the property value is also
+ * returned, in the integer pointed to by lenp.  If namep is non-NULL,
+ * the property's namne will also be returned in the char * pointed to
+ * by namep (this will be a pointer to within the device tree's string
+ * block, not a new copy of the name).
+ *
+ * returns:
+ *	pointer to the property's value
+ *		if lenp is non-NULL, *lenp contains the length of the property
+ *		value (>=3D0)
+ *		if namep is non-NULL *namep contiains a pointer to the property
+ *		name.
+ *	NULL, on error
+ *		if lenp is non-NULL, *lenp contains an error code (<0):
+ *		-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_PROP tag
+ *		-FDT_ERR_BADMAGIC,
+ *		-FDT_ERR_BADVERSION,
+ *		-FDT_ERR_BADSTATE,
+ *		-FDT_ERR_BADSTRUCTURE,
+ *		-FDT_ERR_TRUNCATED, standard meanings
+ */
+const void *fdt_getprop_by_offset(const void *fdt, int offset,
+				  const char **namep, int *lenp);
+
+/**
  * fdt_getprop_namelen - get property value based on substring
  * @fdt: pointer to the device tree blob
  * @nodeoffset: offset of the node whose property to find
@@ -749,17 +852,17 @@
 			const void *val, int len);
=20
 /**
- * fdt_setprop_inplace_cell - change the value of a single-cell property
+ * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property
  * @fdt: pointer to the device tree blob
  * @nodeoffset: offset of the node whose property to change
  * @name: name of the property to change
- * @val: cell (32-bit integer) value to replace the property with
+ * @val: 32-bit integer value to replace the property with
  *
- * fdt_setprop_inplace_cell() replaces the value of a given property
- * with the 32-bit integer cell value in val, converting val to
- * big-endian if necessary.  This function cannot change the size of a
- * property, and so will only work if the property already exists and
- * has length 4.
+ * fdt_setprop_inplace_u32() replaces the value of a given property
+ * with the 32-bit integer value in val, converting val to big-endian
+ * if necessary.  This function cannot change the size of a property,
+ * and so will only work if the property already exists and has length
+ * 4.
  *
  * This function will alter only the bytes in the blob which contain
  * the given property value, and will not alter or move any other part
@@ -768,7 +871,7 @@
  * returns:
  *	0, on success
  *	-FDT_ERR_NOSPACE, if the property's length is not equal to 4
-  *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
  *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
  *	-FDT_ERR_BADMAGIC,
  *	-FDT_ERR_BADVERSION,
@@ -776,11 +879,57 @@
  *	-FDT_ERR_BADSTRUCTURE,
  *	-FDT_ERR_TRUNCATED, standard meanings
  */
+static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset,
+					  const char *name, uint32_t val)
+{
+	val =3D cpu_to_fdt32(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_inplace_u64 - change the value of a 64-bit integer property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 64-bit integer value to replace the property with
+ *
+ * fdt_setprop_inplace_u64() replaces the value of a given property
+ * with the 64-bit integer value in val, converting val to big-endian
+ * if necessary.  This function cannot change the size of a property,
+ * and so will only work if the property already exists and has length
+ * 8.
+ *
+ * This function will alter only the bytes in the blob which contain
+ * the given property value, and will not alter or move any other part
+ * of the tree.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, if the property's length is not equal to 8
+ *	-FDT_ERR_NOTFOUND, node does not have the named property
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset,
+					  const char *name, uint64_t val)
+{
+	val =3D cpu_to_fdt64(val);
+	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_inplace_cell - change the value of a single-cell property
+ *
+ * This is an alternative name for fdt_setprop_inplace_u32()
+ */
 static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset,
 					   const char *name, uint32_t val)
 {
-	val =3D cpu_to_fdt32(val);
-	return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val));
+	return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val);
 }
=20
 /**
@@ -842,11 +991,20 @@
 int fdt_finish_reservemap(void *fdt);
 int fdt_begin_node(void *fdt, const char *name);
 int fdt_property(void *fdt, const char *name, const void *val, int len);
-static inline int fdt_property_cell(void *fdt, const char *name, uint32_t =
val)
+static inline int fdt_property_u32(void *fdt, const char *name, uint32_t v=
al)
 {
 	val =3D cpu_to_fdt32(val);
 	return fdt_property(fdt, name, &val, sizeof(val));
 }
+static inline int fdt_property_u64(void *fdt, const char *name, uint64_t v=
al)
+{
+	val =3D cpu_to_fdt64(val);
+	return fdt_property(fdt, name, &val, sizeof(val));
+}
+static inline int fdt_property_cell(void *fdt, const char *name, uint32_t =
val)
+{
+	return fdt_property_u32(fdt, name, val);
+}
 #define fdt_property_string(fdt, name, str) \
 	fdt_property(fdt, name, str, strlen(str)+1)
 int fdt_end_node(void *fdt);
@@ -856,6 +1014,7 @@
 /* Read-write functions                                               */
 /**********************************************************************/
=20
+int fdt_create_empty_tree(void *buf, int bufsize);
 int fdt_open_into(const void *fdt, void *buf, int bufsize);
 int fdt_pack(void *fdt);
=20
@@ -965,14 +1124,14 @@
 		const void *val, int len);
=20
 /**
- * fdt_setprop_cell - set a property to a single cell value
+ * fdt_setprop_u32 - set a property to a 32-bit integer
  * @fdt: pointer to the device tree blob
  * @nodeoffset: offset of the node whose property to change
  * @name: name of the property to change
  * @val: 32-bit integer value for the property (native endian)
  *
- * fdt_setprop_cell() sets the value of the named property in the
- * given node to the given cell value (converting to big-endian if
+ * fdt_setprop_u32() sets the value of the named property in the given
+ * node to the given 32-bit integer value (converting to big-endian if
  * necessary), or creates a new property with that value if it does
  * not already exist.
  *
@@ -992,11 +1151,57 @@
  *	-FDT_ERR_BADLAYOUT,
  *	-FDT_ERR_TRUNCATED, standard meanings
  */
+static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *n=
ame,
+				  uint32_t val)
+{
+	val =3D cpu_to_fdt32(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_u64 - set a property to a 64-bit integer
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 64-bit integer value for the property (native endian)
+ *
+ * fdt_setprop_u64() sets the value of the named property in the given
+ * node to the given 64-bit integer value (converting to big-endian if
+ * necessary), or creates a new property with that value if it does
+ * not already exist.
+ *
+ * This function may insert or delete data from the blob, and will
+ * therefore change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *n=
ame,
+				  uint64_t val)
+{
+	val =3D cpu_to_fdt64(val);
+	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_setprop_cell - set a property to a single cell value
+ *
+ * This is an alternative name for fdt_setprop_u32()
+ */
 static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *=
name,
 				   uint32_t val)
 {
-	val =3D cpu_to_fdt32(val);
-	return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val));
+	return fdt_setprop_u32(fdt, nodeoffset, name, val);
 }
=20
 /**
@@ -1031,6 +1236,147 @@
 	fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
=20
 /**
+ * fdt_appendprop - append to or create a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to append to
+ * @val: pointer to data to append to the property value
+ * @len: length of the data to append to the property value
+ *
+ * fdt_appendprop() appends the value to the named property in the
+ * given node, creating the property if it does not already exist.
+ *
+ * This function may insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+int fdt_appendprop(void *fdt, int nodeoffset, const char *name,
+		   const void *val, int len);
+
+/**
+ * fdt_appendprop_u32 - append a 32-bit integer value to a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 32-bit integer value to append to the property (native endian)
+ *
+ * fdt_appendprop_u32() appends the given 32-bit integer value
+ * (converting to big-endian if necessary) to the value of the named
+ * property in the given node, or creates a new property with that
+ * value if it does not already exist.
+ *
+ * This function may insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_appendprop_u32(void *fdt, int nodeoffset,
+				     const char *name, uint32_t val)
+{
+	val =3D cpu_to_fdt32(val);
+	return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_appendprop_u64 - append a 64-bit integer value to a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @val: 64-bit integer value to append to the property (native endian)
+ *
+ * fdt_appendprop_u64() appends the given 64-bit integer value
+ * (converting to big-endian if necessary) to the value of the named
+ * property in the given node, or creates a new property with that
+ * value if it does not already exist.
+ *
+ * This function may insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+static inline int fdt_appendprop_u64(void *fdt, int nodeoffset,
+				     const char *name, uint64_t val)
+{
+	val =3D cpu_to_fdt64(val);
+	return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val));
+}
+
+/**
+ * fdt_appendprop_cell - append a single cell value to a property
+ *
+ * This is an alternative name for fdt_appendprop_u32()
+ */
+static inline int fdt_appendprop_cell(void *fdt, int nodeoffset,
+				      const char *name, uint32_t val)
+{
+	return fdt_appendprop_u32(fdt, nodeoffset, name, val);
+}
+
+/**
+ * fdt_appendprop_string - append a string to a property
+ * @fdt: pointer to the device tree blob
+ * @nodeoffset: offset of the node whose property to change
+ * @name: name of the property to change
+ * @str: string value to append to the property
+ *
+ * fdt_appendprop_string() appends the given string to the value of
+ * the named property in the given node, or creates a new property
+ * with that value if it does not already exist.
+ *
+ * This function may insert data into the blob, and will therefore
+ * change the offsets of some existing nodes.
+ *
+ * returns:
+ *	0, on success
+ *	-FDT_ERR_NOSPACE, there is insufficient free space in the blob to
+ *		contain the new property value
+ *	-FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_BADMAGIC,
+ *	-FDT_ERR_BADVERSION,
+ *	-FDT_ERR_BADSTATE,
+ *	-FDT_ERR_BADSTRUCTURE,
+ *	-FDT_ERR_BADLAYOUT,
+ *	-FDT_ERR_TRUNCATED, standard meanings
+ */
+#define fdt_appendprop_string(fdt, nodeoffset, name, str) \
+	fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1)
+
+/**
  * fdt_delprop - delete a property
  * @fdt: pointer to the device tree blob
  * @nodeoffset: offset of the node whose property to nop
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/libfdt_env.h
--- a/head/contrib/dtc/libfdt/libfdt_env.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/libfdt/libfdt_env.h	Wed Jul 25 16:21:35 2012 +0300
@@ -5,19 +5,25 @@
 #include <stdint.h>
 #include <string.h>
=20
-#define _B(n)	((unsigned long long)((uint8_t *)&x)[n])
+#define EXTRACT_BYTE(n)	((unsigned long long)((uint8_t *)&x)[n])
+static inline uint16_t fdt16_to_cpu(uint16_t x)
+{
+	return (EXTRACT_BYTE(0) << 8) | EXTRACT_BYTE(1);
+}
+#define cpu_to_fdt16(x) fdt16_to_cpu(x)
+
 static inline uint32_t fdt32_to_cpu(uint32_t x)
 {
-	return (_B(0) << 24) | (_B(1) << 16) | (_B(2) << 8) | _B(3);
+	return (EXTRACT_BYTE(0) << 24) | (EXTRACT_BYTE(1) << 16) | (EXTRACT_BYTE(=
2) << 8) | EXTRACT_BYTE(3);
 }
 #define cpu_to_fdt32(x) fdt32_to_cpu(x)
=20
 static inline uint64_t fdt64_to_cpu(uint64_t x)
 {
-	return (_B(0) << 56) | (_B(1) << 48) | (_B(2) << 40) | (_B(3) << 32)
-		| (_B(4) << 24) | (_B(5) << 16) | (_B(6) << 8) | _B(7);
+	return (EXTRACT_BYTE(0) << 56) | (EXTRACT_BYTE(1) << 48) | (EXTRACT_BYTE(=
2) << 40) | (EXTRACT_BYTE(3) << 32)
+		| (EXTRACT_BYTE(4) << 24) | (EXTRACT_BYTE(5) << 16) | (EXTRACT_BYTE(6) <=
< 8) | EXTRACT_BYTE(7);
 }
 #define cpu_to_fdt64(x) fdt64_to_cpu(x)
-#undef _B
+#undef EXTRACT_BYTE
=20
 #endif /* _LIBFDT_ENV_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/libfdt/libfdt_interna=
l.h
--- a/head/contrib/dtc/libfdt/libfdt_internal.h	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/dtc/libfdt/libfdt_internal.h	Wed Jul 25 16:21:35 2012 +0=
300
@@ -63,6 +63,7 @@
 	}
=20
 int _fdt_check_node_offset(const void *fdt, int offset);
+int _fdt_check_prop_offset(const void *fdt, int offset);
 const char *_fdt_find_string(const char *strtab, int tabsize, const char *=
s);
 int _fdt_node_end_offset(void *fdt, int nodeoffset);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/livetree.c
--- a/head/contrib/dtc/livetree.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/livetree.c	Wed Jul 25 16:21:35 2012 +0300
@@ -24,17 +24,30 @@
  * Tree building functions
  */
=20
-struct property *build_property(char *name, struct data val, char *label)
+void add_label(struct label **labels, char *label)
+{
+	struct label *new;
+
+	/* Make sure the label isn't already there */
+	for_each_label(*labels, new)
+		if (streq(new->label, label))
+			return;
+
+	new =3D xmalloc(sizeof(*new));
+	new->label =3D label;
+	new->next =3D *labels;
+	*labels =3D new;
+}
+
+struct property *build_property(char *name, struct data val)
 {
 	struct property *new =3D xmalloc(sizeof(*new));
=20
+	memset(new, 0, sizeof(*new));
+
 	new->name =3D name;
 	new->val =3D val;
=20
-	new->next =3D NULL;
-
-	new->label =3D label;
-
 	return new;
 }
=20
@@ -78,15 +91,80 @@
 	return new;
 }
=20
-struct node *name_node(struct node *node, char *name, char * label)
+struct node *name_node(struct node *node, char *name)
 {
 	assert(node->name =3D=3D NULL);
=20
 	node->name =3D name;
=20
-	node->label =3D label;
+	return node;
+}
=20
-	return node;
+struct node *merge_nodes(struct node *old_node, struct node *new_node)
+{
+	struct property *new_prop, *old_prop;
+	struct node *new_child, *old_child;
+	struct label *l;
+
+	/* Add new node labels to old node */
+	for_each_label(new_node->labels, l)
+		add_label(&old_node->labels, l->label);
+
+	/* Move properties from the new node to the old node.  If there
+	 * is a collision, replace the old value with the new */
+	while (new_node->proplist) {
+		/* Pop the property off the list */
+		new_prop =3D new_node->proplist;
+		new_node->proplist =3D new_prop->next;
+		new_prop->next =3D NULL;
+
+		/* Look for a collision, set new value if there is */
+		for_each_property(old_node, old_prop) {
+			if (streq(old_prop->name, new_prop->name)) {
+				/* Add new labels to old property */
+				for_each_label(new_prop->labels, l)
+					add_label(&old_prop->labels, l->label);
+
+				old_prop->val =3D new_prop->val;
+				free(new_prop);
+				new_prop =3D NULL;
+				break;
+			}
+		}
+
+		/* if no collision occurred, add property to the old node. */
+		if (new_prop)
+			add_property(old_node, new_prop);
+	}
+
+	/* Move the override child nodes into the primary node.  If
+	 * there is a collision, then merge the nodes. */
+	while (new_node->children) {
+		/* Pop the child node off the list */
+		new_child =3D new_node->children;
+		new_node->children =3D new_child->next_sibling;
+		new_child->parent =3D NULL;
+		new_child->next_sibling =3D NULL;
+
+		/* Search for a collision.  Merge if there is */
+		for_each_child(old_node, old_child) {
+			if (streq(old_child->name, new_child->name)) {
+				merge_nodes(old_child, new_child);
+				new_child =3D NULL;
+				break;
+			}
+		}
+
+		/* if no collision occured, add child to the old node. */
+		if (new_child)
+			add_child(old_node, new_child);
+	}
+
+	/* The new node contents are now merged into the old node.  Free
+	 * the new node. */
+	free(new_node);
+
+	return old_node;
 }
=20
 struct node *chain_node(struct node *first, struct node *list)
@@ -124,18 +202,15 @@
 	*p =3D child;
 }
=20
-struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size,
-					 char *label)
+struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size)
 {
 	struct reserve_info *new =3D xmalloc(sizeof(*new));
=20
+	memset(new, 0, sizeof(*new));
+
 	new->re.address =3D address;
 	new->re.size =3D size;
=20
-	new->next =3D NULL;
-
-	new->label =3D label;
-
 	return new;
 }
=20
@@ -208,6 +283,60 @@
 	return fdt32_to_cpu(*((cell_t *)prop->val.val));
 }
=20
+struct property *get_property_by_label(struct node *tree, const char *labe=
l,
+				       struct node **node)
+{
+	struct property *prop;
+	struct node *c;
+
+	*node =3D tree;
+
+	for_each_property(tree, prop) {
+		struct label *l;
+
+		for_each_label(prop->labels, l)
+			if (streq(l->label, label))
+				return prop;
+	}
+
+	for_each_child(tree, c) {
+		prop =3D get_property_by_label(c, label, node);
+		if (prop)
+			return prop;
+	}
+
+	*node =3D NULL;
+	return NULL;
+}
+
+struct marker *get_marker_label(struct node *tree, const char *label,
+				struct node **node, struct property **prop)
+{
+	struct marker *m;
+	struct property *p;
+	struct node *c;
+
+	*node =3D tree;
+
+	for_each_property(tree, p) {
+		*prop =3D p;
+		m =3D p->val.markers;
+		for_each_marker_of_type(m, LABEL)
+			if (streq(m->ref, label))
+				return m;
+	}
+
+	for_each_child(tree, c) {
+		m =3D get_marker_label(c, label, node, prop);
+		if (m)
+			return m;
+	}
+
+	*prop =3D NULL;
+	*node =3D NULL;
+	return NULL;
+}
+
 struct node *get_subnode(struct node *node, const char *nodename)
 {
 	struct node *child;
@@ -245,11 +374,13 @@
 struct node *get_node_by_label(struct node *tree, const char *label)
 {
 	struct node *child, *node;
+	struct label *l;
=20
 	assert(label && (strlen(label) > 0));
=20
-	if (tree->label && streq(tree->label, label))
-		return tree;
+	for_each_label(tree->labels, l)
+		if (streq(l->label, label))
+			return tree;
=20
 	for_each_child(tree, child) {
 		node =3D get_node_by_label(child, label);
@@ -302,15 +433,13 @@
 	    && (phandle_format & PHANDLE_LEGACY))
 		add_property(node,
 			     build_property("linux,phandle",
-					    data_append_cell(empty_data, phandle),
-					    NULL));
+					    data_append_cell(empty_data, phandle)));
=20
 	if (!get_property(node, "phandle")
 	    && (phandle_format & PHANDLE_EPAPR))
 		add_property(node,
 			     build_property("phandle",
-					    data_append_cell(empty_data, phandle),
-					    NULL));
+					    data_append_cell(empty_data, phandle)));
=20
 	/* If the node *does* have a phandle property, we must
 	 * be dealing with a self-referencing phandle, which will be
@@ -318,3 +447,163 @@
=20
 	return node->phandle;
 }
+
+uint32_t guess_boot_cpuid(struct node *tree)
+{
+	struct node *cpus, *bootcpu;
+	struct property *reg;
+
+	cpus =3D get_node_by_path(tree, "/cpus");
+	if (!cpus)
+		return 0;
+
+
+	bootcpu =3D cpus->children;
+	if (!bootcpu)
+		return 0;
+
+	reg =3D get_property(bootcpu, "reg");
+	if (!reg || (reg->val.len !=3D sizeof(uint32_t)))
+		return 0;
+
+	/* FIXME: Sanity check node? */
+
+	return propval_cell(reg);
+}
+
+static int cmp_reserve_info(const void *ax, const void *bx)
+{
+	const struct reserve_info *a, *b;
+
+	a =3D *((const struct reserve_info * const *)ax);
+	b =3D *((const struct reserve_info * const *)bx);
+
+	if (a->re.address < b->re.address)
+		return -1;
+	else if (a->re.address > b->re.address)
+		return 1;
+	else if (a->re.size < b->re.size)
+		return -1;
+	else if (a->re.size > b->re.size)
+		return 1;
+	else
+		return 0;
+}
+
+static void sort_reserve_entries(struct boot_info *bi)
+{
+	struct reserve_info *ri, **tbl;
+	int n =3D 0, i =3D 0;
+
+	for (ri =3D bi->reservelist;
+	     ri;
+	     ri =3D ri->next)
+		n++;
+
+	if (n =3D=3D 0)
+		return;
+
+	tbl =3D xmalloc(n * sizeof(*tbl));
+
+	for (ri =3D bi->reservelist;
+	     ri;
+	     ri =3D ri->next)
+		tbl[i++] =3D ri;
+
+	qsort(tbl, n, sizeof(*tbl), cmp_reserve_info);
+
+	bi->reservelist =3D tbl[0];
+	for (i =3D 0; i < (n-1); i++)
+		tbl[i]->next =3D tbl[i+1];
+	tbl[n-1]->next =3D NULL;
+
+	free(tbl);
+}
+
+static int cmp_prop(const void *ax, const void *bx)
+{
+	const struct property *a, *b;
+
+	a =3D *((const struct property * const *)ax);
+	b =3D *((const struct property * const *)bx);
+
+	return strcmp(a->name, b->name);
+}
+
+static void sort_properties(struct node *node)
+{
+	int n =3D 0, i =3D 0;
+	struct property *prop, **tbl;
+
+	for_each_property(node, prop)
+		n++;
+
+	if (n =3D=3D 0)
+		return;
+
+	tbl =3D xmalloc(n * sizeof(*tbl));
+
+	for_each_property(node, prop)
+		tbl[i++] =3D prop;
+
+	qsort(tbl, n, sizeof(*tbl), cmp_prop);
+
+	node->proplist =3D tbl[0];
+	for (i =3D 0; i < (n-1); i++)
+		tbl[i]->next =3D tbl[i+1];
+	tbl[n-1]->next =3D NULL;
+
+	free(tbl);
+}
+
+static int cmp_subnode(const void *ax, const void *bx)
+{
+	const struct node *a, *b;
+
+	a =3D *((const struct node * const *)ax);
+	b =3D *((const struct node * const *)bx);
+
+	return strcmp(a->name, b->name);
+}
+
+static void sort_subnodes(struct node *node)
+{
+	int n =3D 0, i =3D 0;
+	struct node *subnode, **tbl;
+
+	for_each_child(node, subnode)
+		n++;
+
+	if (n =3D=3D 0)
+		return;
+
+	tbl =3D xmalloc(n * sizeof(*tbl));
+
+	for_each_child(node, subnode)
+		tbl[i++] =3D subnode;
+
+	qsort(tbl, n, sizeof(*tbl), cmp_subnode);
+
+	node->children =3D tbl[0];
+	for (i =3D 0; i < (n-1); i++)
+		tbl[i]->next_sibling =3D tbl[i+1];
+	tbl[n-1]->next_sibling =3D NULL;
+
+	free(tbl);
+}
+
+static void sort_node(struct node *node)
+{
+	struct node *c;
+
+	sort_properties(node);
+	sort_subnodes(node);
+	for_each_child(node, c)
+		sort_node(c);
+}
+
+void sort_tree(struct boot_info *bi)
+{
+	sort_reserve_entries(bi);
+	sort_node(bi->dt);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/srcpos.c
--- a/head/contrib/dtc/srcpos.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/srcpos.c	Wed Jul 25 16:21:35 2012 +0300
@@ -24,126 +24,224 @@
 #include "dtc.h"
 #include "srcpos.h"
=20
+/* A node in our list of directories to search for source/include files */
+struct search_path {
+	struct search_path *next;	/* next node in list, NULL for end */
+	const char *dirname;		/* name of directory to search */
+};
=20
-/*
- * Like yylineno, this is the current open file pos.
+/* This is the list of directories that we search for source files */
+static struct search_path *search_path_head, **search_path_tail;
+
+
+static char *dirname(const char *path)
+{
+	const char *slash =3D strrchr(path, '/');
+
+	if (slash) {
+		int len =3D slash - path;
+		char *dir =3D xmalloc(len + 1);
+
+		memcpy(dir, path, len);
+		dir[len] =3D '\0';
+		return dir;
+	}
+	return NULL;
+}
+
+FILE *depfile; /* =3D NULL */
+struct srcfile_state *current_srcfile; /* =3D NULL */
+
+/* Detect infinite include recursion. */
+#define MAX_SRCFILE_DEPTH     (100)
+static int srcfile_depth; /* =3D 0 */
+
+
+/**
+ * Try to open a file in a given directory.
+ *
+ * If the filename is an absolute path, then dirname is ignored. If it is a
+ * relative path, then we look in that directory for the file.
+ *
+ * @param dirname	Directory to look in, or NULL for none
+ * @param fname		Filename to look for
+ * @param fp		Set to NULL if file did not open
+ * @return allocated filename on success (caller must free), NULL on failu=
re
  */
-struct dtc_file *srcpos_file;
+static char *try_open(const char *dirname, const char *fname, FILE **fp)
+{
+	char *fullname;
+
+	if (!dirname || fname[0] =3D=3D '/')
+		fullname =3D xstrdup(fname);
+	else
+		fullname =3D join_path(dirname, fname);
+
+	*fp =3D fopen(fullname, "r");
+	if (!*fp) {
+		free(fullname);
+		fullname =3D NULL;
+	}
+
+	return fullname;
+}
+
+/**
+ * Open a file for read access
+ *
+ * If it is a relative filename, we search the full search path for it.
+ *
+ * @param fname	Filename to open
+ * @param fp	Returns pointer to opened FILE, or NULL on failure
+ * @return pointer to allocated filename, which caller must free
+ */
+static char *fopen_any_on_path(const char *fname, FILE **fp)
+{
+	const char *cur_dir =3D NULL;
+	struct search_path *node;
+	char *fullname;
+
+	/* Try current directory first */
+	assert(fp);
+	if (current_srcfile)
+		cur_dir =3D current_srcfile->dir;
+	fullname =3D try_open(cur_dir, fname, fp);
+
+	/* Failing that, try each search path in turn */
+	for (node =3D search_path_head; !*fp && node; node =3D node->next)
+		fullname =3D try_open(node->dirname, fname, fp);
+
+	return fullname;
+}
+
+FILE *srcfile_relative_open(const char *fname, char **fullnamep)
+{
+	FILE *f;
+	char *fullname;
+
+	if (streq(fname, "-")) {
+		f =3D stdin;
+		fullname =3D xstrdup("<stdin>");
+	} else {
+		fullname =3D fopen_any_on_path(fname, &f);
+		if (!f)
+			die("Couldn't open \"%s\": %s\n", fname,
+			    strerror(errno));
+	}
+
+	if (depfile)
+		fprintf(depfile, " %s", fullname);
+
+	if (fullnamep)
+		*fullnamep =3D fullname;
+	else
+		free(fullname);
+
+	return f;
+}
+
+void srcfile_push(const char *fname)
+{
+	struct srcfile_state *srcfile;
+
+	if (srcfile_depth++ >=3D MAX_SRCFILE_DEPTH)
+		die("Includes nested too deeply");
+
+	srcfile =3D xmalloc(sizeof(*srcfile));
+
+	srcfile->f =3D srcfile_relative_open(fname, &srcfile->name);
+	srcfile->dir =3D dirname(srcfile->name);
+	srcfile->prev =3D current_srcfile;
+
+	srcfile->lineno =3D 1;
+	srcfile->colno =3D 1;
+
+	current_srcfile =3D srcfile;
+}
+
+int srcfile_pop(void)
+{
+	struct srcfile_state *srcfile =3D current_srcfile;
+
+	assert(srcfile);
+
+	current_srcfile =3D srcfile->prev;
+
+	if (fclose(srcfile->f))
+		die("Error closing \"%s\": %s\n", srcfile->name,
+		    strerror(errno));
+
+	/* FIXME: We allow the srcfile_state structure to leak,
+	 * because it could still be referenced from a location
+	 * variable being carried through the parser somewhere.  To
+	 * fix this we could either allocate all the files from a
+	 * table, or use a pool allocator. */
+
+	return current_srcfile ? 1 : 0;
+}
+
+void srcfile_add_search_path(const char *dirname)
+{
+	struct search_path *node;
+
+	/* Create the node */
+	node =3D xmalloc(sizeof(*node));
+	node->next =3D NULL;
+	node->dirname =3D xstrdup(dirname);
+
+	/* Add to the end of our list */
+	if (search_path_tail)
+		*search_path_tail =3D node;
+	else
+		search_path_head =3D node;
+	search_path_tail =3D &node->next;
+}
=20
 /*
  * The empty source position.
  */
=20
-struct dtc_file dtc_empty_file =3D {
-	.dir =3D NULL,
-	.name =3D "<no file>",
-	.file =3D NULL
-};
-
-srcpos srcpos_empty =3D {
+struct srcpos srcpos_empty =3D {
 	.first_line =3D 0,
 	.first_column =3D 0,
 	.last_line =3D 0,
 	.last_column =3D 0,
-	.file =3D &dtc_empty_file
+	.file =3D NULL,
 };
=20
+#define TAB_SIZE      8
=20
-static int
-dtc_open_one(struct dtc_file *file, const char *search, const char *fname)
+void srcpos_update(struct srcpos *pos, const char *text, int len)
 {
-	char *fullname;
+	int i;
=20
-	if (search) {
-		fullname =3D xmalloc(strlen(search) + strlen(fname) + 2);
+	pos->file =3D current_srcfile;
=20
-		strcpy(fullname, search);
-		strcat(fullname, "/");
-		strcat(fullname, fname);
-	} else {
-		fullname =3D xstrdup(fname);
-	}
+	pos->first_line =3D current_srcfile->lineno;
+	pos->first_column =3D current_srcfile->colno;
=20
-	file->file =3D fopen(fullname, "r");
-	if (!file->file) {
-		free(fullname);
-		return 0;
-	}
+	for (i =3D 0; i < len; i++)
+		if (text[i] =3D=3D '\n') {
+			current_srcfile->lineno++;
+			current_srcfile->colno =3D 1;
+		} else if (text[i] =3D=3D '\t') {
+			current_srcfile->colno =3D
+				ALIGN(current_srcfile->colno, TAB_SIZE);
+		} else {
+			current_srcfile->colno++;
+		}
=20
-	file->name =3D fullname;
-	return 1;
+	pos->last_line =3D current_srcfile->lineno;
+	pos->last_column =3D current_srcfile->colno;
 }
=20
+struct srcpos *
+srcpos_copy(struct srcpos *pos)
+{
+	struct srcpos *pos_new;
=20
-struct dtc_file *
-dtc_open_file(const char *fname, const struct search_path *search)
-{
-	static const struct search_path default_search =3D { NULL, NULL, NULL };
-
-	struct dtc_file *file;
-	const char *slash;
-
-	file =3D xmalloc(sizeof(struct dtc_file));
-
-	slash =3D strrchr(fname, '/');
-	if (slash) {
-		char *dir =3D xmalloc(slash - fname + 1);
-
-		memcpy(dir, fname, slash - fname);
-		dir[slash - fname] =3D 0;
-		file->dir =3D dir;
-	} else {
-		file->dir =3D NULL;
-	}
-
-	if (streq(fname, "-")) {
-		file->name =3D "stdin";
-		file->file =3D stdin;
-		return file;
-	}
-
-	if (fname[0] =3D=3D '/') {
-		file->file =3D fopen(fname, "r");
-		if (!file->file)
-			goto fail;
-
-		file->name =3D xstrdup(fname);
-		return file;
-	}
-
-	if (!search)
-		search =3D &default_search;
-
-	while (search) {
-		if (dtc_open_one(file, search->dir, fname))
-			return file;
-
-		if (errno !=3D ENOENT)
-			goto fail;
-
-		search =3D search->next;
-	}
-
-fail:
-	die("Couldn't open \"%s\": %s\n", fname, strerror(errno));
-}
-
-
-void
-dtc_close_file(struct dtc_file *file)
-{
-	if (fclose(file->file))
-		die("Error closing \"%s\": %s\n", file->name, strerror(errno));
-}
-
-
-srcpos *
-srcpos_copy(srcpos *pos)
-{
-	srcpos *pos_new;
-
-	pos_new =3D xmalloc(sizeof(srcpos));
-	memcpy(pos_new, pos, sizeof(srcpos));
+	pos_new =3D xmalloc(sizeof(struct srcpos));
+	memcpy(pos_new, pos, sizeof(struct srcpos));
=20
 	return pos_new;
 }
@@ -151,7 +249,7 @@
=20
=20
 void
-srcpos_dump(srcpos *pos)
+srcpos_dump(struct srcpos *pos)
 {
 	printf("file        : \"%s\"\n",
 	       pos->file ? (char *) pos->file : "<no file>");
@@ -164,67 +262,59 @@
=20
=20
 char *
-srcpos_string(srcpos *pos)
+srcpos_string(struct srcpos *pos)
 {
-	const char *fname;
-	char col_buf[100];
+	const char *fname =3D "<no-file>";
 	char *pos_str;
+	int rc;
=20
-	if (!pos) {
-		fname =3D "<no-file>";
-	} else if (pos->file->name) {
+	if (pos)
 		fname =3D pos->file->name;
-		if (strcmp(fname, "-") =3D=3D 0)
-			fname =3D "stdin";
-	} else {
-		fname =3D "<no-file>";
-	}
=20
-	if (pos->first_line =3D=3D pos->last_line) {
-		if (pos->first_column =3D=3D pos->last_column) {
-			snprintf(col_buf, sizeof(col_buf),
-				 "%d:%d",
-				 pos->first_line, pos->first_column);
-		} else {
-			snprintf(col_buf, sizeof(col_buf),
-				 "%d:%d-%d",
-				 pos->first_line,
-				 pos->first_column, pos->last_column);
-		}
=20
-	} else {
-		snprintf(col_buf, sizeof(col_buf),
-			 "%d:%d - %d:%d",
-			 pos->first_line, pos->first_column,
-			 pos->last_line, pos->last_column);
-	}
+	if (pos->first_line !=3D pos->last_line)
+		rc =3D asprintf(&pos_str, "%s:%d.%d-%d.%d", fname,
+			      pos->first_line, pos->first_column,
+			      pos->last_line, pos->last_column);
+	else if (pos->first_column !=3D pos->last_column)
+		rc =3D asprintf(&pos_str, "%s:%d.%d-%d", fname,
+			      pos->first_line, pos->first_column,
+			      pos->last_column);
+	else
+		rc =3D asprintf(&pos_str, "%s:%d.%d", fname,
+			      pos->first_line, pos->first_column);
=20
-	if (asprintf(&pos_str, "%s %s", fname, col_buf) =3D=3D -1)
-		return "<unknown source position?";
+	if (rc =3D=3D -1)
+		die("Couldn't allocate in srcpos string");
=20
 	return pos_str;
 }
=20
+void
+srcpos_verror(struct srcpos *pos, char const *fmt, va_list va)
+{
+       const char *srcstr;
+
+       srcstr =3D srcpos_string(pos);
+
+       fprintf(stdout, "Error: %s ", srcstr);
+       vfprintf(stdout, fmt, va);
+       fprintf(stdout, "\n");
+}
=20
 void
-srcpos_error(srcpos *pos, char const *fmt, ...)
+srcpos_error(struct srcpos *pos, char const *fmt, ...)
 {
-	const char *srcstr;
 	va_list va;
+
 	va_start(va, fmt);
-
-	srcstr =3D srcpos_string(pos);
-
-	fprintf(stderr, "Error: %s ", srcstr);
-	vfprintf(stderr, fmt, va);
-	fprintf(stderr, "\n");
-
+	srcpos_verror(pos, fmt, va);
 	va_end(va);
 }
=20
=20
 void
-srcpos_warn(srcpos *pos, char const *fmt, ...)
+srcpos_warn(struct srcpos *pos, char const *fmt, ...)
 {
 	const char *srcstr;
 	va_list va;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/srcpos.h
--- a/head/contrib/dtc/srcpos.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/srcpos.h	Wed Jul 25 16:21:35 2012 +0300
@@ -20,85 +20,97 @@
 #ifndef _SRCPOS_H_
 #define _SRCPOS_H_
=20
-/*
- * Augment the standard YYLTYPE with a filenum index into an
- * array of all opened filenames.
- */
-
 #include <stdio.h>
=20
-struct dtc_file {
+struct srcfile_state {
+	FILE *f;
+	char *name;
 	char *dir;
-	const char *name;
-	FILE *file;
+	int lineno, colno;
+	struct srcfile_state *prev;
 };
=20
-#if ! defined(YYLTYPE) && ! defined(YYLTYPE_IS_DECLARED)
-typedef struct YYLTYPE {
+extern FILE *depfile; /* =3D NULL */
+extern struct srcfile_state *current_srcfile; /* =3D NULL */
+
+/**
+ * Open a source file.
+ *
+ * If the source file is a relative pathname, then it is searched for in t=
he
+ * current directory (the directory of the last source file read) and after
+ * that in the search path.
+ *
+ * We work through the search path in order from the first path specified =
to
+ * the last.
+ *
+ * If the file is not found, then this function does not return, but calls
+ * die().
+ *
+ * @param fname		Filename to search
+ * @param fullnamep	If non-NULL, it is set to the allocated filename of the
+ *			file that was opened. The caller is then responsible
+ *			for freeing the pointer.
+ * @return pointer to opened FILE
+ */
+FILE *srcfile_relative_open(const char *fname, char **fullnamep);
+
+void srcfile_push(const char *fname);
+int srcfile_pop(void);
+
+/**
+ * Add a new directory to the search path for input files
+ *
+ * The new path is added at the end of the list.
+ *
+ * @param dirname	Directory to add
+ */
+void srcfile_add_search_path(const char *dirname);
+
+struct srcpos {
     int first_line;
     int first_column;
     int last_line;
     int last_column;
-    struct dtc_file *file;
-} YYLTYPE;
+    struct srcfile_state *file;
+};
=20
-#define YYLTYPE_IS_DECLARED	1
-#define YYLTYPE_IS_TRIVIAL	1
-#endif
+#define YYLTYPE struct srcpos
=20
-/* Cater to old parser templates. */
-#ifndef YYID
-#define YYID(n)	(n)
-#endif
+#define YYLLOC_DEFAULT(Current, Rhs, N)						\
+	do {									\
+		if (N) {							\
+			(Current).first_line =3D YYRHSLOC(Rhs, 1).first_line;	\
+			(Current).first_column =3D YYRHSLOC(Rhs, 1).first_column;	\
+			(Current).last_line =3D YYRHSLOC(Rhs, N).last_line;	\
+			(Current).last_column  =3D YYRHSLOC (Rhs, N).last_column;	\
+			(Current).file =3D YYRHSLOC(Rhs, N).file;			\
+		} else {							\
+			(Current).first_line =3D (Current).last_line =3D		\
+				YYRHSLOC(Rhs, 0).last_line;			\
+			(Current).first_column =3D (Current).last_column =3D	\
+				YYRHSLOC(Rhs, 0).last_column;			\
+			(Current).file =3D YYRHSLOC (Rhs, 0).file;		\
+		}								\
+	} while (0)
=20
-#define YYLLOC_DEFAULT(Current, Rhs, N)					\
-    do									\
-      if (YYID (N))							\
-	{								\
-	  (Current).first_line   =3D YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column =3D YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    =3D YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  =3D YYRHSLOC (Rhs, N).last_column;	\
-	  (Current).file         =3D YYRHSLOC (Rhs, N).file;		\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   =3D (Current).last_line   =3D		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column =3D (Current).last_column =3D		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	  (Current).file         =3D YYRHSLOC (Rhs, 0).file;		\
-	}								\
-    while (YYID (0))
-
-
-typedef YYLTYPE srcpos;
=20
 /*
  * Fictional source position used for IR nodes that are
  * created without otherwise knowing a true source position.
  * For example,constant definitions from the command line.
  */
-extern srcpos srcpos_empty;
+extern struct srcpos srcpos_empty;
=20
-extern struct dtc_file *srcpos_file;
+extern void srcpos_update(struct srcpos *pos, const char *text, int len);
+extern struct srcpos *srcpos_copy(struct srcpos *pos);
+extern char *srcpos_string(struct srcpos *pos);
+extern void srcpos_dump(struct srcpos *pos);
=20
-struct search_path {
-	const char *dir; /* NULL for current directory */
-	struct search_path *prev, *next;
-};
-
-extern struct dtc_file *dtc_open_file(const char *fname,
-                                      const struct search_path *search);
-extern void dtc_close_file(struct dtc_file *file);
-
-extern srcpos *srcpos_copy(srcpos *pos);
-extern char *srcpos_string(srcpos *pos);
-extern void srcpos_dump(srcpos *pos);
-
-extern void srcpos_error(srcpos *pos, char const *, ...)
+extern void srcpos_verror(struct srcpos *pos, char const *, va_list va)
+     __attribute__((format(printf, 2, 0)));
+extern void srcpos_error(struct srcpos *pos, char const *, ...)
      __attribute__((format(printf, 2, 3)));
-extern void srcpos_warn(srcpos *pos, char const *, ...)
+extern void srcpos_warn(struct srcpos *pos, char const *, ...)
      __attribute__((format(printf, 2, 3)));
=20
 #endif /* _SRCPOS_H_ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/treesource.c
--- a/head/contrib/dtc/treesource.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/treesource.c	Wed Jul 25 16:21:35 2012 +0300
@@ -23,6 +23,7 @@
=20
 extern FILE *yyin;
 extern int yyparse(void);
+extern YYLTYPE yylloc;
=20
 struct boot_info *the_boot_info;
 int treesource_error;
@@ -32,8 +33,9 @@
 	the_boot_info =3D NULL;
 	treesource_error =3D 0;
=20
-	srcpos_file =3D dtc_open_file(fname, NULL);
-	yyin =3D srcpos_file->file;
+	srcfile_push(fname);
+	yyin =3D current_srcfile->f;
+	yylloc.file =3D current_srcfile;
=20
 	if (yyparse() !=3D 0)
 		die("Unable to parse input tree\n");
@@ -235,10 +237,11 @@
 {
 	struct property *prop;
 	struct node *child;
+	struct label *l;
=20
 	write_prefix(f, level);
-	if (tree->label)
-		fprintf(f, "%s: ", tree->label);
+	for_each_label(tree->labels, l)
+		fprintf(f, "%s: ", l->label);
 	if (tree->name && (*tree->name))
 		fprintf(f, "%s {\n", tree->name);
 	else
@@ -246,8 +249,8 @@
=20
 	for_each_property(tree, prop) {
 		write_prefix(f, level+1);
-		if (prop->label)
-			fprintf(f, "%s: ", prop->label);
+		for_each_label(prop->labels, l)
+			fprintf(f, "%s: ", l->label);
 		fprintf(f, "%s", prop->name);
 		write_propval(f, prop);
 	}
@@ -267,8 +270,10 @@
 	fprintf(f, "/dts-v1/;\n\n");
=20
 	for (re =3D bi->reservelist; re; re =3D re->next) {
-		if (re->label)
-			fprintf(f, "%s: ", re->label);
+		struct label *l;
+
+		for_each_label(re->labels, l)
+			fprintf(f, "%s: ", l->label);
 		fprintf(f, "/memreserve/\t0x%016llx 0x%016llx;\n",
 			(unsigned long long)re->re.address,
 			(unsigned long long)re->re.size);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/util.c
--- a/head/contrib/dtc/util.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/util.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,10 @@
 /*
+ * Copyright 2011 The Chromium Authors, All Rights Reserved.
  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
  *
+ * util_is_printable_string contributed by
+ *	Pantelis Antoniou <pantelis.antoniou AT gmail.com>
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation; either version 2 of the
@@ -17,7 +21,19 @@
  *                                                                   USA
  */
=20
-#include "dtc.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <assert.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "libfdt.h"
+#include "util.h"
=20
 char *xstrdup(const char *s)
 {
@@ -28,3 +44,288 @@
=20
 	return dup;
 }
+
+char *join_path(const char *path, const char *name)
+{
+	int lenp =3D strlen(path);
+	int lenn =3D strlen(name);
+	int len;
+	int needslash =3D 1;
+	char *str;
+
+	len =3D lenp + lenn + 2;
+	if ((lenp > 0) && (path[lenp-1] =3D=3D '/')) {
+		needslash =3D 0;
+		len--;
+	}
+
+	str =3D xmalloc(len);
+	memcpy(str, path, lenp);
+	if (needslash) {
+		str[lenp] =3D '/';
+		lenp++;
+	}
+	memcpy(str+lenp, name, lenn+1);
+	return str;
+}
+
+int util_is_printable_string(const void *data, int len)
+{
+	const char *s =3D data;
+	const char *ss;
+
+	/* zero length is not */
+	if (len =3D=3D 0)
+		return 0;
+
+	/* must terminate with zero */
+	if (s[len - 1] !=3D '\0')
+		return 0;
+
+	ss =3D s;
+	while (*s && isprint(*s))
+		s++;
+
+	/* not zero, or not done yet */
+	if (*s !=3D '\0' || (s + 1 - ss) < len)
+		return 0;
+
+	return 1;
+}
+
+/*
+ * Parse a octal encoded character starting at index i in string s.  The
+ * resulting character will be returned and the index i will be updated to
+ * point at the character directly after the end of the encoding, this may=
 be
+ * the '\0' terminator of the string.
+ */
+static char get_oct_char(const char *s, int *i)
+{
+	char x[4];
+	char *endx;
+	long val;
+
+	x[3] =3D '\0';
+	strncpy(x, s + *i, 3);
+
+	val =3D strtol(x, &endx, 8);
+
+	assert(endx > x);
+
+	(*i) +=3D endx - x;
+	return val;
+}
+
+/*
+ * Parse a hexadecimal encoded character starting at index i in string s. =
 The
+ * resulting character will be returned and the index i will be updated to
+ * point at the character directly after the end of the encoding, this may=
 be
+ * the '\0' terminator of the string.
+ */
+static char get_hex_char(const char *s, int *i)
+{
+	char x[3];
+	char *endx;
+	long val;
+
+	x[2] =3D '\0';
+	strncpy(x, s + *i, 2);
+
+	val =3D strtol(x, &endx, 16);
+	if (!(endx  > x))
+		die("\\x used with no following hex digits\n");
+
+	(*i) +=3D endx - x;
+	return val;
+}
+
+char get_escape_char(const char *s, int *i)
+{
+	char	c =3D s[*i];
+	int	j =3D *i + 1;
+	char	val;
+
+	assert(c);
+	switch (c) {
+	case 'a':
+		val =3D '\a';
+		break;
+	case 'b':
+		val =3D '\b';
+		break;
+	case 't':
+		val =3D '\t';
+		break;
+	case 'n':
+		val =3D '\n';
+		break;
+	case 'v':
+		val =3D '\v';
+		break;
+	case 'f':
+		val =3D '\f';
+		break;
+	case 'r':
+		val =3D '\r';
+		break;
+	case '0':
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+		j--; /* need to re-read the first digit as
+		      * part of the octal value */
+		val =3D get_oct_char(s, &j);
+		break;
+	case 'x':
+		val =3D get_hex_char(s, &j);
+		break;
+	default:
+		val =3D c;
+	}
+
+	(*i) =3D j;
+	return val;
+}
+
+int utilfdt_read_err(const char *filename, char **buffp)
+{
+	int fd =3D 0;	/* assume stdin */
+	char *buf =3D NULL;
+	off_t bufsize =3D 1024, offset =3D 0;
+	int ret =3D 0;
+
+	*buffp =3D NULL;
+	if (strcmp(filename, "-") !=3D 0) {
+		fd =3D open(filename, O_RDONLY);
+		if (fd < 0)
+			return errno;
+	}
+
+	/* Loop until we have read everything */
+	buf =3D malloc(bufsize);
+	do {
+		/* Expand the buffer to hold the next chunk */
+		if (offset =3D=3D bufsize) {
+			bufsize *=3D 2;
+			buf =3D realloc(buf, bufsize);
+			if (!buf) {
+				ret =3D ENOMEM;
+				break;
+			}
+		}
+
+		ret =3D read(fd, &buf[offset], bufsize - offset);
+		if (ret < 0) {
+			ret =3D errno;
+			break;
+		}
+		offset +=3D ret;
+	} while (ret !=3D 0);
+
+	/* Clean up, including closing stdin; return errno on error */
+	close(fd);
+	if (ret)
+		free(buf);
+	else
+		*buffp =3D buf;
+	return ret;
+}
+
+char *utilfdt_read(const char *filename)
+{
+	char *buff;
+	int ret =3D utilfdt_read_err(filename, &buff);
+
+	if (ret) {
+		fprintf(stderr, "Couldn't open blob from '%s': %s\n", filename,
+			strerror(ret));
+		return NULL;
+	}
+	/* Successful read */
+	return buff;
+}
+
+int utilfdt_write_err(const char *filename, const void *blob)
+{
+	int fd =3D 1;	/* assume stdout */
+	int totalsize;
+	int offset;
+	int ret =3D 0;
+	const char *ptr =3D blob;
+
+	if (strcmp(filename, "-") !=3D 0) {
+		fd =3D open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+		if (fd < 0)
+			return errno;
+	}
+
+	totalsize =3D fdt_totalsize(blob);
+	offset =3D 0;
+
+	while (offset < totalsize) {
+		ret =3D write(fd, ptr + offset, totalsize - offset);
+		if (ret < 0) {
+			ret =3D -errno;
+			break;
+		}
+		offset +=3D ret;
+	}
+	/* Close the file/stdin; return errno on error */
+	if (fd !=3D 1)
+		close(fd);
+	return ret < 0 ? -ret : 0;
+}
+
+
+int utilfdt_write(const char *filename, const void *blob)
+{
+	int ret =3D utilfdt_write_err(filename, blob);
+
+	if (ret) {
+		fprintf(stderr, "Couldn't write blob to '%s': %s\n", filename,
+			strerror(ret));
+	}
+	return ret ? -1 : 0;
+}
+
+int utilfdt_decode_type(const char *fmt, int *type, int *size)
+{
+	int qualifier =3D 0;
+
+	if (!*fmt)
+		return -1;
+
+	/* get the conversion qualifier */
+	*size =3D -1;
+	if (strchr("hlLb", *fmt)) {
+		qualifier =3D *fmt++;
+		if (qualifier =3D=3D *fmt) {
+			switch (*fmt++) {
+/* TODO:		case 'l': qualifier =3D 'L'; break;*/
+			case 'h':
+				qualifier =3D 'b';
+				break;
+			}
+		}
+	}
+
+	/* we should now have a type */
+	if ((*fmt =3D=3D '\0') || !strchr("iuxs", *fmt))
+		return -1;
+
+	/* convert qualifier (bhL) to byte size */
+	if (*fmt !=3D 's')
+		*size =3D qualifier =3D=3D 'b' ? 1 :
+				qualifier =3D=3D 'h' ? 2 :
+				qualifier =3D=3D 'l' ? 4 : -1;
+	*type =3D *fmt++;
+
+	/* that should be it! */
+	if (*fmt)
+		return -1;
+	return 0;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/dtc/util.h
--- a/head/contrib/dtc/util.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/dtc/util.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,7 +1,10 @@
 #ifndef _UTIL_H
 #define _UTIL_H
=20
+#include <stdarg.h>
+
 /*
+ * Copyright 2011 The Chromium Authors, All Rights Reserved.
  * Copyright 2008 Jon Loeliger, Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
@@ -51,5 +54,100 @@
 }
=20
 extern char *xstrdup(const char *s);
+extern char *join_path(const char *path, const char *name);
+
+/**
+ * Check a string of a given length to see if it is all printable and
+ * has a valid terminator.
+ *
+ * @param data	The string to check
+ * @param len	The string length including terminator
+ * @return 1 if a valid printable string, 0 if not */
+int util_is_printable_string(const void *data, int len);
+
+/*
+ * Parse an escaped character starting at index i in string s.  The result=
ing
+ * character will be returned and the index i will be updated to point at =
the
+ * character directly after the end of the encoding, this may be the '\0'
+ * terminator of the string.
+ */
+char get_escape_char(const char *s, int *i);
+
+/**
+ * Read a device tree file into a buffer. This will report any errors on
+ * stderr.
+ *
+ * @param filename	The filename to read, or - for stdin
+ * @return Pointer to allocated buffer containing fdt, or NULL on error
+ */
+char *utilfdt_read(const char *filename);
+
+/**
+ * Read a device tree file into a buffer. Does not report errors, but only
+ * returns them. The value returned can be passed to strerror() to obtain
+ * an error message for the user.
+ *
+ * @param filename	The filename to read, or - for stdin
+ * @param buffp		Returns pointer to buffer containing fdt
+ * @return 0 if ok, else an errno value representing the error
+ */
+int utilfdt_read_err(const char *filename, char **buffp);
+
+
+/**
+ * Write a device tree buffer to a file. This will report any errors on
+ * stderr.
+ *
+ * @param filename	The filename to write, or - for stdout
+ * @param blob		Poiner to buffer containing fdt
+ * @return 0 if ok, -1 on error
+ */
+int utilfdt_write(const char *filename, const void *blob);
+
+/**
+ * Write a device tree buffer to a file. Does not report errors, but only
+ * returns them. The value returned can be passed to strerror() to obtain
+ * an error message for the user.
+ *
+ * @param filename	The filename to write, or - for stdout
+ * @param blob		Poiner to buffer containing fdt
+ * @return 0 if ok, else an errno value representing the error
+ */
+int utilfdt_write_err(const char *filename, const void *blob);
+
+/**
+ * Decode a data type string. The purpose of this string
+ *
+ * The string consists of an optional character followed by the type:
+ *	Modifier characters:
+ *		hh or b	1 byte
+ *		h	2 byte
+ *		l	4 byte, default
+ *
+ *	Type character:
+ *		s	string
+ *		i	signed integer
+ *		u	unsigned integer
+ *		x	hex
+ *
+ * TODO: Implement ll modifier (8 bytes)
+ * TODO: Implement o type (octal)
+ *
+ * @param fmt		Format string to process
+ * @param type		Returns type found(s/d/u/x), or 0 if none
+ * @param size		Returns size found(1,2,4,8) or 4 if none
+ * @return 0 if ok, -1 on error (no type given, or other invalid format)
+ */
+int utilfdt_decode_type(const char *fmt, int *type, int *size);
+
+/*
+ * This is a usage message fragment for the -t option. It is the format
+ * supported by utilfdt_decode_type.
+ */
+
+#define USAGE_TYPE_MSG \
+	"<type>\ts=3Dstring, i=3Dint, u=3Dunsigned, x=3Dhex\n" \
+	"\tOptional modifier prefix:\n" \
+	"\t\thh or b=3Dbyte, h=3D2 byte, l=3D4 byte (default)\n";
=20
 #endif /* _UTIL_H */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/ChangeLog.gcc43
--- a/head/contrib/gcc/ChangeLog.gcc43	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/ChangeLog.gcc43	Wed Jul 25 16:21:35 2012 +0300
@@ -5,6 +5,18 @@
 	with SSE3 instruction set support.
 	* doc/invoke.texi: Likewise.
=20
+2007-04-12  Richard Guenther  <rguenther at suse.de> (r123736)
+
+	PR tree-optimization/24689
+	PR tree-optimization/31307
+	* fold-const.c (operand_equal_p): Compare INTEGER_CST array
+	indices by value.
+	* gimplify.c (canonicalize_addr_expr): To be consistent with
+	gimplify_compound_lval only set operands two and three of
+	ARRAY_REFs if they are not gimple_min_invariant.  This makes
+	it never at this place.
+	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
+
 2007-04-07  H.J. Lu  <hongjiu.lu at intel.com> (r123639)
=20
 	* config/i386/i386.c (ix86_handle_option): Handle SSSE3.
@@ -96,7 +108,7 @@
=20
 	* doc/invoke.texi: Add entry about geode processor.
    =20
-2006-10-24  Richard Guenther  <rguenther at suse.de>
+2006-10-24  Richard Guenther  <rguenther at suse.de> (r118001)
=20
 	PR middle-end/28796
 	* builtins.c (fold_builtin_classify): Use HONOR_INFINITIES
@@ -170,7 +182,13 @@
=20
 	* doc/invoke.texi: Document -mssse3/-mno-ssse3 switches.
=20
-2006-10-21  Richard Guenther  <rguenther at suse.de>
+2006-10-21  Richard Guenther  <rguenther at suse.de> (r117932)
+
+	PR tree-optimization/3511
+	* tree-ssa-pre.c (phi_translate): Fold CALL_EXPRs that
+	got new invariant arguments during PHI translation.
+
+2006-10-21  Richard Guenther  <rguenther at suse.de> (r117929)
=20
 	* builtins.c (fold_builtin_classify): Fix typo.
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/arm/freebsd.h
--- a/head/contrib/gcc/config/arm/freebsd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/arm/freebsd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -50,6 +50,7 @@
       %{rdynamic:-export-dynamic}					\
       %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }}	\
     %{static:-Bstatic}}							\
+  %{!static:--hash-style=3Dboth --enable-new-dtags}			\
   %{symbolic:-Bsymbolic}						\
   -X %{mbig-endian:-EB} %{mlittle-endian:-EL}"
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/i386/freebsd.h
--- a/head/contrib/gcc/config/i386/freebsd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/i386/freebsd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -22,7 +22,7 @@
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
=20
-/* $FreeBSD$ */
+/* $FreeBSD: head/contrib/gcc/config/i386/freebsd.h 238472 2012-07-15 10:5=
4:10Z kib $ */
=20
 #undef  CC1_SPEC
 #define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
@@ -49,6 +49,7 @@
 	%{rdynamic: -export-dynamic} \
 	%{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
       %{static:-Bstatic}} \
+    %{!static:--hash-style=3Dboth --enable-new-dtags} \
     %{symbolic:-Bsymbolic}"
=20
 /* Reset our STARTFILE_SPEC which was properly set in config/freebsd.h
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/i386/freebsd64=
.h
--- a/head/contrib/gcc/config/i386/freebsd64.h	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/gcc/config/i386/freebsd64.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -19,7 +19,7 @@
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
=20
-/* $FreeBSD$ */
+/* $FreeBSD: head/contrib/gcc/config/i386/freebsd64.h 238472 2012-07-15 10=
:54:10Z kib $ */
=20
=20
 #undef  TARGET_VERSION
@@ -54,4 +54,5 @@
         %{rdynamic:-export-dynamic} \
 	%{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }} \
     %{static:-Bstatic}} \
+  %{!static:--hash-style=3Dboth --enable-new-dtags} \
   %{symbolic:-Bsymbolic}"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/ia64/freebsd.h
--- a/head/contrib/gcc/config/ia64/freebsd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/ia64/freebsd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -27,6 +27,7 @@
   %{p:%nconsider using `-pg' instead of `-p' with gprof(1)}		\
   %{assert*} %{R*} %{rpath*} %{defsym*}					\
   %{shared:-Bshareable %{h*} %{soname*}}				\
+  %{!static:--enable-new-dtags}						\
   %{symbolic:-Bsymbolic}						\
   %{!shared:								\
     %{!static:								\
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/mips/freebsd.h
--- a/head/contrib/gcc/config/mips/freebsd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/mips/freebsd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
=20
-/* $FreeBSD: head/contrib/gcc/config/mips/freebsd.h 233397 2012-03-23 21:0=
7:10Z gonzo $ */
+/* $FreeBSD: head/contrib/gcc/config/mips/freebsd.h 238472 2012-07-15 10:5=
4:10Z kib $ */
=20
 /* This defines which switch letters take arguments.  -G is a MIPS
    special.  */
@@ -56,6 +56,7 @@
     %{v:-V} \
     %{assert*} %{R*} %{rpath*} %{defsym*} \
     %{shared:-Bshareable %{h*} %{soname*}} \
+    %{!static:--enable-new-dtags} \
     %{!shared: \
       %{!static: \
 	%{rdynamic: -export-dynamic} \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/rs6000/freebsd=
.h
--- a/head/contrib/gcc/config/rs6000/freebsd.h	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/gcc/config/rs6000/freebsd.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -180,6 +180,7 @@
   %{v:-V} \
   %{assert*} %{R*} %{rpath*} %{defsym*} \
   %{shared:-Bshareable %{h*} %{soname*}} \
+  %{!static:--enable-new-dtags}	\
   %{!shared: \
     %{!static: \
       %{rdynamic: -export-dynamic} \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/rs6000/rs6000.=
md
--- a/head/contrib/gcc/config/rs6000/rs6000.md	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/gcc/config/rs6000/rs6000.md	Wed Jul 25 16:21:35 2012 +03=
00
@@ -10075,6 +10075,7 @@
   ""
   "
 {
+  operands[1] =3D force_reg (Pmode, operands[1]);
   operands[2] =3D gen_reg_rtx (Pmode);
   operands[3] =3D gen_frame_mem (Pmode, operands[0]);
   operands[4] =3D gen_frame_mem (Pmode, operands[1]);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/sparc/freebsd.h
--- a/head/contrib/gcc/config/sparc/freebsd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/sparc/freebsd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 Boston, MA 02110-1301, USA.  */
=20
-/* $FreeBSD$ */
+/* $FreeBSD: head/contrib/gcc/config/sparc/freebsd.h 238472 2012-07-15 10:=
54:10Z kib $ */
=20
 #undef  SUBTARGET_EXTRA_SPECS
 #define SUBTARGET_EXTRA_SPECS \
@@ -45,14 +45,16 @@
 #define LINK_SPEC "%(link_arch)						\
   %{!mno-relax:%{!r:-relax}}						\
   %{p:%nconsider using `-pg' instead of `-p' with gprof(1)}		\
+  %{v:-V}								\
   %{assert*} %{R*} %{rpath*} %{defsym*}					\
   %{shared:-Bshareable %{h*} %{soname*}}				\
-  %{symbolic:-Bsymbolic}						\
   %{!shared:								\
     %{!static:								\
       %{rdynamic:-export-dynamic}					\
       %{!dynamic-linker:-dynamic-linker %(fbsd_dynamic_linker) }}	\
-    %{static:-Bstatic}}"
+    %{static:-Bstatic}}							\
+  %{!static:--hash-style=3Dboth --enable-new-dtags}			\
+  %{symbolic:-Bsymbolic}"
=20
=20
 /************************[  Target stuff  ]*******************************=
****/
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/config/sparc/sparc.md
--- a/head/contrib/gcc/config/sparc/sparc.md	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/config/sparc/sparc.md	Wed Jul 25 16:21:35 2012 +0300
@@ -5071,14 +5071,11 @@
   [(set_attr "type" "multi")
    (set_attr "length" "2")])
=20
-;; The V8 architecture specifies that there must be 3 instructions between
-;; a Y register write and a use of it for correct results.
-
 (define_expand "divsi3"
-  [(parallel [(set (match_operand:SI 0 "register_operand" "=3Dr,r")
-		   (div:SI (match_operand:SI 1 "register_operand" "r,r")
-			   (match_operand:SI 2 "input_operand" "rI,m")))
-	      (clobber (match_scratch:SI 3 "=3D&r,&r"))])]
+  [(parallel [(set (match_operand:SI 0 "register_operand" "")
+		   (div:SI (match_operand:SI 1 "register_operand" "")
+			   (match_operand:SI 2 "input_operand" "")))
+	      (clobber (match_scratch:SI 3 ""))])]
   "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
 {
   if (TARGET_ARCH64)
@@ -5091,24 +5088,40 @@
     }
 })
=20
+;; The V8 architecture specifies that there must be at least 3 instructions
+;; between a write to the Y register and a use of it for correct results.
+;; We try to fill one of them with a simple constant or a memory load.
+
 (define_insn "divsi3_sp32"
-  [(set (match_operand:SI 0 "register_operand" "=3Dr,r")
-	(div:SI (match_operand:SI 1 "register_operand" "r,r")
-		(match_operand:SI 2 "input_operand" "rI,m")))
-   (clobber (match_scratch:SI 3 "=3D&r,&r"))]
-  "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS)
-   && TARGET_ARCH32"
-{
-  if (which_alternative =3D=3D 0)
-    if (TARGET_V9)
-      return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tsdiv\t%1, %2, %0";
-    else
-      return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tnop\n\tnop\n\tnop\n\tsd=
iv\t%1, %2, %0";
-  else
-    if (TARGET_V9)
-      return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tld\t%2, %3\n\tsdiv\t%1,=
 %3, %0";
-    else
-      return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tld\t%2, %3\n\tnop\n\tno=
p\n\tsdiv\t%1, %3, %0";
+  [(set (match_operand:SI 0 "register_operand" "=3Dr,r,r")
+	(div:SI (match_operand:SI 1 "register_operand" "r,r,r")
+		(match_operand:SI 2 "input_operand" "rI,K,m")))
+   (clobber (match_scratch:SI 3 "=3D&r,&r,&r"))]
+  "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS) && TARGET_ARCH32"
+{
+  output_asm_insn ("sra\t%1, 31, %3", operands);
+  output_asm_insn ("wr\t%3, 0, %%y", operands);
+
+  switch (which_alternative)
+    {
+    case 0:
+      if (TARGET_V9)
+	return "sdiv\t%1, %2, %0";
+      else
+	return "nop\n\tnop\n\tnop\n\tsdiv\t%1, %2, %0";
+    case 1:
+      if (TARGET_V9)
+	return "sethi\t%%hi(%a2), %3\n\tsdiv\t%1, %3, %0";
+      else
+	return "sethi\t%%hi(%a2), %3\n\tnop\n\tnop\n\tsdiv\t%1, %3, %0";
+    case 2:
+      if (TARGET_V9)
+	return "ld\t%2, %3\n\tsdiv\t%1, %3, %0";
+      else
+	return "ld\t%2, %3\n\tnop\n\tnop\n\tsdiv\t%1, %3, %0";
+    default:
+      gcc_unreachable ();
+    }
 }
   [(set_attr "type" "multi")
    (set (attr "length")
@@ -5143,10 +5156,13 @@
    (clobber (match_scratch:SI 3 "=3D&r"))]
   "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
 {
+  output_asm_insn ("sra\t%1, 31, %3", operands);
+  output_asm_insn ("wr\t%3, 0, %%y", operands);
+
   if (TARGET_V9)
-    return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tsdivcc\t%1, %2, %0";
+    return "sdivcc\t%1, %2, %0";
   else
-    return "sra\t%1, 31, %3\n\twr\t%3, 0, %%y\n\tnop\n\tnop\n\tnop\n\tsdiv=
cc\t%1, %2, %0";
+    return "nop\n\tnop\n\tnop\n\tsdivcc\t%1, %2, %0";
 }
   [(set_attr "type" "multi")
    (set (attr "length")
@@ -5161,29 +5177,48 @@
   "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
   "")
=20
-;; The V8 architecture specifies that there must be 3 instructions between
-;; a Y register write and a use of it for correct results.
+;; The V8 architecture specifies that there must be at least 3 instructions
+;; between a write to the Y register and a use of it for correct results.
+;; We try to fill one of them with a simple constant or a memory load.
=20
 (define_insn "udivsi3_sp32"
-  [(set (match_operand:SI 0 "register_operand" "=3Dr,&r,&r")
-	(udiv:SI (match_operand:SI 1 "nonimmediate_operand" "r,r,m")
-		 (match_operand:SI 2 "input_operand" "rI,m,r")))]
-  "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS)
-   && TARGET_ARCH32"
-{
-  output_asm_insn ("wr\t%%g0, %%g0, %%y", operands);
+  [(set (match_operand:SI 0 "register_operand" "=3Dr,&r,&r,&r")
+	(udiv:SI (match_operand:SI 1 "nonimmediate_operand" "r,r,r,m")
+		 (match_operand:SI 2 "input_operand" "rI,K,m,r")))]
+  "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS) && TARGET_ARCH32"
+{
+  output_asm_insn ("wr\t%%g0, 0, %%y", operands);
+
   switch (which_alternative)
     {
+    case 0:
+      if (TARGET_V9)
+	return "udiv\t%1, %2, %0";
+      else
+	return "nop\n\tnop\n\tnop\n\tudiv\t%1, %2, %0";
+    case 1:
+      if (TARGET_V9)
+	return "sethi\t%%hi(%a2), %0\n\tudiv\t%1, %0, %0";
+      else
+	return "sethi\t%%hi(%a2), %0\n\tnop\n\tnop\n\tudiv\t%1, %0, %0";
+    case 2:
+      if (TARGET_V9)
+	return "ld\t%2, %0\n\tudiv\t%1, %0, %0";
+      else
+	return "ld\t%2, %0\n\tnop\n\tnop\n\tudiv\t%1, %0, %0";
+    case 3:
+      if (TARGET_V9)
+	return "ld\t%1, %0\n\tudiv\t%0, %2, %0";
+      else
+	return "ld\t%1, %0\n\tnop\n\tnop\n\tudiv\t%0, %2, %0";
     default:
-      return "nop\n\tnop\n\tnop\n\tudiv\t%1, %2, %0";
-    case 1:
-      return "ld\t%2, %0\n\tnop\n\tnop\n\tudiv\t%1, %0, %0";
-    case 2:
-      return "ld\t%1, %0\n\tnop\n\tnop\n\tudiv\t%0, %2, %0";
+      gcc_unreachable ();
     }
 }
   [(set_attr "type" "multi")
-   (set_attr "length" "5")])
+   (set (attr "length")
+	(if_then_else (eq_attr "isa" "v9")
+		      (const_int 3) (const_int 5)))])
=20
 (define_insn "udivsi3_sp64"
   [(set (match_operand:SI 0 "register_operand" "=3Dr")
@@ -5209,13 +5244,14 @@
 		    (const_int 0)))
    (set (match_operand:SI 0 "register_operand" "=3Dr")
 	(udiv:SI (match_dup 1) (match_dup 2)))]
-  "TARGET_V8
-   || TARGET_DEPRECATED_V8_INSNS"
-{
+  "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
+{
+  output_asm_insn ("wr\t%%g0, 0, %%y", operands);
+
   if (TARGET_V9)
-    return "wr\t%%g0, %%g0, %%y\n\tudivcc\t%1, %2, %0";
+    return "udivcc\t%1, %2, %0";
   else
-    return "wr\t%%g0, %%g0, %%y\n\tnop\n\tnop\n\tnop\n\tudivcc\t%1, %2, %0=
";
+    return "nop\n\tnop\n\tnop\n\tudivcc\t%1, %2, %0";
 }
   [(set_attr "type" "multi")
    (set (attr "length")
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/cse.c
--- a/head/contrib/gcc/cse.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/cse.c	Wed Jul 25 16:21:35 2012 +0300
@@ -583,7 +583,8 @@
 static int mention_regs (rtx);
 static int insert_regs (rtx, struct table_elt *, int);
 static void remove_from_table (struct table_elt *, unsigned);
-static struct table_elt *lookup	(rtx, unsigned, enum machine_mode);
+static void remove_pseudo_from_table (rtx, unsigned);
+static struct table_elt *lookup (rtx, unsigned, enum machine_mode);
 static struct table_elt *lookup_for_remove (rtx, unsigned, enum machine_mo=
de);
 static rtx lookup_as_function (rtx, enum rtx_code);
 static struct table_elt *insert (rtx, struct table_elt *, unsigned,
@@ -1381,6 +1382,19 @@
   table_size--;
 }
=20
+/* Same as above, but X is a pseudo-register.  */
+
+static void
+remove_pseudo_from_table (rtx x, unsigned int hash)
+{
+  struct table_elt *elt;
+
+  /* Because a pseudo-register can be referenced in more than one
+     mode, we might have to remove more than one table entry.  */
+  while ((elt =3D lookup_for_remove (x, hash, VOIDmode)))
+    remove_from_table (elt, hash);
+}
+
 /* Look up X in the hash table and return its table element,
    or 0 if X is not in the table.
=20
@@ -1707,7 +1721,10 @@
 	      delete_reg_equiv (REGNO (exp));
 	    }
=20
-	  remove_from_table (elt, hash);
+	  if (REG_P (exp) && REGNO (exp) >=3D FIRST_PSEUDO_REGISTER)
+	    remove_pseudo_from_table (exp, hash);
+	  else
+	    remove_from_table (elt, hash);
=20
 	  if (insert_regs (exp, class1, 0) || need_rehash)
 	    {
@@ -1803,14 +1820,7 @@
 	SUBREG_TICKED (regno) =3D -1;
=20
 	if (regno >=3D FIRST_PSEUDO_REGISTER)
-	  {
-	    /* Because a register can be referenced in more than one mode,
-	       we might have to remove more than one table entry.  */
-	    struct table_elt *elt;
-
-	    while ((elt =3D lookup_for_remove (x, hash, GET_MODE (x))))
-	      remove_from_table (elt, hash);
-	  }
+	  remove_pseudo_from_table (x, hash);
 	else
 	  {
 	    HOST_WIDE_INT in_table
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/expr.c
--- a/head/contrib/gcc/expr.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/expr.c	Wed Jul 25 16:21:35 2012 +0300
@@ -4750,14 +4750,7 @@
=20
     case UNION_TYPE:
     case QUAL_UNION_TYPE:
-      {
-	/* Ho hum.  How in the world do we guess here?  Clearly it isn't
-	   right to count the fields.  Guess based on the number of words.  */
-        HOST_WIDE_INT n =3D int_size_in_bytes (type);
-	if (n < 0)
-	  return -1;
-	return n / UNITS_PER_WORD;
-      }
+      return -1;
=20
     case COMPLEX_TYPE:
       return 2;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/fold-const.c
--- a/head/contrib/gcc/fold-const.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/fold-const.c	Wed Jul 25 16:21:35 2012 +0300
@@ -2802,9 +2802,13 @@
=20
 	case ARRAY_REF:
 	case ARRAY_RANGE_REF:
-	  /* Operands 2 and 3 may be null.  */
+	  /* Operands 2 and 3 may be null.
+	     Compare the array index by value if it is constant first as we
+	     may have different types but same value here.  */
 	  return (OP_SAME (0)
-		  && OP_SAME (1)
+		  && (tree_int_cst_equal (TREE_OPERAND (arg0, 1),
+					  TREE_OPERAND (arg1, 1))
+		      || OP_SAME (1))
 		  && OP_SAME_WITH_NULL (2)
 		  && OP_SAME_WITH_NULL (3));
=20
@@ -6657,12 +6661,14 @@
   if (TYPE_PRECISION (TREE_TYPE (arg0)) <=3D TYPE_PRECISION (shorter_type))
     return NULL_TREE;
=20
-  arg1_unw =3D get_unwidened (arg1, shorter_type);
+  arg1_unw =3D get_unwidened (arg1, NULL_TREE);
=20
   /* If possible, express the comparison in the shorter mode.  */
   if ((code =3D=3D EQ_EXPR || code =3D=3D NE_EXPR
        || TYPE_UNSIGNED (TREE_TYPE (arg0)) =3D=3D TYPE_UNSIGNED (shorter_t=
ype))
       && (TREE_TYPE (arg1_unw) =3D=3D shorter_type
+	  || (TYPE_PRECISION (shorter_type)
+	      >=3D TYPE_PRECISION (TREE_TYPE (arg1_unw)))
 	  || (TREE_CODE (arg1_unw) =3D=3D INTEGER_CST
 	      && (TREE_CODE (shorter_type) =3D=3D INTEGER_TYPE
 		  || TREE_CODE (shorter_type) =3D=3D BOOLEAN_TYPE)
@@ -10647,24 +10653,24 @@
 	  tree arg01 =3D TREE_OPERAND (arg0, 1);
 	  if (TREE_CODE (arg00) =3D=3D LSHIFT_EXPR
 	      && integer_onep (TREE_OPERAND (arg00, 0)))
-	    return
-	      fold_build2 (code, type,
-			   build2 (BIT_AND_EXPR, TREE_TYPE (arg0),
-				   build2 (RSHIFT_EXPR, TREE_TYPE (arg00),
-					   arg01, TREE_OPERAND (arg00, 1)),
-				   fold_convert (TREE_TYPE (arg0),
-						 integer_one_node)),
-			   arg1);
-	  else if (TREE_CODE (TREE_OPERAND (arg0, 1)) =3D=3D LSHIFT_EXPR
-		   && integer_onep (TREE_OPERAND (TREE_OPERAND (arg0, 1), 0)))
-	    return
-	      fold_build2 (code, type,
-			   build2 (BIT_AND_EXPR, TREE_TYPE (arg0),
-				   build2 (RSHIFT_EXPR, TREE_TYPE (arg01),
-					   arg00, TREE_OPERAND (arg01, 1)),
-				   fold_convert (TREE_TYPE (arg0),
-						 integer_one_node)),
-			   arg1);
+	    {
+	      tree tem =3D fold_build2 (RSHIFT_EXPR, TREE_TYPE (arg00),
+				      arg01, TREE_OPERAND (arg00, 1));
+	      tem =3D fold_build2 (BIT_AND_EXPR, TREE_TYPE (arg0), tem,
+				 build_int_cst (TREE_TYPE (arg0), 1));
+	      return fold_build2 (code, type,
+				  fold_convert (TREE_TYPE (arg1), tem), arg1);
+	    }
+	  else if (TREE_CODE (arg01) =3D=3D LSHIFT_EXPR
+		   && integer_onep (TREE_OPERAND (arg01, 0)))
+	    {
+	      tree tem =3D fold_build2 (RSHIFT_EXPR, TREE_TYPE (arg01),
+				      arg00, TREE_OPERAND (arg01, 1));
+	      tem =3D fold_build2 (BIT_AND_EXPR, TREE_TYPE (arg0), tem,
+				 build_int_cst (TREE_TYPE (arg0), 1));
+	      return fold_build2 (code, type,
+				  fold_convert (TREE_TYPE (arg1), tem), arg1);
+	    }
 	}
=20
       /* If this is an NE or EQ comparison of zero against the result of a
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/gimplify.c
--- a/head/contrib/gcc/gimplify.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/gimplify.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1600,9 +1600,7 @@
   /* All checks succeeded.  Build a new node to merge the cast.  */
   *expr_p =3D build4 (ARRAY_REF, dctype, obj_expr,
 		    TYPE_MIN_VALUE (TYPE_DOMAIN (datype)),
-		    TYPE_MIN_VALUE (TYPE_DOMAIN (datype)),
-		    size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (dctype),
-				size_int (TYPE_ALIGN_UNIT (dctype))));
+		    NULL_TREE, NULL_TREE);
   *expr_p =3D build1 (ADDR_EXPR, ctype, *expr_p);
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/ipa-pure-const.c
--- a/head/contrib/gcc/ipa-pure-const.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/ipa-pure-const.c	Wed Jul 25 16:21:35 2012 +0300
@@ -639,6 +639,7 @@
   for (i =3D 0; i < order_pos; i++ )
     {
       enum pure_const_state_e pure_const_state =3D IPA_CONST;
+      int count =3D 0;
       node =3D order[i];
=20
       /* Find the worst state for any node in the cycle.  */
@@ -655,11 +656,40 @@
 	  if (!w_l->state_set_in_source)
 	    {
 	      struct cgraph_edge *e;
+	      count++;
+
+	      /* FIXME!!!  Because of pr33826, we cannot have either
+		 immediate or transitive recursive functions marked as
+		 pure or const because dce can delete a function that
+		 is in reality an infinite loop.  A better solution
+		 than just outlawing them is to add another bit the
+		 functions to distinguish recursive from non recursive
+		 pure and const function.  This would allow the
+		 recursive ones to be cse'd but not dce'd.  In this
+		 same vein, we could allow functions with loops to
+		 also be cse'd but not dce'd.
+
+		 Unfortunately we are late in stage 3, and the fix
+		 described above is is not appropriate.  */
+	      if (count > 1)
+		{
+		  pure_const_state =3D IPA_NEITHER;
+		  break;
+		}
+		   =20
 	      for (e =3D w->callees; e; e =3D e->next_callee)=20
 		{
 		  struct cgraph_node *y =3D e->callee;
 		  /* Only look at the master nodes and skip external nodes.  */
 		  y =3D cgraph_master_clone (y);
+
+		  /* Check for immediate recursive functions.  See the
+		     FIXME above.  */
+		  if (w =3D=3D y)
+		    {
+		      pure_const_state =3D IPA_NEITHER;
+		      break;
+		    }
 		  if (y)
 		    {
 		      funct_state y_l =3D get_function_state (y);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/ipa-utils.c
--- a/head/contrib/gcc/ipa-utils.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/ipa-utils.c	Wed Jul 25 16:21:35 2012 +0300
@@ -78,7 +78,7 @@
    has been customized for cgraph_nodes.  The env parameter is because
    it is recursive and there are no nested functions here.  This
    function should only be called from itself or
-   cgraph_reduced_inorder.  ENV is a stack env and would be
+   ipa_utils_reduced_inorder.  ENV is a stack env and would be
    unnecessary if C had nested functions.  V is the node to start
    searching from.  */
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/rtl.h
--- a/head/contrib/gcc/rtl.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/rtl.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1189,8 +1189,8 @@
    refer to part of a DECL.  */
 #define REG_EXPR(RTX) (REG_ATTRS (RTX) =3D=3D 0 ? 0 : REG_ATTRS (RTX)->dec=
l)
=20
-/* For a MEM rtx, the offset from the start of MEM_DECL, if known, as a
-   RTX that is always a CONST_INT.  */
+/* For a REG rtx, the offset from the start of REG_EXPR, if known, as an
+   HOST_WIDE_INT.  */
 #define REG_OFFSET(RTX) (REG_ATTRS (RTX) =3D=3D 0 ? 0 : REG_ATTRS (RTX)->o=
ffset)
=20
 /* Copy the attributes that apply to memory locations from RHS to LHS.  */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/tree-ssa-ccp.c
--- a/head/contrib/gcc/tree-ssa-ccp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/tree-ssa-ccp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1621,9 +1621,7 @@
   if (!integer_zerop (elt_offset))
     idx =3D int_const_binop (PLUS_EXPR, idx, elt_offset, 0);
=20
-  return build4 (ARRAY_REF, orig_type, base, idx, min_idx,
-		 size_int (tree_low_cst (elt_size, 1)
-			   / (TYPE_ALIGN_UNIT (elt_type))));
+  return build4 (ARRAY_REF, orig_type, base, idx, NULL_TREE, NULL_TREE);
 }
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/tree-ssa-pre.c
--- a/head/contrib/gcc/tree-ssa-pre.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/tree-ssa-pre.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1076,6 +1076,7 @@
 	    tree newexpr;
 	    tree vh =3D get_value_handle (expr);
 	    bool listchanged =3D false;
+	    bool invariantarg =3D false;
 	    VEC (tree, gc) *vuses =3D VALUE_HANDLE_VUSES (vh);
 	    VEC (tree, gc) *tvuses;
=20
@@ -1134,10 +1135,26 @@
 		    if (newval !=3D oldval)
 		      {
 			listchanged =3D true;
+			invariantarg |=3D is_gimple_min_invariant (newval);
 			TREE_VALUE (newwalker) =3D get_value_handle (newval);
 		      }
 		  }
 	      }
+
+	    /* In case of new invariant args we might try to fold the call
+	       again.  */
+	    if (invariantarg)
+	      {
+		tree tmp =3D fold_ternary (CALL_EXPR, TREE_TYPE (expr),
+					 newop0, newarglist, newop2);
+		if (tmp)
+		  {
+		    STRIP_TYPE_NOPS (tmp);
+		    if (is_gimple_min_invariant (tmp))
+		      return tmp;
+		  }
+	      }
+
 	    if (listchanged)
 	      vn_lookup_or_add (newarglist, NULL);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/var-tracking.c
--- a/head/contrib/gcc/var-tracking.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/var-tracking.c	Wed Jul 25 16:21:35 2012 +0300
@@ -259,6 +259,9 @@
 /* Pointer to the BB's information specific to variable tracking pass.  */
 #define VTI(BB) ((variable_tracking_info) (BB)->aux)
=20
+/* Macro to access MEM_OFFSET as an HOST_WIDE_INT.  Evaluates MEM twice.  =
*/
+#define INT_MEM_OFFSET(mem) (MEM_OFFSET (mem) ? INTVAL (MEM_OFFSET (mem)) =
: 0)
+
 /* Alloc pool for struct attrs_def.  */
 static alloc_pool attrs_pool;
=20
@@ -927,7 +930,7 @@
 var_mem_set (dataflow_set *set, rtx loc)
 {
   tree decl =3D MEM_EXPR (loc);
-  HOST_WIDE_INT offset =3D MEM_OFFSET (loc) ? INTVAL (MEM_OFFSET (loc)) : =
0;
+  HOST_WIDE_INT offset =3D INT_MEM_OFFSET (loc);
=20
   decl =3D var_debug_decl (decl);
=20
@@ -945,7 +948,7 @@
 var_mem_delete_and_set (dataflow_set *set, rtx loc, bool modify)
 {
   tree decl =3D MEM_EXPR (loc);
-  HOST_WIDE_INT offset =3D MEM_OFFSET (loc) ? INTVAL (MEM_OFFSET (loc)) : =
0;
+  HOST_WIDE_INT offset =3D INT_MEM_OFFSET (loc);
=20
   decl =3D var_debug_decl (decl);
=20
@@ -962,7 +965,7 @@
 var_mem_delete (dataflow_set *set, rtx loc, bool clobber)
 {
   tree decl =3D MEM_EXPR (loc);
-  HOST_WIDE_INT offset =3D MEM_OFFSET (loc) ? INTVAL (MEM_OFFSET (loc)) : =
0;
+  HOST_WIDE_INT offset =3D INT_MEM_OFFSET (loc);
=20
   decl =3D var_debug_decl (decl);
   if (clobber)
@@ -1540,6 +1543,18 @@
   return 1;
 }
=20
+/* Return true if OFFSET is a valid offset for a register or memory
+   access we want to track.  This is used to reject out-of-bounds
+   accesses that can cause assertions to fail later.  Note that we
+   don't reject negative offsets because they can be generated for
+   paradoxical subregs on big-endian architectures.  */
+
+static inline bool
+offset_valid_for_tracked_p (HOST_WIDE_INT offset)
+{
+  return (-MAX_VAR_PARTS < offset) && (offset < MAX_VAR_PARTS);
+}
+
 /* Determine whether a given LOC refers to the same variable part as
    EXPR+OFFSET.  */
=20
@@ -1560,7 +1575,7 @@
   else if (MEM_P (loc))
     {
       expr2 =3D MEM_EXPR (loc);
-      offset2 =3D MEM_OFFSET (loc) ? INTVAL (MEM_OFFSET (loc)) : 0;
+      offset2 =3D INT_MEM_OFFSET (loc);
     }
   else
     return false;
@@ -1590,7 +1605,8 @@
     }
   else if (MEM_P (*loc)
 	   && MEM_EXPR (*loc)
-	   && track_expr_p (MEM_EXPR (*loc)))
+	   && track_expr_p (MEM_EXPR (*loc))
+	   && offset_valid_for_tracked_p (INT_MEM_OFFSET (*loc)))
     {
       VTI (bb)->n_mos++;
     }
@@ -1626,14 +1642,19 @@
       basic_block bb =3D BLOCK_FOR_INSN ((rtx) insn);
       micro_operation *mo =3D VTI (bb)->mos + VTI (bb)->n_mos++;
=20
-      mo->type =3D ((REG_EXPR (*loc) && track_expr_p (REG_EXPR (*loc)))
-		  ? MO_USE : MO_USE_NO_VAR);
+      if (REG_EXPR (*loc)
+	  && track_expr_p (REG_EXPR (*loc))
+	  && offset_valid_for_tracked_p (REG_OFFSET (*loc)))
+	mo->type =3D MO_USE;
+      else
+	mo->type =3D MO_USE_NO_VAR;
       mo->u.loc =3D *loc;
       mo->insn =3D (rtx) insn;
     }
   else if (MEM_P (*loc)
 	   && MEM_EXPR (*loc)
-	   && track_expr_p (MEM_EXPR (*loc)))
+	   && track_expr_p (MEM_EXPR (*loc))
+	   && offset_valid_for_tracked_p (INT_MEM_OFFSET (*loc)))
     {
       basic_block bb =3D BLOCK_FOR_INSN ((rtx) insn);
       micro_operation *mo =3D VTI (bb)->mos + VTI (bb)->n_mos++;
@@ -1667,8 +1688,9 @@
       micro_operation *mo =3D VTI (bb)->mos + VTI (bb)->n_mos++;
=20
       if (GET_CODE (expr) =3D=3D CLOBBER
-	  || ! REG_EXPR (loc)
-	  || ! track_expr_p (REG_EXPR (loc)))
+	  || !(REG_EXPR (loc)
+	       && track_expr_p (REG_EXPR (loc))
+	       && offset_valid_for_tracked_p (REG_OFFSET (loc))))
 	mo->type =3D MO_CLOBBER;
       else if (GET_CODE (expr) =3D=3D SET
 	       && SET_DEST (expr) =3D=3D loc
@@ -1683,7 +1705,8 @@
     }
   else if (MEM_P (loc)
 	   && MEM_EXPR (loc)
-	   && track_expr_p (MEM_EXPR (loc)))
+	   && track_expr_p (MEM_EXPR (loc))
+	   && offset_valid_for_tracked_p (INT_MEM_OFFSET (loc)))
     {
       basic_block bb =3D BLOCK_FOR_INSN ((rtx) insn);
       micro_operation *mo =3D VTI (bb)->mos + VTI (bb)->n_mos++;
@@ -1694,8 +1717,7 @@
 	       && SET_DEST (expr) =3D=3D loc
 	       && same_variable_part_p (SET_SRC (expr),
 					MEM_EXPR (loc),
-					MEM_OFFSET (loc)
-					? INTVAL (MEM_OFFSET (loc)) : 0))
+					INT_MEM_OFFSET (loc)))
 	mo->type =3D MO_COPY;
       else
 	mo->type =3D MO_SET;
@@ -2726,7 +2748,7 @@
       if (MEM_ATTRS (rtl))
 	{
 	  *declp =3D MEM_EXPR (rtl);
-	  *offsetp =3D MEM_OFFSET (rtl) ? INTVAL (MEM_OFFSET (rtl)) : 0;
+	  *offsetp =3D INT_MEM_OFFSET (rtl);
 	  return true;
 	}
     }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/gcc/varasm.c
--- a/head/contrib/gcc/varasm.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/gcc/varasm.c	Wed Jul 25 16:21:35 2012 +0300
@@ -5876,9 +5876,10 @@
   else if (DECL_WEAK (exp))
     local_p =3D false;
   /* If PIC, then assume that any global name can be overridden by
-     symbols resolved from other modules.  */
+     symbols resolved from other modules, unless we are compiling with
+     -fwhole-program, which assumes that names are local.  */
   else if (shlib)
-    local_p =3D false;
+    local_p =3D flag_whole_program;
   /* Uninitialized COMMON variable may be unified with symbols
      resolved from other modules.  */
   else if (DECL_COMMON (exp)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/groff/tmac/doc-common
--- a/head/contrib/groff/tmac/doc-common	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/groff/tmac/doc-common	Wed Jul 25 16:21:35 2012 +0300
@@ -574,7 +574,10 @@
 .ds doc-operating-system-FreeBSD-8.0     8.0
 .ds doc-operating-system-FreeBSD-8.1     8.1
 .ds doc-operating-system-FreeBSD-8.2     8.2
+.ds doc-operating-system-FreeBSD-8.3     8.3
 .ds doc-operating-system-FreeBSD-9.0     9.0
+.ds doc-operating-system-FreeBSD-9.1     9.1
+.ds doc-operating-system-FreeBSD-10.0    10.0
 .
 .ds doc-operating-system-Darwin-8.0.0  8.0.0
 .ds doc-operating-system-Darwin-8.1.0  8.1.0
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/ChangeLog
--- a/head/contrib/jemalloc/ChangeLog	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/ChangeLog	Wed Jul 25 16:21:35 2012 +0300
@@ -6,7 +6,7 @@
     http://www.canonware.com/cgi-bin/gitweb.cgi?p=3Djemalloc.git
     git://canonware.com/jemalloc.git
=20
-* 3.0.0 (XXX not yet released)
+* 3.0.0 (May 11, 2012)
=20
   Although this version adds some major new features, the primary focus is=
 on
   internal code cleanup that facilitates maintainability and portability, =
most
@@ -19,9 +19,11 @@
=20
   New features:
   - Implement Valgrind support, redzones, and quarantine.
-  - Add support for additional operating systems:
+  - Add support for additional platforms:
     + FreeBSD
     + Mac OS X Lion
+    + MinGW
+    + Windows (no support yet for replacing the system malloc)
   - Add support for additional architectures:
     + MIPS
     + SH4
@@ -30,10 +32,13 @@
   - Add nallocm(), which rounds a request size up to the nearest size class
     without actually allocating.
   - Implement aligned_alloc() (blame C11).
-  - Add the --disable-munmap option, and make it the default on Linux.
+  - Add the "thread.tcache.enabled" mallctl.
+  - Add the "opt.prof_final" mallctl.
+  - Update pprof (from gperftools 2.0).
   - Add the --with-mangling option.
   - Add the --disable-experimental option.
-  - Add the "thread.tcache.enabled" mallctl.
+  - Add the --disable-munmap option, and make it the default on Linux.
+  - Add the --enable-mremap option, which disables use of mremap(2) by def=
ault.
=20
   Incompatible changes:
   - Enable stats by default.
@@ -41,6 +46,8 @@
   - Disable lazy locking by default.
   - Rename the "tcache.flush" mallctl to "thread.tcache.flush".
   - Rename the "arenas.pagesize" mallctl to "arenas.page".
+  - Change the "opt.lg_prof_sample" default from 0 to 19 (1 B to 512 KiB).
+  - Change the "opt.prof_accum" default from true to false.
=20
   Removed features:
   - Remove the swap feature, including the "config.swap", "swap.avail",
@@ -60,16 +67,25 @@
   - Remove the --enable-sysv configure option.
=20
   Bug fixes:
+  - Fix a statistics-related bug in the "thread.arena" mallctl that could =
cause
+    invalid statistics and crashes.
+  - Work around TLS deallocation via free() on Linux.  This bug could cause
+    write-after-free memory corruption.
+  - Fix a potential deadlock that could occur during interval- and
+    growth-triggered heap profile dumps.
+  - Fix large calloc() zeroing bugs due to dropping chunk map unzeroed fla=
gs.
+  - Fix chunk_alloc_dss() to stop claiming memory is zeroed.  This bug cou=
ld
+    cause memory corruption and crashes with --enable-dss specified.
   - Fix fork-related bugs that could cause deadlock in children between fo=
rk
     and exec.
-  - Fix a statistics-related bug in the "thread.arena" mallctl that could =
cause
-    invalid statistics and crashes.
-  - Work around TLS dallocation via free() on Linux.  This bug could cause
-    write-after-free memory corruption.
   - Fix malloc_stats_print() to honor 'b' and 'l' in the opts parameter.
   - Fix realloc(p, 0) to act like free(p).
   - Do not enforce minimum alignment in memalign().
   - Check for NULL pointer in malloc_usable_size().
+  - Fix an off-by-one heap profile statistics bug that could be observed in
+    interval- and growth-triggered heap profiles.
+  - Fix the "epoch" mallctl to update cached stats even if the passed in e=
poch
+    is 0.
   - Fix bin->runcur management to fix a layout policy bug.  This bug did n=
ot
     affect correctness.
   - Fix a bug in choose_arena_hard() that potentially caused more arenas t=
o be
@@ -77,6 +93,7 @@
   - Add missing "opt.lg_tcache_max" mallctl implementation.
   - Use glibc allocator hooks to make mixed allocator usage less likely.
   - Fix build issues for --disable-tcache.
+  - Don't mangle pthread_create() when --with-private-namespace is specifi=
ed.
=20
 * 2.2.5 (November 14, 2011)
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/FREEBSD-Xlist
--- a/head/contrib/jemalloc/FREEBSD-Xlist	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/FREEBSD-Xlist	Wed Jul 25 16:21:35 2012 +0300
@@ -18,6 +18,7 @@
 include/jemalloc/internal/size_classes.sh
 include/jemalloc/jemalloc.h.in
 include/jemalloc/jemalloc_defs.h.in
+include/msvc_compat/
 install-sh
 src/zone.c
 test/
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/FREEBSD-diffs
--- a/head/contrib/jemalloc/FREEBSD-diffs	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/FREEBSD-diffs	Wed Jul 25 16:21:35 2012 +0300
@@ -1,5 +1,5 @@
 diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in
-index 98d0ba4..23d2152 100644
+index 877c500..7d659a7 100644
 --- a/doc/jemalloc.xml.in
 +++ b/doc/jemalloc.xml.in
 @@ -51,12 +51,23 @@
@@ -27,7 +27,7 @@
        <refsect2>
          <title>Standard API</title>
          <funcprototype>
-@@ -2080,4 +2091,16 @@ malloc_conf =3D "lg_chunk:24";]]></programlisting><=
/para>
+@@ -2101,4 +2112,16 @@ malloc_conf =3D "lg_chunk:24";]]></programlisting><=
/para>
      <para>The <function>posix_memalign<parameter/></function> function co=
nforms
      to IEEE Std 1003.1-2001 (“POSIX.1”).</para>
    </refsect1>
@@ -45,7 +45,7 @@
 +  </refsect1>
  </refentry>
 diff --git a/include/jemalloc/internal/jemalloc_internal.h.in b/include/je=
malloc/internal/jemalloc_internal.h.in
-index 905653a..b235a0d 100644
+index 268cd14..2acd2eb 100644
 --- a/include/jemalloc/internal/jemalloc_internal.h.in
 +++ b/include/jemalloc/internal/jemalloc_internal.h.in
 @@ -1,5 +1,8 @@
@@ -54,12 +54,12 @@
 +#include "libc_private.h"
 +#include "namespace.h"
 +
- #include <sys/mman.h>
- #include <sys/param.h>
- #include <sys/syscall.h>
-@@ -35,6 +38,9 @@
- #include <pthread.h>
  #include <math.h>
+ #ifdef _WIN32
+ #  include <windows.h>
+@@ -54,6 +57,9 @@ typedef intptr_t ssize_t;
+ #endif
+ #include <fcntl.h>
 =20
 +#include "un-namespace.h"
 +#include "libc_private.h"
@@ -67,21 +67,49 @@
  #define	JEMALLOC_NO_DEMANGLE
  #include "../jemalloc at install_suffix@.h"
 =20
+@@ -95,13 +101,7 @@ static const bool config_fill =3D
+     false
+ #endif
+     ;
+-static const bool config_lazy_lock =3D
+-#ifdef JEMALLOC_LAZY_LOCK
+-    true
+-#else
+-    false
+-#endif
+-    ;
++static const bool config_lazy_lock =3D true;
+ static const bool config_prof =3D
+ #ifdef JEMALLOC_PROF
+     true
 diff --git a/include/jemalloc/internal/mutex.h b/include/jemalloc/internal=
/mutex.h
-index c46feee..d7133f4 100644
+index de44e14..564d604 100644
 --- a/include/jemalloc/internal/mutex.h
 +++ b/include/jemalloc/internal/mutex.h
-@@ -39,8 +39,6 @@ struct malloc_mutex_s {
+@@ -43,9 +43,6 @@ struct malloc_mutex_s {
 =20
  #ifdef JEMALLOC_LAZY_LOCK
  extern bool isthreaded;
 -#else
+-#  undef isthreaded /* Undo private_namespace.h definition. */
 -#  define isthreaded true
  #endif
 =20
  bool	malloc_mutex_init(malloc_mutex_t *mutex);
+diff --git a/include/jemalloc/internal/private_namespace.h b/include/jemal=
loc/internal/private_namespace.h
+index b816647..b8ce6b1 100644
+--- a/include/jemalloc/internal/private_namespace.h
++++ b/include/jemalloc/internal/private_namespace.h
+@@ -186,7 +186,6 @@
+ #define	iqalloc JEMALLOC_N(iqalloc)
+ #define	iralloc JEMALLOC_N(iralloc)
+ #define	isalloc JEMALLOC_N(isalloc)
+-#define	isthreaded JEMALLOC_N(isthreaded)
+ #define	ivsalloc JEMALLOC_N(ivsalloc)
+ #define	jemalloc_postfork_child JEMALLOC_N(jemalloc_postfork_child)
+ #define	jemalloc_postfork_parent JEMALLOC_N(jemalloc_postfork_parent)
 diff --git a/include/jemalloc/jemalloc.h.in b/include/jemalloc/jemalloc.h.=
in
-index f0581db..f26d8bc 100644
+index ad06948..505dd38 100644
 --- a/include/jemalloc/jemalloc.h.in
 +++ b/include/jemalloc/jemalloc.h.in
 @@ -15,6 +15,7 @@ extern "C" {
@@ -94,10 +122,10 @@
  #define	ALLOCM_LG_ALIGN(la)	(la)
 diff --git a/include/jemalloc/jemalloc_FreeBSD.h b/include/jemalloc/jemall=
oc_FreeBSD.h
 new file mode 100644
-index 0000000..2c5797f
+index 0000000..9efab93
 --- /dev/null
 +++ b/include/jemalloc/jemalloc_FreeBSD.h
-@@ -0,0 +1,76 @@
+@@ -0,0 +1,80 @@
 +/*
 + * Override settings that were generated in jemalloc_defs.h as necessary.
 + */
@@ -141,8 +169,12 @@
 +#  define LG_SIZEOF_PTR		2
 +#endif
 +#ifdef __mips__
++#ifdef __mips_n64
++#  define LG_SIZEOF_PTR		3
++#else
 +#  define LG_SIZEOF_PTR		2
 +#endif
++#endif
 +#ifdef __powerpc64__
 +#  define LG_SIZEOF_PTR		3
 +#elif defined(__powerpc__)
@@ -175,20 +207,21 @@
 +#define	pthread_mutex_lock	_pthread_mutex_lock
 +#define	pthread_mutex_unlock	_pthread_mutex_unlock
 diff --git a/src/jemalloc.c b/src/jemalloc.c
-index 0decd8a..73fad29 100644
+index bc54cd7..fa9fcf0 100644
 --- a/src/jemalloc.c
 +++ b/src/jemalloc.c
-@@ -8,6 +8,9 @@ malloc_tsd_data(, arenas, arena_t *, NULL)
+@@ -8,6 +8,10 @@ malloc_tsd_data(, arenas, arena_t *, NULL)
  malloc_tsd_data(, thread_allocated, thread_allocated_t,
      THREAD_ALLOCATED_INITIALIZER)
 =20
-+const char	*__malloc_options_1_0;
++/* Work around <http://llvm.org/bugs/show_bug.cgi?id=3D12623>: */
++const char	*__malloc_options_1_0 =3D NULL;
 +__sym_compat(_malloc_options, __malloc_options_1_0, FBSD_1.0);
 +
  /* Runtime configuration options. */
- const char	*je_malloc_conf JEMALLOC_ATTR(visibility("default"));
+ const char	*je_malloc_conf;
  #ifdef JEMALLOC_DEBUG
-@@ -401,7 +404,8 @@ malloc_conf_init(void)
+@@ -429,7 +433,8 @@ malloc_conf_init(void)
  #endif
  			    ;
 =20
@@ -199,10 +232,10 @@
  				 * Do nothing; opts is already initialized to
  				 * the value of the MALLOC_CONF environment
 diff --git a/src/mutex.c b/src/mutex.c
-index 4b8ce57..7be5fc9 100644
+index 37a843e..4a90a05 100644
 --- a/src/mutex.c
 +++ b/src/mutex.c
-@@ -63,6 +63,17 @@ pthread_create(pthread_t *__restrict thread,
+@@ -66,6 +66,17 @@ pthread_create(pthread_t *__restrict thread,
  #ifdef JEMALLOC_MUTEX_INIT_CB
  int	_pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex,
      void *(calloc_cb)(size_t, size_t));
@@ -221,14 +254,14 @@
 =20
  bool
 diff --git a/src/util.c b/src/util.c
-index 2aab61f..8b05042 100644
+index 9b73c3e..f94799f 100644
 --- a/src/util.c
 +++ b/src/util.c
-@@ -60,6 +60,22 @@ wrtmessage(void *cbopaque, const char *s)
- void	(*je_malloc_message)(void *, const char *s)
-     JEMALLOC_ATTR(visibility("default")) =3D wrtmessage;
+@@ -58,6 +58,22 @@ wrtmessage(void *cbopaque, const char *s)
 =20
-+JEMALLOC_CATTR(visibility("hidden"), static)
+ JEMALLOC_EXPORT void	(*je_malloc_message)(void *, const char *s);
+=20
++JEMALLOC_ATTR(visibility("hidden"))
 +void
 +wrtmessage_1_0(const char *s1, const char *s2, const char *s3,
 +    const char *s4)
@@ -245,5 +278,5 @@
 +__sym_compat(_malloc_message, __malloc_message_1_0, FBSD_1.0);
 +
  /*
-  * glibc provides a non-standard strerror_r() when _GNU_SOURCE is defined=
, so
-  * provide a wrapper.
+  * Wrapper around malloc_message() that avoids the need for
+  * je_malloc_message(...) throughout the code.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/FREEBSD-upgrade
--- a/head/contrib/jemalloc/FREEBSD-upgrade	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/FREEBSD-upgrade	Wed Jul 25 16:21:35 2012 +0300
@@ -72,7 +72,8 @@
     find . -name '*.orig' -delete
     # Generate various files.
     ./autogen.sh --enable-cc-silence --enable-dss --enable-xmalloc \
-      --enable-utrace --with-xslroot=3D/usr/local/share/xsl/docbook
+      --enable-utrace --with-xslroot=3D/usr/local/share/xsl/docbook \
+      --with-private-namespace=3D__jemalloc_
     gmake dist
   )
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/VERSION
--- a/head/contrib/jemalloc/VERSION	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/VERSION	Wed Jul 25 16:21:35 2012 +0300
@@ -1,1 +1,1 @@
-1.0.0-266-gb57d3ec571c6551231be62b7bf92c084a8c8291c
+3.0.0-0-gfc9b1dbf69f59d7ecfc4ac68da9847e017e1d046
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/doc/jemalloc.3
--- a/head/contrib/jemalloc/doc/jemalloc.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/doc/jemalloc.3	Wed Jul 25 16:21:35 2012 +0300
@@ -2,12 +2,12 @@
 .\"     Title: JEMALLOC
 .\"    Author: Jason Evans
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 04/17/2012
+.\"      Date: 05/12/2012
 .\"    Manual: User Manual
-.\"    Source: jemalloc 1.0.0-266-gb57d3ec571c6551231be62b7bf92c084a8c8291c
+.\"    Source: jemalloc 3.0.0-0-gfc9b1dbf69f59d7ecfc4ac68da9847e017e1d046
 .\"  Language: English
 .\"
-.TH "JEMALLOC" "3" "04/17/2012" "jemalloc 1.0.0-266-gb57d3ec571" "User Man=
ual"
+.TH "JEMALLOC" "3" "05/12/2012" "jemalloc 3.0.0-0-gfc9b1dbf69f5" "User Man=
ual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
 jemalloc \- general purpose memory allocation functions
 .SH "LIBRARY"
 .PP
-This manual describes jemalloc 1\&.0\&.0\-266\-gb57d3ec571c6551231be62b7bf=
92c084a8c8291c\&. More information can be found at the
+This manual describes jemalloc 3\&.0\&.0\-0\-gfc9b1dbf69f59d7ecfc4ac68da98=
47e017e1d046\&. More information can be found at the
 \m[blue]\fBjemalloc website\fR\m[]\&\s-2\u[1]\d\s+2\&.
 .PP
 The following configuration options are enabled in libc\*(Aqs built\-in je=
malloc:
@@ -404,9 +404,9 @@
 to obtain memory, which is suboptimal for several reasons, including race =
conditions, increased fragmentation, and artificial limitations on maximum =
usable memory\&. If
 \fB\-\-enable\-dss\fR
 is specified during configuration, this allocator uses both
-\fBsbrk\fR(2)
+\fBmmap\fR(2)
 and
-\fBmmap\fR(2), in that order of preference; otherwise only
+\fBsbrk\fR(2), in that order of preference; otherwise only
 \fBmmap\fR(2)
 is used\&.
 .PP
@@ -567,6 +567,12 @@
 was specified during build configuration\&.
 .RE
 .PP
+"config\&.mremap" (\fBbool\fR) r\-
+.RS 4
+\fB\-\-enable\-mremap\fR
+was specified during build configuration\&.
+.RE
+.PP
 "config\&.munmap" (\fBbool\fR) r\-
 .RS 4
 \fB\-\-enable\-munmap\fR
@@ -753,14 +759,7 @@
 .PP
 "opt\&.prof" (\fBbool\fR) r\- [\fB\-\-enable\-prof\fR]
 .RS 4
-Memory profiling enabled/disabled\&. If enabled, profile memory allocation=
 activity, and use an
-\fBatexit\fR(3)
-function to dump final memory usage to a file named according to the patte=
rn
-<prefix>\&.<pid>\&.<seq>\&.f\&.heap, where
-<prefix>
-is controlled by the
-"opt\&.prof_prefix"
-option\&. See the
+Memory profiling enabled/disabled\&. If enabled, profile memory allocation=
 activity\&. See the
 "opt\&.prof_active"
 option for on\-the\-fly activation/deactivation\&. See the
 "opt\&.lg_prof_sample"
@@ -768,12 +767,14 @@
 "opt\&.prof_accum"
 option for control of cumulative sample reporting\&. See the
 "opt\&.lg_prof_interval"
-option for information on interval\-triggered profile dumping, and the
+option for information on interval\-triggered profile dumping, the
 "opt\&.prof_gdump"
-option for information on high\-water\-triggered profile dumping\&. Profil=
e output is compatible with the included
+option for information on high\-water\-triggered profile dumping, and the
+"opt\&.prof_final"
+option for final profile dumping\&. Profile output is compatible with the =
included
 \fBpprof\fR
 Perl script, which originates from the
-\m[blue]\fBgoogle\-perftools package\fR\m[]\&\s-2\u[3]\d\s+2\&.
+\m[blue]\fBgperftools package\fR\m[]\&\s-2\u[3]\d\s+2\&.
 .RE
 .PP
 "opt\&.prof_prefix" (\fBconst char *\fR) r\- [\fB\-\-enable\-prof\fR]
@@ -793,12 +794,12 @@
 .PP
 "opt\&.lg_prof_sample" (\fBssize_t\fR) r\- [\fB\-\-enable\-prof\fR]
 .RS 4
-Average interval (log base 2) between allocation samples, as measured in b=
ytes of allocation activity\&. Increasing the sampling interval decreases p=
rofile fidelity, but also decreases the computational overhead\&. The defau=
lt sample interval is 1 (2^0) (i\&.e\&. all allocations are sampled)\&.
+Average interval (log base 2) between allocation samples, as measured in b=
ytes of allocation activity\&. Increasing the sampling interval decreases p=
rofile fidelity, but also decreases the computational overhead\&. The defau=
lt sample interval is 512 KiB (2^19 B)\&.
 .RE
 .PP
 "opt\&.prof_accum" (\fBbool\fR) r\- [\fB\-\-enable\-prof\fR]
 .RS 4
-Reporting of cumulative object/byte counts in profile dumps enabled/disabl=
ed\&. If this option is enabled, every unique backtrace must be stored for =
the duration of execution\&. Depending on the application, this can impose =
a large memory overhead, and the cumulative counts are not always of intere=
st\&. This option is enabled by default\&.
+Reporting of cumulative object/byte counts in profile dumps enabled/disabl=
ed\&. If this option is enabled, every unique backtrace must be stored for =
the duration of execution\&. Depending on the application, this can impose =
a large memory overhead, and the cumulative counts are not always of intere=
st\&. This option is disabled by default\&.
 .RE
 .PP
 "opt\&.lg_prof_interval" (\fBssize_t\fR) r\- [\fB\-\-enable\-prof\fR]
@@ -821,6 +822,18 @@
 option\&. This option is disabled by default\&.
 .RE
 .PP
+"opt\&.prof_final" (\fBbool\fR) r\- [\fB\-\-enable\-prof\fR]
+.RS 4
+Use an
+\fBatexit\fR(3)
+function to dump final memory usage to a file named according to the patte=
rn
+<prefix>\&.<pid>\&.<seq>\&.f\&.heap, where
+<prefix>
+is controlled by the
+"opt\&.prof_prefix"
+option\&. This option is enabled by default\&.
+.RE
+.PP
 "opt\&.prof_leak" (\fBbool\fR) r\- [\fB\-\-enable\-prof\fR]
 .RS 4
 Leak reporting enabled/disabled\&. If enabled, use an
@@ -990,12 +1003,12 @@
 "stats\&.mapped" (\fBsize_t\fR) r\- [\fB\-\-enable\-stats\fR]
 .RS 4
 Total number of bytes in chunks mapped on behalf of the application\&. Thi=
s is a multiple of the chunk size, and is at least as large as
-"stats\&.active"\&. This does not include inactive chunks embedded in the =
DSS\&.
+"stats\&.active"\&. This does not include inactive chunks\&.
 .RE
 .PP
 "stats\&.chunks\&.current" (\fBsize_t\fR) r\- [\fB\-\-enable\-stats\fR]
 .RS 4
-Total number of chunks actively mapped on behalf of the application\&. Thi=
s does not include inactive chunks embedded in the DSS\&.
+Total number of chunks actively mapped on behalf of the application\&. Thi=
s does not include inactive chunks\&.
 .RE
 .PP
 "stats\&.chunks\&.total" (\fBuint64_t\fR) r\- [\fB\-\-enable\-stats\fR]
@@ -1455,10 +1468,10 @@
 .IP " 2." 4
 Valgrind
 .RS 4
-\%http://http://valgrind.org/
+\%http://valgrind.org/
 .RE
 .IP " 3." 4
-google-perftools package
+gperftools package
 .RS 4
-\%http://code.google.com/p/google-perftools/
+\%http://code.google.com/p/gperftools/
 .RE
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/arena.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/arena.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/arena.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -93,13 +93,13 @@
 	 * Run address (or size) and various flags are stored together.  The bit
 	 * layout looks like (assuming 32-bit system):
 	 *
-	 *   ???????? ???????? ????---- ----dula
+	 *   ???????? ???????? ????nnnn nnnndula
 	 *
 	 * ? : Unallocated: Run address for first/last pages, unset for internal
 	 *                  pages.
 	 *     Small: Run page offset.
 	 *     Large: Run size for first page, unset for trailing pages.
-	 * - : Unused.
+	 * n : binind for small size class, BININD_INVALID for large size class.
 	 * d : dirty?
 	 * u : unzeroed?
 	 * l : large?
@@ -109,7 +109,8 @@
 	 *
 	 * p : run page offset
 	 * s : run size
-	 * c : (binind+1) for size class (used only if prof_promote is true)
+	 * n : binind for size class; large objects set these to BININD_INVALID
+	 *     except for promoted allocations (see prof_promote)
 	 * x : don't care
 	 * - : 0
 	 * + : 1
@@ -117,35 +118,38 @@
 	 * [dula] : bit unset
 	 *
 	 *   Unallocated (clean):
-	 *     ssssssss ssssssss ssss---- ----du-a
-	 *     xxxxxxxx xxxxxxxx xxxx---- -----Uxx
-	 *     ssssssss ssssssss ssss---- ----dU-a
+	 *     ssssssss ssssssss ssss++++ ++++du-a
+	 *     xxxxxxxx xxxxxxxx xxxxxxxx xxxx-Uxx
+	 *     ssssssss ssssssss ssss++++ ++++dU-a
 	 *
 	 *   Unallocated (dirty):
-	 *     ssssssss ssssssss ssss---- ----D--a
-	 *     xxxxxxxx xxxxxxxx xxxx---- ----xxxx
-	 *     ssssssss ssssssss ssss---- ----D--a
+	 *     ssssssss ssssssss ssss++++ ++++D--a
+	 *     xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
+	 *     ssssssss ssssssss ssss++++ ++++D--a
 	 *
 	 *   Small:
-	 *     pppppppp pppppppp pppp---- ----d--A
-	 *     pppppppp pppppppp pppp---- -------A
-	 *     pppppppp pppppppp pppp---- ----d--A
+	 *     pppppppp pppppppp ppppnnnn nnnnd--A
+	 *     pppppppp pppppppp ppppnnnn nnnn---A
+	 *     pppppppp pppppppp ppppnnnn nnnnd--A
 	 *
 	 *   Large:
-	 *     ssssssss ssssssss ssss---- ----D-LA
-	 *     xxxxxxxx xxxxxxxx xxxx---- ----xxxx
-	 *     -------- -------- -------- ----D-LA
+	 *     ssssssss ssssssss ssss++++ ++++D-LA
+	 *     xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
+	 *     -------- -------- ----++++ ++++D-LA
 	 *
 	 *   Large (sampled, size <=3D PAGE):
-	 *     ssssssss ssssssss sssscccc ccccD-LA
+	 *     ssssssss ssssssss ssssnnnn nnnnD-LA
 	 *
 	 *   Large (not sampled, size =3D=3D PAGE):
-	 *     ssssssss ssssssss ssss---- ----D-LA
+	 *     ssssssss ssssssss ssss++++ ++++D-LA
 	 */
 	size_t				bits;
-#define	CHUNK_MAP_CLASS_SHIFT	4
-#define	CHUNK_MAP_CLASS_MASK	((size_t)0xff0U)
-#define	CHUNK_MAP_FLAGS_MASK	((size_t)0xfU)
+#define	CHUNK_MAP_BININD_SHIFT	4
+#define	BININD_INVALID		((size_t)0xffU)
+/*     CHUNK_MAP_BININD_MASK =3D=3D (BININD_INVALID << CHUNK_MAP_BININD_SH=
IFT) */
+#define	CHUNK_MAP_BININD_MASK	((size_t)0xff0U)
+#define	CHUNK_MAP_BININD_INVALID CHUNK_MAP_BININD_MASK
+#define	CHUNK_MAP_FLAGS_MASK	((size_t)0xcU)
 #define	CHUNK_MAP_DIRTY		((size_t)0x8U)
 #define	CHUNK_MAP_UNZEROED	((size_t)0x4U)
 #define	CHUNK_MAP_LARGE		((size_t)0x2U)
@@ -408,10 +412,15 @@
 void	*arena_malloc_small(arena_t *arena, size_t size, bool zero);
 void	*arena_malloc_large(arena_t *arena, size_t size, bool zero);
 void	*arena_palloc(arena_t *arena, size_t size, size_t alignment, bool zer=
o);
-size_t	arena_salloc(const void *ptr, bool demote);
 void	arena_prof_promoted(const void *ptr, size_t size);
+void	arena_dalloc_bin_locked(arena_t *arena, arena_chunk_t *chunk, void *p=
tr,
+    arena_chunk_map_t *mapelm);
 void	arena_dalloc_bin(arena_t *arena, arena_chunk_t *chunk, void *ptr,
-    arena_chunk_map_t *mapelm);
+    size_t pageind, arena_chunk_map_t *mapelm);
+void	arena_dalloc_small(arena_t *arena, arena_chunk_t *chunk, void *ptr,
+    size_t pageind);
+void	arena_dalloc_large_locked(arena_t *arena, arena_chunk_t *chunk,
+    void *ptr);
 void	arena_dalloc_large(arena_t *arena, arena_chunk_t *chunk, void *ptr);
 void	arena_stats_merge(arena_t *arena, size_t *nactive, size_t *ndirty,
     arena_stats_t *astats, malloc_bin_stats_t *bstats,
@@ -431,17 +440,269 @@
 #ifdef JEMALLOC_H_INLINES
=20
 #ifndef JEMALLOC_ENABLE_INLINE
+arena_chunk_map_t	*arena_mapp_get(arena_chunk_t *chunk, size_t pageind);
+size_t	*arena_mapbitsp_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_unallocated_size_get(arena_chunk_t *chunk,
+    size_t pageind);
+size_t	arena_mapbits_large_size_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_small_runind_get(arena_chunk_t *chunk, size_t pageind=
);
+size_t	arena_mapbits_binind_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_dirty_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_unzeroed_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_large_get(arena_chunk_t *chunk, size_t pageind);
+size_t	arena_mapbits_allocated_get(arena_chunk_t *chunk, size_t pageind);
+void	arena_mapbits_unallocated_set(arena_chunk_t *chunk, size_t pageind,
+    size_t size, size_t flags);
+void	arena_mapbits_unallocated_size_set(arena_chunk_t *chunk, size_t pagei=
nd,
+    size_t size);
+void	arena_mapbits_large_set(arena_chunk_t *chunk, size_t pageind,
+    size_t size, size_t flags);
+void	arena_mapbits_large_binind_set(arena_chunk_t *chunk, size_t pageind,
+    size_t binind);
+void	arena_mapbits_small_set(arena_chunk_t *chunk, size_t pageind,
+    size_t runind, size_t binind, size_t flags);
+void	arena_mapbits_unzeroed_set(arena_chunk_t *chunk, size_t pageind,
+    size_t unzeroed);
+size_t	arena_ptr_small_binind_get(const void *ptr, size_t mapbits);
 size_t	arena_bin_index(arena_t *arena, arena_bin_t *bin);
 unsigned	arena_run_regind(arena_run_t *run, arena_bin_info_t *bin_info,
     const void *ptr);
 prof_ctx_t	*arena_prof_ctx_get(const void *ptr);
 void	arena_prof_ctx_set(const void *ptr, prof_ctx_t *ctx);
 void	*arena_malloc(arena_t *arena, size_t size, bool zero, bool try_tcache=
);
+size_t	arena_salloc(const void *ptr, bool demote);
 void	arena_dalloc(arena_t *arena, arena_chunk_t *chunk, void *ptr,
     bool try_tcache);
 #endif
=20
 #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_ARENA_C_))
+#  ifdef JEMALLOC_ARENA_INLINE_A
+JEMALLOC_INLINE arena_chunk_map_t *
+arena_mapp_get(arena_chunk_t *chunk, size_t pageind)
+{
+
+	assert(pageind >=3D map_bias);
+	assert(pageind < chunk_npages);
+
+	return (&chunk->map[pageind-map_bias]);
+}
+
+JEMALLOC_INLINE size_t *
+arena_mapbitsp_get(arena_chunk_t *chunk, size_t pageind)
+{
+
+	return (&arena_mapp_get(chunk, pageind)->bits);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_get(arena_chunk_t *chunk, size_t pageind)
+{
+
+	return (*arena_mapbitsp_get(chunk, pageind));
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_unallocated_size_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	assert((mapbits & (CHUNK_MAP_LARGE|CHUNK_MAP_ALLOCATED)) =3D=3D 0);
+	return (mapbits & ~PAGE_MASK);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_large_size_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	assert((mapbits & (CHUNK_MAP_LARGE|CHUNK_MAP_ALLOCATED)) =3D=3D
+	    (CHUNK_MAP_LARGE|CHUNK_MAP_ALLOCATED));
+	return (mapbits & ~PAGE_MASK);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_small_runind_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	assert((mapbits & (CHUNK_MAP_LARGE|CHUNK_MAP_ALLOCATED)) =3D=3D
+	    CHUNK_MAP_ALLOCATED);
+	return (mapbits >> LG_PAGE);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_binind_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+	size_t binind;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	binind =3D (mapbits & CHUNK_MAP_BININD_MASK) >> CHUNK_MAP_BININD_SHIFT;
+	assert(binind < NBINS || binind =3D=3D BININD_INVALID);
+	return (binind);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_dirty_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	return (mapbits & CHUNK_MAP_DIRTY);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_unzeroed_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	return (mapbits & CHUNK_MAP_UNZEROED);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_large_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	return (mapbits & CHUNK_MAP_LARGE);
+}
+
+JEMALLOC_INLINE size_t
+arena_mapbits_allocated_get(arena_chunk_t *chunk, size_t pageind)
+{
+	size_t mapbits;
+
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	return (mapbits & CHUNK_MAP_ALLOCATED);
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_unallocated_set(arena_chunk_t *chunk, size_t pageind, size_t=
 size,
+    size_t flags)
+{
+	size_t *mapbitsp;
+
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	assert((size & PAGE_MASK) =3D=3D 0);
+	assert((flags & ~CHUNK_MAP_FLAGS_MASK) =3D=3D 0);
+	assert((flags & (CHUNK_MAP_DIRTY|CHUNK_MAP_UNZEROED)) =3D=3D flags);
+	*mapbitsp =3D size | CHUNK_MAP_BININD_INVALID | flags;
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_unallocated_size_set(arena_chunk_t *chunk, size_t pageind,
+    size_t size)
+{
+	size_t *mapbitsp;
+
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	assert((size & PAGE_MASK) =3D=3D 0);
+	assert((*mapbitsp & (CHUNK_MAP_LARGE|CHUNK_MAP_ALLOCATED)) =3D=3D 0);
+	*mapbitsp =3D size | (*mapbitsp & PAGE_MASK);
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_large_set(arena_chunk_t *chunk, size_t pageind, size_t size,
+    size_t flags)
+{
+	size_t *mapbitsp;
+	size_t unzeroed;
+
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	assert((size & PAGE_MASK) =3D=3D 0);
+	assert((flags & CHUNK_MAP_DIRTY) =3D=3D flags);
+	unzeroed =3D *mapbitsp & CHUNK_MAP_UNZEROED; /* Preserve unzeroed. */
+	*mapbitsp =3D size | CHUNK_MAP_BININD_INVALID | flags | unzeroed |
+	    CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_large_binind_set(arena_chunk_t *chunk, size_t pageind,
+    size_t binind)
+{
+	size_t *mapbitsp;
+
+	assert(binind <=3D BININD_INVALID);
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	assert(arena_mapbits_large_size_get(chunk, pageind) =3D=3D PAGE);
+	*mapbitsp =3D (*mapbitsp & ~CHUNK_MAP_BININD_MASK) | (binind <<
+	    CHUNK_MAP_BININD_SHIFT);
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_small_set(arena_chunk_t *chunk, size_t pageind, size_t runin=
d,
+    size_t binind, size_t flags)
+{
+	size_t *mapbitsp;
+	size_t unzeroed;
+
+	assert(binind < BININD_INVALID);
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	assert(pageind - runind >=3D map_bias);
+	assert((flags & CHUNK_MAP_DIRTY) =3D=3D flags);
+	unzeroed =3D *mapbitsp & CHUNK_MAP_UNZEROED; /* Preserve unzeroed. */
+	*mapbitsp =3D (runind << LG_PAGE) | (binind << CHUNK_MAP_BININD_SHIFT) |
+	    flags | unzeroed | CHUNK_MAP_ALLOCATED;
+}
+
+JEMALLOC_INLINE void
+arena_mapbits_unzeroed_set(arena_chunk_t *chunk, size_t pageind,
+    size_t unzeroed)
+{
+	size_t *mapbitsp;
+
+	mapbitsp =3D arena_mapbitsp_get(chunk, pageind);
+	*mapbitsp =3D (*mapbitsp & ~CHUNK_MAP_UNZEROED) | unzeroed;
+}
+
+JEMALLOC_INLINE size_t
+arena_ptr_small_binind_get(const void *ptr, size_t mapbits)
+{
+	size_t binind;
+
+	binind =3D (mapbits & CHUNK_MAP_BININD_MASK) >> CHUNK_MAP_BININD_SHIFT;
+
+	if (config_debug) {
+		arena_chunk_t *chunk;
+		arena_t *arena;
+		size_t pageind;
+		size_t actual_mapbits;
+		arena_run_t *run;
+		arena_bin_t *bin;
+		size_t actual_binind;
+		arena_bin_info_t *bin_info;
+
+		assert(binind !=3D BININD_INVALID);
+		assert(binind < NBINS);
+		chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
+		arena =3D chunk->arena;
+		pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
+		actual_mapbits =3D arena_mapbits_get(chunk, pageind);
+		assert(mapbits =3D=3D actual_mapbits);
+		assert(arena_mapbits_large_get(chunk, pageind) =3D=3D 0);
+		assert(arena_mapbits_allocated_get(chunk, pageind) !=3D 0);
+		run =3D (arena_run_t *)((uintptr_t)chunk + (uintptr_t)((pageind -
+		    (actual_mapbits >> LG_PAGE)) << LG_PAGE));
+		bin =3D run->bin;
+		actual_binind =3D bin - arena->bins;
+		assert(binind =3D=3D actual_binind);
+		bin_info =3D &arena_bin_info[actual_binind];
+		assert(((uintptr_t)ptr - ((uintptr_t)run +
+		    (uintptr_t)bin_info->reg0_offset)) % bin_info->reg_interval
+		    =3D=3D 0);
+	}
+
+	return (binind);
+}
+#  endif /* JEMALLOC_ARENA_INLINE_A */
+
+#  ifdef JEMALLOC_ARENA_INLINE_B
 JEMALLOC_INLINE size_t
 arena_bin_index(arena_t *arena, arena_bin_t *bin)
 {
@@ -535,7 +796,7 @@
=20
 	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
 	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-	mapbits =3D chunk->map[pageind-map_bias].bits;
+	mapbits =3D arena_mapbits_get(chunk, pageind);
 	assert((mapbits & CHUNK_MAP_ALLOCATED) !=3D 0);
 	if ((mapbits & CHUNK_MAP_LARGE) =3D=3D 0) {
 		if (prof_promote)
@@ -544,7 +805,8 @@
 			arena_run_t *run =3D (arena_run_t *)((uintptr_t)chunk +
 			    (uintptr_t)((pageind - (mapbits >> LG_PAGE)) <<
 			    LG_PAGE));
-			size_t binind =3D arena_bin_index(chunk->arena, run->bin);
+			size_t binind =3D arena_ptr_small_binind_get(ptr,
+			    mapbits);
 			arena_bin_info_t *bin_info =3D &arena_bin_info[binind];
 			unsigned regind;
=20
@@ -554,7 +816,7 @@
 			    sizeof(prof_ctx_t *)));
 		}
 	} else
-		ret =3D chunk->map[pageind-map_bias].prof_ctx;
+		ret =3D arena_mapp_get(chunk, pageind)->prof_ctx;
=20
 	return (ret);
 }
@@ -571,19 +833,18 @@
=20
 	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
 	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-	mapbits =3D chunk->map[pageind-map_bias].bits;
+	mapbits =3D arena_mapbits_get(chunk, pageind);
 	assert((mapbits & CHUNK_MAP_ALLOCATED) !=3D 0);
 	if ((mapbits & CHUNK_MAP_LARGE) =3D=3D 0) {
 		if (prof_promote =3D=3D false) {
 			arena_run_t *run =3D (arena_run_t *)((uintptr_t)chunk +
 			    (uintptr_t)((pageind - (mapbits >> LG_PAGE)) <<
 			    LG_PAGE));
-			arena_bin_t *bin =3D run->bin;
 			size_t binind;
 			arena_bin_info_t *bin_info;
 			unsigned regind;
=20
-			binind =3D arena_bin_index(chunk->arena, bin);
+			binind =3D arena_ptr_small_binind_get(ptr, mapbits);
 			bin_info =3D &arena_bin_info[binind];
 			regind =3D arena_run_regind(run, bin_info, ptr);
=20
@@ -592,7 +853,7 @@
 		} else
 			assert((uintptr_t)ctx =3D=3D (uintptr_t)1U);
 	} else
-		chunk->map[pageind-map_bias].prof_ctx =3D ctx;
+		arena_mapp_get(chunk, pageind)->prof_ctx =3D ctx;
 }
=20
 JEMALLOC_INLINE void *
@@ -625,11 +886,57 @@
 	}
 }
=20
+/* Return the size of the allocation pointed to by ptr. */
+JEMALLOC_INLINE size_t
+arena_salloc(const void *ptr, bool demote)
+{
+	size_t ret;
+	arena_chunk_t *chunk;
+	size_t pageind, binind;
+
+	assert(ptr !=3D NULL);
+	assert(CHUNK_ADDR2BASE(ptr) !=3D ptr);
+
+	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
+	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
+	assert(arena_mapbits_allocated_get(chunk, pageind) !=3D 0);
+	binind =3D arena_mapbits_binind_get(chunk, pageind);
+	if (binind =3D=3D BININD_INVALID || (config_prof && demote =3D=3D false &&
+	    prof_promote && arena_mapbits_large_get(chunk, pageind) !=3D 0)) {
+		/*
+		 * Large allocation.  In the common case (demote =3D=3D true), and
+		 * as this is an inline function, most callers will only end up
+		 * looking at binind to determine that ptr is a small
+		 * allocation.
+		 */
+		assert(((uintptr_t)ptr & PAGE_MASK) =3D=3D 0);
+		ret =3D arena_mapbits_large_size_get(chunk, pageind);
+		assert(ret !=3D 0);
+		assert(pageind + (ret>>LG_PAGE) <=3D chunk_npages);
+		assert(ret =3D=3D PAGE || arena_mapbits_large_size_get(chunk,
+		    pageind+(ret>>LG_PAGE)-1) =3D=3D 0);
+		assert(binind =3D=3D arena_mapbits_binind_get(chunk,
+		    pageind+(ret>>LG_PAGE)-1));
+		assert(arena_mapbits_dirty_get(chunk, pageind) =3D=3D
+		    arena_mapbits_dirty_get(chunk, pageind+(ret>>LG_PAGE)-1));
+	} else {
+		/*
+		 * Small allocation (possibly promoted to a large object due to
+		 * prof_promote).
+		 */
+		assert(arena_mapbits_large_get(chunk, pageind) !=3D 0 ||
+		    arena_ptr_small_binind_get(ptr, arena_mapbits_get(chunk,
+		    pageind)) =3D=3D binind);
+		ret =3D arena_bin_info[binind].reg_size;
+	}
+
+	return (ret);
+}
+
 JEMALLOC_INLINE void
 arena_dalloc(arena_t *arena, arena_chunk_t *chunk, void *ptr, bool try_tca=
che)
 {
-	size_t pageind;
-	arena_chunk_map_t *mapelm;
+	size_t pageind, mapbits;
 	tcache_t *tcache;
=20
 	assert(arena !=3D NULL);
@@ -638,47 +945,30 @@
 	assert(CHUNK_ADDR2BASE(ptr) !=3D ptr);
=20
 	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-	mapelm =3D &chunk->map[pageind-map_bias];
-	assert((mapelm->bits & CHUNK_MAP_ALLOCATED) !=3D 0);
-	if ((mapelm->bits & CHUNK_MAP_LARGE) =3D=3D 0) {
+	mapbits =3D arena_mapbits_get(chunk, pageind);
+	assert(arena_mapbits_allocated_get(chunk, pageind) !=3D 0);
+	if ((mapbits & CHUNK_MAP_LARGE) =3D=3D 0) {
 		/* Small allocation. */
-		if (try_tcache && (tcache =3D tcache_get(false)) !=3D NULL)
-			tcache_dalloc_small(tcache, ptr);
-		else {
-			arena_run_t *run;
-			arena_bin_t *bin;
+		if (try_tcache && (tcache =3D tcache_get(false)) !=3D NULL) {
+			size_t binind;
=20
-			run =3D (arena_run_t *)((uintptr_t)chunk +
-			    (uintptr_t)((pageind - (mapelm->bits >> LG_PAGE)) <<
-			    LG_PAGE));
-			bin =3D run->bin;
-			if (config_debug) {
-				size_t binind =3D arena_bin_index(arena, bin);
-				UNUSED arena_bin_info_t *bin_info =3D
-				    &arena_bin_info[binind];
-				assert(((uintptr_t)ptr - ((uintptr_t)run +
-				    (uintptr_t)bin_info->reg0_offset)) %
-				    bin_info->reg_interval =3D=3D 0);
-			}
-			malloc_mutex_lock(&bin->lock);
-			arena_dalloc_bin(arena, chunk, ptr, mapelm);
-			malloc_mutex_unlock(&bin->lock);
-		}
+			binind =3D arena_ptr_small_binind_get(ptr, mapbits);
+			tcache_dalloc_small(tcache, ptr, binind);
+		} else
+			arena_dalloc_small(arena, chunk, ptr, pageind);
 	} else {
-		size_t size =3D mapelm->bits & ~PAGE_MASK;
+		size_t size =3D arena_mapbits_large_size_get(chunk, pageind);
=20
 		assert(((uintptr_t)ptr & PAGE_MASK) =3D=3D 0);
=20
 		if (try_tcache && size <=3D tcache_maxclass && (tcache =3D
 		    tcache_get(false)) !=3D NULL) {
 			tcache_dalloc_large(tcache, ptr, size);
-		} else {
-			malloc_mutex_lock(&arena->lock);
+		} else
 			arena_dalloc_large(arena, chunk, ptr);
-			malloc_mutex_unlock(&arena->lock);
-		}
 	}
 }
+#  endif /* JEMALLOC_ARENA_INLINE_B */
 #endif
=20
 #endif /* JEMALLOC_H_INLINES */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/atomic.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/atomic.h	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/atomic.h	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -47,6 +47,20 @@
=20
 	return (__sync_sub_and_fetch(p, x));
 }
+#elif (defined(_MSC_VER))
+JEMALLOC_INLINE uint64_t
+atomic_add_uint64(uint64_t *p, uint64_t x)
+{
+
+	return (InterlockedExchangeAdd64(p, x));
+}
+
+JEMALLOC_INLINE uint64_t
+atomic_sub_uint64(uint64_t *p, uint64_t x)
+{
+
+	return (InterlockedExchangeAdd64(p, -((int64_t)x)));
+}
 #elif (defined(JEMALLOC_OSATOMIC))
 JEMALLOC_INLINE uint64_t
 atomic_add_uint64(uint64_t *p, uint64_t x)
@@ -145,6 +159,20 @@
=20
 	return (__sync_sub_and_fetch(p, x));
 }
+#elif (defined(_MSC_VER))
+JEMALLOC_INLINE uint32_t
+atomic_add_uint32(uint32_t *p, uint32_t x)
+{
+
+	return (InterlockedExchangeAdd(p, x));
+}
+
+JEMALLOC_INLINE uint32_t
+atomic_sub_uint32(uint32_t *p, uint32_t x)
+{
+
+	return (InterlockedExchangeAdd(p, -((int32_t)x)));
+}
 #elif (defined(JEMALLOC_OSATOMIC))
 JEMALLOC_INLINE uint32_t
 atomic_add_uint32(uint32_t *p, uint32_t x)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/chunk.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/chunk.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/chunk.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -44,8 +44,7 @@
=20
 void	*chunk_alloc(size_t size, size_t alignment, bool base, bool *zero);
 void	chunk_dealloc(void *chunk, size_t size, bool unmap);
-bool	chunk_boot0(void);
-bool	chunk_boot1(void);
+bool	chunk_boot(void);
=20
 #endif /* JEMALLOC_H_EXTERNS */
 /*************************************************************************=
*****/
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/chunk_mmap.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/chunk_mmap.h	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/chunk_mmap.h	Wed Jul =
25 16:21:35 2012 +0300
@@ -9,11 +9,11 @@
 /*************************************************************************=
*****/
 #ifdef JEMALLOC_H_EXTERNS
=20
-void	*chunk_alloc_mmap(size_t size, size_t alignment);
+void	pages_purge(void *addr, size_t length);
+
+void	*chunk_alloc_mmap(size_t size, size_t alignment, bool *zero);
 bool	chunk_dealloc_mmap(void *chunk, size_t size);
=20
-bool	chunk_mmap_boot(void);
-
 #endif /* JEMALLOC_H_EXTERNS */
 /*************************************************************************=
*****/
 #ifdef JEMALLOC_H_INLINES
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/ctl.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/ctl.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/ctl.h	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -2,6 +2,8 @@
 #ifdef JEMALLOC_H_TYPES
=20
 typedef struct ctl_node_s ctl_node_t;
+typedef struct ctl_named_node_s ctl_named_node_t;
+typedef struct ctl_indexed_node_s ctl_indexed_node_t;
 typedef struct ctl_arena_stats_s ctl_arena_stats_t;
 typedef struct ctl_stats_s ctl_stats_t;
=20
@@ -11,20 +13,21 @@
=20
 struct ctl_node_s {
 	bool			named;
-	union {
-		struct {
-			const char	*name;
-			/* If (nchildren =3D=3D 0), this is a terminal node. */
-			unsigned	nchildren;
-			const	ctl_node_t *children;
-		} named;
-		struct {
-			const ctl_node_t *(*index)(const size_t *, size_t,
-			    size_t);
-		} indexed;
-	} u;
-	int	(*ctl)(const size_t *, size_t, void *, size_t *, void *,
-	    size_t);
+};
+
+struct ctl_named_node_s {
+	struct ctl_node_s	node;
+	const char		*name;
+	/* If (nchildren =3D=3D 0), this is a terminal node. */
+	unsigned		nchildren;
+	const			ctl_node_t *children;
+	int			(*ctl)(const size_t *, size_t, void *, size_t *,
+	    void *, size_t);
+};
+
+struct ctl_indexed_node_s {
+	struct ctl_node_s	node;
+	const ctl_named_node_t	*(*index)(const size_t *, size_t, size_t);
 };
=20
 struct ctl_arena_stats_s {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/jemalloc_internal.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/jemalloc_internal.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -3,23 +3,34 @@
 #include "libc_private.h"
 #include "namespace.h"
=20
-#include <sys/mman.h>
-#include <sys/param.h>
-#include <sys/syscall.h>
-#if !defined(SYS_write) && defined(__NR_write)
-#define	SYS_write __NR_write
+#include <math.h>
+#ifdef _WIN32
+#  include <windows.h>
+#  define ENOENT ERROR_PATH_NOT_FOUND
+#  define EINVAL ERROR_BAD_ARGUMENTS
+#  define EAGAIN ERROR_OUTOFMEMORY
+#  define EPERM  ERROR_WRITE_FAULT
+#  define EFAULT ERROR_INVALID_ADDRESS
+#  define ENOMEM ERROR_NOT_ENOUGH_MEMORY
+#  undef ERANGE
+#  define ERANGE ERROR_INVALID_DATA
+#else
+#  include <sys/param.h>
+#  include <sys/mman.h>
+#  include <sys/syscall.h>
+#  if !defined(SYS_write) && defined(__NR_write)
+#    define SYS_write __NR_write
+#  endif
+#  include <sys/uio.h>
+#  include <pthread.h>
+#  include <errno.h>
 #endif
-#include <sys/time.h>
 #include <sys/types.h>
-#include <sys/uio.h>
=20
-#include <errno.h>
 #include <limits.h>
 #ifndef SIZE_T_MAX
 #  define SIZE_T_MAX	SIZE_MAX
 #endif
-#include <pthread.h>
-#include <sched.h>
 #include <stdarg.h>
 #include <stdbool.h>
 #include <stdio.h>
@@ -33,10 +44,18 @@
 #include <string.h>
 #include <strings.h>
 #include <ctype.h>
-#include <unistd.h>
+#ifdef _MSC_VER
+#  include <io.h>
+typedef intptr_t ssize_t;
+#  define PATH_MAX 1024
+#  define STDERR_FILENO 2
+#  define __func__ __FUNCTION__
+/* Disable warnings about deprecated system functions */
+#  pragma warning(disable: 4996)
+#else
+#  include <unistd.h>
+#endif
 #include <fcntl.h>
-#include <pthread.h>
-#include <math.h>
=20
 #include "un-namespace.h"
 #include "libc_private.h"
@@ -82,13 +101,7 @@
     false
 #endif
     ;
-static const bool config_lazy_lock =3D
-#ifdef JEMALLOC_LAZY_LOCK
-    true
-#else
-    false
-#endif
-    ;
+static const bool config_lazy_lock =3D true;
 static const bool config_prof =3D
 #ifdef JEMALLOC_PROF
     true
@@ -110,6 +123,13 @@
     false
 #endif
     ;
+static const bool config_mremap =3D
+#ifdef JEMALLOC_MREMAP
+    true
+#else
+    false
+#endif
+    ;
 static const bool config_munmap =3D
 #ifdef JEMALLOC_MUNMAP
     true
@@ -218,6 +238,9 @@
 #else
 #  define JEMALLOC_ENABLE_INLINE
 #  define JEMALLOC_INLINE static inline
+#  ifdef _MSC_VER
+#    define inline _inline
+#  endif
 #endif
=20
 /* Smallest size class to support. */
@@ -229,7 +252,7 @@
  * classes).
  */
 #ifndef LG_QUANTUM
-#  ifdef __i386__
+#  if (defined(__i386__) || defined(_M_IX86))
 #    define LG_QUANTUM		4
 #  endif
 #  ifdef __ia64__
@@ -241,7 +264,7 @@
 #  ifdef __sparc64__
 #    define LG_QUANTUM		4
 #  endif
-#  if (defined(__amd64__) || defined(__x86_64__))
+#  if (defined(__amd64__) || defined(__x86_64__) || defined(_M_X64))
 #    define LG_QUANTUM		4
 #  endif
 #  ifdef __arm__
@@ -291,9 +314,12 @@
 /*
  * Maximum size of L1 cache line.  This is used to avoid cache line aliasi=
ng.
  * In addition, this controls the spacing of cacheline-spaced size classes.
+ *
+ * CACHELINE cannot be based on LG_CACHELINE because __declspec(align()) c=
an
+ * only handle raw constants.
  */
 #define	LG_CACHELINE		6
-#define	CACHELINE		((size_t)(1U << LG_CACHELINE))
+#define	CACHELINE		64
 #define	CACHELINE_MASK		(CACHELINE - 1)
=20
 /* Return the smallest cacheline multiple that is >=3D s. */
@@ -324,6 +350,20 @@
 #define	ALIGNMENT_CEILING(s, alignment)					\
 	(((s) + (alignment - 1)) & (-(alignment)))
=20
+/* Declare a variable length array */
+#if __STDC_VERSION__ < 199901L
+#  ifdef _MSC_VER
+#    include <malloc.h>
+#    define alloca _alloca
+#  else
+#    include <alloca.h>
+#  endif
+#  define VARIABLE_ARRAY(type, name, count) \
+	type *name =3D alloca(sizeof(type) * count)
+#else
+#  define VARIABLE_ARRAY(type, name, count) type name[count]
+#endif
+
 #ifdef JEMALLOC_VALGRIND
 /*
  * The JEMALLOC_VALGRIND_*() macros must be macros rather than functions
@@ -655,8 +695,17 @@
=20
 #include "jemalloc/internal/bitmap.h"
 #include "jemalloc/internal/rtree.h"
+/*
+ * Include arena.h twice in order to resolve circular dependencies with
+ * tcache.h.
+ */
+#define	JEMALLOC_ARENA_INLINE_A
+#include "jemalloc/internal/arena.h"
+#undef JEMALLOC_ARENA_INLINE_A
 #include "jemalloc/internal/tcache.h"
+#define	JEMALLOC_ARENA_INLINE_B
 #include "jemalloc/internal/arena.h"
+#undef JEMALLOC_ARENA_INLINE_B
 #include "jemalloc/internal/hash.h"
 #include "jemalloc/internal/quarantine.h"
=20
@@ -738,10 +787,9 @@
 	assert(config_prof || demote =3D=3D false);
=20
 	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
-	if (chunk !=3D ptr) {
-		/* Region. */
+	if (chunk !=3D ptr)
 		ret =3D arena_salloc(ptr, demote);
-	} else
+	else
 		ret =3D huge_salloc(ptr);
=20
 	return (ret);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/mutex.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/mutex.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/mutex.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -3,10 +3,12 @@
=20
 typedef struct malloc_mutex_s malloc_mutex_t;
=20
-#ifdef JEMALLOC_OSSPIN
-#define	MALLOC_MUTEX_INITIALIZER {0}
+#ifdef _WIN32
+#  define MALLOC_MUTEX_INITIALIZER
+#elif (defined(JEMALLOC_OSSPIN))
+#  define MALLOC_MUTEX_INITIALIZER {0}
 #elif (defined(JEMALLOC_MUTEX_INIT_CB))
-#define	MALLOC_MUTEX_INITIALIZER {PTHREAD_MUTEX_INITIALIZER, NULL}
+#  define MALLOC_MUTEX_INITIALIZER {PTHREAD_MUTEX_INITIALIZER, NULL}
 #else
 #  if (defined(PTHREAD_MUTEX_ADAPTIVE_NP) &&				\
        defined(PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP))
@@ -23,7 +25,9 @@
 #ifdef JEMALLOC_H_STRUCTS
=20
 struct malloc_mutex_s {
-#ifdef JEMALLOC_OSSPIN
+#ifdef _WIN32
+	CRITICAL_SECTION	lock;
+#elif (defined(JEMALLOC_OSSPIN))
 	OSSpinLock		lock;
 #elif (defined(JEMALLOC_MUTEX_INIT_CB))
 	pthread_mutex_t		lock;
@@ -62,7 +66,9 @@
 {
=20
 	if (isthreaded) {
-#ifdef JEMALLOC_OSSPIN
+#ifdef _WIN32
+		EnterCriticalSection(&mutex->lock);
+#elif (defined(JEMALLOC_OSSPIN))
 		OSSpinLockLock(&mutex->lock);
 #else
 		pthread_mutex_lock(&mutex->lock);
@@ -75,7 +81,9 @@
 {
=20
 	if (isthreaded) {
-#ifdef JEMALLOC_OSSPIN
+#ifdef _WIN32
+		LeaveCriticalSection(&mutex->lock);
+#elif (defined(JEMALLOC_OSSPIN))
 		OSSpinLockUnlock(&mutex->lock);
 #else
 		pthread_mutex_unlock(&mutex->lock);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/private_namespace.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/private_namespace.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/private_namespace.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -1,13 +1,38 @@
+#define	a0calloc JEMALLOC_N(a0calloc)
+#define	a0free JEMALLOC_N(a0free)
+#define	a0malloc JEMALLOC_N(a0malloc)
 #define	arena_alloc_junk_small JEMALLOC_N(arena_alloc_junk_small)
 #define	arena_bin_index JEMALLOC_N(arena_bin_index)
+#define	arena_bin_info JEMALLOC_N(arena_bin_info)
 #define	arena_boot JEMALLOC_N(arena_boot)
 #define	arena_dalloc JEMALLOC_N(arena_dalloc)
 #define	arena_dalloc_bin JEMALLOC_N(arena_dalloc_bin)
+#define	arena_dalloc_bin_locked JEMALLOC_N(arena_dalloc_bin_locked)
 #define	arena_dalloc_junk_small JEMALLOC_N(arena_dalloc_junk_small)
 #define	arena_dalloc_large JEMALLOC_N(arena_dalloc_large)
+#define	arena_dalloc_large_locked JEMALLOC_N(arena_dalloc_large_locked)
+#define	arena_dalloc_small JEMALLOC_N(arena_dalloc_small)
 #define	arena_malloc JEMALLOC_N(arena_malloc)
 #define	arena_malloc_large JEMALLOC_N(arena_malloc_large)
 #define	arena_malloc_small JEMALLOC_N(arena_malloc_small)
+#define	arena_mapbits_allocated_get JEMALLOC_N(arena_mapbits_allocated_get)
+#define	arena_mapbits_binind_get JEMALLOC_N(arena_mapbits_binind_get)
+#define	arena_mapbits_dirty_get JEMALLOC_N(arena_mapbits_dirty_get)
+#define	arena_mapbits_get JEMALLOC_N(arena_mapbits_get)
+#define	arena_mapbits_large_binind_set JEMALLOC_N(arena_mapbits_large_bini=
nd_set)
+#define	arena_mapbits_large_get JEMALLOC_N(arena_mapbits_large_get)
+#define	arena_mapbits_large_set JEMALLOC_N(arena_mapbits_large_set)
+#define	arena_mapbits_large_size_get JEMALLOC_N(arena_mapbits_large_size_g=
et)
+#define	arena_mapbits_small_runind_get JEMALLOC_N(arena_mapbits_small_runi=
nd_get)
+#define	arena_mapbits_small_set JEMALLOC_N(arena_mapbits_small_set)
+#define	arena_mapbits_unallocated_set JEMALLOC_N(arena_mapbits_unallocated=
_set)
+#define	arena_mapbits_unallocated_size_get JEMALLOC_N(arena_mapbits_unallo=
cated_size_get)
+#define	arena_mapbits_unallocated_size_set JEMALLOC_N(arena_mapbits_unallo=
cated_size_set)
+#define	arena_mapbits_unzeroed_get JEMALLOC_N(arena_mapbits_unzeroed_get)
+#define	arena_mapbits_unzeroed_set JEMALLOC_N(arena_mapbits_unzeroed_set)
+#define	arena_mapbitsp_get JEMALLOC_N(arena_mapbitsp_get)
+#define	arena_mapp_get JEMALLOC_N(arena_mapp_get)
+#define	arena_maxclass JEMALLOC_N(arena_maxclass)
 #define	arena_new JEMALLOC_N(arena_new)
 #define	arena_palloc JEMALLOC_N(arena_palloc)
 #define	arena_postfork_child JEMALLOC_N(arena_postfork_child)
@@ -17,6 +42,7 @@
 #define	arena_prof_ctx_get JEMALLOC_N(arena_prof_ctx_get)
 #define	arena_prof_ctx_set JEMALLOC_N(arena_prof_ctx_set)
 #define	arena_prof_promoted JEMALLOC_N(arena_prof_promoted)
+#define	arena_ptr_small_binind_get JEMALLOC_N(arena_ptr_small_binind_get)
 #define	arena_purge_all JEMALLOC_N(arena_purge_all)
 #define	arena_ralloc JEMALLOC_N(arena_ralloc)
 #define	arena_ralloc_no_move JEMALLOC_N(arena_ralloc_no_move)
@@ -24,9 +50,13 @@
 #define	arena_salloc JEMALLOC_N(arena_salloc)
 #define	arena_stats_merge JEMALLOC_N(arena_stats_merge)
 #define	arena_tcache_fill_small JEMALLOC_N(arena_tcache_fill_small)
+#define	arenas JEMALLOC_N(arenas)
 #define	arenas_bin_i_index JEMALLOC_N(arenas_bin_i_index)
+#define	arenas_booted JEMALLOC_N(arenas_booted)
 #define	arenas_cleanup JEMALLOC_N(arenas_cleanup)
 #define	arenas_extend JEMALLOC_N(arenas_extend)
+#define	arenas_initialized JEMALLOC_N(arenas_initialized)
+#define	arenas_lock JEMALLOC_N(arenas_lock)
 #define	arenas_lrun_i_index JEMALLOC_N(arenas_lrun_i_index)
 #define	arenas_tls JEMALLOC_N(arenas_tls)
 #define	arenas_tsd_boot JEMALLOC_N(arenas_tsd_boot)
@@ -65,8 +95,7 @@
 #define	chunk_alloc JEMALLOC_N(chunk_alloc)
 #define	chunk_alloc_dss JEMALLOC_N(chunk_alloc_dss)
 #define	chunk_alloc_mmap JEMALLOC_N(chunk_alloc_mmap)
-#define	chunk_boot0 JEMALLOC_N(chunk_boot0)
-#define	chunk_boot1 JEMALLOC_N(chunk_boot1)
+#define	chunk_boot JEMALLOC_N(chunk_boot)
 #define	chunk_dealloc JEMALLOC_N(chunk_dealloc)
 #define	chunk_dealloc_mmap JEMALLOC_N(chunk_dealloc_mmap)
 #define	chunk_dss_boot JEMALLOC_N(chunk_dss_boot)
@@ -74,7 +103,11 @@
 #define	chunk_dss_postfork_parent JEMALLOC_N(chunk_dss_postfork_parent)
 #define	chunk_dss_prefork JEMALLOC_N(chunk_dss_prefork)
 #define	chunk_in_dss JEMALLOC_N(chunk_in_dss)
-#define	chunk_mmap_boot JEMALLOC_N(chunk_mmap_boot)
+#define	chunk_npages JEMALLOC_N(chunk_npages)
+#define	chunks_mtx JEMALLOC_N(chunks_mtx)
+#define	chunks_rtree JEMALLOC_N(chunks_rtree)
+#define	chunksize JEMALLOC_N(chunksize)
+#define	chunksize_mask JEMALLOC_N(chunksize_mask)
 #define	ckh_bucket_search JEMALLOC_N(ckh_bucket_search)
 #define	ckh_count JEMALLOC_N(ckh_count)
 #define	ckh_delete JEMALLOC_N(ckh_delete)
@@ -129,9 +162,13 @@
 #define	extent_tree_szad_reverse_iter_start JEMALLOC_N(extent_tree_szad_re=
verse_iter_start)
 #define	extent_tree_szad_search JEMALLOC_N(extent_tree_szad_search)
 #define	hash JEMALLOC_N(hash)
+#define	huge_allocated JEMALLOC_N(huge_allocated)
 #define	huge_boot JEMALLOC_N(huge_boot)
 #define	huge_dalloc JEMALLOC_N(huge_dalloc)
 #define	huge_malloc JEMALLOC_N(huge_malloc)
+#define	huge_mtx JEMALLOC_N(huge_mtx)
+#define	huge_ndalloc JEMALLOC_N(huge_ndalloc)
+#define	huge_nmalloc JEMALLOC_N(huge_nmalloc)
 #define	huge_palloc JEMALLOC_N(huge_palloc)
 #define	huge_postfork_child JEMALLOC_N(huge_postfork_child)
 #define	huge_postfork_parent JEMALLOC_N(huge_postfork_parent)
@@ -171,12 +208,12 @@
 #define	malloc_vcprintf JEMALLOC_N(malloc_vcprintf)
 #define	malloc_vsnprintf JEMALLOC_N(malloc_vsnprintf)
 #define	malloc_write JEMALLOC_N(malloc_write)
+#define	map_bias JEMALLOC_N(map_bias)
 #define	mb_write JEMALLOC_N(mb_write)
-#define	mmap_unaligned_tsd_boot JEMALLOC_N(mmap_unaligned_tsd_boot)
-#define	mmap_unaligned_tsd_cleanup_wrapper JEMALLOC_N(mmap_unaligned_tsd_c=
leanup_wrapper)
-#define	mmap_unaligned_tsd_get JEMALLOC_N(mmap_unaligned_tsd_get)
-#define	mmap_unaligned_tsd_set JEMALLOC_N(mmap_unaligned_tsd_set)
 #define	mutex_boot JEMALLOC_N(mutex_boot)
+#define	narenas JEMALLOC_N(narenas)
+#define	ncpus JEMALLOC_N(ncpus)
+#define	nhbins JEMALLOC_N(nhbins)
 #define	opt_abort JEMALLOC_N(opt_abort)
 #define	opt_junk JEMALLOC_N(opt_junk)
 #define	opt_lg_chunk JEMALLOC_N(opt_lg_chunk)
@@ -188,14 +225,20 @@
 #define	opt_prof JEMALLOC_N(opt_prof)
 #define	opt_prof_accum JEMALLOC_N(opt_prof_accum)
 #define	opt_prof_active JEMALLOC_N(opt_prof_active)
+#define	opt_prof_final JEMALLOC_N(opt_prof_final)
 #define	opt_prof_gdump JEMALLOC_N(opt_prof_gdump)
 #define	opt_prof_leak JEMALLOC_N(opt_prof_leak)
+#define	opt_prof_prefix JEMALLOC_N(opt_prof_prefix)
+#define	opt_quarantine JEMALLOC_N(opt_quarantine)
+#define	opt_redzone JEMALLOC_N(opt_redzone)
 #define	opt_stats_print JEMALLOC_N(opt_stats_print)
 #define	opt_tcache JEMALLOC_N(opt_tcache)
 #define	opt_utrace JEMALLOC_N(opt_utrace)
+#define	opt_valgrind JEMALLOC_N(opt_valgrind)
 #define	opt_xmalloc JEMALLOC_N(opt_xmalloc)
 #define	opt_zero JEMALLOC_N(opt_zero)
 #define	p2rz JEMALLOC_N(p2rz)
+#define	pages_purge JEMALLOC_N(pages_purge)
 #define	pow2_ceil JEMALLOC_N(pow2_ceil)
 #define	prof_backtrace JEMALLOC_N(prof_backtrace)
 #define	prof_boot0 JEMALLOC_N(prof_boot0)
@@ -206,18 +249,24 @@
 #define	prof_free JEMALLOC_N(prof_free)
 #define	prof_gdump JEMALLOC_N(prof_gdump)
 #define	prof_idump JEMALLOC_N(prof_idump)
+#define	prof_interval JEMALLOC_N(prof_interval)
 #define	prof_lookup JEMALLOC_N(prof_lookup)
 #define	prof_malloc JEMALLOC_N(prof_malloc)
 #define	prof_mdump JEMALLOC_N(prof_mdump)
+#define	prof_promote JEMALLOC_N(prof_promote)
 #define	prof_realloc JEMALLOC_N(prof_realloc)
 #define	prof_sample_accum_update JEMALLOC_N(prof_sample_accum_update)
 #define	prof_sample_threshold_update JEMALLOC_N(prof_sample_threshold_upda=
te)
+#define	prof_tdata_booted JEMALLOC_N(prof_tdata_booted)
 #define	prof_tdata_cleanup JEMALLOC_N(prof_tdata_cleanup)
+#define	prof_tdata_get JEMALLOC_N(prof_tdata_get)
+#define	prof_tdata_init JEMALLOC_N(prof_tdata_init)
+#define	prof_tdata_initialized JEMALLOC_N(prof_tdata_initialized)
+#define	prof_tdata_tls JEMALLOC_N(prof_tdata_tls)
 #define	prof_tdata_tsd_boot JEMALLOC_N(prof_tdata_tsd_boot)
 #define	prof_tdata_tsd_cleanup_wrapper JEMALLOC_N(prof_tdata_tsd_cleanup_w=
rapper)
 #define	prof_tdata_tsd_get JEMALLOC_N(prof_tdata_tsd_get)
 #define	prof_tdata_tsd_set JEMALLOC_N(prof_tdata_tsd_set)
-#define	pthread_create JEMALLOC_N(pthread_create)
 #define	quarantine JEMALLOC_N(quarantine)
 #define	quarantine_boot JEMALLOC_N(quarantine_boot)
 #define	quarantine_tsd_boot JEMALLOC_N(quarantine_tsd_boot)
@@ -238,6 +287,7 @@
 #define	stats_cactive_add JEMALLOC_N(stats_cactive_add)
 #define	stats_cactive_get JEMALLOC_N(stats_cactive_get)
 #define	stats_cactive_sub JEMALLOC_N(stats_cactive_sub)
+#define	stats_chunks JEMALLOC_N(stats_chunks)
 #define	stats_print JEMALLOC_N(stats_print)
 #define	tcache_alloc_easy JEMALLOC_N(tcache_alloc_easy)
 #define	tcache_alloc_large JEMALLOC_N(tcache_alloc_large)
@@ -247,26 +297,40 @@
 #define	tcache_arena_dissociate JEMALLOC_N(tcache_arena_dissociate)
 #define	tcache_bin_flush_large JEMALLOC_N(tcache_bin_flush_large)
 #define	tcache_bin_flush_small JEMALLOC_N(tcache_bin_flush_small)
+#define	tcache_bin_info JEMALLOC_N(tcache_bin_info)
 #define	tcache_boot0 JEMALLOC_N(tcache_boot0)
 #define	tcache_boot1 JEMALLOC_N(tcache_boot1)
+#define	tcache_booted JEMALLOC_N(tcache_booted)
 #define	tcache_create JEMALLOC_N(tcache_create)
 #define	tcache_dalloc_large JEMALLOC_N(tcache_dalloc_large)
 #define	tcache_dalloc_small JEMALLOC_N(tcache_dalloc_small)
 #define	tcache_destroy JEMALLOC_N(tcache_destroy)
+#define	tcache_enabled_booted JEMALLOC_N(tcache_enabled_booted)
 #define	tcache_enabled_get JEMALLOC_N(tcache_enabled_get)
+#define	tcache_enabled_initialized JEMALLOC_N(tcache_enabled_initialized)
 #define	tcache_enabled_set JEMALLOC_N(tcache_enabled_set)
+#define	tcache_enabled_tls JEMALLOC_N(tcache_enabled_tls)
 #define	tcache_enabled_tsd_boot JEMALLOC_N(tcache_enabled_tsd_boot)
 #define	tcache_enabled_tsd_cleanup_wrapper JEMALLOC_N(tcache_enabled_tsd_c=
leanup_wrapper)
 #define	tcache_enabled_tsd_get JEMALLOC_N(tcache_enabled_tsd_get)
 #define	tcache_enabled_tsd_set JEMALLOC_N(tcache_enabled_tsd_set)
 #define	tcache_event JEMALLOC_N(tcache_event)
+#define	tcache_event_hard JEMALLOC_N(tcache_event_hard)
 #define	tcache_flush JEMALLOC_N(tcache_flush)
+#define	tcache_get JEMALLOC_N(tcache_get)
+#define	tcache_initialized JEMALLOC_N(tcache_initialized)
+#define	tcache_maxclass JEMALLOC_N(tcache_maxclass)
+#define	tcache_salloc JEMALLOC_N(tcache_salloc)
 #define	tcache_stats_merge JEMALLOC_N(tcache_stats_merge)
 #define	tcache_thread_cleanup JEMALLOC_N(tcache_thread_cleanup)
+#define	tcache_tls JEMALLOC_N(tcache_tls)
 #define	tcache_tsd_boot JEMALLOC_N(tcache_tsd_boot)
 #define	tcache_tsd_cleanup_wrapper JEMALLOC_N(tcache_tsd_cleanup_wrapper)
 #define	tcache_tsd_get JEMALLOC_N(tcache_tsd_get)
 #define	tcache_tsd_set JEMALLOC_N(tcache_tsd_set)
+#define	thread_allocated_booted JEMALLOC_N(thread_allocated_booted)
+#define	thread_allocated_initialized JEMALLOC_N(thread_allocated_initializ=
ed)
+#define	thread_allocated_tls JEMALLOC_N(thread_allocated_tls)
 #define	thread_allocated_tsd_boot JEMALLOC_N(thread_allocated_tsd_boot)
 #define	thread_allocated_tsd_cleanup_wrapper JEMALLOC_N(thread_allocated_t=
sd_cleanup_wrapper)
 #define	thread_allocated_tsd_get JEMALLOC_N(thread_allocated_tsd_get)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/prof.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/prof.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/prof.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -9,7 +9,7 @@
=20
 /* Option defaults. */
 #define	PROF_PREFIX_DEFAULT		"jeprof"
-#define	LG_PROF_SAMPLE_DEFAULT		0
+#define	LG_PROF_SAMPLE_DEFAULT		19
 #define	LG_PROF_INTERVAL_DEFAULT	-1
=20
 /*
@@ -37,6 +37,14 @@
  */
 #define	PROF_NCTX_LOCKS			1024
=20
+/*
+ * prof_tdata pointers close to NULL are used to encode state information =
that
+ * is used for cleaning up during thread shutdown.
+ */
+#define	PROF_TDATA_STATE_REINCARNATED	((prof_tdata_t *)(uintptr_t)1)
+#define	PROF_TDATA_STATE_PURGATORY	((prof_tdata_t *)(uintptr_t)2)
+#define	PROF_TDATA_STATE_MAX		PROF_TDATA_STATE_PURGATORY
+
 #endif /* JEMALLOC_H_TYPES */
 /*************************************************************************=
*****/
 #ifdef JEMALLOC_H_STRUCTS
@@ -113,9 +121,19 @@
 	/* Associated backtrace. */
 	prof_bt_t		*bt;
=20
-	/* Protects cnt_merged and cnts_ql. */
+	/* Protects nlimbo, cnt_merged, and cnts_ql. */
 	malloc_mutex_t		*lock;
=20
+	/*
+	 * Number of threads that currently cause this ctx to be in a state of
+	 * limbo due to one of:
+	 *   - Initializing per thread counters associated with this ctx.
+	 *   - Preparing to destroy this ctx.
+	 * nlimbo must be 1 (single destroyer) in order to safely destroy the
+	 * ctx.
+	 */
+	unsigned		nlimbo;
+
 	/* Temporary storage for summation during dump. */
 	prof_cnt_t		cnt_summed;
=20
@@ -152,6 +170,11 @@
 	uint64_t		prng_state;
 	uint64_t		threshold;
 	uint64_t		accum;
+
+	/* State used to avoid dumping while operating on prof internals. */
+	bool			enq;
+	bool			enq_idump;
+	bool			enq_gdump;
 };
=20
 #endif /* JEMALLOC_H_STRUCTS */
@@ -169,6 +192,7 @@
 extern size_t	opt_lg_prof_sample;   /* Mean bytes between samples. */
 extern ssize_t	opt_lg_prof_interval; /* lg(prof_interval). */
 extern bool	opt_prof_gdump;       /* High-water memory dumping. */
+extern bool	opt_prof_final;       /* Final profile dumping. */
 extern bool	opt_prof_leak;        /* Dump leak summary at exit. */
 extern bool	opt_prof_accum;       /* Report cumulative bytes. */
 extern char	opt_prof_prefix[PATH_MAX + 1];
@@ -210,13 +234,13 @@
 									\
 	assert(size =3D=3D s2u(size));					\
 									\
-	prof_tdata =3D *prof_tdata_tsd_get();				\
-	if (prof_tdata =3D=3D NULL) {					\
-		prof_tdata =3D prof_tdata_init();				\
-		if (prof_tdata =3D=3D NULL) {				\
+	prof_tdata =3D prof_tdata_get();					\
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX) {	\
+		if (prof_tdata !=3D NULL)					\
+			ret =3D (prof_thr_cnt_t *)(uintptr_t)1U;		\
+		else							\
 			ret =3D NULL;					\
-			break;						\
-		}							\
+		break;							\
 	}								\
 									\
 	if (opt_prof_active =3D=3D false) {					\
@@ -259,6 +283,7 @@
 #ifndef JEMALLOC_ENABLE_INLINE
 malloc_tsd_protos(JEMALLOC_ATTR(unused), prof_tdata, prof_tdata_t *)
=20
+prof_tdata_t	*prof_tdata_get(void);
 void	prof_sample_threshold_update(prof_tdata_t *prof_tdata);
 prof_ctx_t	*prof_ctx_get(const void *ptr);
 void	prof_ctx_set(const void *ptr, prof_ctx_t *ctx);
@@ -275,6 +300,22 @@
 malloc_tsd_funcs(JEMALLOC_INLINE, prof_tdata, prof_tdata_t *, NULL,
     prof_tdata_cleanup)
=20
+JEMALLOC_INLINE prof_tdata_t *
+prof_tdata_get(void)
+{
+	prof_tdata_t *prof_tdata;
+
+	cassert(config_prof);
+
+	prof_tdata =3D *prof_tdata_tsd_get();
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX) {
+		if (prof_tdata =3D=3D NULL)
+			prof_tdata =3D prof_tdata_init();
+	}
+
+	return (prof_tdata);
+}
+
 JEMALLOC_INLINE void
 prof_sample_threshold_update(prof_tdata_t *prof_tdata)
 {
@@ -354,7 +395,8 @@
 	assert(opt_lg_prof_sample !=3D 0);
=20
 	prof_tdata =3D *prof_tdata_tsd_get();
-	assert(prof_tdata !=3D NULL);
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX)
+		return (true);
=20
 	/* Take care to avoid integer overflow. */
 	if (size >=3D prof_tdata->threshold - prof_tdata->accum) {
@@ -500,8 +542,9 @@
 	cassert(config_prof);
=20
 	if ((uintptr_t)ctx > (uintptr_t)1) {
+		prof_thr_cnt_t *tcnt;
 		assert(size =3D=3D isalloc(ptr, true));
-		prof_thr_cnt_t *tcnt =3D prof_lookup(ctx->bt);
+		tcnt =3D prof_lookup(ctx->bt);
=20
 		if (tcnt !=3D NULL) {
 			tcnt->epoch++;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/tcache.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/tcache.h	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/tcache.h	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -100,6 +100,10 @@
 /* Maximum cached size class. */
 extern size_t			tcache_maxclass;
=20
+size_t	tcache_salloc(const void *ptr);
+void	tcache_event_hard(tcache_t *tcache);
+void	*tcache_alloc_small_hard(tcache_t *tcache, tcache_bin_t *tbin,
+    size_t binind);
 void	tcache_bin_flush_small(tcache_bin_t *tbin, size_t binind, unsigned re=
m,
     tcache_t *tcache);
 void	tcache_bin_flush_large(tcache_bin_t *tbin, size_t binind, unsigned re=
m,
@@ -107,8 +111,6 @@
 void	tcache_arena_associate(tcache_t *tcache, arena_t *arena);
 void	tcache_arena_dissociate(tcache_t *tcache);
 tcache_t *tcache_create(arena_t *arena);
-void	*tcache_alloc_small_hard(tcache_t *tcache, tcache_bin_t *tbin,
-    size_t binind);
 void	tcache_destroy(tcache_t *tcache);
 void	tcache_thread_cleanup(void *arg);
 void	tcache_stats_merge(tcache_t *tcache, arena_t *arena);
@@ -131,7 +133,7 @@
 void	*tcache_alloc_easy(tcache_bin_t *tbin);
 void	*tcache_alloc_small(tcache_t *tcache, size_t size, bool zero);
 void	*tcache_alloc_large(tcache_t *tcache, size_t size, bool zero);
-void	tcache_dalloc_small(tcache_t *tcache, void *ptr);
+void	tcache_dalloc_small(tcache_t *tcache, void *ptr, size_t binind);
 void	tcache_dalloc_large(tcache_t *tcache, void *ptr, size_t size);
 #endif
=20
@@ -265,47 +267,8 @@
=20
 	tcache->ev_cnt++;
 	assert(tcache->ev_cnt <=3D TCACHE_GC_INCR);
-	if (tcache->ev_cnt =3D=3D TCACHE_GC_INCR) {
-		size_t binind =3D tcache->next_gc_bin;
-		tcache_bin_t *tbin =3D &tcache->tbins[binind];
-		tcache_bin_info_t *tbin_info =3D &tcache_bin_info[binind];
-
-		if (tbin->low_water > 0) {
-			/*
-			 * Flush (ceiling) 3/4 of the objects below the low
-			 * water mark.
-			 */
-			if (binind < NBINS) {
-				tcache_bin_flush_small(tbin, binind,
-				    tbin->ncached - tbin->low_water +
-				    (tbin->low_water >> 2), tcache);
-			} else {
-				tcache_bin_flush_large(tbin, binind,
-				    tbin->ncached - tbin->low_water +
-				    (tbin->low_water >> 2), tcache);
-			}
-			/*
-			 * Reduce fill count by 2X.  Limit lg_fill_div such that
-			 * the fill count is always at least 1.
-			 */
-			if ((tbin_info->ncached_max >> (tbin->lg_fill_div+1))
-			    >=3D 1)
-				tbin->lg_fill_div++;
-		} else if (tbin->low_water < 0) {
-			/*
-			 * Increase fill count by 2X.  Make sure lg_fill_div
-			 * stays greater than 0.
-			 */
-			if (tbin->lg_fill_div > 1)
-				tbin->lg_fill_div--;
-		}
-		tbin->low_water =3D tbin->ncached;
-
-		tcache->next_gc_bin++;
-		if (tcache->next_gc_bin =3D=3D nhbins)
-			tcache->next_gc_bin =3D 0;
-		tcache->ev_cnt =3D 0;
-	}
+	if (tcache->ev_cnt =3D=3D TCACHE_GC_INCR)
+		tcache_event_hard(tcache);
 }
=20
 JEMALLOC_INLINE void *
@@ -340,7 +303,7 @@
 		if (ret =3D=3D NULL)
 			return (NULL);
 	}
-	assert(arena_salloc(ret, false) =3D=3D arena_bin_info[binind].reg_size);
+	assert(tcache_salloc(ret) =3D=3D arena_bin_info[binind].reg_size);
=20
 	if (zero =3D=3D false) {
 		if (config_fill) {
@@ -389,13 +352,13 @@
 		if (ret =3D=3D NULL)
 			return (NULL);
 	} else {
-		if (config_prof) {
+		if (config_prof && prof_promote && size =3D=3D PAGE) {
 			arena_chunk_t *chunk =3D
 			    (arena_chunk_t *)CHUNK_ADDR2BASE(ret);
 			size_t pageind =3D (((uintptr_t)ret - (uintptr_t)chunk) >>
 			    LG_PAGE);
-			chunk->map[pageind-map_bias].bits &=3D
-			    ~CHUNK_MAP_CLASS_MASK;
+			arena_mapbits_large_binind_set(chunk, pageind,
+			    BININD_INVALID);
 		}
 		if (zero =3D=3D false) {
 			if (config_fill) {
@@ -420,29 +383,12 @@
 }
=20
 JEMALLOC_INLINE void
-tcache_dalloc_small(tcache_t *tcache, void *ptr)
+tcache_dalloc_small(tcache_t *tcache, void *ptr, size_t binind)
 {
-	arena_t *arena;
-	arena_chunk_t *chunk;
-	arena_run_t *run;
-	arena_bin_t *bin;
 	tcache_bin_t *tbin;
 	tcache_bin_info_t *tbin_info;
-	size_t pageind, binind;
-	arena_chunk_map_t *mapelm;
=20
-	assert(arena_salloc(ptr, false) <=3D SMALL_MAXCLASS);
-
-	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
-	arena =3D chunk->arena;
-	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-	mapelm =3D &chunk->map[pageind-map_bias];
-	run =3D (arena_run_t *)((uintptr_t)chunk + (uintptr_t)((pageind -
-	    (mapelm->bits >> LG_PAGE)) << LG_PAGE));
-	bin =3D run->bin;
-	binind =3D ((uintptr_t)bin - (uintptr_t)&arena->bins) /
-	    sizeof(arena_bin_t);
-	assert(binind < NBINS);
+	assert(tcache_salloc(ptr) <=3D SMALL_MAXCLASS);
=20
 	if (config_fill && opt_junk)
 		arena_dalloc_junk_small(ptr, &arena_bin_info[binind]);
@@ -468,8 +414,8 @@
 	tcache_bin_info_t *tbin_info;
=20
 	assert((size & PAGE_MASK) =3D=3D 0);
-	assert(arena_salloc(ptr, false) > SMALL_MAXCLASS);
-	assert(arena_salloc(ptr, false) <=3D tcache_maxclass);
+	assert(tcache_salloc(ptr) > SMALL_MAXCLASS);
+	assert(tcache_salloc(ptr) <=3D tcache_maxclass);
=20
 	binind =3D NBINS + (size >> LG_PAGE) - 1;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/tsd.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/tsd.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/tsd.h	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -4,11 +4,7 @@
 /* Maximum number of malloc_tsd users with cleanup functions. */
 #define	MALLOC_TSD_CLEANUPS_MAX	8
=20
-typedef struct malloc_tsd_cleanup_s malloc_tsd_cleanup_t;
-struct malloc_tsd_cleanup_s {
-	bool	(*f)(void *);
-	void	*arg;
-};
+typedef bool (*malloc_tsd_cleanup_t)(void);
=20
 /*
  * TLS/TSD-agnostic macro-based implementation of thread-specific data.  T=
here
@@ -78,6 +74,10 @@
 extern __thread a_type	a_name##_tls;					\
 extern pthread_key_t	a_name##_tsd;					\
 extern bool		a_name##_booted;
+#elif (defined(_WIN32))
+#define malloc_tsd_externs(a_name, a_type)				\
+extern DWORD		a_name##_tsd;					\
+extern bool		a_name##_booted;
 #else
 #define	malloc_tsd_externs(a_name, a_type)				\
 extern pthread_key_t	a_name##_tsd;					\
@@ -98,6 +98,10 @@
     a_name##_tls =3D a_initializer;					\
 a_attr pthread_key_t	a_name##_tsd;					\
 a_attr bool		a_name##_booted =3D false;
+#elif (defined(_WIN32))
+#define	malloc_tsd_data(a_attr, a_name, a_type, a_initializer)		\
+a_attr DWORD		a_name##_tsd;					\
+a_attr bool		a_name##_booted =3D false;
 #else
 #define	malloc_tsd_data(a_attr, a_name, a_type, a_initializer)		\
 a_attr pthread_key_t	a_name##_tsd;					\
@@ -110,13 +114,12 @@
     a_cleanup)								\
 /* Initialization/cleanup. */						\
 a_attr bool								\
-a_name##_tsd_cleanup_wrapper(void *arg)					\
+a_name##_tsd_cleanup_wrapper(void)					\
 {									\
-	bool (*cleanup)(void *) =3D arg;					\
 									\
 	if (a_name##_initialized) {					\
 		a_name##_initialized =3D false;				\
-		cleanup(&a_name##_tls);					\
+		a_cleanup(&a_name##_tls);				\
 	}								\
 	return (a_name##_initialized);					\
 }									\
@@ -126,7 +129,7 @@
 									\
 	if (a_cleanup !=3D malloc_tsd_no_cleanup) {			\
 		malloc_tsd_cleanup_register(				\
-		    &a_name##_tsd_cleanup_wrapper, a_cleanup);		\
+		    &a_name##_tsd_cleanup_wrapper);			\
 	}								\
 	a_name##_booted =3D true;						\
 	return (false);							\
@@ -187,12 +190,104 @@
 		}							\
 	}								\
 }
+#elif (defined(_WIN32))
+#define	malloc_tsd_funcs(a_attr, a_name, a_type, a_initializer,		\
+    a_cleanup)								\
+/* Data structure. */							\
+typedef struct {							\
+	bool	initialized;						\
+	a_type	val;							\
+} a_name##_tsd_wrapper_t;						\
+/* Initialization/cleanup. */						\
+a_attr bool								\
+a_name##_tsd_cleanup_wrapper(void)					\
+{									\
+	a_name##_tsd_wrapper_t *wrapper;				\
+									\
+	wrapper =3D (a_name##_tsd_wrapper_t *) TlsGetValue(a_name##_tsd);	\
+	if (wrapper =3D=3D NULL)						\
+		return (false);						\
+	if (a_cleanup !=3D malloc_tsd_no_cleanup &&			\
+	    wrapper->initialized) {					\
+		a_type val =3D wrapper->val;				\
+		a_type tsd_static_data =3D a_initializer;			\
+		wrapper->initialized =3D false;				\
+		wrapper->val =3D tsd_static_data;				\
+		a_cleanup(&val);					\
+		if (wrapper->initialized) {				\
+			/* Trigger another cleanup round. */		\
+			return (true);					\
+		}							\
+	}								\
+	malloc_tsd_dalloc(wrapper);					\
+	return (false);							\
+}									\
+a_attr bool								\
+a_name##_tsd_boot(void)							\
+{									\
+									\
+	a_name##_tsd =3D TlsAlloc();					\
+	if (a_name##_tsd =3D=3D TLS_OUT_OF_INDEXES)				\
+		return (true);						\
+	if (a_cleanup !=3D malloc_tsd_no_cleanup) {			\
+		malloc_tsd_cleanup_register(				\
+		    &a_name##_tsd_cleanup_wrapper);			\
+	}								\
+	a_name##_booted =3D true;						\
+	return (false);							\
+}									\
+/* Get/set. */								\
+a_attr a_name##_tsd_wrapper_t *						\
+a_name##_tsd_get_wrapper(void)						\
+{									\
+	a_name##_tsd_wrapper_t *wrapper =3D (a_name##_tsd_wrapper_t *)	\
+	    TlsGetValue(a_name##_tsd);					\
+									\
+	if (wrapper =3D=3D NULL) {						\
+		wrapper =3D (a_name##_tsd_wrapper_t *)			\
+		    malloc_tsd_malloc(sizeof(a_name##_tsd_wrapper_t));	\
+		if (wrapper =3D=3D NULL) {					\
+			malloc_write("<jemalloc>: Error allocating"	\
+			    " TSD for "#a_name"\n");			\
+			abort();					\
+		} else {						\
+			static a_type tsd_static_data =3D a_initializer;	\
+			wrapper->initialized =3D false;			\
+			wrapper->val =3D tsd_static_data;			\
+		}							\
+		if (!TlsSetValue(a_name##_tsd, (void *)wrapper)) {	\
+			malloc_write("<jemalloc>: Error setting"	\
+			    " TSD for "#a_name"\n");			\
+			abort();					\
+		}							\
+	}								\
+	return (wrapper);						\
+}									\
+a_attr a_type *								\
+a_name##_tsd_get(void)							\
+{									\
+	a_name##_tsd_wrapper_t *wrapper;				\
+									\
+	assert(a_name##_booted);					\
+	wrapper =3D a_name##_tsd_get_wrapper();				\
+	return (&wrapper->val);						\
+}									\
+a_attr void								\
+a_name##_tsd_set(a_type *val)						\
+{									\
+	a_name##_tsd_wrapper_t *wrapper;				\
+									\
+	assert(a_name##_booted);					\
+	wrapper =3D a_name##_tsd_get_wrapper();				\
+	wrapper->val =3D *(val);						\
+	if (a_cleanup !=3D malloc_tsd_no_cleanup)				\
+		wrapper->initialized =3D true;				\
+}
 #else
 #define	malloc_tsd_funcs(a_attr, a_name, a_type, a_initializer,		\
     a_cleanup)								\
 /* Data structure. */							\
 typedef struct {							\
-	bool	isstatic;						\
 	bool	initialized;						\
 	a_type	val;							\
 } a_name##_tsd_wrapper_t;						\
@@ -218,8 +313,7 @@
 			return;						\
 		}							\
 	}								\
-	if (wrapper->isstatic =3D=3D false)					\
-		malloc_tsd_dalloc(wrapper);				\
+	malloc_tsd_dalloc(wrapper);					\
 }									\
 a_attr bool								\
 a_name##_tsd_boot(void)							\
@@ -242,25 +336,19 @@
 		wrapper =3D (a_name##_tsd_wrapper_t *)			\
 		    malloc_tsd_malloc(sizeof(a_name##_tsd_wrapper_t));	\
 		if (wrapper =3D=3D NULL) {					\
-			static a_name##_tsd_wrapper_t			\
-			    a_name##_tsd_static_data =3D			\
-			    {true, false, a_initializer};		\
 			malloc_write("<jemalloc>: Error allocating"	\
 			    " TSD for "#a_name"\n");			\
-			if (opt_abort)					\
-				abort();				\
-			wrapper =3D &a_name##_tsd_static_data;		\
+			abort();					\
 		} else {						\
 			static a_type tsd_static_data =3D a_initializer;	\
-			wrapper->isstatic =3D false;			\
+			wrapper->initialized =3D false;			\
 			wrapper->val =3D tsd_static_data;			\
 		}							\
 		if (pthread_setspecific(a_name##_tsd,			\
 		    (void *)wrapper)) {					\
 			malloc_write("<jemalloc>: Error setting"	\
 			    " TSD for "#a_name"\n");			\
-			if (opt_abort)					\
-				abort();				\
+			abort();					\
 		}							\
 	}								\
 	return (wrapper);						\
@@ -298,7 +386,7 @@
 void	*malloc_tsd_malloc(size_t size);
 void	malloc_tsd_dalloc(void *wrapper);
 void	malloc_tsd_no_cleanup(void *);
-void	malloc_tsd_cleanup_register(bool (*f)(void *), void *arg);
+void	malloc_tsd_cleanup_register(bool (*f)(void));
 void	malloc_tsd_boot(void);
=20
 #endif /* JEMALLOC_H_EXTERNS */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/internal/util.h
--- a/head/contrib/jemalloc/include/jemalloc/internal/util.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/internal/util.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -82,10 +82,9 @@
 /*************************************************************************=
*****/
 #ifdef JEMALLOC_H_EXTERNS
=20
-extern void	(*je_malloc_message)(void *wcbopaque, const char *s);
-
-int	buferror(int errnum, char *buf, size_t buflen);
+int	buferror(char *buf, size_t buflen);
 uintmax_t	malloc_strtoumax(const char *nptr, char **endptr, int base);
+void	malloc_write(const char *s);
=20
 /*
  * malloc_vsnprintf() supports a subset of snprintf(3) that avoids floating
@@ -109,6 +108,8 @@
 #ifndef JEMALLOC_ENABLE_INLINE
 size_t	pow2_ceil(size_t x);
 void	malloc_write(const char *s);
+void	set_errno(int errnum);
+int	get_errno(void);
 #endif
=20
 #if (defined(JEMALLOC_ENABLE_INLINE) || defined(JEMALLOC_UTIL_C_))
@@ -130,15 +131,28 @@
 	return (x);
 }
=20
-/*
- * Wrapper around malloc_message() that avoids the need for
- * je_malloc_message(...) throughout the code.
- */
+/* Sets error code */
 JEMALLOC_INLINE void
-malloc_write(const char *s)
+set_errno(int errnum)
 {
=20
-	je_malloc_message(NULL, s);
+#ifdef _WIN32
+	SetLastError(errnum);
+#else
+	errno =3D errnum;
+#endif
+}
+
+/* Get last error code */
+JEMALLOC_INLINE int
+get_errno(void)
+{
+
+#ifdef _WIN32
+	return (GetLastError());
+#else
+	return (errno);
+#endif
 }
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/jemalloc.h
--- a/head/contrib/jemalloc/include/jemalloc/jemalloc.h	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/jemalloc.h	Wed Jul 25 16:21:35=
 2012 +0300
@@ -7,12 +7,12 @@
 #include <limits.h>
 #include <strings.h>
=20
-#define	JEMALLOC_VERSION "1.0.0-266-gb57d3ec571c6551231be62b7bf92c084a8c82=
91c"
-#define	JEMALLOC_VERSION_MAJOR 1
+#define	JEMALLOC_VERSION "3.0.0-0-gfc9b1dbf69f59d7ecfc4ac68da9847e017e1d04=
6"
+#define	JEMALLOC_VERSION_MAJOR 3
 #define	JEMALLOC_VERSION_MINOR 0
 #define	JEMALLOC_VERSION_BUGFIX 0
-#define	JEMALLOC_VERSION_NREV 266
-#define	JEMALLOC_VERSION_GID "b57d3ec571c6551231be62b7bf92c084a8c8291c"
+#define	JEMALLOC_VERSION_NREV 0
+#define	JEMALLOC_VERSION_GID "fc9b1dbf69f59d7ecfc4ac68da9847e017e1d046"
=20
 #include "jemalloc_defs.h"
 #include "jemalloc_FreeBSD.h"
@@ -37,35 +37,49 @@
  * namespace management, and should be omitted in application code unless
  * JEMALLOC_NO_DEMANGLE is defined (see below).
  */
-extern const char	*je_malloc_conf;
-extern void		(*je_malloc_message)(void *, const char *);
+extern JEMALLOC_EXPORT const char	*je_malloc_conf;
+extern JEMALLOC_EXPORT void		(*je_malloc_message)(void *cbopaque,
+    const char *s);
=20
-void	*je_malloc(size_t size) JEMALLOC_ATTR(malloc);
-void	*je_calloc(size_t num, size_t size) JEMALLOC_ATTR(malloc);
-int	je_posix_memalign(void **memptr, size_t alignment, size_t size)
-    JEMALLOC_ATTR(nonnull(1));
-void	*je_aligned_alloc(size_t alignment, size_t size) JEMALLOC_ATTR(malloc=
);
-void	*je_realloc(void *ptr, size_t size);
-void	je_free(void *ptr);
+JEMALLOC_EXPORT void	*je_malloc(size_t size) JEMALLOC_ATTR(malloc);
+JEMALLOC_EXPORT void	*je_calloc(size_t num, size_t size)
+    JEMALLOC_ATTR(malloc);
+JEMALLOC_EXPORT int	je_posix_memalign(void **memptr, size_t alignment,
+    size_t size) JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT void	*je_aligned_alloc(size_t alignment, size_t size)
+    JEMALLOC_ATTR(malloc);
+JEMALLOC_EXPORT void	*je_realloc(void *ptr, size_t size);
+JEMALLOC_EXPORT void	je_free(void *ptr);
=20
-size_t	je_malloc_usable_size(const void *ptr);
-void	je_malloc_stats_print(void (*write_cb)(void *, const char *),
-    void *je_cbopaque, const char *opts);
-int	je_mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp,
-    size_t newlen);
-int	je_mallctlnametomib(const char *name, size_t *mibp, size_t *miblenp);
-int	je_mallctlbymib(const size_t *mib, size_t miblen, void *oldp,
+#ifdef JEMALLOC_OVERRIDE_MEMALIGN
+JEMALLOC_EXPORT void *	je_memalign(size_t alignment, size_t size)
+    JEMALLOC_ATTR(malloc);
+#endif
+
+#ifdef JEMALLOC_OVERRIDE_VALLOC
+JEMALLOC_EXPORT void *	je_valloc(size_t size) JEMALLOC_ATTR(malloc);
+#endif
+
+JEMALLOC_EXPORT size_t	je_malloc_usable_size(const void *ptr);
+JEMALLOC_EXPORT void	je_malloc_stats_print(void (*write_cb)(void *,
+    const char *), void *je_cbopaque, const char *opts);
+JEMALLOC_EXPORT int	je_mallctl(const char *name, void *oldp,
     size_t *oldlenp, void *newp, size_t newlen);
+JEMALLOC_EXPORT int	je_mallctlnametomib(const char *name, size_t *mibp,
+    size_t *miblenp);
+JEMALLOC_EXPORT int	je_mallctlbymib(const size_t *mib, size_t miblen,
+    void *oldp, size_t *oldlenp, void *newp, size_t newlen);
=20
 #ifdef JEMALLOC_EXPERIMENTAL
-int	je_allocm(void **ptr, size_t *rsize, size_t size, int flags)
+JEMALLOC_EXPORT int	je_allocm(void **ptr, size_t *rsize, size_t size,
+    int flags) JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT int	je_rallocm(void **ptr, size_t *rsize, size_t size,
+    size_t extra, int flags) JEMALLOC_ATTR(nonnull(1));
+JEMALLOC_EXPORT int	je_sallocm(const void *ptr, size_t *rsize, int flags)
     JEMALLOC_ATTR(nonnull(1));
-int	je_rallocm(void **ptr, size_t *rsize, size_t size, size_t extra,
-    int flags) JEMALLOC_ATTR(nonnull(1));
-int	je_sallocm(const void *ptr, size_t *rsize, int flags)
+JEMALLOC_EXPORT int	je_dallocm(void *ptr, int flags)
     JEMALLOC_ATTR(nonnull(1));
-int	je_dallocm(void *ptr, int flags) JEMALLOC_ATTR(nonnull(1));
-int	je_nallocm(size_t *rsize, size_t size, int flags);
+JEMALLOC_EXPORT int	je_nallocm(size_t *rsize, size_t size, int flags);
 #endif
=20
 /*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/jemalloc_FreeBSD.h
--- a/head/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/jemalloc_FreeBSD.h	Wed Jul 25 =
16:21:35 2012 +0300
@@ -41,8 +41,12 @@
 #  define LG_SIZEOF_PTR		2
 #endif
 #ifdef __mips__
+#ifdef __mips_n64
+#  define LG_SIZEOF_PTR		3
+#else
 #  define LG_SIZEOF_PTR		2
 #endif
+#endif
 #ifdef __powerpc64__
 #  define LG_SIZEOF_PTR		3
 #elif defined(__powerpc__)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/include/jemalloc=
/jemalloc_defs.h
--- a/head/contrib/jemalloc/include/jemalloc/jemalloc_defs.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/jemalloc/include/jemalloc/jemalloc_defs.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -39,8 +39,8 @@
  * from being exported, but for static libraries, naming collisions are a =
real
  * possibility.
  */
-#define JEMALLOC_PRIVATE_NAMESPACE ""
-#define JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_pri=
vate_namespace_prefix) string_that_no_one_should_want_to_use_as_a_jemalloc_=
private_namespace_prefix
+#define JEMALLOC_PRIVATE_NAMESPACE "__jemalloc_"
+#define JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_pri=
vate_namespace_prefix) __jemalloc_##string_that_no_one_should_want_to_use_a=
s_a_jemalloc_private_namespace_prefix
=20
 /*
  * Hyper-threaded CPUs may need a special instruction inside spin loops in
@@ -105,11 +105,27 @@
 /* Defined if __attribute__((...)) syntax is supported. */
 #define JEMALLOC_HAVE_ATTR=20
 #ifdef JEMALLOC_HAVE_ATTR
-#  define JEMALLOC_CATTR(s, a) __attribute__((s))
-#  define JEMALLOC_ATTR(s) JEMALLOC_CATTR(s,)
+#  define JEMALLOC_ATTR(s) __attribute__((s))
+#  define JEMALLOC_EXPORT JEMALLOC_ATTR(visibility("default"))
+#  define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s))
+#  define JEMALLOC_SECTION(s) JEMALLOC_ATTR(section(s))
+#  define JEMALLOC_NOINLINE JEMALLOC_ATTR(noinline)
+#elif _MSC_VER
+#  define JEMALLOC_ATTR(s)
+#  ifdef DLLEXPORT
+#    define JEMALLOC_EXPORT __declspec(dllexport)
+#  else
+#    define JEMALLOC_EXPORT __declspec(dllimport)
+#  endif
+#  define JEMALLOC_ALIGNED(s) __declspec(align(s))
+#  define JEMALLOC_SECTION(s) __declspec(allocate(s))
+#  define JEMALLOC_NOINLINE __declspec(noinline)
 #else
-#  define JEMALLOC_CATTR(s, a) a
-#  define JEMALLOC_ATTR(s) JEMALLOC_CATTR(s,)
+#  define JEMALLOC_ATTR(s)
+#  define JEMALLOC_EXPORT
+#  define JEMALLOC_ALIGNED(s)
+#  define JEMALLOC_SECTION(s)
+#  define JEMALLOC_NOINLINE
 #endif
=20
 /* Defined if sbrk() is supported. */
@@ -178,12 +194,18 @@
=20
 /*
  * If defined, use munmap() to unmap freed chunks, rather than storing the=
m for
- * later reuse.  This is automatically disabled if configuration determines
- * that common sequences of mmap()/munmap() calls will cause virtual memor=
y map
- * holes.
+ * later reuse.  This is disabled by default on Linux because common seque=
nces
+ * of mmap()/munmap() calls will cause virtual memory map holes.
  */
 #define JEMALLOC_MUNMAP=20
=20
+/*
+ * If defined, use mremap(...MREMAP_FIXED...) for huge realloc().  This is
+ * disabled by default because it is Linux-specific and it will cause virt=
ual
+ * memory map holes, much like munmap(2) does.
+ */
+/* #undef JEMALLOC_MREMAP */
+
 /* TLS is used to map arenas and magazine caches to threads. */
 #define JEMALLOC_TLS=20
=20
@@ -206,9 +228,6 @@
 /* #undef JEMALLOC_ZONE */
 /* #undef JEMALLOC_ZONE_VERSION */
=20
-/* If defined, use mremap(...MREMAP_FIXED...) for huge realloc(). */
-/* #undef JEMALLOC_MREMAP_FIXED */
-
 /*
  * Methods for purging unused pages differ between operating systems.
  *
@@ -221,13 +240,6 @@
  */
 /* #undef JEMALLOC_PURGE_MADVISE_DONTNEED */
 #define JEMALLOC_PURGE_MADVISE_FREE=20
-#ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
-#  define JEMALLOC_MADV_PURGE MADV_DONTNEED
-#elif defined(JEMALLOC_PURGE_MADVISE_FREE)
-#  define JEMALLOC_MADV_PURGE MADV_FREE
-#else
-#  error "No method defined for purging unused dirty pages."
-#endif
=20
 /* sizeof(void *) =3D=3D 2^LG_SIZEOF_PTR. */
 #define LG_SIZEOF_PTR 3
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/arena.c
--- a/head/contrib/jemalloc/src/arena.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/arena.c	Wed Jul 25 16:21:35 2012 +0300
@@ -7,7 +7,7 @@
 ssize_t		opt_lg_dirty_mult =3D LG_DIRTY_MULT_DEFAULT;
 arena_bin_info_t	arena_bin_info[NBINS];
=20
-JEMALLOC_ATTR(aligned(CACHELINE))
+JEMALLOC_ALIGNED(CACHELINE)
 const uint8_t	small_size2bin[] =3D {
 #define	S2B_8(i)	i,
 #define	S2B_16(i)	S2B_8(i) S2B_8(i)
@@ -41,11 +41,13 @@
 /* Function prototypes for non-inline static functions. */
=20
 static void	arena_run_split(arena_t *arena, arena_run_t *run, size_t size,
-    bool large, bool zero);
+    bool large, size_t binind, bool zero);
 static arena_chunk_t *arena_chunk_alloc(arena_t *arena);
 static void	arena_chunk_dealloc(arena_t *arena, arena_chunk_t *chunk);
+static arena_run_t	*arena_run_alloc_helper(arena_t *arena, size_t size,
+    bool large, size_t binind, bool zero);
 static arena_run_t *arena_run_alloc(arena_t *arena, size_t size, bool larg=
e,
-    bool zero);
+    size_t binind, bool zero);
 static void	arena_purge(arena_t *arena, bool all);
 static void	arena_run_dalloc(arena_t *arena, arena_run_t *run, bool dirty);
 static void	arena_run_trim_head(arena_t *arena, arena_chunk_t *chunk,
@@ -152,7 +154,9 @@
 arena_run_reg_dalloc(arena_run_t *run, void *ptr)
 {
 	arena_chunk_t *chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(run);
-	size_t binind =3D arena_bin_index(chunk->arena, run->bin);
+	size_t pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
+	size_t mapbits =3D arena_mapbits_get(chunk, pageind);
+	size_t binind =3D arena_ptr_small_binind_get(ptr, mapbits);
 	arena_bin_info_t *bin_info =3D &arena_bin_info[binind];
 	unsigned regind =3D arena_run_regind(run, bin_info, ptr);
 	bitmap_t *bitmap =3D (bitmap_t *)((uintptr_t)run +
@@ -186,28 +190,31 @@
=20
 static void
 arena_run_split(arena_t *arena, arena_run_t *run, size_t size, bool large,
-    bool zero)
+    size_t binind, bool zero)
 {
 	arena_chunk_t *chunk;
 	size_t run_ind, total_pages, need_pages, rem_pages, i;
 	size_t flag_dirty;
 	arena_avail_tree_t *runs_avail;
=20
+	assert((large && binind =3D=3D BININD_INVALID) || (large =3D=3D false && =
binind
+	    !=3D BININD_INVALID));
+
 	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(run);
 	run_ind =3D (unsigned)(((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE);
-	flag_dirty =3D chunk->map[run_ind-map_bias].bits & CHUNK_MAP_DIRTY;
+	flag_dirty =3D arena_mapbits_dirty_get(chunk, run_ind);
 	runs_avail =3D (flag_dirty !=3D 0) ? &arena->runs_avail_dirty :
 	    &arena->runs_avail_clean;
-	total_pages =3D (chunk->map[run_ind-map_bias].bits & ~PAGE_MASK) >>
+	total_pages =3D arena_mapbits_unallocated_size_get(chunk, run_ind) >>
 	    LG_PAGE;
-	assert((chunk->map[run_ind+total_pages-1-map_bias].bits &
-	    CHUNK_MAP_DIRTY) =3D=3D flag_dirty);
+	assert(arena_mapbits_dirty_get(chunk, run_ind+total_pages-1) =3D=3D
+	    flag_dirty);
 	need_pages =3D (size >> LG_PAGE);
 	assert(need_pages > 0);
 	assert(need_pages <=3D total_pages);
 	rem_pages =3D total_pages - need_pages;
=20
-	arena_avail_tree_remove(runs_avail, &chunk->map[run_ind-map_bias]);
+	arena_avail_tree_remove(runs_avail, arena_mapp_get(chunk, run_ind));
 	if (config_stats) {
 		/*
 		 * Update stats_cactive if nactive is crossing a chunk
@@ -224,22 +231,23 @@
 	/* Keep track of trailing unused pages for later use. */
 	if (rem_pages > 0) {
 		if (flag_dirty !=3D 0) {
-			chunk->map[run_ind+need_pages-map_bias].bits =3D
-			    (rem_pages << LG_PAGE) | CHUNK_MAP_DIRTY;
-			chunk->map[run_ind+total_pages-1-map_bias].bits =3D
-			    (rem_pages << LG_PAGE) | CHUNK_MAP_DIRTY;
+			arena_mapbits_unallocated_set(chunk, run_ind+need_pages,
+			    (rem_pages << LG_PAGE), CHUNK_MAP_DIRTY);
+			arena_mapbits_unallocated_set(chunk,
+			    run_ind+total_pages-1, (rem_pages << LG_PAGE),
+			    CHUNK_MAP_DIRTY);
 		} else {
-			chunk->map[run_ind+need_pages-map_bias].bits =3D
-			    (rem_pages << LG_PAGE) |
-			    (chunk->map[run_ind+need_pages-map_bias].bits &
-			    CHUNK_MAP_UNZEROED);
-			chunk->map[run_ind+total_pages-1-map_bias].bits =3D
-			    (rem_pages << LG_PAGE) |
-			    (chunk->map[run_ind+total_pages-1-map_bias].bits &
-			    CHUNK_MAP_UNZEROED);
+			arena_mapbits_unallocated_set(chunk, run_ind+need_pages,
+			    (rem_pages << LG_PAGE),
+			    arena_mapbits_unzeroed_get(chunk,
+			    run_ind+need_pages));
+			arena_mapbits_unallocated_set(chunk,
+			    run_ind+total_pages-1, (rem_pages << LG_PAGE),
+			    arena_mapbits_unzeroed_get(chunk,
+			    run_ind+total_pages-1));
 		}
-		arena_avail_tree_insert(runs_avail,
-		    &chunk->map[run_ind+need_pages-map_bias]);
+		arena_avail_tree_insert(runs_avail, arena_mapp_get(chunk,
+		    run_ind+need_pages));
 	}
=20
 	/* Update dirty page accounting. */
@@ -260,8 +268,8 @@
 				 * zeroed (i.e. never before touched).
 				 */
 				for (i =3D 0; i < need_pages; i++) {
-					if ((chunk->map[run_ind+i-map_bias].bits
-					    & CHUNK_MAP_UNZEROED) !=3D 0) {
+					if (arena_mapbits_unzeroed_get(chunk,
+					    run_ind+i) !=3D 0) {
 						VALGRIND_MAKE_MEM_UNDEFINED(
 						    (void *)((uintptr_t)
 						    chunk + ((run_ind+i) <<
@@ -295,10 +303,9 @@
 		 * Set the last element first, in case the run only contains one
 		 * page (i.e. both statements set the same element).
 		 */
-		chunk->map[run_ind+need_pages-1-map_bias].bits =3D
-		    CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED | flag_dirty;
-		chunk->map[run_ind-map_bias].bits =3D size | flag_dirty |
-		    CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+		arena_mapbits_large_set(chunk, run_ind+need_pages-1, 0,
+		    flag_dirty);
+		arena_mapbits_large_set(chunk, run_ind, size, flag_dirty);
 	} else {
 		assert(zero =3D=3D false);
 		/*
@@ -306,34 +313,26 @@
 		 * small run, so that arena_dalloc_bin_run() has the ability to
 		 * conditionally trim clean pages.
 		 */
-		chunk->map[run_ind-map_bias].bits =3D
-		    (chunk->map[run_ind-map_bias].bits & CHUNK_MAP_UNZEROED) |
-		    CHUNK_MAP_ALLOCATED | flag_dirty;
+		arena_mapbits_small_set(chunk, run_ind, 0, binind, flag_dirty);
 		/*
 		 * The first page will always be dirtied during small run
 		 * initialization, so a validation failure here would not
 		 * actually cause an observable failure.
 		 */
 		if (config_debug && flag_dirty =3D=3D 0 &&
-		    (chunk->map[run_ind-map_bias].bits & CHUNK_MAP_UNZEROED)
-		    =3D=3D 0)
+		    arena_mapbits_unzeroed_get(chunk, run_ind) =3D=3D 0)
 			arena_chunk_validate_zeroed(chunk, run_ind);
 		for (i =3D 1; i < need_pages - 1; i++) {
-			chunk->map[run_ind+i-map_bias].bits =3D (i << LG_PAGE)
-			    | (chunk->map[run_ind+i-map_bias].bits &
-			    CHUNK_MAP_UNZEROED) | CHUNK_MAP_ALLOCATED;
+			arena_mapbits_small_set(chunk, run_ind+i, i, binind, 0);
 			if (config_debug && flag_dirty =3D=3D 0 &&
-			    (chunk->map[run_ind+i-map_bias].bits &
-			    CHUNK_MAP_UNZEROED) =3D=3D 0)
+			    arena_mapbits_unzeroed_get(chunk, run_ind+i) =3D=3D 0)
 				arena_chunk_validate_zeroed(chunk, run_ind+i);
 		}
-		chunk->map[run_ind+need_pages-1-map_bias].bits =3D ((need_pages
-		    - 1) << LG_PAGE) |
-		    (chunk->map[run_ind+need_pages-1-map_bias].bits &
-		    CHUNK_MAP_UNZEROED) | CHUNK_MAP_ALLOCATED | flag_dirty;
+		arena_mapbits_small_set(chunk, run_ind+need_pages-1,
+		    need_pages-1, binind, flag_dirty);
 		if (config_debug && flag_dirty =3D=3D 0 &&
-		    (chunk->map[run_ind+need_pages-1-map_bias].bits &
-		    CHUNK_MAP_UNZEROED) =3D=3D 0) {
+		    arena_mapbits_unzeroed_get(chunk, run_ind+need_pages-1) =3D=3D
+		    0) {
 			arena_chunk_validate_zeroed(chunk,
 			    run_ind+need_pages-1);
 		}
@@ -352,18 +351,22 @@
 		chunk =3D arena->spare;
 		arena->spare =3D NULL;
=20
+		assert(arena_mapbits_allocated_get(chunk, map_bias) =3D=3D 0);
+		assert(arena_mapbits_allocated_get(chunk, chunk_npages-1) =3D=3D 0);
+		assert(arena_mapbits_unallocated_size_get(chunk, map_bias) =3D=3D
+		    arena_maxclass);
+		assert(arena_mapbits_unallocated_size_get(chunk,
+		    chunk_npages-1) =3D=3D arena_maxclass);
+		assert(arena_mapbits_dirty_get(chunk, map_bias) =3D=3D
+		    arena_mapbits_dirty_get(chunk, chunk_npages-1));
+
 		/* Insert the run into the appropriate runs_avail_* tree. */
-		if ((chunk->map[0].bits & CHUNK_MAP_DIRTY) =3D=3D 0)
+		if (arena_mapbits_dirty_get(chunk, map_bias) =3D=3D 0)
 			runs_avail =3D &arena->runs_avail_clean;
 		else
 			runs_avail =3D &arena->runs_avail_dirty;
-		assert((chunk->map[0].bits & ~PAGE_MASK) =3D=3D arena_maxclass);
-		assert((chunk->map[chunk_npages-1-map_bias].bits & ~PAGE_MASK)
-		    =3D=3D arena_maxclass);
-		assert((chunk->map[0].bits & CHUNK_MAP_DIRTY) =3D=3D
-		    (chunk->map[chunk_npages-1-map_bias].bits &
-		    CHUNK_MAP_DIRTY));
-		arena_avail_tree_insert(runs_avail, &chunk->map[0]);
+		arena_avail_tree_insert(runs_avail, arena_mapp_get(chunk,
+		    map_bias));
 	} else {
 		bool zero;
 		size_t unzeroed;
@@ -394,24 +397,27 @@
 		 * chunk.
 		 */
 		unzeroed =3D zero ? 0 : CHUNK_MAP_UNZEROED;
-		chunk->map[0].bits =3D arena_maxclass | unzeroed;
+		arena_mapbits_unallocated_set(chunk, map_bias, arena_maxclass,
+		    unzeroed);
 		/*
 		 * There is no need to initialize the internal page map entries
 		 * unless the chunk is not zeroed.
 		 */
 		if (zero =3D=3D false) {
 			for (i =3D map_bias+1; i < chunk_npages-1; i++)
-				chunk->map[i-map_bias].bits =3D unzeroed;
+				arena_mapbits_unzeroed_set(chunk, i, unzeroed);
 		} else if (config_debug) {
-			for (i =3D map_bias+1; i < chunk_npages-1; i++)
-				assert(chunk->map[i-map_bias].bits =3D=3D unzeroed);
+			for (i =3D map_bias+1; i < chunk_npages-1; i++) {
+				assert(arena_mapbits_unzeroed_get(chunk, i) =3D=3D
+				    unzeroed);
+			}
 		}
-		chunk->map[chunk_npages-1-map_bias].bits =3D arena_maxclass |
-		    unzeroed;
+		arena_mapbits_unallocated_set(chunk, chunk_npages-1,
+		    arena_maxclass, unzeroed);
=20
 		/* Insert the run into the runs_avail_clean tree. */
 		arena_avail_tree_insert(&arena->runs_avail_clean,
-		    &chunk->map[0]);
+		    arena_mapp_get(chunk, map_bias));
 	}
=20
 	return (chunk);
@@ -422,15 +428,24 @@
 {
 	arena_avail_tree_t *runs_avail;
=20
+	assert(arena_mapbits_allocated_get(chunk, map_bias) =3D=3D 0);
+	assert(arena_mapbits_allocated_get(chunk, chunk_npages-1) =3D=3D 0);
+	assert(arena_mapbits_unallocated_size_get(chunk, map_bias) =3D=3D
+	    arena_maxclass);
+	assert(arena_mapbits_unallocated_size_get(chunk, chunk_npages-1) =3D=3D
+	    arena_maxclass);
+	assert(arena_mapbits_dirty_get(chunk, map_bias) =3D=3D
+	    arena_mapbits_dirty_get(chunk, chunk_npages-1));
+
 	/*
 	 * Remove run from the appropriate runs_avail_* tree, so that the arena
 	 * does not use it.
 	 */
-	if ((chunk->map[0].bits & CHUNK_MAP_DIRTY) =3D=3D 0)
+	if (arena_mapbits_dirty_get(chunk, map_bias) =3D=3D 0)
 		runs_avail =3D &arena->runs_avail_clean;
 	else
 		runs_avail =3D &arena->runs_avail_dirty;
-	arena_avail_tree_remove(runs_avail, &chunk->map[0]);
+	arena_avail_tree_remove(runs_avail, arena_mapp_get(chunk, map_bias));
=20
 	if (arena->spare !=3D NULL) {
 		arena_chunk_t *spare =3D arena->spare;
@@ -451,16 +466,12 @@
 }
=20
 static arena_run_t *
-arena_run_alloc(arena_t *arena, size_t size, bool large, bool zero)
+arena_run_alloc_helper(arena_t *arena, size_t size, bool large, size_t bin=
ind,
+    bool zero)
 {
-	arena_chunk_t *chunk;
 	arena_run_t *run;
 	arena_chunk_map_t *mapelm, key;
=20
-	assert(size <=3D arena_maxclass);
-	assert((size & PAGE_MASK) =3D=3D 0);
-
-	/* Search the arena's chunks for the lowest best fit. */
 	key.bits =3D size | CHUNK_MAP_KEY;
 	mapelm =3D arena_avail_tree_nsearch(&arena->runs_avail_dirty, &key);
 	if (mapelm !=3D NULL) {
@@ -471,7 +482,7 @@
=20
 		run =3D (arena_run_t *)((uintptr_t)run_chunk + (pageind <<
 		    LG_PAGE));
-		arena_run_split(arena, run, size, large, zero);
+		arena_run_split(arena, run, size, large, binind, zero);
 		return (run);
 	}
 	mapelm =3D arena_avail_tree_nsearch(&arena->runs_avail_clean, &key);
@@ -483,17 +494,37 @@
=20
 		run =3D (arena_run_t *)((uintptr_t)run_chunk + (pageind <<
 		    LG_PAGE));
-		arena_run_split(arena, run, size, large, zero);
+		arena_run_split(arena, run, size, large, binind, zero);
 		return (run);
 	}
=20
+	return (NULL);
+}
+
+static arena_run_t *
+arena_run_alloc(arena_t *arena, size_t size, bool large, size_t binind,
+    bool zero)
+{
+	arena_chunk_t *chunk;
+	arena_run_t *run;
+
+	assert(size <=3D arena_maxclass);
+	assert((size & PAGE_MASK) =3D=3D 0);
+	assert((large && binind =3D=3D BININD_INVALID) || (large =3D=3D false && =
binind
+	    !=3D BININD_INVALID));
+
+	/* Search the arena's chunks for the lowest best fit. */
+	run =3D arena_run_alloc_helper(arena, size, large, binind, zero);
+	if (run !=3D NULL)
+		return (run);
+
 	/*
 	 * No usable runs.  Create a new chunk from which to allocate the run.
 	 */
 	chunk =3D arena_chunk_alloc(arena);
 	if (chunk !=3D NULL) {
 		run =3D (arena_run_t *)((uintptr_t)chunk + (map_bias << LG_PAGE));
-		arena_run_split(arena, run, size, large, zero);
+		arena_run_split(arena, run, size, large, binind, zero);
 		return (run);
 	}
=20
@@ -502,32 +533,7 @@
 	 * sufficient memory available while this one dropped arena->lock in
 	 * arena_chunk_alloc(), so search one more time.
 	 */
-	mapelm =3D arena_avail_tree_nsearch(&arena->runs_avail_dirty, &key);
-	if (mapelm !=3D NULL) {
-		arena_chunk_t *run_chunk =3D CHUNK_ADDR2BASE(mapelm);
-		size_t pageind =3D (((uintptr_t)mapelm -
-		    (uintptr_t)run_chunk->map) / sizeof(arena_chunk_map_t))
-		    + map_bias;
-
-		run =3D (arena_run_t *)((uintptr_t)run_chunk + (pageind <<
-		    LG_PAGE));
-		arena_run_split(arena, run, size, large, zero);
-		return (run);
-	}
-	mapelm =3D arena_avail_tree_nsearch(&arena->runs_avail_clean, &key);
-	if (mapelm !=3D NULL) {
-		arena_chunk_t *run_chunk =3D CHUNK_ADDR2BASE(mapelm);
-		size_t pageind =3D (((uintptr_t)mapelm -
-		    (uintptr_t)run_chunk->map) / sizeof(arena_chunk_map_t))
-		    + map_bias;
-
-		run =3D (arena_run_t *)((uintptr_t)run_chunk + (pageind <<
-		    LG_PAGE));
-		arena_run_split(arena, run, size, large, zero);
-		return (run);
-	}
-
-	return (NULL);
+	return (arena_run_alloc_helper(arena, size, large, binind, zero));
 }
=20
 static inline void
@@ -581,40 +587,46 @@
 	 * run.
 	 */
 	if (chunk =3D=3D arena->spare) {
-		assert((chunk->map[0].bits & CHUNK_MAP_DIRTY) !=3D 0);
+		assert(arena_mapbits_dirty_get(chunk, map_bias) !=3D 0);
+		assert(arena_mapbits_dirty_get(chunk, chunk_npages-1) !=3D 0);
+
 		arena_chunk_alloc(arena);
 	}
=20
 	/* Temporarily allocate all free dirty runs within chunk. */
 	for (pageind =3D map_bias; pageind < chunk_npages;) {
-		mapelm =3D &chunk->map[pageind-map_bias];
-		if ((mapelm->bits & CHUNK_MAP_ALLOCATED) =3D=3D 0) {
+		mapelm =3D arena_mapp_get(chunk, pageind);
+		if (arena_mapbits_allocated_get(chunk, pageind) =3D=3D 0) {
 			size_t npages;
=20
-			npages =3D mapelm->bits >> LG_PAGE;
+			npages =3D arena_mapbits_unallocated_size_get(chunk,
+			    pageind) >> LG_PAGE;
 			assert(pageind + npages <=3D chunk_npages);
-			if (mapelm->bits & CHUNK_MAP_DIRTY) {
+			assert(arena_mapbits_dirty_get(chunk, pageind) =3D=3D
+			    arena_mapbits_dirty_get(chunk, pageind+npages-1));
+			if (arena_mapbits_dirty_get(chunk, pageind) !=3D 0) {
 				size_t i;
=20
 				arena_avail_tree_remove(
 				    &arena->runs_avail_dirty, mapelm);
=20
-				mapelm->bits =3D (npages << LG_PAGE) |
-				    flag_unzeroed | CHUNK_MAP_LARGE |
-				    CHUNK_MAP_ALLOCATED;
+				arena_mapbits_unzeroed_set(chunk, pageind,
+				    flag_unzeroed);
+				arena_mapbits_large_set(chunk, pageind,
+				    (npages << LG_PAGE), 0);
 				/*
 				 * Update internal elements in the page map, so
 				 * that CHUNK_MAP_UNZEROED is properly set.
 				 */
 				for (i =3D 1; i < npages - 1; i++) {
-					chunk->map[pageind+i-map_bias].bits =3D
-					    flag_unzeroed;
+					arena_mapbits_unzeroed_set(chunk,
+					    pageind+i, flag_unzeroed);
 				}
 				if (npages > 1) {
-					chunk->map[
-					    pageind+npages-1-map_bias].bits =3D
-					    flag_unzeroed | CHUNK_MAP_LARGE |
-					    CHUNK_MAP_ALLOCATED;
+					arena_mapbits_unzeroed_set(chunk,
+					    pageind+npages-1, flag_unzeroed);
+					arena_mapbits_large_set(chunk,
+					    pageind+npages-1, 0, 0);
 				}
=20
 				if (config_stats) {
@@ -639,17 +651,19 @@
 			pageind +=3D npages;
 		} else {
 			/* Skip allocated run. */
-			if (mapelm->bits & CHUNK_MAP_LARGE)
-				pageind +=3D mapelm->bits >> LG_PAGE;
+			if (arena_mapbits_large_get(chunk, pageind))
+				pageind +=3D arena_mapbits_large_size_get(chunk,
+				    pageind) >> LG_PAGE;
 			else {
+				size_t binind;
+				arena_bin_info_t *bin_info;
 				arena_run_t *run =3D (arena_run_t *)((uintptr_t)
 				    chunk + (uintptr_t)(pageind << LG_PAGE));
=20
-				assert((mapelm->bits >> LG_PAGE) =3D=3D 0);
-				size_t binind =3D arena_bin_index(arena,
-				    run->bin);
-				arena_bin_info_t *bin_info =3D
-				    &arena_bin_info[binind];
+				assert(arena_mapbits_small_runind_get(chunk,
+				    pageind) =3D=3D 0);
+				binind =3D arena_bin_index(arena, run->bin);
+				bin_info =3D &arena_bin_info[binind];
 				pageind +=3D bin_info->run_size >> LG_PAGE;
 			}
 		}
@@ -671,15 +685,16 @@
 	ql_foreach(mapelm, &mapelms, u.ql_link) {
 		size_t pageind =3D (((uintptr_t)mapelm - (uintptr_t)chunk->map) /
 		    sizeof(arena_chunk_map_t)) + map_bias;
-		size_t npages =3D mapelm->bits >> LG_PAGE;
+		size_t npages =3D arena_mapbits_large_size_get(chunk, pageind) >>
+		    LG_PAGE;
=20
 		assert(pageind + npages <=3D chunk_npages);
 		assert(ndirty >=3D npages);
 		if (config_debug)
 			ndirty -=3D npages;
=20
-		madvise((void *)((uintptr_t)chunk + (pageind << LG_PAGE)),
-		    (npages << LG_PAGE), JEMALLOC_MADV_PURGE);
+		pages_purge((void *)((uintptr_t)chunk + (pageind << LG_PAGE)),
+		    (npages << LG_PAGE));
 		if (config_stats)
 			nmadvise++;
 	}
@@ -808,15 +823,11 @@
 	run_ind =3D (size_t)(((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE);
 	assert(run_ind >=3D map_bias);
 	assert(run_ind < chunk_npages);
-	if ((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_LARGE) !=3D 0) {
-		size =3D chunk->map[run_ind-map_bias].bits & ~PAGE_MASK;
+	if (arena_mapbits_large_get(chunk, run_ind) !=3D 0) {
+		size =3D arena_mapbits_large_size_get(chunk, run_ind);
 		assert(size =3D=3D PAGE ||
-		    (chunk->map[run_ind+(size>>LG_PAGE)-1-map_bias].bits &
-		    ~PAGE_MASK) =3D=3D 0);
-		assert((chunk->map[run_ind+(size>>LG_PAGE)-1-map_bias].bits &
-		    CHUNK_MAP_LARGE) !=3D 0);
-		assert((chunk->map[run_ind+(size>>LG_PAGE)-1-map_bias].bits &
-		    CHUNK_MAP_ALLOCATED) !=3D 0);
+		    arena_mapbits_large_size_get(chunk,
+		    run_ind+(size>>LG_PAGE)-1) =3D=3D 0);
 	} else {
 		size_t binind =3D arena_bin_index(arena, run->bin);
 		arena_bin_info_t *bin_info =3D &arena_bin_info[binind];
@@ -839,7 +850,9 @@
 	 * The run is dirty if the caller claims to have dirtied it, as well as
 	 * if it was already dirty before being allocated.
 	 */
-	if ((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_DIRTY) !=3D 0)
+	assert(arena_mapbits_dirty_get(chunk, run_ind) =3D=3D
+	    arena_mapbits_dirty_get(chunk, run_ind+run_pages-1));
+	if (arena_mapbits_dirty_get(chunk, run_ind) !=3D 0)
 		dirty =3D true;
 	flag_dirty =3D dirty ? CHUNK_MAP_DIRTY : 0;
 	runs_avail =3D dirty ? &arena->runs_avail_dirty :
@@ -847,58 +860,52 @@
=20
 	/* Mark pages as unallocated in the chunk map. */
 	if (dirty) {
-		chunk->map[run_ind-map_bias].bits =3D size | CHUNK_MAP_DIRTY;
-		chunk->map[run_ind+run_pages-1-map_bias].bits =3D size |
-		    CHUNK_MAP_DIRTY;
+		arena_mapbits_unallocated_set(chunk, run_ind, size,
+		    CHUNK_MAP_DIRTY);
+		arena_mapbits_unallocated_set(chunk, run_ind+run_pages-1, size,
+		    CHUNK_MAP_DIRTY);
=20
 		chunk->ndirty +=3D run_pages;
 		arena->ndirty +=3D run_pages;
 	} else {
-		chunk->map[run_ind-map_bias].bits =3D size |
-		    (chunk->map[run_ind-map_bias].bits & CHUNK_MAP_UNZEROED);
-		chunk->map[run_ind+run_pages-1-map_bias].bits =3D size |
-		    (chunk->map[run_ind+run_pages-1-map_bias].bits &
-		    CHUNK_MAP_UNZEROED);
+		arena_mapbits_unallocated_set(chunk, run_ind, size,
+		    arena_mapbits_unzeroed_get(chunk, run_ind));
+		arena_mapbits_unallocated_set(chunk, run_ind+run_pages-1, size,
+		    arena_mapbits_unzeroed_get(chunk, run_ind+run_pages-1));
 	}
=20
 	/* Try to coalesce forward. */
 	if (run_ind + run_pages < chunk_npages &&
-	    (chunk->map[run_ind+run_pages-map_bias].bits & CHUNK_MAP_ALLOCATED)
-	    =3D=3D 0 && (chunk->map[run_ind+run_pages-map_bias].bits &
-	    CHUNK_MAP_DIRTY) =3D=3D flag_dirty) {
-		size_t nrun_size =3D chunk->map[run_ind+run_pages-map_bias].bits &
-		    ~PAGE_MASK;
+	    arena_mapbits_allocated_get(chunk, run_ind+run_pages) =3D=3D 0 &&
+	    arena_mapbits_dirty_get(chunk, run_ind+run_pages) =3D=3D flag_dirty) {
+		size_t nrun_size =3D arena_mapbits_unallocated_size_get(chunk,
+		    run_ind+run_pages);
 		size_t nrun_pages =3D nrun_size >> LG_PAGE;
=20
 		/*
 		 * Remove successor from runs_avail; the coalesced run is
 		 * inserted later.
 		 */
-		assert((chunk->map[run_ind+run_pages+nrun_pages-1-map_bias].bits
-		    & ~PAGE_MASK) =3D=3D nrun_size);
-		assert((chunk->map[run_ind+run_pages+nrun_pages-1-map_bias].bits
-		    & CHUNK_MAP_ALLOCATED) =3D=3D 0);
-		assert((chunk->map[run_ind+run_pages+nrun_pages-1-map_bias].bits
-		    & CHUNK_MAP_DIRTY) =3D=3D flag_dirty);
+		assert(arena_mapbits_unallocated_size_get(chunk,
+		    run_ind+run_pages+nrun_pages-1) =3D=3D nrun_size);
+		assert(arena_mapbits_dirty_get(chunk,
+		    run_ind+run_pages+nrun_pages-1) =3D=3D flag_dirty);
 		arena_avail_tree_remove(runs_avail,
-		    &chunk->map[run_ind+run_pages-map_bias]);
+		    arena_mapp_get(chunk, run_ind+run_pages));
=20
 		size +=3D nrun_size;
 		run_pages +=3D nrun_pages;
=20
-		chunk->map[run_ind-map_bias].bits =3D size |
-		    (chunk->map[run_ind-map_bias].bits & CHUNK_MAP_FLAGS_MASK);
-		chunk->map[run_ind+run_pages-1-map_bias].bits =3D size |
-		    (chunk->map[run_ind+run_pages-1-map_bias].bits &
-		    CHUNK_MAP_FLAGS_MASK);
+		arena_mapbits_unallocated_size_set(chunk, run_ind, size);
+		arena_mapbits_unallocated_size_set(chunk, run_ind+run_pages-1,
+		    size);
 	}
=20
 	/* Try to coalesce backward. */
-	if (run_ind > map_bias && (chunk->map[run_ind-1-map_bias].bits &
-	    CHUNK_MAP_ALLOCATED) =3D=3D 0 && (chunk->map[run_ind-1-map_bias].bits=
 &
-	    CHUNK_MAP_DIRTY) =3D=3D flag_dirty) {
-		size_t prun_size =3D chunk->map[run_ind-1-map_bias].bits &
-		    ~PAGE_MASK;
+	if (run_ind > map_bias && arena_mapbits_allocated_get(chunk, run_ind-1)
+	    =3D=3D 0 && arena_mapbits_dirty_get(chunk, run_ind-1) =3D=3D flag_dir=
ty) {
+		size_t prun_size =3D arena_mapbits_unallocated_size_get(chunk,
+		    run_ind-1);
 		size_t prun_pages =3D prun_size >> LG_PAGE;
=20
 		run_ind -=3D prun_pages;
@@ -907,31 +914,26 @@
 		 * Remove predecessor from runs_avail; the coalesced run is
 		 * inserted later.
 		 */
-		assert((chunk->map[run_ind-map_bias].bits & ~PAGE_MASK)
-		    =3D=3D prun_size);
-		assert((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_ALLOCATED)
-		    =3D=3D 0);
-		assert((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_DIRTY)
-		    =3D=3D flag_dirty);
-		arena_avail_tree_remove(runs_avail,
-		    &chunk->map[run_ind-map_bias]);
+		assert(arena_mapbits_unallocated_size_get(chunk, run_ind) =3D=3D
+		    prun_size);
+		assert(arena_mapbits_dirty_get(chunk, run_ind) =3D=3D flag_dirty);
+		arena_avail_tree_remove(runs_avail, arena_mapp_get(chunk,
+		    run_ind));
=20
 		size +=3D prun_size;
 		run_pages +=3D prun_pages;
=20
-		chunk->map[run_ind-map_bias].bits =3D size |
-		    (chunk->map[run_ind-map_bias].bits & CHUNK_MAP_FLAGS_MASK);
-		chunk->map[run_ind+run_pages-1-map_bias].bits =3D size |
-		    (chunk->map[run_ind+run_pages-1-map_bias].bits &
-		    CHUNK_MAP_FLAGS_MASK);
+		arena_mapbits_unallocated_size_set(chunk, run_ind, size);
+		arena_mapbits_unallocated_size_set(chunk, run_ind+run_pages-1,
+		    size);
 	}
=20
 	/* Insert into runs_avail, now that coalescing is complete. */
-	assert((chunk->map[run_ind-map_bias].bits & ~PAGE_MASK) =3D=3D
-	    (chunk->map[run_ind+run_pages-1-map_bias].bits & ~PAGE_MASK));
-	assert((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_DIRTY) =3D=3D
-	    (chunk->map[run_ind+run_pages-1-map_bias].bits & CHUNK_MAP_DIRTY));
-	arena_avail_tree_insert(runs_avail, &chunk->map[run_ind-map_bias]);
+	assert(arena_mapbits_unallocated_size_get(chunk, run_ind) =3D=3D
+	    arena_mapbits_unallocated_size_get(chunk, run_ind+run_pages-1));
+	assert(arena_mapbits_dirty_get(chunk, run_ind) =3D=3D
+	    arena_mapbits_dirty_get(chunk, run_ind+run_pages-1));
+	arena_avail_tree_insert(runs_avail, arena_mapp_get(chunk, run_ind));
=20
 	if (dirty) {
 		/*
@@ -945,14 +947,12 @@
 		}
 	}
=20
-	/*
-	 * Deallocate chunk if it is now completely unused.  The bit
-	 * manipulation checks whether the first run is unallocated and extends
-	 * to the end of the chunk.
-	 */
-	if ((chunk->map[0].bits & (~PAGE_MASK | CHUNK_MAP_ALLOCATED)) =3D=3D
-	    arena_maxclass)
+	/* Deallocate chunk if it is now completely unused. */
+	if (size =3D=3D arena_maxclass) {
+		assert(run_ind =3D=3D map_bias);
+		assert(run_pages =3D=3D (arena_maxclass >> LG_PAGE));
 		arena_chunk_dealloc(arena, chunk);
+	}
=20
 	/*
 	 * It is okay to do dirty page processing here even if the chunk was
@@ -971,7 +971,7 @@
 {
 	size_t pageind =3D ((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE;
 	size_t head_npages =3D (oldsize - newsize) >> LG_PAGE;
-	size_t flag_dirty =3D chunk->map[pageind-map_bias].bits & CHUNK_MAP_DIRTY;
+	size_t flag_dirty =3D arena_mapbits_dirty_get(chunk, pageind);
=20
 	assert(oldsize > newsize);
=20
@@ -980,29 +980,19 @@
 	 * leading run as separately allocated.  Set the last element of each
 	 * run first, in case of single-page runs.
 	 */
-	assert((chunk->map[pageind-map_bias].bits & CHUNK_MAP_LARGE) !=3D 0);
-	assert((chunk->map[pageind-map_bias].bits & CHUNK_MAP_ALLOCATED) !=3D 0);
-	chunk->map[pageind+head_npages-1-map_bias].bits =3D flag_dirty |
-	    (chunk->map[pageind+head_npages-1-map_bias].bits &
-	    CHUNK_MAP_UNZEROED) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
-	chunk->map[pageind-map_bias].bits =3D (oldsize - newsize)
-	    | flag_dirty | (chunk->map[pageind-map_bias].bits &
-	    CHUNK_MAP_UNZEROED) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+	assert(arena_mapbits_large_size_get(chunk, pageind) =3D=3D oldsize);
+	arena_mapbits_large_set(chunk, pageind+head_npages-1, 0, flag_dirty);
+	arena_mapbits_large_set(chunk, pageind, oldsize-newsize, flag_dirty);
=20
 	if (config_debug) {
 		UNUSED size_t tail_npages =3D newsize >> LG_PAGE;
-		assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias]
-		    .bits & ~PAGE_MASK) =3D=3D 0);
-		assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias]
-		    .bits & CHUNK_MAP_DIRTY) =3D=3D flag_dirty);
-		assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias]
-		    .bits & CHUNK_MAP_LARGE) !=3D 0);
-		assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias]
-		    .bits & CHUNK_MAP_ALLOCATED) !=3D 0);
+		assert(arena_mapbits_large_size_get(chunk,
+		    pageind+head_npages+tail_npages-1) =3D=3D 0);
+		assert(arena_mapbits_dirty_get(chunk,
+		    pageind+head_npages+tail_npages-1) =3D=3D flag_dirty);
 	}
-	chunk->map[pageind+head_npages-map_bias].bits =3D newsize | flag_dirty |
-	    (chunk->map[pageind+head_npages-map_bias].bits &
-	    CHUNK_MAP_FLAGS_MASK) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+	arena_mapbits_large_set(chunk, pageind+head_npages, newsize,
+	    flag_dirty);
=20
 	arena_run_dalloc(arena, run, false);
 }
@@ -1013,9 +1003,7 @@
 {
 	size_t pageind =3D ((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE;
 	size_t head_npages =3D newsize >> LG_PAGE;
-	size_t tail_npages =3D (oldsize - newsize) >> LG_PAGE;
-	size_t flag_dirty =3D chunk->map[pageind-map_bias].bits &
-	    CHUNK_MAP_DIRTY;
+	size_t flag_dirty =3D arena_mapbits_dirty_get(chunk, pageind);
=20
 	assert(oldsize > newsize);
=20
@@ -1024,28 +1012,19 @@
 	 * trailing run as separately allocated.  Set the last element of each
 	 * run first, in case of single-page runs.
 	 */
-	assert((chunk->map[pageind-map_bias].bits & CHUNK_MAP_LARGE) !=3D 0);
-	assert((chunk->map[pageind-map_bias].bits & CHUNK_MAP_ALLOCATED) !=3D 0);
-	chunk->map[pageind+head_npages-1-map_bias].bits =3D flag_dirty |
-	    (chunk->map[pageind+head_npages-1-map_bias].bits &
-	    CHUNK_MAP_UNZEROED) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
-	chunk->map[pageind-map_bias].bits =3D newsize | flag_dirty |
-	    (chunk->map[pageind-map_bias].bits & CHUNK_MAP_UNZEROED) |
-	    CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+	assert(arena_mapbits_large_size_get(chunk, pageind) =3D=3D oldsize);
+	arena_mapbits_large_set(chunk, pageind+head_npages-1, 0, flag_dirty);
+	arena_mapbits_large_set(chunk, pageind, newsize, flag_dirty);
=20
-	assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias].bits &
-	    ~PAGE_MASK) =3D=3D 0);
-	assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias].bits &
-	    CHUNK_MAP_LARGE) !=3D 0);
-	assert((chunk->map[pageind+head_npages+tail_npages-1-map_bias].bits &
-	    CHUNK_MAP_ALLOCATED) !=3D 0);
-	chunk->map[pageind+head_npages+tail_npages-1-map_bias].bits =3D
-	    flag_dirty |
-	    (chunk->map[pageind+head_npages+tail_npages-1-map_bias].bits &
-	    CHUNK_MAP_UNZEROED) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
-	chunk->map[pageind+head_npages-map_bias].bits =3D (oldsize - newsize) |
-	    flag_dirty | (chunk->map[pageind+head_npages-map_bias].bits &
-	    CHUNK_MAP_UNZEROED) | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+	if (config_debug) {
+		UNUSED size_t tail_npages =3D (oldsize - newsize) >> LG_PAGE;
+		assert(arena_mapbits_large_size_get(chunk,
+		    pageind+head_npages+tail_npages-1) =3D=3D 0);
+		assert(arena_mapbits_dirty_get(chunk,
+		    pageind+head_npages+tail_npages-1) =3D=3D flag_dirty);
+	}
+	arena_mapbits_large_set(chunk, pageind+head_npages, oldsize-newsize,
+	    flag_dirty);
=20
 	arena_run_dalloc(arena, (arena_run_t *)((uintptr_t)run + newsize),
 	    dirty);
@@ -1058,12 +1037,13 @@
 	if (mapelm !=3D NULL) {
 		arena_chunk_t *chunk;
 		size_t pageind;
+		arena_run_t *run;
=20
 		chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(mapelm);
 		pageind =3D ((((uintptr_t)mapelm - (uintptr_t)chunk->map) /
 		    sizeof(arena_chunk_map_t))) + map_bias;
-		arena_run_t *run =3D (arena_run_t *)((uintptr_t)chunk +
-		    (uintptr_t)((pageind - (mapelm->bits >> LG_PAGE)) <<
+		run =3D (arena_run_t *)((uintptr_t)chunk + (uintptr_t)((pageind -
+		    arena_mapbits_small_runind_get(chunk, pageind)) <<
 		    LG_PAGE));
 		return (run);
 	}
@@ -1076,7 +1056,7 @@
 {
 	arena_chunk_t *chunk =3D CHUNK_ADDR2BASE(run);
 	size_t pageind =3D ((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE;
-	arena_chunk_map_t *mapelm =3D &chunk->map[pageind-map_bias];
+	arena_chunk_map_t *mapelm =3D arena_mapp_get(chunk, pageind);
=20
 	assert(arena_run_tree_search(&bin->runs, mapelm) =3D=3D NULL);
=20
@@ -1088,7 +1068,7 @@
 {
 	arena_chunk_t *chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(run);
 	size_t pageind =3D ((uintptr_t)run - (uintptr_t)chunk) >> LG_PAGE;
-	arena_chunk_map_t *mapelm =3D &chunk->map[pageind-map_bias];
+	arena_chunk_map_t *mapelm =3D arena_mapp_get(chunk, pageind);
=20
 	assert(arena_run_tree_search(&bin->runs, mapelm) !=3D NULL);
=20
@@ -1127,12 +1107,14 @@
 	malloc_mutex_unlock(&bin->lock);
 	/******************************/
 	malloc_mutex_lock(&arena->lock);
-	run =3D arena_run_alloc(arena, bin_info->run_size, false, false);
+	run =3D arena_run_alloc(arena, bin_info->run_size, false, binind, false);
 	if (run !=3D NULL) {
 		bitmap_t *bitmap =3D (bitmap_t *)((uintptr_t)run +
 		    (uintptr_t)bin_info->bitmap_offset);
=20
 		/* Initialize run internals. */
+		VALGRIND_MAKE_MEM_UNDEFINED(run, bin_info->reg0_offset -
+		    bin_info->redzone_size);
 		run->bin =3D bin;
 		run->nextind =3D 0;
 		run->nfree =3D bin_info->nregs;
@@ -1215,7 +1197,9 @@
 arena_prof_accum(arena_t *arena, uint64_t accumbytes)
 {
=20
-	if (prof_interval !=3D 0) {
+	cassert(config_prof);
+
+	if (config_prof && prof_interval !=3D 0) {
 		arena->prof_accumbytes +=3D accumbytes;
 		if (arena->prof_accumbytes >=3D prof_interval) {
 			prof_idump();
@@ -1381,7 +1365,7 @@
 	/* Large allocation. */
 	size =3D PAGE_CEILING(size);
 	malloc_mutex_lock(&arena->lock);
-	ret =3D (void *)arena_run_alloc(arena, size, true, zero);
+	ret =3D (void *)arena_run_alloc(arena, size, true, BININD_INVALID, zero);
 	if (ret =3D=3D NULL) {
 		malloc_mutex_unlock(&arena->lock);
 		return (NULL);
@@ -1425,7 +1409,7 @@
 	alloc_size =3D size + alignment - PAGE;
=20
 	malloc_mutex_lock(&arena->lock);
-	run =3D arena_run_alloc(arena, alloc_size, true, zero);
+	run =3D arena_run_alloc(arena, alloc_size, true, BININD_INVALID, zero);
 	if (run =3D=3D NULL) {
 		malloc_mutex_unlock(&arena->lock);
 		return (NULL);
@@ -1465,53 +1449,13 @@
 	return (ret);
 }
=20
-/* Return the size of the allocation pointed to by ptr. */
-size_t
-arena_salloc(const void *ptr, bool demote)
-{
-	size_t ret;
-	arena_chunk_t *chunk;
-	size_t pageind, mapbits;
-
-	assert(ptr !=3D NULL);
-	assert(CHUNK_ADDR2BASE(ptr) !=3D ptr);
-
-	chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
-	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-	mapbits =3D chunk->map[pageind-map_bias].bits;
-	assert((mapbits & CHUNK_MAP_ALLOCATED) !=3D 0);
-	if ((mapbits & CHUNK_MAP_LARGE) =3D=3D 0) {
-		arena_run_t *run =3D (arena_run_t *)((uintptr_t)chunk +
-		    (uintptr_t)((pageind - (mapbits >> LG_PAGE)) << LG_PAGE));
-		size_t binind =3D arena_bin_index(chunk->arena, run->bin);
-		arena_bin_info_t *bin_info =3D &arena_bin_info[binind];
-		assert(((uintptr_t)ptr - ((uintptr_t)run +
-		    (uintptr_t)bin_info->reg0_offset)) % bin_info->reg_interval
-		    =3D=3D 0);
-		ret =3D bin_info->reg_size;
-	} else {
-		assert(((uintptr_t)ptr & PAGE_MASK) =3D=3D 0);
-		ret =3D mapbits & ~PAGE_MASK;
-		if (demote && prof_promote && ret =3D=3D PAGE && (mapbits &
-		    CHUNK_MAP_CLASS_MASK) !=3D 0) {
-			size_t binind =3D ((mapbits & CHUNK_MAP_CLASS_MASK) >>
-			    CHUNK_MAP_CLASS_SHIFT) - 1;
-			assert(binind < NBINS);
-			ret =3D arena_bin_info[binind].reg_size;
-		}
-		assert(ret !=3D 0);
-	}
-
-	return (ret);
-}
-
 void
 arena_prof_promoted(const void *ptr, size_t size)
 {
 	arena_chunk_t *chunk;
 	size_t pageind, binind;
=20
-	assert(config_prof);
+	cassert(config_prof);
 	assert(ptr !=3D NULL);
 	assert(CHUNK_ADDR2BASE(ptr) !=3D ptr);
 	assert(isalloc(ptr, false) =3D=3D PAGE);
@@ -1522,8 +1466,7 @@
 	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
 	binind =3D SMALL_SIZE2BIN(size);
 	assert(binind < NBINS);
-	chunk->map[pageind-map_bias].bits =3D (chunk->map[pageind-map_bias].bits &
-	    ~CHUNK_MAP_CLASS_MASK) | ((binind+1) << CHUNK_MAP_CLASS_SHIFT);
+	arena_mapbits_large_binind_set(chunk, pageind, binind);
=20
 	assert(isalloc(ptr, false) =3D=3D PAGE);
 	assert(isalloc(ptr, true) =3D=3D size);
@@ -1561,8 +1504,9 @@
 	size_t npages, run_ind, past;
=20
 	assert(run !=3D bin->runcur);
-	assert(arena_run_tree_search(&bin->runs, &chunk->map[
-	    (((uintptr_t)run-(uintptr_t)chunk)>>LG_PAGE)-map_bias]) =3D=3D NULL);
+	assert(arena_run_tree_search(&bin->runs,
+	    arena_mapp_get(chunk, ((uintptr_t)run-(uintptr_t)chunk)>>LG_PAGE))
+	    =3D=3D NULL);
=20
 	binind =3D arena_bin_index(chunk->arena, run->bin);
 	bin_info =3D &arena_bin_info[binind];
@@ -1582,18 +1526,14 @@
 	 * trim the clean pages before deallocating the dirty portion of the
 	 * run.
 	 */
-	if ((chunk->map[run_ind-map_bias].bits & CHUNK_MAP_DIRTY) =3D=3D 0 && past
-	    - run_ind < npages) {
-		/*
-		 * Trim clean pages.  Convert to large run beforehand.  Set the
-		 * last map element first, in case this is a one-page run.
-		 */
-		chunk->map[run_ind+npages-1-map_bias].bits =3D CHUNK_MAP_LARGE |
-		    (chunk->map[run_ind+npages-1-map_bias].bits &
-		    CHUNK_MAP_FLAGS_MASK);
-		chunk->map[run_ind-map_bias].bits =3D bin_info->run_size |
-		    CHUNK_MAP_LARGE | (chunk->map[run_ind-map_bias].bits &
-		    CHUNK_MAP_FLAGS_MASK);
+	assert(arena_mapbits_dirty_get(chunk, run_ind) =3D=3D
+	    arena_mapbits_dirty_get(chunk, run_ind+npages-1));
+	if (arena_mapbits_dirty_get(chunk, run_ind) =3D=3D 0 && past - run_ind <
+	    npages) {
+		/* Trim clean pages.  Convert to large run beforehand. */
+		assert(npages > 0);
+		arena_mapbits_large_set(chunk, run_ind, bin_info->run_size, 0);
+		arena_mapbits_large_set(chunk, run_ind+npages-1, 0, 0);
 		arena_run_trim_tail(arena, chunk, run, (npages << LG_PAGE),
 		    ((past - run_ind) << LG_PAGE), false);
 		/* npages =3D past - run_ind; */
@@ -1628,20 +1568,21 @@
 }
=20
 void
-arena_dalloc_bin(arena_t *arena, arena_chunk_t *chunk, void *ptr,
+arena_dalloc_bin_locked(arena_t *arena, arena_chunk_t *chunk, void *ptr,
     arena_chunk_map_t *mapelm)
 {
 	size_t pageind;
 	arena_run_t *run;
 	arena_bin_t *bin;
-	size_t size;
+	arena_bin_info_t *bin_info;
+	size_t size, binind;
=20
 	pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
 	run =3D (arena_run_t *)((uintptr_t)chunk + (uintptr_t)((pageind -
-	    (mapelm->bits >> LG_PAGE)) << LG_PAGE));
+	    arena_mapbits_small_runind_get(chunk, pageind)) << LG_PAGE));
 	bin =3D run->bin;
-	size_t binind =3D arena_bin_index(arena, bin);
-	arena_bin_info_t *bin_info =3D &arena_bin_info[binind];
+	binind =3D arena_ptr_small_binind_get(ptr, mapelm->bits);
+	bin_info =3D &arena_bin_info[binind];
 	if (config_fill || config_stats)
 		size =3D bin_info->reg_size;
=20
@@ -1662,6 +1603,35 @@
 }
=20
 void
+arena_dalloc_bin(arena_t *arena, arena_chunk_t *chunk, void *ptr,
+    size_t pageind, arena_chunk_map_t *mapelm)
+{
+	arena_run_t *run;
+	arena_bin_t *bin;
+
+	run =3D (arena_run_t *)((uintptr_t)chunk + (uintptr_t)((pageind -
+	    arena_mapbits_small_runind_get(chunk, pageind)) << LG_PAGE));
+	bin =3D run->bin;
+	malloc_mutex_lock(&bin->lock);
+	arena_dalloc_bin_locked(arena, chunk, ptr, mapelm);
+	malloc_mutex_unlock(&bin->lock);
+}
+
+void
+arena_dalloc_small(arena_t *arena, arena_chunk_t *chunk, void *ptr,
+    size_t pageind)
+{
+	arena_chunk_map_t *mapelm;
+
+	if (config_debug) {
+		/* arena_ptr_small_binind_get() does extra sanity checking. */
+		assert(arena_ptr_small_binind_get(ptr, arena_mapbits_get(chunk,
+		    pageind)) !=3D BININD_INVALID);
+	}
+	mapelm =3D arena_mapp_get(chunk, pageind);
+	arena_dalloc_bin(arena, chunk, ptr, pageind, mapelm);
+}
+void
 arena_stats_merge(arena_t *arena, size_t *nactive, size_t *ndirty,
     arena_stats_t *astats, malloc_bin_stats_t *bstats,
     malloc_large_stats_t *lstats)
@@ -1709,12 +1679,12 @@
 }
=20
 void
-arena_dalloc_large(arena_t *arena, arena_chunk_t *chunk, void *ptr)
+arena_dalloc_large_locked(arena_t *arena, arena_chunk_t *chunk, void *ptr)
 {
=20
 	if (config_fill || config_stats) {
 		size_t pageind =3D ((uintptr_t)ptr - (uintptr_t)chunk) >> LG_PAGE;
-		size_t size =3D chunk->map[pageind-map_bias].bits & ~PAGE_MASK;
+		size_t size =3D arena_mapbits_large_size_get(chunk, pageind);
=20
 		if (config_fill && config_stats && opt_junk)
 			memset(ptr, 0x5a, size);
@@ -1729,6 +1699,15 @@
 	arena_run_dalloc(arena, (arena_run_t *)ptr, true);
 }
=20
+void
+arena_dalloc_large(arena_t *arena, arena_chunk_t *chunk, void *ptr)
+{
+
+	malloc_mutex_lock(&arena->lock);
+	arena_dalloc_large_locked(arena, chunk, ptr);
+	malloc_mutex_unlock(&arena->lock);
+}
+
 static void
 arena_ralloc_large_shrink(arena_t *arena, arena_chunk_t *chunk, void *ptr,
     size_t oldsize, size_t size)
@@ -1767,16 +1746,15 @@
 	size_t npages =3D oldsize >> LG_PAGE;
 	size_t followsize;
=20
-	assert(oldsize =3D=3D (chunk->map[pageind-map_bias].bits & ~PAGE_MASK));
+	assert(oldsize =3D=3D arena_mapbits_large_size_get(chunk, pageind));
=20
 	/* Try to extend the run. */
 	assert(size + extra > oldsize);
 	malloc_mutex_lock(&arena->lock);
 	if (pageind + npages < chunk_npages &&
-	    (chunk->map[pageind+npages-map_bias].bits
-	    & CHUNK_MAP_ALLOCATED) =3D=3D 0 && (followsize =3D
-	    chunk->map[pageind+npages-map_bias].bits & ~PAGE_MASK) >=3D size -
-	    oldsize) {
+	    arena_mapbits_allocated_get(chunk, pageind+npages) =3D=3D 0 &&
+	    (followsize =3D arena_mapbits_unallocated_size_get(chunk,
+	    pageind+npages)) >=3D size - oldsize) {
 		/*
 		 * The next run is available and sufficiently large.  Split the
 		 * following run, then merge the first part with the existing
@@ -1786,7 +1764,8 @@
 		size_t splitsize =3D (oldsize + followsize <=3D size + extra)
 		    ? followsize : size + extra - oldsize;
 		arena_run_split(arena, (arena_run_t *)((uintptr_t)chunk +
-		    ((pageind+npages) << LG_PAGE)), splitsize, true, zero);
+		    ((pageind+npages) << LG_PAGE)), splitsize, true,
+		    BININD_INVALID, zero);
=20
 		size =3D oldsize + splitsize;
 		npages =3D size >> LG_PAGE;
@@ -1799,29 +1778,22 @@
 		 * arena_run_dalloc() with the dirty argument set to false
 		 * (which is when dirty flag consistency would really matter).
 		 */
-		flag_dirty =3D (chunk->map[pageind-map_bias].bits &
-		    CHUNK_MAP_DIRTY) |
-		    (chunk->map[pageind+npages-1-map_bias].bits &
-		    CHUNK_MAP_DIRTY);
-		chunk->map[pageind-map_bias].bits =3D size | flag_dirty
-		    | CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
-		chunk->map[pageind+npages-1-map_bias].bits =3D flag_dirty |
-		    CHUNK_MAP_LARGE | CHUNK_MAP_ALLOCATED;
+		flag_dirty =3D arena_mapbits_dirty_get(chunk, pageind) |
+		    arena_mapbits_dirty_get(chunk, pageind+npages-1);
+		arena_mapbits_large_set(chunk, pageind, size, flag_dirty);
+		arena_mapbits_large_set(chunk, pageind+npages-1, 0, flag_dirty);
=20
 		if (config_stats) {
 			arena->stats.ndalloc_large++;
 			arena->stats.allocated_large -=3D oldsize;
-			arena->stats.lstats[(oldsize >> LG_PAGE)
-			    - 1].ndalloc++;
-			arena->stats.lstats[(oldsize >> LG_PAGE)
-			    - 1].curruns--;
+			arena->stats.lstats[(oldsize >> LG_PAGE) - 1].ndalloc++;
+			arena->stats.lstats[(oldsize >> LG_PAGE) - 1].curruns--;
=20
 			arena->stats.nmalloc_large++;
 			arena->stats.nrequests_large++;
 			arena->stats.allocated_large +=3D size;
 			arena->stats.lstats[(size >> LG_PAGE) - 1].nmalloc++;
-			arena->stats.lstats[(size >> LG_PAGE)
-			    - 1].nrequests++;
+			arena->stats.lstats[(size >> LG_PAGE) - 1].nrequests++;
 			arena->stats.lstats[(size >> LG_PAGE) - 1].curruns++;
 		}
 		malloc_mutex_unlock(&arena->lock);
@@ -1964,6 +1936,7 @@
 	 * expectation that the extra bytes will be reliably preserved.
 	 */
 	copysize =3D (size < oldsize) ? size : oldsize;
+	VALGRIND_MAKE_MEM_UNDEFINED(ret, copysize);
 	memcpy(ret, ptr, copysize);
 	iqalloc(ptr);
 	return (ret);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/chunk.c
--- a/head/contrib/jemalloc/src/chunk.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/chunk.c	Wed Jul 25 16:21:35 2012 +0300
@@ -30,19 +30,30 @@
 /*************************************************************************=
*****/
 /* Function prototypes for non-inline static functions. */
=20
-static void	*chunk_recycle(size_t size, size_t alignment, bool *zero);
+static void	*chunk_recycle(size_t size, size_t alignment, bool base,
+    bool *zero);
 static void	chunk_record(void *chunk, size_t size);
=20
 /*************************************************************************=
*****/
=20
 static void *
-chunk_recycle(size_t size, size_t alignment, bool *zero)
+chunk_recycle(size_t size, size_t alignment, bool base, bool *zero)
 {
 	void *ret;
 	extent_node_t *node;
 	extent_node_t key;
 	size_t alloc_size, leadsize, trailsize;
=20
+	if (base) {
+		/*
+		 * This function may need to call base_node_{,de}alloc(), but
+		 * the current chunk allocation request is on behalf of the
+		 * base allocator.  Avoid deadlock (and if that weren't an
+		 * issue, potential for infinite recursion) by returning NULL.
+		 */
+		return (NULL);
+	}
+
 	alloc_size =3D size + alignment - chunksize;
 	/* Beware size_t wrap-around. */
 	if (alloc_size < size)
@@ -57,8 +68,8 @@
 	}
 	leadsize =3D ALIGNMENT_CEILING((uintptr_t)node->addr, alignment) -
 	    (uintptr_t)node->addr;
-	assert(alloc_size >=3D leadsize + size);
-	trailsize =3D alloc_size - leadsize - size;
+	assert(node->size >=3D leadsize + size);
+	trailsize =3D node->size - leadsize - size;
 	ret =3D (void *)((uintptr_t)node->addr + leadsize);
 	/* Remove node from the tree. */
 	extent_tree_szad_remove(&chunks_szad, node);
@@ -98,7 +109,10 @@
=20
 	if (node !=3D NULL)
 		base_node_dealloc(node);
-#ifdef JEMALLOC_PURGE_MADVISE_FREE
+#ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
+	/* Pages are zeroed as a side effect of pages_purge(). */
+	*zero =3D true;
+#else
 	if (*zero) {
 		VALGRIND_MAKE_MEM_UNDEFINED(ret, size);
 		memset(ret, 0, size);
@@ -120,21 +134,22 @@
=20
 	assert(size !=3D 0);
 	assert((size & chunksize_mask) =3D=3D 0);
+	assert(alignment !=3D 0);
 	assert((alignment & chunksize_mask) =3D=3D 0);
=20
-	ret =3D chunk_recycle(size, alignment, zero);
+	ret =3D chunk_recycle(size, alignment, base, zero);
 	if (ret !=3D NULL)
 		goto label_return;
+
+	ret =3D chunk_alloc_mmap(size, alignment, zero);
+	if (ret !=3D NULL)
+		goto label_return;
+
 	if (config_dss) {
 		ret =3D chunk_alloc_dss(size, alignment, zero);
 		if (ret !=3D NULL)
 			goto label_return;
 	}
-	ret =3D chunk_alloc_mmap(size, alignment);
-	if (ret !=3D NULL) {
-		*zero =3D true;
-		goto label_return;
-	}
=20
 	/* All strategies for allocation failed. */
 	ret =3D NULL;
@@ -161,7 +176,14 @@
 		if (config_prof && opt_prof && opt_prof_gdump && gdump)
 			prof_gdump();
 	}
+	if (config_debug && *zero && ret !=3D NULL) {
+		size_t i;
+		size_t *p =3D (size_t *)(uintptr_t)ret;
=20
+		VALGRIND_MAKE_MEM_DEFINED(ret, size);
+		for (i =3D 0; i < size / sizeof(size_t); i++)
+			assert(p[i] =3D=3D 0);
+	}
 	assert(CHUNK_ADDR2BASE(ret) =3D=3D ret);
 	return (ret);
 }
@@ -171,52 +193,50 @@
 {
 	extent_node_t *xnode, *node, *prev, key;
=20
-	madvise(chunk, size, JEMALLOC_MADV_PURGE);
+	pages_purge(chunk, size);
=20
-	xnode =3D NULL;
+	/*
+	 * Allocate a node before acquiring chunks_mtx even though it might not
+	 * be needed, because base_node_alloc() may cause a new base chunk to
+	 * be allocated, which could cause deadlock if chunks_mtx were already
+	 * held.
+	 */
+	xnode =3D base_node_alloc();
+
 	malloc_mutex_lock(&chunks_mtx);
-	while (true) {
-		key.addr =3D (void *)((uintptr_t)chunk + size);
-		node =3D extent_tree_ad_nsearch(&chunks_ad, &key);
-		/* Try to coalesce forward. */
-		if (node !=3D NULL && node->addr =3D=3D key.addr) {
+	key.addr =3D (void *)((uintptr_t)chunk + size);
+	node =3D extent_tree_ad_nsearch(&chunks_ad, &key);
+	/* Try to coalesce forward. */
+	if (node !=3D NULL && node->addr =3D=3D key.addr) {
+		/*
+		 * Coalesce chunk with the following address range.  This does
+		 * not change the position within chunks_ad, so only
+		 * remove/insert from/into chunks_szad.
+		 */
+		extent_tree_szad_remove(&chunks_szad, node);
+		node->addr =3D chunk;
+		node->size +=3D size;
+		extent_tree_szad_insert(&chunks_szad, node);
+		if (xnode !=3D NULL)
+			base_node_dealloc(xnode);
+	} else {
+		/* Coalescing forward failed, so insert a new node. */
+		if (xnode =3D=3D NULL) {
 			/*
-			 * Coalesce chunk with the following address range.
-			 * This does not change the position within chunks_ad,
-			 * so only remove/insert from/into chunks_szad.
-			 */
-			extent_tree_szad_remove(&chunks_szad, node);
-			node->addr =3D chunk;
-			node->size +=3D size;
-			extent_tree_szad_insert(&chunks_szad, node);
-			break;
-		} else if (xnode =3D=3D NULL) {
-			/*
-			 * It is possible that base_node_alloc() will cause a
-			 * new base chunk to be allocated, so take care not to
-			 * deadlock on chunks_mtx, and recover if another thread
-			 * deallocates an adjacent chunk while this one is busy
-			 * allocating xnode.
+			 * base_node_alloc() failed, which is an exceedingly
+			 * unlikely failure.  Leak chunk; its pages have
+			 * already been purged, so this is only a virtual
+			 * memory leak.
 			 */
 			malloc_mutex_unlock(&chunks_mtx);
-			xnode =3D base_node_alloc();
-			if (xnode =3D=3D NULL)
-				return;
-			malloc_mutex_lock(&chunks_mtx);
-		} else {
-			/* Coalescing forward failed, so insert a new node. */
-			node =3D xnode;
-			xnode =3D NULL;
-			node->addr =3D chunk;
-			node->size =3D size;
-			extent_tree_ad_insert(&chunks_ad, node);
-			extent_tree_szad_insert(&chunks_szad, node);
-			break;
+			return;
 		}
+		node =3D xnode;
+		node->addr =3D chunk;
+		node->size =3D size;
+		extent_tree_ad_insert(&chunks_ad, node);
+		extent_tree_szad_insert(&chunks_szad, node);
 	}
-	/* Discard xnode if it ended up unused due to a race. */
-	if (xnode !=3D NULL)
-		base_node_dealloc(xnode);
=20
 	/* Try to coalesce backward. */
 	prev =3D extent_tree_ad_prev(&chunks_ad, node);
@@ -258,14 +278,14 @@
 	}
=20
 	if (unmap) {
-		if (chunk_dealloc_mmap(chunk, size) =3D=3D false)
-			return;
-		chunk_record(chunk, size);
+		if ((config_dss && chunk_in_dss(chunk)) ||
+		    chunk_dealloc_mmap(chunk, size))
+			chunk_record(chunk, size);
 	}
 }
=20
 bool
-chunk_boot0(void)
+chunk_boot(void)
 {
=20
 	/* Set variables according to the value of opt_lg_chunk. */
@@ -292,13 +312,3 @@
=20
 	return (false);
 }
-
-bool
-chunk_boot1(void)
-{
-
-	if (chunk_mmap_boot())
-		return (true);
-
-	return (false);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/chunk_dss.c
--- a/head/contrib/jemalloc/src/chunk_dss.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/chunk_dss.c	Wed Jul 25 16:21:35 2012 +0300
@@ -89,7 +89,10 @@
 				malloc_mutex_unlock(&dss_mtx);
 				if (cpad_size !=3D 0)
 					chunk_dealloc(cpad, cpad_size, true);
-				*zero =3D true;
+				if (*zero) {
+					VALGRIND_MAKE_MEM_UNDEFINED(ret, size);
+					memset(ret, 0, size);
+				}
 				return (ret);
 			}
 		} while (dss_prev !=3D (void *)-1);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/chunk_mmap.c
--- a/head/contrib/jemalloc/src/chunk_mmap.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/chunk_mmap.c	Wed Jul 25 16:21:35 2012 +0300
@@ -2,23 +2,12 @@
 #include "jemalloc/internal/jemalloc_internal.h"
=20
 /*************************************************************************=
*****/
-/* Data. */
-
-/*
- * Used by chunk_alloc_mmap() to decide whether to attempt the fast path a=
nd
- * potentially avoid some system calls.
- */
-malloc_tsd_data(static, mmap_unaligned, bool, false)
-malloc_tsd_funcs(JEMALLOC_INLINE, mmap_unaligned, bool, false,
-    malloc_tsd_no_cleanup)
-
-/*************************************************************************=
*****/
 /* Function prototypes for non-inline static functions. */
=20
 static void	*pages_map(void *addr, size_t size);
 static void	pages_unmap(void *addr, size_t size);
 static void	*chunk_alloc_mmap_slow(size_t size, size_t alignment,
-    bool unaligned);
+    bool *zero);
=20
 /*************************************************************************=
*****/
=20
@@ -27,6 +16,16 @@
 {
 	void *ret;
=20
+	assert(size !=3D 0);
+
+#ifdef _WIN32
+	/*
+	 * If VirtualAlloc can't allocate at the given address when one is
+	 * given, it fails and returns NULL.
+	 */
+	ret =3D VirtualAlloc(addr, size, MEM_COMMIT | MEM_RESERVE,
+	    PAGE_READWRITE);
+#else
 	/*
 	 * We don't use MAP_FIXED here, because it can cause the *replacement*
 	 * of existing mappings, and we only want to create new mappings.
@@ -44,7 +43,7 @@
 		if (munmap(ret, size) =3D=3D -1) {
 			char buf[BUFERROR_BUF];
=20
-			buferror(errno, buf, sizeof(buf));
+			buferror(buf, sizeof(buf));
 			malloc_printf("<jemalloc: Error in munmap(): %s\n",
 			    buf);
 			if (opt_abort)
@@ -52,7 +51,7 @@
 		}
 		ret =3D NULL;
 	}
-
+#endif
 	assert(ret =3D=3D NULL || (addr =3D=3D NULL && ret !=3D addr)
 	    || (addr !=3D NULL && ret =3D=3D addr));
 	return (ret);
@@ -62,119 +61,133 @@
 pages_unmap(void *addr, size_t size)
 {
=20
-	if (munmap(addr, size) =3D=3D -1) {
+#ifdef _WIN32
+	if (VirtualFree(addr, 0, MEM_RELEASE) =3D=3D 0)
+#else
+	if (munmap(addr, size) =3D=3D -1)
+#endif
+	{
 		char buf[BUFERROR_BUF];
=20
-		buferror(errno, buf, sizeof(buf));
-		malloc_printf("<jemalloc>: Error in munmap(): %s\n", buf);
+		buferror(buf, sizeof(buf));
+		malloc_printf("<jemalloc>: Error in "
+#ifdef _WIN32
+		              "VirtualFree"
+#else
+		              "munmap"
+#endif
+		              "(): %s\n", buf);
 		if (opt_abort)
 			abort();
 	}
 }
=20
 static void *
-chunk_alloc_mmap_slow(size_t size, size_t alignment, bool unaligned)
+pages_trim(void *addr, size_t alloc_size, size_t leadsize, size_t size)
+{
+	void *ret =3D (void *)((uintptr_t)addr + leadsize);
+
+	assert(alloc_size >=3D leadsize + size);
+#ifdef _WIN32
+	{
+		void *new_addr;
+
+		pages_unmap(addr, alloc_size);
+		new_addr =3D pages_map(ret, size);
+		if (new_addr =3D=3D ret)
+			return (ret);
+		if (new_addr)
+			pages_unmap(new_addr, size);
+		return (NULL);
+	}
+#else
+	{
+		size_t trailsize =3D alloc_size - leadsize - size;
+
+		if (leadsize !=3D 0)
+			pages_unmap(addr, leadsize);
+		if (trailsize !=3D 0)
+			pages_unmap((void *)((uintptr_t)ret + size), trailsize);
+		return (ret);
+	}
+#endif
+}
+
+void
+pages_purge(void *addr, size_t length)
+{
+
+#ifdef _WIN32
+	VirtualAlloc(addr, length, MEM_RESET, PAGE_READWRITE);
+#else
+#  ifdef JEMALLOC_PURGE_MADVISE_DONTNEED
+#    define JEMALLOC_MADV_PURGE MADV_DONTNEED
+#  elif defined(JEMALLOC_PURGE_MADVISE_FREE)
+#    define JEMALLOC_MADV_PURGE MADV_FREE
+#  else
+#    error "No method defined for purging unused dirty pages."
+#  endif
+	madvise(addr, length, JEMALLOC_MADV_PURGE);
+#endif
+}
+
+static void *
+chunk_alloc_mmap_slow(size_t size, size_t alignment, bool *zero)
 {
 	void *ret, *pages;
-	size_t alloc_size, leadsize, trailsize;
+	size_t alloc_size, leadsize;
=20
 	alloc_size =3D size + alignment - PAGE;
 	/* Beware size_t wrap-around. */
 	if (alloc_size < size)
 		return (NULL);
-	pages =3D pages_map(NULL, alloc_size);
-	if (pages =3D=3D NULL)
-		return (NULL);
-	leadsize =3D ALIGNMENT_CEILING((uintptr_t)pages, alignment) -
-	    (uintptr_t)pages;
-	assert(alloc_size >=3D leadsize + size);
-	trailsize =3D alloc_size - leadsize - size;
-	ret =3D (void *)((uintptr_t)pages + leadsize);
-	if (leadsize !=3D 0) {
-		/* Note that mmap() returned an unaligned mapping. */
-		unaligned =3D true;
-		pages_unmap(pages, leadsize);
-	}
-	if (trailsize !=3D 0)
-		pages_unmap((void *)((uintptr_t)ret + size), trailsize);
+	do {
+		pages =3D pages_map(NULL, alloc_size);
+		if (pages =3D=3D NULL)
+			return (NULL);
+		leadsize =3D ALIGNMENT_CEILING((uintptr_t)pages, alignment) -
+		    (uintptr_t)pages;
+		ret =3D pages_trim(pages, alloc_size, leadsize, size);
+	} while (ret =3D=3D NULL);
=20
-	/*
-	 * If mmap() returned an aligned mapping, reset mmap_unaligned so that
-	 * the next chunk_alloc_mmap() execution tries the fast allocation
-	 * method.
-	 */
-	if (unaligned =3D=3D false && mmap_unaligned_booted) {
-		bool mu =3D false;
-		mmap_unaligned_tsd_set(&mu);
-	}
-
+	assert(ret !=3D NULL);
+	*zero =3D true;
 	return (ret);
 }
=20
 void *
-chunk_alloc_mmap(size_t size, size_t alignment)
+chunk_alloc_mmap(size_t size, size_t alignment, bool *zero)
 {
 	void *ret;
+	size_t offset;
=20
 	/*
 	 * Ideally, there would be a way to specify alignment to mmap() (like
 	 * NetBSD has), but in the absence of such a feature, we have to work
 	 * hard to efficiently create aligned mappings.  The reliable, but
 	 * slow method is to create a mapping that is over-sized, then trim the
-	 * excess.  However, that always results in at least one call to
+	 * excess.  However, that always results in one or two calls to
 	 * pages_unmap().
 	 *
-	 * A more optimistic approach is to try mapping precisely the right
-	 * amount, then try to append another mapping if alignment is off.  In
-	 * practice, this works out well as long as the application is not
-	 * interleaving mappings via direct mmap() calls.  If we do run into a
-	 * situation where there is an interleaved mapping and we are unable to
-	 * extend an unaligned mapping, our best option is to switch to the
-	 * slow method until mmap() returns another aligned mapping.  This will
-	 * tend to leave a gap in the memory map that is too small to cause
-	 * later problems for the optimistic method.
-	 *
-	 * Another possible confounding factor is address space layout
-	 * randomization (ASLR), which causes mmap(2) to disregard the
-	 * requested address.  mmap_unaligned tracks whether the previous
-	 * chunk_alloc_mmap() execution received any unaligned or relocated
-	 * mappings, and if so, the current execution will immediately fall
-	 * back to the slow method.  However, we keep track of whether the fast
-	 * method would have succeeded, and if so, we make a note to try the
-	 * fast method next time.
+	 * Optimistically try mapping precisely the right amount before falling
+	 * back to the slow method, with the expectation that the optimistic
+	 * approach works most of the time.
 	 */
=20
-	if (mmap_unaligned_booted && *mmap_unaligned_tsd_get() =3D=3D false) {
-		size_t offset;
+	assert(alignment !=3D 0);
+	assert((alignment & chunksize_mask) =3D=3D 0);
=20
-		ret =3D pages_map(NULL, size);
-		if (ret =3D=3D NULL)
-			return (NULL);
+	ret =3D pages_map(NULL, size);
+	if (ret =3D=3D NULL)
+		return (NULL);
+	offset =3D ALIGNMENT_ADDR2OFFSET(ret, alignment);
+	if (offset !=3D 0) {
+		pages_unmap(ret, size);
+		return (chunk_alloc_mmap_slow(size, alignment, zero));
+	}
=20
-		offset =3D ALIGNMENT_ADDR2OFFSET(ret, alignment);
-		if (offset !=3D 0) {
-			bool mu =3D true;
-			mmap_unaligned_tsd_set(&mu);
-			/* Try to extend chunk boundary. */
-			if (pages_map((void *)((uintptr_t)ret + size),
-			    chunksize - offset) =3D=3D NULL) {
-				/*
-				 * Extension failed.  Clean up, then revert to
-				 * the reliable-but-expensive method.
-				 */
-				pages_unmap(ret, size);
-				ret =3D chunk_alloc_mmap_slow(size, alignment,
-				    true);
-			} else {
-				/* Clean up unneeded leading space. */
-				pages_unmap(ret, chunksize - offset);
-				ret =3D (void *)((uintptr_t)ret + (chunksize -
-				    offset));
-			}
-		}
-	} else
-		ret =3D chunk_alloc_mmap_slow(size, alignment, false);
-
+	assert(ret !=3D NULL);
+	*zero =3D true;
 	return (ret);
 }
=20
@@ -187,21 +200,3 @@
=20
 	return (config_munmap =3D=3D false);
 }
-
-bool
-chunk_mmap_boot(void)
-{
-
-	/*
-	 * XXX For the non-TLS implementation of tsd, the first access from
-	 * each thread causes memory allocation.  The result is a bootstrapping
-	 * problem for this particular use case, so for now just disable it by
-	 * leaving it in an unbooted state.
-	 */
-#ifdef JEMALLOC_TLS
-	if (mmap_unaligned_tsd_boot())
-		return (true);
-#endif
-
-	return (false);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/ctl.c
--- a/head/contrib/jemalloc/src/ctl.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/ctl.c	Wed Jul 25 16:21:35 2012 +0300
@@ -15,6 +15,32 @@
 static ctl_stats_t	ctl_stats;
=20
 /*************************************************************************=
*****/
+/* Helpers for named and indexed nodes. */
+
+static inline const ctl_named_node_t *
+ctl_named_node(const ctl_node_t *node)
+{
+
+	return ((node->named) ? (const ctl_named_node_t *)node : NULL);
+}
+
+static inline const ctl_named_node_t *
+ctl_named_children(const ctl_named_node_t *node, int index)
+{
+	const ctl_named_node_t *children =3D ctl_named_node(node->children);
+
+	return (children ? &children[index] : NULL);
+}
+
+static inline const ctl_indexed_node_t *
+ctl_indexed_node(const ctl_node_t *node)
+{
+
+	return ((node->named =3D=3D false) ? (const ctl_indexed_node_t *)node :
+	    NULL);
+}
+
+/*************************************************************************=
*****/
 /* Function prototypes for non-inline static functions. */
=20
 #define	CTL_PROTO(n)							\
@@ -22,7 +48,7 @@
     size_t *oldlenp, void *newp, size_t newlen);
=20
 #define	INDEX_PROTO(n)							\
-const ctl_node_t	*n##_index(const size_t *mib, size_t miblen,	\
+const ctl_named_node_t	*n##_index(const size_t *mib, size_t miblen,	\
     size_t i);
=20
 static bool	ctl_arena_init(ctl_arena_stats_t *astats);
@@ -50,6 +76,7 @@
 CTL_PROTO(config_dss)
 CTL_PROTO(config_fill)
 CTL_PROTO(config_lazy_lock)
+CTL_PROTO(config_mremap)
 CTL_PROTO(config_munmap)
 CTL_PROTO(config_prof)
 CTL_PROTO(config_prof_libgcc)
@@ -80,6 +107,7 @@
 CTL_PROTO(opt_lg_prof_sample)
 CTL_PROTO(opt_lg_prof_interval)
 CTL_PROTO(opt_prof_gdump)
+CTL_PROTO(opt_prof_final)
 CTL_PROTO(opt_prof_leak)
 CTL_PROTO(opt_prof_accum)
 CTL_PROTO(arenas_bin_i_size)
@@ -148,35 +176,39 @@
 /* Maximum tree depth. */
 #define	CTL_MAX_DEPTH	6
=20
-#define	NAME(n)	true,	{.named =3D {n
-#define	CHILD(c) sizeof(c##_node) / sizeof(ctl_node_t),	c##_node}},	NULL
-#define	CTL(c)	0,				NULL}},		c##_ctl
+#define	NAME(n)	{true},	n
+#define	CHILD(t, c)							\
+	sizeof(c##_node) / sizeof(ctl_##t##_node_t),			\
+	(ctl_node_t *)c##_node,						\
+	NULL
+#define	CTL(c)	0, NULL, c##_ctl
=20
 /*
  * Only handles internal indexed nodes, since there are currently no exter=
nal
  * ones.
  */
-#define	INDEX(i)	false,	{.indexed =3D {i##_index}},		NULL
+#define	INDEX(i)	{false},	i##_index
=20
-static const ctl_node_t	tcache_node[] =3D {
+static const ctl_named_node_t	tcache_node[] =3D {
 	{NAME("enabled"),	CTL(thread_tcache_enabled)},
 	{NAME("flush"),		CTL(thread_tcache_flush)}
 };
=20
-static const ctl_node_t	thread_node[] =3D {
+static const ctl_named_node_t	thread_node[] =3D {
 	{NAME("arena"),		CTL(thread_arena)},
 	{NAME("allocated"),	CTL(thread_allocated)},
 	{NAME("allocatedp"),	CTL(thread_allocatedp)},
 	{NAME("deallocated"),	CTL(thread_deallocated)},
 	{NAME("deallocatedp"),	CTL(thread_deallocatedp)},
-	{NAME("tcache"),	CHILD(tcache)}
+	{NAME("tcache"),	CHILD(named, tcache)}
 };
=20
-static const ctl_node_t	config_node[] =3D {
+static const ctl_named_node_t	config_node[] =3D {
 	{NAME("debug"),			CTL(config_debug)},
 	{NAME("dss"),			CTL(config_dss)},
 	{NAME("fill"),			CTL(config_fill)},
 	{NAME("lazy_lock"),		CTL(config_lazy_lock)},
+	{NAME("mremap"),		CTL(config_mremap)},
 	{NAME("munmap"),		CTL(config_munmap)},
 	{NAME("prof"),			CTL(config_prof)},
 	{NAME("prof_libgcc"),		CTL(config_prof_libgcc)},
@@ -189,7 +221,7 @@
 	{NAME("xmalloc"),		CTL(config_xmalloc)}
 };
=20
-static const ctl_node_t opt_node[] =3D {
+static const ctl_named_node_t opt_node[] =3D {
 	{NAME("abort"),			CTL(opt_abort)},
 	{NAME("lg_chunk"),		CTL(opt_lg_chunk)},
 	{NAME("narenas"),		CTL(opt_narenas)},
@@ -210,35 +242,36 @@
 	{NAME("lg_prof_sample"),	CTL(opt_lg_prof_sample)},
 	{NAME("lg_prof_interval"),	CTL(opt_lg_prof_interval)},
 	{NAME("prof_gdump"),		CTL(opt_prof_gdump)},
+	{NAME("prof_final"),		CTL(opt_prof_final)},
 	{NAME("prof_leak"),		CTL(opt_prof_leak)},
 	{NAME("prof_accum"),		CTL(opt_prof_accum)}
 };
=20
-static const ctl_node_t arenas_bin_i_node[] =3D {
+static const ctl_named_node_t arenas_bin_i_node[] =3D {
 	{NAME("size"),			CTL(arenas_bin_i_size)},
 	{NAME("nregs"),			CTL(arenas_bin_i_nregs)},
 	{NAME("run_size"),		CTL(arenas_bin_i_run_size)}
 };
-static const ctl_node_t super_arenas_bin_i_node[] =3D {
-	{NAME(""),			CHILD(arenas_bin_i)}
+static const ctl_named_node_t super_arenas_bin_i_node[] =3D {
+	{NAME(""),			CHILD(named, arenas_bin_i)}
 };
=20
-static const ctl_node_t arenas_bin_node[] =3D {
+static const ctl_indexed_node_t arenas_bin_node[] =3D {
 	{INDEX(arenas_bin_i)}
 };
=20
-static const ctl_node_t arenas_lrun_i_node[] =3D {
+static const ctl_named_node_t arenas_lrun_i_node[] =3D {
 	{NAME("size"),			CTL(arenas_lrun_i_size)}
 };
-static const ctl_node_t super_arenas_lrun_i_node[] =3D {
-	{NAME(""),			CHILD(arenas_lrun_i)}
+static const ctl_named_node_t super_arenas_lrun_i_node[] =3D {
+	{NAME(""),			CHILD(named, arenas_lrun_i)}
 };
=20
-static const ctl_node_t arenas_lrun_node[] =3D {
+static const ctl_indexed_node_t arenas_lrun_node[] =3D {
 	{INDEX(arenas_lrun_i)}
 };
=20
-static const ctl_node_t arenas_node[] =3D {
+static const ctl_named_node_t arenas_node[] =3D {
 	{NAME("narenas"),		CTL(arenas_narenas)},
 	{NAME("initialized"),		CTL(arenas_initialized)},
 	{NAME("quantum"),		CTL(arenas_quantum)},
@@ -246,45 +279,45 @@
 	{NAME("tcache_max"),		CTL(arenas_tcache_max)},
 	{NAME("nbins"),			CTL(arenas_nbins)},
 	{NAME("nhbins"),		CTL(arenas_nhbins)},
-	{NAME("bin"),			CHILD(arenas_bin)},
+	{NAME("bin"),			CHILD(indexed, arenas_bin)},
 	{NAME("nlruns"),		CTL(arenas_nlruns)},
-	{NAME("lrun"),			CHILD(arenas_lrun)},
+	{NAME("lrun"),			CHILD(indexed, arenas_lrun)},
 	{NAME("purge"),			CTL(arenas_purge)}
 };
=20
-static const ctl_node_t	prof_node[] =3D {
+static const ctl_named_node_t	prof_node[] =3D {
 	{NAME("active"),	CTL(prof_active)},
 	{NAME("dump"),		CTL(prof_dump)},
 	{NAME("interval"),	CTL(prof_interval)}
 };
=20
-static const ctl_node_t stats_chunks_node[] =3D {
+static const ctl_named_node_t stats_chunks_node[] =3D {
 	{NAME("current"),		CTL(stats_chunks_current)},
 	{NAME("total"),			CTL(stats_chunks_total)},
 	{NAME("high"),			CTL(stats_chunks_high)}
 };
=20
-static const ctl_node_t stats_huge_node[] =3D {
+static const ctl_named_node_t stats_huge_node[] =3D {
 	{NAME("allocated"),		CTL(stats_huge_allocated)},
 	{NAME("nmalloc"),		CTL(stats_huge_nmalloc)},
 	{NAME("ndalloc"),		CTL(stats_huge_ndalloc)}
 };
=20
-static const ctl_node_t stats_arenas_i_small_node[] =3D {
+static const ctl_named_node_t stats_arenas_i_small_node[] =3D {
 	{NAME("allocated"),		CTL(stats_arenas_i_small_allocated)},
 	{NAME("nmalloc"),		CTL(stats_arenas_i_small_nmalloc)},
 	{NAME("ndalloc"),		CTL(stats_arenas_i_small_ndalloc)},
 	{NAME("nrequests"),		CTL(stats_arenas_i_small_nrequests)}
 };
=20
-static const ctl_node_t stats_arenas_i_large_node[] =3D {
+static const ctl_named_node_t stats_arenas_i_large_node[] =3D {
 	{NAME("allocated"),		CTL(stats_arenas_i_large_allocated)},
 	{NAME("nmalloc"),		CTL(stats_arenas_i_large_nmalloc)},
 	{NAME("ndalloc"),		CTL(stats_arenas_i_large_ndalloc)},
 	{NAME("nrequests"),		CTL(stats_arenas_i_large_nrequests)}
 };
=20
-static const ctl_node_t stats_arenas_i_bins_j_node[] =3D {
+static const ctl_named_node_t stats_arenas_i_bins_j_node[] =3D {
 	{NAME("allocated"),		CTL(stats_arenas_i_bins_j_allocated)},
 	{NAME("nmalloc"),		CTL(stats_arenas_i_bins_j_nmalloc)},
 	{NAME("ndalloc"),		CTL(stats_arenas_i_bins_j_ndalloc)},
@@ -295,29 +328,29 @@
 	{NAME("nreruns"),		CTL(stats_arenas_i_bins_j_nreruns)},
 	{NAME("curruns"),		CTL(stats_arenas_i_bins_j_curruns)}
 };
-static const ctl_node_t super_stats_arenas_i_bins_j_node[] =3D {
-	{NAME(""),			CHILD(stats_arenas_i_bins_j)}
+static const ctl_named_node_t super_stats_arenas_i_bins_j_node[] =3D {
+	{NAME(""),			CHILD(named, stats_arenas_i_bins_j)}
 };
=20
-static const ctl_node_t stats_arenas_i_bins_node[] =3D {
+static const ctl_indexed_node_t stats_arenas_i_bins_node[] =3D {
 	{INDEX(stats_arenas_i_bins_j)}
 };
=20
-static const ctl_node_t stats_arenas_i_lruns_j_node[] =3D {
+static const ctl_named_node_t stats_arenas_i_lruns_j_node[] =3D {
 	{NAME("nmalloc"),		CTL(stats_arenas_i_lruns_j_nmalloc)},
 	{NAME("ndalloc"),		CTL(stats_arenas_i_lruns_j_ndalloc)},
 	{NAME("nrequests"),		CTL(stats_arenas_i_lruns_j_nrequests)},
 	{NAME("curruns"),		CTL(stats_arenas_i_lruns_j_curruns)}
 };
-static const ctl_node_t super_stats_arenas_i_lruns_j_node[] =3D {
-	{NAME(""),			CHILD(stats_arenas_i_lruns_j)}
+static const ctl_named_node_t super_stats_arenas_i_lruns_j_node[] =3D {
+	{NAME(""),			CHILD(named, stats_arenas_i_lruns_j)}
 };
=20
-static const ctl_node_t stats_arenas_i_lruns_node[] =3D {
+static const ctl_indexed_node_t stats_arenas_i_lruns_node[] =3D {
 	{INDEX(stats_arenas_i_lruns_j)}
 };
=20
-static const ctl_node_t stats_arenas_i_node[] =3D {
+static const ctl_named_node_t stats_arenas_i_node[] =3D {
 	{NAME("nthreads"),		CTL(stats_arenas_i_nthreads)},
 	{NAME("pactive"),		CTL(stats_arenas_i_pactive)},
 	{NAME("pdirty"),		CTL(stats_arenas_i_pdirty)},
@@ -325,41 +358,41 @@
 	{NAME("npurge"),		CTL(stats_arenas_i_npurge)},
 	{NAME("nmadvise"),		CTL(stats_arenas_i_nmadvise)},
 	{NAME("purged"),		CTL(stats_arenas_i_purged)},
-	{NAME("small"),			CHILD(stats_arenas_i_small)},
-	{NAME("large"),			CHILD(stats_arenas_i_large)},
-	{NAME("bins"),			CHILD(stats_arenas_i_bins)},
-	{NAME("lruns"),		CHILD(stats_arenas_i_lruns)}
+	{NAME("small"),			CHILD(named, stats_arenas_i_small)},
+	{NAME("large"),			CHILD(named, stats_arenas_i_large)},
+	{NAME("bins"),			CHILD(indexed, stats_arenas_i_bins)},
+	{NAME("lruns"),			CHILD(indexed, stats_arenas_i_lruns)}
 };
-static const ctl_node_t super_stats_arenas_i_node[] =3D {
-	{NAME(""),			CHILD(stats_arenas_i)}
+static const ctl_named_node_t super_stats_arenas_i_node[] =3D {
+	{NAME(""),			CHILD(named, stats_arenas_i)}
 };
=20
-static const ctl_node_t stats_arenas_node[] =3D {
+static const ctl_indexed_node_t stats_arenas_node[] =3D {
 	{INDEX(stats_arenas_i)}
 };
=20
-static const ctl_node_t stats_node[] =3D {
+static const ctl_named_node_t stats_node[] =3D {
 	{NAME("cactive"),		CTL(stats_cactive)},
 	{NAME("allocated"),		CTL(stats_allocated)},
 	{NAME("active"),		CTL(stats_active)},
 	{NAME("mapped"),		CTL(stats_mapped)},
-	{NAME("chunks"),		CHILD(stats_chunks)},
-	{NAME("huge"),			CHILD(stats_huge)},
-	{NAME("arenas"),		CHILD(stats_arenas)}
+	{NAME("chunks"),		CHILD(named, stats_chunks)},
+	{NAME("huge"),			CHILD(named, stats_huge)},
+	{NAME("arenas"),		CHILD(indexed, stats_arenas)}
 };
=20
-static const ctl_node_t	root_node[] =3D {
+static const ctl_named_node_t	root_node[] =3D {
 	{NAME("version"),	CTL(version)},
 	{NAME("epoch"),		CTL(epoch)},
-	{NAME("thread"),	CHILD(thread)},
-	{NAME("config"),	CHILD(config)},
-	{NAME("opt"),		CHILD(opt)},
-	{NAME("arenas"),	CHILD(arenas)},
-	{NAME("prof"),		CHILD(prof)},
-	{NAME("stats"),		CHILD(stats)}
+	{NAME("thread"),	CHILD(named, thread)},
+	{NAME("config"),	CHILD(named, config)},
+	{NAME("opt"),		CHILD(named, opt)},
+	{NAME("arenas"),	CHILD(named, arenas)},
+	{NAME("prof"),		CHILD(named, prof)},
+	{NAME("stats"),		CHILD(named, stats)}
 };
-static const ctl_node_t super_root_node[] =3D {
-	{NAME(""),		CHILD(root)}
+static const ctl_named_node_t super_root_node[] =3D {
+	{NAME(""),		CHILD(named, root)}
 };
=20
 #undef NAME
@@ -489,7 +522,7 @@
 ctl_refresh(void)
 {
 	unsigned i;
-	arena_t *tarenas[narenas];
+	VARIABLE_ARRAY(arena_t *, tarenas, narenas);
=20
 	if (config_stats) {
 		malloc_mutex_lock(&chunks_mtx);
@@ -595,7 +628,7 @@
 	int ret;
 	const char *elm, *tdot, *dot;
 	size_t elen, i, j;
-	const ctl_node_t *node;
+	const ctl_named_node_t *node;
=20
 	elm =3D name;
 	/* Equivalent to strchrnul(). */
@@ -607,21 +640,21 @@
 	}
 	node =3D super_root_node;
 	for (i =3D 0; i < *depthp; i++) {
-		assert(node->named);
-		assert(node->u.named.nchildren > 0);
-		if (node->u.named.children[0].named) {
-			const ctl_node_t *pnode =3D node;
+		assert(node);
+		assert(node->nchildren > 0);
+		if (ctl_named_node(node->children) !=3D NULL) {
+			const ctl_named_node_t *pnode =3D node;
=20
 			/* Children are named. */
-			for (j =3D 0; j < node->u.named.nchildren; j++) {
-				const ctl_node_t *child =3D
-				    &node->u.named.children[j];
-				if (strlen(child->u.named.name) =3D=3D elen
-				    && strncmp(elm, child->u.named.name,
-				    elen) =3D=3D 0) {
+			for (j =3D 0; j < node->nchildren; j++) {
+				const ctl_named_node_t *child =3D
+				    ctl_named_children(node, j);
+				if (strlen(child->name) =3D=3D elen &&
+				    strncmp(elm, child->name, elen) =3D=3D 0) {
 					node =3D child;
 					if (nodesp !=3D NULL)
-						nodesp[i] =3D node;
+						nodesp[i] =3D
+						    (const ctl_node_t *)node;
 					mibp[i] =3D j;
 					break;
 				}
@@ -632,7 +665,7 @@
 			}
 		} else {
 			uintmax_t index;
-			const ctl_node_t *inode;
+			const ctl_indexed_node_t *inode;
=20
 			/* Children are indexed. */
 			index =3D malloc_strtoumax(elm, NULL, 10);
@@ -641,16 +674,15 @@
 				goto label_return;
 			}
=20
-			inode =3D &node->u.named.children[0];
-			node =3D inode->u.indexed.index(mibp, *depthp,
-			    (size_t)index);
+			inode =3D ctl_indexed_node(node->children);
+			node =3D inode->index(mibp, *depthp, (size_t)index);
 			if (node =3D=3D NULL) {
 				ret =3D ENOENT;
 				goto label_return;
 			}
=20
 			if (nodesp !=3D NULL)
-				nodesp[i] =3D node;
+				nodesp[i] =3D (const ctl_node_t *)node;
 			mibp[i] =3D (size_t)index;
 		}
=20
@@ -694,6 +726,7 @@
 	size_t depth;
 	ctl_node_t const *nodes[CTL_MAX_DEPTH];
 	size_t mib[CTL_MAX_DEPTH];
+	const ctl_named_node_t *node;
=20
 	if (ctl_initialized =3D=3D false && ctl_init()) {
 		ret =3D EAGAIN;
@@ -705,13 +738,14 @@
 	if (ret !=3D 0)
 		goto label_return;
=20
-	if (nodes[depth-1]->ctl =3D=3D NULL) {
+	node =3D ctl_named_node(nodes[depth-1]);
+	if (node !=3D NULL && node->ctl)
+		ret =3D node->ctl(mib, depth, oldp, oldlenp, newp, newlen);
+	else {
 		/* The name refers to a partial path through the ctl tree. */
 		ret =3D ENOENT;
-		goto label_return;
 	}
=20
-	ret =3D nodes[depth-1]->ctl(mib, depth, oldp, oldlenp, newp, newlen);
 label_return:
 	return(ret);
 }
@@ -736,7 +770,7 @@
     void *newp, size_t newlen)
 {
 	int ret;
-	const ctl_node_t *node;
+	const ctl_named_node_t *node;
 	size_t i;
=20
 	if (ctl_initialized =3D=3D false && ctl_init()) {
@@ -747,19 +781,21 @@
 	/* Iterate down the tree. */
 	node =3D super_root_node;
 	for (i =3D 0; i < miblen; i++) {
-		if (node->u.named.children[0].named) {
+		assert(node);
+		assert(node->nchildren > 0);
+		if (ctl_named_node(node->children) !=3D NULL) {
 			/* Children are named. */
-			if (node->u.named.nchildren <=3D mib[i]) {
+			if (node->nchildren <=3D mib[i]) {
 				ret =3D ENOENT;
 				goto label_return;
 			}
-			node =3D &node->u.named.children[mib[i]];
+			node =3D ctl_named_children(node, mib[i]);
 		} else {
-			const ctl_node_t *inode;
+			const ctl_indexed_node_t *inode;
=20
 			/* Indexed element. */
-			inode =3D &node->u.named.children[0];
-			node =3D inode->u.indexed.index(mib, miblen, mib[i]);
+			inode =3D ctl_indexed_node(node->children);
+			node =3D inode->index(mib, miblen, mib[i]);
 			if (node =3D=3D NULL) {
 				ret =3D ENOENT;
 				goto label_return;
@@ -768,12 +804,12 @@
 	}
=20
 	/* Call the ctl function. */
-	if (node->ctl =3D=3D NULL) {
+	if (node && node->ctl)
+		ret =3D node->ctl(mib, miblen, oldp, oldlenp, newp, newlen);
+	else {
 		/* Partial MIB. */
 		ret =3D ENOENT;
-		goto label_return;
 	}
-	ret =3D node->ctl(mib, miblen, oldp, oldlenp, newp, newlen);
=20
 label_return:
 	return(ret);
@@ -797,22 +833,17 @@
 #define	READONLY()	do {						\
 	if (newp !=3D NULL || newlen !=3D 0) {				\
 		ret =3D EPERM;						\
-		goto label_return;						\
+		goto label_return;					\
 	}								\
 } while (0)
=20
 #define	WRITEONLY()	do {						\
 	if (oldp !=3D NULL || oldlenp !=3D NULL) {				\
 		ret =3D EPERM;						\
-		goto label_return;						\
+		goto label_return;					\
 	}								\
 } while (0)
=20
-#define	VOID()	do {							\
-	READONLY();							\
-	WRITEONLY();							\
-} while (0)
-
 #define	READ(v, t)	do {						\
 	if (oldp !=3D NULL && oldlenp !=3D NULL) {				\
 		if (*oldlenp !=3D sizeof(t)) {				\
@@ -820,7 +851,7 @@
 			    ? sizeof(t) : *oldlenp;			\
 			memcpy(oldp, (void *)&v, copylen);		\
 			ret =3D EINVAL;					\
-			goto label_return;					\
+			goto label_return;				\
 		} else							\
 			*(t *)oldp =3D v;					\
 	}								\
@@ -830,7 +861,7 @@
 	if (newp !=3D NULL) {						\
 		if (newlen !=3D sizeof(t)) {				\
 			ret =3D EINVAL;					\
-			goto label_return;					\
+			goto label_return;				\
 		}							\
 		v =3D *(t *)newp;						\
 	}								\
@@ -857,7 +888,7 @@
 	READ(oldval, t);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	if (l)								\
 		malloc_mutex_unlock(&ctl_mtx);				\
 	return (ret);							\
@@ -879,7 +910,7 @@
 	READ(oldval, t);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	malloc_mutex_unlock(&ctl_mtx);					\
 	return (ret);							\
 }
@@ -898,7 +929,7 @@
 	READ(oldval, t);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	malloc_mutex_unlock(&ctl_mtx);					\
 	return (ret);							\
 }
@@ -922,7 +953,7 @@
 	READ(oldval, t);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	return (ret);							\
 }
=20
@@ -939,7 +970,7 @@
 	READ(oldval, t);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	return (ret);							\
 }
=20
@@ -956,7 +987,7 @@
 	READ(oldval, bool);						\
 									\
 	ret =3D 0;							\
-label_return:									\
+label_return:								\
 	return (ret);							\
 }
=20
@@ -970,9 +1001,8 @@
 	uint64_t newval;
=20
 	malloc_mutex_lock(&ctl_mtx);
-	newval =3D 0;
 	WRITE(newval, uint64_t);
-	if (newval !=3D 0)
+	if (newp !=3D NULL)
 		ctl_refresh();
 	READ(ctl_epoch, uint64_t);
=20
@@ -1016,7 +1046,8 @@
 	if (config_tcache =3D=3D false)
 		return (ENOENT);
=20
-	VOID();
+	READONLY();
+	WRITEONLY();
=20
 	tcache_flush();
=20
@@ -1089,6 +1120,7 @@
 CTL_RO_BOOL_CONFIG_GEN(config_dss)
 CTL_RO_BOOL_CONFIG_GEN(config_fill)
 CTL_RO_BOOL_CONFIG_GEN(config_lazy_lock)
+CTL_RO_BOOL_CONFIG_GEN(config_mremap)
 CTL_RO_BOOL_CONFIG_GEN(config_munmap)
 CTL_RO_BOOL_CONFIG_GEN(config_prof)
 CTL_RO_BOOL_CONFIG_GEN(config_prof_libgcc)
@@ -1122,6 +1154,7 @@
 CTL_RO_NL_CGEN(config_prof, opt_lg_prof_sample, opt_lg_prof_sample, size_t)
 CTL_RO_NL_CGEN(config_prof, opt_lg_prof_interval, opt_lg_prof_interval, ss=
ize_t)
 CTL_RO_NL_CGEN(config_prof, opt_prof_gdump, opt_prof_gdump, bool)
+CTL_RO_NL_CGEN(config_prof, opt_prof_final, opt_prof_final, bool)
 CTL_RO_NL_CGEN(config_prof, opt_prof_leak, opt_prof_leak, bool)
 CTL_RO_NL_CGEN(config_prof, opt_prof_accum, opt_prof_accum, bool)
=20
@@ -1130,7 +1163,7 @@
 CTL_RO_NL_GEN(arenas_bin_i_size, arena_bin_info[mib[2]].reg_size, size_t)
 CTL_RO_NL_GEN(arenas_bin_i_nregs, arena_bin_info[mib[2]].nregs, uint32_t)
 CTL_RO_NL_GEN(arenas_bin_i_run_size, arena_bin_info[mib[2]].run_size, size=
_t)
-const ctl_node_t *
+const ctl_named_node_t *
 arenas_bin_i_index(const size_t *mib, size_t miblen, size_t i)
 {
=20
@@ -1140,7 +1173,7 @@
 }
=20
 CTL_RO_NL_GEN(arenas_lrun_i_size, ((mib[2]+1) << LG_PAGE), size_t)
-const ctl_node_t *
+const ctl_named_node_t *
 arenas_lrun_i_index(const size_t *mib, size_t miblen, size_t i)
 {
=20
@@ -1198,7 +1231,7 @@
 		ret =3D EFAULT;
 		goto label_return;
 	} else {
-		arena_t *tarenas[narenas];
+		VARIABLE_ARRAY(arena_t *, tarenas, narenas);
=20
 		malloc_mutex_lock(&arenas_lock);
 		memcpy(tarenas, arenas, sizeof(arena_t *) * narenas);
@@ -1323,7 +1356,7 @@
 CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_curruns,
     ctl_stats.arenas[mib[2]].bstats[mib[4]].curruns, size_t)
=20
-const ctl_node_t *
+const ctl_named_node_t *
 stats_arenas_i_bins_j_index(const size_t *mib, size_t miblen, size_t j)
 {
=20
@@ -1341,7 +1374,7 @@
 CTL_RO_CGEN(config_stats, stats_arenas_i_lruns_j_curruns,
     ctl_stats.arenas[mib[2]].lstats[mib[4]].curruns, size_t)
=20
-const ctl_node_t *
+const ctl_named_node_t *
 stats_arenas_i_lruns_j_index(const size_t *mib, size_t miblen, size_t j)
 {
=20
@@ -1362,10 +1395,10 @@
 CTL_RO_CGEN(config_stats, stats_arenas_i_purged,
     ctl_stats.arenas[mib[2]].astats.purged, uint64_t)
=20
-const ctl_node_t *
+const ctl_named_node_t *
 stats_arenas_i_index(const size_t *mib, size_t miblen, size_t i)
 {
-	const ctl_node_t * ret;
+	const ctl_named_node_t * ret;
=20
 	malloc_mutex_lock(&ctl_mtx);
 	if (ctl_stats.arenas[i].initialized =3D=3D false) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/huge.c
--- a/head/contrib/jemalloc/src/huge.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/huge.c	Wed Jul 25 16:21:35 2012 +0300
@@ -28,6 +28,7 @@
 	void *ret;
 	size_t csize;
 	extent_node_t *node;
+	bool is_zeroed;
=20
 	/* Allocate one or more contiguous chunks for this request. */
=20
@@ -42,7 +43,12 @@
 	if (node =3D=3D NULL)
 		return (NULL);
=20
-	ret =3D chunk_alloc(csize, alignment, false, &zero);
+	/*
+	 * Copy zero into is_zeroed and pass the copy to chunk_alloc(), so that
+	 * it is possible to make correct junk/zero fill decisions below.
+	 */
+	is_zeroed =3D zero;
+	ret =3D chunk_alloc(csize, alignment, false, &is_zeroed);
 	if (ret =3D=3D NULL) {
 		base_node_dealloc(node);
 		return (NULL);
@@ -64,7 +70,7 @@
 	if (config_fill && zero =3D=3D false) {
 		if (opt_junk)
 			memset(ret, 0xa5, csize);
-		else if (opt_zero)
+		else if (opt_zero && is_zeroed =3D=3D false)
 			memset(ret, 0, csize);
 	}
=20
@@ -134,11 +140,11 @@
 	 */
 	copysize =3D (size < oldsize) ? size : oldsize;
=20
+#ifdef JEMALLOC_MREMAP
 	/*
 	 * Use mremap(2) if this is a huge-->huge reallocation, and neither the
 	 * source nor the destination are in dss.
 	 */
-#ifdef JEMALLOC_MREMAP_FIXED
 	if (oldsize >=3D chunksize && (config_dss =3D=3D false || (chunk_in_dss(p=
tr)
 	    =3D=3D false && chunk_in_dss(ret) =3D=3D false))) {
 		size_t newsize =3D huge_salloc(ret);
@@ -162,7 +168,7 @@
 			 */
 			char buf[BUFERROR_BUF];
=20
-			buferror(errno, buf, sizeof(buf));
+			buferror(buf, sizeof(buf));
 			malloc_printf("<jemalloc>: Error in mremap(): %s\n",
 			    buf);
 			if (opt_abort)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/jemalloc.c
--- a/head/contrib/jemalloc/src/jemalloc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/jemalloc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -8,11 +8,12 @@
 malloc_tsd_data(, thread_allocated, thread_allocated_t,
     THREAD_ALLOCATED_INITIALIZER)
=20
-const char	*__malloc_options_1_0;
+/* Work around <http://llvm.org/bugs/show_bug.cgi?id=3D12623>: */
+const char	*__malloc_options_1_0 =3D NULL;
 __sym_compat(_malloc_options, __malloc_options_1_0, FBSD_1.0);
=20
 /* Runtime configuration options. */
-const char	*je_malloc_conf JEMALLOC_ATTR(visibility("default"));
+const char	*je_malloc_conf;
 #ifdef JEMALLOC_DEBUG
 bool	opt_abort =3D true;
 #  ifdef JEMALLOC_FILL
@@ -55,7 +56,26 @@
 #endif
=20
 /* Used to avoid initialization races. */
+#ifdef _WIN32
+static malloc_mutex_t	init_lock;
+
+JEMALLOC_ATTR(constructor)
+static void WINAPI
+_init_init_lock(void)
+{
+
+	malloc_mutex_init(&init_lock);
+}
+
+#ifdef _MSC_VER
+#  pragma section(".CRT$XCU", read)
+JEMALLOC_SECTION(".CRT$XCU") JEMALLOC_ATTR(used)
+static const void (WINAPI *init_init_lock)(void) =3D _init_init_lock;
+#endif
+
+#else
 static malloc_mutex_t	init_lock =3D MALLOC_MUTEX_INITIALIZER;
+#endif
=20
 typedef struct {
 	void	*p;	/* Input pointer (as in realloc(p, s)). */
@@ -232,11 +252,17 @@
 	unsigned ret;
 	long result;
=20
+#ifdef _WIN32
+	SYSTEM_INFO si;
+	GetSystemInfo(&si);
+	result =3D si.dwNumberOfProcessors;
+#else
 	result =3D sysconf(_SC_NPROCESSORS_ONLN);
 	if (result =3D=3D -1) {
 		/* Error. */
 		ret =3D 1;
 	}
+#endif
 	ret =3D (unsigned)result;
=20
 	return (ret);
@@ -372,13 +398,14 @@
 			}
 			break;
 		case 1: {
+#ifndef _WIN32
 			int linklen;
 			const char *linkname =3D
-#ifdef JEMALLOC_PREFIX
+#  ifdef JEMALLOC_PREFIX
 			    "/etc/"JEMALLOC_PREFIX"malloc.conf"
-#else
+#  else
 			    "/etc/malloc.conf"
-#endif
+#  endif
 			    ;
=20
 			if ((linklen =3D readlink(linkname, buf,
@@ -389,7 +416,9 @@
 				 */
 				buf[linklen] =3D '\0';
 				opts =3D buf;
-			} else {
+			} else
+#endif
+			{
 				/* No configuration specified. */
 				buf[0] =3D '\0';
 				opts =3D buf;
@@ -427,7 +456,7 @@
 		while (*opts !=3D '\0' && malloc_conf_next(&opts, &k, &klen, &v,
 		    &vlen) =3D=3D false) {
 #define	CONF_HANDLE_BOOL_HIT(o, n, hit)					\
-			if (sizeof(#n)-1 =3D=3D klen && strncmp(#n, k,	\
+			if (sizeof(n)-1 =3D=3D klen && strncmp(n, k,	\
 			    klen) =3D=3D 0) {				\
 				if (strncmp("true", v, vlen) =3D=3D 0 &&	\
 				    vlen =3D=3D sizeof("true")-1)		\
@@ -450,14 +479,14 @@
 				continue;				\
 }
 #define	CONF_HANDLE_SIZE_T(o, n, min, max)				\
-			if (sizeof(#n)-1 =3D=3D klen && strncmp(#n, k,	\
+			if (sizeof(n)-1 =3D=3D klen && strncmp(n, k,	\
 			    klen) =3D=3D 0) {				\
 				uintmax_t um;				\
 				char *end;				\
 									\
-				errno =3D 0;				\
+				set_errno(0);				\
 				um =3D malloc_strtoumax(v, &end, 0);	\
-				if (errno !=3D 0 || (uintptr_t)end -	\
+				if (get_errno() !=3D 0 || (uintptr_t)end -\
 				    (uintptr_t)v !=3D vlen) {		\
 					malloc_conf_error(		\
 					    "Invalid conf value",	\
@@ -471,14 +500,14 @@
 				continue;				\
 			}
 #define	CONF_HANDLE_SSIZE_T(o, n, min, max)				\
-			if (sizeof(#n)-1 =3D=3D klen && strncmp(#n, k,	\
+			if (sizeof(n)-1 =3D=3D klen && strncmp(n, k,	\
 			    klen) =3D=3D 0) {				\
 				long l;					\
 				char *end;				\
 									\
-				errno =3D 0;				\
+				set_errno(0);				\
 				l =3D strtol(v, &end, 0);			\
-				if (errno !=3D 0 || (uintptr_t)end -	\
+				if (get_errno() !=3D 0 || (uintptr_t)end -\
 				    (uintptr_t)v !=3D vlen) {		\
 					malloc_conf_error(		\
 					    "Invalid conf value",	\
@@ -493,7 +522,7 @@
 				continue;				\
 			}
 #define	CONF_HANDLE_CHAR_P(o, n, d)					\
-			if (sizeof(#n)-1 =3D=3D klen && strncmp(#n, k,	\
+			if (sizeof(n)-1 =3D=3D klen && strncmp(n, k,	\
 			    klen) =3D=3D 0) {				\
 				size_t cpylen =3D (vlen <=3D		\
 				    sizeof(o)-1) ? vlen :		\
@@ -503,7 +532,7 @@
 				continue;				\
 			}
=20
-			CONF_HANDLE_BOOL(opt_abort, abort)
+			CONF_HANDLE_BOOL(opt_abort, "abort")
 			/*
 			 * Chunks always require at least one header page, plus
 			 * one data page in the absence of redzones, or three
@@ -511,26 +540,27 @@
 			 * simplify options processing, fix the limit based on
 			 * config_fill.
 			 */
-			CONF_HANDLE_SIZE_T(opt_lg_chunk, lg_chunk, LG_PAGE +
+			CONF_HANDLE_SIZE_T(opt_lg_chunk, "lg_chunk", LG_PAGE +
 			    (config_fill ? 2 : 1), (sizeof(size_t) << 3) - 1)
-			CONF_HANDLE_SIZE_T(opt_narenas, narenas, 1, SIZE_T_MAX)
-			CONF_HANDLE_SSIZE_T(opt_lg_dirty_mult, lg_dirty_mult,
+			CONF_HANDLE_SIZE_T(opt_narenas, "narenas", 1,
+			    SIZE_T_MAX)
+			CONF_HANDLE_SSIZE_T(opt_lg_dirty_mult, "lg_dirty_mult",
 			    -1, (sizeof(size_t) << 3) - 1)
-			CONF_HANDLE_BOOL(opt_stats_print, stats_print)
+			CONF_HANDLE_BOOL(opt_stats_print, "stats_print")
 			if (config_fill) {
-				CONF_HANDLE_BOOL(opt_junk, junk)
-				CONF_HANDLE_SIZE_T(opt_quarantine, quarantine,
+				CONF_HANDLE_BOOL(opt_junk, "junk")
+				CONF_HANDLE_SIZE_T(opt_quarantine, "quarantine",
 				    0, SIZE_T_MAX)
-				CONF_HANDLE_BOOL(opt_redzone, redzone)
-				CONF_HANDLE_BOOL(opt_zero, zero)
+				CONF_HANDLE_BOOL(opt_redzone, "redzone")
+				CONF_HANDLE_BOOL(opt_zero, "zero")
 			}
 			if (config_utrace) {
-				CONF_HANDLE_BOOL(opt_utrace, utrace)
+				CONF_HANDLE_BOOL(opt_utrace, "utrace")
 			}
 			if (config_valgrind) {
 				bool hit;
 				CONF_HANDLE_BOOL_HIT(opt_valgrind,
-				    valgrind, hit)
+				    "valgrind", hit)
 				if (config_fill && opt_valgrind && hit) {
 					opt_junk =3D false;
 					opt_zero =3D false;
@@ -544,28 +574,29 @@
 					continue;
 			}
 			if (config_xmalloc) {
-				CONF_HANDLE_BOOL(opt_xmalloc, xmalloc)
+				CONF_HANDLE_BOOL(opt_xmalloc, "xmalloc")
 			}
 			if (config_tcache) {
-				CONF_HANDLE_BOOL(opt_tcache, tcache)
+				CONF_HANDLE_BOOL(opt_tcache, "tcache")
 				CONF_HANDLE_SSIZE_T(opt_lg_tcache_max,
-				    lg_tcache_max, -1,
+				    "lg_tcache_max", -1,
 				    (sizeof(size_t) << 3) - 1)
 			}
 			if (config_prof) {
-				CONF_HANDLE_BOOL(opt_prof, prof)
-				CONF_HANDLE_CHAR_P(opt_prof_prefix, prof_prefix,
-				    "jeprof")
-				CONF_HANDLE_BOOL(opt_prof_active, prof_active)
+				CONF_HANDLE_BOOL(opt_prof, "prof")
+				CONF_HANDLE_CHAR_P(opt_prof_prefix,
+				    "prof_prefix", "jeprof")
+				CONF_HANDLE_BOOL(opt_prof_active, "prof_active")
 				CONF_HANDLE_SSIZE_T(opt_lg_prof_sample,
-				    lg_prof_sample, 0,
+				    "lg_prof_sample", 0,
 				    (sizeof(uint64_t) << 3) - 1)
-				CONF_HANDLE_BOOL(opt_prof_accum, prof_accum)
+				CONF_HANDLE_BOOL(opt_prof_accum, "prof_accum")
 				CONF_HANDLE_SSIZE_T(opt_lg_prof_interval,
-				    lg_prof_interval, -1,
+				    "lg_prof_interval", -1,
 				    (sizeof(uint64_t) << 3) - 1)
-				CONF_HANDLE_BOOL(opt_prof_gdump, prof_gdump)
-				CONF_HANDLE_BOOL(opt_prof_leak, prof_leak)
+				CONF_HANDLE_BOOL(opt_prof_gdump, "prof_gdump")
+				CONF_HANDLE_BOOL(opt_prof_final, "prof_final")
+				CONF_HANDLE_BOOL(opt_prof_leak, "prof_leak")
 			}
 			malloc_conf_error("Invalid conf pair", k, klen, v,
 			    vlen);
@@ -612,7 +643,8 @@
=20
 	malloc_conf_init();
=20
-#if (!defined(JEMALLOC_MUTEX_INIT_CB) && !defined(JEMALLOC_ZONE))
+#if (!defined(JEMALLOC_MUTEX_INIT_CB) && !defined(JEMALLOC_ZONE) \
+    && !defined(_WIN32))
 	/* Register fork handlers. */
 	if (pthread_atfork(jemalloc_prefork, jemalloc_postfork_parent,
 	    jemalloc_postfork_child) !=3D 0) {
@@ -636,7 +668,7 @@
 		return (true);
 	}
=20
-	if (chunk_boot0()) {
+	if (chunk_boot()) {
 		malloc_mutex_unlock(&init_lock);
 		return (true);
 	}
@@ -713,11 +745,6 @@
 	ncpus =3D malloc_ncpus();
 	malloc_mutex_lock(&init_lock);
=20
-	if (chunk_boot1()) {
-		malloc_mutex_unlock(&init_lock);
-		return (true);
-	}
-
 	if (mutex_boot()) {
 		malloc_mutex_unlock(&init_lock);
 		return (true);
@@ -772,13 +799,11 @@
  * Begin malloc(3)-compatible functions.
  */
=20
-JEMALLOC_ATTR(malloc)
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_malloc(size_t size)
 {
 	void *ret;
-	size_t usize;
+	size_t usize JEMALLOC_CC_SILENCE_INIT(0);
 	prof_thr_cnt_t *cnt JEMALLOC_CC_SILENCE_INIT(NULL);
=20
 	if (malloc_init()) {
@@ -816,7 +841,7 @@
 			    "out of memory\n");
 			abort();
 		}
-		errno =3D ENOMEM;
+		set_errno(ENOMEM);
 	}
 	if (config_prof && opt_prof && ret !=3D NULL)
 		prof_malloc(ret, usize, cnt);
@@ -923,8 +948,6 @@
 	return (ret);
 }
=20
-JEMALLOC_ATTR(nonnull(1))
-JEMALLOC_ATTR(visibility("default"))
 int
 je_posix_memalign(void **memptr, size_t alignment, size_t size)
 {
@@ -934,8 +957,6 @@
 	return (ret);
 }
=20
-JEMALLOC_ATTR(malloc)
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_aligned_alloc(size_t alignment, size_t size)
 {
@@ -944,21 +965,19 @@
=20
 	if ((err =3D imemalign(&ret, alignment, size, 1)) !=3D 0) {
 		ret =3D NULL;
-		errno =3D err;
+		set_errno(err);
 	}
 	JEMALLOC_VALGRIND_MALLOC(err =3D=3D 0, ret, isalloc(ret, config_prof),
 	    false);
 	return (ret);
 }
=20
-JEMALLOC_ATTR(malloc)
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_calloc(size_t num, size_t size)
 {
 	void *ret;
 	size_t num_size;
-	size_t usize;
+	size_t usize JEMALLOC_CC_SILENCE_INIT(0);
 	prof_thr_cnt_t *cnt JEMALLOC_CC_SILENCE_INIT(NULL);
=20
 	if (malloc_init()) {
@@ -1014,7 +1033,7 @@
 			    "memory\n");
 			abort();
 		}
-		errno =3D ENOMEM;
+		set_errno(ENOMEM);
 	}
=20
 	if (config_prof && opt_prof && ret !=3D NULL)
@@ -1028,12 +1047,11 @@
 	return (ret);
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_realloc(void *ptr, size_t size)
 {
 	void *ret;
-	size_t usize;
+	size_t usize JEMALLOC_CC_SILENCE_INIT(0);
 	size_t old_size =3D 0;
 	size_t old_rzsize JEMALLOC_CC_SILENCE_INIT(0);
 	prof_thr_cnt_t *cnt JEMALLOC_CC_SILENCE_INIT(NULL);
@@ -1115,7 +1133,7 @@
 				    "out of memory\n");
 				abort();
 			}
-			errno =3D ENOMEM;
+			set_errno(ENOMEM);
 		}
 	} else {
 		/* realloc(NULL, size) is equivalent to malloc(size). */
@@ -1157,7 +1175,7 @@
 				    "out of memory\n");
 				abort();
 			}
-			errno =3D ENOMEM;
+			set_errno(ENOMEM);
 		}
 	}
=20
@@ -1176,7 +1194,6 @@
 	return (ret);
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 void
 je_free(void *ptr)
 {
@@ -1211,8 +1228,6 @@
  */
=20
 #ifdef JEMALLOC_OVERRIDE_MEMALIGN
-JEMALLOC_ATTR(malloc)
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_memalign(size_t alignment, size_t size)
 {
@@ -1224,8 +1239,6 @@
 #endif
=20
 #ifdef JEMALLOC_OVERRIDE_VALLOC
-JEMALLOC_ATTR(malloc)
-JEMALLOC_ATTR(visibility("default"))
 void *
 je_valloc(size_t size)
 {
@@ -1254,17 +1267,12 @@
  * passed an extra argument for the caller return address, which will be
  * ignored.
  */
-JEMALLOC_ATTR(visibility("default"))
-void (* const __free_hook)(void *ptr) =3D je_free;
-
-JEMALLOC_ATTR(visibility("default"))
-void *(* const __malloc_hook)(size_t size) =3D je_malloc;
-
-JEMALLOC_ATTR(visibility("default"))
-void *(* const __realloc_hook)(void *ptr, size_t size) =3D je_realloc;
-
-JEMALLOC_ATTR(visibility("default"))
-void *(* const __memalign_hook)(size_t alignment, size_t size) =3D je_mema=
lign;
+JEMALLOC_EXPORT void (* const __free_hook)(void *ptr) =3D je_free;
+JEMALLOC_EXPORT void *(* const __malloc_hook)(size_t size) =3D je_malloc;
+JEMALLOC_EXPORT void *(* const __realloc_hook)(void *ptr, size_t size) =3D
+    je_realloc;
+JEMALLOC_EXPORT void *(* const __memalign_hook)(size_t alignment, size_t s=
ize) =3D
+    je_memalign;
 #endif
=20
 /*
@@ -1275,7 +1283,6 @@
  * Begin non-standard functions.
  */
=20
-JEMALLOC_ATTR(visibility("default"))
 size_t
 je_malloc_usable_size(const void *ptr)
 {
@@ -1291,7 +1298,6 @@
 	return (ret);
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 void
 je_malloc_stats_print(void (*write_cb)(void *, const char *), void *cbopaq=
ue,
     const char *opts)
@@ -1300,7 +1306,6 @@
 	stats_print(write_cb, cbopaque, opts);
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 int
 je_mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp,
     size_t newlen)
@@ -1312,7 +1317,6 @@
 	return (ctl_byname(name, oldp, oldlenp, newp, newlen));
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 int
 je_mallctlnametomib(const char *name, size_t *mibp, size_t *miblenp)
 {
@@ -1323,7 +1327,6 @@
 	return (ctl_nametomib(name, mibp, miblenp));
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 int
 je_mallctlbymib(const size_t *mib, size_t miblen, void *oldp, size_t *oldl=
enp,
   void *newp, size_t newlen)
@@ -1359,8 +1362,6 @@
 		return (imalloc(usize));
 }
=20
-JEMALLOC_ATTR(nonnull(1))
-JEMALLOC_ATTR(visibility("default"))
 int
 je_allocm(void **ptr, size_t *rsize, size_t size, int flags)
 {
@@ -1369,7 +1370,6 @@
 	size_t alignment =3D (ZU(1) << (flags & ALLOCM_LG_ALIGN_MASK)
 	    & (SIZE_T_MAX-1));
 	bool zero =3D flags & ALLOCM_ZERO;
-	prof_thr_cnt_t *cnt;
=20
 	assert(ptr !=3D NULL);
 	assert(size !=3D 0);
@@ -1382,6 +1382,8 @@
 		goto label_oom;
=20
 	if (config_prof && opt_prof) {
+		prof_thr_cnt_t *cnt;
+
 		PROF_ALLOC_PREP(1, usize, cnt);
 		if (cnt =3D=3D NULL)
 			goto label_oom;
@@ -1428,8 +1430,6 @@
 	return (ALLOCM_ERR_OOM);
 }
=20
-JEMALLOC_ATTR(nonnull(1))
-JEMALLOC_ATTR(visibility("default"))
 int
 je_rallocm(void **ptr, size_t *rsize, size_t size, size_t extra, int flags)
 {
@@ -1441,7 +1441,6 @@
 	    & (SIZE_T_MAX-1));
 	bool zero =3D flags & ALLOCM_ZERO;
 	bool no_move =3D flags & ALLOCM_NO_MOVE;
-	prof_thr_cnt_t *cnt;
=20
 	assert(ptr !=3D NULL);
 	assert(*ptr !=3D NULL);
@@ -1451,6 +1450,8 @@
=20
 	p =3D *ptr;
 	if (config_prof && opt_prof) {
+		prof_thr_cnt_t *cnt;
+
 		/*
 		 * usize isn't knowable before iralloc() returns when extra is
 		 * non-zero.  Therefore, compute its maximum possible value and
@@ -1538,8 +1539,6 @@
 	return (ALLOCM_ERR_OOM);
 }
=20
-JEMALLOC_ATTR(nonnull(1))
-JEMALLOC_ATTR(visibility("default"))
 int
 je_sallocm(const void *ptr, size_t *rsize, int flags)
 {
@@ -1559,8 +1558,6 @@
 	return (ALLOCM_SUCCESS);
 }
=20
-JEMALLOC_ATTR(nonnull(1))
-JEMALLOC_ATTR(visibility("default"))
 int
 je_dallocm(void *ptr, int flags)
 {
@@ -1588,7 +1585,6 @@
 	return (ALLOCM_SUCCESS);
 }
=20
-JEMALLOC_ATTR(visibility("default"))
 int
 je_nallocm(size_t *rsize, size_t size, int flags)
 {
@@ -1624,12 +1620,18 @@
 void
 jemalloc_prefork(void)
 #else
-void
+JEMALLOC_EXPORT void
 _malloc_prefork(void)
 #endif
 {
 	unsigned i;
=20
+#ifdef JEMALLOC_MUTEX_INIT_CB
+	if (malloc_initialized =3D=3D false)
+		return;
+#endif
+	assert(malloc_initialized);
+
 	/* Acquire all mutexes in a safe order. */
 	malloc_mutex_prefork(&arenas_lock);
 	for (i =3D 0; i < narenas; i++) {
@@ -1645,12 +1647,18 @@
 void
 jemalloc_postfork_parent(void)
 #else
-void
+JEMALLOC_EXPORT void
 _malloc_postfork(void)
 #endif
 {
 	unsigned i;
=20
+#ifdef JEMALLOC_MUTEX_INIT_CB
+	if (malloc_initialized =3D=3D false)
+		return;
+#endif
+	assert(malloc_initialized);
+
 	/* Release all mutexes, now that fork() has completed. */
 	chunk_dss_postfork_parent();
 	huge_postfork_parent();
@@ -1667,6 +1675,8 @@
 {
 	unsigned i;
=20
+	assert(malloc_initialized);
+
 	/* Release all mutexes, now that fork() has completed. */
 	chunk_dss_postfork_child();
 	huge_postfork_child();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/mutex.c
--- a/head/contrib/jemalloc/src/mutex.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/mutex.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,10 +1,14 @@
 #define	JEMALLOC_MUTEX_C_
 #include "jemalloc/internal/jemalloc_internal.h"
=20
-#ifdef JEMALLOC_LAZY_LOCK
+#if defined(JEMALLOC_LAZY_LOCK) && !defined(_WIN32)
 #include <dlfcn.h>
 #endif
=20
+#ifndef _CRT_SPINCOUNT
+#define _CRT_SPINCOUNT 4000
+#endif
+
 /*************************************************************************=
*****/
 /* Data. */
=20
@@ -16,7 +20,7 @@
 static malloc_mutex_t	*postponed_mutexes =3D NULL;
 #endif
=20
-#ifdef JEMALLOC_LAZY_LOCK
+#if defined(JEMALLOC_LAZY_LOCK) && !defined(_WIN32)
 static void	pthread_create_once(void);
 #endif
=20
@@ -26,7 +30,7 @@
  * process goes multi-threaded.
  */
=20
-#ifdef JEMALLOC_LAZY_LOCK
+#if defined(JEMALLOC_LAZY_LOCK) && !defined(_WIN32)
 static int (*pthread_create_fptr)(pthread_t *__restrict, const pthread_att=
r_t *,
     void *(*)(void *), void *__restrict);
=20
@@ -44,8 +48,7 @@
 	isthreaded =3D true;
 }
=20
-JEMALLOC_ATTR(visibility("default"))
-int
+JEMALLOC_EXPORT int
 pthread_create(pthread_t *__restrict thread,
     const pthread_attr_t *__restrict attr, void *(*start_routine)(void *),
     void *__restrict arg)
@@ -79,7 +82,12 @@
 bool
 malloc_mutex_init(malloc_mutex_t *mutex)
 {
-#ifdef JEMALLOC_OSSPIN
+
+#ifdef _WIN32
+	if (!InitializeCriticalSectionAndSpinCount(&mutex->lock,
+	    _CRT_SPINCOUNT))
+		return (true);
+#elif (defined(JEMALLOC_OSSPIN))
 	mutex->lock =3D 0;
 #elif (defined(JEMALLOC_MUTEX_INIT_CB))
 	if (postpone_init) {
@@ -101,7 +109,6 @@
 		return (true);
 	}
 	pthread_mutexattr_destroy(&attr);
-
 #endif
 	return (false);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/prof.c
--- a/head/contrib/jemalloc/src/prof.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/prof.c	Wed Jul 25 16:21:35 2012 +0300
@@ -21,8 +21,9 @@
 size_t		opt_lg_prof_sample =3D LG_PROF_SAMPLE_DEFAULT;
 ssize_t		opt_lg_prof_interval =3D LG_PROF_INTERVAL_DEFAULT;
 bool		opt_prof_gdump =3D false;
+bool		opt_prof_final =3D true;
 bool		opt_prof_leak =3D false;
-bool		opt_prof_accum =3D true;
+bool		opt_prof_accum =3D false;
 char		opt_prof_prefix[PATH_MAX + 1];
=20
 uint64_t	prof_interval;
@@ -63,11 +64,6 @@
 /* Do not dump any profiles until bootstrapping is complete. */
 static bool		prof_booted =3D false;
=20
-static malloc_mutex_t	enq_mtx;
-static bool		enq;
-static bool		enq_idump;
-static bool		enq_gdump;
-
 /*************************************************************************=
*****/
 /* Function prototypes for non-inline static functions. */
=20
@@ -147,20 +143,19 @@
 }
=20
 static inline void
-prof_enter(void)
+prof_enter(prof_tdata_t *prof_tdata)
 {
=20
 	cassert(config_prof);
=20
-	malloc_mutex_lock(&enq_mtx);
-	enq =3D true;
-	malloc_mutex_unlock(&enq_mtx);
+	assert(prof_tdata->enq =3D=3D false);
+	prof_tdata->enq =3D true;
=20
 	malloc_mutex_lock(&bt2ctx_mtx);
 }
=20
 static inline void
-prof_leave(void)
+prof_leave(prof_tdata_t *prof_tdata)
 {
 	bool idump, gdump;
=20
@@ -168,13 +163,12 @@
=20
 	malloc_mutex_unlock(&bt2ctx_mtx);
=20
-	malloc_mutex_lock(&enq_mtx);
-	enq =3D false;
-	idump =3D enq_idump;
-	enq_idump =3D false;
-	gdump =3D enq_gdump;
-	enq_gdump =3D false;
-	malloc_mutex_unlock(&enq_mtx);
+	assert(prof_tdata->enq);
+	prof_tdata->enq =3D false;
+	idump =3D prof_tdata->enq_idump;
+	prof_tdata->enq_idump =3D false;
+	gdump =3D prof_tdata->enq_gdump;
+	prof_tdata->enq_gdump =3D false;
=20
 	if (idump)
 		prof_idump();
@@ -445,12 +439,9 @@
=20
 	cassert(config_prof);
=20
-	prof_tdata =3D *prof_tdata_tsd_get();
-	if (prof_tdata =3D=3D NULL) {
-		prof_tdata =3D prof_tdata_init();
-		if (prof_tdata =3D=3D NULL)
-			return (NULL);
-	}
+	prof_tdata =3D prof_tdata_get();
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX)
+		return (NULL);
=20
 	if (ckh_search(&prof_tdata->bt2cnt, bt, NULL, &ret.v)) {
 		union {
@@ -467,52 +458,48 @@
 		 * This thread's cache lacks bt.  Look for it in the global
 		 * cache.
 		 */
-		prof_enter();
+		prof_enter(prof_tdata);
 		if (ckh_search(&bt2ctx, bt, &btkey.v, &ctx.v)) {
 			/* bt has never been seen before.  Insert it. */
 			ctx.v =3D imalloc(sizeof(prof_ctx_t));
 			if (ctx.v =3D=3D NULL) {
-				prof_leave();
+				prof_leave(prof_tdata);
 				return (NULL);
 			}
 			btkey.p =3D bt_dup(bt);
 			if (btkey.v =3D=3D NULL) {
-				prof_leave();
+				prof_leave(prof_tdata);
 				idalloc(ctx.v);
 				return (NULL);
 			}
 			ctx.p->bt =3D btkey.p;
 			ctx.p->lock =3D prof_ctx_mutex_choose();
+			/*
+			 * Set nlimbo to 1, in order to avoid a race condition
+			 * with prof_ctx_merge()/prof_ctx_destroy().
+			 */
+			ctx.p->nlimbo =3D 1;
 			memset(&ctx.p->cnt_merged, 0, sizeof(prof_cnt_t));
 			ql_new(&ctx.p->cnts_ql);
 			if (ckh_insert(&bt2ctx, btkey.v, ctx.v)) {
 				/* OOM. */
-				prof_leave();
+				prof_leave(prof_tdata);
 				idalloc(btkey.v);
 				idalloc(ctx.v);
 				return (NULL);
 			}
-			/*
-			 * Artificially raise curobjs, in order to avoid a race
-			 * condition with prof_ctx_merge()/prof_ctx_destroy().
-			 *
-			 * No locking is necessary for ctx here because no other
-			 * threads have had the opportunity to fetch it from
-			 * bt2ctx yet.
-			 */
-			ctx.p->cnt_merged.curobjs++;
 			new_ctx =3D true;
 		} else {
 			/*
-			 * Artificially raise curobjs, in order to avoid a race
-			 * condition with prof_ctx_merge()/prof_ctx_destroy().
+			 * Increment nlimbo, in order to avoid a race condition
+			 * with prof_ctx_merge()/prof_ctx_destroy().
 			 */
 			malloc_mutex_lock(ctx.p->lock);
-			ctx.p->cnt_merged.curobjs++;
+			ctx.p->nlimbo++;
 			malloc_mutex_unlock(ctx.p->lock);
 			new_ctx =3D false;
 		}
-		prof_leave();
+		prof_leave(prof_tdata);
=20
 		/* Link a prof_thd_cnt_t into ctx for this thread. */
 		if (ckh_count(&prof_tdata->bt2cnt) =3D=3D PROF_TCMAX) {
@@ -554,7 +541,7 @@
 		ql_head_insert(&prof_tdata->lru_ql, ret.p, lru_link);
 		malloc_mutex_lock(ctx.p->lock);
 		ql_tail_insert(&ctx.p->cnts_ql, ret.p, cnts_link);
-		ctx.p->cnt_merged.curobjs--;
+		ctx.p->nlimbo--;
 		malloc_mutex_unlock(ctx.p->lock);
 	} else {
 		/* Move ret to the front of the LRU. */
@@ -687,26 +674,30 @@
 static void
 prof_ctx_destroy(prof_ctx_t *ctx)
 {
+	prof_tdata_t *prof_tdata;
=20
 	cassert(config_prof);
=20
 	/*
 	 * Check that ctx is still unused by any thread cache before destroying
-	 * it.  prof_lookup() artificially raises ctx->cnt_merge.curobjs in
-	 * order to avoid a race condition with this function, as does
-	 * prof_ctx_merge() in order to avoid a race between the main body of
-	 * prof_ctx_merge() and entry into this function.
+	 * it.  prof_lookup() increments ctx->nlimbo in order to avoid a race
+	 * condition with this function, as does prof_ctx_merge() in order to
+	 * avoid a race between the main body of prof_ctx_merge() and entry
+	 * into this function.
 	 */
-	prof_enter();
+	prof_tdata =3D *prof_tdata_tsd_get();
+	assert((uintptr_t)prof_tdata > (uintptr_t)PROF_TDATA_STATE_MAX);
+	prof_enter(prof_tdata);
 	malloc_mutex_lock(ctx->lock);
-	if (ql_first(&ctx->cnts_ql) =3D=3D NULL && ctx->cnt_merged.curobjs =3D=3D=
 1) {
+	if (ql_first(&ctx->cnts_ql) =3D=3D NULL && ctx->cnt_merged.curobjs =3D=3D=
 0 &&
+	    ctx->nlimbo =3D=3D 1) {
 		assert(ctx->cnt_merged.curbytes =3D=3D 0);
 		assert(ctx->cnt_merged.accumobjs =3D=3D 0);
 		assert(ctx->cnt_merged.accumbytes =3D=3D 0);
 		/* Remove ctx from bt2ctx. */
 		if (ckh_remove(&bt2ctx, ctx->bt, NULL, NULL))
 			assert(false);
-		prof_leave();
+		prof_leave(prof_tdata);
 		/* Destroy ctx. */
 		malloc_mutex_unlock(ctx->lock);
 		bt_destroy(ctx->bt);
@@ -716,9 +707,9 @@
 		 * Compensate for increment in prof_ctx_merge() or
 		 * prof_lookup().
 		 */
-		ctx->cnt_merged.curobjs--;
+		ctx->nlimbo--;
 		malloc_mutex_unlock(ctx->lock);
-		prof_leave();
+		prof_leave(prof_tdata);
 	}
 }
=20
@@ -737,12 +728,12 @@
 	ctx->cnt_merged.accumbytes +=3D cnt->cnts.accumbytes;
 	ql_remove(&ctx->cnts_ql, cnt, cnts_link);
 	if (opt_prof_accum =3D=3D false && ql_first(&ctx->cnts_ql) =3D=3D NULL &&
-	    ctx->cnt_merged.curobjs =3D=3D 0) {
+	    ctx->cnt_merged.curobjs =3D=3D 0 && ctx->nlimbo =3D=3D 0) {
 		/*
-		 * Artificially raise ctx->cnt_merged.curobjs in order to keep
-		 * another thread from winning the race to destroy ctx while
-		 * this one has ctx->lock dropped.  Without this, it would be
-		 * possible for another thread to:
+		 * Increment ctx->nlimbo in order to keep another thread from
+		 * winning the race to destroy ctx while this one has ctx->lock
+		 * dropped.  Without this, it would be possible for another
+		 * thread to:
 		 *
 		 * 1) Sample an allocation associated with ctx.
 		 * 2) Deallocate the sampled object.
@@ -751,7 +742,7 @@
 		 * The result would be that ctx no longer exists by the time
 		 * this thread accesses it in prof_ctx_destroy().
 		 */
-		ctx->cnt_merged.curobjs++;
+		ctx->nlimbo++;
 		destroy =3D true;
 	} else
 		destroy =3D false;
@@ -767,7 +758,16 @@
=20
 	cassert(config_prof);
=20
-	if (opt_prof_accum =3D=3D false && ctx->cnt_summed.curobjs =3D=3D 0) {
+	/*
+	 * Current statistics can sum to 0 as a result of unmerged per thread
+	 * statistics.  Additionally, interval- and growth-triggered dumps can
+	 * occur between the time a ctx is created and when its statistics are
+	 * filled in.  Avoid dumping any ctx that is an artifact of either
+	 * implementation detail.
+	 */
+	if ((opt_prof_accum =3D=3D false && ctx->cnt_summed.curobjs =3D=3D 0) ||
+	    (opt_prof_accum && ctx->cnt_summed.accumobjs =3D=3D 0)) {
+		assert(ctx->cnt_summed.curobjs =3D=3D 0);
 		assert(ctx->cnt_summed.curbytes =3D=3D 0);
 		assert(ctx->cnt_summed.accumobjs =3D=3D 0);
 		assert(ctx->cnt_summed.accumbytes =3D=3D 0);
@@ -830,6 +830,7 @@
 static bool
 prof_dump(bool propagate_err, const char *filename, bool leakcheck)
 {
+	prof_tdata_t *prof_tdata;
 	prof_cnt_t cnt_all;
 	size_t tabind;
 	union {
@@ -844,7 +845,10 @@
=20
 	cassert(config_prof);
=20
-	prof_enter();
+	prof_tdata =3D prof_tdata_get();
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX)
+		return (true);
+	prof_enter(prof_tdata);
 	prof_dump_fd =3D creat(filename, 0644);
 	if (prof_dump_fd =3D=3D -1) {
 		if (propagate_err =3D=3D false) {
@@ -895,7 +899,7 @@
 	if (prof_flush(propagate_err))
 		goto label_error;
 	close(prof_dump_fd);
-	prof_leave();
+	prof_leave(prof_tdata);
=20
 	if (leakcheck && cnt_all.curbytes !=3D 0) {
 		malloc_printf("<jemalloc>: Leak summary: %"PRId64" byte%s, %"
@@ -910,7 +914,7 @@
=20
 	return (false);
 label_error:
-	prof_leave();
+	prof_leave(prof_tdata);
 	return (true);
 }
=20
@@ -932,6 +936,7 @@
 		    "%s.%d.%"PRIu64".%c.heap",
 		    opt_prof_prefix, (int)getpid(), prof_dump_seq, v);
 	}
+	prof_dump_seq++;
 }
=20
 static void
@@ -944,7 +949,7 @@
 	if (prof_booted =3D=3D false)
 		return;
=20
-	if (opt_prof_prefix[0] !=3D '\0') {
+	if (opt_prof_final && opt_prof_prefix[0] !=3D '\0') {
 		malloc_mutex_lock(&prof_dump_seq_mtx);
 		prof_dump_filename(filename, 'f', UINT64_C(0xffffffffffffffff));
 		malloc_mutex_unlock(&prof_dump_seq_mtx);
@@ -955,19 +960,24 @@
 void
 prof_idump(void)
 {
+	prof_tdata_t *prof_tdata;
 	char filename[PATH_MAX + 1];
=20
 	cassert(config_prof);
=20
 	if (prof_booted =3D=3D false)
 		return;
-	malloc_mutex_lock(&enq_mtx);
-	if (enq) {
-		enq_idump =3D true;
-		malloc_mutex_unlock(&enq_mtx);
+	/*
+	 * Don't call prof_tdata_get() here, because it could cause recursive
+	 * allocation.
+	 */
+	prof_tdata =3D *prof_tdata_tsd_get();
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX)
+		return;
+	if (prof_tdata->enq) {
+		prof_tdata->enq_idump =3D true;
 		return;
 	}
-	malloc_mutex_unlock(&enq_mtx);
=20
 	if (opt_prof_prefix[0] !=3D '\0') {
 		malloc_mutex_lock(&prof_dump_seq_mtx);
@@ -1004,19 +1014,24 @@
 void
 prof_gdump(void)
 {
+	prof_tdata_t *prof_tdata;
 	char filename[DUMP_FILENAME_BUFSIZE];
=20
 	cassert(config_prof);
=20
 	if (prof_booted =3D=3D false)
 		return;
-	malloc_mutex_lock(&enq_mtx);
-	if (enq) {
-		enq_gdump =3D true;
-		malloc_mutex_unlock(&enq_mtx);
+	/*
+	 * Don't call prof_tdata_get() here, because it could cause recursive
+	 * allocation.
+	 */
+	prof_tdata =3D *prof_tdata_tsd_get();
+	if ((uintptr_t)prof_tdata <=3D (uintptr_t)PROF_TDATA_STATE_MAX)
+		return;
+	if (prof_tdata->enq) {
+		prof_tdata->enq_gdump =3D true;
 		return;
 	}
-	malloc_mutex_unlock(&enq_mtx);
=20
 	if (opt_prof_prefix[0] !=3D '\0') {
 		malloc_mutex_lock(&prof_dump_seq_mtx);
@@ -1109,6 +1124,10 @@
 	prof_tdata->threshold =3D 0;
 	prof_tdata->accum =3D 0;
=20
+	prof_tdata->enq =3D false;
+	prof_tdata->enq_idump =3D false;
+	prof_tdata->enq_gdump =3D false;
+
 	prof_tdata_tsd_set(&prof_tdata);
=20
 	return (prof_tdata);
@@ -1122,24 +1141,41 @@
=20
 	cassert(config_prof);
=20
-	/*
-	 * Delete the hash table.  All of its contents can still be iterated
-	 * over via the LRU.
-	 */
-	ckh_delete(&prof_tdata->bt2cnt);
-
-	/* Iteratively merge cnt's into the global stats and delete them. */
-	while ((cnt =3D ql_last(&prof_tdata->lru_ql, lru_link)) !=3D NULL) {
-		ql_remove(&prof_tdata->lru_ql, cnt, lru_link);
-		prof_ctx_merge(cnt->ctx, cnt);
-		idalloc(cnt);
+	if (prof_tdata =3D=3D PROF_TDATA_STATE_REINCARNATED) {
+		/*
+		 * Another destructor deallocated memory after this destructor
+		 * was called.  Reset prof_tdata to PROF_TDATA_STATE_PURGATORY
+		 * in order to receive another callback.
+		 */
+		prof_tdata =3D PROF_TDATA_STATE_PURGATORY;
+		prof_tdata_tsd_set(&prof_tdata);
+	} else if (prof_tdata =3D=3D PROF_TDATA_STATE_PURGATORY) {
+		/*
+		 * The previous time this destructor was called, we set the key
+		 * to PROF_TDATA_STATE_PURGATORY so that other destructors
+		 * wouldn't cause re-creation of the prof_tdata.  This time, do
+		 * nothing, so that the destructor will not be called again.
+		 */
+	} else if (prof_tdata !=3D NULL) {
+		/*
+		 * Delete the hash table.  All of its contents can still be
+		 * iterated over via the LRU.
+		 */
+		ckh_delete(&prof_tdata->bt2cnt);
+		/*
+		 * Iteratively merge cnt's into the global stats and delete
+		 * them.
+		 */
+		while ((cnt =3D ql_last(&prof_tdata->lru_ql, lru_link)) !=3D NULL) {
+			ql_remove(&prof_tdata->lru_ql, cnt, lru_link);
+			prof_ctx_merge(cnt->ctx, cnt);
+			idalloc(cnt);
+		}
+		idalloc(prof_tdata->vec);
+		idalloc(prof_tdata);
+		prof_tdata =3D PROF_TDATA_STATE_PURGATORY;
+		prof_tdata_tsd_set(&prof_tdata);
 	}
-
-	idalloc(prof_tdata->vec);
-
-	idalloc(prof_tdata);
-	prof_tdata =3D NULL;
-	prof_tdata_tsd_set(&prof_tdata);
 }
=20
 void
@@ -1205,12 +1241,6 @@
 		if (malloc_mutex_init(&prof_dump_seq_mtx))
 			return (true);
=20
-		if (malloc_mutex_init(&enq_mtx))
-			return (true);
-		enq =3D false;
-		enq_idump =3D false;
-		enq_gdump =3D false;
-
 		if (atexit(prof_fdump) !=3D 0) {
 			malloc_write("<jemalloc>: Error in atexit()\n");
 			if (opt_abort)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/quarantine.c
--- a/head/contrib/jemalloc/src/quarantine.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/quarantine.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,17 +1,31 @@
 #include "jemalloc/internal/jemalloc_internal.h"
=20
+/*
+ * quarantine pointers close to NULL are used to encode state information =
that
+ * is used for cleaning up during thread shutdown.
+ */
+#define	QUARANTINE_STATE_REINCARNATED	((quarantine_t *)(uintptr_t)1)
+#define	QUARANTINE_STATE_PURGATORY	((quarantine_t *)(uintptr_t)2)
+#define	QUARANTINE_STATE_MAX		QUARANTINE_STATE_PURGATORY
+
 /*************************************************************************=
*****/
 /* Data. */
=20
+typedef struct quarantine_obj_s quarantine_obj_t;
 typedef struct quarantine_s quarantine_t;
=20
+struct quarantine_obj_s {
+	void	*ptr;
+	size_t	usize;
+};
+
 struct quarantine_s {
-	size_t	curbytes;
-	size_t	curobjs;
-	size_t	first;
+	size_t			curbytes;
+	size_t			curobjs;
+	size_t			first;
 #define	LG_MAXOBJS_INIT 10
-	size_t	lg_maxobjs;
-	void	*objs[1]; /* Dynamically sized ring buffer. */
+	size_t			lg_maxobjs;
+	quarantine_obj_t	objs[1]; /* Dynamically sized ring buffer. */
 };
=20
 static void	quarantine_cleanup(void *arg);
@@ -35,7 +49,7 @@
 	quarantine_t *quarantine;
=20
 	quarantine =3D (quarantine_t *)imalloc(offsetof(quarantine_t, objs) +
-	    ((ZU(1) << lg_maxobjs) * sizeof(void *)));
+	    ((ZU(1) << lg_maxobjs) * sizeof(quarantine_obj_t)));
 	if (quarantine =3D=3D NULL)
 		return (NULL);
 	quarantine->curbytes =3D 0;
@@ -58,23 +72,22 @@
 		return (quarantine);
=20
 	ret->curbytes =3D quarantine->curbytes;
-	if (quarantine->first + quarantine->curobjs < (ZU(1) <<
+	ret->curobjs =3D quarantine->curobjs;
+	if (quarantine->first + quarantine->curobjs <=3D (ZU(1) <<
 	    quarantine->lg_maxobjs)) {
 		/* objs ring buffer data are contiguous. */
 		memcpy(ret->objs, &quarantine->objs[quarantine->first],
-		    quarantine->curobjs * sizeof(void *));
-		ret->curobjs =3D quarantine->curobjs;
+		    quarantine->curobjs * sizeof(quarantine_obj_t));
 	} else {
 		/* objs ring buffer data wrap around. */
-		size_t ncopy =3D (ZU(1) << quarantine->lg_maxobjs) -
+		size_t ncopy_a =3D (ZU(1) << quarantine->lg_maxobjs) -
 		    quarantine->first;
-		memcpy(ret->objs, &quarantine->objs[quarantine->first], ncopy *
-		    sizeof(void *));
-		ret->curobjs =3D ncopy;
-		if (quarantine->curobjs !=3D 0) {
-			memcpy(&ret->objs[ret->curobjs], quarantine->objs,
-			    quarantine->curobjs - ncopy);
-		}
+		size_t ncopy_b =3D quarantine->curobjs - ncopy_a;
+
+		memcpy(ret->objs, &quarantine->objs[quarantine->first], ncopy_a
+		    * sizeof(quarantine_obj_t));
+		memcpy(&ret->objs[ncopy_a], quarantine->objs, ncopy_b *
+		    sizeof(quarantine_obj_t));
 	}
=20
 	return (ret);
@@ -85,10 +98,10 @@
 {
=20
 	while (quarantine->curbytes > upper_bound && quarantine->curobjs > 0) {
-		void *ptr =3D quarantine->objs[quarantine->first];
-		size_t usize =3D isalloc(ptr, config_prof);
-		idalloc(ptr);
-		quarantine->curbytes -=3D usize;
+		quarantine_obj_t *obj =3D &quarantine->objs[quarantine->first];
+		assert(obj->usize =3D=3D isalloc(obj->ptr, config_prof));
+		idalloc(obj->ptr);
+		quarantine->curbytes -=3D obj->usize;
 		quarantine->curobjs--;
 		quarantine->first =3D (quarantine->first + 1) & ((ZU(1) <<
 		    quarantine->lg_maxobjs) - 1);
@@ -101,14 +114,29 @@
 	quarantine_t *quarantine;
 	size_t usize =3D isalloc(ptr, config_prof);
=20
-	assert(config_fill);
+	cassert(config_fill);
 	assert(opt_quarantine);
=20
 	quarantine =3D *quarantine_tsd_get();
-	if (quarantine =3D=3D NULL && (quarantine =3D
-	    quarantine_init(LG_MAXOBJS_INIT)) =3D=3D NULL) {
-		idalloc(ptr);
-		return;
+	if ((uintptr_t)quarantine <=3D (uintptr_t)QUARANTINE_STATE_MAX) {
+		if (quarantine =3D=3D NULL) {
+			if ((quarantine =3D quarantine_init(LG_MAXOBJS_INIT)) =3D=3D
+			    NULL) {
+				idalloc(ptr);
+				return;
+			}
+		} else {
+			if (quarantine =3D=3D QUARANTINE_STATE_PURGATORY) {
+				/*
+				 * Make a note that quarantine() was called
+				 * after quarantine_cleanup() was called.
+				 */
+				quarantine =3D QUARANTINE_STATE_REINCARNATED;
+				quarantine_tsd_set(&quarantine);
+			}
+			idalloc(ptr);
+			return;
+		}
 	}
 	/*
 	 * Drain one or more objects if the quarantine size limit would be
@@ -128,7 +156,9 @@
 	if (quarantine->curbytes + usize <=3D opt_quarantine) {
 		size_t offset =3D (quarantine->first + quarantine->curobjs) &
 		    ((ZU(1) << quarantine->lg_maxobjs) - 1);
-		quarantine->objs[offset] =3D ptr;
+		quarantine_obj_t *obj =3D &quarantine->objs[offset];
+		obj->ptr =3D ptr;
+		obj->usize =3D usize;
 		quarantine->curbytes +=3D usize;
 		quarantine->curobjs++;
 		if (opt_junk)
@@ -144,9 +174,26 @@
 {
 	quarantine_t *quarantine =3D *(quarantine_t **)arg;
=20
-	if (quarantine !=3D NULL) {
+	if (quarantine =3D=3D QUARANTINE_STATE_REINCARNATED) {
+		/*
+		 * Another destructor deallocated memory after this destructor
+		 * was called.  Reset quarantine to QUARANTINE_STATE_PURGATORY
+		 * in order to receive another callback.
+		 */
+		quarantine =3D QUARANTINE_STATE_PURGATORY;
+		quarantine_tsd_set(&quarantine);
+	} else if (quarantine =3D=3D QUARANTINE_STATE_PURGATORY) {
+		/*
+		 * The previous time this destructor was called, we set the key
+		 * to QUARANTINE_STATE_PURGATORY so that other destructors
+		 * wouldn't cause re-creation of the quarantine.  This time, do
+		 * nothing, so that the destructor will not be called again.
+		 */
+	} else if (quarantine !=3D NULL) {
 		quarantine_drain(quarantine, 0);
 		idalloc(quarantine);
+		quarantine =3D QUARANTINE_STATE_PURGATORY;
+		quarantine_tsd_set(&quarantine);
 	}
 }
=20
@@ -154,7 +201,7 @@
 quarantine_boot(void)
 {
=20
-	assert(config_fill);
+	cassert(config_fill);
=20
 	if (quarantine_tsd_boot())
 		return (true);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/stats.c
--- a/head/contrib/jemalloc/src/stats.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/stats.c	Wed Jul 25 16:21:35 2012 +0300
@@ -295,16 +295,6 @@
 		abort();
 	}
=20
-	if (write_cb =3D=3D NULL) {
-		/*
-		 * The caller did not provide an alternate write_cb callback
-		 * function, so use the default one.  malloc_write() is an
-		 * inline function, so use malloc_message() directly here.
-		 */
-		write_cb =3D je_malloc_message;
-		cbopaque =3D NULL;
-	}
-
 	if (opts !=3D NULL) {
 		unsigned i;
=20
@@ -330,7 +320,8 @@
 		}
 	}
=20
-	write_cb(cbopaque, "___ Begin jemalloc statistics ___\n");
+	malloc_cprintf(write_cb, cbopaque,
+	    "___ Begin jemalloc statistics ___\n");
 	if (general) {
 		int err;
 		const char *cpv;
@@ -375,7 +366,8 @@
 			    "  opt."#n": \"%s\"\n", cpv);		\
 		}
=20
-		write_cb(cbopaque, "Run-time option settings:\n");
+		malloc_cprintf(write_cb, cbopaque,
+		    "Run-time option settings:\n");
 		OPT_WRITE_BOOL(abort)
 		OPT_WRITE_SIZE_T(lg_chunk)
 		OPT_WRITE_SIZE_T(narenas)
@@ -397,6 +389,7 @@
 		OPT_WRITE_BOOL(prof_accum)
 		OPT_WRITE_SSIZE_T(lg_prof_interval)
 		OPT_WRITE_BOOL(prof_gdump)
+		OPT_WRITE_BOOL(prof_final)
 		OPT_WRITE_BOOL(prof_leak)
=20
 #undef OPT_WRITE_BOOL
@@ -424,7 +417,7 @@
 			    "Min active:dirty page ratio per arena: %u:1\n",
 			    (1U << ssv));
 		} else {
-			write_cb(cbopaque,
+			malloc_cprintf(write_cb, cbopaque,
 			    "Min active:dirty page ratio per arena: N/A\n");
 		}
 		if ((err =3D je_mallctl("arenas.tcache_max", &sv, &ssz, NULL, 0))
@@ -446,7 +439,7 @@
 				    " (2^%zd)\n",
 				    (((uint64_t)1U) << ssv), ssv);
 			} else {
-				write_cb(cbopaque,
+				malloc_cprintf(write_cb, cbopaque,
 				    "Average profile dump interval: N/A\n");
 			}
 		}
@@ -497,11 +490,11 @@
=20
 			CTL_GET("arenas.narenas", &narenas, unsigned);
 			{
-				bool initialized[narenas];
+				VARIABLE_ARRAY(bool, initialized, narenas);
 				size_t isz;
 				unsigned i, ninitialized;
=20
-				isz =3D sizeof(initialized);
+				isz =3D sizeof(bool) * narenas;
 				xmallctl("arenas.initialized", initialized,
 				    &isz, NULL, 0);
 				for (i =3D ninitialized =3D 0; i < narenas; i++) {
@@ -526,11 +519,11 @@
=20
 			CTL_GET("arenas.narenas", &narenas, unsigned);
 			{
-				bool initialized[narenas];
+				VARIABLE_ARRAY(bool, initialized, narenas);
 				size_t isz;
 				unsigned i;
=20
-				isz =3D sizeof(initialized);
+				isz =3D sizeof(bool) * narenas;
 				xmallctl("arenas.initialized", initialized,
 				    &isz, NULL, 0);
=20
@@ -546,5 +539,5 @@
 			}
 		}
 	}
-	write_cb(cbopaque, "--- End jemalloc statistics ---\n");
+	malloc_cprintf(write_cb, cbopaque, "--- End jemalloc statistics ---\n");
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/tcache.c
--- a/head/contrib/jemalloc/src/tcache.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/tcache.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,6 +18,52 @@
=20
 /*************************************************************************=
*****/
=20
+size_t	tcache_salloc(const void *ptr)
+{
+
+	return (arena_salloc(ptr, false));
+}
+
+void
+tcache_event_hard(tcache_t *tcache)
+{
+	size_t binind =3D tcache->next_gc_bin;
+	tcache_bin_t *tbin =3D &tcache->tbins[binind];
+	tcache_bin_info_t *tbin_info =3D &tcache_bin_info[binind];
+
+	if (tbin->low_water > 0) {
+		/*
+		 * Flush (ceiling) 3/4 of the objects below the low water mark.
+		 */
+		if (binind < NBINS) {
+			tcache_bin_flush_small(tbin, binind, tbin->ncached -
+			    tbin->low_water + (tbin->low_water >> 2), tcache);
+		} else {
+			tcache_bin_flush_large(tbin, binind, tbin->ncached -
+			    tbin->low_water + (tbin->low_water >> 2), tcache);
+		}
+		/*
+		 * Reduce fill count by 2X.  Limit lg_fill_div such that the
+		 * fill count is always at least 1.
+		 */
+		if ((tbin_info->ncached_max >> (tbin->lg_fill_div+1)) >=3D 1)
+			tbin->lg_fill_div++;
+	} else if (tbin->low_water < 0) {
+		/*
+		 * Increase fill count by 2X.  Make sure lg_fill_div stays
+		 * greater than 0.
+		 */
+		if (tbin->lg_fill_div > 1)
+			tbin->lg_fill_div--;
+	}
+	tbin->low_water =3D tbin->ncached;
+
+	tcache->next_gc_bin++;
+	if (tcache->next_gc_bin =3D=3D nhbins)
+		tcache->next_gc_bin =3D 0;
+	tcache->ev_cnt =3D 0;
+}
+
 void *
 tcache_alloc_small_hard(tcache_t *tcache, tcache_bin_t *tbin, size_t binin=
d)
 {
@@ -74,12 +120,13 @@
 				size_t pageind =3D ((uintptr_t)ptr -
 				    (uintptr_t)chunk) >> LG_PAGE;
 				arena_chunk_map_t *mapelm =3D
-				    &chunk->map[pageind-map_bias];
+				    arena_mapp_get(chunk, pageind);
 				if (config_fill && opt_junk) {
 					arena_alloc_junk_small(ptr,
 					    &arena_bin_info[binind], true);
 				}
-				arena_dalloc_bin(arena, chunk, ptr, mapelm);
+				arena_dalloc_bin_locked(arena, chunk, ptr,
+				    mapelm);
 			} else {
 				/*
 				 * This object was allocated via a different
@@ -152,7 +199,7 @@
 			assert(ptr !=3D NULL);
 			chunk =3D (arena_chunk_t *)CHUNK_ADDR2BASE(ptr);
 			if (chunk->arena =3D=3D arena)
-				arena_dalloc_large(arena, chunk, ptr);
+				arena_dalloc_large_locked(arena, chunk, ptr);
 			else {
 				/*
 				 * This object was allocated via a different
@@ -308,22 +355,14 @@
 		arena_t *arena =3D chunk->arena;
 		size_t pageind =3D ((uintptr_t)tcache - (uintptr_t)chunk) >>
 		    LG_PAGE;
-		arena_chunk_map_t *mapelm =3D &chunk->map[pageind-map_bias];
-		arena_run_t *run =3D (arena_run_t *)((uintptr_t)chunk +
-		    (uintptr_t)((pageind - (mapelm->bits >> LG_PAGE)) <<
-		    LG_PAGE));
-		arena_bin_t *bin =3D run->bin;
+		arena_chunk_map_t *mapelm =3D arena_mapp_get(chunk, pageind);
=20
-		malloc_mutex_lock(&bin->lock);
-		arena_dalloc_bin(arena, chunk, tcache, mapelm);
-		malloc_mutex_unlock(&bin->lock);
+		arena_dalloc_bin(arena, chunk, tcache, pageind, mapelm);
 	} else if (tcache_size <=3D tcache_maxclass) {
 		arena_chunk_t *chunk =3D CHUNK_ADDR2BASE(tcache);
 		arena_t *arena =3D chunk->arena;
=20
-		malloc_mutex_lock(&arena->lock);
 		arena_dalloc_large(arena, chunk, tcache);
-		malloc_mutex_unlock(&arena->lock);
 	} else
 		idalloc(tcache);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/tsd.c
--- a/head/contrib/jemalloc/src/tsd.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/tsd.c	Wed Jul 25 16:21:35 2012 +0300
@@ -14,7 +14,7 @@
 {
=20
 	/* Avoid choose_arena() in order to dodge bootstrapping issues. */
-	return arena_malloc(arenas[0], size, false, false);
+	return (arena_malloc(arenas[0], size, false, false));
 }
=20
 void
@@ -31,11 +31,14 @@
 	not_reached();
 }
=20
-#ifdef JEMALLOC_MALLOC_THREAD_CLEANUP
+#if defined(JEMALLOC_MALLOC_THREAD_CLEANUP) || defined(_WIN32)
+#ifndef _WIN32
+JEMALLOC_EXPORT
+#endif
 void
 _malloc_thread_cleanup(void)
 {
-	bool pending[ncleanups], again;
+	bool pending[MALLOC_TSD_CLEANUPS_MAX], again;
 	unsigned i;
=20
 	for (i =3D 0; i < ncleanups; i++)
@@ -45,7 +48,7 @@
 		again =3D false;
 		for (i =3D 0; i < ncleanups; i++) {
 			if (pending[i]) {
-				pending[i] =3D cleanups[i].f(cleanups[i].arg);
+				pending[i] =3D cleanups[i]();
 				if (pending[i])
 					again =3D true;
 			}
@@ -55,12 +58,11 @@
 #endif
=20
 void
-malloc_tsd_cleanup_register(bool (*f)(void *), void *arg)
+malloc_tsd_cleanup_register(bool (*f)(void))
 {
=20
 	assert(ncleanups < MALLOC_TSD_CLEANUPS_MAX);
-	cleanups[ncleanups].f =3D f;
-	cleanups[ncleanups].arg =3D arg;
+	cleanups[ncleanups] =3D f;
 	ncleanups++;
 }
=20
@@ -70,3 +72,36 @@
=20
 	ncleanups =3D 0;
 }
+
+#ifdef _WIN32
+static BOOL WINAPI
+_tls_callback(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+
+	switch (fdwReason) {
+#ifdef JEMALLOC_LAZY_LOCK
+	case DLL_THREAD_ATTACH:
+		isthreaded =3D true;
+		break;
+#endif
+	case DLL_THREAD_DETACH:
+		_malloc_thread_cleanup();
+		break;
+	default:
+		break;
+	}
+	return (true);
+}
+
+#ifdef _MSC_VER
+#  ifdef _M_IX86
+#    pragma comment(linker, "/INCLUDE:__tls_used")
+#  else
+#    pragma comment(linker, "/INCLUDE:_tls_used")
+#  endif
+#  pragma section(".CRT$XLY",long,read)
+#endif
+JEMALLOC_SECTION(".CRT$XLY") JEMALLOC_ATTR(used)
+static const BOOL	(WINAPI *tls_callback)(HINSTANCE hinstDLL,
+    DWORD fdwReason, LPVOID lpvReserved) =3D _tls_callback;
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/jemalloc/src/util.c
--- a/head/contrib/jemalloc/src/util.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/jemalloc/src/util.c	Wed Jul 25 16:21:35 2012 +0300
@@ -40,8 +40,7 @@
 /*************************************************************************=
*****/
=20
 /* malloc_message() setup. */
-JEMALLOC_CATTR(visibility("hidden"), static)
-void
+static void
 wrtmessage(void *cbopaque, const char *s)
 {
=20
@@ -57,10 +56,9 @@
 #endif
 }
=20
-void	(*je_malloc_message)(void *, const char *s)
-    JEMALLOC_ATTR(visibility("default")) =3D wrtmessage;
+JEMALLOC_EXPORT void	(*je_malloc_message)(void *, const char *s);
=20
-JEMALLOC_CATTR(visibility("hidden"), static)
+JEMALLOC_ATTR(visibility("hidden"))
 void
 wrtmessage_1_0(const char *s1, const char *s2, const char *s3,
     const char *s4)
@@ -77,13 +75,32 @@
 __sym_compat(_malloc_message, __malloc_message_1_0, FBSD_1.0);
=20
 /*
+ * Wrapper around malloc_message() that avoids the need for
+ * je_malloc_message(...) throughout the code.
+ */
+void
+malloc_write(const char *s)
+{
+
+	if (je_malloc_message !=3D NULL)
+		je_malloc_message(NULL, s);
+	else
+		wrtmessage(NULL, s);
+}
+
+/*
  * glibc provides a non-standard strerror_r() when _GNU_SOURCE is defined,=
 so
  * provide a wrapper.
  */
 int
-buferror(int errnum, char *buf, size_t buflen)
+buferror(char *buf, size_t buflen)
 {
-#ifdef _GNU_SOURCE
+
+#ifdef _WIN32
+	FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0,
+	    (LPSTR)buf, buflen, NULL);
+	return (0);
+#elif defined(_GNU_SOURCE)
 	char *b =3D strerror_r(errno, buf, buflen);
 	if (b !=3D buf) {
 		strncpy(buf, b, buflen);
@@ -104,7 +121,7 @@
 	const char *p, *ns;
=20
 	if (base < 0 || base =3D=3D 1 || base > 36) {
-		errno =3D EINVAL;
+		set_errno(EINVAL);
 		return (UINTMAX_MAX);
 	}
 	b =3D base;
@@ -179,7 +196,7 @@
 		ret +=3D digit;
 		if (ret < pret) {
 			/* Overflow. */
-			errno =3D ERANGE;
+			set_errno(ERANGE);
 			return (UINTMAX_MAX);
 		}
 		p++;
@@ -299,7 +316,6 @@
 	int ret;
 	size_t i;
 	const char *f;
-	va_list tap;
=20
 #define	APPEND_C(c) do {						\
 	if (i < size)							\
@@ -336,12 +352,21 @@
 	case '?':							\
 		val =3D va_arg(ap, int);					\
 		break;							\
+	case '?' | 0x80:						\
+		val =3D va_arg(ap, unsigned int);				\
+		break;							\
 	case 'l':							\
 		val =3D va_arg(ap, long);					\
 		break;							\
+	case 'l' | 0x80:						\
+		val =3D va_arg(ap, unsigned long);			\
+		break;							\
 	case 'q':							\
 		val =3D va_arg(ap, long long);				\
 		break;							\
+	case 'q' | 0x80:						\
+		val =3D va_arg(ap, unsigned long long);			\
+		break;							\
 	case 'j':							\
 		val =3D va_arg(ap, intmax_t);				\
 		break;							\
@@ -351,6 +376,9 @@
 	case 'z':							\
 		val =3D va_arg(ap, ssize_t);				\
 		break;							\
+	case 'z' | 0x80:						\
+		val =3D va_arg(ap, size_t);				\
+		break;							\
 	case 'p': /* Synthetic; used for %p. */				\
 		val =3D va_arg(ap, uintptr_t);				\
 		break;							\
@@ -358,9 +386,6 @@
 	}								\
 } while (0)
=20
-	if (config_debug)
-		va_copy(tap, ap);
-
 	i =3D 0;
 	f =3D format;
 	while (true) {
@@ -374,7 +399,7 @@
 			bool plus_plus =3D false;
 			int prec =3D -1;
 			int width =3D -1;
-			char len =3D '?';
+			unsigned char len =3D '?';
=20
 			f++;
 			if (*f =3D=3D '%') {
@@ -419,9 +444,9 @@
 			case '0': case '1': case '2': case '3': case '4':
 			case '5': case '6': case '7': case '8': case '9': {
 				uintmax_t uwidth;
-				errno =3D 0;
+				set_errno(0);
 				uwidth =3D malloc_strtoumax(f, (char **)&f, 10);
-				assert(uwidth !=3D UINTMAX_MAX || errno !=3D
+				assert(uwidth !=3D UINTMAX_MAX || get_errno() !=3D
 				    ERANGE);
 				width =3D (int)uwidth;
 				if (*f =3D=3D '.') {
@@ -445,9 +470,10 @@
 			case '0': case '1': case '2': case '3': case '4':
 			case '5': case '6': case '7': case '8': case '9': {
 				uintmax_t uprec;
-				errno =3D 0;
+				set_errno(0);
 				uprec =3D malloc_strtoumax(f, (char **)&f, 10);
-				assert(uprec !=3D UINTMAX_MAX || errno !=3D ERANGE);
+				assert(uprec !=3D UINTMAX_MAX || get_errno() !=3D
+				    ERANGE);
 				prec =3D (int)uprec;
 				break;
 			}
@@ -496,7 +522,7 @@
 				uintmax_t val JEMALLOC_CC_SILENCE_INIT(0);
 				char buf[O2S_BUFSIZE];
=20
-				GET_ARG_NUMERIC(val, len);
+				GET_ARG_NUMERIC(val, len | 0x80);
 				s =3D o2s(val, alt_form, buf, &slen);
 				APPEND_PADDED_S(s, slen, width, left_justify);
 				f++;
@@ -505,7 +531,7 @@
 				uintmax_t val JEMALLOC_CC_SILENCE_INIT(0);
 				char buf[U2S_BUFSIZE];
=20
-				GET_ARG_NUMERIC(val, len);
+				GET_ARG_NUMERIC(val, len | 0x80);
 				s =3D u2s(val, 10, false, buf, &slen);
 				APPEND_PADDED_S(s, slen, width, left_justify);
 				f++;
@@ -514,7 +540,7 @@
 				uintmax_t val JEMALLOC_CC_SILENCE_INIT(0);
 				char buf[X2S_BUFSIZE];
=20
-				GET_ARG_NUMERIC(val, len);
+				GET_ARG_NUMERIC(val, len | 0x80);
 				s =3D x2s(val, alt_form, *f =3D=3D 'X', buf, &slen);
 				APPEND_PADDED_S(s, slen, width, left_justify);
 				f++;
@@ -598,7 +624,8 @@
 		 * function, so use the default one.  malloc_write() is an
 		 * inline function, so use malloc_message() directly here.
 		 */
-		write_cb =3D je_malloc_message;
+		write_cb =3D (je_malloc_message !=3D NULL) ? je_malloc_message :
+		    wrtmessage;
 		cbopaque =3D NULL;
 	}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/LICENSE
--- a/head/contrib/less/LICENSE	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/LICENSE	Wed Jul 25 16:21:35 2012 +0300
@@ -2,7 +2,7 @@
                           ------------
=20
 Less
-Copyright (C) 1984-2011  Mark Nudelman
+Copyright (C) 1984-2012  Mark Nudelman
=20
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/Makefile.aut
--- a/head/contrib/less/Makefile.aut	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/Makefile.aut	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,6 @@
 # Makefile for authoring less.
=20
-EMAIL =3D markn at greenwoodsoftware.com
+EMAIL =3D bug-less at gnu.org
 HOMEPAGE =3D http://www.greenwoodsoftware.com/less
 SHELL =3D /bin/sh
 RCS =3D rcs
@@ -112,8 +112,7 @@
 	echo "Preparing $$REL"; \
 	rm -rf $$REL; mkdir $$REL; \
 	for file in ${DISTFILES}; do \
-	  cp -p $$file $$REL; \
-	  chmod -w $$REL/$$file; \
+	  ./add_copyright $$file $$REL; \
 	done; \
 	cd $$REL; chmod +w ${DISTFILES_W}; cd ..; \
 	echo "Creating release/$$REL/$$REL.tar.gz"; \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/NEWS
--- a/head/contrib/less/NEWS	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/NEWS	Wed Jul 25 16:21:35 2012 +0300
@@ -7,8 +7,34 @@
       http://www.greenwoodsoftware.com/less
   You can also download the latest version of less from there.
=20
-  To report bugs, suggestions or comments, send email to=20
-  bug-less at gnu.org or markn at greenwoodsoftware.com.
+  To report bugs, suggestions or comments, send email to bug-less at gnu.org.
+
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+
+	Major changes between "less" versions 444 and 451
+
+* Add ESC-F command to keep reading data until a pattern is found.
+
+* Use exit code of LESSOPEN script if LESSOPEN starts with "||".
+
+* When up/down arrow is used on the command line immediately after
+  typing text, the next command starting with that text is found.
+
+* Add support for GNU regex.
+
+* Add configure option --with-regex=3Dnone and fix compile errors
+  when compiling with no regex library.
+
+* Fix bugs handling SGR sequences in Win32.
+
+* Fix possible crashes caused by malformed LESSOPEN or=20
+  LESSCLOSE variables.
+
+* Fix bug highlighting text which is discontiguous in the file=20
+  due to backspace processing.
+
+* Fix bug in displaying status column when scrolling backwards=20
+  with -J and -S in effect.
=20
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/README
--- a/head/contrib/less/README	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/README	Wed Jul 25 16:21:35 2012 +0300
@@ -7,9 +7,9 @@
 **************************************************************************
 **************************************************************************
=20
-                            Less, version 444
+                            Less, version 451
=20
-    This is the distribution of less, version 444, released 09 Jun 2011.
+    This is the distribution of less, version 451, released 21 Jul 2012.
     This program is part of the GNU project (http://www.gnu.org).
=20
     This program is free software.  You may redistribute it and/or
@@ -21,7 +21,7 @@
     or
     2. The Less License, in the file LICENSE.
=20
-    Please report any problems to bug-less at gnu.org or markn at greenwoodsoftw=
are.com.
+    Please report any problems to bug-less at gnu.org.
     See http://www.greenwoodsoftware.com/less for the latest info.
=20
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
@@ -60,10 +60,11 @@
         regcomp        Use the V8-compatible regcomp.
         regcomp-local  Use Henry Spencer's V8-compatible regcomp
                        (source is supplied with less).
+        none           No regular expressions, only simple string matching.
    --with-secure
      Builds a "secure" version of less, with some features disabled
-	 to prevent users from viewing other files, accessing shell
-	 commands, etc.
+     to prevent users from viewing other files, accessing shell
+     commands, etc.
=20
=20
 3. It is a good idea to look over the generated Makefile and defines.h
@@ -96,7 +97,7 @@
    bindir and/or mandir to the appropriate directories.
=20
 If you have any problems building or running "less", suggestions,=20
-complaints, etc., you may mail to the author at markn at greenwoodsoftware.co=
m.
+complaints, etc., you may mail to bug-less at gnu.org.
=20
 Note to hackers: comments noting possible improvements are enclosed
 in double curly brackets {{ like this }}.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/brac.c
--- a/head/contrib/less/brac.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/brac.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/ch.c
--- a/head/contrib/less/ch.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/ch.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -582,6 +581,8 @@
 		return (NULL_POSITION);
 	if (ch_flags & CH_HELPFILE)
 		return (size_helpdata);
+	if (ch_flags & CH_NODATA)
+		return (0);
 	return (ch_fsize);
 }
=20
@@ -806,6 +807,17 @@
 }
=20
 /*
+ * Force EOF to be at the current read position.
+ * This is used after an ignore_eof read, during which the EOF may change.
+ */
+	public void
+ch_set_eof()
+{
+	ch_fsize =3D ch_fpos;
+}
+
+
+/*
  * Initialize file state for a new file.
  */
 	public void
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/charset.c
--- a/head/contrib/less/charset.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/charset.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/charset.h
--- a/head/contrib/less/charset.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/charset.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 2005-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
 #define IS_ASCII_OCTET(c)   (((c) & 0x80) =3D=3D 0)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/cmd.h
--- a/head/contrib/less/cmd.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/cmd.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,15 +1,14 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
-#define	MAX_USERCMD		500
+#define	MAX_USERCMD		1000
 #define	MAX_CMDLEN		16
=20
 #define	A_B_LINE		2
@@ -66,6 +65,7 @@
 #define	A_NEXT_TAG		53
 #define	A_PREV_TAG		54
 #define	A_FILTER		55
+#define	A_F_UNTIL_HILITE	56
=20
 #define	A_INVALID		100
 #define	A_NOACTION		101
@@ -78,7 +78,7 @@
 #define	A_EXTRA			0200
=20
=20
-/* Line editting characters */
+/* Line editing characters */
=20
 #define	EC_BACKSPACE	1
 #define	EC_LINEKILL	2
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/cmdbuf.c
--- a/head/contrib/less/cmdbuf.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/cmdbuf.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -30,6 +29,7 @@
 static char *cp;		/* Pointer into cmdbuf */
 static int cmd_offset;		/* Index into cmdbuf of first displayed char */
 static int literal;		/* Next input char should not be interpreted */
+static int updown_match =3D -1;	/* Prefix length in up/down movement */
=20
 #if TAB_COMPLETE_FILENAME
 static int cmd_complete();
@@ -122,6 +122,7 @@
 	cmd_offset =3D 0;
 	literal =3D 0;
 	cmd_mbc_buf_len =3D 0;
+	updown_match =3D -1;
 }
=20
 /*
@@ -132,6 +133,7 @@
 {
 	cmd_col =3D prompt_col =3D 0;
 	cmd_mbc_buf_len =3D 0;
+	updown_match =3D -1;
 }
=20
 /*
@@ -504,6 +506,7 @@
 	/*
 	 * Reprint the tail of the line from the inserted char.
 	 */
+	updown_match =3D -1;
 	cmd_repaint(cp);
 	cmd_right();
 	return (CC_OK);
@@ -547,6 +550,7 @@
 	/*
 	 * Repaint the buffer after the erased char.
 	 */
+	updown_match =3D -1;
 	cmd_repaint(cp);
 =09
 	/*
@@ -643,6 +647,7 @@
 	cmd_offset =3D 0;
 	cmd_home();
 	*cp =3D '\0';
+	updown_match =3D -1;
 	cmd_repaint(cp);
=20
 	/*
@@ -675,12 +680,15 @@
 #if CMD_HISTORY
 /*
  * Move up or down in the currently selected command history list.
+ * Only consider entries whose first updown_match chars are equal to
+ * cmdbuf's corresponding chars.
  */
 	static int
 cmd_updown(action)
 	int action;
 {
 	char *s;
+	struct mlist *ml;
 =09
 	if (curr_mlist =3D=3D NULL)
 	{
@@ -690,24 +698,47 @@
 		bell();
 		return (CC_OK);
 	}
-	cmd_home();
-	clear_eol();
+
+	if (updown_match < 0)
+	{
+		updown_match =3D cp - cmdbuf;
+	}
+
 	/*
-	 * Move curr_mp to the next/prev entry.
+	 * Find the next history entry which matches.
 	 */
-	if (action =3D=3D EC_UP)
-		curr_mlist->curr_mp =3D curr_mlist->curr_mp->prev;
-	else
-		curr_mlist->curr_mp =3D curr_mlist->curr_mp->next;
+	for (ml =3D curr_mlist->curr_mp;;)
+	{
+		ml =3D (action =3D=3D EC_UP) ? ml->prev : ml->next;
+		if (ml =3D=3D curr_mlist)
+		{
+			/*
+			 * We reached the end (or beginning) of the list.
+			 */
+			break;
+		}
+		if (strncmp(cmdbuf, ml->string, updown_match) =3D=3D 0)
+		{
+			/*
+			 * This entry matches; stop here.
+			 * Copy the entry into cmdbuf and echo it on the screen.
+			 */
+			curr_mlist->curr_mp =3D ml;
+			s =3D ml->string;
+			if (s =3D=3D NULL)
+				s =3D "";
+			strcpy(cmdbuf, s);
+			cmd_home();
+			clear_eol();
+			for (cp =3D cmdbuf;  *cp !=3D '\0';  )
+				cmd_right();
+			return (CC_OK);
+		}
+	}
 	/*
-	 * Copy the entry into cmdbuf and echo it on the screen.
+	 * We didn't find a history entry that matches.
 	 */
-	s =3D curr_mlist->curr_mp->string;
-	if (s =3D=3D NULL)
-		s =3D "";
-	strcpy(cmdbuf, s);
-	for (cp =3D cmdbuf;  *cp !=3D '\0';  )
-		cmd_right();
+	bell();
 	return (CC_OK);
 }
 #endif
@@ -1056,7 +1087,11 @@
 		tk_text =3D fcomplete(word);
 	} else
 	{
+#if MSDOS_COMPILER
+		char *qword =3D NULL;
+#else
 		char *qword =3D shell_quote(word+1);
+#endif
 		if (qword =3D=3D NULL)
 			tk_text =3D fcomplete(word+1);
 		else
@@ -1457,9 +1492,6 @@
 	FILE *f;
 	int modified =3D 0;
=20
-	filename =3D histfile_name();
-	if (filename =3D=3D NULL)
-		return;
 	if (mlist_search.modified)
 		modified =3D 1;
 #if SHELL_ESCAPE || PIPEC
@@ -1468,6 +1500,9 @@
 #endif
 	if (!modified)
 		return;
+	filename =3D histfile_name();
+	if (filename =3D=3D NULL)
+		return;
 	f =3D fopen(filename, "w");
 	free(filename);
 	if (f =3D=3D NULL)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/command.c
--- a/head/contrib/less/command.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/command.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/command.c 229196 2012-01-01 20:13:02Z dim $=
 */
+/* $FreeBSD: head/contrib/less/command.c 238730 2012-07-24 01:09:11Z delph=
ij $ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -38,6 +37,7 @@
 extern int hshift;
 extern int show_attn;
 extern int less_is_more;
+extern POSITION highest_hilite;
 extern char *every_first_cmd;
 extern char *curr_altfilename;
 extern char version[];
@@ -104,8 +104,8 @@
 	static void
 start_mca(action, prompt, mlist, cmdflags)
 	int action;
-	char *prompt;
-	void constant *mlist;
+	constant char *prompt;
+	constant void *mlist;
 	int cmdflags;
 {
 	mca =3D action;
@@ -686,7 +686,7 @@
 	static void
 prompt()
 {
-	register char constant *p;
+	register constant char *p;
=20
 	if (ungot !=3D NULL)
 	{
@@ -962,6 +962,46 @@
 }
=20
 /*
+ * Forward forever, or until a highlighted line appears.
+ */
+	static int
+forw_loop(until_hilite)
+	int until_hilite;
+{
+	POSITION curr_len;
+
+	if (ch_getflags() & CH_HELPFILE)
+		return (A_NOACTION);
+
+	cmd_exec();
+	jump_forw();
+	curr_len =3D ch_length();
+	highest_hilite =3D until_hilite ? curr_len : NULL_POSITION;
+	ignore_eoi =3D 1;
+	while (!sigs)
+	{
+		if (until_hilite && highest_hilite > curr_len)
+		{
+			bell();
+			break;
+		}
+		make_display();
+		forward(1, 0, 0);
+	}
+	ignore_eoi =3D 0;
+	ch_set_eof();
+
+	/*
+	 * This gets us back in "F mode" after processing=20
+	 * a non-abort signal (e.g. window-change). =20
+	 */
+	if (sigs && !ABORT_SIGS())
+		return (until_hilite ? A_F_UNTIL_HILITE : A_F_FOREVER);
+
+	return (A_NOACTION);
+}
+
+/*
  * Main command processor.
  * Accept and execute commands until a quit command.
  */
@@ -979,6 +1019,7 @@
 	IFILE old_ifile;
 	IFILE new_ifile;
 	char *tagfile;
+	int until_hilite =3D 0;
=20
 	search_type =3D SRCH_FORW;
 	wscroll =3D (sc_height + 1) / 2;
@@ -1206,23 +1247,11 @@
 			/*
 			 * Forward forever, ignoring EOF.
 			 */
-			if (ch_getflags() & CH_HELPFILE)
-				break;
-			cmd_exec();
-			jump_forw();
-			ignore_eoi =3D 1;
-			while (!sigs)
-			{
-				make_display();
-				forward(1, 0, 0);
-			}
-			ignore_eoi =3D 0;
-			/*
-			 * This gets us back in "F mode" after processing=20
-			 * a non-abort signal (e.g. window-change). =20
-			 */
-			if (sigs && !ABORT_SIGS())
-				newaction =3D A_F_FOREVER;
+			newaction =3D forw_loop(0);
+			break;
+
+		case A_F_UNTIL_HILITE:
+			newaction =3D forw_loop(1);
 			break;
=20
 		case A_F_SCROLL:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/configure
--- a/head/contrib/less/configure	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/configure	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for less 1.
+# Generated by GNU Autoconf 2.68 for less 1.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -89,6 +89,7 @@
 IFS=3D" ""	$as_nl"
=20
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=3D
 case $0 in #((
   *[\\/]* ) as_myself=3D$0 ;;
   *) as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
@@ -214,11 +215,18 @@
   # We cannot yet assume a decent shell, so we have to provide a
 	# neutralization value for shells without unset; and this also
 	# works around shells that cannot unset nonexistent variables.
+	# Preserve -v and -x to the replacement shell.
 	BASH_ENV=3D/dev/null
 	ENV=3D/dev/null
 	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
 	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+	case $- in # ((((
+	  *v*x* | *x*v* ) as_opts=3D-vx ;;
+	  *v* ) as_opts=3D-v ;;
+	  *x* ) as_opts=3D-x ;;
+	  * ) as_opts=3D ;;
+	esac
+	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
 fi
=20
     if test x$as_have_required =3D xno; then :
@@ -1067,7 +1075,7 @@
     $as_echo "$as_me: WARNING: you should use --build, --host, --target" >=
&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
       $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=3D$ac_option} ${host_alias=3D$ac_option} ${target_alia=
s=3D$ac_option}
+    : "${build_alias=3D$ac_option} ${host_alias=3D$ac_option} ${target_ali=
as=3D$ac_option}"
     ;;
=20
   esac
@@ -1281,7 +1289,7 @@
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=3Dno)
   --with-secure  Compile in secure mode
   --with-no-float  Do not use floating point
-  --with-regex=3D{auto,pcre,posix,regcmp,re_comp,regcomp,regcomp-local}  S=
elect a regular expression library  auto
+  --with-regex=3D{auto,gnu,pcre,posix,regcmp,re_comp,regcomp,regcomp-local=
,none}  Select a regular expression library  auto
   --with-editor=3DPROGRAM   use PROGRAM as the default editor vi
=20
 Some influential environment variables:
@@ -1361,7 +1369,7 @@
 if $ac_init_version; then
   cat <<\_ACEOF
 less configure 1
-generated by GNU Autoconf 2.67
+generated by GNU Autoconf 2.68
=20
 Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1407,7 +1415,7 @@
=20
 	ac_retval=3D1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
=20
 } # ac_fn_c_try_compile
@@ -1453,7 +1461,7 @@
   # interfere with the next link command; also delete a directory that is
   # left behind by Apple's compiler.  We do this before executing the acti=
ons.
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
=20
 } # ac_fn_c_try_link
@@ -1490,7 +1498,7 @@
=20
     ac_retval=3D1
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
=20
 } # ac_fn_c_try_cpp
@@ -1532,7 +1540,7 @@
        ac_retval=3D$ac_status
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
=20
 } # ac_fn_c_try_run
@@ -1545,10 +1553,10 @@
 ac_fn_c_check_header_mongrel ()
 {
   as_lineno=3D${as_lineno-"$1"} as_lineno_stack=3Das_lineno_stack=3D$as_li=
neno_stack
-  if eval "test \"\${$3+set}\"" =3D set; then :
+  if eval \${$3+:} false; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" =3D set; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 fi
 eval ac_res=3D\$$3
@@ -1611,7 +1619,7 @@
 esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" =3D set; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=3D\$ac_header_compiler"
@@ -1620,7 +1628,7 @@
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
 fi
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
=20
 } # ac_fn_c_check_header_mongrel
=20
@@ -1633,7 +1641,7 @@
   as_lineno=3D${as_lineno-"$1"} as_lineno_stack=3Das_lineno_stack=3D$as_li=
neno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" =3D set; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1651,7 +1659,7 @@
 eval ac_res=3D\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
=20
 } # ac_fn_c_check_header_compile
=20
@@ -1664,7 +1672,7 @@
   as_lineno=3D${as_lineno-"$1"} as_lineno_stack=3Das_lineno_stack=3D$as_li=
neno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" =3D set; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   eval "$3=3Dno"
@@ -1705,7 +1713,7 @@
 eval ac_res=3D\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
=20
 } # ac_fn_c_check_type
=20
@@ -1717,7 +1725,7 @@
   as_lineno=3D${as_lineno-"$1"} as_lineno_stack=3Das_lineno_stack=3D$as_li=
neno_stack
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
 $as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" =3D set; then :
+if eval \${$3+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1772,7 +1780,7 @@
 eval ac_res=3D\$$3
 	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
 $as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; test "x$as_lineno_stack" =3D x && { as_lineno=3D;=
 unset as_lineno;}
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
=20
 } # ac_fn_c_check_func
 cat >config.log <<_ACEOF
@@ -1780,7 +1788,7 @@
 running configure, to aid debugging if configure makes a mistake.
=20
 It was created by less $as_me 1, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
+generated by GNU Autoconf 2.68.  Invocation command line was
=20
   $ $0 $@
=20
@@ -2142,7 +2150,7 @@
 set dummy ${ac_tool_prefix}gcc; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" =3D set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2182,7 +2190,7 @@
 set dummy gcc; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" =3D set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2235,7 +2243,7 @@
 set dummy ${ac_tool_prefix}cc; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" =3D set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2275,7 +2283,7 @@
 set dummy cc; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" =3D set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2334,7 +2342,7 @@
 set dummy $ac_tool_prefix$ac_prog; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" =3D set; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
@@ -2378,7 +2386,7 @@
 set dummy $ac_prog; ac_word=3D$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" =3D set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
@@ -2661,7 +2669,7 @@
 ac_clean_files=3D$ac_clean_files_save
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object fil=
es" >&5
 $as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" =3D set; then :
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2712,7 +2720,7 @@
 ac_objext=3D$OBJEXT
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the=
 GNU C compiler" >&5
 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" =3D set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2749,7 +2757,7 @@
 ac_save_CFLAGS=3D$CFLAGS
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" =
>&5
 $as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" =3D set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=3D$ac_c_werror_flag
@@ -2827,7 +2835,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept=
 ISO C89" >&5
 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" =3D set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=3Dno
@@ -2925,7 +2933,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing s=
trerror" >&5
 $as_echo_n "checking for library containing strerror... " >&6; }
-if test "${ac_cv_search_strerror+set}" =3D set; then :
+if ${ac_cv_search_strerror+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_func_search_save_LIBS=3D$LIBS
@@ -2959,11 +2967,11 @@
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
-  if test "${ac_cv_search_strerror+set}" =3D set; then :
+  if ${ac_cv_search_strerror+:} false; then :
   break
 fi
 done
-if test "${ac_cv_search_strerror+set}" =3D set; then :
+if ${ac_cv_search_strerror+:} false; then :
=20
 else
   ac_cv_search_strerror=3Dno
@@ -2991,7 +2999,7 @@
   CPP=3D
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" =3D set; then :
+  if ${ac_cv_prog_CPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
@@ -3119,7 +3127,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles lo=
ng lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" =3D set; then :
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$GREP"; then
@@ -3182,7 +3190,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
 $as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" =3D set; then :
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
@@ -3250,7 +3258,7 @@
 if test $ac_cv_c_compiler_gnu =3D yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -t=
raditional" >&5
 $as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if test "${ac_cv_prog_gcc_traditional+set}" =3D set; then :
+if ${ac_cv_prog_gcc_traditional+:} false; then :
   $as_echo_n "(cached) " >&6
 else
     ac_pattern=3D"Autoconf.*'x'"
@@ -3335,7 +3343,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible ins=
tall" >&5
 $as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" =3D set; then :
+if ${ac_cv_path_install+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
@@ -3422,7 +3430,7 @@
=20
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler=
 options needed for large files" >&5
 $as_echo_n "checking for special C compiler options needed for large files=
... " >&6; }
-if test "${ac_cv_sys_largefile_CC+set}" =3D set; then :
+if ${ac_cv_sys_largefile_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_cv_sys_largefile_CC=3Dno
@@ -3473,7 +3481,7 @@
=20
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS =
value needed for large files" >&5
 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files...=
 " >&6; }
-if test "${ac_cv_sys_file_offset_bits+set}" =3D set; then :
+if ${ac_cv_sys_file_offset_bits+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -3542,7 +3550,7 @@
   if test $ac_cv_sys_file_offset_bits =3D unknown; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES val=
ue needed for large files" >&5
 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&=
6; }
-if test "${ac_cv_sys_large_files+set}" =3D set; then :
+if ${ac_cv_sys_large_files+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   while :; do
@@ -3615,7 +3623,7 @@
 # Checks for general libraries.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgoto in -ltinfo" >&5
 $as_echo_n "checking for tgoto in -ltinfo... " >&6; }
-if test "${ac_cv_lib_tinfo_tgoto+set}" =3D set; then :
+if ${ac_cv_lib_tinfo_tgoto+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3649,7 +3657,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgoto" >=
&5
 $as_echo "$ac_cv_lib_tinfo_tgoto" >&6; }
-if test "x$ac_cv_lib_tinfo_tgoto" =3D x""yes; then :
+if test "x$ac_cv_lib_tinfo_tgoto" =3D xyes; then :
   have_tinfo=3Dyes
 else
   have_tinfo=3Dno
@@ -3657,7 +3665,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lxcurses=
" >&5
 $as_echo_n "checking for initscr in -lxcurses... " >&6; }
-if test "${ac_cv_lib_xcurses_initscr+set}" =3D set; then :
+if ${ac_cv_lib_xcurses_initscr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3691,7 +3699,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xcurses_initsc=
r" >&5
 $as_echo "$ac_cv_lib_xcurses_initscr" >&6; }
-if test "x$ac_cv_lib_xcurses_initscr" =3D x""yes; then :
+if test "x$ac_cv_lib_xcurses_initscr" =3D xyes; then :
   have_xcurses=3Dyes
 else
   have_xcurses=3Dno
@@ -3699,7 +3707,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses=
w" >&5
 $as_echo_n "checking for initscr in -lncursesw... " >&6; }
-if test "${ac_cv_lib_ncursesw_initscr+set}" =3D set; then :
+if ${ac_cv_lib_ncursesw_initscr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3733,7 +3741,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_inits=
cr" >&5
 $as_echo "$ac_cv_lib_ncursesw_initscr" >&6; }
-if test "x$ac_cv_lib_ncursesw_initscr" =3D x""yes; then :
+if test "x$ac_cv_lib_ncursesw_initscr" =3D xyes; then :
   have_ncursesw=3Dyes
 else
   have_ncursesw=3Dno
@@ -3741,7 +3749,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses=
" >&5
 $as_echo_n "checking for initscr in -lncurses... " >&6; }
-if test "${ac_cv_lib_ncurses_initscr+set}" =3D set; then :
+if ${ac_cv_lib_ncurses_initscr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3775,7 +3783,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_initsc=
r" >&5
 $as_echo "$ac_cv_lib_ncurses_initscr" >&6; }
-if test "x$ac_cv_lib_ncurses_initscr" =3D x""yes; then :
+if test "x$ac_cv_lib_ncurses_initscr" =3D xyes; then :
   have_ncurses=3Dyes
 else
   have_ncurses=3Dno
@@ -3783,7 +3791,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lcurses"=
 >&5
 $as_echo_n "checking for initscr in -lcurses... " >&6; }
-if test "${ac_cv_lib_curses_initscr+set}" =3D set; then :
+if ${ac_cv_lib_curses_initscr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3817,7 +3825,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_initscr=
" >&5
 $as_echo "$ac_cv_lib_curses_initscr" >&6; }
-if test "x$ac_cv_lib_curses_initscr" =3D x""yes; then :
+if test "x$ac_cv_lib_curses_initscr" =3D xyes; then :
   have_curses=3Dyes
 else
   have_curses=3Dno
@@ -3825,7 +3833,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap=
" >&5
 $as_echo_n "checking for tgetent in -ltermcap... " >&6; }
-if test "${ac_cv_lib_termcap_tgetent+set}" =3D set; then :
+if ${ac_cv_lib_termcap_tgetent+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3859,7 +3867,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgeten=
t" >&5
 $as_echo "$ac_cv_lib_termcap_tgetent" >&6; }
-if test "x$ac_cv_lib_termcap_tgetent" =3D x""yes; then :
+if test "x$ac_cv_lib_termcap_tgetent" =3D xyes; then :
   have_termcap=3Dyes
 else
   have_termcap=3Dno
@@ -3867,7 +3875,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermlib=
" >&5
 $as_echo_n "checking for tgetent in -ltermlib... " >&6; }
-if test "${ac_cv_lib_termlib_tgetent+set}" =3D set; then :
+if ${ac_cv_lib_termlib_tgetent+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -3901,21 +3909,20 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termlib_tgeten=
t" >&5
 $as_echo "$ac_cv_lib_termlib_tgetent" >&6; }
-if test "x$ac_cv_lib_termlib_tgetent" =3D x""yes; then :
+if test "x$ac_cv_lib_termlib_tgetent" =3D xyes; then :
   have_termlib=3Dyes
 else
   have_termlib=3Dno
 fi
=20
-# Regular expressions (regcmp) are in -lgen on Solaris 2,
-# and in -lintl on SCO Unix.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcmp in -lgen" >&5
-$as_echo_n "checking for regcmp in -lgen... " >&6; }
-if test "${ac_cv_lib_gen_regcmp+set}" =3D set; then :
+# Regular expressions (regcmp) are in -lgen on Solaris 2, (but in libc
+# at least on Solaris 10 (2.10)) and in -lintl on SCO Unix.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing r=
egcmp" >&5
+$as_echo_n "checking for library containing regcmp... " >&6; }
+if ${ac_cv_search_regcmp+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lgen  $LIBS"
+  ac_func_search_save_LIBS=3D$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
=20
@@ -3934,113 +3941,35 @@
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_gen_regcmp=3Dyes
-else
-  ac_cv_lib_gen_regcmp=3Dno
+for ac_lib in '' gen intl PW; do
+  if test -z "$ac_lib"; then
+    ac_res=3D"none required"
+  else
+    ac_res=3D-l$ac_lib
+    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_regcmp=3D$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_regcmp" >&5
-$as_echo "$ac_cv_lib_gen_regcmp" >&6; }
-if test "x$ac_cv_lib_gen_regcmp" =3D x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGEN 1
-_ACEOF
-
-  LIBS=3D"-lgen $LIBS"
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcmp in -lintl" >&5
-$as_echo_n "checking for regcmp in -lintl... " >&6; }
-if test "${ac_cv_lib_intl_regcmp+set}" =3D set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lintl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char regcmp ();
-int
-main ()
-{
-return regcmp ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_intl_regcmp=3Dyes
-else
-  ac_cv_lib_intl_regcmp=3Dno
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_regcmp" >=
&5
-$as_echo "$ac_cv_lib_intl_regcmp" >&6; }
-if test "x$ac_cv_lib_intl_regcmp" =3D x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBINTL 1
-_ACEOF
-
-  LIBS=3D"-lintl $LIBS"
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regcmp in -lPW" >&5
-$as_echo_n "checking for regcmp in -lPW... " >&6; }
-if test "${ac_cv_lib_PW_regcmp+set}" =3D set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lPW  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char regcmp ();
-int
-main ()
-{
-return regcmp ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_PW_regcmp=3Dyes
-else
-  ac_cv_lib_PW_regcmp=3Dno
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_PW_regcmp" >&5
-$as_echo "$ac_cv_lib_PW_regcmp" >&6; }
-if test "x$ac_cv_lib_PW_regcmp" =3D x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPW 1
-_ACEOF
-
-  LIBS=3D"-lPW $LIBS"
+    conftest$ac_exeext
+  if ${ac_cv_search_regcmp+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_regcmp+:} false; then :
+
+else
+  ac_cv_search_regcmp=3Dno
+fi
+rm conftest.$ac_ext
+LIBS=3D$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_regcmp" >&5
+$as_echo "$ac_cv_search_regcmp" >&6; }
+ac_res=3D$ac_cv_search_regcmp
+if test "$ac_res" !=3D no; then :
+  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
=20
 fi
=20
@@ -4310,7 +4239,7 @@
 # Checks for header files.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files"=
 >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" =3D set; then :
+if ${ac_cv_header_stdc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4454,7 +4383,7 @@
 # Checks for typedefs, structures, and compiler characteristics.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode m=
acros are broken" >&5
 $as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
-if test "${ac_cv_header_stat_broken+set}" =3D set; then :
+if ${ac_cv_header_stat_broken+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4496,7 +4425,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming=
 const" >&5
 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" =3D set; then :
+if ${ac_cv_c_const+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4575,7 +4504,7 @@
 fi
=20
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_defa=
ult"
-if test "x$ac_cv_type_off_t" =3D x""yes; then :
+if test "x$ac_cv_type_off_t" =3D xyes; then :
=20
 else
=20
@@ -4586,7 +4515,7 @@
 fi
=20
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_de=
fault"
-if test "x$ac_cv_type_size_t" =3D x""yes; then :
+if test "x$ac_cv_type_size_t" =3D xyes; then :
=20
 else
=20
@@ -4598,7 +4527,7 @@
=20
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/t=
ime.h may both be included" >&5
 $as_echo_n "checking whether time.h and sys/time.h may both be included...=
 " >&6; }
-if test "${ac_cv_header_time+set}" =3D set; then :
+if ${ac_cv_header_time+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4661,9 +4590,10 @@
=20
=20
=20
+
 # Checks for identifiers.
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_defa=
ult"
-if test "x$ac_cv_type_off_t" =3D x""yes; then :
+if test "x$ac_cv_type_off_t" =3D xyes; then :
=20
 else
=20
@@ -4766,7 +4696,7 @@
 # Checks for library functions.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal ha=
ndlers" >&5
 $as_echo_n "checking return type of signal handlers... " >&6; }
-if test "${ac_cv_type_signal+set}" =3D set; then :
+if ${ac_cv_type_signal+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4894,7 +4824,7 @@
=20
 # Some systems have termios.h but not the corresponding functions.
 ac_fn_c_check_func "$LINENO" "tcgetattr" "ac_cv_func_tcgetattr"
-if test "x$ac_cv_func_tcgetattr" =3D x""yes; then :
+if test "x$ac_cv_func_tcgetattr" =3D xyes; then :
   $as_echo "#define HAVE_TERMIOS_FUNCS 1" >>confdefs.h
=20
 fi
@@ -4986,7 +4916,7 @@
=20
 ac_fn_c_check_type "$LINENO" "sigset_t" "ac_cv_type_sigset_t" "#include <s=
ignal.h>
 "
-if test "x$ac_cv_type_sigset_t" =3D x""yes; then :
+if test "x$ac_cv_type_sigset_t" =3D xyes; then :
=20
 cat >>confdefs.h <<_ACEOF
 #define HAVE_SIGSET_T 1
@@ -5337,10 +5267,57 @@
 fi
=20
 if test $have_regex =3D no; then
+if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D gnu; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for re_compile_pattern i=
n -lc" >&5
+$as_echo_n "checking for re_compile_pattern in -lc... " >&6; }
+if ${ac_cv_lib_c_re_compile_pattern+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char re_compile_pattern ();
+int
+main ()
+{
+return re_compile_pattern ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_c_re_compile_pattern=3Dyes
+else
+  ac_cv_lib_c_re_compile_pattern=3Dno
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_re_compile_p=
attern" >&5
+$as_echo "$ac_cv_lib_c_re_compile_pattern" >&6; }
+if test "x$ac_cv_lib_c_re_compile_pattern" =3D xyes; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using gnu" >&5
+$as_echo "using gnu" >&6; }; $as_echo "#define HAVE_GNU_REGEX 1" >>confdef=
s.h
+ have_regex=3Dyes
+fi
+
+fi
+fi
+
+if test $have_regex =3D no; then
 if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D pcre; then
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcre_compile in -lpc=
re" >&5
 $as_echo_n "checking for pcre_compile in -lpcre... " >&6; }
-if test "${ac_cv_lib_pcre_pcre_compile+set}" =3D set; then :
+if ${ac_cv_lib_pcre_pcre_compile+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=3D$LIBS
@@ -5374,7 +5351,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_comp=
ile" >&5
 $as_echo "$ac_cv_lib_pcre_pcre_compile" >&6; }
-if test "x$ac_cv_lib_pcre_pcre_compile" =3D x""yes; then :
+if test "x$ac_cv_lib_pcre_pcre_compile" =3D xyes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using pcre" >&5
 $as_echo "using pcre" >&6; }; $as_echo "#define HAVE_PCRE 1" >>confdefs.h
  LIBS=3D"$LIBS -lpcre" have_regex=3Dyes
@@ -5386,7 +5363,7 @@
 if test $have_regex =3D no; then
 if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D regcmp; then
 ac_fn_c_check_func "$LINENO" "regcmp" "ac_cv_func_regcmp"
-if test "x$ac_cv_func_regcmp" =3D x""yes; then :
+if test "x$ac_cv_func_regcmp" =3D xyes; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using regcmp" >&5
 $as_echo "using regcmp" >&6; }; $as_echo "#define HAVE_REGCMP 1" >>confdef=
s.h
  have_regex=3Dyes
@@ -5432,7 +5409,7 @@
 if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D re_comp; then
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: using re_comp" >&5
 $as_echo "using re_comp" >&6; }; ac_fn_c_check_func "$LINENO" "re_comp" "a=
c_cv_func_re_comp"
-if test "x$ac_cv_func_re_comp" =3D x""yes; then :
+if test "x$ac_cv_func_re_comp" =3D xyes; then :
   $as_echo "#define HAVE_RE_COMP 1" >>confdefs.h
  have_regex=3Dyes
 fi
@@ -5441,6 +5418,13 @@
 fi
=20
 if test $have_regex =3D no; then
+if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D none; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using no regex" >&5
+$as_echo "using no regex" >&6; }; have_regex=3Dyes;
+fi
+fi
+
+if test $have_regex =3D no; then
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot find regular expre=
ssion library" >&5
 $as_echo "cannot find regular expression library" >&6; }; $as_echo "#defin=
e NO_REGEX 1" >>confdefs.h
=20
@@ -5527,10 +5511,21 @@
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
-    test "x$cache_file" !=3D "x/dev/null" &&
+    if test "x$cache_file" !=3D "x/dev/null"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file"=
 >&5
 $as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache=
 $cache_file" >&5
 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
@@ -5562,7 +5557,7 @@
=20
=20
=20
-: ${CONFIG_STATUS=3D./config.status}
+: "${CONFIG_STATUS=3D./config.status}"
 ac_write_fail=3D0
 ac_clean_files_save=3D$ac_clean_files
 ac_clean_files=3D"$ac_clean_files $CONFIG_STATUS"
@@ -5663,6 +5658,7 @@
 IFS=3D" ""	$as_nl"
=20
 # Find who we are.  Look in the path if we contain no directory separator.
+as_myself=3D
 case $0 in #((
   *[\\/]* ) as_myself=3D$0 ;;
   *) as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
@@ -5970,7 +5966,7 @@
 # values after options handling.
 ac_log=3D"
 This file was extended by less $as_me 1, which was
-generated by GNU Autoconf 2.67.  Invocation command line was
+generated by GNU Autoconf 2.68.  Invocation command line was
=20
   CONFIG_FILES    =3D $CONFIG_FILES
   CONFIG_HEADERS  =3D $CONFIG_HEADERS
@@ -6032,7 +6028,7 @@
 ac_cs_config=3D"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]=
/\\\\&/g'`"
 ac_cs_version=3D"\\
 less config.status 1
-configured by $0, generated by GNU Autoconf 2.67,
+configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
=20
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -6178,9 +6174,10 @@
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=3D
+  tmp=3D ac_tmp=3D
   trap 'exit_status=3D$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_s=
tatus
+  : "${ac_tmp:=3D$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
   trap 'as_fn_exit 1' 1 2 13 15
 }
@@ -6188,12 +6185,13 @@
=20
 {
   tmp=3D`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=3D./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=3D$tmp
=20
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -6215,7 +6213,7 @@
   ac_cs_awk_cr=3D$ac_cr
 fi
=20
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
=20
=20
@@ -6243,7 +6241,7 @@
 rm -f conf$$subs.sh
=20
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=3D1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
 _ACEOF
 sed -n '
 h
@@ -6291,7 +6289,7 @@
 rm -f conf$$subs.awk
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=3D1
 _ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
   for (key in S) S_is_set[key] =3D 1
   FS =3D "=07"
=20
@@ -6323,7 +6321,7 @@
   sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
 else
   cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
   || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
=20
@@ -6357,7 +6355,7 @@
 # No need to generate them if there are no CONFIG_HEADERS.
 # This happens for instance with `./config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
=20
@@ -6369,8 +6367,8 @@
 # handling of long lines.
 ac_delim=3D'%!_!# '
 for ac_last_try in false false :; do
-  ac_t=3D`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
+  ac_tt=3D`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
     break
   elif $ac_last_try; then
     as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
@@ -6490,7 +6488,7 @@
     for ac_f
     do
       case $ac_f in
-      -) ac_f=3D"$tmp/stdin";;
+      -) ac_f=3D"$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source t=
ree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
 	 # because $ac_f cannot contain `:'.
@@ -6525,7 +6523,7 @@
     esac
=20
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin" \
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
@@ -6656,21 +6654,22 @@
 s&@INSTALL@&$ac_INSTALL&;t t
 $ac_datarootdir_hack
 "
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$=
tmp/out \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk"=
 \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
=20
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=3D`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; =
} &&
-  { ac_out=3D`sed -n '/^[	 ]*datarootdir[	 ]*:*=3D/p' "$tmp/out"`; test -z=
 "$ac_out"; } &&
+  { ac_out=3D`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out=
"; } &&
+  { ac_out=3D`sed -n '/^[	 ]*datarootdir[	 ]*:*=3D/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a re=
ference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \=
`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
=20
-  rm -f "$tmp/stdin"
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
   esac \
   || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
@@ -6681,20 +6680,20 @@
   if test x"$ac_file" !=3D x-; then
     {
       $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
 $as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
+      mv "$ac_tmp/config.h" "$ac_file" \
 	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
  ;;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/configure.ac
--- a/head/contrib/less/configure.ac	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/configure.ac	Wed Jul 25 16:21:35 2012 +0300
@@ -30,11 +30,9 @@
 AC_CHECK_LIB(curses, initscr, [have_curses=3Dyes], [have_curses=3Dno])
 AC_CHECK_LIB(termcap, tgetent, [have_termcap=3Dyes], [have_termcap=3Dno])
 AC_CHECK_LIB(termlib, tgetent, [have_termlib=3Dyes], [have_termlib=3Dno])
-# Regular expressions (regcmp) are in -lgen on Solaris 2,
-# and in -lintl on SCO Unix.
-AC_CHECK_LIB(gen, regcmp)
-AC_CHECK_LIB(intl, regcmp)
-AC_CHECK_LIB(PW, regcmp)
+# Regular expressions (regcmp) are in -lgen on Solaris 2, (but in libc
+# at least on Solaris 10 (2.10)) and in -lintl on SCO Unix.
+AC_SEARCH_LIBS([regcmp], [gen intl PW])
=20
 # Checks for terminal libraries
 AC_MSG_CHECKING([for working terminal libraries])
@@ -179,6 +177,8 @@
 AC_HEADER_TIME
=20
 # Autoheader templates for symbols defined later by AC_DEFINE.
+AH_TEMPLATE([HAVE_GNU_REGEX],
+	[GNU regex library])
 AH_TEMPLATE([HAVE_POSIX_REGCOMP],
 	[POSIX regcomp() and regex.h])
 AH_TEMPLATE([HAVE_PCRE],
@@ -388,7 +388,7 @@
 # Select a regular expression library.
 WANT_REGEX=3Dauto
 AC_ARG_WITH(regex,
-  [  --with-regex=3D{auto,pcre,posix,regcmp,re_comp,regcomp,regcomp-local}=
  Select a regular expression library  [auto]],
+  [  --with-regex=3D{auto,gnu,pcre,posix,regcmp,re_comp,regcomp,regcomp-lo=
cal,none}  Select a regular expression library  [auto]],
   WANT_REGEX=3D"$withval")
=20
 if test $have_regex =3D no; then
@@ -426,6 +426,13 @@
 fi
=20
 if test $have_regex =3D no; then
+if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D gnu; then
+AC_CHECK_LIB(c, re_compile_pattern,=20
+[AC_MSG_RESULT(using gnu); AC_DEFINE(HAVE_GNU_REGEX) have_regex=3Dyes], [])
+fi
+fi
+
+if test $have_regex =3D no; then
 if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D pcre; then
 AC_CHECK_LIB(pcre, pcre_compile,=20
 [AC_MSG_RESULT(using pcre); AC_DEFINE(HAVE_PCRE) LIBS=3D"$LIBS -lpcre" hav=
e_regex=3Dyes], [])
@@ -460,6 +467,12 @@
 fi
=20
 if test $have_regex =3D no; then
+if test $WANT_REGEX =3D auto -o $WANT_REGEX =3D none; then
+AC_MSG_RESULT(using no regex); have_regex=3Dyes;
+fi
+fi
+
+if test $have_regex =3D no; then
 AC_MSG_RESULT(cannot find regular expression library); AC_DEFINE(NO_REGEX)
 fi
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/cvt.c
--- a/head/contrib/less/cvt.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/cvt.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
 /*
@@ -64,6 +63,7 @@
 	int ops;
 {
 	char *dst;
+	char *edst =3D odst;
 	char *src;
 	register char *src_end;
 	LWCHAR ch;
@@ -98,23 +98,17 @@
 			if ((ops & CVT_TO_LC) && IS_UPPER(ch))
 				ch =3D TO_LOWER(ch);
 			put_wchar(&dst, ch);
-			/*
-			 * Record the original position of the char.
-			 * But if we've already recorded a position
-			 * for this char (due to a backspace), leave
-			 * it alone; if multiple source chars map to
-			 * one destination char, we want the position
-			 * of the first one.
-			 */
-			if (chpos !=3D NULL && chpos[dst_pos] < 0)
+			/* Record the original position of the char. */
+			if (chpos !=3D NULL)
 				chpos[dst_pos] =3D src_pos;
 		}
+		if (dst > edst)
+			edst =3D dst;
 	}
-	if ((ops & CVT_CRLF) && dst > odst && dst[-1] =3D=3D '\r')
-		dst--;
-	*dst =3D '\0';
+	if ((ops & CVT_CRLF) && edst > odst && edst[-1] =3D=3D '\r')
+		edst--;
+	*edst =3D '\0';
 	if (lenp !=3D NULL)
-		*lenp =3D dst - odst;
-	if (chpos !=3D NULL)
-		chpos[dst - odst] =3D src - osrc;
+		*lenp =3D edst - odst;
+	/* FIXME: why was this here?  if (chpos !=3D NULL) chpos[dst - odst] =3D =
src - osrc; */
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/decode.c
--- a/head/contrib/less/decode.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/decode.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -79,6 +78,7 @@
 	'w',0,				A_B_WINDOW,
 	ESC,' ',0,			A_FF_SCREEN,
 	'F',0,				A_F_FOREVER,
+	ESC,'F',0,			A_F_UNTIL_HILITE,
 	'R',0,				A_FREPAINT,
 	'r',0,				A_REPAINT,
 	CONTROL('R'),0,			A_REPAINT,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/defines.ds
--- a/head/contrib/less/defines.ds	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/defines.ds	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -322,6 +321,9 @@
 /* Define if you have the <fcntl.h> header file.  */
 #define HAVE_FCNTL_H 1
=20
+/* Define HAVE_FLOAT if your compiler supports the "double" type. */
+#define HAVE_FLOAT 1
+
 /* Define if you have the <limits.h> header file.  */
 #define HAVE_LIMITS_H 1
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/defines.h.in
--- a/head/contrib/less/defines.h.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/defines.h.in	Wed Jul 25 16:21:35 2012 +0300
@@ -225,18 +225,12 @@
 /* Define to 1 if you have the `fsync' function. */
 #undef HAVE_FSYNC
=20
+/* GNU regex library */
+#undef HAVE_GNU_REGEX
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
=20
-/* Define to 1 if you have the `gen' library (-lgen). */
-#undef HAVE_LIBGEN
-
-/* Define to 1 if you have the `intl' library (-lintl). */
-#undef HAVE_LIBINTL
-
-/* Define to 1 if you have the `PW' library (-lPW). */
-#undef HAVE_LIBPW
-
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/defines.o2
--- a/head/contrib/less/defines.o2	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/defines.o2	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/defines.o9
--- a/head/contrib/less/defines.o9	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/defines.o9	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/defines.wn
--- a/head/contrib/less/defines.wn	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/defines.wn	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/edit.c
--- a/head/contrib/less/edit.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/edit.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -310,6 +309,10 @@
 		 */
 		__djgpp_set_ctrl_c(1);
 #endif
+	} else if (strcmp(open_filename, FAKE_EMPTYFILE) =3D=3D 0)
+	{
+		f =3D -1;
+		chflags |=3D CH_NODATA;
 	} else if (strcmp(open_filename, FAKE_HELPFILE) =3D=3D 0)
 	{
 		f =3D -1;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/filename.c
--- a/head/contrib/less/filename.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/filename.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -807,6 +806,27 @@
 }
=20
 /*
+ * Return number of %s escapes in a string.
+ * Return a large number if there are any other % escapes besides %s.
+ */
+	static int
+num_pct_s(lessopen)
+	char *lessopen;
+{
+	int num;
+
+	for (num =3D 0;; num++)
+	{
+		lessopen =3D strchr(lessopen, '%');
+		if (lessopen =3D=3D NULL)
+			break;
+		if (*++lessopen !=3D 's')
+			return (999);
+	}
+	return (num);
+}
+
+/*
  * See if we should open a "replacement file"=20
  * instead of the file we're about to open.
  */
@@ -832,7 +852,7 @@
 	ch_ungetchar(-1);
 	if ((lessopen =3D lgetenv("LESSOPEN")) =3D=3D NULL)
 		return (NULL);
-	if (*lessopen =3D=3D '|')
+	while (*lessopen =3D=3D '|')
 	{
 		/*
 		 * If LESSOPEN starts with a |, it indicates=20
@@ -843,7 +863,7 @@
 		return (NULL);
 #else
 		lessopen++;
-		returnfd =3D 1;
+		returnfd++;
 #endif
 	}
 	if (*lessopen =3D=3D '-') {
@@ -855,6 +875,11 @@
 		if (strcmp(filename, "-") =3D=3D 0)
 			return (NULL);
 	}
+	if (num_pct_s(lessopen) > 1)
+	{
+		error("Invalid LESSOPEN variable", NULL_PARG);
+		return (NULL);
+	}
=20
 	len =3D strlen(lessopen) + strlen(filename) + 2;
 	cmd =3D (char *) ecalloc(len, sizeof(char));
@@ -883,9 +908,18 @@
 		if (read(f, &c, 1) !=3D 1)
 		{
 			/*
-			 * Pipe is empty.  This means there is no alt file.
+			 * Pipe is empty.
+			 * If more than 1 pipe char was specified,
+			 * the exit status tells whether the file itself=20
+			 * is empty, or if there is no alt file.
+			 * If only one pipe char, just assume no alt file.
 			 */
-			pclose(fd);
+			int status =3D pclose(fd);
+			if (returnfd > 1 && status =3D=3D 0) {
+				*pfd =3D NULL;
+				*pf =3D -1;
+				return (save(FAKE_EMPTYFILE));
+			}
 			return (NULL);
 		}
 		ch_ungetchar(c);
@@ -935,6 +969,11 @@
 	}
 	if ((lessclose =3D lgetenv("LESSCLOSE")) =3D=3D NULL)
 	     	return;
+	if (num_pct_s(lessclose) > 2)=20
+	{
+		error("Invalid LESSCLOSE variable");
+		return;
+	}
 	len =3D strlen(lessclose) + strlen(filename) + strlen(altfilename) + 2;
 	cmd =3D (char *) ecalloc(len, sizeof(char));
 	SNPRINTF2(cmd, len, lessclose, filename, altfilename);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/forwback.c
--- a/head/contrib/less/forwback.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/forwback.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/forwback.c 221715 2011-05-09 21:51:59Z delp=
hij $ */
+/* $FreeBSD: head/contrib/less/forwback.c 238730 2012-07-24 01:09:11Z delp=
hij $ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/funcs.h
--- a/head/contrib/less/funcs.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/funcs.h	Wed Jul 25 16:21:35 2012 +0300
@@ -46,6 +46,7 @@
 	public void ch_setbufspace ();
 	public void ch_flush ();
 	public int seekable ();
+	public void ch_set_eof ();
 	public void ch_init ();
 	public void ch_close ();
 	public int ch_getflags ();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/help.c
--- a/head/contrib/less/help.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/help.c	Wed Jul 25 16:21:35 2012 +0300
@@ -6,6 +6,7 @@
 '\n',
 ' ',' ',' ',' ',' ',' ','C','o','m','m','a','n','d','s',' ','m','a','r','k=
','e','d',' ','w','i','t','h',' ','*',' ','m','a','y',' ','b','e',' ','p','=
r','e','c','e','d','e','d',' ','b','y',' ','a',' ','n','u','m','b','e','r',=
',',' ','_','\b','N','.','\n',
 ' ',' ',' ',' ',' ',' ','N','o','t','e','s',' ','i','n',' ','p','a','r','e=
','n','t','h','e','s','e','s',' ','i','n','d','i','c','a','t','e',' ','t','=
h','e',' ','b','e','h','a','v','i','o','r',' ','i','f',' ','_','\b','N',' '=
,'i','s',' ','g','i','v','e','n','.','\n',
+' ',' ',' ',' ',' ',' ','A',' ','k','e','y',' ','p','r','e','c','e','d','e=
','d',' ','b','y',' ','a',' ','c','a','r','e','t',' ','i','n','d','i','c','=
a','t','e','s',' ','t','h','e',' ','C','t','r','l',' ','k','e','y',';',' ',=
't','h','u','s',' ','^','K',' ','i','s',' ','c','t','r','l','-','K','.','\n=
',
 '\n',
 ' ',' ','h',' ',' ','H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ','D','i','s','p','l','a','y',' ','t','h','i','s',' ','h','=
e','l','p','.','\n',
 ' ',' ','q',' ',' ',':','q',' ',' ','Q',' ',' ',':','Q',' ',' ','Z','Z',' =
',' ',' ',' ',' ','E','x','i','t','.','\n',
@@ -43,7 +44,7 @@
 ' ',' ','E','S','C','-','u',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ','U','n','d','o',' ','(','t','o','g','g','l','e',')',' ','=
s','e','a','r','c','h',' ','h','i','g','h','l','i','g','h','t','i','n','g',=
'.','\n',
 ' ',' ','&','_','\b','p','_','\b','a','_','\b','t','_','\b','t','_','\b','=
e','_','\b','r','_','\b','n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' =
',' ','D','i','s','p','l','a','y',' ','o','n','l','y',' ','m','a','t','c','=
h','i','n','g',' ','l','i','n','e','s','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ','-','-','-','-','-','-','-','-','-','-','-=
','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','=
-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-',=
'-','-','-','\n',
-' ',' ',' ',' ',' ',' ',' ',' ','S','e','a','r','c','h',' ','p','a','t','t=
','e','r','n','s',' ','m','a','y',' ','b','e',' ','m','o','d','i','f','i','=
e','d',' ','b','y',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ','o',=
'f',':','\n',
+' ',' ',' ',' ',' ',' ',' ',' ','A',' ','s','e','a','r','c','h',' ','p','a=
','t','t','e','r','n',' ','m','a','y',' ','b','e',' ','p','r','e','c','e','=
d','e','d',' ','b','y',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ',=
'o','f',':','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ','^','N',' ','o','r',' ','!',' ',' ','S','e=
','a','r','c','h',' ','f','o','r',' ','N','O','N','-','m','a','t','c','h','=
i','n','g',' ','l','i','n','e','s','.','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ','^','E',' ','o','r',' ','*',' ',' ','S','e=
','a','r','c','h',' ','m','u','l','t','i','p','l','e',' ','f','i','l','e','=
s',' ','(','p','a','s','s',' ','t','h','r','u',' ','E','N','D',' ','O','F',=
' ','F','I','L','E',')','.','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ','^','F',' ','o','r',' ','@',' ',' ','S','t=
','a','r','t',' ','s','e','a','r','c','h',' ','a','t',' ','F','I','R','S','=
T',' ','f','i','l','e',' ','(','f','o','r',' ','/',')',' ','o','r',' ','l',=
'a','s','t',' ','f','i','l','e',' ','(','f','o','r',' ','?',')','.','\n',
@@ -114,9 +115,9 @@
 ' ',' ','-','?',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','h=
','e','l','p','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D=
','i','s','p','l','a','y',' ','h','e','l','p',' ','(','f','r','o','m',' ','=
c','o','m','m','a','n','d',' ','l','i','n','e',')','.','\n',
 ' ',' ','-','a',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','s=
','e','a','r','c','h','-','s','k','i','p','-','s','c','r','e','e','n','\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F=
','o','r','w','a','r','d',' ','s','e','a','r','c','h',' ','s','k','i','p','=
s',' ','c','u','r','r','e','n','t',' ','s','c','r','e','e','n','.','\n',
+' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S=
','e','a','r','c','h',' ','s','k','i','p','s',' ','c','u','r','r','e','n','=
t',' ','s','c','r','e','e','n','.','\n',
 ' ',' ','-','A',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','S=
','E','A','R','C','H','-','S','K','I','P','-','S','C','R','E','E','N','\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F=
','o','r','w','a','r','d',' ','s','e','a','r','c','h',' ','a','l','w','a','=
y','s',' ','s','k','i','p','s',' ','t','a','r','g','e','t',' ','l','i','n',=
'e','.','\n',
+' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S=
','e','a','r','c','h',' ','s','t','a','r','t','s',' ','j','u','s','t',' ','=
a','f','t','e','r',' ','t','a','r','g','e','t',' ','l','i','n','e','.','\n',
 ' ',' ','-','b',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','=
-','-','b','u','f','f','e','r','s','=3D','[','_','\b','N',']','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','N=
','u','m','b','e','r',' ','o','f',' ','b','u','f','f','e','r','s','.','\n',
 ' ',' ','-','B',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','a=
','u','t','o','-','b','u','f','f','e','r','s','\n',
@@ -172,7 +173,7 @@
 ' ',' ','-','s',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','s=
','q','u','e','e','z','e','-','b','l','a','n','k','-','l','i','n','e','s','=
\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S=
','q','u','e','e','z','e',' ','m','u','l','t','i','p','l','e',' ','b','l','=
a','n','k',' ','l','i','n','e','s','.','\n',
 ' ',' ','-','S',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','c=
','h','o','p','-','l','o','n','g','-','l','i','n','e','s','\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C=
','h','o','p',' ','l','o','n','g',' ','l','i','n','e','s','.','\n',
+' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C=
','h','o','p',' ','(','t','r','u','n','c','a','t','e',')',' ','l','o','n','=
g',' ','l','i','n','e','s',' ','r','a','t','h','e','r',' ','t','h','a','n',=
' ','w','r','a','p','p','i','n','g','.','\n',
 ' ',' ','-','t',' ','[','_','\b','t','_','\b','a','_','\b','g',']',' ',' '=
,'.','.',' ',' ','-','-','t','a','g','=3D','[','_','\b','t','_','\b','a','_=
','\b','g',']','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F=
','i','n','d',' ','a',' ','t','a','g','.','\n',
 ' ',' ','-','T',' ','[','_','\b','t','_','\b','a','_','\b','g','_','\b','s=
','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ','-','-','t','=
a','g','-','f','i','l','e','=3D','[','_','\b','t','_','\b','a','_','\b','g'=
,'_','\b','s','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
@@ -189,8 +190,6 @@
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S=
','e','t',' ','t','a','b',' ','s','t','o','p','s','.','\n',
 ' ',' ','-','X',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','n=
','o','-','i','n','i','t','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D=
','o','n','\'','t',' ','u','s','e',' ','t','e','r','m','c','a','p',' ','i',=
'n','i','t','/','d','e','i','n','i','t',' ','s','t','r','i','n','g','s','.'=
,'\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n=
','o','-','k','e','y','p','a','d','\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D=
','o','n','\'','t',' ','u','s','e',' ','t','e','r','m','c','a','p',' ','k',=
'e','y','p','a','d',' ','i','n','i','t','/','d','e','i','n','i','t',' ','s'=
,'t','r','i','n','g','s','.','\n',
 ' ',' ','-','y',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','=
-','-','m','a','x','-','f','o','r','w','-','s','c','r','o','l','l','=3D','[=
','_','\b','N',']','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F=
','o','r','w','a','r','d',' ','s','c','r','o','l','l',' ','l','i','m','i','=
t','.','\n',
 ' ',' ','-','z',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','=
-','-','w','i','n','d','o','w','=3D','[','_','\b','N',']','\n',
@@ -202,7 +201,7 @@
 ' ',' ','-','#',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','=
-','-','s','h','i','f','t','=3D','[','_','\b','N',']','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','H=
','o','r','i','z','o','n','t','a','l',' ','s','c','r','o','l','l',' ','a','=
m','o','u','n','t',' ','(','0',' ','=3D',' ','o','n','e',' ','h','a','l','f=
',' ','s','c','r','e','e','n',' ','w','i','d','t','h',')','\n',
 ' ',' ',' ',' ',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','n=
','o','-','k','e','y','p','a','d','\n',
-' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D=
','o','n','\'','t',' ','s','e','n','d',' ','k','e','y','p','a','d',' ','i',=
'n','i','t','/','d','e','i','n','i','t',' ','s','e','q','u','e','n','c','e'=
,'.','\n',
+' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D=
','o','n','\'','t',' ','s','e','n','d',' ','t','e','r','m','c','a','p',' ',=
'k','e','y','p','a','d',' ','i','n','i','t','/','d','e','i','n','i','t',' '=
,'s','t','r','i','n','g','s','.','\n',
 ' ',' ',' ',' ',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','f=
','o','l','l','o','w','-','n','a','m','e','\n',
 ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','T=
','h','e',' ','F',' ','c','o','m','m','a','n','d',' ','c','h','a','n','g','=
e','s',' ','f','i','l','e','s',' ','i','f',' ','t','h','e',' ','i','n','p',=
'u','t',' ','f','i','l','e',' ','i','s',' ','r','e','n','a','m','e','d','.'=
,'\n',
 '\n',
@@ -216,20 +215,20 @@
 '\n',
 ' ','R','i','g','h','t','A','r','r','o','w',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','l',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'r','i','g','h','t',' ','o','n','e',' ','c','h','a','r','a','c','t','e','r'=
,'.','\n',
 ' ','L','e','f','t','A','r','r','o','w',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','h',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'l','e','f','t',' ','o','n','e',' ','c','h','a','r','a','c','t','e','r','.'=
,'\n',
-' ','C','N','T','L','-','R','i','g','h','t','A','r','r','o','w',' ',' ','E=
','S','C','-','R','i','g','h','t','A','r','r','o','w',' ',' ','E','S','C','=
-','w',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'r','i','g','h','t',' ','o','n','e',' ','w','o','r','d','.','\n',
-' ','C','N','T','L','-','L','e','f','t','A','r','r','o','w',' ',' ',' ','E=
','S','C','-','L','e','f','t','A','r','r','o','w',' ',' ',' ','E','S','C','=
-','b',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'l','e','f','t',' ','o','n','e',' ','w','o','r','d','.','\n',
+' ','c','t','r','l','-','R','i','g','h','t','A','r','r','o','w',' ',' ','E=
','S','C','-','R','i','g','h','t','A','r','r','o','w',' ',' ','E','S','C','=
-','w',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'r','i','g','h','t',' ','o','n','e',' ','w','o','r','d','.','\n',
+' ','c','t','r','l','-','L','e','f','t','A','r','r','o','w',' ',' ',' ','E=
','S','C','-','L','e','f','t','A','r','r','o','w',' ',' ',' ','E','S','C','=
-','b',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
'l','e','f','t',' ','o','n','e',' ','w','o','r','d','.','\n',
 ' ','H','O','M','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','0',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
't','o',' ','s','t','a','r','t',' ','o','f',' ','l','i','n','e','.','\n',
 ' ','E','N','D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','$',' ',' ',' ',' ',' ','M','o','v','e',' ','c','u','r','s','o','r',' ',=
't','o',' ','e','n','d',' ','o','f',' ','l','i','n','e','.','\n',
 ' ','B','A','C','K','S','P','A','C','E',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','c','h','a','r',' ',=
't','o',' ','l','e','f','t',' ','o','f',' ','c','u','r','s','o','r','.','\n=
',
 ' ','D','E','L','E','T','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','x',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','c','h','a','r',' ',=
'u','n','d','e','r',' ','c','u','r','s','o','r','.','\n',
-' ','C','N','T','L','-','B','A','C','K','S','P','A','C','E',' ',' ',' ','E=
','S','C','-','B','A','C','K','S','P','A','C','E',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','w','o','r','d',' ',=
't','o',' ','l','e','f','t',' ','o','f',' ','c','u','r','s','o','r','.','\n=
',
-' ','C','N','T','L','-','D','E','L','E','T','E',' ',' ',' ',' ',' ',' ','E=
','S','C','-','D','E','L','E','T','E',' ',' ',' ',' ',' ',' ','E','S','C','=
-','X',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','w','o','r','d',' ',=
'u','n','d','e','r',' ','c','u','r','s','o','r','.','\n',
-' ','C','N','T','L','-','U',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E=
','S','C',' ','(','M','S','-','D','O','S',' ','o','n','l','y',')',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','e','n','t','i','r',=
'e',' ','l','i','n','e','.','\n',
+' ','c','t','r','l','-','B','A','C','K','S','P','A','C','E',' ',' ',' ','E=
','S','C','-','B','A','C','K','S','P','A','C','E',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','w','o','r','d',' ',=
't','o',' ','l','e','f','t',' ','o','f',' ','c','u','r','s','o','r','.','\n=
',
+' ','c','t','r','l','-','D','E','L','E','T','E',' ',' ',' ',' ',' ',' ','E=
','S','C','-','D','E','L','E','T','E',' ',' ',' ',' ',' ',' ','E','S','C','=
-','X',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','w','o','r','d',' ',=
'u','n','d','e','r',' ','c','u','r','s','o','r','.','\n',
+' ','c','t','r','l','-','U',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E=
','S','C',' ','(','M','S','-','D','O','S',' ','o','n','l','y',')',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','D','e','l','e','t','e',' ','e','n','t','i','r',=
'e',' ','l','i','n','e','.','\n',
 ' ','U','p','A','r','r','o','w',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','k',' ',' ',' ',' ',' ','R','e','t','r','i','e','v','e',' ','p','r','e',=
'v','i','o','u','s',' ','c','o','m','m','a','n','d',' ','l','i','n','e','.'=
,'\n',
 ' ','D','o','w','n','A','r','r','o','w',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','j',' ',' ',' ',' ',' ','R','e','t','r','i','e','v','e',' ','n','e','x',=
't',' ','c','o','m','m','a','n','d',' ','l','i','n','e','.','\n',
 ' ','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l',=
'e','n','a','m','e',' ','&',' ','c','y','c','l','e','.','\n',
 ' ','S','H','I','F','T','-','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','=
-','T','A','B',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l',=
'e','n','a','m','e',' ','&',' ','r','e','v','e','r','s','e',' ','c','y','c'=
,'l','e','.','\n',
-' ','C','N','T','L','-','L',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l',=
'e','n','a','m','e',',',' ','l','i','s','t',' ','a','l','l','.','\n',
+' ','c','t','r','l','-','L',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' =
',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','=
 ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l',=
'e','n','a','m','e',',',' ','l','i','s','t',' ','a','l','l','.','\n',
 '\n',
 '\n',
  0 };
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/ifile.c
--- a/head/contrib/less/ifile.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/ifile.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/input.c
--- a/head/contrib/less/input.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/input.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -416,7 +415,7 @@
 		goto get_back_line;
 	}
=20
-	if (status_col && is_hilited(base_pos, ch_tell()-1, 1, NULL))
+	if (status_col && curr_pos > 0 && is_hilited(base_pos, curr_pos-1, 1, NUL=
L))
 		set_status_col('*');
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/jump.c
--- a/head/contrib/less/jump.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/jump.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/less.h
--- a/head/contrib/less/less.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/less.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/less.h 221715 2011-05-09 21:51:59Z delphij =
$ */
+/* $FreeBSD: head/contrib/less/less.h 238730 2012-07-24 01:09:11Z delphij =
$ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
 #define NEWBOT 1
@@ -486,10 +485,13 @@
 #define	CH_KEEPOPEN	002
 #define	CH_POPENED	004
 #define	CH_HELPFILE	010
+#define	CH_NODATA  	020	/* Special case for zero length files */
+
=20
 #define	ch_zero()	((POSITION)0)
=20
 #define	FAKE_HELPFILE	"@/\\less/\\help/\\file/\\@"
+#define FAKE_EMPTYFILE	"@/\\less/\\empty/\\file/\\@"
=20
 /* Flags for cvt_text */
 #define	CVT_TO_LC	01	/* Convert upper-case to lower-case */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/less.hlp
--- a/head/contrib/less/less.hlp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/less.hlp	Wed Jul 25 16:21:35 2012 +0300
@@ -3,6 +3,7 @@
=20
       Commands marked with * may be preceded by a number, _=08N.
       Notes in parentheses indicate the behavior if _=08N is given.
+      A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
=20
   h  H                 Display this help.
   q  :q  Q  :Q  ZZ     Exit.
@@ -40,7 +41,7 @@
   ESC-u                Undo (toggle) search highlighting.
   &_=08p_=08a_=08t_=08t_=08e_=08r_=08n          *  Display only matching l=
ines
         ---------------------------------------------------
-        Search patterns may be modified by one or more of:
+        A search pattern may be preceded by one or more of:
         ^N or !  Search for NON-matching lines.
         ^E or *  Search multiple files (pass thru END OF FILE).
         ^F or @  Start search at FIRST file (for /) or last file (for ?).
@@ -111,9 +112,9 @@
   -?  ........  --help
                   Display help (from command line).
   -a  ........  --search-skip-screen
-                  Forward search skips current screen.
+                  Search skips current screen.
   -A  ........  --SEARCH-SKIP-SCREEN
-                  Forward search always skips target line.
+                  Search starts just after target line.
   -b [_=08N]  ....  --buffers=3D[_=08N]
                   Number of buffers.
   -B  ........  --auto-buffers
@@ -169,7 +170,7 @@
   -s  ........  --squeeze-blank-lines
                   Squeeze multiple blank lines.
   -S  ........  --chop-long-lines
-                  Chop long lines.
+                  Chop (truncate) long lines rather than wrapping.
   -t [_=08t_=08a_=08g]  ..  --tag=3D[_=08t_=08a_=08g]
                   Find a tag.
   -T [_=08t_=08a_=08g_=08s_=08f_=08i_=08l_=08e] --tag-file=3D[_=08t_=08a_=
=08g_=08s_=08f_=08i_=08l_=08e]
@@ -186,8 +187,6 @@
                   Set tab stops.
   -X  ........  --no-init
                   Don't use termcap init/deinit strings.
-                --no-keypad
-                  Don't use termcap keypad init/deinit strings.
   -y [_=08N]  ....  --max-forw-scroll=3D[_=08N]
                   Forward scroll limit.
   -z [_=08N]  ....  --window=3D[_=08N]
@@ -199,7 +198,7 @@
   -# [_=08N]  ....  --shift=3D[_=08N]
                   Horizontal scroll amount (0 =3D one half screen width)
       ........  --no-keypad
-                  Don't send keypad init/deinit sequence.
+                  Don't send termcap keypad init/deinit strings.
       ........  --follow-name
                   The F command changes files if the input file is renamed.
=20
@@ -213,19 +212,19 @@
=20
  RightArrow                       ESC-l     Move cursor right one characte=
r.
  LeftArrow                        ESC-h     Move cursor left one character.
- CNTL-RightArrow  ESC-RightArrow  ESC-w     Move cursor right one word.
- CNTL-LeftArrow   ESC-LeftArrow   ESC-b     Move cursor left one word.
+ ctrl-RightArrow  ESC-RightArrow  ESC-w     Move cursor right one word.
+ ctrl-LeftArrow   ESC-LeftArrow   ESC-b     Move cursor left one word.
  HOME                             ESC-0     Move cursor to start of line.
  END                              ESC-$     Move cursor to end of line.
  BACKSPACE                                  Delete char to left of cursor.
  DELETE                           ESC-x     Delete char under cursor.
- CNTL-BACKSPACE   ESC-BACKSPACE             Delete word to left of cursor.
- CNTL-DELETE      ESC-DELETE      ESC-X     Delete word under cursor.
- CNTL-U           ESC (MS-DOS only)         Delete entire line.
+ ctrl-BACKSPACE   ESC-BACKSPACE             Delete word to left of cursor.
+ ctrl-DELETE      ESC-DELETE      ESC-X     Delete word under cursor.
+ ctrl-U           ESC (MS-DOS only)         Delete entire line.
  UpArrow                          ESC-k     Retrieve previous command line.
  DownArrow                        ESC-j     Retrieve next command line.
  TAB                                        Complete filename & cycle.
  SHIFT-TAB                        ESC-TAB   Complete filename & reverse cy=
cle.
- CNTL-L                                     Complete filename, list all.
+ ctrl-L                                     Complete filename, list all.
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/less.man
--- a/head/contrib/less/less.man	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/less.man	Wed Jul 25 16:21:35 2012 +0300
@@ -107,6 +107,10 @@
               which is growing while it is being  viewed.   (The  behavior=
  is
               similar to the "tail -f" command.)
=20
+       ESC-F  Like  F,  but  as soon as a line is found which matches the =
last
+              search pattern, the terminal bell is rung and forward  scrol=
ling
+              stops.
+
        g or < or ESC-<
               Go to line N in the file, default 1 (beginning of file).  (W=
arn-
               ing: this may be slow if N is large.)
@@ -709,59 +713,60 @@
               blank line.  This is useful when viewing =1B[4mnroff=1B[24m =
output.
=20
        -S or --chop-long-lines
-              Causes lines longer than the screen width to be  chopped  ra=
ther
-              than  folded.  That is, the portion of a long line that does=
 not
-              fit in the screen width is not shown.  The default  is  to  =
fold
-              long lines; that is, display the remainder on the next line.
+              Causes lines longer than the screen width to be  chopped  (t=
run-
+              cated) rather than wrapped.  That is, the portion of a long =
line
+              that does not fit in the screen width is not shown.  The def=
ault
+              is  to  wrap  long  lines; that is, display the remainder on=
 the
+              next line.
=20
        -t=1B[4mtag=1B[24m or --tag=3D=1B[4mtag=1B[0m
               The -t option, followed immediately by a TAG, will edit the =
file
-              containing that tag.  For this to work, tag information must=
  be
-              available;  for  example,  there  may  be  a file in the cur=
rent
+              containing  that tag.  For this to work, tag information mus=
t be
+              available; for example, there may  be  a  file  in  the  cur=
rent
               directory called "tags", which was previously built by =1B[4=
mctags=1B[24m (1)
               or an equivalent command.  If the environment variable LESSG=
LOB-
-              ALTAGS is set, it is taken to be the name of a command  comp=
ati-
-              ble  with  =1B[4mglobal=1B[24m  (1), and that command is exe=
cuted to find the
+              ALTAGS  is set, it is taken to be the name of a command comp=
ati-
+              ble with =1B[4mglobal=1B[24m (1), and that command is execut=
ed  to  find  the
               tag.  (See http://www.gnu.org/software/global/global.html). =
 The
-              -t  option  may  also be specified from within =1B[4mless=1B=
[24m (using the -
-              command) as a way of examining a new file.  The command ":t"=
  is
+              -t option may also be specified from within =1B[4mless=1B[24=
m  (using  the  -
+              command)  as a way of examining a new file.  The command ":t=
" is
               equivalent to specifying -t from within =1B[4mless.=1B[0m
=20
        -T=1B[4mtagsfile=1B[24m or --tag-file=3D=1B[4mtagsfile=1B[0m
               Specifies a tags file to be used instead of "tags".
=20
        -u or --underline-special
-              Causes  backspaces  and carriage returns to be treated as pr=
int-
-              able characters; that is, they are sent  to  the  terminal  =
when
+              Causes backspaces and carriage returns to be treated  as  pr=
int-
+              able  characters;  that  is,  they are sent to the terminal =
when
               they appear in the input.
=20
        -U or --UNDERLINE-SPECIAL
-              Causes  backspaces,  tabs  and carriage returns to be treate=
d as
-              control characters; that is, they are handled  as  specified=
  by
+              Causes backspaces, tabs and carriage returns to  be  treated=
  as
+              control  characters;  that  is, they are handled as specifie=
d by
               the -r option.
=20
-              By  default,  if  neither  -u  nor -U is given, backspaces w=
hich
-              appear adjacent to an  underscore  character  are  treated  =
spe-
-              cially:  the  underlined  text is displayed using the termin=
al's
-              hardware underlining capability.  Also, backspaces which  ap=
pear
-              between  two  identical  characters  are  treated specially:=
 the
-              overstruck text is printed using the terminal's  hardware  b=
old-
-              face  capability.   Other backspaces are deleted, along with=
 the
+              By default, if neither -u nor  -U  is  given,  backspaces  w=
hich
+              appear  adjacent  to  an  underscore  character are treated =
spe-
+              cially: the underlined text is displayed  using  the  termin=
al's
+              hardware  underlining capability.  Also, backspaces which ap=
pear
+              between two identical  characters  are  treated  specially: =
 the
+              overstruck  text  is printed using the terminal's hardware b=
old-
+              face capability.  Other backspaces are deleted, along  with =
 the
               preceding character.  Carriage returns immediately followed =
by a
-              newline  are  deleted.   other  carriage  returns are handle=
d as
-              specified by the -r option.  Text which is overstruck or  un=
der-
+              newline are deleted.  Other  carriage  returns  are  handled=
  as
+              specified  by the -r option.  Text which is overstruck or un=
der-
               lined can be searched for if neither -u nor -U is in effect.
=20
        -V or --version
               Displays the version number of =1B[4mless.=1B[0m
=20
        -w or --hilite-unread
-              Temporarily  highlights  the  first  "new"  line after a for=
ward
+              Temporarily highlights the first  "new"  line  after  a  for=
ward
               movement of a full page.  The first "new" line is the line i=
mme-
-              diately  following  the  line  previously  at  the bottom of=
 the
+              diately following the line  previously  at  the  bottom  of =
 the
               screen.  Also highlights the target line after a g or p comm=
and.
-              The  highlight is removed at the next command which causes m=
ove-
-              ment.  The entire line is highlighted, unless the -J  option=
  is
+              The highlight is removed at the next command which causes  m=
ove-
+              ment.   The  entire line is highlighted, unless the -J optio=
n is
               in effect, in which case only the status column is highlight=
ed.
=20
        -W or --HILITE-UNREAD
@@ -769,48 +774,48 @@
               forward movement command larger than one line.
=20
        -x=1B[4mn=1B[24m,... or --tabs=3D=1B[4mn=1B[24m,...
-              Sets tab stops.  If only one =1B[4mn=1B[24m is specified, ta=
b stops  are  set
-              at  multiples  of =1B[4mn=1B[24m.  If multiple values separa=
ted by commas are
-              specified, tab stops are set at those positions, and  then  =
con-
-              tinue  with  the  same  spacing  as  the last two.  For exam=
ple,
-              =1B[4m-x9,17=1B[24m will set tabs at positions  9,  17,  25,=
  33,  etc.   The
+              Sets  tab  stops.  If only one =1B[4mn=1B[24m is specified, =
tab stops are set
+              at multiples of =1B[4mn=1B[24m.  If multiple values separate=
d by  commas  are
+              specified,  tab  stops are set at those positions, and then =
con-
+              tinue with the same spacing  as  the  last  two.   For  exam=
ple,
+              =1B[4m-x9,17=1B[24m  will  set  tabs  at  positions  9, 17, =
25, 33, etc.  The
               default for =1B[4mn=1B[24m is 8.
=20
        -X or --no-init
               Disables sending the termcap initialization and deinitializa=
tion
-              strings to the terminal.  This is  sometimes  desirable  if =
 the
-              deinitialization  string does something unnecessary, like cl=
ear-
+              strings  to  the  terminal.   This is sometimes desirable if=
 the
+              deinitialization string does something unnecessary, like  cl=
ear-
               ing the screen.
=20
        -y=1B[4mn=1B[24m or --max-forw-scroll=3D=1B[4mn=1B[0m
               Specifies a maximum number of lines to scroll forward.  If i=
t is
-              necessary  to  scroll  forward  more than =1B[4mn=1B[24m lin=
es, the screen is
-              repainted instead.  The -c or -C option may be used  to  rep=
aint
-              from  the top of the screen if desired.  By default, any for=
ward
+              necessary to scroll forward more than =1B[4mn=1B[24m  lines,=
  the  screen  is
+              repainted  instead.   The -c or -C option may be used to rep=
aint
+              from the top of the screen if desired.  By default, any  for=
ward
               movement causes scrolling.
=20
        -[z]=1B[4mn=1B[24m or --window=3D=1B[4mn=1B[0m
-              Changes the default scrolling  window  size  to  =1B[4mn=1B[=
24m  lines.   The
+              Changes  the  default  scrolling  window  size  to =1B[4mn=
=1B[24m lines.  The
               default is one screenful.  The z and w commands can also be =
used
-              to change the window size.  The "z" may be omitted for  comp=
ati-
+              to  change the window size.  The "z" may be omitted for comp=
ati-
               bility with some versions of =1B[4mmore.=1B[24m  If the numb=
er =1B[4mn=1B[24m is negative,
-              it indicates =1B[4mn=1B[24m lines less than the  current  sc=
reen  size.   For
+              it  indicates  =1B[4mn=1B[24m  lines  less than the current =
screen size.  For
               example, if the screen is 24 lines, =1B[4m-z-4=1B[24m sets t=
he scrolling win-
-              dow to 20 lines.  If the screen is  resized  to  40  lines, =
 the
+              dow  to  20  lines.   If  the screen is resized to 40 lines,=
 the
               scrolling window automatically changes to 36 lines.
=20
        -=1B[4m"cc=1B[24m or --quotes=3D=1B[4mcc=1B[0m
-              Changes  the  filename quoting character.  This may be neces=
sary
-              if you are trying to name a file which contains both spaces =
 and
-              quote  characters.  Followed by a single character, this cha=
nges
-              the quote character to that character.  Filenames  containin=
g  a
+              Changes the filename quoting character.  This may  be  neces=
sary
+              if  you are trying to name a file which contains both spaces=
 and
+              quote characters.  Followed by a single character, this  cha=
nges
+              the  quote  character to that character.  Filenames containi=
ng a
               space should then be surrounded by that character rather tha=
n by
-              double quotes.  Followed by two  characters,  changes  the  =
open
-              quote  to the first character, and the close quote to the se=
cond
+              double  quotes.   Followed  by  two characters, changes the =
open
+              quote to the first character, and the close quote to the  se=
cond
               character.  Filenames containing a space should then be prec=
eded
-              by  the  open  quote  character  and followed by the close q=
uote
-              character.  Note  that  even  after  the  quote  characters =
 are
-              changed,  this  option  remains  -" (a dash followed by a do=
uble
+              by the open quote character and  followed  by  the  close  q=
uote
+              character.   Note  that  even  after  the  quote  characters=
 are
+              changed, this option remains -" (a dash  followed  by  a  do=
uble
               quote).
=20
        -~ or --tilde
@@ -820,60 +825,60 @@
=20
        -# or --shift
               Specifies the default number of positions to scroll horizont=
ally
-              in  the RIGHTARROW and LEFTARROW commands.  If the number sp=
eci-
-              fied is zero, it sets the default number  of  positions  to =
 one
+              in the RIGHTARROW and LEFTARROW commands.  If the number  sp=
eci-
+              fied  is  zero,  it  sets the default number of positions to=
 one
               half of the screen width.  Alternately, the number may be sp=
eci-
-              fied as a fraction of the width of the screen, starting  wit=
h  a
-              decimal  point:  .5  is  half  of  the screen width, .3 is t=
hree
-              tenths of the screen width, and so on.  If the number is  sp=
eci-
-              fied  as  a  fraction,  the actual number of scroll position=
s is
-              recalculated if the terminal window  is  resized,  so  that =
 the
-              actual  scroll  remains  at the specified fraction of the sc=
reen
+              fied  as  a fraction of the width of the screen, starting wi=
th a
+              decimal point: .5 is half of  the  screen  width,  .3  is  t=
hree
+              tenths  of the screen width, and so on.  If the number is sp=
eci-
+              fied as a fraction, the actual number  of  scroll  positions=
  is
+              recalculated  if  the  terminal  window  is resized, so that=
 the
+              actual scroll remains at the specified fraction  of  the  sc=
reen
               width.
=20
        --no-keypad
-              Disables sending the keypad initialization and  deinitializa=
tion
+              Disables  sending the keypad initialization and deinitializa=
tion
               strings to the terminal.  This is sometimes useful if the ke=
ypad
               strings make the numeric keypad behave in an undesirable man=
ner.
=20
        --follow-name
-              Normally, if the input file is renamed while  an  F  command=
  is
-              executing,  =1B[4mless=1B[24m  will  continue  to display th=
e contents of the
-              original file despite its  name  change.   If  --follow-name=
  is
+              Normally,  if  the  input  file is renamed while an F comman=
d is
+              executing, =1B[4mless=1B[24m will continue to display  the  =
contents  of  the
+              original  file  despite  its  name  change.  If --follow-nam=
e is
               specified, during an F command =1B[4mless=1B[24m will period=
ically attempt to
               reopen the file by name.  If the reopen succeeds and the fil=
e is
-              a  different file from the original (which means that a new =
file
-              has been created  with  the  same  name  as  the  original  =
(now
+              a different file from the original (which means that a new  =
file
+              has  been  created  with  the  same  name  as  the original =
(now
               renamed) file), =1B[4mless=1B[24m will display the contents =
of that new file.
=20
-       --     A  command  line  argument of "--" marks the end of option a=
rgu-
-              ments.  Any arguments following this are  interpreted  as  f=
ile-
+       --     A command line argument of "--" marks the end  of  option  a=
rgu-
+              ments.   Any  arguments  following this are interpreted as f=
ile-
               names.  This can be useful when viewing a file whose name be=
gins
               with a "-" or "+".
=20
-       +      If a command line option begins with =1B[1m+=1B[22m, the  re=
mainder  of  that
-              option  is taken to be an initial command to =1B[4mless.=1B[=
24m  For example,
-              +G tells =1B[4mless=1B[24m to start at the end of the file  =
rather  than  the
-              beginning,  and  +/xyz tells it to start at the first occurr=
ence
-              of "xyz" in the file.  As a special case,  +<number>  acts  =
like
+       +      If  a  command  line option begins with =1B[1m+=1B[22m, the =
remainder of that
+              option is taken to be an initial command to =1B[4mless.=1B[2=
4m  For  example,
+              +G  tells  =1B[4mless=1B[24m  to start at the end of the fil=
e rather than the
+              beginning, and +/xyz tells it to start at the  first  occurr=
ence
+              of  "xyz"  in  the file.  As a special case, +<number> acts =
like
               +<number>g; that is, it starts the display at the specified =
line
-              number (however, see the caveat under the  "g"  command  abo=
ve).
-              If  the  option  starts  with ++, the initial command applie=
s to
-              every file being viewed, not just the first one.  The +  com=
mand
+              number  (however,  see  the caveat under the "g" command abo=
ve).
+              If the option starts with ++, the  initial  command  applies=
  to
+              every  file being viewed, not just the first one.  The + com=
mand
               described previously may also be used to set (or change) an =
ini-
               tial command for every file.
=20
=20
 =1B[1mLINE EDITING=1B[0m
-       When entering command line at the bottom of the screen (for example=
,  a
+       When  entering command line at the bottom of the screen (for exampl=
e, a
        filename for the :e command, or the pattern for a search command), =
cer-
-       tain keys can be used to manipulate the command  line.   Most  comm=
ands
-       have  an alternate form in [ brackets ] which can be used if a key =
does
-       not exist on a particular keyboard.  (Note  that  the  forms  begin=
ning
-       with  ESC do not work in some MS-DOS and Windows systems because ES=
C is
-       the line erase character.)  Any of these special keys  may  be  ent=
ered
-       literally  by  preceding  it with the "literal" character, either ^=
V or
-       ^A.  A backslash itself may also be entered literally by  entering =
 two
+       tain  keys  can  be used to manipulate the command line.  Most comm=
ands
+       have an alternate form in [ brackets ] which can be used if a key  =
does
+       not  exist  on  a  particular keyboard.  (Note that the forms begin=
ning
+       with ESC do not work in some MS-DOS and Windows systems because ESC=
  is
+       the  line  erase  character.)  Any of these special keys may be ent=
ered
+       literally by preceding it with the "literal" character,  either  ^V=
  or
+       ^A.   A  backslash itself may also be entered literally by entering=
 two
        backslashes.
=20
        LEFTARROW [ ESC-h ]
@@ -883,7 +888,7 @@
               Move the cursor one space to the right.
=20
        ^LEFTARROW [ ESC-b or ESC-LEFTARROW ]
-              (That  is, CONTROL and LEFTARROW simultaneously.)  Move the =
cur-
+              (That is, CONTROL and LEFTARROW simultaneously.)  Move the  =
cur-
               sor one word to the left.
=20
        ^RIGHTARROW [ ESC-w or ESC-RIGHTARROW ]
@@ -897,44 +902,48 @@
               Move the cursor to the end of the line.
=20
        BACKSPACE
-              Delete  the  character  to the left of the cursor, or cancel=
 the
+              Delete the character to the left of the cursor,  or  cancel =
 the
               command if the command line is empty.
=20
        DELETE or [ ESC-x ]
               Delete the character under the cursor.
=20
        ^BACKSPACE [ ESC-BACKSPACE ]
-              (That is, CONTROL and  BACKSPACE  simultaneously.)   Delete =
 the
+              (That  is,  CONTROL  and  BACKSPACE simultaneously.)  Delete=
 the
               word to the left of the cursor.
=20
        ^DELETE [ ESC-X or ESC-DELETE ]
-              (That  is,  CONTROL and DELETE simultaneously.)  Delete the =
word
+              (That is, CONTROL and DELETE simultaneously.)  Delete  the  =
word
               under the cursor.
=20
        UPARROW [ ESC-k ]
-              Retrieve the previous command line.
+              Retrieve  the  previous  command  line.  If you first enter =
some
+              text and then press UPARROW, it will retrieve the previous  =
com-
+              mand which begins with that text.
=20
        DOWNARROW [ ESC-j ]
-              Retrieve the next command line.
+              Retrieve  the  next  command line.  If you first enter some =
text
+              and then press DOWNARROW, it  will  retrieve  the  next  com=
mand
+              which begins with that text.
=20
-       TAB    Complete the partial filename to the left of the cursor.  If=
  it
-              matches  more than one filename, the first match is entered =
into
-              the command line.  Repeated  TABs  will  cycle  thru  the  o=
ther
+       TAB    Complete  the partial filename to the left of the cursor.  I=
f it
+              matches more than one filename, the first match is entered  =
into
+              the  command  line.   Repeated  TABs  will  cycle thru the o=
ther
               matching filenames.  If the completed filename is a director=
y, a
-              "/" is appended to the filename.  (On MS-DOS systems, a  "\"=
  is
-              appended.)   The  environment variable LESSSEPARATOR can be =
used
+              "/"  is  appended to the filename.  (On MS-DOS systems, a "\=
" is
+              appended.)  The environment variable LESSSEPARATOR can  be  =
used
               to specify a different character to append to a directory na=
me.
=20
        BACKTAB [ ESC-TAB ]
               Like, TAB, but cycles in the reverse direction thru the matc=
hing
               filenames.
=20
-       ^L     Complete  the partial filename to the left of the cursor.  I=
f it
+       ^L     Complete the partial filename to the left of the cursor.  If=
  it
               matches more than one filename, all matches are entered into=
 the
               command line (if they fit).
=20
        ^U (Unix and OS/2) or ESC (MS-DOS)
-              Delete  the  entire  command  line, or cancel the command if=
 the
+              Delete the entire command line, or cancel  the  command  if =
 the
               command line is empty.  If you have changed your line-kill c=
har-
               acter in Unix to something other than ^U, that character is =
used
               instead of ^U.
@@ -943,72 +952,72 @@
=20
=20
 =1B[1mKEY BINDINGS=1B[0m
-       You may define your own =1B[4mless=1B[24m commands by using the pro=
gram =1B[4mlesskey=1B[24m  (1)
-       to  create  a  lesskey file.  This file specifies a set of command =
keys
-       and an action associated with each key.  You may also  use  =1B[4ml=
esskey=1B[24m  to
+       You  may define your own =1B[4mless=1B[24m commands by using the pr=
ogram =1B[4mlesskey=1B[24m (1)
+       to create a lesskey file.  This file specifies a set  of  command  =
keys
+       and  an  action  associated with each key.  You may also use =1B[4m=
lesskey=1B[24m to
        change the line-editing keys (see LINE EDITING), and to set environ=
ment
-       variables.  If the environment variable LESSKEY is set, =1B[4mless=
=1B[24m uses  that
-       as  the  name of the lesskey file.  Otherwise, =1B[4mless=1B[24m lo=
oks in a standard
-       place for the lesskey file: On Unix systems, =1B[4mless=1B[24m look=
s for  a  lesskey
-       file  called  "$HOME/.less".  On MS-DOS and Windows systems, =1B[4m=
less=1B[24m looks
-       for a lesskey file called "$HOME/_less", and if it is not found  th=
ere,
+       variables.   If the environment variable LESSKEY is set, =1B[4mless=
=1B[24m uses that
+       as the name of the lesskey file.  Otherwise, =1B[4mless=1B[24m look=
s in  a  standard
+       place  for  the lesskey file: On Unix systems, =1B[4mless=1B[24m lo=
oks for a lesskey
+       file called "$HOME/.less".  On MS-DOS and Windows systems,  =1B[4ml=
ess=1B[24m  looks
+       for  a lesskey file called "$HOME/_less", and if it is not found th=
ere,
        then looks for a lesskey file called "_less" in any directory speci=
fied
-       in the PATH environment variable.  On OS/2 systems, =1B[4mless=1B[2=
4m  looks  for  a
-       lesskey  file  called  "$HOME/less.ini",  and  if it is not found, =
then
-       looks for a lesskey file called "less.ini" in any  directory  speci=
fied
+       in  the  PATH  environment variable.  On OS/2 systems, =1B[4mless=
=1B[24m looks for a
+       lesskey file called "$HOME/less.ini", and if  it  is  not  found,  =
then
+       looks  for  a lesskey file called "less.ini" in any directory speci=
fied
        in the INIT environment variable, and if it not found there, then l=
ooks
-       for a lesskey file called "less.ini" in any directory specified in =
 the
-       PATH  environment  variable.   See  the  =1B[4mlesskey=1B[24m  manu=
al  page for more
+       for  a lesskey file called "less.ini" in any directory specified in=
 the
+       PATH environment variable.   See  the  =1B[4mlesskey=1B[24m  manual=
  page  for  more
        details.
=20
-       A system-wide lesskey file may also be set up to provide key  bindi=
ngs.
+       A  system-wide lesskey file may also be set up to provide key bindi=
ngs.
        If a key is defined in both a local lesskey file and in the system-=
wide
-       file, key bindings in the local file take precedence over those in =
 the
-       system-wide  file.   If the environment variable LESSKEY_SYSTEM is =
set,
+       file,  key bindings in the local file take precedence over those in=
 the
+       system-wide file.  If the environment variable LESSKEY_SYSTEM  is  =
set,
        =1B[4mless=1B[24m uses that as the name of the system-wide lesskey =
file.  Otherwise,
-       =1B[4mless=1B[24m  looks  in  a  standard place for the system-wide=
 lesskey file: On
-       Unix systems, the system-wide lesskey file  is  /usr/local/etc/sysl=
ess.
-       (However,  if  =1B[4mless=1B[24m  was  built with a different sysco=
nf directory than
+       =1B[4mless=1B[24m looks in a standard place for the  system-wide  l=
esskey  file:  On
+       Unix  systems,  the system-wide lesskey file is /usr/local/etc/sysl=
ess.
+       (However, if =1B[4mless=1B[24m was built with a  different  sysconf=
  directory  than
        /usr/local/etc, that directory is where the sysless file is found.)=
  On
-       MS-DOS  and  Windows  systems, the system-wide lesskey file is c:\_=
sys-
+       MS-DOS and Windows systems, the system-wide lesskey  file  is  c:\_=
sys-
        less.  On OS/2 systems, the system-wide lesskey file is c:\sysless.=
ini.
=20
=20
 =1B[1mINPUT PREPROCESSOR=1B[0m
-       You may define an "input preprocessor" for =1B[4mless.=1B[24m  Befo=
re =1B[4mless=1B[24m  opens  a
+       You  may  define an "input preprocessor" for =1B[4mless.=1B[24m  Be=
fore =1B[4mless=1B[24m opens a
        file, it first gives your input preprocessor a chance to modify the=
 way
-       the contents of the file are displayed.  An input preprocessor is  =
sim-
-       ply  an executable program (or shell script), which writes the cont=
ents
+       the  contents of the file are displayed.  An input preprocessor is =
sim-
+       ply an executable program (or shell script), which writes the  cont=
ents
        of the file to a different file, called the replacement file.  The =
con-
-       tents  of  the replacement file are then displayed in place of the =
con-
-       tents of the original file.  However, it will appear to the user as=
  if
-       the  original  file  is opened; that is, =1B[4mless=1B[24m will dis=
play the original
+       tents of the replacement file are then displayed in place of  the  =
con-
+       tents  of the original file.  However, it will appear to the user a=
s if
+       the original file is opened; that is, =1B[4mless=1B[24m will  displ=
ay  the  original
        filename as the name of the current file.
=20
-       An input preprocessor receives one command line argument, the  orig=
inal
-       filename,  as  entered  by  the user.  It should create the replace=
ment
-       file, and when finished, print the name of the replacement file to =
 its
-       standard  output.  If the input preprocessor does not output a repl=
ace-
-       ment filename, =1B[4mless=1B[24m uses the original file, as normal.=
  The input  pre-
-       processor  is  not  called  when  viewing standard input.  To set u=
p an
-       input preprocessor, set the LESSOPEN environment variable to a  com=
mand
-       line  which  will  invoke  your  input preprocessor.  This command =
line
-       should include one  occurrence  of  the  string  "%s",  which  will=
  be
-       replaced  by  the  filename  when  the  input  preprocessor  comman=
d is
+       An  input preprocessor receives one command line argument, the orig=
inal
+       filename, as entered by the user.  It  should  create  the  replace=
ment
+       file,  and when finished, print the name of the replacement file to=
 its
+       standard output.  If the input preprocessor does not output a  repl=
ace-
+       ment  filename, =1B[4mless=1B[24m uses the original file, as normal=
.  The input pre-
+       processor is not called when viewing standard  input.   To  set  up=
  an
+       input  preprocessor, set the LESSOPEN environment variable to a com=
mand
+       line which will invoke your  input  preprocessor.   This  command  =
line
+       should  include  one  occurrence  of  the  string  "%s",  which wil=
l be
+       replaced by  the  filename  when  the  input  preprocessor  command=
  is
        invoked.
=20
        When =1B[4mless=1B[24m closes a file opened in such a way, it will =
call another pro-
-       gram,  called  the  input  postprocessor, which may perform any des=
ired
-       clean-up action (such as  deleting  the  replacement  file  created=
  by
+       gram, called the input postprocessor, which  may  perform  any  des=
ired
+       clean-up  action  (such  as  deleting  the  replacement file create=
d by
        LESSOPEN).  This program receives two command line arguments, the o=
rig-
-       inal filename as entered by the user, and the name of  the  replace=
ment
-       file.   To set up an input postprocessor, set the LESSCLOSE environ=
ment
-       variable to a command line which will invoke your input  postproces=
sor.
-       It  may  include  two  occurrences  of  the  string  "%s"; the firs=
t is
-       replaced with the original name of the file and  the  second  with =
 the
+       inal  filename  as entered by the user, and the name of the replace=
ment
+       file.  To set up an input postprocessor, set the LESSCLOSE  environ=
ment
+       variable  to a command line which will invoke your input postproces=
sor.
+       It may include two  occurrences  of  the  string  "%s";  the  first=
  is
+       replaced  with  the  original  name of the file and the second with=
 the
        name of the replacement file, which was output by LESSOPEN.
=20
-       For  example, on many Unix systems, these two scripts will allow yo=
u to
+       For example, on many Unix systems, these two scripts will allow you=
  to
        keep files in compressed format, but still let =1B[4mless=1B[24m vi=
ew them directly:
=20
        lessopen.sh:
@@ -1027,50 +1036,65 @@
             #! /bin/sh
             rm $2
=20
-       To use these scripts, put them both where they can be executed and =
 set
+       To  use these scripts, put them both where they can be executed and=
 set
        LESSOPEN=3D"lessopen.sh %s",  and  LESSCLOSE=3D"lessclose.sh %s %s"=
.   More
-       complex LESSOPEN and LESSCLOSE scripts may be written to  accept  o=
ther
+       complex  LESSOPEN  and LESSCLOSE scripts may be written to accept o=
ther
        types of compressed files, and so on.
=20
-       It  is  also  possible to set up an input preprocessor to pipe the =
file
-       data directly to =1B[4mless,=1B[24m rather than putting the data in=
to a  replacement
+       It is also possible to set up an input preprocessor to  pipe  the  =
file
+       data  directly to =1B[4mless,=1B[24m rather than putting the data i=
nto a replacement
        file.  This avoids the need to decompress the entire file before st=
art-
        ing to view it.  An input preprocessor that works this way is calle=
d an
-       input  pipe.   An input pipe, instead of writing the name of a repl=
ace-
-       ment file on its standard output, writes the  entire  contents  of =
 the
-       replacement  file  on  its standard output.  If the input pipe does=
 not
-       write any characters on its standard output, then there is no  repl=
ace-
-       ment  file and =1B[4mless=1B[24m uses the original file, as normal.=
  To use an input
-       pipe, make the first character in the LESSOPEN environment  variabl=
e  a
-       vertical  bar  (|)  to  signify that the input preprocessor is an i=
nput
+       input pipe.  An input pipe, instead of writing the name of  a  repl=
ace-
+       ment  file  on  its  standard output, writes the entire contents of=
 the
+       replacement file on its standard output.  If the input  pipe  does =
 not
+       write  any characters on its standard output, then there is no repl=
ace-
+       ment file and =1B[4mless=1B[24m uses the original file, as normal. =
 To use an  input
+       pipe,  make  the first character in the LESSOPEN environment variab=
le a
+       vertical bar (|) to signify that the input  preprocessor  is  an  i=
nput
        pipe.
=20
-       For example, on many Unix systems, this script will work like the  =
pre-
+       For  example, on many Unix systems, this script will work like the =
pre-
        vious example scripts:
=20
        lesspipe.sh:
             #! /bin/sh
             case "$1" in
             *.Z) uncompress -c $1  2>/dev/null
+            *)   exit 1
                  ;;
             esac
+            exit $?
=20
        To  use  this  script,  put  it  where  it  can  be  executed  and =
 set
-       LESSOPEN=3D"|lesspipe.sh %s".  When an input pipe is  used,  a  LES=
SCLOSE
-       postprocessor  can be used, but it is usually not necessary since t=
here
-       is no replacement file to clean up.  In this case, the replacement =
file
-       name passed to the LESSCLOSE postprocessor is "-".
+       LESSOPEN=3D"|lesspipe.sh %s".
=20
-       For  compatibility with previous versions of =1B[4mless,=1B[24m the=
 input preproces-
+       Note  that  a  preprocessor  cannot output an empty file, since tha=
t is
+       interpreted as meaning there is no replacement, and the  original  =
file
+       is used.  To avoid this, if LESSOPEN starts with two vertical bars,=
 the
+       exit status of the script becomes meaningful.  If the  exit  status=
  is
+       zero,  the  output  is  considered  to  be replacement text, even i=
f it
+       empty.  If the exit status is nonzero, any output is  ignored  and =
 the
+       original  file  is  used.   For compatibility with previous version=
s of
+       =1B[4mless,=1B[24m if LESSOPEN starts with only one vertical bar, t=
he exit status of
+       the preprocessor is ignored.
+
+       When  an input pipe is used, a LESSCLOSE postprocessor can be used,=
 but
+       it is usually not necessary since there is no replacement file to c=
lean
+       up.   In  this  case, the replacement file name passed to the LESSC=
LOSE
+       postprocessor is "-".
+
+       For compatibility with previous versions of =1B[4mless,=1B[24m the =
input  preproces-
        sor or pipe is not used if =1B[4mless=1B[24m is viewing standard in=
put.  However, if
-       the  first  character of LESSOPEN is a dash (-), the input preproce=
ssor
-       is used on standard input as well as other files.  In  this  case, =
 the
-       dash  is  not  considered  to  be part of the preprocessor command.=
  If
+       the first character of LESSOPEN is a dash (-), the  input  preproce=
ssor
+       is  used  on  standard input as well as other files.  In this case,=
 the
+       dash is not considered to be part  of  the  preprocessor  command. =
  If
        standard input is being viewed, the input preprocessor is passed a =
file
-       name  consisting of a single dash.  Similarly, if the first two cha=
rac-
-       ters of LESSOPEN are vertical bar and dash (|-), the input pipe is =
used
-       on standard input as well as other files.  Again, in this case the =
dash
-       is not considered to be part of the input pipe command.
+       name consisting of a single dash.  Similarly, if the first two  cha=
rac-
+       ters  of  LESSOPEN  are vertical bar and dash (|-) or two vertical =
bars
+       and a dash (||-), the input pipe is used on standard input as  well=
  as
+       other files.  Again, in this case the dash is not considered to be =
part
+       of the input pipe command.
=20
=20
 =1B[1mNATIONAL CHARACTER SETS=1B[0m
@@ -1535,10 +1559,13 @@
               the  window  system's  idea  of the screen size takes preced=
ence
               over the LINES and COLUMNS environment variables.)
=20
-       PATH   User's search path (used to find a lesskey file  on  MS-DOS =
 and
+       MORE   Options which are passed to =1B[4mless=1B[24m automatically =
when  running  in
+              =1B[4mmore=1B[24m compatible mode.
+
+       PATH   User's  search  path  (used to find a lesskey file on MS-DOS=
 and
               OS/2 systems).
=20
-       SHELL  The  shell  used  to execute the ! command, as well as to ex=
pand
+       SHELL  The shell used to execute the ! command, as well  as  to  ex=
pand
               filenames.
=20
        TERM   The type of terminal on which =1B[4mless=1B[24m is being run.
@@ -1551,28 +1578,27 @@
=20
=20
 =1B[1mCOPYRIGHT=1B[0m
-       Copyright (C) 1984-2011  Mark Nudelman
+       Copyright (C) 1984-2012  Mark Nudelman
=20
-       less is part of the GNU project and is free software.  You  can  re=
dis-
-       tribute  it and/or modify it under the terms of either (1) the GNU =
Gen-
-       eral Public License as published by the Free  Software  Foundation;=
  or
+       less  is  part of the GNU project and is free software.  You can re=
dis-
+       tribute it and/or modify it under the terms of either (1) the GNU  =
Gen-
+       eral  Public  License  as published by the Free Software Foundation=
; or
        (2) the Less License.  See the file README in the less distribution=
 for
        more details regarding redistribution.  You should have received a =
copy
-       of  the  GNU General Public License along with the source for less;=
 see
-       the file COPYING.  If not, write to the Free  Software  Foundation,=
  59
-       Temple  Place, Suite 330, Boston, MA  02111-1307, USA.  You should =
also
+       of the GNU General Public License along with the source for  less; =
 see
+       the  file  COPYING.   If not, write to the Free Software Foundation=
, 59
+       Temple Place, Suite 330, Boston, MA  02111-1307, USA.  You should  =
also
        have received a copy of the Less License; see the file LICENSE.
=20
        less is distributed in the hope that it will be useful, but WITHOUT=
 ANY
-       WARRANTY;  without even the implied warranty of MERCHANTABILITY or =
FIT-
-       NESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License =
 for
+       WARRANTY; without even the implied warranty of MERCHANTABILITY or  =
FIT-
+       NESS  FOR A PARTICULAR PURPOSE.  See the GNU General Public License=
 for
        more details.
=20
=20
 =1B[1mAUTHOR=1B[0m
-       Mark Nudelman <markn at greenwoodsoftware.com>
-       Send  bug  reports  or  comments  to  the  above  address  or  to  =
bug-
-       less at gnu.org.
+       Mark Nudelman <bug-less at gnu.org>
+       Send bug reports or comments to bug-less at gnu.org.
        See http://www.greenwoodsoftware.com/less/bugs.html for the latest =
list
        of known bugs in less.
        For more information, see the less homepage at
@@ -1580,4 +1606,4 @@
=20
=20
=20
-                           Version 444: 09 Jun 2011                    LES=
S(1)
+                           Version 451: 21 Jul 2012                    LES=
S(1)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/less.nro
--- a/head/contrib/less/less.nro	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/less.nro	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.TH LESS 1 "Version 444: 09 Jun 2011"
+.TH LESS 1 "Version 451: 21 Jul 2012"
 .SH NAME
 less \- opposite of more
 .SH SYNOPSIS
@@ -109,6 +109,10 @@
 It is a way to monitor the tail of a file which is growing
 while it is being viewed.
 (The behavior is similar to the "tail \-f" command.)
+.IP "ESC-F"
+Like F, but as soon as a line is found which matches
+the last search pattern, the terminal bell is rung=20
+and forward scrolling stops.
 .IP "g or < or ESC-<"
 Go to line N in the file, default 1 (beginning of file).
 (Warning: this may be slow if N is large.)
@@ -761,10 +765,10 @@
 output.
 .IP "\-S or \-\-chop-long-lines"
 Causes lines longer than the screen width to be
-chopped rather than folded.
+chopped (truncated) rather than wrapped.
 That is, the portion of a long line that does not fit in
 the screen width is not shown.
-The default is to fold long lines; that is, display the remainder
+The default is to wrap long lines; that is, display the remainder
 on the next line.
 .IP "\-t\fItag\fP or \-\-tag=3D\fItag\fP"
 The \-t option, followed immediately by a TAG,
@@ -805,7 +809,7 @@
 using the terminal's hardware boldface capability.
 Other backspaces are deleted, along with the preceding character.
 Carriage returns immediately followed by a newline are deleted.
-other carriage returns are handled as specified by the \-r option.
+Other carriage returns are handled as specified by the \-r option.
 Text which is overstruck or underlined can be searched for
 if neither \-u nor \-U is in effect.
 .IP "\-V or \-\-version"
@@ -963,8 +967,12 @@
 Delete the word under the cursor.
 .IP "UPARROW [ ESC-k ]"
 Retrieve the previous command line.
+If you first enter some text and then press UPARROW,
+it will retrieve the previous command which begins with that text.
 .IP "DOWNARROW [ ESC-j ]"
 Retrieve the next command line.
+If you first enter some text and then press DOWNARROW,
+it will retrieve the next command which begins with that text.
 .IP "TAB"
 Complete the partial filename to the left of the cursor.
 If it matches more than one filename, the first match
@@ -1158,13 +1166,32 @@
 .br
 	*.Z)	uncompress \-c $1  2>/dev/null
 .br
+	*)	exit 1
+.br
 		;;
 .br
 	esac
 .br
+	exit $?
+.br
 .PP
 To use this script, put it where it can be executed and set
 LESSOPEN=3D"|lesspipe.sh %s".
+.PP
+Note that a preprocessor cannot output an empty file, since that
+is interpreted as meaning there is no replacement, and=20
+the original file is used.
+To avoid this, if LESSOPEN starts with two vertical bars,
+the exit status of the script becomes meaningful.
+If the exit status is zero, the output is considered to be=20
+replacement text, even if it empty.
+If the exit status is nonzero, any output is ignored and the
+original file is used.
+For compatibility with previous versions of
+.I less,
+if LESSOPEN starts with only one vertical bar, the exit status
+of the preprocessor is ignored.
+.PP
 When an input pipe is used, a LESSCLOSE postprocessor can be used,
 but it is usually not necessary since there is no replacement file
 to clean up.
@@ -1183,7 +1210,8 @@
 If standard input is being viewed, the input preprocessor is passed
 a file name consisting of a single dash.
 Similarly, if the first two characters of LESSOPEN are vertical bar and da=
sh
-(|\-), the input pipe is used on standard input as well as other files.
+(|\-) or two vertical bars and a dash (||\-),=20
+the input pipe is used on standard input as well as other files.
 Again, in this case the dash is not considered to be part of=20
 the input pipe command.
=20
@@ -1666,6 +1694,12 @@
 (But if you have a windowing system which supports TIOCGWINSZ or WIOCGETD,
 the window system's idea of the screen size takes precedence over the
 LINES and COLUMNS environment variables.)
+.IP MORE
+Options which are passed to
+.I less
+automatically when running in=20
+.I more
+compatible mode.
 .IP PATH
 User's search path (used to find a lesskey file=20
 on MS-DOS and OS/2 systems).
@@ -1682,7 +1716,7 @@
 lesskey(1)
=20
 .SH COPYRIGHT
-Copyright (C) 1984-2011  Mark Nudelman
+Copyright (C) 1984-2012  Mark Nudelman
 .PP
 less is part of the GNU project and is free software.
 You can redistribute it and/or modify it
@@ -1705,9 +1739,9 @@
=20
 .SH AUTHOR
 .PP
-Mark Nudelman <markn at greenwoodsoftware.com>
+Mark Nudelman <bug-less at gnu.org>
 .br
-Send bug reports or comments to the above address or to bug-less at gnu.org.
+Send bug reports or comments to bug-less at gnu.org.
 .br
 See http://www.greenwoodsoftware.com/less/bugs.html for the latest list of=
 known bugs in less.
 .br
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lessecho.c
--- a/head/contrib/less/lessecho.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lessecho.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -28,7 +27,7 @@
=20
 #include "less.h"
=20
-static char *version =3D "$Revision: 1.14 $";
+static char *version =3D "$Revision: 1.15 $";
=20
 static int quote_all =3D 0;
 static char openquote =3D '"';
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lessecho.man
--- a/head/contrib/less/lessecho.man	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lessecho.man	Wed Jul 25 16:21:35 2012 +0300
@@ -10,12 +10,18 @@
=20
 =1B[1mDESCRIPTION=1B[0m
        =1B[4mlessecho=1B[24m  is a program that simply echos its arguments=
 on standard out-
-       put.  But any argument containing spaces is enclosed in quotes.
+       put.  But any metacharacter in the output is preceded  by  an  "esc=
ape"
+       character, which by default is a backslash.
=20
 =1B[1mOPTIONS=1B[0m
        A summary of options is included below.
=20
-       =1B[1m-ox    =1B[22mSpecifies "x" to be the open quote character.
+       =1B[1m-ex    =1B[22mSpecifies  "x", rather than backslash, to be th=
e escape char for
+              metachars.  If x is "-", no escape char is  used  and  argum=
ents
+              containing metachars are surrounded by quotes instead.
+
+       =1B[1m-ox    =1B[22mSpecifies  "x",  rather  than double-quote, to =
be the open quote
+              character, which is used if the -e- option is specified.
=20
        =1B[1m-cx    =1B[22mSpecifies "x" to be the close quote character.
=20
@@ -23,27 +29,26 @@
=20
        =1B[1m-dn    =1B[22mSpecifies "n" to be the close quote character, =
as an integer.
=20
-       =1B[1m-mx    =1B[22mSpecifies "x" to be a metachar.
+       =1B[1m-mx    =1B[22mSpecifies "x" to be a metachar.  By default, no=
  characters  are
+              considered metachars.
=20
        =1B[1m-nn    =1B[22mSpecifies "n" to be a metachar, as an integer.
=20
-       =1B[1m-ex    =1B[22mSpecifies "x" to be the escape char for metacha=
rs.
-
-       =1B[1m-fn    =1B[22mSpecifies "n" to be the escape char for metacha=
rs, as  an  inte-
+       =1B[1m-fn    =1B[22mSpecifies  "n"  to be the escape char for metac=
hars, as an inte-
               ger.
=20
-       =1B[1m-a     =1B[22mSpecifies  that  all arguments are to be quoted=
.  The default is
-              that only arguments containing spaces are quoted.
+       =1B[1m-a     =1B[22mSpecifies that all arguments are to be quoted. =
 The  default  is
+              that only arguments containing metacharacters are quoted
=20
 =1B[1mSEE ALSO=1B[0m
        less(1)
=20
 =1B[1mAUTHOR=1B[0m
-       This manual page was written by  Thomas  Schoepf  <schoepf at debian.o=
rg>,
+       This  manual  page  was written by Thomas Schoepf <schoepf at debian.o=
rg>,
        for the Debian GNU/Linux system (but may be used by others).
=20
        Send bug reports or comments to bug-less at gnu.org.
=20
=20
=20
-                           Version 444: 09 Jun 2011                LESSECH=
O(1)
+                           Version 451: 21 Jul 2012                LESSECH=
O(1)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lessecho.nro
--- a/head/contrib/less/lessecho.nro	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lessecho.nro	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.TH LESSECHO 1 "Version 444: 09 Jun 2011"
+.TH LESSECHO 1 "Version 451: 21 Jul 2012"
 .SH NAME
 lessecho \- expand metacharacters
 .SH SYNOPSIS
@@ -7,12 +7,19 @@
 .SH "DESCRIPTION"
 .I lessecho
 is a program that simply echos its arguments on standard output.
-But any argument containing spaces is enclosed in quotes.
+But any metacharacter in the output is preceded by an "escape"
+character, which by default is a backslash.
 .SH OPTIONS
 A summary of options is included below.
 .TP
+.B \-ex
+Specifies "x", rather than backslash, to be the escape char for metachars.
+If x is "-", no escape char is used and arguments containing metachars
+are surrounded by quotes instead.
+.TP
 .B \-ox
-Specifies "x" to be the open quote character.
+Specifies "x", rather than double-quote, to be the open quote character,
+which is used if the -e- option is specified.
 .TP
 .B \-cx
 Specifies "x" to be the close quote character.
@@ -25,19 +32,17 @@
 .TP
 .B \-mx
 Specifies "x" to be a metachar.
+By default, no characters are considered metachars.
 .TP
 .B \-nn
 Specifies "n" to be a metachar, as an integer.
 .TP
-.B \-ex
-Specifies "x" to be the escape char for metachars.
-.TP
 .B \-fn
 Specifies "n" to be the escape char for metachars, as an integer.
 .TP
 .B \-a
 Specifies that all arguments are to be quoted.
-The default is that only arguments containing spaces are quoted.
+The default is that only arguments containing metacharacters are quoted
 .SH "SEE ALSO"
 less(1)
 .SH AUTHOR
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lesskey.c
--- a/head/contrib/less/lesskey.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lesskey.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -112,6 +111,7 @@
 	{ "flush-repaint",        A_FREPAINT },
 	{ "forw-bracket",         A_F_BRACKET },
 	{ "forw-forever",         A_F_FOREVER },
+	{ "forw-until-hilite",    A_F_UNTIL_HILITE },
 	{ "forw-line",            A_F_LINE },
 	{ "forw-line-force",      A_FF_LINE },
 	{ "forw-screen",          A_F_SCREEN },
@@ -449,7 +449,7 @@
 		}
 	case '^':
 		/*
-		 * Carat means CONTROL.
+		 * Caret means CONTROL.
 		 */
 		*pp =3D p+2;
 		buf[0] =3D CONTROL(p[1]);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lesskey.h
--- a/head/contrib/less/lesskey.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lesskey.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lesskey.man
--- a/head/contrib/less/lesskey.man	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lesskey.man	Wed Jul 25 16:21:35 2012 +0300
@@ -145,6 +145,7 @@
             w         back-window
             \e\40          forw-screen-force
             F         forw-forever
+            \eF       forw-until-hilite
             R         repaint-flush
             r         repaint
             ^R        repaint
@@ -329,7 +330,7 @@
=20
=20
 =1B[1mCOPYRIGHT=1B[0m
-       Copyright (C) 2000-2011  Mark Nudelman
+       Copyright (C) 2000-2012  Mark Nudelman
=20
        lesskey is part of the GNU project and is free software; you can re=
dis-
        tribute it and/or modify it under the terms of the GNU  General  Pu=
blic
@@ -347,11 +348,9 @@
=20
=20
 =1B[1mAUTHOR=1B[0m
-       Mark Nudelman <markn at greenwoodsoftware.com>
-       Send  bug  reports  or  comments  to  the  above  address  or  to  =
bug-
-       less at gnu.org.
+       Mark Nudelman <bug-less at gnu.org>
+       Send bug reports or comments to bug-less at gnu.org.
=20
=20
=20
-
-                           Version 444: 09 Jun 2011                 LESSKE=
Y(1)
+                           Version 451: 21 Jul 2012                 LESSKE=
Y(1)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lesskey.nro
--- a/head/contrib/less/lesskey.nro	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lesskey.nro	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.TH LESSKEY 1 "Version 444: 09 Jun 2011"
+.TH LESSKEY 1 "Version 451: 21 Jul 2012"
 .SH NAME
 lesskey \- specify key bindings for less
 .SH SYNOPSIS
@@ -162,6 +162,7 @@
 	w		back-window=20
 	\ee\e40		forw-screen-force
 	F		forw-forever=20
+	\eeF		forw-until-hilite
 	R		repaint-flush=20
 	r		repaint=20
 	^R		repaint=20
@@ -355,7 +356,7 @@
 This NUL character should be represented as \e340 in a lesskey file.
=20
 .SH COPYRIGHT
-Copyright (C) 2000-2011  Mark Nudelman
+Copyright (C) 2000-2012  Mark Nudelman
 .PP
 lesskey is part of the GNU project and is free software;
 you can redistribute it and/or modify it
@@ -375,7 +376,6 @@
=20
 .SH AUTHOR
 .PP
-Mark Nudelman <markn at greenwoodsoftware.com>
+Mark Nudelman <bug-less at gnu.org>
 .br
-Send bug reports or comments to the above address or to bug-less at gnu.org.
-
+Send bug reports or comments to bug-less at gnu.org.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lglob.h
--- a/head/contrib/less/lglob.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lglob.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/line.c
--- a/head/contrib/less/line.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/line.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/line.c 221715 2011-05-09 21:51:59Z delphij =
$ */
+/* $FreeBSD: head/contrib/less/line.c 238730 2012-07-24 01:09:11Z delphij =
$ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -28,6 +27,7 @@
 public int tabstops[TABSTOP_MAX] =3D { 0 }; /* Custom tabstops */
 public int ntabstops =3D 1;	/* Number of tabstops */
 public int tabdefault =3D 8;	/* Default repeated tabstops */
+public POSITION highest_hilite;	/* Pos of last hilite in file found so far=
 */
=20
 static int curr;		/* Index into linebuf */
 static int column;		/* Printable length, accounting for
@@ -586,7 +586,12 @@
 			 * Override the attribute passed in.
 			 */
 			if (a !=3D AT_ANSI)
+			{
+				if (highest_hilite !=3D NULL_POSITION &&
+				    pos > highest_hilite)
+				    	highest_hilite =3D pos;
 				a |=3D AT_HILITE;
+			}
 		}
 	}
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/linenum.c
--- a/head/contrib/less/linenum.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/linenum.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/lsystem.c
--- a/head/contrib/less/lsystem.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/lsystem.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/main.c
--- a/head/contrib/less/main.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/main.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/main.c 221715 2011-05-09 21:51:59Z delphij =
$ */
+/* $FreeBSD: head/contrib/less/main.c 238730 2012-07-24 01:09:11Z delphij =
$ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -220,6 +219,7 @@
 		argv++;
 		(void) get_ifile(filename, ifile);
 		ifile =3D prev_ifile(NULL_IFILE);
+		free(filename);
 #endif
 	}
 	/*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/mark.c
--- a/head/contrib/less/mark.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/mark.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/mkhelp.c
--- a/head/contrib/less/mkhelp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/mkhelp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/optfunc.c
--- a/head/contrib/less/optfunc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/optfunc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -481,7 +480,30 @@
 		any_display =3D 1;
 		putstr("less ");
 		putstr(version);
-		putstr("\nCopyright (C) 1984-2009 Mark Nudelman\n\n");
+		putstr(" (");
+#if HAVE_GNU_REGEX
+		putstr("GNU ");
+#endif
+#if HAVE_POSIX_REGCOMP
+		putstr("POSIX ");
+#endif
+#if HAVE_PCRE
+		putstr("PCRE ");
+#endif
+#if HAVE_RE_COMP
+		putstr("BSD ");
+#endif
+#if HAVE_REGCMP
+		putstr("V8 ");
+#endif
+#if HAVE_V8_REGCOMP
+		putstr("Spencer V8 ");
+#endif
+#if !HAVE_GNU_REGEX && !HAVE_POSIX_REGCOMP && !HAVE_PCRE && !HAVE_RE_COMP =
&& !HAVE_REGCMP && !HAVE_V8_REGCOMP
+		putstr("no ");
+#endif
+		putstr("regular expressions)\n");
+		putstr("Copyright (C) 1984-2012 Mark Nudelman\n\n");
 		putstr("less comes with NO WARRANTY, to the extent permitted by law.\n");
 		putstr("For information about the terms of redistribution,\n");
 		putstr("see the file named README in the less distribution.\n");
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/option.c
--- a/head/contrib/less/option.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/option.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/option.h
--- a/head/contrib/less/option.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/option.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/opttbl.c
--- a/head/contrib/less/opttbl.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/opttbl.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/os.c
--- a/head/contrib/less/os.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/os.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/output.c
--- a/head/contrib/less/output.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/output.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -174,6 +173,7 @@
 						 */
 						p++;
 						anchor =3D p_next =3D p;
+						at =3D 0;
 						WIN32setcolors(nm_fg_color, nm_bg_color);
 						continue;
 					}
@@ -272,20 +272,28 @@
 						break;
 					if (at & 1)
 					{
+						/*
+						 * If \e[1m use defined bold
+						 * color, else set intensity.
+						 */
+						if (p[-2] =3D=3D '[')
+						{
 							fg =3D bo_fg_color;
 							bg =3D bo_bg_color;
+						} else
+							fg |=3D 8;
 					} else if (at & 2)
 					{
-							fg =3D so_fg_color;
-							bg =3D so_bg_color;
+						fg =3D so_fg_color;
+						bg =3D so_bg_color;
 					} else if (at & 4)
 					{
-							fg =3D ul_fg_color;
-							bg =3D ul_bg_color;
+						fg =3D ul_fg_color;
+						bg =3D ul_bg_color;
 					} else if (at & 8)
 					{
-							fg =3D bl_fg_color;
-							bg =3D bl_bg_color;
+						fg =3D bl_fg_color;
+						bg =3D bl_bg_color;
 					}
 					fg &=3D 0xf;
 					bg &=3D 0xf;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/pattern.c
--- a/head/contrib/less/pattern.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/pattern.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
 /*
@@ -26,75 +25,92 @@
 	int search_type;
 	void **comp_pattern;
 {
-	if ((search_type & SRCH_NO_REGEX) =3D=3D 0)
+	if (search_type & SRCH_NO_REGEX)
+		return (0);
+  {
+#if HAVE_GNU_REGEX
+	struct re_pattern_buffer *comp =3D (struct re_pattern_buffer *)
+		ecalloc(1, sizeof(struct re_pattern_buffer));
+	struct re_pattern_buffer **pcomp =3D=20
+		(struct re_pattern_buffer **) comp_pattern;
+	re_set_syntax(RE_SYNTAX_POSIX_EXTENDED);
+	if (re_compile_pattern(pattern, strlen(pattern), comp))
 	{
+		free(comp);
+		error("Invalid pattern", NULL_PARG);
+		return (-1);
+	}
+	if (*pcomp !=3D NULL)
+		regfree(*pcomp);
+	*pcomp =3D comp;
+#endif
 #if HAVE_POSIX_REGCOMP
-		regex_t *comp =3D (regex_t *) ecalloc(1, sizeof(regex_t));
-		regex_t **pcomp =3D (regex_t **) comp_pattern;
-		if (regcomp(comp, pattern, REGCOMP_FLAG))
-		{
-			free(comp);
-			error("Invalid pattern", NULL_PARG);
-			return (-1);
-		}
-		if (*pcomp !=3D NULL)
-			regfree(*pcomp);
-		*pcomp =3D comp;
+	regex_t *comp =3D (regex_t *) ecalloc(1, sizeof(regex_t));
+	regex_t **pcomp =3D (regex_t **) comp_pattern;
+	if (regcomp(comp, pattern, REGCOMP_FLAG))
+	{
+		free(comp);
+		error("Invalid pattern", NULL_PARG);
+		return (-1);
+	}
+	if (*pcomp !=3D NULL)
+		regfree(*pcomp);
+	*pcomp =3D comp;
 #endif
 #if HAVE_PCRE
-		pcre *comp;
-		pcre **pcomp =3D (pcre **) comp_pattern;
-		const char *errstring;
-		int erroffset;
-		PARG parg;
-		comp =3D pcre_compile(pattern, 0,
-				&errstring, &erroffset, NULL);
-		if (comp =3D=3D NULL)
-		{
-			parg.p_string =3D (char *) errstring;
-			error("%s", &parg);
-			return (-1);
-		}
-		*pcomp =3D comp;
+	pcre *comp;
+	pcre **pcomp =3D (pcre **) comp_pattern;
+	constant char *errstring;
+	int erroffset;
+	PARG parg;
+	comp =3D pcre_compile(pattern, 0,
+			&errstring, &erroffset, NULL);
+	if (comp =3D=3D NULL)
+	{
+		parg.p_string =3D (char *) errstring;
+		error("%s", &parg);
+		return (-1);
+	}
+	*pcomp =3D comp;
 #endif
 #if HAVE_RE_COMP
-		PARG parg;
-		int *pcomp =3D (int *) comp_pattern;
-		if ((parg.p_string =3D re_comp(pattern)) !=3D NULL)
-		{
-			error("%s", &parg);
-			return (-1);
-		}
-		*pcomp =3D 1;
+	PARG parg;
+	int *pcomp =3D (int *) comp_pattern;
+	if ((parg.p_string =3D re_comp(pattern)) !=3D NULL)
+	{
+		error("%s", &parg);
+		return (-1);
+	}
+	*pcomp =3D 1;
 #endif
 #if HAVE_REGCMP
-		char *comp;
-		char **pcomp =3D (char **) comp_pattern;
-		if ((comp =3D regcmp(pattern, 0)) =3D=3D NULL)
-		{
-			error("Invalid pattern", NULL_PARG);
-			return (-1);
-		}
-		if (pcomp !=3D NULL)
-			free(*pcomp);
-		*pcomp =3D comp;
+	char *comp;
+	char **pcomp =3D (char **) comp_pattern;
+	if ((comp =3D regcmp(pattern, 0)) =3D=3D NULL)
+	{
+		error("Invalid pattern", NULL_PARG);
+		return (-1);
+	}
+	if (pcomp !=3D NULL)
+		free(*pcomp);
+	*pcomp =3D comp;
 #endif
 #if HAVE_V8_REGCOMP
-		struct regexp *comp;
-		struct regexp **pcomp =3D (struct regexp **) comp_pattern;
-		if ((comp =3D regcomp(pattern)) =3D=3D NULL)
-		{
-			/*
-			 * regcomp has already printed an error message=20
-			 * via regerror().
-			 */
-			return (-1);
-		}
-		if (*pcomp !=3D NULL)
-			free(*pcomp);
-		*pcomp =3D comp;
+	struct regexp *comp;
+	struct regexp **pcomp =3D (struct regexp **) comp_pattern;
+	if ((comp =3D regcomp(pattern)) =3D=3D NULL)
+	{
+		/*
+		 * regcomp has already printed an error message=20
+		 * via regerror().
+		 */
+		return (-1);
+	}
+	if (*pcomp !=3D NULL)
+		free(*pcomp);
+	*pcomp =3D comp;
 #endif
-	}
+  }
 	return (0);
 }
=20
@@ -130,6 +146,12 @@
 uncompile_pattern(pattern)
 	void **pattern;
 {
+#if HAVE_GNU_REGEX
+	struct re_pattern_buffer **pcomp =3D (struct re_pattern_buffer **) patter=
n;
+	if (*pcomp !=3D NULL)
+		regfree(*pcomp);
+	*pcomp =3D NULL;
+#endif
 #if HAVE_POSIX_REGCOMP
 	regex_t **pcomp =3D (regex_t **) pattern;
 	if (*pcomp !=3D NULL)
@@ -167,6 +189,9 @@
 is_null_pattern(pattern)
 	void *pattern;
 {
+#if HAVE_GNU_REGEX
+	return (pattern =3D=3D NULL);
+#endif
 #if HAVE_POSIX_REGCOMP
 	return (pattern =3D=3D NULL);
 #endif
@@ -182,9 +207,6 @@
 #if HAVE_V8_REGCOMP
 	return (pattern =3D=3D NULL);
 #endif
-#if NO_REGEX
-	return (search_pattern !=3D NULL);
-#endif
 }
=20
 /*
@@ -236,6 +258,9 @@
 	int search_type;
 {
 	int matched;
+#if HAVE_GNU_REGEX
+	struct re_pattern_buffer *spattern =3D (struct re_pattern_buffer *) patte=
rn;
+#endif
 #if HAVE_POSIX_REGCOMP
 	regex_t *spattern =3D (regex_t *) pattern;
 #endif
@@ -252,10 +277,30 @@
 	struct regexp *spattern =3D (struct regexp *) pattern;
 #endif
=20
+#if NO_REGEX
+	search_type |=3D SRCH_NO_REGEX;
+#endif
 	if (search_type & SRCH_NO_REGEX)
 		matched =3D match(tpattern, strlen(tpattern), line, line_len, sp, ep);
 	else
 	{
+#if HAVE_GNU_REGEX
+	{
+		struct re_registers search_regs;
+		regoff_t *starts =3D (regoff_t *) ecalloc(1, sizeof (regoff_t));
+		regoff_t *ends =3D (regoff_t *) ecalloc(1, sizeof (regoff_t));
+		spattern->not_bol =3D notbol;
+		re_set_registers(spattern, &search_regs, 1, starts, ends);
+		matched =3D re_search(spattern, line, line_len, 0, line_len, &search_reg=
s) >=3D 0;
+		if (matched)
+		{
+			*sp =3D line + search_regs.start[0];
+			*ep =3D line + search_regs.end[0];
+		}
+		free(starts);
+		free(ends);
+	}
+#endif
 #if HAVE_POSIX_REGCOMP
 	{
 		regmatch_t rm;
@@ -311,9 +356,6 @@
 		*ep =3D spattern->endp[0];
 	}
 #endif
-#if NO_REGEX
-	matched =3D match(tpattern, strlen(tpattern), line, line_len, sp, ep);
-#endif
 	}
 	matched =3D (!(search_type & SRCH_NO_MATCH) && matched) ||
 			((search_type & SRCH_NO_MATCH) && !matched);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/pattern.h
--- a/head/contrib/less/pattern.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/pattern.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,13 +1,19 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
+#if HAVE_GNU_REGEX
+#define __USE_GNU 1
+#include <regex.h>
+#define DEFINE_PATTERN(name)  struct re_pattern_buffer *name
+#define CLEAR_PATTERN(name)   name =3D NULL
+#endif
+
 #if HAVE_POSIX_REGCOMP
 #include <regex.h>
 #ifdef REG_EXTENDED
@@ -47,3 +53,7 @@
 #define CLEAR_PATTERN(name)   name =3D NULL
 #endif
=20
+#if NO_REGEX
+#define DEFINE_PATTERN(name) =20
+#define CLEAR_PATTERN(name)  =20
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/pckeys.h
--- a/head/contrib/less/pckeys.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/pckeys.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/position.c
--- a/head/contrib/less/position.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/position.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/position.h
--- a/head/contrib/less/position.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/position.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/prompt.c
--- a/head/contrib/less/prompt.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/prompt.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/prompt.c 229196 2012-01-01 20:13:02Z dim $ =
*/
+/* $FreeBSD: head/contrib/less/prompt.c 238730 2012-07-24 01:09:11Z delphi=
j $ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -394,9 +393,9 @@
  * where to resume parsing the string.
  * We must keep track of nested IFs and skip them properly.
  */
-	static char constant *
+	static constant char *
 skipcond(p)
-	register char constant *p;
+	register constant char *p;
 {
 	register int iflevel;
=20
@@ -452,7 +451,7 @@
 /*
  * Decode a char that represents a position on the screen.
  */
-	static char constant *
+	static constant char *
 wherechar(p, wp)
 	char constant *p;
 	int *wp;
@@ -478,10 +477,10 @@
  */
 	public char *
 pr_expand(proto, maxwidth)
-	char constant *proto;
+	constant char *proto;
 	int maxwidth;
 {
-	register char constant *p;
+	register constant char *p;
 	register int c;
 	int where;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/screen.c
--- a/head/contrib/less/screen.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/screen.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/screen.c 221715 2011-05-09 21:51:59Z delphi=
j $ */
+/* $FreeBSD: head/contrib/less/screen.c 238730 2012-07-24 01:09:11Z delphi=
j $ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/scrsize.c
--- a/head/contrib/less/scrsize.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/scrsize.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
 /*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/search.c
--- a/head/contrib/less/search.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/search.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,12 +1,11 @@
-/* $FreeBSD: head/contrib/less/search.c 221715 2011-05-09 21:51:59Z delphi=
j $ */
+/* $FreeBSD: head/contrib/less/search.c 238730 2012-07-24 01:09:11Z delphi=
j $ */
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -68,6 +67,12 @@
 	char* text;
 	int search_type;
 };
+
+#if NO_REGEX
+#define info_compiled(info) ((void*)0)
+#else
+#define info_compiled(info) ((info)->compiled)
+#endif
 =09
 static struct pattern_info search_info;
 static struct pattern_info filter_info;
@@ -100,10 +105,12 @@
 	char *pattern;
 	int search_type;
 {
+#if !NO_REGEX
 	if (pattern =3D=3D NULL)
-		CLEAR_PATTERN(search_info.compiled);
+		CLEAR_PATTERN(info->compiled);
 	else if (compile_pattern(pattern, search_type, &info->compiled) < 0)
 		return -1;
+#endif
 	/* Pattern compiled successfully; save the text too. */
 	if (info->text !=3D NULL)
 		free(info->text);
@@ -137,7 +144,9 @@
 	if (info->text !=3D NULL)
 		free(info->text);
 	info->text =3D NULL;
+#if !NO_REGEX
 	uncompile_pattern(&info->compiled);
+#endif
 }
=20
 /*
@@ -193,9 +202,11 @@
 prev_pattern(info)
 	struct pattern_info *info;
 {
-	if (info->search_type & SRCH_NO_REGEX)
-		return (info->text !=3D NULL);
-	return (!is_null_pattern(info->compiled));
+#if !NO_REGEX
+	if ((info->search_type & SRCH_NO_REGEX) =3D=3D 0)
+		return (!is_null_pattern(info->compiled));
+#endif
+	return (info->text !=3D NULL);
 }
=20
 #if HILITE_SEARCH
@@ -478,6 +489,47 @@
 }
=20
 /*
+ * Hilight every character in a range of displayed characters.
+ */
+	static void
+create_hilites(linepos, start_index, end_index, chpos)
+	POSITION linepos;
+	int start_index;
+	int end_index;
+	int *chpos;
+{
+	struct hilite *hl;
+	int i;
+
+	/* Start the first hilite. */
+	hl =3D (struct hilite *) ecalloc(1, sizeof(struct hilite));
+	hl->hl_startpos =3D linepos + chpos[start_index];
+
+	/*
+	 * Step through the displayed chars.
+	 * If the source position (before cvt) of the char is one more
+	 * than the source pos of the previous char (the usual case),
+	 * just increase the size of the current hilite by one.
+	 * Otherwise (there are backspaces or something involved),
+	 * finish the current hilite and start a new one.
+	 */
+	for (i =3D start_index+1;  i <=3D end_index;  i++)
+	{
+		if (chpos[i] !=3D chpos[i-1] + 1 || i =3D=3D end_index)
+		{
+			hl->hl_endpos =3D linepos + chpos[i-1] + 1;
+			add_hilite(&hilite_anchor, hl);
+			/* Start new hilite unless this is the last char. */
+			if (i < end_index)
+			{
+				hl =3D (struct hilite *) ecalloc(1, sizeof(struct hilite));
+				hl->hl_startpos =3D linepos + chpos[i];
+			}
+		}
+	}
+}
+
+/*
  * Make a hilite for each string in a physical line which matches=20
  * the current pattern.
  * sp,ep delimit the first match already found.
@@ -494,7 +546,6 @@
 {
 	char *searchp;
 	char *line_end =3D line + line_len;
-	struct hilite *hl;
=20
 	if (sp =3D=3D NULL || ep =3D=3D NULL)
 		return;
@@ -510,13 +561,7 @@
 	 */
 	searchp =3D line;
 	do {
-		if (ep > sp)
-		{
-			hl =3D (struct hilite *) ecalloc(1, sizeof(struct hilite));
-			hl->hl_startpos =3D linepos + chpos[sp-line];
-			hl->hl_endpos =3D linepos + chpos[ep-line];
-			add_hilite(&hilite_anchor, hl);
-		}
+		create_hilites(linepos, sp-line, ep-line, chpos);
 		/*
 		 * If we matched more than zero characters,
 		 * move to the first char after the string we matched.
@@ -528,7 +573,7 @@
 			searchp++;
 		else /* end of line */
 			break;
-	} while (match_pattern(search_info.compiled, search_info.text,
+	} while (match_pattern(info_compiled(&search_info), search_info.text,
 			searchp, line_end - searchp, &sp, &ep, 1, search_info.search_type));
 }
 #endif
@@ -800,7 +845,7 @@
 		 * If so, add an entry to the filter list.
 		 */
 		if ((search_type & SRCH_FIND_ALL) && prev_pattern(&filter_info)) {
-			int line_filter =3D match_pattern(filter_info.compiled, filter_info.tex=
t,
+			int line_filter =3D match_pattern(info_compiled(&filter_info), filter_i=
nfo.text,
 				cline, line_len, &sp, &ep, 0, filter_info.search_type);
 			if (line_filter)
 			{
@@ -820,7 +865,7 @@
 		 */
 		if (prev_pattern(&search_info))
 		{
-			line_match =3D match_pattern(search_info.compiled, search_info.text,
+			line_match =3D match_pattern(info_compiled(&search_info), search_info.t=
ext,
 				cline, line_len, &sp, &ep, 0, search_type);
 			if (line_match)
 			{
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/signal.c
--- a/head/contrib/less/signal.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/signal.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,14 +1,13 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
-/* $FreeBSD: head/contrib/less/signal.c 221715 2011-05-09 21:51:59Z delphi=
j $ */
+/* $FreeBSD: head/contrib/less/signal.c 238730 2012-07-24 01:09:11Z delphi=
j $ */
=20
 /*
  * Routines dealing with signals.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/tags.c
--- a/head/contrib/less/tags.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/tags.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/ttyin.c
--- a/head/contrib/less/ttyin.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/ttyin.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/less/version.c
--- a/head/contrib/less/version.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/less/version.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 1984-2011  Mark Nudelman
+ * Copyright (C) 1984-2012  Mark Nudelman
  *
  * You may distribute under the terms of either the GNU General Public
  * License or the Less License, as specified in the README file.
  *
- * For more information about less, or for information on how to=20
- * contact the author, see the README file.
+ * For more information, see the README file.
  */
=20
=20
@@ -343,7 +342,7 @@
                 look for regcmp in libgen.a.
                 (thanks to Kaveh Ghazi).
 v202   7/28/94  Fix bug in edit_next/edit_prev with=20
-                non-existant files.
+                non-existent files.
 v203   8/2/94   Fix a variety of configuration bugs on
                 various systems. (thanks to Sakai
                 Kiyotaka, Harald Koenig, Bjorn Brox,
@@ -743,6 +742,17 @@
                 Add ctrl-G line edit command.
 v443  4/9/11    Fix Windows build.
 v444  6/8/11    Fix ungetc bug; remove vestiges of obsolete -l option.
+-----------------------------------------------------------------
+v445  10/19/11  Fix hilite bug in backwards scroll with -J.
+                Fix hilite bug with backspaces.
+                Fix bugs handling SGR sequences in Win32 (thanks to Eric L=
ee).
+                Add support for GNU regex (thanks to Reuben Thomas).
+v446  5/15/12   Up/down arrows in cmd editing search for matching cmd.
+v447  5/21/12   Add ESC-F command, two-pipe LESSOPEN syntax.
+v448  6/15/12   Print name of regex library in version message.
+v449  6/23/12   Allow config option --with-regex=3Dnone.
+v450  7/4/12    Fix EOF bug with ESC-F.
+v451  7/20/12   Fix typo.
 */
=20
-char version[] =3D "444";
+char version[] =3D "451";
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/__bit_refe=
rence
--- a/head/contrib/libc++/include/__bit_reference	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/libc++/include/__bit_reference	Wed Jul 25 16:21:35 2012 =
+0300
@@ -950,11 +950,15 @@
             __storage_type __ddn =3D _VSTD::min<__storage_type>(__dn, __cl=
z_r);
             __m =3D (~__storage_type(0) << __first2.__ctz_) & (~__storage_=
type(0) >> (__clz_r - __ddn));
             if (__first2.__ctz_ > __first1.__ctz_)
+            {
                 if ((*__first2.__seg_ & __m) !=3D (__b << (__first2.__ctz_=
 - __first1.__ctz_)))
                     return false;
+            }
             else
+            {
                 if ((*__first2.__seg_ & __m) !=3D (__b >> (__first1.__ctz_=
 - __first2.__ctz_)))
                     return false;
+            }
             __first2.__seg_ +=3D (__ddn + __first2.__ctz_) / __bits_per_wo=
rd;
             __first2.__ctz_ =3D static_cast<unsigned>((__ddn + __first2.__=
ctz_)  % __bits_per_word);
             __dn -=3D __ddn;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/__config
--- a/head/contrib/libc++/include/__config	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/__config	Wed Jul 25 16:21:35 2012 +0300
@@ -384,7 +384,9 @@
 #endif
=20
 #ifdef _LIBCPP_HAS_NO_CONSTEXPR
-#define constexpr const
+#define _LIBCPP_CONSTEXPR
+#else
+#define _LIBCPP_CONSTEXPR constexpr
 #endif
=20
 #ifndef __has_feature
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/__tuple
--- a/head/contrib/libc++/include/__tuple	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/__tuple	Wed Jul 25 16:21:35 2012 +0300
@@ -216,7 +216,7 @@
 template <class _Tp0, class ..._Tp, class _Up0, class ..._Up>
 struct __tuple_convertible_imp<true, __tuple_types<_Tp0, _Tp...>, __tuple_=
types<_Up0, _Up...> >
     : public integral_constant<bool,
-                               is_constructible<_Up0, _Tp0>::value &&
+                               is_convertible<_Tp0, _Up0>::value &&
                                __tuple_convertible_imp<true, __tuple_types=
<_Tp...>, __tuple_types<_Up...> >::value> {};
=20
 template <>
@@ -235,6 +235,33 @@
              typename __make_tuple_types<_Tp>::type, typename __make_tuple=
_types<_Up>::type>
 {};
=20
+// __tuple_constructible
+
+template <bool, class _Tp, class _Up>
+struct __tuple_constructible_imp : public false_type {};
+
+template <class _Tp0, class ..._Tp, class _Up0, class ..._Up>
+struct __tuple_constructible_imp<true, __tuple_types<_Tp0, _Tp...>, __tupl=
e_types<_Up0, _Up...> >
+    : public integral_constant<bool,
+                               is_constructible<_Up0, _Tp0>::value &&
+                               __tuple_constructible_imp<true, __tuple_typ=
es<_Tp...>, __tuple_types<_Up...> >::value> {};
+
+template <>
+struct __tuple_constructible_imp<true, __tuple_types<>, __tuple_types<> >
+    : public true_type {};
+
+template <class _Tp, class _Up, bool =3D __tuple_like<typename remove_refe=
rence<_Tp>::type>::value,
+                                bool =3D __tuple_like<_Up>::value>
+struct __tuple_constructible
+    : public false_type {};
+
+template <class _Tp, class _Up>
+struct __tuple_constructible<_Tp, _Up, true, true>
+    : public __tuple_constructible_imp<tuple_size<typename remove_referenc=
e<_Tp>::type>::value =3D=3D
+                                     tuple_size<_Up>::value,
+             typename __make_tuple_types<_Tp>::type, typename __make_tuple=
_types<_Up>::type>
+{};
+
 // __tuple_assignable
=20
 template <bool, class _Tp, class _Up>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/algorithm
--- a/head/contrib/libc++/include/algorithm	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/algorithm	Wed Jul 25 16:21:35 2012 +0300
@@ -2508,11 +2508,16 @@
     _Engine_result_type __mask0_;
     _Engine_result_type __mask1_;
=20
+#ifdef _LIBCPP_HAS_NO_CONSTEXPR
     static const _Working_result_type _Rp =3D _Engine::_Max - _Engine::_Min
-                                                         + _Working_result=
_type(1);
-    static const size_t __m =3D __log2<_Working_result_type, _Rp>::value;
-    static const size_t _WDt =3D numeric_limits<_Working_result_type>::dig=
its;
-    static const size_t _EDt =3D numeric_limits<_Engine_result_type>::digi=
ts;
+                                          + _Working_result_type(1);
+#else
+    static _LIBCPP_CONSTEXPR const _Working_result_type _Rp =3D _Engine::m=
ax() - _Engine::min()
+                                                      + _Working_result_ty=
pe(1);
+#endif
+    static _LIBCPP_CONSTEXPR const size_t __m =3D __log2<_Working_result_t=
ype, _Rp>::value;
+    static _LIBCPP_CONSTEXPR const size_t _WDt =3D numeric_limits<_Working=
_result_type>::digits;
+    static _LIBCPP_CONSTEXPR const size_t _EDt =3D numeric_limits<_Engine_=
result_type>::digits;
=20
 public:
     // constructors and seeding functions
@@ -2712,8 +2717,8 @@
=20
     result_type operator()();
=20
-    static constexpr result_type min() {return _Min;}
-    static constexpr result_type max() {return _Max;}
+    static _LIBCPP_CONSTEXPR result_type min() {return _Min;}
+    static _LIBCPP_CONSTEXPR result_type max() {return _Max;}
=20
     friend __rs_default __rs_get();
 };
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/atomic
--- a/head/contrib/libc++/include/atomic	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/atomic	Wed Jul 25 16:21:35 2012 +0300
@@ -29,7 +29,7 @@
     memory_order_seq_cst   // store-release load-acquire
 } memory_order;
=20
-template <class T> T kill_dependency(T y);
+template <class T> T kill_dependency(T y) noexcept;
=20
 // lock-free property
=20
@@ -46,40 +46,40 @@
=20
 typedef struct atomic_flag
 {
-    bool test_and_set(memory_order m =3D memory_order_seq_cst) volatile;
-    bool test_and_set(memory_order m =3D memory_order_seq_cst);
-    void clear(memory_order m =3D memory_order_seq_cst) volatile;
-    void clear(memory_order m =3D memory_order_seq_cst);
-    atomic_flag() =3D default;
+    bool test_and_set(memory_order m =3D memory_order_seq_cst) volatile no=
except;
+    bool test_and_set(memory_order m =3D memory_order_seq_cst) noexcept;
+    void clear(memory_order m =3D memory_order_seq_cst) volatile noexcept;
+    void clear(memory_order m =3D memory_order_seq_cst) noexcept;
+    atomic_flag()  noexcept =3D default;
     atomic_flag(const atomic_flag&) =3D delete;
     atomic_flag& operator=3D(const atomic_flag&) =3D delete;
     atomic_flag& operator=3D(const atomic_flag&) volatile =3D delete;
 } atomic_flag;
=20
 bool
-    atomic_flag_test_and_set(volatile atomic_flag* obj);
+    atomic_flag_test_and_set(volatile atomic_flag* obj) noexcept;
=20
 bool
-    atomic_flag_test_and_set(atomic_flag* obj);
+    atomic_flag_test_and_set(atomic_flag* obj) noexcept;
=20
 bool
     atomic_flag_test_and_set_explicit(volatile atomic_flag* obj,
-                                      memory_order m);
+                                      memory_order m) noexcept;
=20
 bool
-    atomic_flag_test_and_set_explicit(atomic_flag* obj, memory_order m);
+    atomic_flag_test_and_set_explicit(atomic_flag* obj, memory_order m) no=
except;
=20
 void
-    atomic_flag_clear(volatile atomic_flag* obj);
+    atomic_flag_clear(volatile atomic_flag* obj) noexcept;
=20
 void
-    atomic_flag_clear(atomic_flag* obj);
+    atomic_flag_clear(atomic_flag* obj) noexcept;
=20
 void
-    atomic_flag_clear_explicit(volatile atomic_flag* obj, memory_order m);
+    atomic_flag_clear_explicit(volatile atomic_flag* obj, memory_order m) =
noexcept;
=20
 void
-    atomic_flag_clear_explicit(atomic_flag* obj, memory_order m);
+    atomic_flag_clear_explicit(atomic_flag* obj, memory_order m) noexcept;
=20
 #define ATOMIC_FLAG_INIT see below
 #define ATOMIC_VAR_INIT(value) see below
@@ -87,388 +87,388 @@
 template <class T>
 struct atomic
 {
-    bool is_lock_free() const volatile;
-    bool is_lock_free() const;
-    void store(T desr, memory_order m =3D memory_order_seq_cst) volatile;
-    void store(T desr, memory_order m =3D memory_order_seq_cst);
-    T load(memory_order m =3D memory_order_seq_cst) const volatile;
-    T load(memory_order m =3D memory_order_seq_cst) const;
-    operator T() const volatile;
-    operator T() const;
-    T exchange(T desr, memory_order m =3D memory_order_seq_cst) volatile;
-    T exchange(T desr, memory_order m =3D memory_order_seq_cst);
+    bool is_lock_free() const volatile noexcept;
+    bool is_lock_free() const noexcept;
+    void store(T desr, memory_order m =3D memory_order_seq_cst) volatile n=
oexcept;
+    void store(T desr, memory_order m =3D memory_order_seq_cst) noexcept;
+    T load(memory_order m =3D memory_order_seq_cst) const volatile noexcep=
t;
+    T load(memory_order m =3D memory_order_seq_cst) const noexcept;
+    operator T() const volatile noexcept;
+    operator T() const noexcept;
+    T exchange(T desr, memory_order m =3D memory_order_seq_cst) volatile n=
oexcept;
+    T exchange(T desr, memory_order m =3D memory_order_seq_cst) noexcept;
     bool compare_exchange_weak(T& expc, T desr,
-                               memory_order s, memory_order f) volatile;
-    bool compare_exchange_weak(T& expc, T desr, memory_order s, memory_ord=
er f);
+                               memory_order s, memory_order f) volatile no=
except;
+    bool compare_exchange_weak(T& expc, T desr, memory_order s, memory_ord=
er f) noexcept;
     bool compare_exchange_strong(T& expc, T desr,
-                                 memory_order s, memory_order f) volatile;
+                                 memory_order s, memory_order f) volatile =
noexcept;
     bool compare_exchange_strong(T& expc, T desr,
-                                 memory_order s, memory_order f);
+                                 memory_order s, memory_order f) noexcept;
     bool compare_exchange_weak(T& expc, T desr,
-                               memory_order m =3D memory_order_seq_cst) vo=
latile;
+                               memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
     bool compare_exchange_weak(T& expc, T desr,
-                               memory_order m =3D memory_order_seq_cst);
+                               memory_order m =3D memory_order_seq_cst) no=
except;
     bool compare_exchange_strong(T& expc, T desr,
-                                memory_order m =3D memory_order_seq_cst) v=
olatile;
+                                memory_order m =3D memory_order_seq_cst) v=
olatile noexcept;
     bool compare_exchange_strong(T& expc, T desr,
-                                 memory_order m =3D memory_order_seq_cst);
+                                 memory_order m =3D memory_order_seq_cst) =
noexcept;
=20
-    atomic() =3D default;
-    constexpr atomic(T desr);
+    atomic() noexcept =3D default;
+    constexpr atomic(T desr) noexcept;
     atomic(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) volatile =3D delete;
-    T operator=3D(T) volatile;
-    T operator=3D(T);
+    T operator=3D(T) volatile noexcept;
+    T operator=3D(T) noexcept;
 };
=20
 template <>
 struct atomic<integral>
 {
-    bool is_lock_free() const volatile;
-    bool is_lock_free() const;
-    void store(integral desr, memory_order m =3D memory_order_seq_cst) vol=
atile;
-    void store(integral desr, memory_order m =3D memory_order_seq_cst);
-    integral load(memory_order m =3D memory_order_seq_cst) const volatile;
-    integral load(memory_order m =3D memory_order_seq_cst) const;
-    operator integral() const volatile;
-    operator integral() const;
+    bool is_lock_free() const volatile noexcept;
+    bool is_lock_free() const noexcept;
+    void store(integral desr, memory_order m =3D memory_order_seq_cst) vol=
atile noexcept;
+    void store(integral desr, memory_order m =3D memory_order_seq_cst) noe=
xcept;
+    integral load(memory_order m =3D memory_order_seq_cst) const volatile =
noexcept;
+    integral load(memory_order m =3D memory_order_seq_cst) const noexcept;
+    operator integral() const volatile noexcept;
+    operator integral() const noexcept;
     integral exchange(integral desr,
-                      memory_order m =3D memory_order_seq_cst) volatile;
-    integral exchange(integral desr, memory_order m =3D memory_order_seq_c=
st);
+                      memory_order m =3D memory_order_seq_cst) volatile no=
except;
+    integral exchange(integral desr, memory_order m =3D memory_order_seq_c=
st) noexcept;
     bool compare_exchange_weak(integral& expc, integral desr,
-                               memory_order s, memory_order f) volatile;
+                               memory_order s, memory_order f) volatile no=
except;
     bool compare_exchange_weak(integral& expc, integral desr,
-                               memory_order s, memory_order f);
+                               memory_order s, memory_order f) noexcept;
     bool compare_exchange_strong(integral& expc, integral desr,
-                                 memory_order s, memory_order f) volatile;
+                                 memory_order s, memory_order f) volatile =
noexcept;
     bool compare_exchange_strong(integral& expc, integral desr,
-                                 memory_order s, memory_order f);
+                                 memory_order s, memory_order f) noexcept;
     bool compare_exchange_weak(integral& expc, integral desr,
-                               memory_order m =3D memory_order_seq_cst) vo=
latile;
+                               memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
     bool compare_exchange_weak(integral& expc, integral desr,
-                               memory_order m =3D memory_order_seq_cst);
+                               memory_order m =3D memory_order_seq_cst) no=
except;
     bool compare_exchange_strong(integral& expc, integral desr,
-                                memory_order m =3D memory_order_seq_cst) v=
olatile;
+                                memory_order m =3D memory_order_seq_cst) v=
olatile noexcept;
     bool compare_exchange_strong(integral& expc, integral desr,
-                                 memory_order m =3D memory_order_seq_cst);
+                                 memory_order m =3D memory_order_seq_cst) =
noexcept;
=20
     integral
-        fetch_add(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    integral fetch_add(integral op, memory_order m =3D memory_order_seq_cs=
t);
+        fetch_add(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    integral fetch_add(integral op, memory_order m =3D memory_order_seq_cs=
t) noexcept;
     integral
-        fetch_sub(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    integral fetch_sub(integral op, memory_order m =3D memory_order_seq_cs=
t);
+        fetch_sub(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    integral fetch_sub(integral op, memory_order m =3D memory_order_seq_cs=
t) noexcept;
     integral
-        fetch_and(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    integral fetch_and(integral op, memory_order m =3D memory_order_seq_cs=
t);
+        fetch_and(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    integral fetch_and(integral op, memory_order m =3D memory_order_seq_cs=
t) noexcept;
     integral
-        fetch_or(integral op, memory_order m =3D memory_order_seq_cst) vol=
atile;
-    integral fetch_or(integral op, memory_order m =3D memory_order_seq_cst=
);
+        fetch_or(integral op, memory_order m =3D memory_order_seq_cst) vol=
atile noexcept;
+    integral fetch_or(integral op, memory_order m =3D memory_order_seq_cst=
) noexcept;
     integral
-        fetch_xor(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    integral fetch_xor(integral op, memory_order m =3D memory_order_seq_cs=
t);
+        fetch_xor(integral op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    integral fetch_xor(integral op, memory_order m =3D memory_order_seq_cs=
t) noexcept;
=20
-    atomic() =3D default;
-    constexpr atomic(integral desr);
+    atomic() noexcept =3D default;
+    constexpr atomic(integral desr) noexcept;
     atomic(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) volatile =3D delete;
-    integral operator=3D(integral desr) volatile;
-    integral operator=3D(integral desr);
+    integral operator=3D(integral desr) volatile noexcept;
+    integral operator=3D(integral desr) noexcept;
=20
-    integral operator++(int) volatile;
-    integral operator++(int);
-    integral operator--(int) volatile;
-    integral operator--(int);
-    integral operator++() volatile;
-    integral operator++();
-    integral operator--() volatile;
-    integral operator--();
-    integral operator+=3D(integral op) volatile;
-    integral operator+=3D(integral op);
-    integral operator-=3D(integral op) volatile;
-    integral operator-=3D(integral op);
-    integral operator&=3D(integral op) volatile;
-    integral operator&=3D(integral op);
-    integral operator|=3D(integral op) volatile;
-    integral operator|=3D(integral op);
-    integral operator^=3D(integral op) volatile;
-    integral operator^=3D(integral op);
+    integral operator++(int) volatile noexcept;
+    integral operator++(int) noexcept;
+    integral operator--(int) volatile noexcept;
+    integral operator--(int) noexcept;
+    integral operator++() volatile noexcept;
+    integral operator++() noexcept;
+    integral operator--() volatile noexcept;
+    integral operator--() noexcept;
+    integral operator+=3D(integral op) volatile noexcept;
+    integral operator+=3D(integral op) noexcept;
+    integral operator-=3D(integral op) volatile noexcept;
+    integral operator-=3D(integral op) noexcept;
+    integral operator&=3D(integral op) volatile noexcept;
+    integral operator&=3D(integral op) noexcept;
+    integral operator|=3D(integral op) volatile noexcept;
+    integral operator|=3D(integral op) noexcept;
+    integral operator^=3D(integral op) volatile noexcept;
+    integral operator^=3D(integral op) noexcept;
 };
=20
 template <class T>
 struct atomic<T*>
 {
-    bool is_lock_free() const volatile;
-    bool is_lock_free() const;
-    void store(T* desr, memory_order m =3D memory_order_seq_cst) volatile;
-    void store(T* desr, memory_order m =3D memory_order_seq_cst);
-    T* load(memory_order m =3D memory_order_seq_cst) const volatile;
-    T* load(memory_order m =3D memory_order_seq_cst) const;
-    operator T*() const volatile;
-    operator T*() const;
-    T* exchange(T* desr, memory_order m =3D memory_order_seq_cst) volatile;
-    T* exchange(T* desr, memory_order m =3D memory_order_seq_cst);
+    bool is_lock_free() const volatile noexcept;
+    bool is_lock_free() const noexcept;
+    void store(T* desr, memory_order m =3D memory_order_seq_cst) volatile =
noexcept;
+    void store(T* desr, memory_order m =3D memory_order_seq_cst) noexcept;
+    T* load(memory_order m =3D memory_order_seq_cst) const volatile noexce=
pt;
+    T* load(memory_order m =3D memory_order_seq_cst) const noexcept;
+    operator T*() const volatile noexcept;
+    operator T*() const noexcept;
+    T* exchange(T* desr, memory_order m =3D memory_order_seq_cst) volatile=
 noexcept;
+    T* exchange(T* desr, memory_order m =3D memory_order_seq_cst) noexcept;
     bool compare_exchange_weak(T*& expc, T* desr,
-                               memory_order s, memory_order f) volatile;
+                               memory_order s, memory_order f) volatile no=
except;
     bool compare_exchange_weak(T*& expc, T* desr,
-                               memory_order s, memory_order f);
+                               memory_order s, memory_order f) noexcept;
     bool compare_exchange_strong(T*& expc, T* desr,
-                                 memory_order s, memory_order f) volatile;
+                                 memory_order s, memory_order f) volatile =
noexcept;
     bool compare_exchange_strong(T*& expc, T* desr,
-                                 memory_order s, memory_order f);
+                                 memory_order s, memory_order f) noexcept;
     bool compare_exchange_weak(T*& expc, T* desr,
-                               memory_order m =3D memory_order_seq_cst) vo=
latile;
+                               memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
     bool compare_exchange_weak(T*& expc, T* desr,
-                               memory_order m =3D memory_order_seq_cst);
+                               memory_order m =3D memory_order_seq_cst) no=
except;
     bool compare_exchange_strong(T*& expc, T* desr,
-                                memory_order m =3D memory_order_seq_cst) v=
olatile;
+                                memory_order m =3D memory_order_seq_cst) v=
olatile noexcept;
     bool compare_exchange_strong(T*& expc, T* desr,
-                                 memory_order m =3D memory_order_seq_cst);
-    T* fetch_add(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    T* fetch_add(ptrdiff_t op, memory_order m =3D memory_order_seq_cst);
-    T* fetch_sub(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) vo=
latile;
-    T* fetch_sub(ptrdiff_t op, memory_order m =3D memory_order_seq_cst);
+                                 memory_order m =3D memory_order_seq_cst) =
noexcept;
+    T* fetch_add(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    T* fetch_add(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) no=
except;
+    T* fetch_sub(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) vo=
latile noexcept;
+    T* fetch_sub(ptrdiff_t op, memory_order m =3D memory_order_seq_cst) no=
except;
=20
-    atomic() =3D default;
-    constexpr atomic(T* desr);
+    atomic() noexcept =3D default;
+    constexpr atomic(T* desr) noexcept;
     atomic(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) =3D delete;
     atomic& operator=3D(const atomic&) volatile =3D delete;
=20
-    T* operator=3D(T*) volatile;
-    T* operator=3D(T*);
-    T* operator++(int) volatile;
-    T* operator++(int);
-    T* operator--(int) volatile;
-    T* operator--(int);
-    T* operator++() volatile;
-    T* operator++();
-    T* operator--() volatile;
-    T* operator--();
-    T* operator+=3D(ptrdiff_t op) volatile;
-    T* operator+=3D(ptrdiff_t op);
-    T* operator-=3D(ptrdiff_t op) volatile;
-    T* operator-=3D(ptrdiff_t op);
+    T* operator=3D(T*) volatile noexcept;
+    T* operator=3D(T*) noexcept;
+    T* operator++(int) volatile noexcept;
+    T* operator++(int) noexcept;
+    T* operator--(int) volatile noexcept;
+    T* operator--(int) noexcept;
+    T* operator++() volatile noexcept;
+    T* operator++() noexcept;
+    T* operator--() volatile noexcept;
+    T* operator--() noexcept;
+    T* operator+=3D(ptrdiff_t op) volatile noexcept;
+    T* operator+=3D(ptrdiff_t op) noexcept;
+    T* operator-=3D(ptrdiff_t op) volatile noexcept;
+    T* operator-=3D(ptrdiff_t op) noexcept;
 };
=20
=20
 template <class T>
     bool
-    atomic_is_lock_free(const volatile atomic<T>* obj);
+    atomic_is_lock_free(const volatile atomic<T>* obj) noexcept;
=20
 template <class T>
     bool
-    atomic_is_lock_free(const atomic<T>* obj);
+    atomic_is_lock_free(const atomic<T>* obj) noexcept;
=20
 template <class T>
     void
-    atomic_init(volatile atomic<T>* obj, T desr);
+    atomic_init(volatile atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     void
-    atomic_init(atomic<T>* obj, T desr);
+    atomic_init(atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     void
-    atomic_store(volatile atomic<T>* obj, T desr);
+    atomic_store(volatile atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     void
-    atomic_store(atomic<T>* obj, T desr);
+    atomic_store(atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     void
-    atomic_store_explicit(volatile atomic<T>* obj, T desr, memory_order m);
+    atomic_store_explicit(volatile atomic<T>* obj, T desr, memory_order m)=
 noexcept;
=20
 template <class T>
     void
-    atomic_store_explicit(atomic<T>* obj, T desr, memory_order m);
+    atomic_store_explicit(atomic<T>* obj, T desr, memory_order m) noexcept;
=20
 template <class T>
     T
-    atomic_load(const volatile atomic<T>* obj);
+    atomic_load(const volatile atomic<T>* obj) noexcept;
=20
 template <class T>
     T
-    atomic_load(const atomic<T>* obj);
+    atomic_load(const atomic<T>* obj) noexcept;
=20
 template <class T>
     T
-    atomic_load_explicit(const volatile atomic<T>* obj, memory_order m);
+    atomic_load_explicit(const volatile atomic<T>* obj, memory_order m) no=
except;
=20
 template <class T>
     T
-    atomic_load_explicit(const atomic<T>* obj, memory_order m);
+    atomic_load_explicit(const atomic<T>* obj, memory_order m) noexcept;
=20
 template <class T>
     T
-    atomic_exchange(volatile atomic<T>* obj, T desr);
+    atomic_exchange(volatile atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     T
-    atomic_exchange(atomic<T>* obj, T desr);
+    atomic_exchange(atomic<T>* obj, T desr) noexcept;
=20
 template <class T>
     T
-    atomic_exchange_explicit(volatile atomic<T>* obj, T desr, memory_order=
 m);
+    atomic_exchange_explicit(volatile atomic<T>* obj, T desr, memory_order=
 m) noexcept;
=20
 template <class T>
     T
-    atomic_exchange_explicit(atomic<T>* obj, T desr, memory_order m);
+    atomic_exchange_explicit(atomic<T>* obj, T desr, memory_order m) noexc=
ept;
=20
 template <class T>
     bool
-    atomic_compare_exchange_weak(volatile atomic<T>* obj, T* expc, T desr);
+    atomic_compare_exchange_weak(volatile atomic<T>* obj, T* expc, T desr)=
 noexcept;
=20
 template <class T>
     bool
-    atomic_compare_exchange_weak(atomic<T>* obj, T* expc, T desr);
+    atomic_compare_exchange_weak(atomic<T>* obj, T* expc, T desr) noexcept;
=20
 template <class T>
     bool
-    atomic_compare_exchange_strong(volatile atomic<T>* obj, T* expc, T des=
r);
+    atomic_compare_exchange_strong(volatile atomic<T>* obj, T* expc, T des=
r) noexcept;
=20
 template <class T>
     bool
-    atomic_compare_exchange_strong(atomic<T>* obj, T* expc, T desr);
+    atomic_compare_exchange_strong(atomic<T>* obj, T* expc, T desr) noexce=
pt;
=20
 template <class T>
     bool
     atomic_compare_exchange_weak_explicit(volatile atomic<T>* obj, T* expc,
                                           T desr,
-                                          memory_order s, memory_order f);
+                                          memory_order s, memory_order f) =
noexcept;
=20
 template <class T>
     bool
     atomic_compare_exchange_weak_explicit(atomic<T>* obj, T* expc, T desr,
-                                          memory_order s, memory_order f);
+                                          memory_order s, memory_order f) =
noexcept;
=20
 template <class T>
     bool
     atomic_compare_exchange_strong_explicit(volatile atomic<T>* obj,
                                             T* expc, T desr,
-                                            memory_order s, memory_order f=
);
+                                            memory_order s, memory_order f=
) noexcept;
=20
 template <class T>
     bool
     atomic_compare_exchange_strong_explicit(atomic<T>* obj, T* expc,
                                             T desr,
-                                            memory_order s, memory_order f=
);
+                                            memory_order s, memory_order f=
) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_add(volatile atomic<Integral>* obj, Integral op);
+    atomic_fetch_add(volatile atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_add(atomic<Integral>* obj, Integral op);
+    atomic_fetch_add(atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
     atomic_fetch_add_explicit(volatile atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
     atomic_fetch_add_explicit(atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
-    atomic_fetch_sub(volatile atomic<Integral>* obj, Integral op);
+    atomic_fetch_sub(volatile atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_sub(atomic<Integral>* obj, Integral op);
+    atomic_fetch_sub(atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
     atomic_fetch_sub_explicit(volatile atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
     atomic_fetch_sub_explicit(atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
-    atomic_fetch_and(volatile atomic<Integral>* obj, Integral op);
+    atomic_fetch_and(volatile atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_and(atomic<Integral>* obj, Integral op);
+    atomic_fetch_and(atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
     atomic_fetch_and_explicit(volatile atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
     atomic_fetch_and_explicit(atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
-    atomic_fetch_or(volatile atomic<Integral>* obj, Integral op);
+    atomic_fetch_or(volatile atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_or(atomic<Integral>* obj, Integral op);
+    atomic_fetch_or(atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
     atomic_fetch_or_explicit(volatile atomic<Integral>* obj, Integral op,
-                             memory_order m);
+                             memory_order m) noexcept;
 template <class Integral>
     Integral
     atomic_fetch_or_explicit(atomic<Integral>* obj, Integral op,
-                             memory_order m);
+                             memory_order m) noexcept;
 template <class Integral>
     Integral
-    atomic_fetch_xor(volatile atomic<Integral>* obj, Integral op);
+    atomic_fetch_xor(volatile atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
-    atomic_fetch_xor(atomic<Integral>* obj, Integral op);
+    atomic_fetch_xor(atomic<Integral>* obj, Integral op) noexcept;
=20
 template <class Integral>
     Integral
     atomic_fetch_xor_explicit(volatile atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class Integral>
     Integral
     atomic_fetch_xor_explicit(atomic<Integral>* obj, Integral op,
-                              memory_order m);
+                              memory_order m) noexcept;
=20
 template <class T>
     T*
-    atomic_fetch_add(volatile atomic<T*>* obj, ptrdiff_t op);
+    atomic_fetch_add(volatile atomic<T*>* obj, ptrdiff_t op) noexcept;
=20
 template <class T>
     T*
-    atomic_fetch_add(atomic<T*>* obj, ptrdiff_t op);
+    atomic_fetch_add(atomic<T*>* obj, ptrdiff_t op) noexcept;
=20
 template <class T>
     T*
     atomic_fetch_add_explicit(volatile atomic<T*>* obj, ptrdiff_t op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class T>
     T*
-    atomic_fetch_add_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order =
m);
+    atomic_fetch_add_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order =
m) noexcept;
=20
 template <class T>
     T*
-    atomic_fetch_sub(volatile atomic<T*>* obj, ptrdiff_t op);
+    atomic_fetch_sub(volatile atomic<T*>* obj, ptrdiff_t op) noexcept;
=20
 template <class T>
     T*
-    atomic_fetch_sub(atomic<T*>* obj, ptrdiff_t op);
+    atomic_fetch_sub(atomic<T*>* obj, ptrdiff_t op) noexcept;
=20
 template <class T>
     T*
     atomic_fetch_sub_explicit(volatile atomic<T*>* obj, ptrdiff_t op,
-                              memory_order m);
+                              memory_order m) noexcept;
 template <class T>
     T*
-    atomic_fetch_sub_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order =
m);
+    atomic_fetch_sub_explicit(atomic<T*>* obj, ptrdiff_t op, memory_order =
m) noexcept;
=20
 // Atomics for standard typedef types
=20
@@ -514,8 +514,8 @@
=20
 // fences
=20
-void atomic_thread_fence(memory_order m);
-void atomic_signal_fence(memory_order m);
+void atomic_thread_fence(memory_order m) noexcept;
+void atomic_signal_fence(memory_order m) noexcept;
=20
 }  // std
=20
@@ -545,7 +545,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-kill_dependency(_Tp __y)
+kill_dependency(_Tp __y) _NOEXCEPT
 {
     return __y;
 }
@@ -558,70 +558,70 @@
     _Atomic(_Tp) __a_;
=20
     _LIBCPP_INLINE_VISIBILITY
-    bool is_lock_free() const volatile
-        {return __atomic_is_lock_free(_Tp());}
+    bool is_lock_free() const volatile _NOEXCEPT
+        {return __c11_atomic_is_lock_free(sizeof(_Tp));}
     _LIBCPP_INLINE_VISIBILITY
-    bool is_lock_free() const
-        {return __atomic_is_lock_free(_Tp());}
+    bool is_lock_free() const _NOEXCEPT
+        {return __c11_atomic_is_lock_free(sizeof(_Tp));}
     _LIBCPP_INLINE_VISIBILITY
-    void store(_Tp __d, memory_order __m =3D memory_order_seq_cst) volatile
-        {__atomic_store(&__a_, __d, __m);}
+    void store(_Tp __d, memory_order __m =3D memory_order_seq_cst) volatil=
e _NOEXCEPT
+        {__c11_atomic_store(&__a_, __d, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    void store(_Tp __d, memory_order __m =3D memory_order_seq_cst)
-        {__atomic_store(&__a_, __d, __m);}
+    void store(_Tp __d, memory_order __m =3D memory_order_seq_cst) _NOEXCE=
PT
+        {__c11_atomic_store(&__a_, __d, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp load(memory_order __m =3D memory_order_seq_cst) const volatile
-        {return __atomic_load(&__a_, __m);}
+    _Tp load(memory_order __m =3D memory_order_seq_cst) const volatile _NO=
EXCEPT
+        {return __c11_atomic_load(&__a_, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp load(memory_order __m =3D memory_order_seq_cst) const
-        {return __atomic_load(&__a_, __m);}
+    _Tp load(memory_order __m =3D memory_order_seq_cst) const _NOEXCEPT
+        {return __c11_atomic_load(&__a_, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    operator _Tp() const volatile {return load();}
+    operator _Tp() const volatile _NOEXCEPT {return load();}
     _LIBCPP_INLINE_VISIBILITY
-    operator _Tp() const          {return load();}
+    operator _Tp() const _NOEXCEPT          {return load();}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp exchange(_Tp __d, memory_order __m =3D memory_order_seq_cst) volat=
ile
-        {return __atomic_exchange(&__a_, __d, __m);}
+    _Tp exchange(_Tp __d, memory_order __m =3D memory_order_seq_cst) volat=
ile _NOEXCEPT
+        {return __c11_atomic_exchange(&__a_, __d, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp exchange(_Tp __d, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_exchange(&__a_, __d, __m);}
+    _Tp exchange(_Tp __d, memory_order __m =3D memory_order_seq_cst) _NOEX=
CEPT
+        {return __c11_atomic_exchange(&__a_, __d, __m);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_weak(_Tp& __e, _Tp __d,
-                               memory_order __s, memory_order __f) volatile
-        {return __atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f)=
;}
+                               memory_order __s, memory_order __f) volatil=
e _NOEXCEPT
+        {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, =
__f);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_weak(_Tp& __e, _Tp __d,
-                               memory_order __s, memory_order __f)
-        {return __atomic_compare_exchange_weak(&__a_, &__e, __d, __s, __f)=
;}
+                               memory_order __s, memory_order __f) _NOEXCE=
PT
+        {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __s, =
__f);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_strong(_Tp& __e, _Tp __d,
-                                 memory_order __s, memory_order __f) volat=
ile
-        {return __atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __=
f);}
+                                 memory_order __s, memory_order __f) volat=
ile _NOEXCEPT
+        {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s=
, __f);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_strong(_Tp& __e, _Tp __d,
-                                 memory_order __s, memory_order __f)
-        {return __atomic_compare_exchange_strong(&__a_, &__e, __d, __s, __=
f);}
+                                 memory_order __s, memory_order __f) _NOEX=
CEPT
+        {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __s=
, __f);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_weak(_Tp& __e, _Tp __d,
-                              memory_order __m =3D memory_order_seq_cst) v=
olatile
-        {return __atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m)=
;}
+                              memory_order __m =3D memory_order_seq_cst) v=
olatile _NOEXCEPT
+        {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, =
__m);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_weak(_Tp& __e, _Tp __d,
-                               memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_compare_exchange_weak(&__a_, &__e, __d, __m, __m)=
;}
+                               memory_order __m =3D memory_order_seq_cst) =
_NOEXCEPT
+        {return __c11_atomic_compare_exchange_weak(&__a_, &__e, __d, __m, =
__m);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_strong(_Tp& __e, _Tp __d,
-                              memory_order __m =3D memory_order_seq_cst) v=
olatile
-        {return __atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __=
m);}
+                              memory_order __m =3D memory_order_seq_cst) v=
olatile _NOEXCEPT
+        {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m=
, __m);}
     _LIBCPP_INLINE_VISIBILITY
     bool compare_exchange_strong(_Tp& __e, _Tp __d,
-                                 memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_compare_exchange_strong(&__a_, &__e, __d, __m, __=
m);}
+                                 memory_order __m =3D memory_order_seq_cst=
) _NOEXCEPT
+        {return __c11_atomic_compare_exchange_strong(&__a_, &__e, __d, __m=
, __m);}
=20
     _LIBCPP_INLINE_VISIBILITY
-    __atomic_base() {} // =3D default;
+    __atomic_base() _NOEXCEPT {} // =3D default;
     _LIBCPP_INLINE_VISIBILITY
-    /*constexpr*/ __atomic_base(_Tp __d) { __atomic_store(&__a_, __d, memo=
ry_order_seq_cst); }
+    _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __a_(__d) {}
 #ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
     __atomic_base(const __atomic_base&) =3D delete;
     __atomic_base& operator=3D(const __atomic_base&) =3D delete;
@@ -642,77 +642,77 @@
 {
     typedef __atomic_base<_Tp, false> __base;
     _LIBCPP_INLINE_VISIBILITY
-    __atomic_base() {} // =3D default;
+    __atomic_base() _NOEXCEPT {} // =3D default;
     _LIBCPP_INLINE_VISIBILITY
-    /*constexpr*/ __atomic_base(_Tp __d) : __base(__d) {}
+    _LIBCPP_CONSTEXPR __atomic_base(_Tp __d) _NOEXCEPT : __base(__d) {}
=20
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_add(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile
-        {return __atomic_fetch_add(&this->__a_, __op, __m);}
+    _Tp fetch_add(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile _NOEXCEPT
+        {return __c11_atomic_fetch_add(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_add(_Tp __op, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_fetch_add(&this->__a_, __op, __m);}
+    _Tp fetch_add(_Tp __op, memory_order __m =3D memory_order_seq_cst) _NO=
EXCEPT
+        {return __c11_atomic_fetch_add(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_sub(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile
-        {return __atomic_fetch_sub(&this->__a_, __op, __m);}
+    _Tp fetch_sub(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile _NOEXCEPT
+        {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_sub(_Tp __op, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_fetch_sub(&this->__a_, __op, __m);}
+    _Tp fetch_sub(_Tp __op, memory_order __m =3D memory_order_seq_cst) _NO=
EXCEPT
+        {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_and(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile
-        {return __atomic_fetch_and(&this->__a_, __op, __m);}
+    _Tp fetch_and(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile _NOEXCEPT
+        {return __c11_atomic_fetch_and(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_and(_Tp __op, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_fetch_and(&this->__a_, __op, __m);}
+    _Tp fetch_and(_Tp __op, memory_order __m =3D memory_order_seq_cst) _NO=
EXCEPT
+        {return __c11_atomic_fetch_and(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_or(_Tp __op, memory_order __m =3D memory_order_seq_cst) vola=
tile
-        {return __atomic_fetch_or(&this->__a_, __op, __m);}
+    _Tp fetch_or(_Tp __op, memory_order __m =3D memory_order_seq_cst) vola=
tile _NOEXCEPT
+        {return __c11_atomic_fetch_or(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_or(_Tp __op, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_fetch_or(&this->__a_, __op, __m);}
+    _Tp fetch_or(_Tp __op, memory_order __m =3D memory_order_seq_cst) _NOE=
XCEPT
+        {return __c11_atomic_fetch_or(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_xor(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile
-        {return __atomic_fetch_xor(&this->__a_, __op, __m);}
+    _Tp fetch_xor(_Tp __op, memory_order __m =3D memory_order_seq_cst) vol=
atile _NOEXCEPT
+        {return __c11_atomic_fetch_xor(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp fetch_xor(_Tp __op, memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_fetch_xor(&this->__a_, __op, __m);}
+    _Tp fetch_xor(_Tp __op, memory_order __m =3D memory_order_seq_cst) _NO=
EXCEPT
+        {return __c11_atomic_fetch_xor(&this->__a_, __op, __m);}
=20
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator++(int) volatile      {return fetch_add(_Tp(1));}
+    _Tp operator++(int) volatile _NOEXCEPT      {return fetch_add(_Tp(1));}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator++(int)               {return fetch_add(_Tp(1));}
+    _Tp operator++(int) _NOEXCEPT               {return fetch_add(_Tp(1));}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator--(int) volatile      {return fetch_sub(_Tp(1));}
+    _Tp operator--(int) volatile _NOEXCEPT      {return fetch_sub(_Tp(1));}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator--(int)               {return fetch_sub(_Tp(1));}
+    _Tp operator--(int) _NOEXCEPT               {return fetch_sub(_Tp(1));}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator++() volatile         {return fetch_add(_Tp(1)) + _Tp(1);}
+    _Tp operator++() volatile _NOEXCEPT         {return fetch_add(_Tp(1)) =
+ _Tp(1);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator++()                  {return fetch_add(_Tp(1)) + _Tp(1);}
+    _Tp operator++() _NOEXCEPT                  {return fetch_add(_Tp(1)) =
+ _Tp(1);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator--() volatile         {return fetch_sub(_Tp(1)) - _Tp(1);}
+    _Tp operator--() volatile _NOEXCEPT         {return fetch_sub(_Tp(1)) =
- _Tp(1);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator--()                  {return fetch_sub(_Tp(1)) - _Tp(1);}
+    _Tp operator--() _NOEXCEPT                  {return fetch_sub(_Tp(1)) =
- _Tp(1);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator+=3D(_Tp __op) volatile {return fetch_add(__op) + __op;}
+    _Tp operator+=3D(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) =
+ __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator+=3D(_Tp __op)          {return fetch_add(__op) + __op;}
+    _Tp operator+=3D(_Tp __op) _NOEXCEPT          {return fetch_add(__op) =
+ __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator-=3D(_Tp __op) volatile {return fetch_sub(__op) - __op;}
+    _Tp operator-=3D(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) =
- __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator-=3D(_Tp __op)          {return fetch_sub(__op) - __op;}
+    _Tp operator-=3D(_Tp __op) _NOEXCEPT          {return fetch_sub(__op) =
- __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator&=3D(_Tp __op) volatile {return fetch_and(__op) & __op;}
+    _Tp operator&=3D(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) =
& __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator&=3D(_Tp __op)          {return fetch_and(__op) & __op;}
+    _Tp operator&=3D(_Tp __op) _NOEXCEPT          {return fetch_and(__op) =
& __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator|=3D(_Tp __op) volatile {return fetch_or(__op) | __op;}
+    _Tp operator|=3D(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) |=
 __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator|=3D(_Tp __op)          {return fetch_or(__op) | __op;}
+    _Tp operator|=3D(_Tp __op) _NOEXCEPT          {return fetch_or(__op) |=
 __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator^=3D(_Tp __op) volatile {return fetch_xor(__op) ^ __op;}
+    _Tp operator^=3D(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) =
^ __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator^=3D(_Tp __op)          {return fetch_xor(__op) ^ __op;}
+    _Tp operator^=3D(_Tp __op) _NOEXCEPT          {return fetch_xor(__op) =
^ __op;}
 };
=20
 // atomic<T>
@@ -723,15 +723,15 @@
 {
     typedef __atomic_base<_Tp> __base;
     _LIBCPP_INLINE_VISIBILITY
-    atomic() {} // =3D default;
+    atomic() _NOEXCEPT {} // =3D default;
     _LIBCPP_INLINE_VISIBILITY
-    /*constexpr*/ atomic(_Tp __d) : __base(__d) {}
+    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
=20
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator=3D(_Tp __d) volatile
+    _Tp operator=3D(_Tp __d) volatile _NOEXCEPT
         {__base::store(__d); return __d;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp operator=3D(_Tp __d)
+    _Tp operator=3D(_Tp __d) _NOEXCEPT
         {__base::store(__d); return __d;}
 };
=20
@@ -743,56 +743,56 @@
 {
     typedef __atomic_base<_Tp*> __base;
     _LIBCPP_INLINE_VISIBILITY
-    atomic() {} // =3D default;
+    atomic() _NOEXCEPT {} // =3D default;
     _LIBCPP_INLINE_VISIBILITY
-    /*constexpr*/ atomic(_Tp* __d) : __base(__d) {}
+    _LIBCPP_CONSTEXPR atomic(_Tp* __d) _NOEXCEPT : __base(__d) {}
=20
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator=3D(_Tp* __d) volatile
+    _Tp* operator=3D(_Tp* __d) volatile _NOEXCEPT
         {__base::store(__d); return __d;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator=3D(_Tp* __d)
+    _Tp* operator=3D(_Tp* __d) _NOEXCEPT
         {__base::store(__d); return __d;}
=20
     _LIBCPP_INLINE_VISIBILITY
     _Tp* fetch_add(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st)
-                                                                        vo=
latile
-        {return __atomic_fetch_add(&this->__a_, __op, __m);}
+                                                                        vo=
latile _NOEXCEPT
+        {return __c11_atomic_fetch_add(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* fetch_add(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st)
-        {return __atomic_fetch_add(&this->__a_, __op, __m);}
+    _Tp* fetch_add(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st) _NOEXCEPT
+        {return __c11_atomic_fetch_add(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
     _Tp* fetch_sub(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st)
-                                                                        vo=
latile
-        {return __atomic_fetch_sub(&this->__a_, __op, __m);}
+                                                                        vo=
latile _NOEXCEPT
+        {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* fetch_sub(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st)
-        {return __atomic_fetch_sub(&this->__a_, __op, __m);}
+    _Tp* fetch_sub(ptrdiff_t __op, memory_order __m =3D memory_order_seq_c=
st) _NOEXCEPT
+        {return __c11_atomic_fetch_sub(&this->__a_, __op, __m);}
=20
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator++(int) volatile            {return fetch_add(1);}
+    _Tp* operator++(int) volatile _NOEXCEPT            {return fetch_add(1=
);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator++(int)                     {return fetch_add(1);}
+    _Tp* operator++(int) _NOEXCEPT                     {return fetch_add(1=
);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator--(int) volatile            {return fetch_sub(1);}
+    _Tp* operator--(int) volatile _NOEXCEPT            {return fetch_sub(1=
);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator--(int)                     {return fetch_sub(1);}
+    _Tp* operator--(int) _NOEXCEPT                     {return fetch_sub(1=
);}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator++() volatile               {return fetch_add(1) + 1;}
+    _Tp* operator++() volatile _NOEXCEPT               {return fetch_add(1=
) + 1;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator++()                        {return fetch_add(1) + 1;}
+    _Tp* operator++() _NOEXCEPT                        {return fetch_add(1=
) + 1;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator--() volatile               {return fetch_sub(1) - 1;}
+    _Tp* operator--() volatile _NOEXCEPT               {return fetch_sub(1=
) - 1;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator--()                        {return fetch_sub(1) - 1;}
+    _Tp* operator--() _NOEXCEPT                        {return fetch_sub(1=
) - 1;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator+=3D(ptrdiff_t __op) volatile {return fetch_add(__op) + _=
_op;}
+    _Tp* operator+=3D(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_add=
(__op) + __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator+=3D(ptrdiff_t __op)          {return fetch_add(__op) + _=
_op;}
+    _Tp* operator+=3D(ptrdiff_t __op) _NOEXCEPT          {return fetch_add=
(__op) + __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator-=3D(ptrdiff_t __op) volatile {return fetch_sub(__op) - _=
_op;}
+    _Tp* operator-=3D(ptrdiff_t __op) volatile _NOEXCEPT {return fetch_sub=
(__op) - __op;}
     _LIBCPP_INLINE_VISIBILITY
-    _Tp* operator-=3D(ptrdiff_t __op)          {return fetch_sub(__op) - _=
_op;}
+    _Tp* operator-=3D(ptrdiff_t __op) _NOEXCEPT          {return fetch_sub=
(__op) - __op;}
 };
=20
 // atomic_is_lock_free
@@ -800,7 +800,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_is_lock_free(const volatile atomic<_Tp>* __o)
+atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
 {
     return __o->is_lock_free();
 }
@@ -808,7 +808,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_is_lock_free(const atomic<_Tp>* __o)
+atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
 {
     return __o->is_lock_free();
 }
@@ -818,17 +818,17 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_init(volatile atomic<_Tp>* __o, _Tp __d)
+atomic_init(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
-    __atomic_store(&__o->__a_, __d, memory_order_seq_cst);
+    __c11_atomic_init(&__o->__a_, __d);
 }
=20
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_init(atomic<_Tp>* __o, _Tp __d)
+atomic_init(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
-    __atomic_store(&__o->__a_, __d, memory_order_seq_cst);
+    __c11_atomic_init(&__o->__a_, __d);
 }
=20
 // atomic_store
@@ -836,7 +836,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_store(volatile atomic<_Tp>* __o, _Tp __d)
+atomic_store(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
     __o->store(__d);
 }
@@ -844,7 +844,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_store(atomic<_Tp>* __o, _Tp __d)
+atomic_store(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
     __o->store(__d);
 }
@@ -854,7 +854,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_store_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m)
+atomic_store_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order __m=
) _NOEXCEPT
 {
     __o->store(__d, __m);
 }
@@ -862,7 +862,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_store_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m)
+atomic_store_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOEXCE=
PT
 {
     __o->store(__d, __m);
 }
@@ -872,7 +872,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_load(const volatile atomic<_Tp>* __o)
+atomic_load(const volatile atomic<_Tp>* __o) _NOEXCEPT
 {
     return __o->load();
 }
@@ -880,7 +880,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_load(const atomic<_Tp>* __o)
+atomic_load(const atomic<_Tp>* __o) _NOEXCEPT
 {
     return __o->load();
 }
@@ -890,7 +890,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m)
+atomic_load_explicit(const volatile atomic<_Tp>* __o, memory_order __m) _N=
OEXCEPT
 {
     return __o->load(__m);
 }
@@ -898,7 +898,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m)
+atomic_load_explicit(const atomic<_Tp>* __o, memory_order __m) _NOEXCEPT
 {
     return __o->load(__m);
 }
@@ -908,7 +908,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_exchange(volatile atomic<_Tp>* __o, _Tp __d)
+atomic_exchange(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
     return __o->exchange(__d);
 }
@@ -916,7 +916,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_exchange(atomic<_Tp>* __o, _Tp __d)
+atomic_exchange(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
 {
     return __o->exchange(__d);
 }
@@ -926,7 +926,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_exchange_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order =
__m)
+atomic_exchange_explicit(volatile atomic<_Tp>* __o, _Tp __d, memory_order =
__m) _NOEXCEPT
 {
     return __o->exchange(__d, __m);
 }
@@ -934,7 +934,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp
-atomic_exchange_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m)
+atomic_exchange_explicit(atomic<_Tp>* __o, _Tp __d, memory_order __m) _NOE=
XCEPT
 {
     return __o->exchange(__d, __m);
 }
@@ -944,7 +944,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d)
+atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d)=
 _NOEXCEPT
 {
     return __o->compare_exchange_weak(*__e, __d);
 }
@@ -952,7 +952,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_compare_exchange_weak(atomic<_Tp>* __o, _Tp* __e, _Tp __d)
+atomic_compare_exchange_weak(atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXCEPT
 {
     return __o->compare_exchange_weak(*__e, __d);
 }
@@ -962,7 +962,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __=
d)
+atomic_compare_exchange_strong(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __=
d) _NOEXCEPT
 {
     return __o->compare_exchange_strong(*__e, __d);
 }
@@ -970,7 +970,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_compare_exchange_strong(atomic<_Tp>* __o, _Tp* __e, _Tp __d)
+atomic_compare_exchange_strong(atomic<_Tp>* __o, _Tp* __e, _Tp __d) _NOEXC=
EPT
 {
     return __o->compare_exchange_strong(*__e, __d);
 }
@@ -982,7 +982,7 @@
 bool
 atomic_compare_exchange_weak_explicit(volatile atomic<_Tp>* __o, _Tp* __e,
                                       _Tp __d,
-                                      memory_order __s, memory_order __f)
+                                      memory_order __s, memory_order __f) =
_NOEXCEPT
 {
     return __o->compare_exchange_weak(*__e, __d, __s, __f);
 }
@@ -991,7 +991,7 @@
 inline _LIBCPP_INLINE_VISIBILITY
 bool
 atomic_compare_exchange_weak_explicit(atomic<_Tp>* __o, _Tp* __e, _Tp __d,
-                                      memory_order __s, memory_order __f)
+                                      memory_order __s, memory_order __f) =
_NOEXCEPT
 {
     return __o->compare_exchange_weak(*__e, __d, __s, __f);
 }
@@ -1003,7 +1003,7 @@
 bool
 atomic_compare_exchange_strong_explicit(volatile atomic<_Tp>* __o,
                                         _Tp* __e, _Tp __d,
-                                        memory_order __s, memory_order __f)
+                                        memory_order __s, memory_order __f=
) _NOEXCEPT
 {
     return __o->compare_exchange_strong(*__e, __d, __s, __f);
 }
@@ -1013,7 +1013,7 @@
 bool
 atomic_compare_exchange_strong_explicit(atomic<_Tp>* __o, _Tp* __e,
                                         _Tp __d,
-                                        memory_order __s, memory_order __f)
+                                        memory_order __s, memory_order __f=
) _NOEXCEPT
 {
     return __o->compare_exchange_strong(*__e, __d, __s, __f);
 }
@@ -1027,7 +1027,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_add(volatile atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_add(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_add(__op);
 }
@@ -1039,7 +1039,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_add(atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_add(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_add(__op);
 }
@@ -1047,7 +1047,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_add(volatile atomic<_Tp*>* __o, ptrdiff_t __op)
+atomic_fetch_add(volatile atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT
 {
     return __o->fetch_add(__op);
 }
@@ -1055,7 +1055,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_add(atomic<_Tp*>* __o, ptrdiff_t __op)
+atomic_fetch_add(atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT
 {
     return __o->fetch_add(__op);
 }
@@ -1069,7 +1069,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m)
+atomic_fetch_add_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m) _NOEXCEPT
 {
     return __o->fetch_add(__op, __m);
 }
@@ -1081,7 +1081,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_add_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m)
+atomic_fetch_add_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _N=
OEXCEPT
 {
     return __o->fetch_add(__op, __m);
 }
@@ -1090,7 +1090,7 @@
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
 atomic_fetch_add_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op,
-                          memory_order __m)
+                          memory_order __m) _NOEXCEPT
 {
     return __o->fetch_add(__op, __m);
 }
@@ -1098,7 +1098,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_add_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order =
__m)
+atomic_fetch_add_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order =
__m) _NOEXCEPT
 {
     return __o->fetch_add(__op, __m);
 }
@@ -1112,7 +1112,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_sub(volatile atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_sub(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_sub(__op);
 }
@@ -1124,7 +1124,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_sub(atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_sub(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_sub(__op);
 }
@@ -1132,7 +1132,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_sub(volatile atomic<_Tp*>* __o, ptrdiff_t __op)
+atomic_fetch_sub(volatile atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT
 {
     return __o->fetch_sub(__op);
 }
@@ -1140,7 +1140,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_sub(atomic<_Tp*>* __o, ptrdiff_t __op)
+atomic_fetch_sub(atomic<_Tp*>* __o, ptrdiff_t __op) _NOEXCEPT
 {
     return __o->fetch_sub(__op);
 }
@@ -1154,7 +1154,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m)
+atomic_fetch_sub_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m) _NOEXCEPT
 {
     return __o->fetch_sub(__op, __m);
 }
@@ -1166,7 +1166,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_sub_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m)
+atomic_fetch_sub_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _N=
OEXCEPT
 {
     return __o->fetch_sub(__op, __m);
 }
@@ -1175,7 +1175,7 @@
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
 atomic_fetch_sub_explicit(volatile atomic<_Tp*>* __o, ptrdiff_t __op,
-                          memory_order __m)
+                          memory_order __m) _NOEXCEPT
 {
     return __o->fetch_sub(__op, __m);
 }
@@ -1183,7 +1183,7 @@
 template <class _Tp>
 inline _LIBCPP_INLINE_VISIBILITY
 _Tp*
-atomic_fetch_sub_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order =
__m)
+atomic_fetch_sub_explicit(atomic<_Tp*>* __o, ptrdiff_t __op, memory_order =
__m) _NOEXCEPT
 {
     return __o->fetch_sub(__op, __m);
 }
@@ -1197,7 +1197,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_and(volatile atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_and(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_and(__op);
 }
@@ -1209,7 +1209,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_and(atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_and(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_and(__op);
 }
@@ -1223,7 +1223,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m)
+atomic_fetch_and_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m) _NOEXCEPT
 {
     return __o->fetch_and(__op, __m);
 }
@@ -1235,7 +1235,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_and_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m)
+atomic_fetch_and_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _N=
OEXCEPT
 {
     return __o->fetch_and(__op, __m);
 }
@@ -1249,7 +1249,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_or(volatile atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_or(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_or(__op);
 }
@@ -1261,7 +1261,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_or(atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_or(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_or(__op);
 }
@@ -1275,7 +1275,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order=
 __m)
+atomic_fetch_or_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_order=
 __m) _NOEXCEPT
 {
     return __o->fetch_or(__op, __m);
 }
@@ -1287,7 +1287,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_or_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m)
+atomic_fetch_or_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _NO=
EXCEPT
 {
     return __o->fetch_or(__op, __m);
 }
@@ -1301,7 +1301,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_xor(volatile atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_xor(volatile atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_xor(__op);
 }
@@ -1313,7 +1313,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_xor(atomic<_Tp>* __o, _Tp __op)
+atomic_fetch_xor(atomic<_Tp>* __o, _Tp __op) _NOEXCEPT
 {
     return __o->fetch_xor(__op);
 }
@@ -1327,7 +1327,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m)
+atomic_fetch_xor_explicit(volatile atomic<_Tp>* __o, _Tp __op, memory_orde=
r __m) _NOEXCEPT
 {
     return __o->fetch_xor(__op, __m);
 }
@@ -1339,7 +1339,7 @@
     is_integral<_Tp>::value && !is_same<_Tp, bool>::value,
     _Tp
 >::type
-atomic_fetch_xor_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m)
+atomic_fetch_xor_explicit(atomic<_Tp>* __o, _Tp __op, memory_order __m) _N=
OEXCEPT
 {
     return __o->fetch_xor(__op, __m);
 }
@@ -1351,22 +1351,22 @@
     _Atomic(bool) __a_;
=20
     _LIBCPP_INLINE_VISIBILITY
-    bool test_and_set(memory_order __m =3D memory_order_seq_cst) volatile
-        {return __atomic_exchange(&__a_, true, __m);}
+    bool test_and_set(memory_order __m =3D memory_order_seq_cst) volatile =
_NOEXCEPT
+        {return __c11_atomic_exchange(&__a_, true, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    bool test_and_set(memory_order __m =3D memory_order_seq_cst)
-        {return __atomic_exchange(&__a_, true, __m);}
+    bool test_and_set(memory_order __m =3D memory_order_seq_cst) _NOEXCEPT
+        {return __c11_atomic_exchange(&__a_, true, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    void clear(memory_order __m =3D memory_order_seq_cst) volatile
-        {__atomic_store(&__a_, false, __m);}
+    void clear(memory_order __m =3D memory_order_seq_cst) volatile _NOEXCE=
PT
+        {__c11_atomic_store(&__a_, false, __m);}
     _LIBCPP_INLINE_VISIBILITY
-    void clear(memory_order __m =3D memory_order_seq_cst)
-        {__atomic_store(&__a_, false, __m);}
+    void clear(memory_order __m =3D memory_order_seq_cst) _NOEXCEPT
+        {__c11_atomic_store(&__a_, false, __m);}
=20
     _LIBCPP_INLINE_VISIBILITY
-    atomic_flag() {} // =3D default;
+    atomic_flag() _NOEXCEPT {} // =3D default;
     _LIBCPP_INLINE_VISIBILITY
-    atomic_flag(bool __b) { __atomic_store(&__a_, __b, memory_order_seq_cs=
t); }
+    atomic_flag(bool __b) _NOEXCEPT : __a_(__b) {}
=20
 #ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
     atomic_flag(const atomic_flag&) =3D delete;
@@ -1382,56 +1382,56 @@
=20
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_flag_test_and_set(volatile atomic_flag* __o)
+atomic_flag_test_and_set(volatile atomic_flag* __o) _NOEXCEPT
 {
     return __o->test_and_set();
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_flag_test_and_set(atomic_flag* __o)
+atomic_flag_test_and_set(atomic_flag* __o) _NOEXCEPT
 {
     return __o->test_and_set();
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order =
__m)
+atomic_flag_test_and_set_explicit(volatile atomic_flag* __o, memory_order =
__m) _NOEXCEPT
 {
     return __o->test_and_set(__m);
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 bool
-atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m)
+atomic_flag_test_and_set_explicit(atomic_flag* __o, memory_order __m) _NOE=
XCEPT
 {
     return __o->test_and_set(__m);
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_flag_clear(volatile atomic_flag* __o)
+atomic_flag_clear(volatile atomic_flag* __o) _NOEXCEPT
 {
     __o->clear();
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_flag_clear(atomic_flag* __o)
+atomic_flag_clear(atomic_flag* __o) _NOEXCEPT
 {
     __o->clear();
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m)
+atomic_flag_clear_explicit(volatile atomic_flag* __o, memory_order __m) _N=
OEXCEPT
 {
     __o->clear(__m);
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m)
+atomic_flag_clear_explicit(atomic_flag* __o, memory_order __m) _NOEXCEPT
 {
     __o->clear(__m);
 }
@@ -1440,16 +1440,16 @@
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_thread_fence(memory_order __m)
+atomic_thread_fence(memory_order __m) _NOEXCEPT
 {
-    __atomic_thread_fence(__m);
+    __c11_atomic_thread_fence(__m);
 }
=20
 inline _LIBCPP_INLINE_VISIBILITY
 void
-atomic_signal_fence(memory_order __m)
+atomic_signal_fence(memory_order __m) _NOEXCEPT
 {
-    __atomic_signal_fence(__m);
+    __c11_atomic_signal_fence(__m);
 }
=20
 // Atomics for standard typedef types
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/cmath
--- a/head/contrib/libc++/include/cmath	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/cmath	Wed Jul 25 16:21:35 2012 +0300
@@ -648,10 +648,17 @@
=20
 // abs
=20
-template <class _A1>
 inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if<is_floating_point<_A1>::value, _A1>::type
-abs(_A1 __x) {return fabs(__x);}
+float
+abs(float __x) {return fabsf(__x);}
+
+inline _LIBCPP_INLINE_VISIBILITY
+double
+abs(double __x) {return fabs(__x);}
+
+inline _LIBCPP_INLINE_VISIBILITY
+long double
+abs(long double __x) {return fabsl(__x);}
=20
 #ifndef __sun__
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/limits
--- a/head/contrib/libc++/include/limits	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/limits	Wed Jul 25 16:21:35 2012 +0300
@@ -21,43 +21,43 @@
 class numeric_limits
 {
 public:
-    static const bool is_specialized =3D false;
-    static T min() noexcept;
-    static T max() noexcept;
-    static T lowest() noexcept;
+    static constexpr bool is_specialized =3D false;
+    static constexpr T min() noexcept;
+    static constexpr T max() noexcept;
+    static constexpr T lowest() noexcept;
=20
-    static const int  digits =3D 0;
-    static const int  digits10 =3D 0;
-    static const int  max_digits10 =3D 0;
-    static const bool is_signed =3D false;
-    static const bool is_integer =3D false;
-    static const bool is_exact =3D false;
-    static const int  radix =3D 0;
-    static T epsilon() noexcept;
-    static T round_error() noexcept;
+    static constexpr int  digits =3D 0;
+    static constexpr int  digits10 =3D 0;
+    static constexpr int  max_digits10 =3D 0;
+    static constexpr bool is_signed =3D false;
+    static constexpr bool is_integer =3D false;
+    static constexpr bool is_exact =3D false;
+    static constexpr int  radix =3D 0;
+    static constexpr T epsilon() noexcept;
+    static constexpr T round_error() noexcept;
=20
-    static const int  min_exponent =3D 0;
-    static const int  min_exponent10 =3D 0;
-    static const int  max_exponent =3D 0;
-    static const int  max_exponent10 =3D 0;
+    static constexpr int  min_exponent =3D 0;
+    static constexpr int  min_exponent10 =3D 0;
+    static constexpr int  max_exponent =3D 0;
+    static constexpr int  max_exponent10 =3D 0;
=20
-    static const bool has_infinity =3D false;
-    static const bool has_quiet_NaN =3D false;
-    static const bool has_signaling_NaN =3D false;
-    static const float_denorm_style has_denorm =3D denorm_absent;
-    static const bool has_denorm_loss =3D false;
-    static T infinity() noexcept;
-    static T quiet_NaN() noexcept;
-    static T signaling_NaN() noexcept;
-    static T denorm_min() noexcept;
+    static constexpr bool has_infinity =3D false;
+    static constexpr bool has_quiet_NaN =3D false;
+    static constexpr bool has_signaling_NaN =3D false;
+    static constexpr float_denorm_style has_denorm =3D denorm_absent;
+    static constexpr bool has_denorm_loss =3D false;
+    static constexpr T infinity() noexcept;
+    static constexpr T quiet_NaN() noexcept;
+    static constexpr T signaling_NaN() noexcept;
+    static constexpr T denorm_min() noexcept;
=20
-    static const bool is_iec559 =3D false;
-    static const bool is_bounded =3D false;
-    static const bool is_modulo =3D false;
+    static constexpr bool is_iec559 =3D false;
+    static constexpr bool is_bounded =3D false;
+    static constexpr bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_toward_zero;
+    static constexpr bool traps =3D false;
+    static constexpr bool tinyness_before =3D false;
+    static constexpr float_round_style round_style =3D round_toward_zero;
 };
=20
 enum float_round_style
@@ -139,55 +139,55 @@
 protected:
     typedef _Tp type;
=20
-    static const bool is_specialized =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return type();}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return type();}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return type(=
);}
+    static _LIBCPP_CONSTEXPR const  bool is_specialized =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return type();}
=20
-    static const int  digits =3D 0;
-    static const int  digits10 =3D 0;
-    static const int  max_digits10 =3D 0;
-    static const bool is_signed =3D false;
-    static const bool is_integer =3D false;
-    static const bool is_exact =3D false;
-    static const int  radix =3D 0;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return type=
();}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
type();}
+    static _LIBCPP_CONSTEXPR const int  digits =3D 0;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 0;
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D false;
+    static _LIBCPP_CONSTEXPR const int  radix =3D 0;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return type();}
=20
-    static const int  min_exponent =3D 0;
-    static const int  min_exponent10 =3D 0;
-    static const int  max_exponent =3D 0;
-    static const int  max_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D 0;
=20
-    static const bool has_infinity =3D false;
-    static const bool has_quiet_NaN =3D false;
-    static const bool has_signaling_NaN =3D false;
-    static const float_denorm_style has_denorm =3D denorm_absent;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return typ=
e();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return ty=
pe();}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n type();}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return t=
ype();}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_absent;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return type();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return type();}
=20
-    static const bool is_iec559 =3D false;
-    static const bool is_bounded =3D false;
-    static const bool is_modulo =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_toward_zero;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_toward_zero;
 };
=20
 template <class _Tp, int digits, bool is_signed>
 struct __libcpp_compute_min
 {
-    static const _Tp value =3D _Tp(_Tp(1) << digits);
+    static _LIBCPP_CONSTEXPR const _Tp value =3D _Tp(_Tp(1) << digits);
 };
=20
 template <class _Tp, int digits>
 struct __libcpp_compute_min<_Tp, digits, false>
 {
-    static const _Tp value =3D _Tp(0);
+    static _LIBCPP_CONSTEXPR const _Tp value =3D _Tp(0);
 };
=20
 template <class _Tp>
@@ -196,50 +196,50 @@
 protected:
     typedef _Tp type;
=20
-    static const bool is_specialized =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D true;
=20
-    static const bool is_signed =3D type(-1) < type(0);
-    static const int  digits =3D static_cast<int>(sizeof(type) * __CHAR_BI=
T__ - is_signed);
-    static const int  digits10 =3D digits * 3 / 10;
-    static const int  max_digits10 =3D 0;
-    static const type __min =3D __libcpp_compute_min<type, digits, is_sign=
ed>::value;
-    static const type __max =3D is_signed ? type(type(~0) ^ __min) : type(=
~0);
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __min;}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __max;}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return min()=
;}
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D type(-1) < type(0);
+    static _LIBCPP_CONSTEXPR const int  digits =3D static_cast<int>(sizeof=
(type) * __CHAR_BIT__ - is_signed);
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D digits * 3 / 10;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 0;
+    static _LIBCPP_CONSTEXPR const type __min =3D __libcpp_compute_min<typ=
e, digits, is_signed>::value;
+    static _LIBCPP_CONSTEXPR const type __max =3D is_signed ? type(type(~0=
) ^ __min) : type(~0);
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __min;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __max;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return min();}
=20
-    static const bool is_integer =3D true;
-    static const bool is_exact =3D true;
-    static const int  radix =3D 2;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return type=
(0);}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
type(0);}
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D true;
+    static _LIBCPP_CONSTEXPR const int  radix =3D 2;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return type(0);}
=20
-    static const int  min_exponent =3D 0;
-    static const int  min_exponent10 =3D 0;
-    static const int  max_exponent =3D 0;
-    static const int  max_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D 0;
=20
-    static const bool has_infinity =3D false;
-    static const bool has_quiet_NaN =3D false;
-    static const bool has_signaling_NaN =3D false;
-    static const float_denorm_style has_denorm =3D denorm_absent;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return typ=
e(0);}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return ty=
pe(0);}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n type(0);}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return t=
ype(0);}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_absent;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return type(0);}
=20
-    static const bool is_iec559 =3D false;
-    static const bool is_bounded =3D true;
-    static const bool is_modulo =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D true;
=20
 #if __i386__ || __x86_64__
-    static const bool traps =3D true;
+    static _LIBCPP_CONSTEXPR const bool traps =3D true;
 #else
-    static const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
 #endif
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_toward_zero;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_toward_zero;
 };
=20
 template <>
@@ -248,46 +248,46 @@
 protected:
     typedef bool type;
=20
-    static const bool is_specialized =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D true;
=20
-    static const bool is_signed =3D false;
-    static const int  digits =3D 1;
-    static const int  digits10 =3D 0;
-    static const int  max_digits10 =3D 0;
-    static const type __min =3D false;
-    static const type __max =3D true;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __min;}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __max;}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return min()=
;}
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D false;
+    static _LIBCPP_CONSTEXPR const int  digits =3D 1;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 0;
+    static _LIBCPP_CONSTEXPR const type __min =3D false;
+    static _LIBCPP_CONSTEXPR const type __max =3D true;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __min;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __max;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return min();}
=20
-    static const bool is_integer =3D true;
-    static const bool is_exact =3D true;
-    static const int  radix =3D 2;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return type=
(0);}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
type(0);}
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D true;
+    static _LIBCPP_CONSTEXPR const int  radix =3D 2;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return type(0);}
=20
-    static const int  min_exponent =3D 0;
-    static const int  min_exponent10 =3D 0;
-    static const int  max_exponent =3D 0;
-    static const int  max_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D 0;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D 0;
=20
-    static const bool has_infinity =3D false;
-    static const bool has_quiet_NaN =3D false;
-    static const bool has_signaling_NaN =3D false;
-    static const float_denorm_style has_denorm =3D denorm_absent;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return typ=
e(0);}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return ty=
pe(0);}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n type(0);}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return t=
ype(0);}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D false;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_absent;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return type(0);}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return type(0);}
=20
-    static const bool is_iec559 =3D false;
-    static const bool is_bounded =3D true;
-    static const bool is_modulo =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_toward_zero;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_toward_zero;
 };
=20
 template <>
@@ -296,44 +296,44 @@
 protected:
     typedef float type;
=20
-    static const bool is_specialized =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D true;
=20
-    static const bool is_signed =3D true;
-    static const int  digits =3D __FLT_MANT_DIG__;
-    static const int  digits10 =3D __FLT_DIG__;
-    static const int  max_digits10 =3D 2+(digits * 30103)/100000;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __FLT_MI=
N__;}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __FLT_MA=
X__;}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return -max(=
);}
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D true;
+    static _LIBCPP_CONSTEXPR const int  digits =3D __FLT_MANT_DIG__;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __FLT_DIG__;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 2+(digits * 30103=
)/100000;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __FLT_MIN__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __FLT_MAX__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return -max();}
=20
-    static const bool is_integer =3D false;
-    static const bool is_exact =3D false;
-    static const int  radix =3D __FLT_RADIX__;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __FL=
T_EPSILON__;}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
0.5F;}
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D false;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __FLT_RADIX__;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __FLT_EPSILON__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return 0.5F;}
=20
-    static const int  min_exponent =3D __FLT_MIN_EXP__;
-    static const int  min_exponent10 =3D __FLT_MIN_10_EXP__;
-    static const int  max_exponent =3D __FLT_MAX_EXP__;
-    static const int  max_exponent10 =3D __FLT_MAX_10_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __FLT_MIN_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __FLT_MIN_10_EX=
P__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __FLT_MAX_EXP__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __FLT_MAX_10_EX=
P__;
=20
-    static const bool has_infinity =3D true;
-    static const bool has_quiet_NaN =3D true;
-    static const bool has_signaling_NaN =3D true;
-    static const float_denorm_style has_denorm =3D denorm_present;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
uiltin_huge_valf();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
builtin_nanf("");}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __builtin_nansf("");}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_FLT_DENORM_MIN__;}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_present;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __builtin_huge_valf();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __builtin_nanf("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __builtin_nansf("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __FLT_DENORM_MIN__;}
=20
-    static const bool is_iec559 =3D true;
-    static const bool is_bounded =3D true;
-    static const bool is_modulo =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_to_nearest;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_to_nearest;
 };
=20
 template <>
@@ -342,44 +342,44 @@
 protected:
     typedef double type;
=20
-    static const bool is_specialized =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D true;
=20
-    static const bool is_signed =3D true;
-    static const int  digits =3D __DBL_MANT_DIG__;
-    static const int  digits10 =3D __DBL_DIG__;
-    static const int  max_digits10 =3D 2+(digits * 30103)/100000;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __DBL_MI=
N__;}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __DBL_MA=
X__;}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return -max(=
);}
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D true;
+    static _LIBCPP_CONSTEXPR const int  digits =3D __DBL_MANT_DIG__;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __DBL_DIG__;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 2+(digits * 30103=
)/100000;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __DBL_MIN__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __DBL_MAX__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return -max();}
=20
-    static const bool is_integer =3D false;
-    static const bool is_exact =3D false;
-    static const int  radix =3D __FLT_RADIX__;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __DB=
L_EPSILON__;}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
0.5;}
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D false;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __FLT_RADIX__;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __DBL_EPSILON__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return 0.5;}
=20
-    static const int  min_exponent =3D __DBL_MIN_EXP__;
-    static const int  min_exponent10 =3D __DBL_MIN_10_EXP__;
-    static const int  max_exponent =3D __DBL_MAX_EXP__;
-    static const int  max_exponent10 =3D __DBL_MAX_10_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __DBL_MIN_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __DBL_MIN_10_EX=
P__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __DBL_MAX_EXP__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __DBL_MAX_10_EX=
P__;
=20
-    static const bool has_infinity =3D true;
-    static const bool has_quiet_NaN =3D true;
-    static const bool has_signaling_NaN =3D true;
-    static const float_denorm_style has_denorm =3D denorm_present;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
uiltin_huge_val();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
builtin_nan("");}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __builtin_nans("");}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_DBL_DENORM_MIN__;}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_present;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __builtin_huge_val();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __builtin_nan("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __builtin_nans("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __DBL_DENORM_MIN__;}
=20
-    static const bool is_iec559 =3D true;
-    static const bool is_bounded =3D true;
-    static const bool is_modulo =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_to_nearest;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_to_nearest;
 };
=20
 template <>
@@ -388,48 +388,48 @@
 protected:
     typedef long double type;
=20
-    static const bool is_specialized =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D true;
=20
-    static const bool is_signed =3D true;
-    static const int  digits =3D __LDBL_MANT_DIG__;
-    static const int  digits10 =3D __LDBL_DIG__;
-    static const int  max_digits10 =3D 2+(digits * 30103)/100000;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __LDBL_M=
IN__;}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __LDBL_M=
AX__;}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return -max(=
);}
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D true;
+    static _LIBCPP_CONSTEXPR const int  digits =3D __LDBL_MANT_DIG__;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __LDBL_DIG__;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D 2+(digits * 30103=
)/100000;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __LDBL_MIN__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __LDBL_MAX__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return -max();}
=20
-    static const bool is_integer =3D false;
-    static const bool is_exact =3D false;
-    static const int  radix =3D __FLT_RADIX__;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __LD=
BL_EPSILON__;}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
0.5;}
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D false;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __FLT_RADIX__;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __LDBL_EPSILON__;}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return 0.5;}
=20
-    static const int  min_exponent =3D __LDBL_MIN_EXP__;
-    static const int  min_exponent10 =3D __LDBL_MIN_10_EXP__;
-    static const int  max_exponent =3D __LDBL_MAX_EXP__;
-    static const int  max_exponent10 =3D __LDBL_MAX_10_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __LDBL_MIN_EXP__;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __LDBL_MIN_10_E=
XP__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __LDBL_MAX_EXP__;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __LDBL_MAX_10_E=
XP__;
=20
-    static const bool has_infinity =3D true;
-    static const bool has_quiet_NaN =3D true;
-    static const bool has_signaling_NaN =3D true;
-    static const float_denorm_style has_denorm =3D denorm_present;
-    static const bool has_denorm_loss =3D false;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
uiltin_huge_vall();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
builtin_nanl("");}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __builtin_nansl("");}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_LDBL_DENORM_MIN__;}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D true;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D denor=
m_present;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D false;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __builtin_huge_vall();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __builtin_nanl("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __builtin_nansl("");}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __LDBL_DENORM_MIN__;}
=20
 #if (defined(__ppc__) || defined(__ppc64__))
-    static const bool is_iec559 =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D false;
 #else
-    static const bool is_iec559 =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D true;
 #endif
-    static const bool is_bounded =3D true;
-    static const bool is_modulo =3D false;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D true;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D false;
=20
-    static const bool traps =3D false;
-    static const bool tinyness_before =3D false;
-    static const float_round_style round_style =3D round_to_nearest;
+    static _LIBCPP_CONSTEXPR const bool traps =3D false;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D false;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D round=
_to_nearest;
 };
=20
 template <class _Tp>
@@ -439,43 +439,43 @@
     typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base;
     typedef typename __base::type type;
 public:
-    static const bool is_specialized =3D __base::is_specialized;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __base::=
min();}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __base::=
max();}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return __bas=
e::lowest();}
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D __base::is_spec=
ialized;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __base::min();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __base::max();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return __base::lowest();}
=20
-    static const int  digits =3D __base::digits;
-    static const int  digits10 =3D __base::digits10;
-    static const int  max_digits10 =3D __base::max_digits10;
-    static const bool is_signed =3D __base::is_signed;
-    static const bool is_integer =3D __base::is_integer;
-    static const bool is_exact =3D __base::is_exact;
-    static const int  radix =3D __base::radix;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __ba=
se::epsilon();}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
__base::round_error();}
+    static _LIBCPP_CONSTEXPR const int  digits =3D __base::digits;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __base::digits10;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D __base::max_digit=
s10;
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D __base::is_signed;
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D __base::is_integer;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D __base::is_exact;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __base::radix;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __base::epsilon();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return __base::round_error();}
=20
-    static const int  min_exponent =3D __base::min_exponent;
-    static const int  min_exponent10 =3D __base::min_exponent10;
-    static const int  max_exponent =3D __base::max_exponent;
-    static const int  max_exponent10 =3D __base::max_exponent10;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __base::min_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __base::min_exp=
onent10;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __base::max_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __base::max_exp=
onent10;
=20
-    static const bool has_infinity =3D __base::has_infinity;
-    static const bool has_quiet_NaN =3D __base::has_quiet_NaN;
-    static const bool has_signaling_NaN =3D __base::has_signaling_NaN;
-    static const float_denorm_style has_denorm =3D __base::has_denorm;
-    static const bool has_denorm_loss =3D __base::has_denorm_loss;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
ase::infinity();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
base::quiet_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __base::signaling_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_base::denorm_min();}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D __base::has_infin=
ity;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D __base::has_quie=
t_NaN;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D __base::has_=
signaling_NaN;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D __bas=
e::has_denorm;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D __base::has_de=
norm_loss;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __base::infinity();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __base::quiet_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __base::signaling_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __base::denorm_min();}
=20
-    static const bool is_iec559 =3D __base::is_iec559;
-    static const bool is_bounded =3D __base::is_bounded;
-    static const bool is_modulo =3D __base::is_modulo;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D __base::is_iec559;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D __base::is_bounded;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D __base::is_modulo;
=20
-    static const bool traps =3D __base::traps;
-    static const bool tinyness_before =3D __base::tinyness_before;
-    static const float_round_style round_style =3D __base::round_style;
+    static _LIBCPP_CONSTEXPR const bool traps =3D __base::traps;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D __base::tinyne=
ss_before;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D __bas=
e::round_style;
 };
=20
 template <class _Tp>
@@ -485,43 +485,43 @@
     typedef numeric_limits<_Tp> __base;
     typedef _Tp type;
 public:
-    static const bool is_specialized =3D __base::is_specialized;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __base::=
min();}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __base::=
max();}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return __bas=
e::lowest();}
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D __base::is_spec=
ialized;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __base::min();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __base::max();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return __base::lowest();}
=20
-    static const int  digits =3D __base::digits;
-    static const int  digits10 =3D __base::digits10;
-    static const int  max_digits10 =3D __base::max_digits10;
-    static const bool is_signed =3D __base::is_signed;
-    static const bool is_integer =3D __base::is_integer;
-    static const bool is_exact =3D __base::is_exact;
-    static const int  radix =3D __base::radix;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __ba=
se::epsilon();}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
__base::round_error();}
+    static _LIBCPP_CONSTEXPR const int  digits =3D __base::digits;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __base::digits10;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D __base::max_digit=
s10;
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D __base::is_signed;
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D __base::is_integer;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D __base::is_exact;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __base::radix;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __base::epsilon();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return __base::round_error();}
=20
-    static const int  min_exponent =3D __base::min_exponent;
-    static const int  min_exponent10 =3D __base::min_exponent10;
-    static const int  max_exponent =3D __base::max_exponent;
-    static const int  max_exponent10 =3D __base::max_exponent10;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __base::min_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __base::min_exp=
onent10;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __base::max_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __base::max_exp=
onent10;
=20
-    static const bool has_infinity =3D __base::has_infinity;
-    static const bool has_quiet_NaN =3D __base::has_quiet_NaN;
-    static const bool has_signaling_NaN =3D __base::has_signaling_NaN;
-    static const float_denorm_style has_denorm =3D __base::has_denorm;
-    static const bool has_denorm_loss =3D __base::has_denorm_loss;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
ase::infinity();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
base::quiet_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __base::signaling_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_base::denorm_min();}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D __base::has_infin=
ity;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D __base::has_quie=
t_NaN;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D __base::has_=
signaling_NaN;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D __bas=
e::has_denorm;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D __base::has_de=
norm_loss;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __base::infinity();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __base::quiet_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __base::signaling_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __base::denorm_min();}
=20
-    static const bool is_iec559 =3D __base::is_iec559;
-    static const bool is_bounded =3D __base::is_bounded;
-    static const bool is_modulo =3D __base::is_modulo;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D __base::is_iec559;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D __base::is_bounded;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D __base::is_modulo;
=20
-    static const bool traps =3D __base::traps;
-    static const bool tinyness_before =3D __base::tinyness_before;
-    static const float_round_style round_style =3D __base::round_style;
+    static _LIBCPP_CONSTEXPR const bool traps =3D __base::traps;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D __base::tinyne=
ss_before;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D __bas=
e::round_style;
 };
=20
 template <class _Tp>
@@ -531,43 +531,43 @@
     typedef numeric_limits<_Tp> __base;
     typedef _Tp type;
 public:
-    static const bool is_specialized =3D __base::is_specialized;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __base::=
min();}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __base::=
max();}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return __bas=
e::lowest();}
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D __base::is_spec=
ialized;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __base::min();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __base::max();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return __base::lowest();}
=20
-    static const int  digits =3D __base::digits;
-    static const int  digits10 =3D __base::digits10;
-    static const int  max_digits10 =3D __base::max_digits10;
-    static const bool is_signed =3D __base::is_signed;
-    static const bool is_integer =3D __base::is_integer;
-    static const bool is_exact =3D __base::is_exact;
-    static const int  radix =3D __base::radix;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __ba=
se::epsilon();}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
__base::round_error();}
+    static _LIBCPP_CONSTEXPR const int  digits =3D __base::digits;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __base::digits10;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D __base::max_digit=
s10;
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D __base::is_signed;
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D __base::is_integer;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D __base::is_exact;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __base::radix;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __base::epsilon();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return __base::round_error();}
=20
-    static const int  min_exponent =3D __base::min_exponent;
-    static const int  min_exponent10 =3D __base::min_exponent10;
-    static const int  max_exponent =3D __base::max_exponent;
-    static const int  max_exponent10 =3D __base::max_exponent10;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __base::min_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __base::min_exp=
onent10;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __base::max_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __base::max_exp=
onent10;
=20
-    static const bool has_infinity =3D __base::has_infinity;
-    static const bool has_quiet_NaN =3D __base::has_quiet_NaN;
-    static const bool has_signaling_NaN =3D __base::has_signaling_NaN;
-    static const float_denorm_style has_denorm =3D __base::has_denorm;
-    static const bool has_denorm_loss =3D __base::has_denorm_loss;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
ase::infinity();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
base::quiet_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __base::signaling_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_base::denorm_min();}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D __base::has_infin=
ity;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D __base::has_quie=
t_NaN;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D __base::has_=
signaling_NaN;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D __bas=
e::has_denorm;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D __base::has_de=
norm_loss;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __base::infinity();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __base::quiet_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __base::signaling_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __base::denorm_min();}
=20
-    static const bool is_iec559 =3D __base::is_iec559;
-    static const bool is_bounded =3D __base::is_bounded;
-    static const bool is_modulo =3D __base::is_modulo;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D __base::is_iec559;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D __base::is_bounded;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D __base::is_modulo;
=20
-    static const bool traps =3D __base::traps;
-    static const bool tinyness_before =3D __base::tinyness_before;
-    static const float_round_style round_style =3D __base::round_style;
+    static _LIBCPP_CONSTEXPR const bool traps =3D __base::traps;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D __base::tinyne=
ss_before;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D __bas=
e::round_style;
 };
=20
 template <class _Tp>
@@ -577,43 +577,43 @@
     typedef numeric_limits<_Tp> __base;
     typedef _Tp type;
 public:
-    static const bool is_specialized =3D __base::is_specialized;
-    _LIBCPP_INLINE_VISIBILITY static type min() _NOEXCEPT {return __base::=
min();}
-    _LIBCPP_INLINE_VISIBILITY static type max() _NOEXCEPT {return __base::=
max();}
-    _LIBCPP_INLINE_VISIBILITY static type lowest() _NOEXCEPT {return __bas=
e::lowest();}
+    static _LIBCPP_CONSTEXPR const bool is_specialized =3D __base::is_spec=
ialized;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEP=
T {return __base::min();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEP=
T {return __base::max();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEX=
CEPT {return __base::lowest();}
=20
-    static const int  digits =3D __base::digits;
-    static const int  digits10 =3D __base::digits10;
-    static const int  max_digits10 =3D __base::max_digits10;
-    static const bool is_signed =3D __base::is_signed;
-    static const bool is_integer =3D __base::is_integer;
-    static const bool is_exact =3D __base::is_exact;
-    static const int  radix =3D __base::radix;
-    _LIBCPP_INLINE_VISIBILITY static type epsilon() _NOEXCEPT {return __ba=
se::epsilon();}
-    _LIBCPP_INLINE_VISIBILITY static type round_error() _NOEXCEPT {return =
__base::round_error();}
+    static _LIBCPP_CONSTEXPR const int  digits =3D __base::digits;
+    static _LIBCPP_CONSTEXPR const int  digits10 =3D __base::digits10;
+    static _LIBCPP_CONSTEXPR const int  max_digits10 =3D __base::max_digit=
s10;
+    static _LIBCPP_CONSTEXPR const bool is_signed =3D __base::is_signed;
+    static _LIBCPP_CONSTEXPR const bool is_integer =3D __base::is_integer;
+    static _LIBCPP_CONSTEXPR const bool is_exact =3D __base::is_exact;
+    static _LIBCPP_CONSTEXPR const int  radix =3D __base::radix;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOE=
XCEPT {return __base::epsilon();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() =
_NOEXCEPT {return __base::round_error();}
=20
-    static const int  min_exponent =3D __base::min_exponent;
-    static const int  min_exponent10 =3D __base::min_exponent10;
-    static const int  max_exponent =3D __base::max_exponent;
-    static const int  max_exponent10 =3D __base::max_exponent10;
+    static _LIBCPP_CONSTEXPR const int  min_exponent =3D __base::min_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  min_exponent10 =3D __base::min_exp=
onent10;
+    static _LIBCPP_CONSTEXPR const int  max_exponent =3D __base::max_expon=
ent;
+    static _LIBCPP_CONSTEXPR const int  max_exponent10 =3D __base::max_exp=
onent10;
=20
-    static const bool has_infinity =3D __base::has_infinity;
-    static const bool has_quiet_NaN =3D __base::has_quiet_NaN;
-    static const bool has_signaling_NaN =3D __base::has_signaling_NaN;
-    static const float_denorm_style has_denorm =3D __base::has_denorm;
-    static const bool has_denorm_loss =3D __base::has_denorm_loss;
-    _LIBCPP_INLINE_VISIBILITY static type infinity() _NOEXCEPT {return __b=
ase::infinity();}
-    _LIBCPP_INLINE_VISIBILITY static type quiet_NaN() _NOEXCEPT {return __=
base::quiet_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type signaling_NaN() _NOEXCEPT {retur=
n __base::signaling_NaN();}
-    _LIBCPP_INLINE_VISIBILITY static type denorm_min() _NOEXCEPT {return _=
_base::denorm_min();}
+    static _LIBCPP_CONSTEXPR const bool has_infinity =3D __base::has_infin=
ity;
+    static _LIBCPP_CONSTEXPR const bool has_quiet_NaN =3D __base::has_quie=
t_NaN;
+    static _LIBCPP_CONSTEXPR const bool has_signaling_NaN =3D __base::has_=
signaling_NaN;
+    static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm =3D __bas=
e::has_denorm;
+    static _LIBCPP_CONSTEXPR const bool has_denorm_loss =3D __base::has_de=
norm_loss;
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NO=
EXCEPT {return __base::infinity();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _N=
OEXCEPT {return __base::quiet_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN(=
) _NOEXCEPT {return __base::signaling_NaN();}
+    _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _=
NOEXCEPT {return __base::denorm_min();}
=20
-    static const bool is_iec559 =3D __base::is_iec559;
-    static const bool is_bounded =3D __base::is_bounded;
-    static const bool is_modulo =3D __base::is_modulo;
+    static _LIBCPP_CONSTEXPR const bool is_iec559 =3D __base::is_iec559;
+    static _LIBCPP_CONSTEXPR const bool is_bounded =3D __base::is_bounded;
+    static _LIBCPP_CONSTEXPR const bool is_modulo =3D __base::is_modulo;
=20
-    static const bool traps =3D __base::traps;
-    static const bool tinyness_before =3D __base::tinyness_before;
-    static const float_round_style round_style =3D __base::round_style;
+    static _LIBCPP_CONSTEXPR const bool traps =3D __base::traps;
+    static _LIBCPP_CONSTEXPR const bool tinyness_before =3D __base::tinyne=
ss_before;
+    static _LIBCPP_CONSTEXPR const float_round_style round_style =3D __bas=
e::round_style;
 };
=20
 _LIBCPP_END_NAMESPACE_STD
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/memory
--- a/head/contrib/libc++/include/memory	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/memory	Wed Jul 25 16:21:35 2012 +0300
@@ -1685,39 +1685,21 @@
             ::new((void*)__p) _Tp();
         }
 # if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+
     template <class _A0>
         _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            !is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
+        void
         construct(pointer __p, _A0& __a0)
         {
             ::new((void*)__p) _Tp(__a0);
         }
     template <class _A0>
         _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            !is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
+        void
         construct(pointer __p, const _A0& __a0)
         {
             ::new((void*)__p) _Tp(__a0);
         }
-    template <class _A0>
-        _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
-        construct(pointer __p, _A0 __a0)
-        {
-            ::new((void*)__p) _Tp(_VSTD::move(__a0));
-        }
 # endif  // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
     template <class _A0, class _A1>
         _LIBCPP_INLINE_VISIBILITY
@@ -1793,39 +1775,21 @@
             ::new((void*)__p) _Tp();
         }
 # if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
+
     template <class _A0>
         _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            !is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
+        void
         construct(pointer __p, _A0& __a0)
         {
             ::new((void*)__p) _Tp(__a0);
         }
     template <class _A0>
         _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            !is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
+        void
         construct(pointer __p, const _A0& __a0)
         {
             ::new((void*)__p) _Tp(__a0);
         }
-    template <class _A0>
-        _LIBCPP_INLINE_VISIBILITY
-        typename enable_if
-        <
-            is_convertible<_A0, __rv<_A0> >::value,
-            void
-        >::type
-        construct(pointer __p, _A0 __a0)
-        {
-            ::new((void*)__p) _Tp(_VSTD::move(__a0));
-        }
 # endif  // defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
     template <class _A0, class _A1>
         _LIBCPP_INLINE_VISIBILITY
@@ -3086,6 +3050,18 @@
     return !(nullptr < __x);
 }
=20
+#ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES
+
+template <class _Tp, class _Dp>
+inline _LIBCPP_INLINE_VISIBILITY
+unique_ptr<_Tp, _Dp>
+move(unique_ptr<_Tp, _Dp>& __t)
+{
+    return unique_ptr<_Tp, _Dp>(__rv<unique_ptr<_Tp, _Dp> >(__t));
+}
+
+#endif
+
 template <class _Tp> struct hash;
=20
 // We use murmur2 when size_t is 32 bits, and cityhash64 when size_t
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/random
--- a/head/contrib/libc++/include/random	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/random	Wed Jul 25 16:21:35 2012 +0300
@@ -1659,7 +1659,7 @@
 template <class _Sseq, class _Engine>
 struct __is_seed_sequence
 {
-    static const bool value =3D
+    static _LIBCPP_CONSTEXPR const bool value =3D
               !is_convertible<_Sseq, typename _Engine::result_type>::value=
 &&
               !is_same<typename remove_cv<_Sseq>::type, _Engine>::value;
 };
@@ -1837,24 +1837,24 @@
 private:
     result_type __x_;
=20
-    static const result_type _Mp =3D result_type(~0);
+    static _LIBCPP_CONSTEXPR const result_type _Mp =3D result_type(~0);
=20
     static_assert(__m =3D=3D 0 || __a < __m, "linear_congruential_engine i=
nvalid parameters");
     static_assert(__m =3D=3D 0 || __c < __m, "linear_congruential_engine i=
nvalid parameters");
 public:
-    static const result_type _Min =3D __c =3D=3D 0u ? 1u: 0u;
-    static const result_type _Max =3D __m - 1u;
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D __c =3D=3D 0u ? 1u=
: 0u;
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D __m - 1u;
     static_assert(_Min < _Max,           "linear_congruential_engine inval=
id parameters");
=20
     // engine characteristics
-    static const/*expr*/ result_type multiplier =3D __a;
-    static const/*expr*/ result_type increment =3D __c;
-    static const/*expr*/ result_type modulus =3D __m;
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() {return _Min;}
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() {return _Max;}
-    static const/*expr*/ result_type default_seed =3D 1u;
+    static _LIBCPP_CONSTEXPR const result_type multiplier =3D __a;
+    static _LIBCPP_CONSTEXPR const result_type increment =3D __c;
+    static _LIBCPP_CONSTEXPR const result_type modulus =3D __m;
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type min() {return _Min;}
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() {return _Max;}
+    static _LIBCPP_CONSTEXPR const result_type default_seed =3D 1u;
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -2074,7 +2074,7 @@
=20
     static_assert(  0 <  __m, "mersenne_twister_engine invalid parameters"=
);
     static_assert(__m <=3D __n, "mersenne_twister_engine invalid parameter=
s");
-    static const result_type _Dt =3D numeric_limits<result_type>::digits;
+    static _LIBCPP_CONSTEXPR const result_type _Dt =3D numeric_limits<resu=
lt_type>::digits;
     static_assert(__w <=3D _Dt, "mersenne_twister_engine invalid parameter=
s");
     static_assert(  2 <=3D __w, "mersenne_twister_engine invalid parameter=
s");
     static_assert(__r <=3D __w, "mersenne_twister_engine invalid parameter=
s");
@@ -2083,9 +2083,9 @@
     static_assert(__t <=3D __w, "mersenne_twister_engine invalid parameter=
s");
     static_assert(__l <=3D __w, "mersenne_twister_engine invalid parameter=
s");
 public:
-    static const result_type _Min =3D 0;
-    static const result_type _Max =3D __w =3D=3D _Dt ? result_type(~0) :
-                                   (result_type(1) << __w) - result_type(1=
);
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D 0;
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D __w =3D=3D _Dt ? r=
esult_type(~0) :
+                                                      (result_type(1) << _=
_w) - result_type(1);
     static_assert(_Min < _Max, "mersenne_twister_engine invalid parameters=
");
     static_assert(__a <=3D _Max, "mersenne_twister_engine invalid paramete=
rs");
     static_assert(__b <=3D _Max, "mersenne_twister_engine invalid paramete=
rs");
@@ -2094,24 +2094,24 @@
     static_assert(__f <=3D _Max, "mersenne_twister_engine invalid paramete=
rs");
=20
     // engine characteristics
-    static const/*expr*/ size_t word_size =3D __w;
-    static const/*expr*/ size_t state_size =3D __n;
-    static const/*expr*/ size_t shift_size =3D __m;
-    static const/*expr*/ size_t mask_bits =3D __r;
-    static const/*expr*/ result_type xor_mask =3D __a;
-    static const/*expr*/ size_t tempering_u =3D __u;
-    static const/*expr*/ result_type tempering_d =3D __d;
-    static const/*expr*/ size_t tempering_s =3D __s;
-    static const/*expr*/ result_type tempering_b =3D __b;
-    static const/*expr*/ size_t tempering_t =3D __t;
-    static const/*expr*/ result_type tempering_c =3D __c;
-    static const/*expr*/ size_t tempering_l =3D __l;
-    static const/*expr*/ result_type initialization_multiplier =3D __f;
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() { return _Min; }
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() { return _Max; }
-    static const/*expr*/ result_type default_seed =3D 5489u;
+    static _LIBCPP_CONSTEXPR const size_t word_size =3D __w;
+    static _LIBCPP_CONSTEXPR const size_t state_size =3D __n;
+    static _LIBCPP_CONSTEXPR const size_t shift_size =3D __m;
+    static _LIBCPP_CONSTEXPR const size_t mask_bits =3D __r;
+    static _LIBCPP_CONSTEXPR const result_type xor_mask =3D __a;
+    static _LIBCPP_CONSTEXPR const size_t tempering_u =3D __u;
+    static _LIBCPP_CONSTEXPR const result_type tempering_d =3D __d;
+    static _LIBCPP_CONSTEXPR const size_t tempering_s =3D __s;
+    static _LIBCPP_CONSTEXPR const result_type tempering_b =3D __b;
+    static _LIBCPP_CONSTEXPR const size_t tempering_t =3D __t;
+    static _LIBCPP_CONSTEXPR const result_type tempering_c =3D __c;
+    static _LIBCPP_CONSTEXPR const size_t tempering_l =3D __l;
+    static _LIBCPP_CONSTEXPR const result_type initialization_multiplier =
=3D __f;
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type min() { return _Min; }
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Max; }
+    static _LIBCPP_CONSTEXPR const result_type default_seed =3D 5489u;
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -2462,26 +2462,26 @@
     result_type  __c_;
     size_t      __i_;
=20
-    static const result_type _Dt =3D numeric_limits<result_type>::digits;
+    static _LIBCPP_CONSTEXPR const result_type _Dt =3D numeric_limits<resu=
lt_type>::digits;
     static_assert(  0 <  __w, "subtract_with_carry_engine invalid paramete=
rs");
     static_assert(__w <=3D _Dt, "subtract_with_carry_engine invalid parame=
ters");
     static_assert(  0 <  __s, "subtract_with_carry_engine invalid paramete=
rs");
     static_assert(__s <  __r, "subtract_with_carry_engine invalid paramete=
rs");
 public:
-    static const result_type _Min =3D 0;
-    static const result_type _Max =3D __w =3D=3D _Dt ? result_type(~0) :
-                                   (result_type(1) << __w) - result_type(1=
);
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D 0;
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D __w =3D=3D _Dt ? r=
esult_type(~0) :
+                                                      (result_type(1) << _=
_w) - result_type(1);
     static_assert(_Min < _Max, "subtract_with_carry_engine invalid paramet=
ers");
=20
     // engine characteristics
-    static const/*expr*/ size_t word_size =3D __w;
-    static const/*expr*/ size_t short_lag =3D __s;
-    static const/*expr*/ size_t long_lag =3D __r;
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() { return _Min; }
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() { return _Max; }
-    static const/*expr*/ result_type default_seed =3D 19780503u;
+    static _LIBCPP_CONSTEXPR const size_t word_size =3D __w;
+    static _LIBCPP_CONSTEXPR const size_t short_lag =3D __s;
+    static _LIBCPP_CONSTEXPR const size_t long_lag =3D __r;
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type min() { return _Min; }
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Max; }
+    static _LIBCPP_CONSTEXPR const result_type default_seed =3D 19780503u;
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -2733,17 +2733,21 @@
     typedef typename _Engine::result_type result_type;
=20
     // engine characteristics
-    static const/*expr*/ size_t block_size =3D __p;
-    static const/*expr*/ size_t used_block =3D __r;
-
-    // Temporary work around for lack of constexpr
+    static _LIBCPP_CONSTEXPR const size_t block_size =3D __p;
+    static _LIBCPP_CONSTEXPR const size_t used_block =3D __r;
+
+#ifdef _LIBCPP_HAS_NO_CONSTEXPR
     static const result_type _Min =3D _Engine::_Min;
     static const result_type _Max =3D _Engine::_Max;
-
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() { return _Engine::min(); }
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() { return _Engine::max(); }
+#else
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D _Engine::min();
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D _Engine::max();
+#endif
+
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type min() { return _Engine::min(); }
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Engine::max(); }
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -2889,12 +2893,12 @@
     template <class _UI, _UI _R0, size_t _Wp, size_t _Mp>
     class __get_n
     {
-        static const size_t _Dt =3D numeric_limits<_UI>::digits;
-        static const size_t _Np =3D _Wp / _Mp + (_Wp % _Mp !=3D 0);
-        static const size_t _W0 =3D _Wp / _Np;
-        static const _UI _Y0 =3D _W0 >=3D _Dt ? 0 : (_R0 >> _W0) << _W0;
+        static _LIBCPP_CONSTEXPR const size_t _Dt =3D numeric_limits<_UI>:=
:digits;
+        static _LIBCPP_CONSTEXPR const size_t _Np =3D _Wp / _Mp + (_Wp % _=
Mp !=3D 0);
+        static _LIBCPP_CONSTEXPR const size_t _W0 =3D _Wp / _Np;
+        static _LIBCPP_CONSTEXPR const _UI _Y0 =3D _W0 >=3D _Dt ? 0 : (_R0=
 >> _W0) << _W0;
     public:
-        static const size_t value =3D _R0 - _Y0 > _Y0 / _Np ? _Np + 1 : _N=
p;
+        static _LIBCPP_CONSTEXPR const size_t value =3D _R0 - _Y0 > _Y0 / =
_Np ? _Np + 1 : _Np;
     };
 public:
     // types
@@ -2903,7 +2907,7 @@
 private:
     _Engine __e_;
=20
-    static const result_type _Dt =3D numeric_limits<result_type>::digits;
+    static _LIBCPP_CONSTEXPR const result_type _Dt =3D numeric_limits<resu=
lt_type>::digits;
     static_assert(  0 <  __w, "independent_bits_engine invalid parameters"=
);
     static_assert(__w <=3D _Dt, "independent_bits_engine invalid parameter=
s");
=20
@@ -2914,36 +2918,40 @@
                 result_type,
                 _Engine_result_type
         >::type _Working_result_type;
-    // Temporary work around for lack of constexpr
+#ifdef _LIBCPP_HAS_NO_CONSTEXPR
     static const _Working_result_type _Rp =3D _Engine::_Max - _Engine::_Min
-                                                         + _Working_result=
_type(1);
-    static const size_t __m =3D __log2<_Working_result_type, _Rp>::value;
-    static const size_t __n =3D __get_n<_Working_result_type, _Rp, __w, __=
m>::value;
-    static const size_t __w0 =3D __w / __n;
-    static const size_t __n0 =3D __n - __w % __n;
-    static const size_t _WDt =3D numeric_limits<_Working_result_type>::dig=
its;
-    static const size_t _EDt =3D numeric_limits<_Engine_result_type>::digi=
ts;
-    static const _Working_result_type __y0 =3D __w0 >=3D _WDt ? 0 :
-                                                   (_Rp >> __w0) << __w0;
-    static const _Working_result_type __y1 =3D __w0 >=3D _WDt - 1 ? 0 :
-                                                   (_Rp >> (__w0+1)) << (_=
_w0+1);
-    static const _Engine_result_type __mask0 =3D __w0 > 0 ?
+                                          + _Working_result_type(1);
+#else
+    static _LIBCPP_CONSTEXPR const _Working_result_type _Rp =3D _Engine::m=
ax() - _Engine::min()
+                                                            + _Working_res=
ult_type(1);
+#endif
+    static _LIBCPP_CONSTEXPR const size_t __m =3D __log2<_Working_result_t=
ype, _Rp>::value;
+    static _LIBCPP_CONSTEXPR const size_t __n =3D __get_n<_Working_result_=
type, _Rp, __w, __m>::value;
+    static _LIBCPP_CONSTEXPR const size_t __w0 =3D __w / __n;
+    static _LIBCPP_CONSTEXPR const size_t __n0 =3D __n - __w % __n;
+    static _LIBCPP_CONSTEXPR const size_t _WDt =3D numeric_limits<_Working=
_result_type>::digits;
+    static _LIBCPP_CONSTEXPR const size_t _EDt =3D numeric_limits<_Engine_=
result_type>::digits;
+    static _LIBCPP_CONSTEXPR const _Working_result_type __y0 =3D __w0 >=3D=
 _WDt ? 0 :
+                                                               (_Rp >> __w=
0) << __w0;
+    static _LIBCPP_CONSTEXPR const _Working_result_type __y1 =3D __w0 >=3D=
 _WDt - 1 ? 0 :
+                                                               (_Rp >> (__=
w0+1)) << (__w0+1);
+    static _LIBCPP_CONSTEXPR const _Engine_result_type __mask0 =3D __w0 > =
0 ?
                                 _Engine_result_type(~0) >> (_EDt - __w0) :
                                 _Engine_result_type(0);
-    static const _Engine_result_type __mask1 =3D __w0 < _EDt - 1 ?
+    static _LIBCPP_CONSTEXPR const _Engine_result_type __mask1 =3D __w0 < =
_EDt - 1 ?
                                 _Engine_result_type(~0) >> (_EDt - (__w0 +=
 1)) :
                                 _Engine_result_type(~0);
 public:
-    static const result_type _Min =3D 0;
-    static const result_type _Max =3D __w =3D=3D _Dt ? result_type(~0) :
-                                   (result_type(1) << __w) - result_type(1=
);
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D 0;
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D __w =3D=3D _Dt ? r=
esult_type(~0) :
+                                                      (result_type(1) << _=
_w) - result_type(1);
     static_assert(_Min < _Max, "independent_bits_engine invalid parameters=
");
=20
     // engine characteristics
     _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() { return _Min; }
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() { return _Max; }
+    static _LIBCPP_CONSTEXPR result_type min() { return _Min; }
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Max; }
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -3121,23 +3129,23 @@
 template <uint64_t _Xp, uint64_t _Yp>
 struct __ugcd
 {
-    static const uint64_t value =3D __ugcd<_Yp, _Xp % _Yp>::value;
+    static _LIBCPP_CONSTEXPR const uint64_t value =3D __ugcd<_Yp, _Xp % _Y=
p>::value;
 };
=20
 template <uint64_t _Xp>
 struct __ugcd<_Xp, 0>
 {
-    static const uint64_t value =3D _Xp;
+    static _LIBCPP_CONSTEXPR const uint64_t value =3D _Xp;
 };
=20
 template <uint64_t _Np, uint64_t _Dp>
 class __uratio
 {
     static_assert(_Dp !=3D 0, "__uratio divide by 0");
-    static const uint64_t __gcd =3D __ugcd<_Np, _Dp>::value;
+    static _LIBCPP_CONSTEXPR const uint64_t __gcd =3D __ugcd<_Np, _Dp>::va=
lue;
 public:
-    static const uint64_t num =3D _Np / __gcd;
-    static const uint64_t den =3D _Dp / __gcd;
+    static _LIBCPP_CONSTEXPR const uint64_t num =3D _Np / __gcd;
+    static _LIBCPP_CONSTEXPR const uint64_t den =3D _Dp / __gcd;
=20
     typedef __uratio<num, den> type;
 };
@@ -3157,17 +3165,22 @@
=20
 public:
     // engine characteristics
-    static const/*expr*/ size_t table_size =3D __k;
-
+    static _LIBCPP_CONSTEXPR const size_t table_size =3D __k;
+
+#ifdef _LIBCPP_HAS_NO_CONSTEXPR
     static const result_type _Min =3D _Engine::_Min;
     static const result_type _Max =3D _Engine::_Max;
+#else
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D _Engine::min();
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D _Engine::max();
+#endif
     static_assert(_Min < _Max, "shuffle_order_engine invalid parameters");
     _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type min() { return _Min; }
-    _LIBCPP_INLINE_VISIBILITY
-    static const/*expr*/ result_type max() { return _Max; }
-
-    static const unsigned long long _Rp =3D _Max - _Min + 1ull;
+    static _LIBCPP_CONSTEXPR result_type min() { return _Min; }
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Max; }
+
+    static _LIBCPP_CONSTEXPR const unsigned long long _Rp =3D _Max - _Min =
+ 1ull;
=20
     // constructors and seeding functions
     _LIBCPP_INLINE_VISIBILITY
@@ -3370,13 +3383,13 @@
     typedef unsigned result_type;
=20
     // generator characteristics
-    static const result_type _Min =3D 0;
-    static const result_type _Max =3D 0xFFFFFFFFu;
-
-    _LIBCPP_INLINE_VISIBILITY
-    static constexpr result_type min() { return _Min;}
-    _LIBCPP_INLINE_VISIBILITY
-    static constexpr result_type max() { return _Max;}
+    static _LIBCPP_CONSTEXPR const result_type _Min =3D 0;
+    static _LIBCPP_CONSTEXPR const result_type _Max =3D 0xFFFFFFFFu;
+
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type min() { return _Min;}
+    _LIBCPP_INLINE_VISIBILITY
+    static _LIBCPP_CONSTEXPR result_type max() { return _Max;}
=20
     // constructors
     explicit random_device(const string& __token =3D "/dev/urandom");
@@ -3522,13 +3535,17 @@
 {
     const size_t _Dt =3D numeric_limits<_RealType>::digits;
     const size_t __b =3D _Dt < __bits ? _Dt : __bits;
+#ifdef _LIBCPP_HAS_NO_CONSTEXPR
     const size_t __logR =3D __log2<uint64_t, _URNG::_Max - _URNG::_Min + u=
int64_t(1)>::value;
+#else
+    const size_t __logR =3D __log2<uint64_t, _URNG::max() - _URNG::min() +=
 uint64_t(1)>::value;
+#endif
     const size_t __k =3D __b / __logR + (__b % __logR !=3D 0) + (__b =3D=
=3D 0);
-    const _RealType _Rp =3D _URNG::_Max - _URNG::_Min + _RealType(1);
+    const _RealType _Rp =3D _URNG::max() - _URNG::min() + _RealType(1);
     _RealType __base =3D _Rp;
-    _RealType _Sp =3D __g() - _URNG::_Min;
+    _RealType _Sp =3D __g() - _URNG::min();
     for (size_t __i =3D 1; __i < __k; ++__i, __base *=3D _Rp)
-        _Sp +=3D (__g() - _URNG::_Min) * __base;
+        _Sp +=3D (__g() - _URNG::min()) * __base;
     return _Sp / __base;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/system_err=
or
--- a/head/contrib/libc++/include/system_error	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/libc++/include/system_error	Wed Jul 25 16:21:35 2012 +03=
00
@@ -366,8 +366,8 @@
 public:
     virtual ~error_category() _NOEXCEPT;
=20
+    error_category() _NOEXCEPT;
 private:
-    error_category() _NOEXCEPT;
     error_category(const error_category&);// =3D delete;
     error_category& operator=3D(const error_category&);// =3D delete;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/tuple
--- a/head/contrib/libc++/include/tuple	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/tuple	Wed Jul 25 16:21:35 2012 +0300
@@ -552,7 +552,7 @@
                ) {}
=20
     template <class ..._Up,
-              class =3D typename enable_if
+              typename enable_if
                       <
                          sizeof...(_Up) <=3D sizeof...(_Tp) &&
                          __tuple_convertible
@@ -562,8 +562,40 @@
                                      sizeof...(_Up) < sizeof...(_Tp) ?
                                         sizeof...(_Up) :
                                         sizeof...(_Tp)>::type
-                         >::value
-                      >::type
+                         >::value,
+                         bool
+                      >::type =3D false
+             >
+        _LIBCPP_INLINE_VISIBILITY
+        tuple(_Up&&... __u)
+            : base_(typename __make_tuple_indices<sizeof...(_Up)>::type(),
+                    typename __make_tuple_types<tuple, sizeof...(_Up)>::ty=
pe(),
+                    typename __make_tuple_indices<sizeof...(_Tp), sizeof..=
.(_Up)>::type(),
+                    typename __make_tuple_types<tuple, sizeof...(_Tp), siz=
eof...(_Up)>::type(),
+                    _VSTD::forward<_Up>(__u)...) {}
+
+    template <class ..._Up,
+              typename enable_if
+                      <
+                         sizeof...(_Up) <=3D sizeof...(_Tp) &&
+                         __tuple_constructible
+                         <
+                            tuple<_Up...>,
+                            typename __make_tuple_types<tuple,
+                                     sizeof...(_Up) < sizeof...(_Tp) ?
+                                        sizeof...(_Up) :
+                                        sizeof...(_Tp)>::type
+                         >::value &&
+                         !__tuple_convertible
+                         <
+                            tuple<_Up...>,
+                            typename __make_tuple_types<tuple,
+                                     sizeof...(_Up) < sizeof...(_Tp) ?
+                                        sizeof...(_Up) :
+                                        sizeof...(_Tp)>::type
+                         >::value,
+                         bool
+                      >::type =3Dfalse
              >
         _LIBCPP_INLINE_VISIBILITY
         explicit
@@ -598,15 +630,29 @@
                     _VSTD::forward<_Up>(__u)...) {}
=20
     template <class _Tuple,
-              class =3D typename enable_if
+              typename enable_if
                       <
-                         __tuple_convertible<_Tuple, tuple>::value
-                      >::type
+                         __tuple_convertible<_Tuple, tuple>::value,
+                         bool
+                      >::type =3D false
              >
         _LIBCPP_INLINE_VISIBILITY
         tuple(_Tuple&& __t)
             : base_(_VSTD::forward<_Tuple>(__t)) {}
=20
+    template <class _Tuple,
+              typename enable_if
+                      <
+                         __tuple_constructible<_Tuple, tuple>::value &&
+                         !__tuple_convertible<_Tuple, tuple>::value,
+                         bool
+                      >::type =3D false
+             >
+        _LIBCPP_INLINE_VISIBILITY
+        explicit
+        tuple(_Tuple&& __t)
+            : base_(_VSTD::forward<_Tuple>(__t)) {}
+
     template <class _Alloc, class _Tuple,
               class =3D typename enable_if
                       <
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/type_traits
--- a/head/contrib/libc++/include/type_traits	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/type_traits	Wed Jul 25 16:21:35 2012 +0300
@@ -163,22 +163,15 @@
 template <class _Tp, _Tp __v>
 struct _LIBCPP_VISIBLE integral_constant
 {
-    static constexpr _Tp      value =3D __v;
+    static _LIBCPP_CONSTEXPR const _Tp      value =3D __v;
     typedef _Tp               value_type;
     typedef integral_constant type;
     _LIBCPP_INLINE_VISIBILITY
-#ifndef _LIBCPP_HAS_NO_CONSTEXPR
-    constexpr
-#endif
-         operator value_type()
-#ifdef _LIBCPP_HAS_NO_CONSTEXPR
-                               const
-#endif
-                                     {return value;}
+        _LIBCPP_CONSTEXPR operator value_type() const {return value;}
 };
=20
 template <class _Tp, _Tp __v>
-constexpr _Tp integral_constant<_Tp, __v>::value;
+_LIBCPP_CONSTEXPR const _Tp integral_constant<_Tp, __v>::value;
=20
 typedef integral_constant<bool, true>  true_type;
 typedef integral_constant<bool, false> false_type;
@@ -1305,6 +1298,31 @@
 #else  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
=20
 template <class _Tp>
+inline _LIBCPP_INLINE_VISIBILITY
+_Tp&
+move(_Tp& __t)
+{
+    return __t;
+}
+
+template <class _Tp>
+inline _LIBCPP_INLINE_VISIBILITY
+const _Tp&
+move(const _Tp& __t)
+{
+    return __t;
+}
+
+template <class _Tp>
+inline _LIBCPP_INLINE_VISIBILITY
+_Tp&
+forward(typename std::remove_reference<_Tp>::type& __t) _NOEXCEPT
+{
+    return __t;
+}
+
+
+template <class _Tp>
 class __rv
 {
     typedef typename remove_reference<_Tp>::type _Trr;
@@ -1316,90 +1334,6 @@
     explicit __rv(_Trr& __t) : t_(__t) {}
 };
=20
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    !is_convertible<_Tp, __rv<_Tp> >::value,
-    _Tp&
->::type
-move(_Tp& __t)
-{
-    return __t;
-}
-
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    !is_convertible<_Tp, __rv<_Tp> >::value,
-    const _Tp&
->::type
-move(const _Tp& __t)
-{
-    return __t;
-}
-
-template <class _Tp>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    is_convertible<_Tp, __rv<_Tp> >::value,
-    _Tp
->::type
-move(_Tp& __t)
-{
-    return _Tp(__rv<_Tp>(__t));
-}
-
-template <class _Tp, class _Up>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    !is_convertible<_Tp, __rv<_Tp> >::value,
-    typename add_lvalue_reference<_Tp>::type
->::type
-forward(_Up& __t)
-{
-    return __t;
-}
-
-template <class _Tp, class _Up>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    !is_convertible<_Tp, __rv<_Tp> >::value,
-    typename add_lvalue_reference<_Tp>::type
->::type
-forward(const _Up& __t)
-{
-    return __t;
-}
-
-template <class _Tp, class _Up>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    is_convertible<_Tp, __rv<_Tp> >::value,
-    _Tp
->::type
-forward(_Up& __t)
-{
-    return _Tp(__rv<_Tp>(__t));
-}
-
-template <class _Tp, class _Up>
-inline _LIBCPP_INLINE_VISIBILITY
-typename enable_if
-<
-    is_convertible<_Tp, __rv<_Tp> >::value,
-    _Tp
->::type
-forward(const _Up& __t)
-{
-    return _Tp(__rv<_Tp>(__t));
-}
-
 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
=20
 template <class _Tp>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/include/utility
--- a/head/contrib/libc++/include/utility	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/include/utility	Wed Jul 25 16:21:35 2012 +0300
@@ -206,8 +206,11 @@
 }
=20
 struct _LIBCPP_VISIBLE piecewise_construct_t { };
-//constexpr
+#if defined(_LIBCPP_HAS_NO_CONSTEXPR) || defined(_LIBCPP_BUILDING_UTILITY)
 extern const piecewise_construct_t piecewise_construct;// =3D piecewise_co=
nstruct_t();
+#else
+constexpr piecewise_construct_t piecewise_construct =3D piecewise_construc=
t_t();
+#endif
=20
 template <class _T1, class _T2>
 struct _LIBCPP_VISIBLE pair
@@ -221,7 +224,7 @@
     // pair(const pair&) =3D default;
     // pair(pair&&) =3D default;
=20
-    _LIBCPP_INLINE_VISIBILITY pair() : first(), second() {}
+    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR pair() : first(), second()=
 {}
=20
     _LIBCPP_INLINE_VISIBILITY pair(const _T1& __x, const _T2& __y)
         : first(__x), second(__y) {}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/src/iostream.cpp
--- a/head/contrib/libc++/src/iostream.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/src/iostream.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -9,45 +9,58 @@
=20
 #include "__std_stream"
 #include "string"
+#include "new"
=20
 _LIBCPP_BEGIN_NAMESPACE_STD
=20
-static __stdinbuf<char>  __cin(stdin);
-static __stdoutbuf<char> __cout(stdout);
-static __stdoutbuf<char> __cerr(stderr);
-static __stdinbuf<wchar_t>  __wcin(stdin);
-static __stdoutbuf<wchar_t> __wcout(stdout);
-static __stdoutbuf<wchar_t> __wcerr(stderr);
+alignas (__stdinbuf<char> ) static char __cin [sizeof(__stdinbuf <char>)];
+alignas (__stdoutbuf<char>) static char __cout[sizeof(__stdoutbuf<char>)];
+alignas (__stdoutbuf<char>) static char __cerr[sizeof(__stdoutbuf<char>)];
+alignas (__stdinbuf<wchar_t> ) static char __wcin [sizeof(__stdinbuf <wcha=
r_t>)];
+alignas (__stdoutbuf<wchar_t>) static char __wcout[sizeof(__stdoutbuf<wcha=
r_t>)];
+alignas (__stdoutbuf<wchar_t>) static char __wcerr[sizeof(__stdoutbuf<wcha=
r_t>)];
=20
-istream cin(&__cin);
-ostream cout(&__cout);
-ostream cerr(&__cerr);
-ostream clog(&__cerr);
-wistream wcin(&__wcin);
-wostream wcout(&__wcout);
-wostream wcerr(&__wcerr);
-wostream wclog(&__wcerr);
+alignas (istream) char cin [sizeof(istream)];
+alignas (ostream) char cout[sizeof(ostream)];
+alignas (ostream) char cerr[sizeof(ostream)];
+alignas (ostream) char clog[sizeof(ostream)];
+alignas (wistream) char wcin [sizeof(wistream)];
+alignas (wostream) char wcout[sizeof(wostream)];
+alignas (wostream) char wcerr[sizeof(wostream)];
+alignas (wostream) char wclog[sizeof(wostream)];
=20
 ios_base::Init __start_std_streams;
=20
 ios_base::Init::Init()
 {
-    cin.tie(&cout);
-    _VSTD::unitbuf(cerr);
-    cerr.tie(&cout);
+    istream* cin_ptr  =3D ::new(cin)  istream(::new(__cin)  __stdinbuf <ch=
ar>(stdin) );
+    ostream* cout_ptr =3D ::new(cout) ostream(::new(__cout) __stdoutbuf<ch=
ar>(stdout));
+    ostream* cerr_ptr =3D ::new(cerr) ostream(::new(__cerr) __stdoutbuf<ch=
ar>(stderr));
+                        ::new(clog) ostream(cerr_ptr->rdbuf());
+    cin_ptr->tie(cout_ptr);
+    _VSTD::unitbuf(*cerr_ptr);
+    cerr_ptr->tie(cout_ptr);
=20
-    wcin.tie(&wcout);
-    _VSTD::unitbuf(wcerr);
-    wcerr.tie(&wcout);
+    wistream* wcin_ptr  =3D ::new(wcin)  wistream(::new(__wcin)  __stdinbu=
f <wchar_t>(stdin) );
+    wostream* wcout_ptr =3D ::new(wcout) wostream(::new(__wcout) __stdoutb=
uf<wchar_t>(stdout));
+    wostream* wcerr_ptr =3D ::new(wcerr) wostream(::new(__wcerr) __stdoutb=
uf<wchar_t>(stderr));
+                          ::new(wclog) wostream(wcerr_ptr->rdbuf());
+    wcin_ptr->tie(wcout_ptr);
+    _VSTD::unitbuf(*wcerr_ptr);
+    wcerr_ptr->tie(wcout_ptr);
 }
=20
 ios_base::Init::~Init()
 {
-    cout.flush();
-    clog.flush();
+    ostream* cout_ptr =3D (ostream*)cout;
+    ostream* clog_ptr =3D (ostream*)clog;
+    cout_ptr->flush();
+    clog_ptr->flush();
=20
-    wcout.flush();
-    wclog.flush();
+    wostream* wcout_ptr =3D (wostream*)wcout;
+    wostream* wclog_ptr =3D (wostream*)wclog;
+    wcout_ptr->flush();
+    wclog_ptr->flush();
 }
=20
 _LIBCPP_END_NAMESPACE_STD
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/src/stdexcept.cpp
--- a/head/contrib/libc++/src/stdexcept.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/src/stdexcept.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -15,7 +15,11 @@
 #include <cstdint>
 #include <cstddef>
 #include "system_error"
+
+// Use <cxxabi.h> to determine whether we're linking against libc++abi.
+#if __has_include(<cxxabi.h>)
 #include <cxxabi.h>
+#endif
=20
 // Note:  optimize for size
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libc++/src/utility.cpp
--- a/head/contrib/libc++/src/utility.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libc++/src/utility.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -7,6 +7,7 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
+#define _LIBCPP_BUILDING_UTILITY
 #include "utility"
=20
 _LIBCPP_BEGIN_NAMESPACE_STD
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/CHANGES
--- a/head/contrib/libpcap/CHANGES	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/CHANGES	Wed Jul 25 16:21:35 2012 +0300
@@ -1,3 +1,77 @@
+Friday  December 9, 2011.  guy at alum.mit.edu.
+Summary for 1.2.1 libpcap release
+	Update README file.
+	Fix typoes in README.linux file.
+	Clean up some compiler warnings.
+	Fix Linux compile problems and tests for ethtool.h.
+	Treat Debian/kFreeBSD and GNU/Hurd as systems with GNU
+	 toolchains.
+	Support 802.1 QinQ as a form of VLAN in filters.
+	Treat "carp" as equivalent to "vrrp" in filters.
+	Fix code generated for "ip6 protochain".
+	Add some new link-layer header types.
+	Support capturing NetFilter log messages on Linux.
+	Clean up some error messages.
+	Turn off monitor mode on exit for mac80211 interfaces on Linux.
+	Fix problems turning monitor mode on for non-mac80211 interfaces
+	 on Linux.
+	Properly fail if /sys/class/net or /proc/net/dev exist but can't
+	 be opened.
+	Fail if pcap_activate() is called on an already-activated
+	 pcap_t, and add a test program for that.
+	Fix filtering in pcap-ng files.
+	Don't build for PowerPC on Mac OS X Lion.
+	Simplify handling of new DLT_/LINKTYPE_ values.
+	Expand pcap(3PCAP) man page.
+
+Sunday  July 24, 2011.  mcr at sandelman.ca.
+Summary for 1.2 libpcap release
+        All of the changes listed below for 1.1.1 and 1.1.2.
+        Changes to error handling for pcap_findalldevs().
+        Fix the calculation of the frame size in memory-mapped captures.
+        Add a link-layer header type for STANAG 5066 D_PDUs.
+        Add a link-layer type for a variant of 3GPP TS 27.010.
+        Noted real nature of LINKTYPE_ARCNET.
+        Add a link-layer type for DVB-CI.
+        Fix configure-script discovery of VLAN acceleration support.
+         see http://netoptimizer.blogspot.com/2010/09/tcpdump-vs-vlan-tags=
.html
+        Linux, HP-UX, AIX, NetBSD and OpenBSD compilation/conflict fixes.
+        Protect against including AIX 5.x's <net/bpf.h> having been includ=
ed.
+        Add DLT_DBUS, for raw D-Bus messages.
+        Treat either EPERM or EACCES as "no soup for you".
+        Changes to permissions on DLPI systems.
+        Add DLT_IEEE802_15_4_NOFCS for 802.15.4 interfaces.
+
+Fri.    August 6, 2010.  guy at alum.mit.edu.
+Summary for 1.1.2 libpcap release
+	Return DLT_ values, not raw LINKTYPE_ values from
+	  pcap_datalink() when reading pcap-ng files
+	Add support for "wlan ra" and "wlan ta", to check the RA and TA
+	  of WLAN frames that have them
+	Don't crash if "wlan addr{1,2,3,4}" are used without 802.11
+	  headers
+	Do filtering on USB and Bluetooth capturing
+	On FreeBSD/SPARC64, use -fPIC - it's apparently necessary
+	Check for valid port numbers (fit in a 16-bit unsigned field) in
+	  "port" filters
+	Reject attempts to put savefiles into non-blocking mode
+	Check for "no such device" for the "get the media types" ioctl
+	  in *BSD
+	Improve error messages from bpf_open(), and let it do the error
+	  handling
+	Return more specific errors from pcap_can_set_rfmon(); fix
+	  documentation
+	Update description fetching code for FreeBSD, fix code for
+	  OpenBSD
+	Ignore /sys/net/dev files if we get ENODEV for them, not just
+	  ENXIO; fixes handling of bonding devices on Linux
+	Fix check for a constant 0 argument to BPF_DIV
+	Use the right version of ar when cross-building
+	Free any filter set on a savefile when the savefile is closed
+	Include the CFLAGS setting when configure was run in the
+	  compiler flags
+	Add support for 802.15.4 interfaces on Linux
+
 Thu.    April 1, 2010.  guy at alum.mit.edu.
 Summary for 1.1.1 libpcap release
 	Update CHANGES to reflect more of the changes in 1.1.0.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/CREDITS
--- a/head/contrib/libpcap/CREDITS	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/CREDITS	Wed Jul 25 16:21:35 2012 +0300
@@ -1,145 +1,154 @@
 This file lists people who have contributed to libpcap:
=20
 The current maintainers:
-	Bill Fenner			<fenner at research dot att dot com>
-	Fulvio Risso			<risso at polito dot it>
-	Guy Harris	 		<guy at alum dot mit dot edu>
-	Hannes Gredler			<hannes at juniper dot net>
-	Michael Richardson	 	<mcr at sandelman dot ottawa dot on dot ca>
+    Bill Fenner                   <fenner at research dot att dot com>
+    Fulvio Risso                  <risso at polito dot it>
+    Guy Harris                    <guy at alum dot mit dot edu>
+    Hannes Gredler                <hannes at juniper dot net>
+    Michael Richardson            <mcr at sandelman dot ottawa dot on dot =
ca>
=20
 Additional people who have contributed patches:
=20
-	Alan Bawden			<Alan at LCS dot MIT dot EDU>
-	Albert Chin			<china at thewrittenword dot com>
-	Alexander 'Leo' Bergolth	<Leo dot Bergolth at wu-wien dot ac dot at>
-	Alexey Kuznetsov		<kuznet at ms2 dot inr dot ac dot ru>
-	Alon Bar-Lev			<alonbl at sourceforge dot net>
-	Andrew Brown			<atatat at atatdot dot net>
-	Antti Kantee			<pooka at netbsd dot org>
-	Arien Vijn			<arienvijn at sourceforge dot net>
-	Arkadiusz Miskiewicz		<misiek at pld dot org dot pl>
-	Armando L. Caro Jr.		<acaro at mail dot eecis dot udel dot edu>
-	Assar Westerlund	 	<assar at sics dot se>
-	Brian Ginsbach			<ginsbach at cray dot com>
-	Charles M. Hannum		<mycroft at netbsd dot org>
-	Chris G. Demetriou		<cgd at netbsd dot org>
-	Chris Lightfoot			<cwrl at users dot sourceforge dot net>
-	Chris Maynard			<Chris dot Maynard at gtech dot com>
-	Chris Pepper			<pepper at mail dot reppep dot com>
-	Christian Bell			<csbell at myri dot com>
-	Christian Peron			<csjp at freebsd dot org>
-	Daniele Orlandi			<daniele at orlandi dot com>
-	Darren Reed			<darrenr at sun dot com>
-	David Kaelbling			<drk at sgi dot com>
-	David Young			<dyoung at ojctech dot com>
-	Dean Gaudet			<dean at arctic dot org>
-	Don Ebright			<Don dot Ebright at compuware dot com>=20
-	Dug Song			<dugsong at monkey dot org>
-	Dustin Spicuzza			<dustin at virtualroadside dot com>
-	Eric Anderson			<anderse at hpl dot hp dot com>
-	Erik de Castro Lopo		<erik dot de dot castro dot lopo at sensorynetworks =
dot com>
-	Felix Obenhuber			<felix at obenhuber dot de>
-	Florent Drouin			<Florent dot Drouin at alcatel-lucent dot fr>
-	Franz Schaefer			<schaefer at mond dot at>
-	Fulko Hew			<fulko dot hew at gmail dot com>
-	Fumiyuki Shimizu		<fumifumi at abacustech dot jp>
-	Gianluca Varenni		<varenni at netgroup-serv dot polito dot it>
-	Gilbert Hoyek			<gil_hoyek at hotmail dot com>
-	Gisle Vanem			<gvanem at broadpark dot no>
-	Graeme Hewson			<ghewson at cix dot compulink dot co dot uk>
-	Greg Stark			<gsstark at mit dot edu>
-	Greg Troxel			<gdt at ir dot bbn dot com>
-	Gregor Maier			<gregor at net dot in dot tum dot de>
-	Guillaume Pelat			<endymion_ at users dot sourceforge dot net>
-	Hagen Paul Pfeifer		<hagen at jauu dot net>
-	Hyung Sik Yoon			<hsyn at kr dot ibm dot com>
-	Igor Khristophorov		<igor at atdot dot org>
-	Jan-Philip Velders		<jpv at veldersjes dot net>
-	Jason R. Thorpe			<thorpej at netbsd dot org>
-	Javier Achirica			<achirica at ttd dot net>
-	Jean Tourrilhes			<jt at hpl dot hp dot com>
-	Jean-Louis Charton		<Jean-Louis.CHARTON at oikialog dot com>
-	Jefferson Ogata			<jogata at nodc dot noaa dot gov>
-	Jesper Peterson			<jesper at endace dot com>
-	Joerg Mayer			<jmayer at loplof dot de>
-	John Bankier			<jbankier at rainfinity dot com>
-	Jon Lindgren			<jonl at yubyub dot net>
-	Jon Smirl			<jonsmirl at gmail dot com>
-	Juergen Schoenwaelder		<schoenw at ibr dot cs dot tu-bs dot de>
-	Jung-uk Kim			<jkim at FreeBSD dot org>
-	Kazushi Sugyo			<sugyo at pb dot jp dot nec dot com>
-	Klaus Klein			<kleink at netbsd dot org>
-	Koryn Grant			<koryn at endace dot com>
-	Kris Katterjohn			<katterjohn at gmail dot com>
-	Krzysztof Halasa		<khc at pm dot waw dot pl>
-	Lorenzo Cavallaro		<sullivan at sikurezza dot org>
-	Loris Degioanni			<loris at netgroup-serv dot polito dot it>
-	Love H=C3=B6rnquist-=C3=85strand		<lha at stacken dot kth dot se>
-	Luis Martin Garcia		<luis dot mgarc at gmail dot com>
-	Maciej W. Rozycki		<macro at ds2 dot pg dot gda dot pl>
-	Marcus Felipe Pereira		<marcus at task dot com dot br>
-	Mark C. Brown			<mbrown at hp dot com>
-	Mark Pizzolato			<List-tcpdump-workers at subscriptions dot pizzolato dot=
 net>
-	Markus Mayer			<markus_mayer at sourceforge dot net>
-	Martin Husemann			<martin at netbsd dot org>
-	M=C3=A1rton N=C3=A9meth			<nm127 at freemail dot hu>
-	Matthew Luckie			<mjl at luckie dot org dot nz>
-	Max Laier			<max at love2party dot net>
-	Mike Frysinger			<vapier at gmail dot com>
-	Mike Kershaw			<dragorn at kismetwireless dot net>
-	Mike Wiacek			<mike at iroot dot net>
-	Monroe Williams			<monroe at pobox dot com>
-	N. Leiten			<nleiten at sourceforge dot net>
-	Nicolas Dade			<ndade at nsd dot dyndns dot org>
-	Octavian Cerna			<tavy at ylabs dot com>
-	Olaf Kirch			<okir at caldera dot de>
-	Ollie Wild			<aaw at users dot sourceforge dot net>
-	Onno van der Linden		<onno at simplex dot nl>
-	Paolo Abeni			<paolo dot abeni at email dot it>
-	Patrick Marie			<mycroft at virgaria dot org>
-	Patrick McHardy			<kaber at trash not net>
-	Paul Mundt			<lethal at linux-sh dot org>
-	Pavel Kankovsky			<kan at dcit dot cz>
-	Pawel Pokrywka			<publicpp at gmail dot com>
-	Peter Fales			<peter at fales-lorenz dot net>
-	Peter Jeremy			<peter dot jeremy at alcatel dot com dot au>
-	Peter Volkov			<pva at gentoo dot org>
-	Phil Wood			<cpw at lanl dot gov>
-	Rafal Maszkowski		<rzm at icm dot edu dot pl>
-					<rcb-isis at users dot sourceforge dot net>
-	Richard Stearn			<richard at rns-stearn dot demon dot co dot uk>
-	Rick Jones			<raj at cup dot hp dot com>
-	Robert Edmonds			<stu-42 at sourceforge dot net>
-	Roberto Mariani			<jelot-tcpdump at jelot dot it>
-	Romain Francoise		<rfrancoise at debian dot org>
-	Sagun Shakya			<sagun dot shakya at sun dot com>
-	Scott Barron			<sb125499 at ohiou dot edu>
-	Scott Gifford			<sgifford at tir dot com>
-	Sebastian Krahmer		<krahmer at cs dot uni-potsdam dot de>
-	Sebastien Roy			<Sebastien dot Roy at Sun dot COM>
-	Sepherosa Ziehau		<sepherosa at gmail dot com>
-	Shaun Clowes			<delius at progsoc dot uts dot edu dot au>
-	Solomon Peachy			<pizza at shaftnet dot org>
-	Stefan Hudson			<hudson at mbay dot net>
-	Stephen Donnelly		<stephen at endace dot com>
-	Takashi Yamamoto		<yamt at mwd dot biglobe dot ne dot jp>
-	Tanaka Shin-ya			<zstanaka at archer dot livedoor dot com>
-	Tobias Poschwatta		<posch at sourceforge dot net>
-	Tony Li				<tli at procket dot com>
-	Torsten Landschoff	 	<torsten at debian dot org>
-	Uns Lider			<unslider at miranda dot org>
-	Uwe Girlich			<Uwe dot Girlich at philosys dot de>
-	Wesley Shields			<wxs at FreeBSD dot org>
-	Xianjie Zhang			<xzhang at cup dot hp dot com>
-	Xin Li				<delphij at FreeBSD dot org>
-	Yen Yen Lim
-	Yvan Vanhullebus		<vanhu at sourceforge dot net>
-	Yoann Vandoorselaere		<yoann at prelude-ids dot org>
+    Alan Bawden                   <Alan at LCS dot MIT dot EDU>
+    Albert Chin                   <china at thewrittenword dot com>
+    Alexander 'Leo' Bergolth      <Leo dot Bergolth at wu-wien dot ac dot =
at>
+    Alexey Kuznetsov              <kuznet at ms2 dot inr dot ac dot ru>
+    Alon Bar-Lev                  <alonbl at sourceforge dot net>
+    Andrew Brown                  <atatat at atatdot dot net>
+                                  <andy-1 at sourceforge dot net>
+    Antti Kantee                  <pooka at netbsd dot org>
+    Arien Vijn                    <arienvijn at sourceforge dot net>
+    Arkadiusz Miskiewicz          <misiek at pld dot org dot pl>
+    Armando L. Caro Jr.           <acaro at mail dot eecis dot udel dot ed=
u>
+    Assar Westerlund              <assar at sics dot se>
+    Brian Ginsbach                <ginsbach at cray dot com>
+    Charles M. Hannum             <mycroft at netbsd dot org>
+    Chris G. Demetriou            <cgd at netbsd dot org>
+    Chris Lightfoot               <cwrl at users dot sourceforge dot net>
+    Chris Maynard                 <Chris dot Maynard at gtech dot com>
+    Chris Pepper                  <pepper at mail dot reppep dot com>
+    Christian Bell                <csbell at myri dot com>
+    Christian Peron               <csjp at freebsd dot org>
+    Daniele Orlandi               <daniele at orlandi dot com>
+    Darren Reed                   <darrenr at sun dot com>
+    David Kaelbling               <drk at sgi dot com>
+    David Young                   <dyoung at ojctech dot com>
+    Dean Gaudet                   <dean at arctic dot org>
+    Don Ebright                   <Don dot Ebright at compuware dot com>=20
+    Dug Song                      <dugsong at monkey dot org>
+    Dustin Spicuzza               <dustin at virtualroadside dot com>
+    Eric Anderson                 <anderse at hpl dot hp dot com>
+    Erik de Castro Lopo           <erik dot de dot castro dot lopo at sens=
orynetworks dot com>
+    Felix Obenhuber               <felix at obenhuber dot de>
+    Florent Drouin                <Florent dot Drouin at alcatel-lucent do=
t fr>
+    Franz Schaefer                <schaefer at mond dot at>
+    frederich                     <frederich at sourceforge dot net>
+    Fulko Hew                     <fulko dot hew at gmail dot com>
+    Fumiyuki Shimizu              <fumifumi at abacustech dot jp>
+    Garrett Cooper                <yaberauneya at sourceforge dot net>
+    Gianluca Varenni              <gianluca dot varenni at gmail dot com>
+    Gilbert Hoyek                 <gil_hoyek at hotmail dot com>
+    Gisle Vanem                   <gvanem at broadpark dot no>
+    Graeme Hewson                 <ghewson at cix dot compulink dot co dot=
 uk>
+    Greg Stark                    <gsstark at mit dot edu>
+    Greg Troxel                   <gdt at ir dot bbn dot com>
+    Gregor Maier                  <gregor at net dot in dot tum dot de>
+    Guillaume Pelat               <endymion_ at users dot sourceforge dot =
net>
+    Hagen Paul Pfeifer            <hagen at jauu dot net>
+    Henri Doreau                  <hdoreau at sourceforge dot net>
+    Hyung Sik Yoon                <hsyn at kr dot ibm dot com>
+    Igor Khristophorov            <igor at atdot dot org>
+    Jan-Philip Velders            <jpv at veldersjes dot net>
+    Jason R. Thorpe               <thorpej at netbsd dot org>
+    Javier Achirica               <achirica at ttd dot net>
+    Jean Tourrilhes               <jt at hpl dot hp dot com>
+    Jean-Louis Charton            <Jean-Louis.CHARTON at oikialog dot com>
+    Jefferson Ogata               <jogata at nodc dot noaa dot gov>
+    Jesper Dangaard Brouer        <hawk at comx dot dk>
+    Jesper Peterson               <jesper at endace dot com>
+    Joerg Mayer                   <jmayer at loplof dot de>
+    John Bankier                  <jbankier at rainfinity dot com>
+    Jon Lindgren                  <jonl at yubyub dot net>
+    Jon Smirl                     <jonsmirl at gmail dot com>
+    Juergen Schoenwaelder         <schoenw at ibr dot cs dot tu-bs dot de>
+    Julien Moutinho               <julm at savines dot alpes dot fr dot eu=
 dot org>
+    Jung-uk Kim                   <jkim at FreeBSD dot org>
+    Kazushi Sugyo                 <sugyo at pb dot jp dot nec dot com>
+    Klaus Klein                   <kleink at netbsd dot org>
+    Koryn Grant                   <koryn at endace dot com>
+    Kris Katterjohn               <katterjohn at gmail dot com>
+    Krzysztof Halasa              <khc at pm dot waw dot pl>
+    Lorenzo Cavallaro             <sullivan at sikurezza dot org>
+    Loris Degioanni               <loris at netgroup-serv dot polito dot i=
t>
+    Love H=C3=B6rnquist-=C3=85strand        <lha at stacken dot kth dot se>
+    Luis MartinGarcia             <luis dot mgarc at gmail dot com>
+    Maciej W. Rozycki             <macro at ds2 dot pg dot gda dot pl>
+    Marcus Felipe Pereira         <marcus at task dot com dot br>
+    Mark C. Brown                 <mbrown at hp dot com>
+    Mark Pizzolato                <List-tcpdump-workers at subscriptions d=
ot pizzolato dot net>
+    Markus Mayer                  <markus_mayer at sourceforge dot net>
+    Martin Husemann               <martin at netbsd dot org>
+    M=C3=A1rton N=C3=A9meth                 <nm127 at freemail dot hu>
+    Matthew Luckie                <mjl at luckie dot org dot nz>
+    Max Laier                     <max at love2party dot net>
+    Mike Frysinger                <vapier at gmail dot com>
+    Mike Kershaw                  <dragorn at kismetwireless dot net>
+    Mike Wiacek                   <mike at iroot dot net>
+    Miroslav Lichvar              <mlichvar at redhat dot com>
+    Monroe Williams               <monroe at pobox dot com>
+                                  <nvercamm at sourceforge dot net>
+    N. Leiten                     <nleiten at sourceforge dot net>
+    Nicolas Dade                  <ndade at nsd dot dyndns dot org>
+    Octavian Cerna                <tavy at ylabs dot com>
+    Olaf Kirch                    <okir at caldera dot de>
+    Ollie Wild                    <aaw at users dot sourceforge dot net>
+    Onno van der Linden           <onno at simplex dot nl>
+    Paolo Abeni                   <paolo dot abeni at email dot it>
+    Patrick Marie                 <mycroft at virgaria dot org>
+    Patrick McHardy               <kaber at trash not net>
+    Paul Mundt                    <lethal at linux-sh dot org>
+    Pavel Kankovsky               <kan at dcit dot cz>
+    Pawel Pokrywka                <publicpp at gmail dot com>
+    Peter Fales                   <peter at fales-lorenz dot net>
+    Peter Jeremy                  <peter dot jeremy at alcatel dot com dot=
 au>
+    Peter Volkov                  <pva at gentoo dot org>
+    Phil Wood                     <cpw at lanl dot gov>
+    Rafal Maszkowski              <rzm at icm dot edu dot pl>
+                                  <rcb-isis at users dot sourceforge dot n=
et>
+    Richard Stearn                <richard at rns-stearn dot demon dot co =
dot uk>
+    Rick Jones                    <raj at cup dot hp dot com>
+    Robert Edmonds                <stu-42 at sourceforge dot net>
+    Roberto Mariani               <jelot-tcpdump at jelot dot it>
+    Romain Francoise              <rfrancoise at debian dot org>
+    Sagun Shakya                  <sagun dot shakya at sun dot com>
+    Scott Barron                  <sb125499 at ohiou dot edu>
+    Scott Gifford                 <sgifford at tir dot com>
+    Scott Mcmillan                <scott dot a dot mcmillan at intel dot c=
om>
+    Sebastian Krahmer             <krahmer at cs dot uni-potsdam dot de>
+    Sebastien Roy                 <Sebastien dot Roy at Sun dot COM>
+    Sepherosa Ziehau              <sepherosa at gmail dot com>
+    Shaun Clowes                  <delius at progsoc dot uts dot edu dot a=
u>
+    Solomon Peachy                <pizza at shaftnet dot org>
+    Stefan Hudson                 <hudson at mbay dot net>
+    Stephen Donnelly              <stephen at endace dot com>
+    Takashi Yamamoto              <yamt at mwd dot biglobe dot ne dot jp>
+    Tanaka Shin-ya                <zstanaka at archer dot livedoor dot com>
+    Tobias Poschwatta             <posch at sourceforge dot net>
+    Tony Li                       <tli at procket dot com>
+    Torsten Landschoff            <torsten at debian dot org>
+    Uns Lider                     <unslider at miranda dot org>
+    Uwe Girlich                   <Uwe dot Girlich at philosys dot de>
+    Wesley Shields                <wxs at FreeBSD dot org>
+    Xianjie Zhang                 <xzhang at cup dot hp dot com>
+    Xin Li                        <delphij at FreeBSD dot org>
+    Yen Yen Lim
+    Yvan Vanhullebus              <vanhu at sourceforge dot net>
+    Yoann Vandoorselaere          <yoann at prelude-ids dot org>
=20
 The original LBL crew:
-	Steve McCanne
-	Craig Leres
-	Van Jacobson
+    Steve McCanne
+    Craig Leres
+    Van Jacobson
=20
 Past maintainers:
-	Jun-ichiro itojun Hagino	<itojun at iijlab dot net>
+    Jun-ichiro itojun Hagino         <itojun at iijlab dot net>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/Makefile.in
--- a/head/contrib/libpcap/Makefile.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -46,19 +46,21 @@
=20
 LD =3D /usr/bin/ld
 CC =3D @CC@
+AR =3D @AR@
 CCOPT =3D @V_CCOPT@
 INCLS =3D -I. @V_INCLS@
 DEFS =3D @DEFS@ @V_DEFS@
 ADDLOBJS =3D @ADDLOBJS@
 ADDLARCHIVEOBJS =3D @ADDLARCHIVEOBJS@
 LIBS =3D @LIBS@
+CFLAGS =3D @CFLAGS@
 LDFLAGS =3D @LDFLAGS@
 DYEXT =3D @DYEXT@
 V_RPATH_OPT =3D @V_RPATH_OPT@
 PROG=3Dlibpcap
=20
 # Standard CFLAGS
-CFLAGS =3D $(CCOPT) $(INCLS) $(DEFS)
+FULL_CFLAGS =3D $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS)
=20
 INSTALL =3D @INSTALL@
 INSTALL_PROGRAM =3D @INSTALL_PROGRAM@
@@ -78,9 +80,9 @@
 # problem if you don't own the file but can write to the directory.
 .c.o:
 	@rm -f $@
-	$(CC) $(CFLAGS) -c $(srcdir)/$*.c
+	$(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
=20
-PSRC =3D	pcap- at V_PCAP@.c @USB_SRC@ @BT_SRC@ @CAN_SRC@
+PSRC =3D	pcap- at V_PCAP@.c @USB_SRC@ @BT_SRC@ @CAN_SRC@ @NETFILTER_SRC@
 FSRC =3D  fad- at V_FINDALLDEVS@.c
 SSRC =3D  @SSRC@
 CSRC =3D	pcap.c inet.c gencode.c optimize.c nametoaddr.c etherent.c \
@@ -123,14 +125,29 @@
 	sf-pcap-ng.h \
 	sunatmpos.h
=20
+TESTS =3D \
+	filtertest \
+	findalldevstest \
+	nonblocktest \
+	opentest \
+	selpolltest
+
+TESTS_SRC =3D \
+	tests/filtertest.c \
+	tests/findalldevstest.c \
+	tests/nonblocktest.c \
+	tests/opentest.c \
+	tests/reactivatetest.c \
+	tests/selpolltest.c
+
 GENHDR =3D \
 	scanner.h tokdefs.h version.h
=20
 TAGFILES =3D \
 	$(SRC) $(HDR)
=20
-CLEANFILES =3D $(OBJ) libpcap.* filtertest findalldevstest selpolltest \
-	opentest $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \
+CLEANFILES =3D $(OBJ) libpcap.* $(TESTS) \
+	$(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \
 	lex.yy.c pcap-config
=20
 MAN1 =3D pcap-config.1
@@ -141,8 +158,10 @@
 	pcap_datalink.3pcap.in \
 	pcap_dump_open.3pcap.in \
 	pcap_list_datalinks.3pcap.in \
+	pcap_list_tstamp_types.3pcap.in \
 	pcap_open_dead.3pcap.in \
-	pcap_open_offline.3pcap.in
+	pcap_open_offline.3pcap.in \
+	pcap_set_tstamp_type.3pcap.in
=20
 MAN3PCAP_NOEXPAND =3D \
 	pcap_activate.3pcap \
@@ -160,9 +179,7 @@
 	pcap_file.3pcap \
 	pcap_fileno.3pcap \
 	pcap_findalldevs.3pcap \
-	pcap_freealldevs.3pcap \
 	pcap_freecode.3pcap \
-	pcap_free_datalinks.3pcap \
 	pcap_get_selectable_fd.3pcap \
 	pcap_geterr.3pcap \
 	pcap_inject.3pcap \
@@ -187,7 +204,9 @@
 	pcap_snapshot.3pcap \
 	pcap_stats.3pcap \
 	pcap_statustostr.3pcap \
-	pcap_strerror.3pcap
+	pcap_strerror.3pcap \
+	pcap_tstamp_type_name_to_val.3pcap \
+	pcap_tstamp_type_val_to_name.3pcap
=20
 MAN3PCAP =3D $(MAN3PCAP_NOEXPAND) $(MAN3PCAP_EXPAND:.in=3D)
=20
@@ -196,9 +215,11 @@
=20
 MANMISC =3D \
 	pcap-filter.manmisc.in \
-	pcap-linktype.manmisc.in
+	pcap-linktype.manmisc.in \
+	pcap-tstamp.manmisc.in
=20
 EXTRA_DIST =3D \
+	$(TESTS_SRC) \
 	CHANGES \
 	ChmodBPF/ChmodBPF \
 	ChmodBPF/StartupParameters.plist \
@@ -237,8 +258,6 @@
 	fad-null.c \
 	fad-sita.c \
 	fad-win32.c \
-	filtertest.c \
-	findalldevstest.c \
 	grammar.y \
 	install-sh \
 	lbl/os-aix4.h \
@@ -263,7 +282,6 @@
 	msdos/pktdrvr.c \
 	msdos/pktdrvr.h \
 	msdos/readme.dos \
-	opentest.c \
 	org.tcpdump.chmod_bpf.plist \
 	packaging/pcap.spec.in \
 	pcap-bpf.c \
@@ -282,6 +300,8 @@
 	pcap-libdlpi.c \
 	pcap-linux.c \
 	pcap-namedb.h \
+	pcap-netfilter-linux.c \
+	pcap-netfilter-linux.h \
 	pcap-nit.c \
 	pcap-null.c \
 	pcap-pf.c \
@@ -299,7 +319,6 @@
 	pcap-win32.c \
 	runlex.sh \
 	scanner.l \
-	selpolltest.c \
 	Win32/Include/Gnuc.h \
 	Win32/Include/addrinfo.h \
 	Win32/Include/bittypes.h \
@@ -328,7 +347,7 @@
=20
 libpcap.a: $(OBJ)
 	@rm -f $@
-	ar rc $@ $(OBJ) $(ADDLARCHIVEOBJS)
+	$(AR) rc $@ $(OBJ) $(ADDLARCHIVEOBJS)
 	$(RANLIB) $@
=20
 shared: libpcap.$(DYEXT)
@@ -401,7 +420,7 @@
 libpcap.shareda: $(OBJ)
 	@rm -f $@ shr.o
 	$(CC) @V_SHLIB_OPT@ -o shr.o $(OBJ) $(ADDLOBJS) $(LDFLAGS) $(LIBS)
-	ar rc $@ shr.o
+	$(AR) rc $@ shr.o
=20
 #
 # For platforms that don't support shared libraries (or on which we
@@ -414,7 +433,7 @@
 	$(srcdir)/runlex.sh $(LEX) -o$@ $<
=20
 scanner.o: scanner.c tokdefs.h
-	$(CC) $(CFLAGS) -c scanner.c
+	$(CC) $(FULL_CFLAGS) -c scanner.c
=20
 pcap.o: version.h
=20
@@ -427,13 +446,13 @@
=20
 grammar.o: grammar.c
 	@rm -f $@
-	$(CC) $(CFLAGS) -Dyylval=3Dpcap_lval -c grammar.c
+	$(CC) $(FULL_CFLAGS) -Dyylval=3Dpcap_lval -c grammar.c
=20
 version.o: version.c
-	$(CC) $(CFLAGS) -c version.c
+	$(CC) $(FULL_CFLAGS) -c version.c
=20
 snprintf.o: $(srcdir)/missing/snprintf.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
=20
 version.c: $(srcdir)/VERSION
 	@rm -f $@
@@ -467,35 +486,47 @@
 	ln -s $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c
=20
 bpf_filter.o: bpf_filter.c
-	$(CC) $(CFLAGS) -c bpf_filter.c
+	$(CC) $(FULL_CFLAGS) -c bpf_filter.c
=20
 #
 # Generate the pcap-config script.
 #
-pcap-config: $(srcdir)/pcap-config.in
+# Some Makes, e.g. AIX Make and Solaris Make, can't handle "[email protected]=
p:$<";
+# for example, the Solaris 9 make man page says
+#
+#	Because make assigns $< and $* as it would for implicit rules
+#	(according to the suffixes list and the directory contents),
+#	they may be unreliable when used within explicit target entries.
+#
+# and this is an explicit target entry.
+#
+# Therefore, instead of using $<, we explicitly put in $(srcdir)/pcap-conf=
ig.in.
+#
+pcap-config: $(srcdir)/pcap-config.in ./config.status
 	@rm -f $@ [email protected]
-	sed -e 's|@includedir[@]|$(includedir)|g' \
-	    -e 's|@libdir[@]|$(libdir)|g' \
-	    -e 's|@LIBS[@]|$(LIBS)|g' \
-	    -e 's|@V_RPATH_OPT[@]|$(V_RPATH_OPT)|g' \
-	    $(srcdir)/pcap-config.in >[email protected]
+	./config.status [email protected]:$(srcdir)/pcap-config.in
 	mv [email protected] $@
 	chmod a+x $@
=20
 #
 # Test programs - not built by default, and not installed.
 #
-filtertest: filtertest.c libpcap.a
-	$(CC) $(CFLAGS) -I. -L. -o filtertest $(srcdir)/filtertest.c libpcap.a $(=
LIBS)
+tests: $(TESTS)
=20
-findalldevstest: findalldevstest.c libpcap.a
-	$(CC) $(CFLAGS) -I. -L. -o findalldevstest $(srcdir)/findalldevstest.c li=
bpcap.a $(LIBS)
+filtertest: tests/filtertest.c libpcap.a
+	$(CC) $(FULL_CFLAGS) -I. -L. -o filtertest $(srcdir)/tests/filtertest.c l=
ibpcap.a $(LIBS)
=20
-selpolltest: selpolltest.c libpcap.a
-	$(CC) $(CFLAGS) -I. -L. -o selpolltest $(srcdir)/selpolltest.c libpcap.a =
$(LIBS)
+findalldevstest: tests/findalldevstest.c libpcap.a
+	$(CC) $(FULL_CFLAGS) -I. -L. -o findalldevstest $(srcdir)/tests/findallde=
vstest.c libpcap.a $(LIBS)
=20
-opentest: opentest.c libpcap.a
-	$(CC) $(CFLAGS) -I. -L. -o opentest $(srcdir)/opentest.c libpcap.a $(LIBS)
+nonblocktest: tests/nonblocktest.c libpcap.a
+	$(CC) $(FULL_CFLAGS) -I. -L. -o nonblocktest $(srcdir)/tests/nonblocktest=
.c libpcap.a $(LIBS)
+
+opentest: tests/opentest.c libpcap.a
+	$(CC) $(FULL_CFLAGS) -I. -L. -o opentest $(srcdir)/tests/opentest.c libpc=
ap.a $(LIBS)
+
+selpolltest: tests/selpolltest.c libpcap.a
+	$(CC) $(FULL_CFLAGS) -I. -L. -o selpolltest $(srcdir)/tests/selpolltest.c=
 libpcap.a $(LIBS)
=20
 install: install-shared install-archive pcap-config
 	[ -d $(DESTDIR)$(libdir) ] || \
@@ -533,12 +564,21 @@
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap
 	ln $(DESTDIR)$(mandir)/man3/pcap_dump_open.3pcap \
 		 $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap
+	ln $(DESTDIR)$(mandir)/man3/pcap_findalldevs.3pcap \
+		 $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap
 	ln $(DESTDIR)$(mandir)/man3/pcap_geterr.3pcap \
 		 $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap
 	ln $(DESTDIR)$(mandir)/man3/pcap_inject.3pcap \
 		 $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap
+	ln $(DESTDIR)$(mandir)/man3/pcap_list_datalinks.3pcap \
+		 $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap
+	ln $(DESTDIR)$(mandir)/man3/pcap_list_tstamp_types.3pcap \
+		 $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap
 	ln $(DESTDIR)$(mandir)/man3/pcap_loop.3pcap \
 		 $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap
@@ -622,8 +662,11 @@
 		rm -f $(DESTDIR)$(mandir)/man3/$$i; done
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap
+	rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap
 	rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap
@@ -660,7 +703,7 @@
=20
 distclean: clean
 	rm -f Makefile config.cache config.log config.status \
-	    config.h gnuc.h os-proto.h bpf_filter.c pcap-config \
+	    config.h gnuc.h net os-proto.h bpf_filter.c pcap-config \
 	    stamp-h stamp-h.in
 	rm -f $(MAN3PCAP_EXPAND:.in=3D) $(MANFILE:.in=3D) $(MANMISC:.in=3D)
 	rm -rf autom4te.cache
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/README
--- a/head/contrib/libpcap/README	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/README	Wed Jul 25 16:21:35 2012 +0300
@@ -63,13 +63,14 @@
 would translate BPF filters into a filter program that is compatible
 with the underlying kernel subsystem, but this is not yet implemented.
=20
-BPF is standard in 4.4BSD, BSD/OS, NetBSD, FreeBSD, and OpenBSD.  DEC
-OSF/1/Digital UNIX/Tru64 UNIX uses the packetfilter interface but has
-been extended to accept BPF filters (which libpcap utilizes).  Also, you
-can add BPF filter support to Ultrix using the kernel source and/or
-object patches available in:
+BPF is standard in 4.4BSD, BSD/OS, NetBSD, FreeBSD, OpenBSD, DragonFly
+BSD, and Mac OS X; an older, modified and undocumented version is
+standard in AIX.  {DEC OSF/1, Digital UNIX, Tru64 UNIX} uses the
+packetfilter interface but has been extended to accept BPF filters
+(which libpcap utilizes).  Also, you can add BPF filter support to
+Ultrix using the kernel source and/or object patches available in:
=20
-	ftp://gatekeeper.dec.com/pub/DEC/net/bpfext42.tar.Z.
+	http://www.tcpdump.org/other/bpfext42.tar.Z
=20
 Linux, in the 2.2 kernel and later kernels, has a "Socket Filter"
 mechanism that accepts BPF filters; see the README.linux file for
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/VERSION
--- a/head/contrib/libpcap/VERSION	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/VERSION	Wed Jul 25 16:21:35 2012 +0300
@@ -1,1 +1,1 @@
-1.1.1
+1.2.1
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/bpf/net/bpf_filte=
r.c
--- a/head/contrib/libpcap/bpf/net/bpf_filter.c	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/libpcap/bpf/net/bpf_filter.c	Wed Jul 25 16:21:35 2012 +0=
300
@@ -619,7 +619,7 @@
 				/*
 				 * Check for constant division by 0.
 				 */
-				if (BPF_RVAL(p->code) =3D=3D BPF_K && p->k =3D=3D 0)
+				if (BPF_SRC(p->code) =3D=3D BPF_K && p->k =3D=3D 0)
 					return 0;
 				break;
 			default:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/config.h.in
--- a/head/contrib/libpcap/config.h.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/config.h.in	Wed Jul 25 16:21:35 2012 +0300
@@ -18,6 +18,9 @@
 /* define if you have streams capable DAG API */
 #undef HAVE_DAG_STREAMS_API
=20
+/* define if you have vdag_set_device_info() */
+#undef HAVE_DAG_VDAG
+
 /* Define to 1 if you have the declaration of `ether_hostton', and to 0 if=
 you
    don't. */
 #undef HAVE_DECL_ETHER_HOSTTON
@@ -52,12 +55,30 @@
 /* if libnl exists */
 #undef HAVE_LIBNL
=20
+/* if libnl exists and is version 2.x */
+#undef HAVE_LIBNL_2_x
+
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
=20
+/* Define to 1 if you have the <linux/compiler.h> header file. */
+#undef HAVE_LINUX_COMPILER_H
+
+/* Define to 1 if you have the <linux/ethtool.h> header file. */
+#undef HAVE_LINUX_ETHTOOL_H
+
+/* Define to 1 if you have the <linux/if_packet.h> header file. */
+#undef HAVE_LINUX_IF_PACKET_H
+
+/* Define to 1 if you have the <linux/net_tstamp.h> header file. */
+#undef HAVE_LINUX_NET_TSTAMP_H
+
 /* if tp_vlan_tci exists */
 #undef HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI
=20
+/* Define to 1 if you have the <linux/types.h> header file. */
+#undef HAVE_LINUX_TYPES_H
+
 /* Define to 1 if you have the <linux/usbdevice_fs.h> header file. */
 #undef HAVE_LINUX_USBDEVICE_FS_H
=20
@@ -73,6 +94,12 @@
 /* Define to 1 if you have the <netinet/if_ether.h> header file. */
 #undef HAVE_NETINET_IF_ETHER_H
=20
+/* Define to 1 if you have the <netpacket/if_packet.h> header file. */
+#undef HAVE_NETPACKET_IF_PACKET_H
+
+/* Define to 1 if you have the <netpacket/packet.h> header file. */
+#undef HAVE_NETPACKET_PACKET_H
+
 /* Define to 1 if you have the <net/if_media.h> header file. */
 #undef HAVE_NET_IF_MEDIA_H
=20
@@ -217,6 +244,9 @@
 /* target host supports CAN sniffing */
 #undef PCAP_SUPPORT_CAN
=20
+/* target host supports netfilter sniffing */
+#undef PCAP_SUPPORT_NETFILTER
+
 /* target host supports USB sniffing */
 #undef PCAP_SUPPORT_USB
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/configure
--- a/head/contrib/libpcap/configure	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/configure	Wed Jul 25 16:21:35 2012 +0300
@@ -679,6 +679,7 @@
 V_LEX
 V_YACC
 RANLIB
+AR
 V_CCOPT
 V_DEFS
 V_FINDALLDEVS
@@ -696,6 +697,8 @@
 MAN_MISC_INFO
 PCAP_SUPPORT_USB
 USB_SRC
+PCAP_SUPPORT_NETFILTER
+NETFILTER_SRC
 PCAP_SUPPORT_BT
 BT_SRC
 PCAP_SUPPORT_CAN
@@ -1293,6 +1296,7 @@
                           getaddrinfo available]
   --enable-optimizer-dbg  build optimizer debugging code
   --enable-yydebug        build parser debugging code
+  --disable-universal     don't build universal on OS X
   --enable-bluetooth      enable Bluetooth support [default=3Dyes, if supp=
ort
                           available]
   --enable-can            enable CAN support [default=3Dyes, if support
@@ -3229,7 +3233,24 @@
 		    # or accepts command-line arguments like
 		    # those the GNU linker accepts.
 		    #
-		    V_CCOPT=3D"$V_CCOPT -fpic"
+		    # Some instruction sets require -fPIC on some
+		    # operating systems.  Check for them.  If you
+		    # have a combination that requires it, add it
+		    # here.
+		    #
+		    PIC_OPT=3D-fpic
+		    case "$host_cpu" in
+
+		    sparc64*)
+			case "$host_os" in
+
+			freebsd*)
+			    PIC_OPT=3D-fPIC
+			    ;;
+			esac
+			;;
+		    esac
+		    V_CCOPT=3D"$V_CCOPT $PIC_OPT"
 		    V_SONAME_OPT=3D"-Wl,-soname,"
 		    V_RPATH_OPT=3D"-Wl,-rpath,"
 		    ;;
@@ -5425,1127 +5446,7 @@
 done
=20
=20
-for ac_header in net/pfvar.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-if test "$ac_cv_header_net_pfvar_h" =3D yes; then
-	#
-	# Check for various PF actions.
-	#
-	{ echo "$as_me:$LINENO: checking whether net/pfvar.h defines PF_NAT throu=
gh PF_NORDR" >&5
-echo $ECHO_N "checking whether net/pfvar.h defines PF_NAT through PF_NORDR=
... $ECHO_C" >&6; }
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-	    #include <sys/socket.h>
-	    #include <net/if.h>
-	    #include <net/pfvar.h>
-int
-main ()
-{
-return PF_NAT+PF_NONAT+PF_BINAT+PF_NOBINAT+PF_RDR+PF_NORDR;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-
-		{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PF_NAT_THROUGH_PF_NORDR 1
-_ACEOF
-
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-for ac_header in netinet/if_ether.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-if test "$ac_cv_header_netinet_if_ether_h" !=3D yes; then
-	#
-	# The simple test didn't work.
-	# Do we need to include <net/if.h> first?
-	# Unset ac_cv_header_netinet_if_ether_h so we don't
-	# treat the previous failure as a cached value and
-	# suppress the next test.
-	#
-	{ echo "$as_me:$LINENO: Rechecking with some additional includes" >&5
-echo "$as_me: Rechecking with some additional includes" >&6;}
-	unset ac_cv_header_netinet_if_ether_h
-
-for ac_header in netinet/if_ether.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-struct mbuf;
-struct rtentry;
-#include <net/if.h>
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-fi
-
-if test "$GCC" =3D yes ; then
-	    { echo "$as_me:$LINENO: checking for ANSI ioctl definitions" >&5
-echo $ECHO_N "checking for ANSI ioctl definitions... $ECHO_C" >&6; }
-	    if test "${ac_cv_lbl_gcc_fixincludes+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/*
-		     * This generates a "duplicate case value" when fixincludes
-		     * has not be run.
-		     */
-#		include <sys/types.h>
-#		include <sys/time.h>
-#		include <sys/ioctl.h>
-#		ifdef HAVE_SYS_IOCCOM_H
-#		include <sys/ioccom.h>
-#		endif
-int
-main ()
-{
-switch (0) {
-		    case _IO('A', 1):;
-		    case _IO('B', 1):;
-		    }
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_lbl_gcc_fixincludes=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lbl_gcc_fixincludes=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	    { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_fixincludes" >&5
-echo "${ECHO_T}$ac_cv_lbl_gcc_fixincludes" >&6; }
-	    if test $ac_cv_lbl_gcc_fixincludes =3D no ; then
-		    # Don't cache failure
-		    unset ac_cv_lbl_gcc_fixincludes
-		    { { echo "$as_me:$LINENO: error: see the INSTALL for more info" >&5
-echo "$as_me: error: see the INSTALL for more info" >&2;}
-   { (exit 1); exit 1; }; }
-	    fi
-    fi
-
-
-
-for ac_func in strerror strlcpy
-do
-as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-needsnprintf=3Dno
-
-
-for ac_func in vsnprintf snprintf
-do
-as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  needsnprintf=3Dyes
-fi
-done
-
-if test $needsnprintf =3D yes; then
-	case " $LIBOBJS " in
-  *" snprintf.$ac_objext "* ) ;;
-  *) LIBOBJS=3D"$LIBOBJS snprintf.$ac_objext"
- ;;
-esac
-
-fi
-
-#
-# Do this before checking for ether_hostton(), as it's a
-# "gethostbyname() -ish function".
-#
-
-    # Most operating systems have gethostbyname() in the default searched
-    # libraries (i.e. libc):
-    # Some OSes (eg. Solaris) place it in libnsl
-    # Some strange OSes (SINIX) have it in libsocket:
-    { echo "$as_me:$LINENO: checking for library containing gethostbyname"=
 >&5
-echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&=
6; }
-if test "${ac_cv_search_gethostbyname+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=3D$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' nsl socket resolv; do
-  if test -z "$ac_lib"; then
-    ac_res=3D"none required"
-  else
-    ac_res=3D-l$ac_lib
-    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_gethostbyname=3D$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_gethostbyname+set}" =3D set; then
-  break
-fi
-done
-if test "${ac_cv_search_gethostbyname+set}" =3D set; then
-  :
-else
-  ac_cv_search_gethostbyname=3Dno
-fi
-rm conftest.$ac_ext
-LIBS=3D$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; }
-ac_res=3D$ac_cv_search_gethostbyname
-if test "$ac_res" !=3D no; then
-  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
-
-fi
-
-    # Unfortunately libsocket sometimes depends on libnsl and
-    # AC_SEARCH_LIBS isn't up to the task of handling dependencies like th=
is.
-    if test "$ac_cv_search_gethostbyname" =3D "no"
-    then
-	{ echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5
-echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6; }
-if test "${ac_cv_lib_socket_gethostbyname+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lsocket -lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_socket_gethostbyname=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_socket_gethostbyname=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6; }
-if test $ac_cv_lib_socket_gethostbyname =3D yes; then
-  LIBS=3D"-lsocket -lnsl $LIBS"
-fi
-
-    fi
-    { echo "$as_me:$LINENO: checking for library containing socket" >&5
-echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6; }
-if test "${ac_cv_search_socket+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=3D$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket; do
-  if test -z "$ac_lib"; then
-    ac_res=3D"none required"
-  else
-    ac_res=3D-l$ac_lib
-    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_socket=3D$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_socket+set}" =3D set; then
-  break
-fi
-done
-if test "${ac_cv_search_socket+set}" =3D set; then
-  :
-else
-  ac_cv_search_socket=3Dno
-fi
-rm conftest.$ac_ext
-LIBS=3D$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5
-echo "${ECHO_T}$ac_cv_search_socket" >&6; }
-ac_res=3D$ac_cv_search_socket
-if test "$ac_res" !=3D no; then
-  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
-
-else
-  { echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
-echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; }
-if test "${ac_cv_lib_socket_socket+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lsocket -lnsl $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_socket_socket=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_socket_socket=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; }
-if test $ac_cv_lib_socket_socket =3D yes; then
-  LIBS=3D"-lsocket -lnsl $LIBS"
-fi
-
-fi
-
-    # DLPI needs putmsg under HPUX so test for -lstr while we're at it
-    { echo "$as_me:$LINENO: checking for library containing putmsg" >&5
-echo $ECHO_N "checking for library containing putmsg... $ECHO_C" >&6; }
-if test "${ac_cv_search_putmsg+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=3D$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char putmsg ();
-int
-main ()
-{
-return putmsg ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' str; do
-  if test -z "$ac_lib"; then
-    ac_res=3D"none required"
-  else
-    ac_res=3D-l$ac_lib
-    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_search_putmsg=3D$ac_res
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_putmsg+set}" =3D set; then
-  break
-fi
-done
-if test "${ac_cv_search_putmsg+set}" =3D set; then
-  :
-else
-  ac_cv_search_putmsg=3Dno
-fi
-rm conftest.$ac_ext
-LIBS=3D$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_putmsg" >&5
-echo "${ECHO_T}$ac_cv_search_putmsg" >&6; }
-ac_res=3D$ac_cv_search_putmsg
-if test "$ac_res" !=3D no; then
-  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
-
-fi
-
-
-
-#
-# You are in a twisty little maze of UN*Xes, all different.
-# Some might not have ether_hostton().
-# Some might have it, but not declare it in any header file.
-# Some might have it, but declare it in <netinet/if_ether.h>.
-# Some might have it, but declare it in <netinet/ether.h>
-# (And some might have it but document it as something declared in
-# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.)
-#
-# Before you is a C compiler.
-#
-
-for ac_func in ether_hostton
-do
-as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-if test "$ac_cv_func_ether_hostton" =3D yes; then
-	#
-	# OK, we have ether_hostton().  Do we have <netinet/if_ether.h>?
-	#
-	if test "$ac_cv_header_netinet_if_ether_h" =3D yes; then
-		#
-		# Yes.  Does it declare ether_hostton()?
-		#
-		{ echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5
-echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_ether_hostton+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct mbuf;
-struct rtentry;
-#include <net/if.h>
-#include <netinet/if_ether.h>
-
-
-int
-main ()
-{
-#ifndef ether_hostton
-  (void) ether_hostton;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_ether_hostton=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_have_decl_ether_hostton=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5
-echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; }
-if test $ac_cv_have_decl_ether_hostton =3D yes; then
-
-
-cat >>confdefs.h <<\_ACEOF
-#define NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON
-_ACEOF
-
-
-fi
-
-	fi
-	#
-	# Did that succeed?
-	#
-	if test "$ac_cv_have_decl_ether_hostton" !=3D yes; then
-		#
-		# No, how about <netinet/ether.h>, as on Linux?
-		#
-
-for ac_header in netinet/ether.h
+for ac_header in linux/types.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -6684,849 +5585,10 @@
=20
 done
=20
-		if test "$ac_cv_header_netinet_ether_h" =3D yes; then
-			#
-			# We have it - does it declare ether_hostton()?
-			# Unset ac_cv_have_decl_ether_hostton so we don't
-			# treat the previous failure as a cached value and
-			# suppress the next test.
-			#
-			unset ac_cv_have_decl_ether_hostton
-			{ echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5
-echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; }
-if test "${ac_cv_have_decl_ether_hostton+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <netinet/ether.h>
-
-
-int
-main ()
-{
-#ifndef ether_hostton
-  (void) ether_hostton;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_have_decl_ether_hostton=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_have_decl_ether_hostton=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5
-echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; }
-if test $ac_cv_have_decl_ether_hostton =3D yes; then
-
-
-cat >>confdefs.h <<\_ACEOF
-#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON
-_ACEOF
-
-
-fi
-
-		fi
-	fi
-	#
-	# Is ether_hostton() declared?
-	#
-	if test "$ac_cv_have_decl_ether_hostton" !=3D yes; then
-		#
-		# No, we'll have to declare it ourselves.
-		# Do we have "struct ether_addr"?
-		#
-		{ echo "$as_me:$LINENO: checking for struct ether_addr" >&5
-echo $ECHO_N "checking for struct ether_addr... $ECHO_C" >&6; }
-if test "${ac_cv_type_struct_ether_addr+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-struct mbuf;
-struct rtentry;
-#include <net/if.h>
-#include <netinet/if_ether.h>
-
-
-typedef struct ether_addr ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_struct_ether_addr=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_struct_ether_addr=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_addr" >&5
-echo "${ECHO_T}$ac_cv_type_struct_ether_addr" >&6; }
-if test $ac_cv_type_struct_ether_addr =3D yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_ETHER_ADDR 1
-_ACEOF
-
-
-fi
-
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DECL_ETHER_HOSTTON 0
-_ACEOF
-
-	else
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DECL_ETHER_HOSTTON 1
-_ACEOF
-
-	fi
-fi
-
-{ echo "$as_me:$LINENO: checking if --disable-protochain option is specifi=
ed" >&5
-echo $ECHO_N "checking if --disable-protochain option is specified... $ECH=
O_C" >&6; }
-# Check whether --enable-protochain was given.
-if test "${enable_protochain+set}" =3D set; then
-  enableval=3D$enable_protochain;
-fi
-
-case "x$enable_protochain" in
-xyes)	enable_protochain=3Denabled	;;
-xno)	enable_protochain=3Ddisabled	;;
-x)	enable_protochain=3Denabled	;;
-esac
-
-if test "$enable_protochain" =3D "disabled"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NO_PROTOCHAIN 1
-_ACEOF
-
-fi
-{ echo "$as_me:$LINENO: result: ${enable_protochain}" >&5
-echo "${ECHO_T}${enable_protochain}" >&6; }
-
-#
-# SITA support is mutually exclusive with native capture support;
-# "--with-sita" selects SITA support.
-#
-
-# Check whether --with-sita was given.
-if test "${with_sita+set}" =3D set; then
-  withval=3D$with_sita;
-	if test ! "x$withval" =3D "xno" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define SITA 1
-_ACEOF
-
-		{ echo "$as_me:$LINENO: Enabling SITA ACN support" >&5
-echo "$as_me: Enabling SITA ACN support" >&6;}
-		V_PCAP=3Dsita
-		V_FINDALLDEVS=3Dsita
-	fi
-
-else
-
-if test -z "$with_pcap" && test "$cross_compiling" =3D yes; then
-	{ { echo "$as_me:$LINENO: error: pcap type not determined when cross-comp=
iling; use --with-pcap=3D..." >&5
-echo "$as_me: error: pcap type not determined when cross-compiling; use --=
with-pcap=3D..." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-# Check whether --with-pcap was given.
-if test "${with_pcap+set}" =3D set; then
-  withval=3D$with_pcap;
-fi
-
-{ echo "$as_me:$LINENO: checking packet capture type" >&5
-echo $ECHO_N "checking packet capture type... $ECHO_C" >&6; }
-if test ! -z "$with_pcap" ; then
-	V_PCAP=3D"$withval"
-elif test -r /dev/bpf -o -h /dev/bpf ; then
-	#
-	# Cloning BPF device.
-	#
-	V_PCAP=3Dbpf
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLONING_BPF 1
-_ACEOF
-
-elif test -r /dev/bpf0 ; then
-	V_PCAP=3Dbpf
-elif test -r /usr/include/net/pfilt.h ; then
-	V_PCAP=3Dpf
-elif test -r /dev/enet ; then
-	V_PCAP=3Denet
-elif test -r /dev/nit ; then
-	V_PCAP=3Dsnit
-elif test -r /usr/include/sys/net/nit.h ; then
-	V_PCAP=3Dnit
-elif test -r /usr/include/linux/socket.h ; then
-	V_PCAP=3Dlinux
-elif test -r /usr/include/net/raw.h ; then
-	V_PCAP=3Dsnoop
-elif test -r /usr/include/odmi.h ; then
-	#
-	# On AIX, the BPF devices might not yet be present - they're
-	# created the first time libpcap runs after booting.
-	# We check for odmi.h instead.
-	#
-	V_PCAP=3Dbpf
-elif test -c /dev/bpf0 ; then		# check again in case not readable
-	V_PCAP=3Dbpf
-elif test -r /usr/include/sys/dlpi.h ; then
-	V_PCAP=3Ddlpi
-elif test -c /dev/enet ; then		# check again in case not readable
-	V_PCAP=3Denet
-elif test -c /dev/nit ; then		# check again in case not readable
-	V_PCAP=3Dsnit
-else
-	V_PCAP=3Dnull
-fi
-{ echo "$as_me:$LINENO: result: $V_PCAP" >&5
-echo "${ECHO_T}$V_PCAP" >&6; }
-
-#
-# Do capture-mechanism-dependent tests.
-#
-case "$V_PCAP" in
-dlpi)
-	#
-	# Checks to see if Solaris has the public libdlpi(3LIB) library.
-	# Note: The existence of /usr/include/libdlpi.h does not mean it is the
-	# public libdlpi(3LIB) version. Before libdlpi was made public, a
-	# private version also existed, which did not have the same APIs.
-	# Due to a gcc bug, the default search path for 32-bit libraries does
-	# not include /lib, we add it explicitly here.
-	# [http://bugs.opensolaris.org/view_bug.do?bug_id=3D6619485].
-	# Also, due to the bug above applications that link to libpcap with
-	# libdlpi will have to add "-L/lib" option to "configure".
-	#
-	saved_ldflags=3D$LDFLAGS
-	LDFLAGS=3D"$LIBS -L/lib"
-	{ echo "$as_me:$LINENO: checking for dlpi_walk in -ldlpi" >&5
-echo $ECHO_N "checking for dlpi_walk in -ldlpi... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dlpi_dlpi_walk+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-ldlpi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlpi_walk ();
-int
-main ()
-{
-return dlpi_walk ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dlpi_dlpi_walk=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_dlpi_dlpi_walk=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dlpi_dlpi_walk" >&5
-echo "${ECHO_T}$ac_cv_lib_dlpi_dlpi_walk" >&6; }
-if test $ac_cv_lib_dlpi_dlpi_walk =3D yes; then
-  LIBS=3D"-ldlpi $LIBS"
-		V_PCAP=3Dlibdlpi
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBDLPI 1
-_ACEOF
-
-else
-  V_PCAP=3Ddlpi
-fi
-
-	LDFLAGS=3D$saved_ldflags
-
-	#
-	# Checks whether <sys/dlpi.h> is usable, to catch weird SCO
-	# versions of DLPI.
-	#
-	{ echo "$as_me:$LINENO: checking whether <sys/dlpi.h> is usable" >&5
-echo $ECHO_N "checking whether <sys/dlpi.h> is usable... $ECHO_C" >&6; }
-	if test "${ac_cv_sys_dlpi_usable+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-			#include <sys/types.h>
-			#include <sys/time.h>
-			#include <sys/dlpi.h>
-
-int
-main ()
-{
-int i =3D DL_PROMISC_PHYS;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_dlpi_usable=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_sys_dlpi_usable=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_sys_dlpi_usable" >&5
-echo "${ECHO_T}$ac_cv_sys_dlpi_usable" >&6; }
-	if test $ac_cv_sys_dlpi_usable =3D no ; then
-		{ { echo "$as_me:$LINENO: error: <sys/dlpi.h> is not usable on this syst=
em; it probably has a non-standard DLPI" >&5
-echo "$as_me: error: <sys/dlpi.h> is not usable on this system; it probabl=
y has a non-standard DLPI" >&2;}
-   { (exit 1); exit 1; }; }
-	fi
-
-	#
-	# Check whether we have a /dev/dlpi device or have multiple devices.
-	#
-	{ echo "$as_me:$LINENO: checking for /dev/dlpi device" >&5
-echo $ECHO_N "checking for /dev/dlpi device... $ECHO_C" >&6; }
-	if test -c /dev/dlpi ; then
-		{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DEV_DLPI 1
-_ACEOF
-
-	else
-		{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-		dir=3D"/dev/dlpi"
-		{ echo "$as_me:$LINENO: checking for $dir directory" >&5
-echo $ECHO_N "checking for $dir directory... $ECHO_C" >&6; }
-		if test -d $dir ; then
-			{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define PCAP_DEV_PREFIX "$dir"
-_ACEOF
-
-		else
-			{ echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-		fi
-	fi
-
-	#
-	# This check is for Solaris with DLPI support for passive modes.
-	# See dlpi(7P) for more details.
-	#
-	{ echo "$as_me:$LINENO: checking if dl_passive_req_t struct exists" >&5
-echo $ECHO_N "checking if dl_passive_req_t struct exists... $ECHO_C" >&6; }
-       if test "${ac_cv_lbl_has_dl_passive_req_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#       include <sys/types.h>
-#       include <sys/dlpi.h>
-int
-main ()
-{
-u_int i =3D sizeof(dl_passive_req_t)
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_lbl_has_dl_passive_req_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lbl_has_dl_passive_req_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-    { echo "$as_me:$LINENO: result: $ac_cv_lbl_has_dl_passive_req_t" >&5
-echo "${ECHO_T}$ac_cv_lbl_has_dl_passive_req_t" >&6; }
-    if test $ac_cv_lbl_has_dl_passive_req_t =3D yes ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DLPI_PASSIVE 1
-_ACEOF
-
-    fi
-	;;
-
-linux)
-	{ echo "$as_me:$LINENO: checking Linux kernel version" >&5
-echo $ECHO_N "checking Linux kernel version... $ECHO_C" >&6; }
- 	if test "$cross_compiling" =3D yes; then
- 		if test "${ac_cv_linux_vers+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_linux_vers=3Dunknown
-fi
-
- 	else
- 		if test "${ac_cv_linux_vers+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_linux_vers=3D`uname -r 2>&1 | \
- 			sed -n -e '$s/.* //' -e '$s/\..*//p'`
-fi
-
- 	fi
-	{ echo "$as_me:$LINENO: result: $ac_cv_linux_vers" >&5
-echo "${ECHO_T}$ac_cv_linux_vers" >&6; }
- 	if test $ac_cv_linux_vers =3D unknown ; then
- 		{ { echo "$as_me:$LINENO: error: cannot determine linux version when cr=
oss-compiling" >&5
-echo "$as_me: error: cannot determine linux version when cross-compiling" =
>&2;}
-   { (exit 1); exit 1; }; }
- 	fi
-	if test $ac_cv_linux_vers -lt 2 ; then
-		{ { echo "$as_me:$LINENO: error: version 2 or higher required; see the I=
NSTALL doc for more info" >&5
-echo "$as_me: error: version 2 or higher required; see the INSTALL doc for=
 more info" >&2;}
-   { (exit 1); exit 1; }; }
-	fi
-
-	#
-	# Do we have the wireless extensions?
-	#
-
-for ac_header in linux/wireless.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <sys/socket.h>
-#include <linux/if.h>
-#include <linux/types.h>
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=3Dyes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=3Dno"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-	#
-	# Do we have libnl?
-	#
-
-# Check whether --with-libnl was given.
-if test "${with_libnl+set}" =3D set; then
-  withval=3D$with_libnl; with_libnl=3D$withval
-fi
-
-
-	if test x$with_libnl !=3D xno ; then
-		{ echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5
-echo $ECHO_N "checking for nl_handle_alloc in -lnl... $ECHO_C" >&6; }
-if test "${ac_cv_lib_nl_nl_handle_alloc+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=3D$LIBS
-LIBS=3D"-lnl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char nl_handle_alloc ();
-int
-main ()
-{
-return nl_handle_alloc ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_nl_nl_handle_alloc=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_nl_nl_handle_alloc=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=3D$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_handle_alloc" >&5
-echo "${ECHO_T}$ac_cv_lib_nl_nl_handle_alloc" >&6; }
-if test $ac_cv_lib_nl_nl_handle_alloc =3D yes; then
-  LIBS=3D"-lnl $LIBS"
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBNL 1
-_ACEOF
-
-else
-  if test x$with_libnl =3D xyes ; then
-				{ { echo "$as_me:$LINENO: error: libnl support requested but libnl not=
 found" >&5
-echo "$as_me: error: libnl support requested but libnl not found" >&2;}
-   { (exit 1); exit 1; }; }
-			fi
-
-fi
-
-	fi
-
-	{ echo "$as_me:$LINENO: checking if if_packet.h has tpacket_stats defined=
" >&5
-echo $ECHO_N "checking if if_packet.h has tpacket_stats defined... $ECHO_C=
" >&6; }
-   if test "${ac_cv_lbl_tpacket_stats+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#  include <linux/if_packet.h>
-int
-main ()
-{
-struct tpacket_stats stats
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_lbl_tpacket_stats=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lbl_tpacket_stats=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-   { echo "$as_me:$LINENO: result: $ac_cv_lbl_tpacket_stats" >&5
-echo "${ECHO_T}$ac_cv_lbl_tpacket_stats" >&6; }
-   if test $ac_cv_lbl_tpacket_stats =3D yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TPACKET_STATS 1
-_ACEOF
-
-   fi
-	{ echo "$as_me:$LINENO: checking if tpacket_auxdata struct has tp_vlan_tc=
i member" >&5
-echo $ECHO_N "checking if tpacket_auxdata struct has tp_vlan_tci member...=
 $ECHO_C" >&6; }
-    if test "${ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1+set}" =3D set=
; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#	include <linux/if_packet.h>
-int
-main ()
-{
-u_int i =3D sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci)
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-    { echo "$as_me:$LINENO: result: $ac_cv_lbl_linux_tpacket_auxdata_tp_vl=
an_tci" >&5
-echo "${ECHO_T}$ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci" >&6; }
-    if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci =3D yes ; then
-	    HAVE_LINUX_TPACKET_AUXDATA=3Dtp_vlan_tci
-
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1
-_ACEOF
-
-    fi
-	;;
-
-bpf)
-	#
-	# Check whether we have the *BSD-style ioctls.
-	#
-
-for ac_header in net/if_media.h
+
+
+
+for ac_header in linux/if_packet.h netpacket/packet.h netpacket/if_packet.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -7666,6 +5728,2376 @@
 done
=20
=20
+for ac_header in net/pfvar.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+if test "$ac_cv_header_net_pfvar_h" =3D yes; then
+	#
+	# Check for various PF actions.
+	#
+	{ echo "$as_me:$LINENO: checking whether net/pfvar.h defines PF_NAT throu=
gh PF_NORDR" >&5
+echo $ECHO_N "checking whether net/pfvar.h defines PF_NAT through PF_NORDR=
... $ECHO_C" >&6; }
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+	    #include <sys/socket.h>
+	    #include <net/if.h>
+	    #include <net/pfvar.h>
+int
+main ()
+{
+return PF_NAT+PF_NONAT+PF_BINAT+PF_NOBINAT+PF_RDR+PF_NORDR;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+		{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PF_NAT_THROUGH_PF_NORDR 1
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+for ac_header in netinet/if_ether.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+if test "$ac_cv_header_netinet_if_ether_h" !=3D yes; then
+	#
+	# The simple test didn't work.
+	# Do we need to include <net/if.h> first?
+	# Unset ac_cv_header_netinet_if_ether_h so we don't
+	# treat the previous failure as a cached value and
+	# suppress the next test.
+	#
+	{ echo "$as_me:$LINENO: Rechecking with some additional includes" >&5
+echo "$as_me: Rechecking with some additional includes" >&6;}
+	unset ac_cv_header_netinet_if_ether_h
+
+for ac_header in netinet/if_ether.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+struct mbuf;
+struct rtentry;
+#include <net/if.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+if test "$GCC" =3D yes ; then
+	    { echo "$as_me:$LINENO: checking for ANSI ioctl definitions" >&5
+echo $ECHO_N "checking for ANSI ioctl definitions... $ECHO_C" >&6; }
+	    if test "${ac_cv_lbl_gcc_fixincludes+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/*
+		     * This generates a "duplicate case value" when fixincludes
+		     * has not be run.
+		     */
+#		include <sys/types.h>
+#		include <sys/time.h>
+#		include <sys/ioctl.h>
+#		ifdef HAVE_SYS_IOCCOM_H
+#		include <sys/ioccom.h>
+#		endif
+int
+main ()
+{
+switch (0) {
+		    case _IO('A', 1):;
+		    case _IO('B', 1):;
+		    }
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_lbl_gcc_fixincludes=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lbl_gcc_fixincludes=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+	    { echo "$as_me:$LINENO: result: $ac_cv_lbl_gcc_fixincludes" >&5
+echo "${ECHO_T}$ac_cv_lbl_gcc_fixincludes" >&6; }
+	    if test $ac_cv_lbl_gcc_fixincludes =3D no ; then
+		    # Don't cache failure
+		    unset ac_cv_lbl_gcc_fixincludes
+		    { { echo "$as_me:$LINENO: error: see the INSTALL for more info" >&5
+echo "$as_me: error: see the INSTALL for more info" >&2;}
+   { (exit 1); exit 1; }; }
+	    fi
+    fi
+
+
+
+for ac_func in strerror strlcpy
+do
+as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+needsnprintf=3Dno
+
+
+for ac_func in vsnprintf snprintf
+do
+as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  needsnprintf=3Dyes
+fi
+done
+
+if test $needsnprintf =3D yes; then
+	case " $LIBOBJS " in
+  *" snprintf.$ac_objext "* ) ;;
+  *) LIBOBJS=3D"$LIBOBJS snprintf.$ac_objext"
+ ;;
+esac
+
+fi
+
+#
+# Do this before checking for ether_hostton(), as it's a
+# "gethostbyname() -ish function".
+#
+
+    # Most operating systems have gethostbyname() in the default searched
+    # libraries (i.e. libc):
+    # Some OSes (eg. Solaris) place it in libnsl
+    # Some strange OSes (SINIX) have it in libsocket:
+    { echo "$as_me:$LINENO: checking for library containing gethostbyname"=
 >&5
+echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&=
6; }
+if test "${ac_cv_search_gethostbyname+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_func_search_save_LIBS=3D$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl socket resolv; do
+  if test -z "$ac_lib"; then
+    ac_res=3D"none required"
+  else
+    ac_res=3D-l$ac_lib
+    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_search_gethostbyname=3D$ac_res
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_gethostbyname+set}" =3D set; then
+  break
+fi
+done
+if test "${ac_cv_search_gethostbyname+set}" =3D set; then
+  :
+else
+  ac_cv_search_gethostbyname=3Dno
+fi
+rm conftest.$ac_ext
+LIBS=3D$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; }
+ac_res=3D$ac_cv_search_gethostbyname
+if test "$ac_res" !=3D no; then
+  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
+
+fi
+
+    # Unfortunately libsocket sometimes depends on libnsl and
+    # AC_SEARCH_LIBS isn't up to the task of handling dependencies like th=
is.
+    if test "$ac_cv_search_gethostbyname" =3D "no"
+    then
+	{ echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5
+echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6; }
+if test "${ac_cv_lib_socket_gethostbyname+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lsocket -lnsl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_socket_gethostbyname=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_gethostbyname=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6; }
+if test $ac_cv_lib_socket_gethostbyname =3D yes; then
+  LIBS=3D"-lsocket -lnsl $LIBS"
+fi
+
+    fi
+    { echo "$as_me:$LINENO: checking for library containing socket" >&5
+echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6; }
+if test "${ac_cv_search_socket+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_func_search_save_LIBS=3D$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; do
+  if test -z "$ac_lib"; then
+    ac_res=3D"none required"
+  else
+    ac_res=3D-l$ac_lib
+    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_search_socket=3D$ac_res
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_socket+set}" =3D set; then
+  break
+fi
+done
+if test "${ac_cv_search_socket+set}" =3D set; then
+  :
+else
+  ac_cv_search_socket=3Dno
+fi
+rm conftest.$ac_ext
+LIBS=3D$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5
+echo "${ECHO_T}$ac_cv_search_socket" >&6; }
+ac_res=3D$ac_cv_search_socket
+if test "$ac_res" !=3D no; then
+  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
+
+else
+  { echo "$as_me:$LINENO: checking for socket in -lsocket" >&5
+echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6; }
+if test "${ac_cv_lib_socket_socket+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lsocket -lnsl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_socket_socket=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_socket=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6; }
+if test $ac_cv_lib_socket_socket =3D yes; then
+  LIBS=3D"-lsocket -lnsl $LIBS"
+fi
+
+fi
+
+    # DLPI needs putmsg under HPUX so test for -lstr while we're at it
+    { echo "$as_me:$LINENO: checking for library containing putmsg" >&5
+echo $ECHO_N "checking for library containing putmsg... $ECHO_C" >&6; }
+if test "${ac_cv_search_putmsg+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_func_search_save_LIBS=3D$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char putmsg ();
+int
+main ()
+{
+return putmsg ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' str; do
+  if test -z "$ac_lib"; then
+    ac_res=3D"none required"
+  else
+    ac_res=3D-l$ac_lib
+    LIBS=3D"-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_search_putmsg=3D$ac_res
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_putmsg+set}" =3D set; then
+  break
+fi
+done
+if test "${ac_cv_search_putmsg+set}" =3D set; then
+  :
+else
+  ac_cv_search_putmsg=3Dno
+fi
+rm conftest.$ac_ext
+LIBS=3D$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_putmsg" >&5
+echo "${ECHO_T}$ac_cv_search_putmsg" >&6; }
+ac_res=3D$ac_cv_search_putmsg
+if test "$ac_res" !=3D no; then
+  test "$ac_res" =3D "none required" || LIBS=3D"$ac_res $LIBS"
+
+fi
+
+
+
+#
+# You are in a twisty little maze of UN*Xes, all different.
+# Some might not have ether_hostton().
+# Some might have it, but not declare it in any header file.
+# Some might have it, but declare it in <netinet/if_ether.h>.
+# Some might have it, but declare it in <netinet/ether.h>
+# (And some might have it but document it as something declared in
+# <netinet/ethernet.h>, although <netinet/if_ether.h> appears to work.)
+#
+# Before you is a C compiler.
+#
+
+for ac_func in ether_hostton
+do
+as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test "$ac_cv_func_ether_hostton" =3D yes; then
+	#
+	# OK, we have ether_hostton().  Do we have <netinet/if_ether.h>?
+	#
+	if test "$ac_cv_header_netinet_if_ether_h" =3D yes; then
+		#
+		# Yes.  Does it declare ether_hostton()?
+		#
+		{ echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5
+echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_ether_hostton+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+struct mbuf;
+struct rtentry;
+#include <net/if.h>
+#include <netinet/if_ether.h>
+
+
+int
+main ()
+{
+#ifndef ether_hostton
+  (void) ether_hostton;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_ether_hostton=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl_ether_hostton=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5
+echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; }
+if test $ac_cv_have_decl_ether_hostton =3D yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NETINET_IF_ETHER_H_DECLARES_ETHER_HOSTTON
+_ACEOF
+
+
+fi
+
+	fi
+	#
+	# Did that succeed?
+	#
+	if test "$ac_cv_have_decl_ether_hostton" !=3D yes; then
+		#
+		# No, how about <netinet/ether.h>, as on Linux?
+		#
+
+for ac_header in netinet/ether.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=3Dno
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
+    ac_header_preproc=3Dyes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=3D\$ac_header_preproc"
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+		if test "$ac_cv_header_netinet_ether_h" =3D yes; then
+			#
+			# We have it - does it declare ether_hostton()?
+			# Unset ac_cv_have_decl_ether_hostton so we don't
+			# treat the previous failure as a cached value and
+			# suppress the next test.
+			#
+			unset ac_cv_have_decl_ether_hostton
+			{ echo "$as_me:$LINENO: checking whether ether_hostton is declared" >&5
+echo $ECHO_N "checking whether ether_hostton is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_ether_hostton+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <netinet/ether.h>
+
+
+int
+main ()
+{
+#ifndef ether_hostton
+  (void) ether_hostton;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_have_decl_ether_hostton=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_decl_ether_hostton=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_ether_hostton" >&5
+echo "${ECHO_T}$ac_cv_have_decl_ether_hostton" >&6; }
+if test $ac_cv_have_decl_ether_hostton =3D yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define NETINET_ETHER_H_DECLARES_ETHER_HOSTTON
+_ACEOF
+
+
+fi
+
+		fi
+	fi
+	#
+	# Is ether_hostton() declared?
+	#
+	if test "$ac_cv_have_decl_ether_hostton" !=3D yes; then
+		#
+		# No, we'll have to declare it ourselves.
+		# Do we have "struct ether_addr"?
+		#
+		{ echo "$as_me:$LINENO: checking for struct ether_addr" >&5
+echo $ECHO_N "checking for struct ether_addr... $ECHO_C" >&6; }
+if test "${ac_cv_type_struct_ether_addr+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+struct mbuf;
+struct rtentry;
+#include <net/if.h>
+#include <netinet/if_ether.h>
+
+
+typedef struct ether_addr ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_struct_ether_addr=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_struct_ether_addr=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_ether_addr" >&5
+echo "${ECHO_T}$ac_cv_type_struct_ether_addr" >&6; }
+if test $ac_cv_type_struct_ether_addr =3D yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_ETHER_ADDR 1
+_ACEOF
+
+
+fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DECL_ETHER_HOSTTON 0
+_ACEOF
+
+	else
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DECL_ETHER_HOSTTON 1
+_ACEOF
+
+	fi
+fi
+
+{ echo "$as_me:$LINENO: checking if --disable-protochain option is specifi=
ed" >&5
+echo $ECHO_N "checking if --disable-protochain option is specified... $ECH=
O_C" >&6; }
+# Check whether --enable-protochain was given.
+if test "${enable_protochain+set}" =3D set; then
+  enableval=3D$enable_protochain;
+fi
+
+case "x$enable_protochain" in
+xyes)	enable_protochain=3Denabled	;;
+xno)	enable_protochain=3Ddisabled	;;
+x)	enable_protochain=3Denabled	;;
+esac
+
+if test "$enable_protochain" =3D "disabled"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_PROTOCHAIN 1
+_ACEOF
+
+fi
+{ echo "$as_me:$LINENO: result: ${enable_protochain}" >&5
+echo "${ECHO_T}${enable_protochain}" >&6; }
+
+#
+# SITA support is mutually exclusive with native capture support;
+# "--with-sita" selects SITA support.
+#
+
+# Check whether --with-sita was given.
+if test "${with_sita+set}" =3D set; then
+  withval=3D$with_sita;
+	if test ! "x$withval" =3D "xno" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define SITA 1
+_ACEOF
+
+		{ echo "$as_me:$LINENO: Enabling SITA ACN support" >&5
+echo "$as_me: Enabling SITA ACN support" >&6;}
+		V_PCAP=3Dsita
+		V_FINDALLDEVS=3Dsita
+	fi
+
+else
+
+if test -z "$with_pcap" && test "$cross_compiling" =3D yes; then
+	{ { echo "$as_me:$LINENO: error: pcap type not determined when cross-comp=
iling; use --with-pcap=3D..." >&5
+echo "$as_me: error: pcap type not determined when cross-compiling; use --=
with-pcap=3D..." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# Check whether --with-pcap was given.
+if test "${with_pcap+set}" =3D set; then
+  withval=3D$with_pcap;
+fi
+
+{ echo "$as_me:$LINENO: checking packet capture type" >&5
+echo $ECHO_N "checking packet capture type... $ECHO_C" >&6; }
+if test ! -z "$with_pcap" ; then
+	V_PCAP=3D"$withval"
+elif test -r /dev/bpf -o -h /dev/bpf ; then
+	#
+	# Cloning BPF device.
+	#
+	V_PCAP=3Dbpf
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CLONING_BPF 1
+_ACEOF
+
+elif test -r /dev/bpf0 ; then
+	V_PCAP=3Dbpf
+elif test -r /usr/include/net/pfilt.h ; then
+	V_PCAP=3Dpf
+elif test -r /dev/enet ; then
+	V_PCAP=3Denet
+elif test -r /dev/nit ; then
+	V_PCAP=3Dsnit
+elif test -r /usr/include/sys/net/nit.h ; then
+	V_PCAP=3Dnit
+elif test -r /usr/include/linux/socket.h ; then
+	V_PCAP=3Dlinux
+elif test -r /usr/include/net/raw.h ; then
+	V_PCAP=3Dsnoop
+elif test -r /usr/include/odmi.h ; then
+	#
+	# On AIX, the BPF devices might not yet be present - they're
+	# created the first time libpcap runs after booting.
+	# We check for odmi.h instead.
+	#
+	V_PCAP=3Dbpf
+elif test -c /dev/bpf0 ; then		# check again in case not readable
+	V_PCAP=3Dbpf
+elif test -r /usr/include/sys/dlpi.h ; then
+	V_PCAP=3Ddlpi
+elif test -c /dev/enet ; then		# check again in case not readable
+	V_PCAP=3Denet
+elif test -c /dev/nit ; then		# check again in case not readable
+	V_PCAP=3Dsnit
+else
+	V_PCAP=3Dnull
+fi
+{ echo "$as_me:$LINENO: result: $V_PCAP" >&5
+echo "${ECHO_T}$V_PCAP" >&6; }
+
+#
+# Do capture-mechanism-dependent tests.
+#
+case "$V_PCAP" in
+dlpi)
+	#
+	# Checks to see if Solaris has the public libdlpi(3LIB) library.
+	# Note: The existence of /usr/include/libdlpi.h does not mean it is the
+	# public libdlpi(3LIB) version. Before libdlpi was made public, a
+	# private version also existed, which did not have the same APIs.
+	# Due to a gcc bug, the default search path for 32-bit libraries does
+	# not include /lib, we add it explicitly here.
+	# [http://bugs.opensolaris.org/view_bug.do?bug_id=3D6619485].
+	# Also, due to the bug above applications that link to libpcap with
+	# libdlpi will have to add "-L/lib" option to "configure".
+	#
+	saved_ldflags=3D$LDFLAGS
+	LDFLAGS=3D"$LIBS -L/lib"
+	{ echo "$as_me:$LINENO: checking for dlpi_walk in -ldlpi" >&5
+echo $ECHO_N "checking for dlpi_walk in -ldlpi... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dlpi_dlpi_walk+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-ldlpi  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlpi_walk ();
+int
+main ()
+{
+return dlpi_walk ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dlpi_dlpi_walk=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dlpi_dlpi_walk=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dlpi_dlpi_walk" >&5
+echo "${ECHO_T}$ac_cv_lib_dlpi_dlpi_walk" >&6; }
+if test $ac_cv_lib_dlpi_dlpi_walk =3D yes; then
+  LIBS=3D"-ldlpi $LIBS"
+		V_PCAP=3Dlibdlpi
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBDLPI 1
+_ACEOF
+
+else
+  V_PCAP=3Ddlpi
+fi
+
+	LDFLAGS=3D$saved_ldflags
+
+	#
+	# Checks whether <sys/dlpi.h> is usable, to catch weird SCO
+	# versions of DLPI.
+	#
+	{ echo "$as_me:$LINENO: checking whether <sys/dlpi.h> is usable" >&5
+echo $ECHO_N "checking whether <sys/dlpi.h> is usable... $ECHO_C" >&6; }
+	if test "${ac_cv_sys_dlpi_usable+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+			#include <sys/types.h>
+			#include <sys/time.h>
+			#include <sys/dlpi.h>
+
+int
+main ()
+{
+int i =3D DL_PROMISC_PHYS;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_dlpi_usable=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_sys_dlpi_usable=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+	{ echo "$as_me:$LINENO: result: $ac_cv_sys_dlpi_usable" >&5
+echo "${ECHO_T}$ac_cv_sys_dlpi_usable" >&6; }
+	if test $ac_cv_sys_dlpi_usable =3D no ; then
+		{ { echo "$as_me:$LINENO: error: <sys/dlpi.h> is not usable on this syst=
em; it probably has a non-standard DLPI" >&5
+echo "$as_me: error: <sys/dlpi.h> is not usable on this system; it probabl=
y has a non-standard DLPI" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+
+	#
+	# Check whether we have a /dev/dlpi device or have multiple devices.
+	#
+	{ echo "$as_me:$LINENO: checking for /dev/dlpi device" >&5
+echo $ECHO_N "checking for /dev/dlpi device... $ECHO_C" >&6; }
+	if test -c /dev/dlpi ; then
+		{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DEV_DLPI 1
+_ACEOF
+
+	else
+		{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+		dir=3D"/dev/dlpi"
+		{ echo "$as_me:$LINENO: checking for $dir directory" >&5
+echo $ECHO_N "checking for $dir directory... $ECHO_C" >&6; }
+		if test -d $dir ; then
+			{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define PCAP_DEV_PREFIX "$dir"
+_ACEOF
+
+		else
+			{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+		fi
+	fi
+
+	#
+	# This check is for Solaris with DLPI support for passive modes.
+	# See dlpi(7P) for more details.
+	#
+	{ echo "$as_me:$LINENO: checking if dl_passive_req_t struct exists" >&5
+echo $ECHO_N "checking if dl_passive_req_t struct exists... $ECHO_C" >&6; }
+       if test "${ac_cv_lbl_has_dl_passive_req_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#       include <sys/types.h>
+#       include <sys/dlpi.h>
+int
+main ()
+{
+u_int i =3D sizeof(dl_passive_req_t)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_lbl_has_dl_passive_req_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lbl_has_dl_passive_req_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    { echo "$as_me:$LINENO: result: $ac_cv_lbl_has_dl_passive_req_t" >&5
+echo "${ECHO_T}$ac_cv_lbl_has_dl_passive_req_t" >&6; }
+    if test $ac_cv_lbl_has_dl_passive_req_t =3D yes ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DLPI_PASSIVE 1
+_ACEOF
+
+    fi
+	;;
+
+linux)
+	#
+	# Do we have the wireless extensions?
+	#
+
+for ac_header in linux/wireless.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/socket.h>
+#include <linux/if.h>
+#include <linux/types.h>
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+	#
+	# Do we have libnl?
+	#
+
+# Check whether --with-libnl was given.
+if test "${with_libnl+set}" =3D set; then
+  withval=3D$with_libnl; with_libnl=3D$withval
+fi
+
+
+	if test x$with_libnl !=3D xno ; then
+		#
+		# Try libnl 2.x first.
+		#
+		{ echo "$as_me:$LINENO: checking for nl_socket_alloc in -lnl" >&5
+echo $ECHO_N "checking for nl_socket_alloc in -lnl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_nl_nl_socket_alloc+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lnl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_socket_alloc ();
+int
+main ()
+{
+return nl_socket_alloc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_nl_nl_socket_alloc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nl_nl_socket_alloc=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_socket_alloc" >&5
+echo "${ECHO_T}$ac_cv_lib_nl_nl_socket_alloc" >&6; }
+if test $ac_cv_lib_nl_nl_socket_alloc =3D yes; then
+
+			#
+			# Yes, we have libnl 2.x.
+			#
+			LIBS=3D"-lnl-genl -lnl $LIBS"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBNL 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBNL_2_x 1
+_ACEOF
+
+
+else
+
+			#
+			# No, we don't; do we have libnl 1.x?
+			#
+			{ echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5
+echo $ECHO_N "checking for nl_handle_alloc in -lnl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_nl_nl_handle_alloc+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lnl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_handle_alloc ();
+int
+main ()
+{
+return nl_handle_alloc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_nl_nl_handle_alloc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nl_nl_handle_alloc=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_handle_alloc" >&5
+echo "${ECHO_T}$ac_cv_lib_nl_nl_handle_alloc" >&6; }
+if test $ac_cv_lib_nl_nl_handle_alloc =3D yes; then
+
+				#
+				# Yes.
+				#
+				LIBS=3D"-lnl $LIBS"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBNL 1
+_ACEOF
+
+
+else
+
+				#
+				# No, we don't have libnl at all.
+				#
+				if test x$with_libnl =3D xyes ; then
+					{ { echo "$as_me:$LINENO: error: libnl support requested but libnl no=
t found" >&5
+echo "$as_me: error: libnl support requested but libnl not found" >&2;}
+   { (exit 1); exit 1; }; }
+				fi
+
+fi
+
+
+fi
+
+	fi
+
+
+for ac_header in linux/ethtool.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+$ac_includes_default
+#include <linux/types.h>
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+	{ echo "$as_me:$LINENO: checking if if_packet.h has tpacket_stats defined=
" >&5
+echo $ECHO_N "checking if if_packet.h has tpacket_stats defined... $ECHO_C=
" >&6; }
+   if test "${ac_cv_lbl_tpacket_stats+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#  include <linux/if_packet.h>
+int
+main ()
+{
+struct tpacket_stats stats
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_lbl_tpacket_stats=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lbl_tpacket_stats=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+   { echo "$as_me:$LINENO: result: $ac_cv_lbl_tpacket_stats" >&5
+echo "${ECHO_T}$ac_cv_lbl_tpacket_stats" >&6; }
+   if test $ac_cv_lbl_tpacket_stats =3D yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TPACKET_STATS 1
+_ACEOF
+
+   fi
+	{ echo "$as_me:$LINENO: checking if tpacket_auxdata struct has tp_vlan_tc=
i member" >&5
+echo $ECHO_N "checking if tpacket_auxdata struct has tp_vlan_tci member...=
 $ECHO_C" >&6; }
+    if test "${ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci+set}" =3D set; =
then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#	include <sys/types.h>
+#	include <linux/if_packet.h>
+int
+main ()
+{
+u_int i =3D sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+    { echo "$as_me:$LINENO: result: $ac_cv_lbl_linux_tpacket_auxdata_tp_vl=
an_tci" >&5
+echo "${ECHO_T}$ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci" >&6; }
+    if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci =3D yes ; then
+	    HAVE_LINUX_TPACKET_AUXDATA=3Dtp_vlan_tci
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 1
+_ACEOF
+
+    fi
+	;;
+
+bpf)
+	#
+	# Check whether we have the *BSD-style ioctls.
+	#
+
+for ac_header in net/if_media.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=3Dno
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
+    ac_header_preproc=3Dyes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=3D\$ac_header_preproc"
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
 	{ echo "$as_me:$LINENO: checking whether the system supports zerocopy BPF=
" >&5
 echo $ECHO_N "checking whether the system supports zerocopy BPF... $ECHO_C=
" >&6; }
 	cat >conftest.$ac_ext <<_ACEOF
@@ -8602,7 +9034,7 @@
=20
 	if test -z "$dag_tools_dir"; then
 	    dag_tools_dir=3D"$dag_root/tools"
-		fi
+	fi
=20
 	if test -r $dag_include_dir/dagapi.h; then
 		ac_cv_lbl_dag_api=3Dyes
@@ -8612,142 +9044,8 @@
 fi
=20
 if test $ac_cv_lbl_dag_api =3D yes; then
-
-	{ echo "$as_me:$LINENO: checking dagapi.o" >&5
-echo $ECHO_N "checking dagapi.o... $ECHO_C" >&6; }
-	dagapi_obj=3Dno
-	if test -r $dag_tools_dir/dagapi.o; then
-		# 2.4.x.
-		dagapi_obj=3D$dag_tools_dir/dagapi.o
-	elif test -r $dag_lib_dir/dagapi.o; then
-		# 2.5.x.
-		dagapi_obj=3D$dag_lib_dir/dagapi.o
-	elif test -r $dag_lib_dir/libdag.a; then
-		# 2.5.x.
-		ar x $dag_lib_dir/libdag.a dagapi.o 2>/dev/null
-		if test -r ./dagapi.o; then
-		    dagapi_obj=3D./dagapi.o
-		else
-		    ar x $dag_lib_dir/libdag.a libdag_la-dagapi.o 2>/dev/null
-		    if test -r ./libdag_la-dagapi.o; then
-		       dagapi_obj=3D./libdag_la-dagapi.o
-		    fi
-		fi
-	fi
-
-	if test $dagapi_obj =3D no; then
-		{ echo "$as_me:$LINENO: result: no (checked $dag_lib_dir  $dag_tools_dir=
  $dag_lib_dir/libdag.a)" >&5
-echo "${ECHO_T}no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/libd=
ag.a)" >&6; }
-			ac_cv_lbl_dag_api=3Dno
-	else
-		{ echo "$as_me:$LINENO: result: yes ($dagapi_obj)" >&5
-echo "${ECHO_T}yes ($dagapi_obj)" >&6; }
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-
-	{ echo "$as_me:$LINENO: checking dagopts.o" >&5
-echo $ECHO_N "checking dagopts.o... $ECHO_C" >&6; }
-	dagopts_obj=3Dno
-	if test -r $dag_tools_dir/dagopts.o; then
-		# 2.4.x.
-		dagopts_obj=3D$dag_tools_dir/dagopts.o
-	elif test -r $dag_lib_dir/dagopts.o; then
-		# 2.5.x.
-		dagopts_obj=3D$dag_lib_dir/dagopts.o
-	elif test -r $dag_lib_dir/libdag.a; then
-		# 2.5.x.
-		ar x $dag_lib_dir/libdag.a dagopts.o 2>/dev/null
-		if test -r ./dagopts.o; then
-		    dagopts_obj=3D./dagopts.o
-		else
-		    ar x $dag_lib_dir/libdag.a libdag_la-dagopts.o 2>/dev/null
-		    if test -r ./libdag_la-dagopts.o; then
-		       dagopts_obj=3D./libdag_la-dagopts.o
-		    fi
-		fi
-	fi
-
-	if test $dagopts_obj =3D no; then
-		{ echo "$as_me:$LINENO: result: no (checked $dag_lib_dir  $dag_tools_dir=
  $dag_lib_dir/libdag.a)" >&5
-echo "${ECHO_T}no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/libd=
ag.a)" >&6; }
-		ac_cv_lbl_dag_api=3Dno
-	else
-		{ echo "$as_me:$LINENO: result: yes ($dagopts_obj)" >&5
-echo "${ECHO_T}yes ($dagopts_obj)" >&6; }
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-	# Under 2.5.x only we need to add dagreg.o.
-	if test -r $dag_include_dir/dagreg.h; then
-		{ echo "$as_me:$LINENO: checking dagreg.o" >&5
-echo $ECHO_N "checking dagreg.o... $ECHO_C" >&6; }
-		dagreg_obj=3Dno
-		if test -r $dag_lib_dir/dagreg.o; then
-			# Object file is ready and waiting.
-			dagreg_obj=3D$dag_lib_dir/dagreg.o
-		elif test -r $dag_lib_dir/libdag.a; then
-			# Extract from libdag.a.
-			ar x $dag_lib_dir/libdag.a dagreg.o 2>/dev/null
-			if test -r ./dagreg.o; then
-				dagreg_obj=3D./dagreg.o
-			else
-				ar x $dag_lib_dir/libdag.a libdag_la-dagreg.o 2>/dev/null
-				if test -r ./libdag_la-dagreg.o; then
-				   dagreg_obj=3D./libdag_la-dagreg.o
-				fi
-			fi
-		fi
-
-		if test $dagreg_obj =3D no; then
-			{ echo "$as_me:$LINENO: result: no (checked $dag_lib_dir  $dag_lib_dir/=
libdag.a)" >&5
-echo "${ECHO_T}no (checked $dag_lib_dir  $dag_lib_dir/libdag.a)" >&6; }
-			ac_cv_lbl_dag_api=3Dno
-		else
-			{ echo "$as_me:$LINENO: result: yes ($dagreg_obj)" >&5
-echo "${ECHO_T}yes ($dagreg_obj)" >&6; }
-		fi
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-        # Under 2.5.x only we need to add dagutil.o.
-        if test -r $dag_include_dir/dagutil.h; then
-                { echo "$as_me:$LINENO: checking dagutil.o" >&5
-echo $ECHO_N "checking dagutil.o... $ECHO_C" >&6; }
-                dagutil_obj=3Dno
-                if test -r $dag_lib_dir/dagutil.o; then
-                        # Object file is ready and waiting.
-                        dagutil_obj=3D$dag_lib_dir/dagutil.o
-                elif test -r $dag_lib_dir/libdag.a; then
-                        # Extract from libdag.a.
-                        ar x $dag_lib_dir/libdag.a dagutil.o 2>/dev/null
-                        if test -r ./dagutil.o; then
-                                dagutil_obj=3D./dagutil.o
-                        else
-                                ar x $dag_lib_dir/libdag.a libdag_la-dagut=
il.o 2>/dev/null
-                                if test -r ./libdag_la-dagutil.o; then
-                                   dagutil_obj=3D./libdag_la-dagutil.o
-                                fi
-                        fi
-                fi
-
-                if test $dagutil_obj =3D no; then
-                        { echo "$as_me:$LINENO: result: no (checked $dag_l=
ib_dir  $dag_lib_dir/libdag.a)" >&5
-echo "${ECHO_T}no (checked $dag_lib_dir  $dag_lib_dir/libdag.a)" >&6; }
-                        ac_cv_lbl_dag_api=3Dno
-                else
-                        { echo "$as_me:$LINENO: result: yes ($dagutil_obj)=
" >&5
-echo "${ECHO_T}yes ($dagutil_obj)" >&6; }
-                fi
-        fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
 	V_INCLS=3D"$V_INCLS -I$dag_include_dir"
-	ADDLARCHIVEOBJS=3D"$ADDLARCHIVEOBJS $dagapi_obj $dagopts_obj $dagreg_obj =
$dagutil_obj"
+
 	if test $V_PCAP !=3D dag ; then
 		 SSRC=3D"pcap-dag.c"
 	fi
@@ -8964,6 +9262,7 @@
=20
 fi
=20
+
 	LDFLAGS=3D$saved_ldflags
=20
 	if test "$dag_streams" =3D 1; then
@@ -8973,6 +9272,83 @@
 _ACEOF
=20
 		LIBS=3D"$LIBS -ldag"
+		LDFLAGS=3D"$LDFLAGS -L$dag_lib_dir"
+
+		{ echo "$as_me:$LINENO: checking for vdag_set_device_info in -lvdag" >&5
+echo $ECHO_N "checking for vdag_set_device_info in -lvdag... $ECHO_C" >&6;=
 }
+if test "${ac_cv_lib_vdag_vdag_set_device_info+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=3D$LIBS
+LIBS=3D"-lvdag  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char vdag_set_device_info ();
+int
+main ()
+{
+return vdag_set_device_info ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_vdag_vdag_set_device_info=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_vdag_vdag_set_device_info=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=3D$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_vdag_vdag_set_device_info" >&5
+echo "${ECHO_T}$ac_cv_lib_vdag_vdag_set_device_info" >&6; }
+if test $ac_cv_lib_vdag_vdag_set_device_info =3D yes; then
+  ac_dag_have_vdag=3D"1"
+else
+  ac_dag_have_vdag=3D"0"
+fi
+
+		if test "$ac_dag_have_vdag" =3D 1; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DAG_VDAG 1
+_ACEOF
+
+			LIBS=3D"$LIBS -lpthread"
+		fi
 	fi
=20
=20
@@ -9540,6 +9916,49 @@
 darwin*)
 	DYEXT=3D"dylib"
 	V_CCOPT=3D"$V_CCOPT -fno-common"
+	# Check whether --enable-universal was given.
+if test "${enable_universal+set}" =3D set; then
+  enableval=3D$enable_universal;
+fi
+
+	if test "$enable_universal" !=3D "no"; then
+		case "$host_os" in
+
+		darwin9.*)
+			#
+			# Leopard.  Build for 32-bit PowerPC, 64-bit
+			# PowerPC, x86, and x86-64, with 32-bit PowerPC
+			# first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+			LDFLAGS=3D"$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+			;;
+
+		darwin10.*)
+			#
+			# Snow Leopard.  Build for x86-64, x86, and
+			# 32-bit PowerPC, with x86-64 first.  (That's
+			# what Apple does, even though Snow Leopard
+			# doesn't run on PPC, so PPC libpcap runs under
+			# Rosetta, and Rosetta doesn't support BPF
+			# ioctls, so PPC programs can't do live
+			# captures.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386 -arch ppc"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386 -arch ppc"
+			;;
+
+		darwin11.*)
+			#
+			# Lion.  Build for x86-64 and x86, with x86-64
+			# first.  (That's probably what Apple does,
+			# given that Rosetta is gone.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386"
+			;;
+		esac
+	fi
 	;;
=20
 hpux9*)
@@ -9607,7 +10026,7 @@
 	MAN_MISC_INFO=3D5
 	;;
=20
-linux*|freebsd*|netbsd*|openbsd*|dragonfly*)
+linux*|freebsd*|netbsd*|openbsd*|dragonfly*|kfreebsd*|gnu*)
 	DYEXT=3D"so"
=20
 	#
@@ -9801,6 +10220,102 @@
   RANLIB=3D"$ac_cv_prog_RANLIB"
 fi
=20
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a progra=
m name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=3D$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AR+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR=3D"$AR" # Let the user override the test.
+else
+as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=3D$as_save_IFS
+  test -z "$as_dir" && as_dir=3D.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_w=
ord$ac_exec_ext"; }; then
+    ac_cv_prog_AR=3D"${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=3D$as_save_IFS
+
+fi
+fi
+AR=3D$ac_cv_prog_AR
+if test -n "$AR"; then
+  { echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=3D$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=3D$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR=3D"$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=3D$as_save_IFS
+  test -z "$as_dir" && as_dir=3D.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_w=
ord$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR=3D"ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=3D$as_save_IFS
+
+fi
+fi
+ac_ct_AR=3D$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" =3D x; then
+    AR=3D""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect c=
ross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=3Dyes ;;
+esac
+    AR=3D$ac_ct_AR
+  fi
+else
+  AR=3D"$ac_cv_prog_AR"
+fi
+
=20
 rm -f os-proto.h
     if test "${LBL_CFLAGS+set}" =3D set; then
@@ -10161,22 +10676,26 @@
 #define PCAP_SUPPORT_USB 1
 _ACEOF
=20
-       USB_SRC=3Dpcap-usb-linux.c
-       { echo "$as_me:$LINENO: result: yes" >&5
+	USB_SRC=3Dpcap-usb-linux.c
+	{ echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
-       ac_usb_dev_name=3D`udevinfo -q name -p /sys/class/usb_device/usbmon=
 2>/dev/null`
-       if test $? -ne 0 ; then
-               ac_usb_dev_name=3D"usbmon"
-       fi
+	ac_usb_dev_name=3D`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/de=
v/null`
+	if test $? -ne 0 ; then
+	  ac_usb_dev_name=3D"usbmon"
+	fi
=20
 cat >>confdefs.h <<_ACEOF
 #define LINUX_USB_MON_DEV "/dev/$ac_usb_dev_name"
 _ACEOF
=20
-       { echo "$as_me:$LINENO: Device for USB sniffing is /dev/$ac_usb_dev=
_name" >&5
+	{ echo "$as_me:$LINENO: Device for USB sniffing is /dev/$ac_usb_dev_name"=
 >&5
 echo "$as_me: Device for USB sniffing is /dev/$ac_usb_dev_name" >&6;}
-
-for ac_header in linux/usbdevice_fs.h
+	#
+	# Do we have a version of <linux/compiler.h> available?
+	# If so, we might need it for <linux/usbdevice_fs.h>.
+	#
+
+for ac_header in linux/compiler.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -10315,16 +10834,220 @@
=20
 done
=20
-       if test "$ac_cv_header_linux_usbdevice_fs_h" =3D yes; then
-         #
-         # OK, does it define bRequestType?  Older versions of the kernel
-         # define fields with names like "requesttype, "request", and
-         # "value", rather than "bRequestType", "bRequest", and
-         # "wValue".
-         #
-         { echo "$as_me:$LINENO: checking if usbdevfs_ctrltransfer struct =
has bRequestType member" >&5
+	if test "$ac_cv_header_linux_compiler_h" =3D yes; then
+	  #
+	  # Yes - include it when testing for <linux/usbdevice_fs.h>.
+	  #
+
+for ac_header in linux/usbdevice_fs.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <linux/compiler.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+	else
+
+for ac_header in linux/usbdevice_fs.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=3Dno
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
+    ac_header_preproc=3Dyes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=3D\$ac_header_preproc"
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+	fi
+	if test "$ac_cv_header_linux_usbdevice_fs_h" =3D yes; then
+	  #
+	  # OK, does it define bRequestType?  Older versions of the kernel
+	  # define fields with names like "requesttype, "request", and
+	  # "value", rather than "bRequestType", "bRequest", and
+	  # "wValue".
+	  #
+	  { echo "$as_me:$LINENO: checking if usbdevfs_ctrltransfer struct has bR=
equestType member" >&5
 echo $ECHO_N "checking if usbdevfs_ctrltransfer struct has bRequestType me=
mber... $ECHO_C" >&6; }
-         if test "${ac_cv_usbdevfs_ctrltransfer_has_bRequestType+set}" =3D=
 set; then
+	  if test "${ac_cv_usbdevfs_ctrltransfer_has_bRequestType+set}" =3D set; =
then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -10338,7 +11061,10 @@
 #ifdef HAVE_SYS_BITYPES_H
 #include <sys/bitypes.h>
 #endif
-#            include <linux/usbdevice_fs.h>
+#ifdef HAVE_LINUX_COMPILER_H
+#include <linux/compiler.h>
+#endif
+#include <linux/usbdevice_fs.h>
 int
 main ()
 {
@@ -10375,21 +11101,109 @@
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
=20
-         { echo "$as_me:$LINENO: result: $ac_cv_usbdevfs_ctrltransfer_has_=
bRequestType" >&5
+	    { echo "$as_me:$LINENO: result: $ac_cv_usbdevfs_ctrltransfer_has_bReq=
uestType" >&5
 echo "${ECHO_T}$ac_cv_usbdevfs_ctrltransfer_has_bRequestType" >&6; }
-         if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType =3D yes ; t=
hen
+	    if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType =3D yes ; then
=20
 cat >>confdefs.h <<\_ACEOF
 #define HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE 1
 _ACEOF
=20
-         fi
-       fi
-       ;;
+	    fi
+	fi
+	;;
 *)
-       { echo "$as_me:$LINENO: result: no" >&5
+	{ echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
-       ;;
+	;;
+esac
+
+
+
+{ echo "$as_me:$LINENO: checking whether the platform could support netfil=
ter sniffing" >&5
+echo $ECHO_N "checking whether the platform could support netfilter sniffi=
ng... $ECHO_C" >&6; }
+case "$host_os" in
+linux*)
+	{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+	#
+	# Life's too short to deal with trying to get this to compile
+	# if you don't get the right types defined with
+	# __KERNEL_STRICT_NAMES getting defined by some other include.
+	#
+	# Check whether the includes Just Work.  If not, don't turn on
+	# netfilter support.
+	#
+	{ echo "$as_me:$LINENO: checking whether we can compile the netfilter sup=
port" >&5
+echo $ECHO_N "checking whether we can compile the netfilter support... $EC=
HO_C" >&6; }
+	if test "${ac_cv_netfilter_can_compile+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+$ac_includes_default
+#include <sys/socket.h>
+#include <linux/types.h>
+
+#include <linux/netlink.h>
+#include <linux/netfilter/nfnetlink.h>
+#include <linux/netfilter/nfnetlink_log.h>
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_netfilter_can_compile=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_netfilter_can_compile=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+	{ echo "$as_me:$LINENO: result: $ac_cv_netfilter_can_compile" >&5
+echo "${ECHO_T}$ac_cv_netfilter_can_compile" >&6; }
+	if test $ac_cv_netfilter_can_compile =3D yes ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define PCAP_SUPPORT_NETFILTER 1
+_ACEOF
+
+	  NETFILTER_SRC=3Dpcap-netfilter-linux.c
+	fi
+	;;
+*)
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+	;;
 esac
=20
=20
@@ -10405,7 +11219,7 @@
 if test "x$enable_bluetooth" !=3D "xno" ; then
 		case "$host_os" in
 	linux*)
-	       if test "${ac_cv_header_bluetooth_bluetooth_h+set}" =3D set; then
+		if test "${ac_cv_header_bluetooth_bluetooth_h+set}" =3D set; then
   { echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5
 echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6; }
 if test "${ac_cv_header_bluetooth_bluetooth_h+set}" =3D set; then
@@ -10537,8 +11351,8 @@
 #define PCAP_SUPPORT_BT 1
 _ACEOF
=20
-	          BT_SRC=3Dpcap-bt-linux.c
-	          { echo "$as_me:$LINENO: Bluetooth sniffing is supported" >&5
+		  BT_SRC=3Dpcap-bt-linux.c
+		  { echo "$as_me:$LINENO: Bluetooth sniffing is supported" >&5
 echo "$as_me: Bluetooth sniffing is supported" >&6;}
=20
 else
@@ -10548,11 +11362,11 @@
 fi
=20
=20
-	       ;;
+		;;
 	*)
-	       { echo "$as_me:$LINENO: no Bluetooth sniffing support implemented =
for $host_os" >&5
+		{ echo "$as_me:$LINENO: no Bluetooth sniffing support implemented for $h=
ost_os" >&5
 echo "$as_me: no Bluetooth sniffing support implemented for $host_os" >&6;}
-	       ;;
+		;;
 	esac
=20
=20
@@ -10639,6 +11453,155 @@
=20
 fi
=20
+case "$host_os" in
+linux*)
+
+for ac_header in linux/net_tstamp.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=3Dno
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
+    ac_header_preproc=3Dyes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
+
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=3D\$ac_header_preproc"
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+	;;
+*)
+	{ echo "$as_me:$LINENO: no hardware timestamp support implemented for $ho=
st_os" >&5
+echo "$as_me: no hardware timestamp support implemented for $host_os" >&6;}
+	;;
+esac
+
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
 # incompatible versions:
@@ -10723,7 +11686,7 @@
 ac_config_headers=3D"$ac_config_headers config.h"
=20
=20
-ac_config_files=3D"$ac_config_files Makefile pcap-filter.manmisc pcap-link=
type.manmisc pcap-savefile.manfile pcap.3pcap pcap_compile.3pcap pcap_datal=
ink.3pcap pcap_dump_open.3pcap pcap_list_datalinks.3pcap pcap_open_dead.3pc=
ap pcap_open_offline.3pcap"
+ac_config_files=3D"$ac_config_files Makefile pcap-filter.manmisc pcap-link=
type.manmisc pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap pcap_comp=
ile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap pcap_list_datalinks.3pca=
p pcap_list_tstamp_types.3pcap pcap_open_dead.3pcap pcap_open_offline.3pcap=
 pcap_set_tstamp_type.3pcap"
=20
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -11282,14 +12245,17 @@
     "Makefile") CONFIG_FILES=3D"$CONFIG_FILES Makefile" ;;
     "pcap-filter.manmisc") CONFIG_FILES=3D"$CONFIG_FILES pcap-filter.manmi=
sc" ;;
     "pcap-linktype.manmisc") CONFIG_FILES=3D"$CONFIG_FILES pcap-linktype.m=
anmisc" ;;
+    "pcap-tstamp.manmisc") CONFIG_FILES=3D"$CONFIG_FILES pcap-tstamp.manmi=
sc" ;;
     "pcap-savefile.manfile") CONFIG_FILES=3D"$CONFIG_FILES pcap-savefile.m=
anfile" ;;
     "pcap.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap.3pcap" ;;
     "pcap_compile.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_compile.3pcap=
" ;;
     "pcap_datalink.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_datalink.3pc=
ap" ;;
     "pcap_dump_open.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_dump_open.3=
pcap" ;;
     "pcap_list_datalinks.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_list_d=
atalinks.3pcap" ;;
+    "pcap_list_tstamp_types.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_lis=
t_tstamp_types.3pcap" ;;
     "pcap_open_dead.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_open_dead.3=
pcap" ;;
     "pcap_open_offline.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_open_off=
line.3pcap" ;;
+    "pcap_set_tstamp_type.3pcap") CONFIG_FILES=3D"$CONFIG_FILES pcap_set_t=
stamp_type.3pcap" ;;
=20
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target"=
 >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -11416,6 +12382,7 @@
 V_LEX!$V_LEX$ac_delim
 V_YACC!$V_YACC$ac_delim
 RANLIB!$RANLIB$ac_delim
+AR!$AR$ac_delim
 V_CCOPT!$V_CCOPT$ac_delim
 V_DEFS!$V_DEFS$ac_delim
 V_FINDALLDEVS!$V_FINDALLDEVS$ac_delim
@@ -11433,6 +12400,8 @@
 MAN_MISC_INFO!$MAN_MISC_INFO$ac_delim
 PCAP_SUPPORT_USB!$PCAP_SUPPORT_USB$ac_delim
 USB_SRC!$USB_SRC$ac_delim
+PCAP_SUPPORT_NETFILTER!$PCAP_SUPPORT_NETFILTER$ac_delim
+NETFILTER_SRC!$NETFILTER_SRC$ac_delim
 PCAP_SUPPORT_BT!$PCAP_SUPPORT_BT$ac_delim
 BT_SRC!$BT_SRC$ac_delim
 PCAP_SUPPORT_CAN!$PCAP_SUPPORT_CAN$ac_delim
@@ -11443,7 +12412,7 @@
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
=20
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` =3D 90=
; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` =3D 93=
; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/configure.in
--- a/head/contrib/libpcap/configure.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/configure.in	Wed Jul 25 16:21:35 2012 +0300
@@ -103,6 +103,8 @@
 dnl "AC_LBL_FIXINCLUDES" wouldn't work on some platforms such as Solaris.
 dnl
 AC_CHECK_HEADERS(sys/ioccom.h sys/sockio.h limits.h paths.h)
+AC_CHECK_HEADERS(linux/types.h)
+AC_CHECK_HEADERS(linux/if_packet.h netpacket/packet.h netpacket/if_packet.=
h)
 AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
 #include <sys/socket.h>
 #include <net/if.h>])
@@ -152,7 +154,7 @@
 AC_CHECK_FUNCS(vsnprintf snprintf,,
 	[needsnprintf=3Dyes])
 if test $needsnprintf =3D yes; then
-	AC_LIBOBJ(snprintf)
+	AC_LIBOBJ([snprintf])
 fi
=20
 #
@@ -410,23 +412,6 @@
 	;;
=20
 linux)
-	AC_MSG_CHECKING(Linux kernel version)
- 	if test "$cross_compiling" =3D yes; then
- 		AC_CACHE_VAL(ac_cv_linux_vers,
- 		    ac_cv_linux_vers=3Dunknown)
- 	else
- 		AC_CACHE_VAL(ac_cv_linux_vers,
- 		    ac_cv_linux_vers=3D`uname -r 2>&1 | \
- 			sed -n -e '$s/.* //' -e '$s/\..*//p'`)
- 	fi
-	AC_MSG_RESULT($ac_cv_linux_vers)
- 	if test $ac_cv_linux_vers =3D unknown ; then
- 		AC_MSG_ERROR(cannot determine linux version when cross-compiling)
- 	fi
-	if test $ac_cv_linux_vers -lt 2 ; then
-		AC_MSG_ERROR(version 2 or higher required; see the INSTALL doc for more =
info)
-	fi
-
 	#
 	# Do we have the wireless extensions?
 	#
@@ -445,15 +430,46 @@
 		with_libnl=3D$withval,,)
=20
 	if test x$with_libnl !=3D xno ; then
-		AC_CHECK_LIB(nl, nl_handle_alloc,
-			LIBS=3D"-lnl $LIBS"
-			AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]),
-			if test x$with_libnl =3D xyes ; then
-				AC_MSG_ERROR([libnl support requested but libnl not found])
-			fi
-		)
+		#
+		# Try libnl 2.x first.
+		#
+		AC_CHECK_LIB(nl, nl_socket_alloc,
+		[
+			#
+			# Yes, we have libnl 2.x.
+			#
+			LIBS=3D"-lnl-genl -lnl $LIBS"
+			AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
+			AC_DEFINE(HAVE_LIBNL_2_x,1,[if libnl exists and is version 2.x])
+		],
+		[
+			#
+			# No, we don't; do we have libnl 1.x?
+			#
+			AC_CHECK_LIB(nl, nl_handle_alloc,
+			[
+				#
+				# Yes.
+				#
+				LIBS=3D"-lnl $LIBS"
+				AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
+			],
+			[
+				#
+				# No, we don't have libnl at all.
+				#
+				if test x$with_libnl =3D xyes ; then
+					AC_MSG_ERROR([libnl support requested but libnl not found])
+				fi
+			])
+		])
 	fi
=20
+	AC_CHECK_HEADERS(linux/ethtool.h,,,
+	    [
+AC_INCLUDES_DEFAULT
+#include <linux/types.h>
+	    ])
 	AC_LBL_TPACKET_STATS
 	AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI
 	;;
@@ -727,7 +743,7 @@
 =09
 	if test -z "$dag_tools_dir"; then
 	    dag_tools_dir=3D"$dag_root/tools"
-		fi
+	fi
=20
 	if test -r $dag_include_dir/dagapi.h; then
 		ac_cv_lbl_dag_api=3Dyes
@@ -736,130 +752,8 @@
 fi
=20
 if test $ac_cv_lbl_dag_api =3D yes; then
+	V_INCLS=3D"$V_INCLS -I$dag_include_dir"
=20
-	AC_MSG_CHECKING([dagapi.o])=09
-	dagapi_obj=3Dno
-	if test -r $dag_tools_dir/dagapi.o; then
-		# 2.4.x.
-		dagapi_obj=3D$dag_tools_dir/dagapi.o
-	elif test -r $dag_lib_dir/dagapi.o; then
-		# 2.5.x.
-		dagapi_obj=3D$dag_lib_dir/dagapi.o
-	elif test -r $dag_lib_dir/libdag.a; then
-		# 2.5.x.
-		ar x $dag_lib_dir/libdag.a dagapi.o 2>/dev/null
-		if test -r ./dagapi.o; then
-		    dagapi_obj=3D./dagapi.o
-		else
-		    ar x $dag_lib_dir/libdag.a libdag_la-dagapi.o 2>/dev/null
-		    if test -r ./libdag_la-dagapi.o; then
-		       dagapi_obj=3D./libdag_la-dagapi.o
-		    fi	=09
-		fi
-	fi
-
-	if test $dagapi_obj =3D no; then
-		AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/li=
bdag.a)])
-			ac_cv_lbl_dag_api=3Dno
-	else
-		AC_MSG_RESULT([yes ($dagapi_obj)])
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-
-	AC_MSG_CHECKING([dagopts.o])=09
-	dagopts_obj=3Dno
-	if test -r $dag_tools_dir/dagopts.o; then
-		# 2.4.x.
-		dagopts_obj=3D$dag_tools_dir/dagopts.o
-	elif test -r $dag_lib_dir/dagopts.o; then
-		# 2.5.x.
-		dagopts_obj=3D$dag_lib_dir/dagopts.o
-	elif test -r $dag_lib_dir/libdag.a; then
-		# 2.5.x.
-		ar x $dag_lib_dir/libdag.a dagopts.o 2>/dev/null
-		if test -r ./dagopts.o; then
-		    dagopts_obj=3D./dagopts.o
-		else
-		    ar x $dag_lib_dir/libdag.a libdag_la-dagopts.o 2>/dev/null
-		    if test -r ./libdag_la-dagopts.o; then
-		       dagopts_obj=3D./libdag_la-dagopts.o
-		    fi
-		fi
-	fi
-
-	if test $dagopts_obj =3D no; then
-		AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_tools_dir  $dag_lib_dir/li=
bdag.a)])
-		ac_cv_lbl_dag_api=3Dno
-	else
-		AC_MSG_RESULT([yes ($dagopts_obj)])
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-	# Under 2.5.x only we need to add dagreg.o.
-	if test -r $dag_include_dir/dagreg.h; then
-		AC_MSG_CHECKING([dagreg.o])=09
-		dagreg_obj=3Dno
-		if test -r $dag_lib_dir/dagreg.o; then
-			# Object file is ready and waiting.
-			dagreg_obj=3D$dag_lib_dir/dagreg.o
-		elif test -r $dag_lib_dir/libdag.a; then
-			# Extract from libdag.a.
-			ar x $dag_lib_dir/libdag.a dagreg.o 2>/dev/null
-			if test -r ./dagreg.o; then
-				dagreg_obj=3D./dagreg.o
-			else
-				ar x $dag_lib_dir/libdag.a libdag_la-dagreg.o 2>/dev/null
-				if test -r ./libdag_la-dagreg.o; then
-				   dagreg_obj=3D./libdag_la-dagreg.o
-				fi
-			fi
-		fi
-
-		if test $dagreg_obj =3D no; then
-			AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_lib_dir/libdag.a)])
-			ac_cv_lbl_dag_api=3Dno
-		else
-			AC_MSG_RESULT([yes ($dagreg_obj)])
-		fi
-	fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-        # Under 2.5.x only we need to add dagutil.o.
-        if test -r $dag_include_dir/dagutil.h; then
-                AC_MSG_CHECKING([dagutil.o])
-                dagutil_obj=3Dno
-                if test -r $dag_lib_dir/dagutil.o; then
-                        # Object file is ready and waiting.
-                        dagutil_obj=3D$dag_lib_dir/dagutil.o
-                elif test -r $dag_lib_dir/libdag.a; then
-                        # Extract from libdag.a.
-                        ar x $dag_lib_dir/libdag.a dagutil.o 2>/dev/null
-                        if test -r ./dagutil.o; then
-                                dagutil_obj=3D./dagutil.o
-                        else
-                                ar x $dag_lib_dir/libdag.a libdag_la-dagut=
il.o 2>/dev/null
-                                if test -r ./libdag_la-dagutil.o; then
-                                   dagutil_obj=3D./libdag_la-dagutil.o
-                                fi
-                        fi
-                fi
-
-                if test $dagutil_obj =3D no; then
-                        AC_MSG_RESULT([no (checked $dag_lib_dir  $dag_lib_=
dir/libdag.a)])
-                        ac_cv_lbl_dag_api=3Dno
-                else
-                        AC_MSG_RESULT([yes ($dagutil_obj)])
-                fi
-        fi
-fi
-
-if test $ac_cv_lbl_dag_api =3D yes; then
-	V_INCLS=3D"$V_INCLS -I$dag_include_dir"
-	ADDLARCHIVEOBJS=3D"$ADDLARCHIVEOBJS $dagapi_obj $dagopts_obj $dagreg_obj =
$dagutil_obj"
 	if test $V_PCAP !=3D dag ; then
 		 SSRC=3D"pcap-dag.c"
 	fi
@@ -874,11 +768,19 @@
 		AC_DEFINE(HAVE_DAG_GET_ERF_TYPES, 1, [define if you have dag_get_erf_typ=
es()])])
 	AC_CHECK_LIB([dag],[dag_get_stream_erf_types], [
 		AC_DEFINE(HAVE_DAG_GET_STREAM_ERF_TYPES, 1, [define if you have dag_get_=
stream_erf_types()])])
+
 	LDFLAGS=3D$saved_ldflags
=20
 	if test "$dag_streams" =3D 1; then
 		AC_DEFINE(HAVE_DAG_STREAMS_API, 1, [define if you have streams capable D=
AG API])
 		LIBS=3D"$LIBS -ldag"
+		LDFLAGS=3D"$LDFLAGS -L$dag_lib_dir"
+	=09
+		AC_CHECK_LIB([vdag],[vdag_set_device_info], [ac_dag_have_vdag=3D"1"], [a=
c_dag_have_vdag=3D"0"])
+		if test "$ac_dag_have_vdag" =3D 1; then
+			AC_DEFINE(HAVE_DAG_VDAG, 1, [define if you have vdag_set_device_info()])
+			LIBS=3D"$LIBS -lpthread"
+		fi
 	fi
=20
 	AC_DEFINE(HAVE_DAG_API, 1, [define if you have the DAG API])
@@ -1169,6 +1071,46 @@
 darwin*)
 	DYEXT=3D"dylib"
 	V_CCOPT=3D"$V_CCOPT -fno-common"
+	AC_ARG_ENABLE(universal,
+	AC_HELP_STRING([--disable-universal],[don't build universal on OS X]))
+	if test "$enable_universal" !=3D "no"; then
+		case "$host_os" in
+
+		darwin9.*)
+			#
+			# Leopard.  Build for 32-bit PowerPC, 64-bit
+			# PowerPC, x86, and x86-64, with 32-bit PowerPC
+			# first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+			LDFLAGS=3D"$LDFLAGS -arch ppc -arch ppc64 -arch i386 -arch x86_64"
+			;;
+
+		darwin10.*)
+			#
+			# Snow Leopard.  Build for x86-64, x86, and
+			# 32-bit PowerPC, with x86-64 first.  (That's
+			# what Apple does, even though Snow Leopard
+			# doesn't run on PPC, so PPC libpcap runs under
+			# Rosetta, and Rosetta doesn't support BPF
+			# ioctls, so PPC programs can't do live
+			# captures.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386 -arch ppc"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386 -arch ppc"
+			;;
+
+		darwin11.*)
+			#
+			# Lion.  Build for x86-64 and x86, with x86-64
+			# first.  (That's probably what Apple does,
+			# given that Rosetta is gone.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386"
+			;;
+		esac
+	fi
 	;;
=20
 hpux9*)
@@ -1234,7 +1176,7 @@
 	MAN_MISC_INFO=3D5
 	;;
=20
-linux*|freebsd*|netbsd*|openbsd*|dragonfly*)
+linux*|freebsd*|netbsd*|openbsd*|dragonfly*|kfreebsd*|gnu*)
 	DYEXT=3D"so"
=20
 	#
@@ -1283,6 +1225,7 @@
 esac
=20
 AC_PROG_RANLIB
+AC_CHECK_TOOL([AR], [ar])
=20
 AC_LBL_DEVEL(V_CCOPT)
=20
@@ -1325,48 +1268,103 @@
 AC_MSG_CHECKING(for USB sniffing support)
 case "$host_os" in
 linux*)
-       AC_DEFINE(PCAP_SUPPORT_USB, 1, [target host supports USB sniffing])
-       USB_SRC=3Dpcap-usb-linux.c
-       AC_MSG_RESULT(yes)
-       ac_usb_dev_name=3D`udevinfo -q name -p /sys/class/usb_device/usbmon=
 2>/dev/null`
-       if test $? -ne 0 ; then
-               ac_usb_dev_name=3D"usbmon"
-       fi
-       AC_DEFINE_UNQUOTED(LINUX_USB_MON_DEV, "/dev/$ac_usb_dev_name", [pat=
h for device for USB sniffing])
-       AC_MSG_NOTICE(Device for USB sniffing is /dev/$ac_usb_dev_name)
-       AC_CHECK_HEADERS(linux/usbdevice_fs.h)
-       if test "$ac_cv_header_linux_usbdevice_fs_h" =3D yes; then
-         #
-         # OK, does it define bRequestType?  Older versions of the kernel
-         # define fields with names like "requesttype, "request", and
-         # "value", rather than "bRequestType", "bRequest", and
-         # "wValue".
-         #
-         AC_MSG_CHECKING(if usbdevfs_ctrltransfer struct has bRequestType =
member)
-         AC_CACHE_VAL(ac_cv_usbdevfs_ctrltransfer_has_bRequestType,
-           AC_TRY_COMPILE([
+	AC_DEFINE(PCAP_SUPPORT_USB, 1, [target host supports USB sniffing])
+	USB_SRC=3Dpcap-usb-linux.c
+	AC_MSG_RESULT(yes)
+	ac_usb_dev_name=3D`udevinfo -q name -p /sys/class/usb_device/usbmon 2>/de=
v/null`
+	if test $? -ne 0 ; then
+	  ac_usb_dev_name=3D"usbmon"
+	fi
+	AC_DEFINE_UNQUOTED(LINUX_USB_MON_DEV, "/dev/$ac_usb_dev_name", [path for =
device for USB sniffing])
+	AC_MSG_NOTICE(Device for USB sniffing is /dev/$ac_usb_dev_name)
+	#
+	# Do we have a version of <linux/compiler.h> available?
+	# If so, we might need it for <linux/usbdevice_fs.h>.
+	#
+	AC_CHECK_HEADERS(linux/compiler.h)
+	if test "$ac_cv_header_linux_compiler_h" =3D yes; then
+	  #
+	  # Yes - include it when testing for <linux/usbdevice_fs.h>.
+	  #
+	  AC_CHECK_HEADERS(linux/usbdevice_fs.h,,,[#include <linux/compiler.h>])
+	else
+	  AC_CHECK_HEADERS(linux/usbdevice_fs.h)
+	fi
+	if test "$ac_cv_header_linux_usbdevice_fs_h" =3D yes; then
+	  #
+	  # OK, does it define bRequestType?  Older versions of the kernel
+	  # define fields with names like "requesttype, "request", and
+	  # "value", rather than "bRequestType", "bRequest", and
+	  # "wValue".
+	  #
+	  AC_MSG_CHECKING(if usbdevfs_ctrltransfer struct has bRequestType member)
+	  AC_CACHE_VAL(ac_cv_usbdevfs_ctrltransfer_has_bRequestType,
+	    AC_TRY_COMPILE([
 AC_INCLUDES_DEFAULT
 #ifdef HAVE_SYS_BITYPES_H
 #include <sys/bitypes.h>
 #endif
-#            include <linux/usbdevice_fs.h>],
-             [u_int i =3D sizeof(((struct usbdevfs_ctrltransfer *)0)->bReq=
uestType)],
-             ac_cv_usbdevfs_ctrltransfer_has_bRequestType=3Dyes,
-             ac_cv_usbdevfs_ctrltransfer_has_bRequestType=3Dno))
-         AC_MSG_RESULT($ac_cv_usbdevfs_ctrltransfer_has_bRequestType)
-         if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType =3D yes ; t=
hen
-	    AC_DEFINE(HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE,1,
-              [if struct usbdevfs_ctrltransfer has bRequestType])
-         fi
-       fi
-       ;;
+#ifdef HAVE_LINUX_COMPILER_H
+#include <linux/compiler.h>
+#endif
+#include <linux/usbdevice_fs.h>],
+	      [u_int i =3D sizeof(((struct usbdevfs_ctrltransfer *)0)->bRequestTy=
pe)],
+	      ac_cv_usbdevfs_ctrltransfer_has_bRequestType=3Dyes,
+	      ac_cv_usbdevfs_ctrltransfer_has_bRequestType=3Dno))
+	    AC_MSG_RESULT($ac_cv_usbdevfs_ctrltransfer_has_bRequestType)
+	    if test $ac_cv_usbdevfs_ctrltransfer_has_bRequestType =3D yes ; then
+	      AC_DEFINE(HAVE_USBDEVFS_CTRLTRANSFER_BREQUESTTYPE,1,
+	        [if struct usbdevfs_ctrltransfer has bRequestType])
+	    fi
+	fi
+	;;
 *)
-       AC_MSG_RESULT(no)
-       ;;
+	AC_MSG_RESULT(no)
+	;;
 esac
 AC_SUBST(PCAP_SUPPORT_USB)
 AC_SUBST(USB_SRC)
=20
+dnl check for netfilter sniffing support
+AC_MSG_CHECKING(whether the platform could support netfilter sniffing)
+case "$host_os" in
+linux*)
+	AC_MSG_RESULT(yes)
+	#
+	# Life's too short to deal with trying to get this to compile
+	# if you don't get the right types defined with
+	# __KERNEL_STRICT_NAMES getting defined by some other include.
+	#
+	# Check whether the includes Just Work.  If not, don't turn on
+	# netfilter support.
+	#
+	AC_MSG_CHECKING(whether we can compile the netfilter support)
+	AC_CACHE_VAL(ac_cv_netfilter_can_compile,
+	  AC_TRY_COMPILE([
+AC_INCLUDES_DEFAULT
+#include <sys/socket.h>
+#include <linux/types.h>
+
+#include <linux/netlink.h>
+#include <linux/netfilter/nfnetlink.h>
+#include <linux/netfilter/nfnetlink_log.h>],
+	    [],
+	    ac_cv_netfilter_can_compile=3Dyes,
+	    ac_cv_netfilter_can_compile=3Dno))
+	AC_MSG_RESULT($ac_cv_netfilter_can_compile)
+	if test $ac_cv_netfilter_can_compile =3D yes ; then
+	  AC_DEFINE(PCAP_SUPPORT_NETFILTER, 1,
+	    [target host supports netfilter sniffing])
+	  NETFILTER_SRC=3Dpcap-netfilter-linux.c
+	fi
+	;;
+*)
+	AC_MSG_RESULT(no)
+	;;
+esac
+AC_SUBST(PCAP_SUPPORT_NETFILTER)
+AC_SUBST(NETFILTER_SRC)
+
 AC_ARG_ENABLE([bluetooth],
 [AC_HELP_STRING([--enable-bluetooth],[enable Bluetooth support @<:@default=
=3Dyes, if support available@:>@])],
 ,enable_bluetooth=3Dyes)
@@ -1375,18 +1373,18 @@
 	dnl check for Bluetooth sniffing support
 	case "$host_os" in
 	linux*)
-	       AC_CHECK_HEADER(bluetooth/bluetooth.h,
-	       	[
+		AC_CHECK_HEADER(bluetooth/bluetooth.h,
+		[
 		  AC_DEFINE(PCAP_SUPPORT_BT, 1, [target host supports Bluetooth sniffing=
])
-	          BT_SRC=3Dpcap-bt-linux.c
-	          AC_MSG_NOTICE(Bluetooth sniffing is supported)
+		  BT_SRC=3Dpcap-bt-linux.c
+		  AC_MSG_NOTICE(Bluetooth sniffing is supported)
 		],
 		AC_MSG_NOTICE(Bluetooth sniffing is not supported; install bluez-lib dev=
el to enable it)
-	       )
-	       ;;
+		)
+		;;
 	*)
-	       AC_MSG_NOTICE(no Bluetooth sniffing support implemented for $host_=
os)
-	       ;;
+		AC_MSG_NOTICE(no Bluetooth sniffing support implemented for $host_os)
+		;;
 	esac
 	AC_SUBST(PCAP_SUPPORT_BT)
 	AC_SUBST(BT_SRC)
@@ -1416,15 +1414,26 @@
 	AC_SUBST(CAN_SRC)
 fi
=20
+dnl check for hardware timestamp support
+case "$host_os" in
+linux*)
+	AC_CHECK_HEADERS([linux/net_tstamp.h])
+	;;
+*)
+	AC_MSG_NOTICE(no hardware timestamp support implemented for $host_os)
+	;;
+esac
+
 AC_PROG_INSTALL
=20
 AC_CONFIG_HEADER(config.h)
=20
 AC_OUTPUT(Makefile pcap-filter.manmisc pcap-linktype.manmisc
-	pcap-savefile.manfile pcap.3pcap pcap_compile.3pcap
-	pcap_datalink.3pcap pcap_dump_open.3pcap
-	pcap_list_datalinks.3pcap pcap_open_dead.3pcap
-	pcap_open_offline.3pcap)
+	pcap-tstamp.manmisc pcap-savefile.manfile pcap.3pcap
+	pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap
+	pcap_list_datalinks.3pcap pcap_list_tstamp_types.3pcap
+	pcap_open_dead.3pcap pcap_open_offline.3pcap
+	pcap_set_tstamp_type.3pcap)
=20
 if test -f .devel ; then
 	make depend
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/ethertype.h
--- a/head/contrib/libpcap/ethertype.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/ethertype.h	Wed Jul 25 16:21:35 2012 +0300
@@ -117,3 +117,6 @@
 #ifndef	ETHERTYPE_LOOPBACK
 #define	ETHERTYPE_LOOPBACK	0x9000
 #endif
+#ifndef ETHERTYPE_8021QINQ
+#define ETHERTYPE_8021QINQ	0x9100
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/fad-getad.c
--- a/head/contrib/libpcap/fad-getad.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/fad-getad.c	Wed Jul 25 16:21:35 2012 +0300
@@ -61,15 +61,21 @@
 #endif
=20
 #ifdef AF_PACKET
+# ifdef HAVE_NETPACKET_PACKET_H
+/* Solaris 11 and later, Linux distributions with newer glibc */
+#  include <netpacket/packet.h>
+# else /* HAVE_NETPACKET_PACKET_H */
+/* LynxOS, Linux distributions with older glibc */
 # ifdef __Lynx__
 /* LynxOS */
 #  include <netpacket/if_packet.h>
-# else
+# else /* __Lynx__ */
 /* Linux */
 #  include <linux/types.h>
 #  include <linux/if_packet.h>
-# endif
-#endif
+# endif /* __Lynx__ */
+# endif /* HAVE_NETPACKET_PACKET_H */
+#endif /* AF_PACKET */
=20
 /*
  * This is fun.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/filtertest.c
--- a/head/contrib/libpcap/filtertest.c	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (=
2)
- * distributions including binary code include the above copyright notice =
and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials menti=
oning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of Califor=
nia,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior
- * written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef lint
-static const char copyright[] _U_ =3D
-    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
-The Regents of the University of California.  All rights reserved.\n";
-static const char rcsid[] _U_ =3D
-    "@(#) $Header: /tcpdump/master/libpcap/filtertest.c,v 1.2 2005-08-08 1=
7:50:13 guy Exp $ (LBL)";
-#endif
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <pcap.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <arpa/inet.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#ifndef HAVE___ATTRIBUTE__
-#define __attribute__(x)
-#endif
-
-static char *program_name;
-
-/* Forwards */
-static void usage(void) __attribute__((noreturn));
-static void error(const char *, ...)
-    __attribute__((noreturn, format (printf, 1, 2)));
-
-extern int optind;
-extern int opterr;
-extern char *optarg;
-
-/*
- * On Windows, we need to open the file in binary mode, so that
- * we get all the bytes specified by the size we get from "fstat()".
- * On UNIX, that's not necessary.  O_BINARY is defined on Windows;
- * we define it as 0 if it's not defined, so it does nothing.
- */
-#ifndef O_BINARY
-#define O_BINARY	0
-#endif
-
-static char *
-read_infile(char *fname)
-{
-	register int i, fd, cc;
-	register char *cp;
-	struct stat buf;
-
-	fd =3D open(fname, O_RDONLY|O_BINARY);
-	if (fd < 0)
-		error("can't open %s: %s", fname, pcap_strerror(errno));
-
-	if (fstat(fd, &buf) < 0)
-		error("can't stat %s: %s", fname, pcap_strerror(errno));
-
-	cp =3D malloc((u_int)buf.st_size + 1);
-	if (cp =3D=3D NULL)
-		error("malloc(%d) for %s: %s", (u_int)buf.st_size + 1,
-			fname, pcap_strerror(errno));
-	cc =3D read(fd, cp, (u_int)buf.st_size);
-	if (cc < 0)
-		error("read %s: %s", fname, pcap_strerror(errno));
-	if (cc !=3D buf.st_size)
-		error("short read %s (%d !=3D %d)", fname, cc, (int)buf.st_size);
-
-	close(fd);
-	/* replace "# comment" with spaces */
-	for (i =3D 0; i < cc; i++) {
-		if (cp[i] =3D=3D '#')
-			while (i < cc && cp[i] !=3D '\n')
-				cp[i++] =3D ' ';
-	}
-	cp[cc] =3D '\0';
-	return (cp);
-}
-
-/* VARARGS */
-static void
-error(const char *fmt, ...)
-{
-	va_list ap;
-
-	(void)fprintf(stderr, "%s: ", program_name);
-	va_start(ap, fmt);
-	(void)vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	if (*fmt) {
-		fmt +=3D strlen(fmt);
-		if (fmt[-1] !=3D '\n')
-			(void)fputc('\n', stderr);
-	}
-	exit(1);
-	/* NOTREACHED */
-}
-
-/*
- * Copy arg vector into a new buffer, concatenating arguments with spaces.
- */
-static char *
-copy_argv(register char **argv)
-{
-	register char **p;
-	register u_int len =3D 0;
-	char *buf;
-	char *src, *dst;
-
-	p =3D argv;
-	if (*p =3D=3D 0)
-		return 0;
-
-	while (*p)
-		len +=3D strlen(*p++) + 1;
-
-	buf =3D (char *)malloc(len);
-	if (buf =3D=3D NULL)
-		error("copy_argv: malloc");
-
-	p =3D argv;
-	dst =3D buf;
-	while ((src =3D *p++) !=3D NULL) {
-		while ((*dst++ =3D *src++) !=3D '\0')
-			;
-		dst[-1] =3D ' ';
-	}
-	dst[-1] =3D '\0';
-
-	return buf;
-}
-
-int
-main(int argc, char **argv)
-{
-	char *cp;
-	int op;
-	int dflag;
-	char *infile;
-	int Oflag;
-	long snaplen;
-	int dlt;
-	bpf_u_int32 netmask =3D PCAP_NETMASK_UNKNOWN;
-	char *cmdbuf;
-	pcap_t *pd;
-	struct bpf_program fcode;
-
-#ifdef WIN32
-	if(wsockinit() !=3D 0) return 1;
-#endif /* WIN32 */
-
-	dflag =3D 1;
-	infile =3D NULL;
-	Oflag =3D 1;
-	snaplen =3D 68;
- =20
-	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
-		program_name =3D cp + 1;
-	else
-		program_name =3D argv[0];
-
-	opterr =3D 0;
-	while ((op =3D getopt(argc, argv, "dF:m:Os:")) !=3D -1) {
-		switch (op) {
-
-		case 'd':
-			++dflag;
-			break;
-
-		case 'F':
-			infile =3D optarg;
-			break;
-
-		case 'O':
-			Oflag =3D 0;
-			break;
-
-		case 'm': {
-			in_addr_t addr;
-
-			addr =3D inet_addr(optarg);
-			if (addr =3D=3D INADDR_NONE)
-				error("invalid netmask %s", optarg);
-			netmask =3D addr;
-			break;
-		}
-
-		case 's': {
-			char *end;
-
-			snaplen =3D strtol(optarg, &end, 0);
-			if (optarg =3D=3D end || *end !=3D '\0'
-			    || snaplen < 0 || snaplen > 65535)
-				error("invalid snaplen %s", optarg);
-			else if (snaplen =3D=3D 0)
-				snaplen =3D 65535;
-			break;
-		}
-
-		default:
-			usage();
-			/* NOTREACHED */
-		}
-	}
-
-	if (optind >=3D argc) {
-		usage();
-		/* NOTREACHED */
-	}
-
-	dlt =3D pcap_datalink_name_to_val(argv[optind]);
-	if (dlt < 0)
-		error("invalid data link type %s", argv[optind]);
-=09
-	if (infile)
-		cmdbuf =3D read_infile(infile);
-	else
-		cmdbuf =3D copy_argv(&argv[optind+1]);
-
-	pd =3D pcap_open_dead(dlt, snaplen);
-	if (pd =3D=3D NULL)
-		error("Can't open fake pcap_t");
-
-	if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)
-		error("%s", pcap_geterr(pd));
-	bpf_dump(&fcode, dflag);
-	pcap_close(pd);
-	exit(0);
-}
-
-static void
-usage(void)
-{
-	(void)fprintf(stderr, "%s, with %s\n", program_name,
-	    pcap_lib_version());
-	(void)fprintf(stderr,
-	    "Usage: %s [-dO] [ -F file ] [ -m netmask] [ -s snaplen ] dlt [ expre=
ssion ]\n",
-	    program_name);
-	exit(1);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/findalldevstest.c
--- a/head/contrib/libpcap/findalldevstest.c	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-
-#include <pcap.h>
-
-static void ifprint(pcap_if_t *d);
-static char *iptos(bpf_u_int32 in);
-
-int main(int argc, char **argv)
-{
-  pcap_if_t *alldevs;
-  pcap_if_t *d;
-  char *s;
-  bpf_u_int32 net, mask;
- =20
-  char errbuf[PCAP_ERRBUF_SIZE+1];
-  if (pcap_findalldevs(&alldevs, errbuf) =3D=3D -1)
-  {
-    fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
-    exit(1);
-  }
-  for(d=3Dalldevs;d;d=3Dd->next)
-  {
-    ifprint(d);
-  }
-
-  if ( (s =3D pcap_lookupdev(errbuf)) =3D=3D NULL)
-  {
-    fprintf(stderr,"Error in pcap_lookupdev: %s\n",errbuf);
-  }
-  else
-  {
-    printf("Preferred device name: %s\n",s);
-  }
-
-  if (pcap_lookupnet(s, &net, &mask, errbuf) < 0)
-  {
-    fprintf(stderr,"Error in pcap_lookupnet: %s\n",errbuf);
-  }
-  else
-  {
-    printf("Preferred device is on network: %s/%s\n",iptos(net), iptos(mas=
k));
-  }
- =20
-  exit(0);
-}
-
-static void ifprint(pcap_if_t *d)
-{
-  pcap_addr_t *a;
-#ifdef INET6
-  char ntop_buf[INET6_ADDRSTRLEN];
-#endif
-
-  printf("%s\n",d->name);
-  if (d->description)
-    printf("\tDescription: %s\n",d->description);
-  printf("\tLoopback: %s\n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no");
-
-  for(a=3Dd->addresses;a;a=3Da->next) {
-    switch(a->addr->sa_family)
-    {
-      case AF_INET:
-        printf("\tAddress Family: AF_INET\n");
-        if (a->addr)
-          printf("\t\tAddress: %s\n",
-            inet_ntoa(((struct sockaddr_in *)(a->addr))->sin_addr));
-        if (a->netmask)
-          printf("\t\tNetmask: %s\n",
-            inet_ntoa(((struct sockaddr_in *)(a->netmask))->sin_addr));
-        if (a->broadaddr)
-          printf("\t\tBroadcast Address: %s\n",
-            inet_ntoa(((struct sockaddr_in *)(a->broadaddr))->sin_addr));
-        if (a->dstaddr)
-          printf("\t\tDestination Address: %s\n",
-            inet_ntoa(((struct sockaddr_in *)(a->dstaddr))->sin_addr));
-        break;
-#ifdef INET6
-      case AF_INET6:
-        printf("\tAddress Family: AF_INET6\n");
-        if (a->addr)
-          printf("\t\tAddress: %s\n",
-            inet_ntop(AF_INET6,
-               ((struct sockaddr_in6 *)(a->addr))->sin6_addr.s6_addr,
-               ntop_buf, sizeof ntop_buf));
-        if (a->netmask)
-          printf("\t\tNetmask: %s\n",
-            inet_ntop(AF_INET6,
-              ((struct sockaddr_in6 *)(a->netmask))->sin6_addr.s6_addr,
-               ntop_buf, sizeof ntop_buf));
-        if (a->broadaddr)
-          printf("\t\tBroadcast Address: %s\n",
-            inet_ntop(AF_INET6,
-              ((struct sockaddr_in6 *)(a->broadaddr))->sin6_addr.s6_addr,
-               ntop_buf, sizeof ntop_buf));
-        if (a->dstaddr)
-          printf("\t\tDestination Address: %s\n",
-            inet_ntop(AF_INET6,
-              ((struct sockaddr_in6 *)(a->dstaddr))->sin6_addr.s6_addr,
-               ntop_buf, sizeof ntop_buf));
-        break;
-#endif
-      default:
-        printf("\tAddress Family: Unknown (%d)\n", a->addr->sa_family);
-        break;
-    }
-  }
-  printf("\n");
-}
-
-/* From tcptraceroute */
-#define IPTOSBUFFERS	12
-static char *iptos(bpf_u_int32 in)
-{
-	static char output[IPTOSBUFFERS][3*4+3+1];
-	static short which;
-	u_char *p;
-
-	p =3D (u_char *)∈
-	which =3D (which + 1 =3D=3D IPTOSBUFFERS ? 0 : which + 1);
-	sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
-	return output[which];
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/gencode.c
--- a/head/contrib/libpcap/gencode.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/gencode.c	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/libpcap/gencode.c 235426 2012-05-14 05:12:56Z de=
lphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
@@ -49,7 +49,7 @@
  * XXX - why was this included even on UNIX?
  */
 #ifdef __MINGW32__
-#include "IP6_misc.h"
+#include "ip6_misc.h"
 #endif
=20
 #ifndef WIN32
@@ -774,7 +774,8 @@
  * This is the offset of the beginning of the MAC-layer header from
  * the beginning of the link-layer header.
  * It's usually 0, except for ATM LANE, where it's the offset, relative
- * to the beginning of the raw packet data, of the Ethernet header.
+ * to the beginning of the raw packet data, of the Ethernet header, and
+ * for Ethernet with various additional information.
  */
 static u_int off_mac;
=20
@@ -1240,26 +1241,6 @@
 		off_nl_nosnap =3D 0;	/* no 802.2 LLC */
 		return;
=20
-	case DLT_LINUX_IRDA:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_DOCSIS:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
 	case DLT_SYMANTEC_FIREWALL:
 		off_linktype =3D 6;
 		off_macpl =3D 44;
@@ -1368,6 +1349,16 @@
 		off_nl_nosnap =3D -1;
 		return;
=20
+	case DLT_JUNIPER_VS:
+	case DLT_JUNIPER_SRX_E2E:
+	case DLT_JUNIPER_FIBRECHANNEL:
+	case DLT_JUNIPER_ATM_CEMIC:
+		off_linktype =3D 8;
+		off_macpl =3D -1;
+		off_nl =3D -1;
+		off_nl_nosnap =3D -1;
+		return;
+
 	case DLT_MTP2:
 		off_li =3D 2;
 		off_sio =3D 3;
@@ -1413,126 +1404,6 @@
 		return;
 #endif
=20
-	case DLT_LINUX_LAPD:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_USB:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_BLUETOOTH_HCI_H4:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_USB_LINUX:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_CAN20B:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_IEEE802_15_4_LINUX:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_IEEE802_16_MAC_CPS_RADIO:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_IEEE802_15_4:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_SITA:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_RAIF1:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_IPMB:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_BLUETOOTH_HCI_H4_WITH_PHDR:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
 	case DLT_AX25_KISS:
 		/*
 		 * Currently, only raw "link[N:M]" filtering is supported.
@@ -1544,52 +1415,43 @@
 		off_mac =3D 1;		/* step over the kiss length byte */
 		return;
=20
-	case DLT_IEEE802_15_4_NONASK_PHY:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_MPLS:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_USB_LINUX_MMAPPED:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
-	case DLT_CAN_SOCKETCAN:
-		/*
-		 * Currently, only raw "link[N:M]" filtering is supported.
-		 */
-		off_linktype =3D -1;
-		off_macpl =3D -1;
-		off_nl =3D -1;
-		off_nl_nosnap =3D -1;
-		return;
-
 	case DLT_IPNET:
 		off_linktype =3D 1;
 		off_macpl =3D 24;		/* ipnet header length */
 		off_nl =3D 0;
 		off_nl_nosnap =3D -1;
 		return;
+
+	case DLT_NETANALYZER:
+		off_mac =3D 4;		/* MAC header is past 4-byte pseudo-header */
+		off_linktype =3D 16;	/* includes 4-byte pseudo-header */
+		off_macpl =3D 18;		/* pseudo-header+Ethernet header length */
+		off_nl =3D 0;		/* Ethernet II */
+		off_nl_nosnap =3D 3;	/* 802.3+802.2 */
+		return;
+
+	case DLT_NETANALYZER_TRANSPARENT:
+		off_mac =3D 12;		/* MAC header is past 4-byte pseudo-header, preamble, a=
nd SFD */
+		off_linktype =3D 24;	/* includes 4-byte pseudo-header+preamble+SFD */
+		off_macpl =3D 26;		/* pseudo-header+preamble+SFD+Ethernet header length =
*/
+		off_nl =3D 0;		/* Ethernet II */
+		off_nl_nosnap =3D 3;	/* 802.3+802.2 */
+		return;
+
+	default:
+		/*
+		 * For values in the range in which we've assigned new
+		 * DLT_ values, only raw "link[N:M]" filtering is supported.
+		 */
+		if (linktype >=3D DLT_MATCHING_MIN &&
+		    linktype <=3D DLT_MATCHING_MAX) {
+			off_linktype =3D -1;
+			off_macpl =3D -1;
+			off_nl =3D -1;
+			off_nl_nosnap =3D -1;
+			return;
+		}
+
 	}
 	bpf_error("unknown data link type %d", linktype);
 	/* NOTREACHED */
@@ -3061,6 +2923,8 @@
 	switch (linktype) {
=20
 	case DLT_EN10MB:
+	case DLT_NETANALYZER:
+	case DLT_NETANALYZER_TRANSPARENT:
 		return gen_ether_linktype(proto);
 		/*NOTREACHED*/
 		break;
@@ -3464,6 +3328,11 @@
         case DLT_JUNIPER_VP:
         case DLT_JUNIPER_ST:
         case DLT_JUNIPER_ISM:
+        case DLT_JUNIPER_VS:
+        case DLT_JUNIPER_SRX_E2E:
+        case DLT_JUNIPER_FIBRECHANNEL:
+	case DLT_JUNIPER_ATM_CEMIC:
+
 		/* just lets verify the magic number for now -
 		 * on ATM we may have up to 6 different encapsulations on the wire
 		 * and need a lot of heuristics to figure out that the payload
@@ -3513,6 +3382,7 @@
 	case DLT_IEEE802_15_4:
 	case DLT_IEEE802_15_4_LINUX:
 	case DLT_IEEE802_15_4_NONASK_PHY:
+	case DLT_IEEE802_15_4_NOFCS:
 		bpf_error("IEEE 802.15.4 link-layer type filtering not implemented");
=20
 	case DLT_IEEE802_16_MAC_CPS_RADIO:
@@ -3787,6 +3657,30 @@
 		b1 =3D gen_ehostop(eaddr, Q_DST);
 		gen_or(b0, b1);
 		return b1;
+
+	case Q_ADDR1:
+		bpf_error("'addr1' is only supported on 802.11 with 802.11 headers");
+		break;
+
+	case Q_ADDR2:
+		bpf_error("'addr2' is only supported on 802.11 with 802.11 headers");
+		break;
+
+	case Q_ADDR3:
+		bpf_error("'addr3' is only supported on 802.11 with 802.11 headers");
+		break;
+
+	case Q_ADDR4:
+		bpf_error("'addr4' is only supported on 802.11 with 802.11 headers");
+		break;
+
+	case Q_RA:
+		bpf_error("'ra' is only supported on 802.11 with 802.11 headers");
+		break;
+
+	case Q_TA:
+		bpf_error("'ta' is only supported on 802.11 with 802.11 headers");
+		break;
 	}
 	abort();
 	/* NOTREACHED */
@@ -3829,6 +3723,30 @@
 		b1 =3D gen_fhostop(eaddr, Q_DST);
 		gen_or(b0, b1);
 		return b1;
+
+	case Q_ADDR1:
+		bpf_error("'addr1' is only supported on 802.11");
+		break;
+
+	case Q_ADDR2:
+		bpf_error("'addr2' is only supported on 802.11");
+		break;
+
+	case Q_ADDR3:
+		bpf_error("'addr3' is only supported on 802.11");
+		break;
+
+	case Q_ADDR4:
+		bpf_error("'addr4' is only supported on 802.11");
+		break;
+
+	case Q_RA:
+		bpf_error("'ra' is only supported on 802.11");
+		break;
+
+	case Q_TA:
+		bpf_error("'ta' is only supported on 802.11");
+		break;
 	}
 	abort();
 	/* NOTREACHED */
@@ -3863,6 +3781,30 @@
 		b1 =3D gen_thostop(eaddr, Q_DST);
 		gen_or(b0, b1);
 		return b1;
+
+	case Q_ADDR1:
+		bpf_error("'addr1' is only supported on 802.11");
+		break;
+
+	case Q_ADDR2:
+		bpf_error("'addr2' is only supported on 802.11");
+		break;
+
+	case Q_ADDR3:
+		bpf_error("'addr3' is only supported on 802.11");
+		break;
+
+	case Q_ADDR4:
+		bpf_error("'addr4' is only supported on 802.11");
+		break;
+
+	case Q_RA:
+		bpf_error("'ra' is only supported on 802.11");
+		break;
+
+	case Q_TA:
+		bpf_error("'ta' is only supported on 802.11");
+		break;
 	}
 	abort();
 	/* NOTREACHED */
@@ -4156,8 +4098,79 @@
 		gen_and(b1, b0);
 		return b0;
=20
+	case Q_RA:
+		/*
+		 * Not present in management frames; addr1 in other
+		 * frames.
+		 */
+
+		/*
+		 * If the high-order bit of the type value is 0, this
+		 * is a management frame.
+		 * I.e, check "(link[0] & 0x08)".
+		 */
+		s =3D gen_load_a(OR_LINK, 0, BPF_B);
+		b1 =3D new_block(JMP(BPF_JSET));
+		b1->s.k =3D 0x08;
+		b1->stmts =3D s;
+
+		/*
+		 * Check addr1.
+		 */
+		b0 =3D gen_bcmp(OR_LINK, 4, 6, eaddr);
+
+		/*
+		 * AND that with the check of addr1.
+		 */
+		gen_and(b1, b0);
+		return (b0);
+
+	case Q_TA:
+		/*
+		 * Not present in management frames; addr2, if present,
+		 * in other frames.
+		 */
+
+		/*
+		 * Not present in CTS or ACK control frames.
+		 */
+		b0 =3D gen_mcmp(OR_LINK, 0, BPF_B, IEEE80211_FC0_TYPE_CTL,
+			IEEE80211_FC0_TYPE_MASK);
+		gen_not(b0);
+		b1 =3D gen_mcmp(OR_LINK, 0, BPF_B, IEEE80211_FC0_SUBTYPE_CTS,
+			IEEE80211_FC0_SUBTYPE_MASK);
+		gen_not(b1);
+		b2 =3D gen_mcmp(OR_LINK, 0, BPF_B, IEEE80211_FC0_SUBTYPE_ACK,
+			IEEE80211_FC0_SUBTYPE_MASK);
+		gen_not(b2);
+		gen_and(b1, b2);
+		gen_or(b0, b2);
+
+		/*
+		 * If the high-order bit of the type value is 0, this
+		 * is a management frame.
+		 * I.e, check "(link[0] & 0x08)".
+		 */
+		s =3D gen_load_a(OR_LINK, 0, BPF_B);
+		b1 =3D new_block(JMP(BPF_JSET));
+		b1->s.k =3D 0x08;
+		b1->stmts =3D s;
+
+		/*
+		 * AND that with the check for frames other than
+		 * CTS and ACK frames.
+		 */
+		gen_and(b1, b2);
+
+		/*
+		 * Check addr2.
+		 */
+		b1 =3D gen_bcmp(OR_LINK, 10, 6, eaddr);
+		gen_and(b2, b1);
+		return b1;
+
 	/*
-	 * XXX - add RA, TA, and BSSID keywords?
+	 * XXX - add BSSID keyword?
 	 */
 	case Q_ADDR1:
 		return (gen_bcmp(OR_LINK, 4, 6, eaddr));
@@ -4253,6 +4266,30 @@
 		b1 =3D gen_ipfchostop(eaddr, Q_DST);
 		gen_or(b0, b1);
 		return b1;
+
+	case Q_ADDR1:
+		bpf_error("'addr1' is only supported on 802.11");
+		break;
+
+	case Q_ADDR2:
+		bpf_error("'addr2' is only supported on 802.11");
+		break;
+
+	case Q_ADDR3:
+		bpf_error("'addr3' is only supported on 802.11");
+		break;
+
+	case Q_ADDR4:
+		bpf_error("'addr4' is only supported on 802.11");
+		break;
+
+	case Q_RA:
+		bpf_error("'ra' is only supported on 802.11");
+		break;
+
+	case Q_TA:
+		bpf_error("'ta' is only supported on 802.11");
+		break;
 	}
 	abort();
 	/* NOTREACHED */
@@ -4446,6 +4483,9 @@
 	case Q_VRRP:
 		bpf_error("'vrrp' modifier applied to %s", typestr);
=20
+	case Q_CARP:
+		bpf_error("'carp' modifier applied to %s", typestr);
+
 	case Q_ATALK:
 		bpf_error("ATALK host filtering not implemented");
=20
@@ -4565,6 +4605,9 @@
 	case Q_VRRP:
 		bpf_error("'vrrp' modifier applied to %s", typestr);
=20
+	case Q_CARP:
+		bpf_error("'carp' modifier applied to %s", typestr);
+
 	case Q_ATALK:
 		bpf_error("ATALK host filtering not implemented");
=20
@@ -4649,6 +4692,8 @@
 	case Q_RARP:
 		switch (linktype) {
 		case DLT_EN10MB:
+		case DLT_NETANALYZER:
+		case DLT_NETANALYZER_TRANSPARENT:
 			b0 =3D gen_ehostop(eaddr, Q_OR);
 			break;
 		case DLT_FDDI:
@@ -4778,6 +4823,14 @@
 		b1 =3D gen_proto(IPPROTO_VRRP, Q_IP, Q_DEFAULT);
 		break;
=20
+#ifndef IPPROTO_CARP
+#define IPPROTO_CARP	112
+#endif
+
+	case Q_CARP:
+		b1 =3D gen_proto(IPPROTO_CARP, Q_IP, Q_DEFAULT);
+		break;
+
 	case Q_IP:
 		b1 =3D  gen_linktype(ETHERTYPE_IP);
 		break;
@@ -4959,7 +5012,7 @@
 	struct slist *s;
 	struct block *b;
=20
-	/* not ip frag */
+	/* not IPv4 frag other than the first frag */
 	s =3D gen_load_a(OR_NET, 6, BPF_H);
 	b =3D new_block(JMP(BPF_JSET));
 	b->s.k =3D 0x1fff;
@@ -5002,7 +5055,7 @@
 {
 	struct block *b0, *b1, *tmp;
=20
-	/* ip proto 'proto' */
+	/* ip proto 'proto' and not a fragment other than the first fragment */
 	tmp =3D gen_cmp(OR_NET, 9, BPF_B, (bpf_int32)proto);
 	b0 =3D gen_ipfrag();
 	gen_and(tmp, b0);
@@ -5094,6 +5147,7 @@
 	struct block *b0, *b1, *tmp;
=20
 	/* ip6 proto 'proto' */
+	/* XXX - catch the first fragment of a fragmented packet? */
 	b0 =3D gen_cmp(OR_NET, 6, BPF_B, (bpf_int32)proto);
=20
 	switch (dir) {
@@ -5195,7 +5249,7 @@
 {
 	struct block *b0, *b1, *tmp;
=20
-	/* ip proto 'proto' */
+	/* ip proto 'proto' and not a fragment other than the first fragment */
 	tmp =3D gen_cmp(OR_NET, 9, BPF_B, (bpf_int32)proto);
 	b0 =3D gen_ipfrag();
 	gen_and(tmp, b0);
@@ -5299,6 +5353,7 @@
 	struct block *b0, *b1, *tmp;
=20
 	/* ip6 proto 'proto' */
+	/* XXX - catch the first fragment of a fragmented packet? */
 	b0 =3D gen_cmp(OR_NET, 6, BPF_B, (bpf_int32)proto);
=20
 	switch (dir) {
@@ -5576,12 +5631,9 @@
=20
 		/*
 		 * in short,
-		 * A =3D P[X];
-		 * X =3D X + (P[X + 1] + 1) * 8;
-		 */
-		/* A =3D X */
-		s[i] =3D new_stmt(BPF_MISC|BPF_TXA);
-		i++;
+		 * A =3D P[X + packet head];
+		 * X =3D X + (P[X + packet head + 1] + 1) * 8;
+		 */
 		/* A =3D P[X + packet head] */
 		s[i] =3D new_stmt(BPF_LD|BPF_IND|BPF_B);
 		s[i]->s.k =3D off_macpl + off_nl;
@@ -5590,19 +5642,9 @@
 		s[i] =3D new_stmt(BPF_ST);
 		s[i]->s.k =3D reg2;
 		i++;
-		/* A =3D X */
-		s[i] =3D new_stmt(BPF_MISC|BPF_TXA);
-		i++;
-		/* A +=3D 1 */
-		s[i] =3D new_stmt(BPF_ALU|BPF_ADD|BPF_K);
-		s[i]->s.k =3D 1;
-		i++;
-		/* X =3D A */
-		s[i] =3D new_stmt(BPF_MISC|BPF_TAX);
-		i++;
-		/* A =3D P[X + packet head]; */
+		/* A =3D P[X + packet head + 1]; */
 		s[i] =3D new_stmt(BPF_LD|BPF_IND|BPF_B);
-		s[i]->s.k =3D off_macpl + off_nl;
+		s[i]->s.k =3D off_macpl + off_nl + 1;
 		i++;
 		/* A +=3D 1 */
 		s[i] =3D new_stmt(BPF_ALU|BPF_ADD|BPF_K);
@@ -5612,6 +5654,10 @@
 		s[i] =3D new_stmt(BPF_ALU|BPF_MUL|BPF_K);
 		s[i]->s.k =3D 8;
 		i++;
+		/* A +=3D X */
+		s[i] =3D new_stmt(BPF_ALU|BPF_ADD|BPF_X);
+		s[i]->s.k =3D 0;
+		i++;
 		/* X =3D A; */
 		s[i] =3D new_stmt(BPF_MISC|BPF_TAX);
 		i++;
@@ -5935,6 +5981,10 @@
 		bpf_error("'vrrp proto' is bogus");
 		/* NOTREACHED */
=20
+	case Q_CARP:
+		bpf_error("'carp proto' is bogus");
+		/* NOTREACHED */
+
 #ifdef INET6
 	case Q_IPV6:
 		b0 =3D gen_linktype(ETHERTYPE_IPV6);
@@ -6018,6 +6068,8 @@
 			switch (linktype) {
=20
 			case DLT_EN10MB:
+			case DLT_NETANALYZER:
+			case DLT_NETANALYZER_TRANSPARENT:
 				eaddr =3D pcap_ether_hostton(name);
 				if (eaddr =3D=3D NULL)
 					bpf_error(
@@ -6199,6 +6251,10 @@
 				/* override PROTO_UNDEF */
 				real_proto =3D IPPROTO_SCTP;
 		}
+		if (port < 0)
+			bpf_error("illegal port number %d < 0", port);
+		if (port > 65535)
+			bpf_error("illegal port number %d > 65535", port);
 #ifndef INET6
 		return gen_port(port, real_proto, dir);
 #else
@@ -6240,6 +6296,15 @@
 				/* override PROTO_UNDEF */
 				real_proto =3D IPPROTO_SCTP;=09
 		}
+		if (port1 < 0)
+			bpf_error("illegal port number %d < 0", port1);
+		if (port1 > 65535)
+			bpf_error("illegal port number %d > 65535", port1);
+		if (port2 < 0)
+			bpf_error("illegal port number %d < 0", port2);
+		if (port2 > 65535)
+			bpf_error("illegal port number %d > 65535", port2);
+
 #ifndef INET6
 		return gen_portrange(port1, port2, real_proto, dir);
 #else
@@ -6391,6 +6456,9 @@
 		else
 			bpf_error("illegal qualifier of 'port'");
=20
+		if (v > 65535)
+			bpf_error("illegal port number %u > 65535", v);
+
 #ifndef INET6
 		return gen_port((int)v, proto, dir);
 #else
@@ -6414,6 +6482,9 @@
 		else
 			bpf_error("illegal qualifier of 'portrange'");
=20
+		if (v > 65535)
+			bpf_error("illegal port number %u > 65535", v);
+
 #ifndef INET6
 		return gen_portrange((int)v, (int)v, proto, dir);
 #else
@@ -6518,6 +6589,8 @@
 	if ((q.addr =3D=3D Q_HOST || q.addr =3D=3D Q_DEFAULT) && q.proto =3D=3D Q=
_LINK) {
 		switch (linktype) {
 		case DLT_EN10MB:
+		case DLT_NETANALYZER:
+		case DLT_NETANALYZER_TRANSPARENT:
 			return gen_ehostop(eaddr, (int)q.dir);
 		case DLT_FDDI:
 			return gen_fhostop(eaddr, (int)q.dir);
@@ -6647,7 +6720,7 @@
=20
 		/*
 		 * Load into the X register the offset computed into the
-		 * register specifed by "index".
+		 * register specified by "index".
 		 */
 		s =3D xfer_to_x(inst);
=20
@@ -6679,7 +6752,7 @@
 		 * the link-layer header.  Add to it the offset computed
 		 * into the register specified by "index", and move that
 		 * into the X register.  Otherwise, just load into the X
-		 * register the offset computed into the register specifed
+		 * register the offset computed into the register specified
 		 * by "index".
 		 */
 		if (s !=3D NULL) {
@@ -6728,7 +6801,7 @@
 		 * payload.  Add to it the offset computed into the
 		 * register specified by "index", and move that into
 		 * the X register.  Otherwise, just load into the X
-		 * register the offset computed into the register specifed
+		 * register the offset computed into the register specified
 		 * by "index".
 		 */
 		if (s !=3D NULL) {
@@ -6773,6 +6846,7 @@
 	case Q_IGRP:
 	case Q_PIM:
 	case Q_VRRP:
+	case Q_CARP:
 		/*
 		 * The offset is relative to the beginning of
 		 * the transport-layer header.
@@ -7121,6 +7195,8 @@
 		case DLT_ARCNET_LINUX:
 			return gen_ahostop(abroadcast, Q_DST);
 		case DLT_EN10MB:
+		case DLT_NETANALYZER:
+		case DLT_NETANALYZER_TRANSPARENT:
 			return gen_ehostop(ebroadcast, Q_DST);
 		case DLT_FDDI:
 			return gen_fhostop(ebroadcast, Q_DST);
@@ -7216,6 +7292,8 @@
 			/* all ARCnet multicasts use the same address */
 			return gen_ahostop(abroadcast, Q_DST);
 		case DLT_EN10MB:
+		case DLT_NETANALYZER:
+		case DLT_NETANALYZER_TRANSPARENT:
 			/* ether[0] & 1 !=3D 0 */
 			return gen_mac_multicast(0);
 		case DLT_FDDI:
@@ -7479,6 +7557,11 @@
         case DLT_JUNIPER_VP:
         case DLT_JUNIPER_ST:
         case DLT_JUNIPER_ISM:
+        case DLT_JUNIPER_VS:
+        case DLT_JUNIPER_SRX_E2E:
+        case DLT_JUNIPER_FIBRECHANNEL:
+	case DLT_JUNIPER_ATM_CEMIC:
+
 		/* juniper flags (including direction) are stored
 		 * the byte after the 3-byte magic number */
 		if (dir) {
@@ -7759,6 +7842,30 @@
 		b1 =3D gen_ahostop(eaddr, Q_DST);
 		gen_or(b0, b1);
 		return b1;
+
+	case Q_ADDR1:
+		bpf_error("'addr1' is only supported on 802.11");
+		break;
+
+	case Q_ADDR2:
+		bpf_error("'addr2' is only supported on 802.11");
+		break;
+
+	case Q_ADDR3:
+		bpf_error("'addr3' is only supported on 802.11");
+		break;
+
+	case Q_ADDR4:
+		bpf_error("'addr4' is only supported on 802.11");
+		break;
+
+	case Q_RA:
+		bpf_error("'ra' is only supported on 802.11");
+		break;
+
+	case Q_TA:
+		bpf_error("'ta' is only supported on 802.11");
+		break;
 	}
 	abort();
 	/* NOTREACHED */
@@ -7813,9 +7920,15 @@
 	switch (linktype) {
=20
 	case DLT_EN10MB:
-		/* check for VLAN */
+	case DLT_NETANALYZER:
+	case DLT_NETANALYZER_TRANSPARENT:
+		/* check for VLAN, including QinQ */
 		b0 =3D gen_cmp(OR_LINK, off_linktype, BPF_H,
 		    (bpf_int32)ETHERTYPE_8021Q);
+		b1 =3D gen_cmp(OR_LINK, off_linktype, BPF_H,
+		    (bpf_int32)ETHERTYPE_8021QINQ);
+		gen_or(b0,b1);
+		b0 =3D b1;
=20
 		/* If a specific VLAN is requested, check VLAN id */
 		if (vlan_num >=3D 0) {
@@ -7876,6 +7989,8 @@
                =20
             case DLT_C_HDLC: /* fall through */
             case DLT_EN10MB:
+            case DLT_NETANALYZER:
+            case DLT_NETANALYZER_TRANSPARENT:
                     b0 =3D gen_linktype(ETHERTYPE_MPLS);
                     break;
                =20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/gencode.h
--- a/head/contrib/libpcap/gencode.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/gencode.h	Wed Jul 25 16:21:35 2012 +0300
@@ -126,6 +126,8 @@
=20
 #define Q_RADIO		40
=20
+#define Q_CARP		41
+
 /* Directional qualifiers. */
=20
 #define Q_SRC		1
@@ -136,6 +138,8 @@
 #define Q_ADDR2		6
 #define Q_ADDR3		7
 #define Q_ADDR4		8
+#define Q_RA		9
+#define Q_TA		10
=20
 #define Q_DEFAULT	0
 #define Q_UNDEF		255
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/grammar.y
--- a/head/contrib/libpcap/grammar.y	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/grammar.y	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/libpcap/grammar.y 235426 2012-05-14 05:12:56Z de=
lphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
@@ -273,12 +273,12 @@
=20
 %token  DST SRC HOST GATEWAY
 %token  NET NETMASK PORT PORTRANGE LESS GREATER PROTO PROTOCHAIN CBYTE
-%token  ARP RARP IP SCTP TCP UDP ICMP IGMP IGRP PIM VRRP
+%token  ARP RARP IP SCTP TCP UDP ICMP IGMP IGRP PIM VRRP CARP
 %token  ATALK AARP DECNET LAT SCA MOPRC MOPDL
 %token  TK_BROADCAST TK_MULTICAST
 %token  NUM INBOUND OUTBOUND
 %token  PF_IFNAME PF_RSET PF_RNR PF_SRNR PF_REASON PF_ACTION
-%token	TYPE SUBTYPE DIR ADDR1 ADDR2 ADDR3 ADDR4
+%token	TYPE SUBTYPE DIR ADDR1 ADDR2 ADDR3 ADDR4 RA TA
 %token  LINK
 %token	GEQ LEQ NEQ
 %token	ID EID HID HID6 AID
@@ -443,6 +443,8 @@
 	| ADDR2			{ $$ =3D Q_ADDR2; }
 	| ADDR3			{ $$ =3D Q_ADDR3; }
 	| ADDR4			{ $$ =3D Q_ADDR4; }
+	| RA			{ $$ =3D Q_RA; }
+	| TA			{ $$ =3D Q_TA; }
 	;
 /* address type qualifiers */
 aqual:	  HOST			{ $$ =3D Q_HOST; }
@@ -465,6 +467,7 @@
 	| IGRP			{ $$ =3D Q_IGRP; }
 	| PIM			{ $$ =3D Q_PIM; }
 	| VRRP			{ $$ =3D Q_VRRP; }
+	| CARP 			{ $$ =3D Q_CARP; }
 	| ATALK			{ $$ =3D Q_ATALK; }
 	| AARP			{ $$ =3D Q_AARP; }
 	| DECNET		{ $$ =3D Q_DECNET; }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/inet.c
--- a/head/contrib/libpcap/inet.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/inet.c	Wed Jul 25 16:21:35 2012 +0300
@@ -133,6 +133,7 @@
 	pcap_t *p;
 	pcap_if_t *curdev, *prevdev, *nextdev;
 	int this_instance;
+	char open_errbuf[PCAP_ERRBUF_SIZE];
=20
 	/*
 	 * Is there already an entry in the list for this interface?
@@ -192,11 +193,11 @@
 			}
 			strcpy(en_name, "en");
 			strcat(en_name, name + 3);
-			p =3D pcap_open_live(en_name, 68, 0, 0, errbuf);
+			p =3D pcap_open_live(en_name, 68, 0, 0, open_errbuf);
 			free(en_name);
 		} else
 #endif /* __APPLE */
-		p =3D pcap_open_live(name, 68, 0, 0, errbuf);
+		p =3D pcap_open_live(name, 68, 0, 0, open_errbuf);
 		if (p =3D=3D NULL) {
 			/*
 			 * No.  Don't bother including it.
@@ -476,8 +477,7 @@
 				free(description);
 				description =3D NULL;
 			}
-		} else
-			break;
+		}
 #endif /* __FreeBSD__ */
 		close(s);
 		if (description !=3D NULL && strlen(description) =3D=3D 0) {
@@ -878,8 +878,10 @@
 		 */
 		while(NAdapts--)
 		{
-			strcpy((char*)tUstr, tAstr);
-			(char*)tUstr +=3D strlen(tAstr) + 1;;
+			char* tmp =3D (char*)tUstr;
+			strcpy(tmp, tAstr);
+			tmp +=3D strlen(tAstr) + 1;
+			tUstr =3D (WCHAR*)tmp;
 			tAstr +=3D strlen(tAstr) + 1;
 		}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/opentest.c
--- a/head/contrib/libpcap/opentest.c	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (=
2)
- * distributions including binary code include the above copyright notice =
and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials menti=
oning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of Califor=
nia,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior
- * written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef lint
-static const char copyright[] =3D
-    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
-The Regents of the University of California.  All rights reserved.\n";
-#endif
-
-#include <pcap.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <errno.h>
-
-#define MAXIMUM_SNAPLEN		65535
-
-static char *program_name;
-
-/* Forwards */
-static void usage(void) __attribute__((noreturn));
-static void error(const char *, ...);
-static void warning(const char *, ...);
-
-extern int optind;
-extern int opterr;
-extern char *optarg;
-
-int
-main(int argc, char **argv)
-{
-	register int op;
-	register char *cp, *device;
-	int dorfmon, dopromisc, snaplen, useactivate, bufsize;
-	char ebuf[PCAP_ERRBUF_SIZE];
-	pcap_t *pd;
-	int status =3D 0;
-
-	device =3D NULL;
-	dorfmon =3D 0;
-	dopromisc =3D 0;
-	snaplen =3D MAXIMUM_SNAPLEN;
-	bufsize =3D 0;
-	useactivate =3D 0;
-	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
-		program_name =3D cp + 1;
-	else
-		program_name =3D argv[0];
-
-	opterr =3D 0;
-	while ((op =3D getopt(argc, argv, "i:Ips:aB:")) !=3D -1) {
-		switch (op) {
-
-		case 'i':
-			device =3D optarg;
-			break;
-
-		case 'I':
-			dorfmon =3D 1;
-			useactivate =3D 1;	/* required for rfmon */
-			break;
-
-		case 'p':
-			dopromisc =3D 1;
-			break;
-
-		case 's': {
-			char *end;
-
-			snaplen =3D strtol(optarg, &end, 0);
-			if (optarg =3D=3D end || *end !=3D '\0'
-			    || snaplen < 0 || snaplen > MAXIMUM_SNAPLEN)
-				error("invalid snaplen %s", optarg);
-			else if (snaplen =3D=3D 0)
-				snaplen =3D MAXIMUM_SNAPLEN;
-			break;
-		}
-
-		case 'B':
-			bufsize =3D atoi(optarg)*1024;
-			if (bufsize <=3D 0)
-				error("invalid packet buffer size %s", optarg);
-			useactivate =3D 1;	/* required for bufsize */
-			break;
-
-		case 'a':
-			useactivate =3D 1;
-			break;
-
-		default:
-			usage();
-			/* NOTREACHED */
-		}
-	}
-
-	if (useactivate) {
-		pd =3D pcap_create(device, ebuf);
-		if (pd =3D=3D NULL)
-			error("%s", ebuf);
-		status =3D pcap_set_snaplen(pd, snaplen);
-		if (status !=3D 0)
-			error("%s: pcap_set_snaplen failed: %s",
-			    device, pcap_statustostr(status));
-		if (dopromisc) {
-			status =3D pcap_set_promisc(pd, 1);
-			if (status !=3D 0)
-				error("%s: pcap_set_promisc failed: %s",
-				    device, pcap_statustostr(status));
-		}
-		if (dorfmon) {
-			status =3D pcap_set_rfmon(pd, 1);
-			if (status !=3D 0)
-				error("%s: pcap_set_rfmon failed: %s",
-				    device, pcap_statustostr(status));
-		}
-		status =3D pcap_set_timeout(pd, 1000);
-		if (status !=3D 0)
-			error("%s: pcap_set_timeout failed: %s",
-			    device, pcap_statustostr(status));
-		if (bufsize !=3D 0) {
-			status =3D pcap_set_buffer_size(pd, bufsize);
-			if (status !=3D 0)
-				error("%s: pcap_set_buffer_size failed: %s",
-				    device, pcap_statustostr(status));
-		}
-		status =3D pcap_activate(pd);
-		if (status < 0) {
-			/*
-			 * pcap_activate() failed.
-			 */
-			error("%s: %s\n(%s)", device,
-			    pcap_statustostr(status), pcap_geterr(pd));
-		} else if (status > 0) {
-			/*
-			 * pcap_activate() succeeded, but it's warning us
-			 * of a problem it had.
-			 */
-			warning("%s: %s\n(%s)", device,
-			    pcap_statustostr(status), pcap_geterr(pd));
-		}
-	} else {
-		*ebuf =3D '\0';
-		pd =3D pcap_open_live(device, 65535, 0, 1000, ebuf);
-		if (pd =3D=3D NULL)
-			error("%s", ebuf);
-		else if (*ebuf)
-			warning("%s", ebuf);
-	}
-	pcap_close(pd);
-	exit(status < 0 ? 1 : 0);
-}
-
-static void
-usage(void)
-{
-	(void)fprintf(stderr,
-	    "Usage: %s [ -Ipa ] [ -i interface ] [ -s snaplen ] [ -B bufsize ]\n",
-	    program_name);
-	exit(1);
-}
-
-/* VARARGS */
-static void
-error(const char *fmt, ...)
-{
-	va_list ap;
-
-	(void)fprintf(stderr, "%s: ", program_name);
-	va_start(ap, fmt);
-	(void)vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	if (*fmt) {
-		fmt +=3D strlen(fmt);
-		if (fmt[-1] !=3D '\n')
-			(void)fputc('\n', stderr);
-	}
-	exit(1);
-	/* NOTREACHED */
-}
-
-/* VARARGS */
-static void
-warning(const char *fmt, ...)
-{
-	va_list ap;
-
-	(void)fprintf(stderr, "%s: WARNING: ", program_name);
-	va_start(ap, fmt);
-	(void)vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	if (*fmt) {
-		fmt +=3D strlen(fmt);
-		if (fmt[-1] !=3D '\n')
-			(void)fputc('\n', stderr);
-	}
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/packaging/pcap.sp=
ec.in
--- a/head/contrib/libpcap/packaging/pcap.spec.in	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/libpcap/packaging/pcap.spec.in	Wed Jul 25 16:21:35 2012 =
+0300
@@ -1,58 +1,75 @@
 %define prefix   /usr
 %define version @VERSION@
=20
-Summary: packet capture library
+Summary: A system-independent interface for user-level packet capture
 Name: libpcap
 Version: %version
 Release: 1
 Group: Development/Libraries
-Copyright: BSD
+License: BSD with advertising
 Source: @NAME at .tar.gz
 BuildRoot: /tmp/%{name}-buildroot
 URL: http://www.tcpdump.org
=20
+Source: http://www.tcpdump.org/release/%{name}-%{version}.tar.gz
+
 %description
-Packet-capture library LIBPCAP @VERSION@
-Now maintained by "The Tcpdump Group"
-See http://www.tcpdump.org
-Please send inquiries/comments/reports to tcpdump-workers at lists.tcpdump.org
+Libpcap provides a portable framework for low-level network
+monitoring.  Libpcap can provide network statistics collection,
+security monitoring and network debugging.  Since almost every system
+vendor provides a different interface for packet capture, the libpcap
+authors created this system-independent API to ease in porting and to
+alleviate the need for several system-dependent packet capture modules
+in each application.
=20
+Install libpcap if you need to do low-level network traffic monitoring
+on your network.
+
+%package devel
+Summary: Libraries and header files for the libpcap library
+Group: Development/Libraries
+
+%description devel
+Libpcap provides a portable framework for low-level network
+monitoring.  Libpcap can provide network statistics collection,
+security monitoring and network debugging.  Since almost every system
+vendor provides a different interface for packet capture, the libpcap
+authors created this system-independent API to ease in porting and to
+alleviate the need for several system-dependent packet capture modules
+in each application.
+
+This package provides the libraries, include files, and other=20
+resources needed for developing libpcap applications.
+=20
 %prep
-%setup
-
-%post
-ldconfig
+%setup -q
=20
 %build
-CFLAGS=3D"$RPM_OPT_FLAGS" ./configure --prefix=3D%prefix
-make
+export CFLAGS=3D"$RPM_OPT_FLAGS -fno-strict-aliasing"
+%configure
+make %{?_smp_mflags}
=20
 %install
 rm -rf $RPM_BUILD_ROOT
-make install DESTDIR=3D$RPM_BUILD_ROOT mandir=3D/usr/share/man
-cd $RPM_BUILD_ROOT/usr/lib
-V1=3D`echo @VERSION@ | sed 's/\\.[^\.]*$//g'`
-V2=3D`echo @VERSION@ | sed 's/\\.[^\.]*\.[^\.]*$//g'`
-ln -sf libpcap.so. at VERSION@ libpcap.so.$V1
-if test "$V2" -ne "$V1"; then
-    ln -sf libpcap.so.$V1 libpcap.so.$V2
-    ln -sf libpcap.so.$V2 libpcap.so
-else
-    ln -sf libpcap.so.$V1 libpcap.so
-fi
+
+make DESTDIR=3D$RPM_BUILD_ROOT install
=20
 %clean
 rm -rf $RPM_BUILD_ROOT
=20
 %files
 %defattr(-,root,root)
-%doc LICENSE CHANGES INSTALL.txt README.linux TODO VERSION CREDITS packagi=
ng/pcap.spec
-/usr/lib/libpcap.a
-/usr/share/man/man3/*
-/usr/share/man/man5/*
-/usr/share/man/man7/*
-/usr/include/pcap.h
-/usr/include/pcap/*.h
-/usr/include/pcap-bpf.h
-/usr/include/pcap-namedb.h
-/usr/lib/libpcap.so*
+%doc LICENSE README CHANGES INSTALL.txt README.linux TODO VERSION CREDITS =
packaging/pcap.spec
+%{_libdir}/libpcap.so.*
+%{_mandir}/man7/pcap*.7*
+
+%files devel
+%defattr(-,root,root)
+%{_bindir}/pcap-config
+%{_includedir}/pcap*.h
+%{_includedir}/pcap.h
+%{_libdir}/libpcap.so
+%{_libdir}/libpcap.a
+%{_mandir}/man1/pcap-config.1*
+%{_mandir}/man3/pcap*.3*
+%{_mandir}/man5/pcap*.5*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-bpf.c
--- a/head/contrib/libpcap/pcap-bpf.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-bpf.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD: head/contrib/libpcap/pcap-bpf.c 222654 2011-06-03 14:57:38Z c=
sjp $
+ * $FreeBSD: head/contrib/libpcap/pcap-bpf.c 235426 2012-05-14 05:12:56Z d=
elphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
@@ -33,8 +33,8 @@
 #ifdef HAVE_ZEROCOPY_BPF
 #include <sys/mman.h>
 #endif
-#include <sys/time.h>
 #include <sys/socket.h>
+#include <time.h>
 /*
  * <net/bpf.h> defines ioctls, but doesn't include <sys/ioccom.h>.
  *
@@ -188,77 +188,67 @@
 static int pcap_setdirection_bpf(pcap_t *, pcap_direction_t);
 static int pcap_set_datalink_bpf(pcap_t *p, int dlt);
=20
-#ifdef HAVE_ZEROCOPY_BPF
 /*
- * For zerocopy bpf, we need to override the setnonblock/getnonblock routi=
nes
- * so we don't call select(2) if the pcap handle is in non-blocking mode. =
 We
- * preserve the timeout supplied by pcap_open functions to make sure it
- * does not get clobbered if the pcap handle moves between blocking and no=
n-
- * blocking mode.
+ * For zerocopy bpf, the setnonblock/getnonblock routines need to modify
+ * p->md.timeout so we don't call select(2) if the pcap handle is in non-
+ * blocking mode.  We preserve the timeout supplied by pcap_open functions
+ * to make sure it does not get clobbered if the pcap handle moves between
+ * blocking and non-blocking mode.
  */
 static int
-pcap_getnonblock_zbuf(pcap_t *p, char *errbuf)
+pcap_getnonblock_bpf(pcap_t *p, char *errbuf)
 {=20
-	/*
-	 * Use a negative value for the timeout to represent that the
-	 * pcap handle is in non-blocking mode.
-	 */
-	return (p->md.timeout < 0);
+#ifdef HAVE_ZEROCOPY_BPF
+	if (p->md.zerocopy) {
+		/*
+		 * Use a negative value for the timeout to represent that the
+		 * pcap handle is in non-blocking mode.
+		 */
+		return (p->md.timeout < 0);
+	}
+#endif
+	return (pcap_getnonblock_fd(p, errbuf));
 }
=20
 static int
-pcap_setnonblock_zbuf(pcap_t *p, int nonblock, char *errbuf)
+pcap_setnonblock_bpf(pcap_t *p, int nonblock, char *errbuf)
 {  =20
-	/*
-	 * Map each value to the corresponding 2's complement, to
-	 * preserve the timeout value provided with pcap_set_timeout.
-	 * (from pcap-linux.c).
-	 */
-	if (nonblock) {
-		if (p->md.timeout >=3D 0) {
-			/*
-			 * Timeout is non-negative, so we're not already
-			 * in non-blocking mode; set it to the 2's
-			 * complement, to make it negative, as an
-			 * indication that we're in non-blocking mode.
-			 */
-			p->md.timeout =3D p->md.timeout * -1 - 1;
+#ifdef HAVE_ZEROCOPY_BPF
+	if (p->md.zerocopy) {
+		/*
+		 * Map each value to the corresponding 2's complement, to
+		 * preserve the timeout value provided with pcap_set_timeout.
+		 * (from pcap-linux.c).
+		 */
+		if (nonblock) {
+			if (p->md.timeout >=3D 0) {
+				/*
+				 * Timeout is non-negative, so we're not
+				 * currently in non-blocking mode; set it
+				 * to the 2's complement, to make it
+				 * negative, as an indication that we're
+				 * in non-blocking mode.
+				 */
+				p->md.timeout =3D p->md.timeout * -1 - 1;
+			}
+		} else {
+			if (p->md.timeout < 0) {
+				/*
+				 * Timeout is negative, so we're currently
+				 * in blocking mode; reverse the previous
+				 * operation, to make the timeout non-negative
+				 * again.
+				 */
+				p->md.timeout =3D (p->md.timeout + 1) * -1;
+			}
 		}
-	} else {
-		if (p->md.timeout < 0) {
-			/*
-			 * Timeout is negative, so we're not already
-			 * in blocking mode; reverse the previous
-			 * operation, to make the timeout non-negative
-			 * again.
-			 */
-			p->md.timeout =3D (p->md.timeout + 1) * -1;
-		}
+		return (0);
 	}
-	return (0);
+#endif
+	return (pcap_setnonblock_fd(p, nonblock, errbuf));
 }
=20
-/*
- * Zero-copy specific close method.  Un-map the shared buffers then call
- * pcap_cleanup_live_common.
- */
-static void
-pcap_cleanup_zbuf(pcap_t *p)
-{
-	/*
-	 * Delete the mappings.  Note that p->buffer gets initialized to one
-	 * of the mmapped regions in this case, so do not try and free it
-	 * directly; null it out so that pcap_cleanup_live_common() doesn't
-	 * try to free it.
-	 */
-	if (p->md.zbuf1 !=3D MAP_FAILED && p->md.zbuf1 !=3D NULL)
-		(void) munmap(p->md.zbuf1, p->md.zbufsize);
-	if (p->md.zbuf2 !=3D MAP_FAILED && p->md.zbuf2 !=3D NULL)
-		(void) munmap(p->md.zbuf2, p->md.zbufsize);
-	p->buffer =3D NULL;
-	pcap_cleanup_live_common(p);
-}
-
+#ifdef HAVE_ZEROCOPY_BPF
 /*
  * Zero-copy BPF buffer routines to check for and acknowledge BPF data in
  * shared memory buffers.
@@ -412,7 +402,7 @@
 	p->buffer =3D NULL;
 	return (0);
 }
-#endif
+#endif /* HAVE_ZEROCOPY_BPF */
=20
 pcap_t *
 pcap_create(const char *device, char *ebuf)
@@ -437,6 +427,10 @@
 	return (p);
 }
=20
+/*
+ * On success, returns a file descriptor for a BPF device.
+ * On failure, returns a PCAP_ERROR_ value, and sets p->errbuf.
+ */
 static int
 bpf_open(pcap_t *p)
 {
@@ -497,12 +491,52 @@
 	 * XXX better message for all minors used
 	 */
 	if (fd < 0) {
-		if (errno =3D=3D EACCES)
+		switch (errno) {
+
+		case ENOENT:
+			fd =3D PCAP_ERROR;
+			if (n =3D=3D 1) {
+				/*
+				 * /dev/bpf0 doesn't exist, which
+				 * means we probably have no BPF
+				 * devices.
+				 */
+				snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+				    "(there are no BPF devices)");
+			} else {
+				/*
+				 * We got EBUSY on at least one
+				 * BPF device, so we have BPF
+				 * devices, but all the ones
+				 * that exist are busy.
+				 */
+				snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+				    "(all BPF devices are busy)");
+			}
+			break;
+
+		case EACCES:
+			/*
+			 * Got EACCES on the last device we tried,
+			 * and EBUSY on all devices before that,
+			 * if any.
+			 */
 			fd =3D PCAP_ERROR_PERM_DENIED;
-		else
+			snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+			    "(cannot open BPF device) %s: %s", device,
+			    pcap_strerror(errno));
+			break;
+
+		default:
+			/*
+			 * Some other problem.
+			 */
 			fd =3D PCAP_ERROR;
-		snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "(no devices found) %s: %s",
-		    device, pcap_strerror(errno));
+			snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+			    "(cannot open BPF device) %s: %s", device,
+			    pcap_strerror(errno));
+			break;
+		}
 	}
 #endif
=20
@@ -675,14 +709,23 @@
 	 */
 	fd =3D bpf_open(p);
 	if (fd < 0)
-		return (fd);
+		return (fd);	/* fd is the appropriate error code */
=20
 	/*
 	 * Now bind to the device.
 	 */
 	(void)strncpy(ifr.ifr_name, p->opt.source, sizeof(ifr.ifr_name));
 	if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) < 0) {
-		if (errno =3D=3D ENETDOWN) {
+		switch (errno) {
+
+		case ENXIO:
+			/*
+			 * There's no such device.
+			 */
+			close(fd);
+			return (PCAP_ERROR_NO_SUCH_DEVICE);
+
+		case ENETDOWN:
 			/*
 			 * Return a "network down" indication, so that
 			 * the application can report that rather than
@@ -692,7 +735,8 @@
 			 */
 			close(fd);
 			return (PCAP_ERROR_IFACE_NOT_UP);
-		} else {
+
+		default:
 			snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
 			    "BIOCSETIF: %s: %s",
 			    p->opt.source, pcap_strerror(errno));
@@ -913,14 +957,28 @@
 		 * processed so far.
 		 */
 		if (p->break_loop) {
+			p->bp =3D bp;
+			p->cc =3D ep - bp;
+			/*
+			 * ep is set based on the return value of read(),
+			 * but read() from a BPF device doesn't necessarily
+			 * return a value that's a multiple of the alignment
+			 * value for BPF_WORDALIGN().  However, whenever we
+			 * increment bp, we round up the increment value by
+			 * a value rounded up by BPF_WORDALIGN(), so we
+			 * could increment bp past ep after processing the
+			 * last packet in the buffer.
+			 *
+			 * We treat ep < bp as an indication that this
+			 * happened, and just set p->cc to 0.
+			 */
+			if (p->cc < 0)
+				p->cc =3D 0;
 			if (n =3D=3D 0) {
 				p->break_loop =3D 0;
 				return (PCAP_ERROR_BREAK);
-			} else {
-				p->bp =3D bp;
-				p->cc =3D ep - bp;
+			} else
 				return (n);
-			}
 		}
=20
 		caplen =3D bhp->bh_caplen;
@@ -972,6 +1030,11 @@
 			if (++n >=3D cnt && cnt > 0) {
 				p->bp =3D bp;
 				p->cc =3D ep - bp;
+				/*
+				 * See comment above about p->cc < 0.
+				 */
+				if (p->cc < 0)
+					p->cc =3D 0;
 				return (n);
 			}
 		} else {
@@ -1272,15 +1335,19 @@
 	}
=20
 #ifdef HAVE_ZEROCOPY_BPF
-	/*
-	 * In zero-copy mode, p->buffer is just a pointer into one of the two
-	 * memory-mapped buffers, so no need to free it.
-	 */
 	if (p->md.zerocopy) {
+		/*
+		 * Delete the mappings.  Note that p->buffer gets
+		 * initialized to one of the mmapped regions in
+		 * this case, so do not try and free it directly;
+		 * null it out so that pcap_cleanup_live_common()
+		 * doesn't try to free it.
+		 */
 		if (p->md.zbuf1 !=3D MAP_FAILED && p->md.zbuf1 !=3D NULL)
-			munmap(p->md.zbuf1, p->md.zbufsize);
+			(void) munmap(p->md.zbuf1, p->md.zbufsize);
 		if (p->md.zbuf2 !=3D MAP_FAILED && p->md.zbuf2 !=3D NULL)
-			munmap(p->md.zbuf2, p->md.zbufsize);
+			(void) munmap(p->md.zbuf2, p->md.zbufsize);
+		p->buffer =3D NULL;
 		p->buffer =3D NULL;
 	}
 #endif
@@ -1395,7 +1462,15 @@
 {
 	int status =3D 0;
 	int fd;
+#ifdef LIFNAMSIZ
+	struct lifreq ifr;
+	char *ifrname =3D ifr.lifr_name;
+	const size_t ifnamsiz =3D sizeof(ifr.lifr_name);
+#else
 	struct ifreq ifr;
+	char *ifrname =3D ifr.ifr_name;
+	const size_t ifnamsiz =3D sizeof(ifr.ifr_name);
+#endif
 	struct bpf_version bv;
 #ifdef __APPLE__
 	int sockfd;
@@ -1503,9 +1578,8 @@
 					 */
 					sockfd =3D socket(AF_INET, SOCK_DGRAM, 0);
 					if (sockfd !=3D -1) {
-						strlcpy(ifr.ifr_name,
-						    p->opt.source,
-						    sizeof(ifr.ifr_name));
+						strlcpy(ifrname,
+						    p->opt.source, ifnamsiz);
 						if (ioctl(sockfd, SIOCGIFFLAGS,
 						    (char *)&ifr) < 0) {
 							/*
@@ -1571,14 +1645,6 @@
 		p->md.zerocopy =3D 1;
=20
 		/*
-		 * Set the cleanup and set/get nonblocking mode ops
-		 * as appropriate for zero-copy mode.
-		 */
-		p->cleanup_op =3D pcap_cleanup_zbuf;
-		p->setnonblock_op =3D pcap_setnonblock_zbuf;
-		p->getnonblock_op =3D pcap_getnonblock_zbuf;
-
-		/*
 		 * How to pick a buffer size: first, query the maximum buffer
 		 * size supported by zero-copy.  This also lets us quickly
 		 * determine whether the kernel generally supports zero-copy.
@@ -1627,7 +1693,7 @@
 			    pcap_strerror(errno));
 			goto bad;
 		}
-		(void)strncpy(ifr.ifr_name, p->opt.source, sizeof(ifr.ifr_name));
+		(void)strncpy(ifrname, p->opt.source, ifnamsiz);
 		if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) < 0) {
 			snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "BIOCSETIF: %s: %s",
 			    p->opt.source, pcap_strerror(errno));
@@ -1657,9 +1723,13 @@
 			/*
 			 * Now bind to the device.
 			 */
-			(void)strncpy(ifr.ifr_name, p->opt.source,
-			    sizeof(ifr.ifr_name));
-			if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) < 0) {
+			(void)strncpy(ifrname, p->opt.source, ifnamsiz);
+#ifdef BIOCSETLIF
+			if (ioctl(fd, BIOCSETLIF, (caddr_t)&ifr) < 0)
+#else
+			if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) < 0)
+#endif
+			{
 				status =3D check_setif_failure(p, errno);
 				goto bad;
 			}
@@ -1686,9 +1756,12 @@
 				 */
 				(void) ioctl(fd, BIOCSBLEN, (caddr_t)&v);
=20
-				(void)strncpy(ifr.ifr_name, p->opt.source,
-				    sizeof(ifr.ifr_name));
+				(void)strncpy(ifrname, p->opt.source, ifnamsiz);
+#ifdef BIOCSETLIF
+				if (ioctl(fd, BIOCSETLIF, (caddr_t)&ifr) >=3D 0)
+#else
 				if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) >=3D 0)
+#endif
 					break;	/* that size worked; we're done */
=20
 				if (errno !=3D ENOBUFS) {
@@ -2180,8 +2253,8 @@
 	p->setfilter_op =3D pcap_setfilter_bpf;
 	p->setdirection_op =3D pcap_setdirection_bpf;
 	p->set_datalink_op =3D pcap_set_datalink_bpf;
-	p->getnonblock_op =3D pcap_getnonblock_fd;
-	p->setnonblock_op =3D pcap_setnonblock_fd;
+	p->getnonblock_op =3D pcap_getnonblock_bpf;
+	p->setnonblock_op =3D pcap_setnonblock_bpf;
 	p->stats_op =3D pcap_stats_bpf;
 	p->cleanup_op =3D pcap_cleanup_bpf;
=20
@@ -2234,17 +2307,28 @@
 		/*
 		 * Can't get the media types.
 		 */
-		if (errno =3D=3D EINVAL) {
+		switch (errno) {
+
+		case ENXIO:
+			/*
+			 * There's no such device.
+			 */
+			close(sock);
+			return (PCAP_ERROR_NO_SUCH_DEVICE);
+
+		case EINVAL:
 			/*
 			 * Interface doesn't support SIOC{G,S}IFMEDIA.
 			 */
 			close(sock);
 			return (PCAP_ERROR_RFMON_NOTSUP);
+
+		default:
+			snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+			    "SIOCGIFMEDIA 1: %s", pcap_strerror(errno));
+			close(sock);
+			return (PCAP_ERROR);
 		}
-		snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "SIOCGIFMEDIA 1: %s",
-		    pcap_strerror(errno));
-		close(sock);
-		return (PCAP_ERROR);
 	}
 	if (req.ifm_count =3D=3D 0) {
 		/*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-bt-linux.c
--- a/head/contrib/libpcap/pcap-bt-linux.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-bt-linux.c	Wed Jul 25 16:21:35 2012 +0300
@@ -67,7 +67,6 @@
 static int bt_activate(pcap_t *);
 static int bt_read_linux(pcap_t *, int , pcap_handler , u_char *);
 static int bt_inject_linux(pcap_t *, const void *, size_t);
-static int bt_setfilter_linux(pcap_t *, struct bpf_program *);
 static int bt_setdirection_linux(pcap_t *, pcap_direction_t);
 static int bt_stats_linux(pcap_t *, struct pcap_stat *);
=20
@@ -86,8 +85,8 @@
 		/* if bluetooth is not supported this this is not fatal*/=20
 		if (errno =3D=3D EAFNOSUPPORT)
 			return 0;
-		snprintf(err_str, PCAP_ERRBUF_SIZE, "Can't open raw Bluetooth socket %d:=
%s",
-			errno, strerror(errno));
+		snprintf(err_str, PCAP_ERRBUF_SIZE,
+		    "Can't open raw Bluetooth socket: %s", strerror(errno));
 		return -1;
 	}
=20
@@ -104,8 +103,9 @@
=20
 	if (ioctl(sock, HCIGETDEVLIST, (void *) dev_list) < 0)=20
 	{
-		snprintf(err_str, PCAP_ERRBUF_SIZE, "Can't get Bluetooth device list via=
 ioctl %d:%s",
-			errno, strerror(errno));
+		snprintf(err_str, PCAP_ERRBUF_SIZE,
+		    "Can't get Bluetooth device list via ioctl: %s",
+		    strerror(errno));
 		ret =3D -1;
 		goto free;
 	}
@@ -172,7 +172,7 @@
=20
 	handle->read_op =3D bt_read_linux;
 	handle->inject_op =3D bt_inject_linux;
-	handle->setfilter_op =3D bt_setfilter_linux;
+	handle->setfilter_op =3D install_bpf_program; /* no kernel filtering */
 	handle->setdirection_op =3D bt_setdirection_linux;
 	handle->set_datalink_op =3D NULL;	/* can't change data link type */
 	handle->getnonblock_op =3D pcap_getnonblock_fd;
@@ -183,8 +183,8 @@
 	/* Create HCI socket */
 	handle->fd =3D socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI);
 	if (handle->fd < 0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't create raw socket %d:%=
s",
-			errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't create raw socket: %s", strerror(errno));
 		return PCAP_ERROR;
 	}
=20
@@ -197,15 +197,15 @@
=20
 	opt =3D 1;
 	if (setsockopt(handle->fd, SOL_HCI, HCI_DATA_DIR, &opt, sizeof(opt)) < 0)=
 {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't enable data direction =
info %d:%s",
-			errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't enable data direction info: %s", strerror(errno));
 		goto close_fail;
 	}
=20
 	opt =3D 1;
 	if (setsockopt(handle->fd, SOL_HCI, HCI_TIME_STAMP, &opt, sizeof(opt)) < =
0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't enable time stamp %d:%=
s",
-			errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't enable time stamp: %s", strerror(errno));
 		goto close_fail;
 	}
=20
@@ -215,8 +215,8 @@
 	memset((void *) &flt.type_mask, 0xff, sizeof(flt.type_mask));=09
 	memset((void *) &flt.event_mask, 0xff, sizeof(flt.event_mask));
 	if (setsockopt(handle->fd, SOL_HCI, HCI_FILTER, &flt, sizeof(flt)) < 0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't set filter %d:%s",
-			errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't set filter: %s", strerror(errno));
 		goto close_fail;
 	}
=20
@@ -225,8 +225,9 @@
 	addr.hci_family =3D AF_BLUETOOTH;
 	addr.hci_dev =3D handle->md.ifindex;
 	if (bind(handle->fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't attach to device %d %d=
:%s",
-			handle->md.ifindex, errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't attach to device %d: %s", handle->md.ifindex,
+		    strerror(errno));
 		goto close_fail;
 	}
=20
@@ -238,7 +239,7 @@
 		goto close_fail;
 	}
=20
-	if (handle->opt.buffer_size =3D=3D 0) {
+	if (handle->opt.buffer_size !=3D 0) {
 		/*
 		 * Set the socket buffer size to the specified value.
 		 */
@@ -265,6 +266,7 @@
 	struct cmsghdr *cmsg;
 	struct msghdr msg;
 	struct iovec  iv;
+	ssize_t ret;
 	struct pcap_pkthdr pkth;
 	pcap_bluetooth_h4_header* bthdr;
=20
@@ -280,31 +282,33 @@
=20
 	/* ignore interrupt system call error */
 	do {
-		pkth.caplen =3D recvmsg(handle->fd, &msg, 0);
+		ret =3D recvmsg(handle->fd, &msg, 0);
 		if (handle->break_loop)
 		{
 			handle->break_loop =3D 0;
 			return -2;
 		}
-	} while ((pkth.caplen =3D=3D -1) && (errno =3D=3D EINTR));
+	} while ((ret =3D=3D -1) && (errno =3D=3D EINTR));
=20
-	=09
-	if (pkth.caplen < 0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't receive packet %d:%s",
-			errno, strerror(errno));
+	if (ret < 0) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't receive packet: %s", strerror(errno));
 		return -1;
 	}
=20
+	pkth.caplen =3D ret;
+
 	/* get direction and timestamp*/=20
 	cmsg =3D CMSG_FIRSTHDR(&msg);
 	int in=3D0;
 	while (cmsg) {
 		switch (cmsg->cmsg_type) {
 			case HCI_CMSG_DIR:
-				in =3D *((int *) CMSG_DATA(cmsg));
+				memcpy(&in, CMSG_DATA(cmsg), sizeof in);
 				break;
                       	case HCI_CMSG_TSTAMP:
-				pkth.ts =3D *((struct timeval *) CMSG_DATA(cmsg));
+                      		memcpy(&pkth.ts, CMSG_DATA(cmsg),
+                      		    sizeof pkth.ts);
 				break;
 		}
 		cmsg =3D CMSG_NXTHDR(&msg, cmsg);
@@ -316,8 +320,13 @@
 	bthdr->direction =3D htonl(in !=3D 0);
 	pkth.caplen+=3Dsizeof(pcap_bluetooth_h4_header);
 	pkth.len =3D pkth.caplen;
-	callback(user, &pkth, &handle->buffer[handle->offset]);
-	return 1;
+	if (handle->fcode.bf_insns =3D=3D NULL ||
+	    bpf_filter(handle->fcode.bf_insns, &handle->buffer[handle->offset],
+	      pkth.len, pkth.caplen)) {
+		callback(user, &pkth, &handle->buffer[handle->offset]);
+		return 1;
+	}
+	return 0;	/* didn't pass filter */
 }
=20
 static int
@@ -337,14 +346,14 @@
 	struct hci_dev_stats * s =3D &dev_info.stat;
 	dev_info.dev_id =3D handle->md.ifindex;
 =09
-	/* ingnore eintr */
+	/* ignore eintr */
 	do {
 		ret =3D ioctl(handle->fd, HCIGETDEVINFO, (void *)&dev_info);
 	} while ((ret =3D=3D -1) && (errno =3D=3D EINTR));
 	   =20
 	if (ret < 0) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "can get stats"
-			" via ioctl %d:%s", errno, strerror(errno));
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't get stats via ioctl: %s", strerror(errno));
 		return (-1);
 	=09
 	}
@@ -358,13 +367,6 @@
 }
=20
 static int=20
-bt_setfilter_linux(pcap_t *p, struct bpf_program *fp)
-{
-	return 0;
-}
-
-
-static int=20
 bt_setdirection_linux(pcap_t *p, pcap_direction_t d)
 {
 	p->direction =3D d;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-common.c
--- a/head/contrib/libpcap/pcap-common.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-common.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,21 +18,9 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * savefile.c - supports offline use of tcpdump
- *	Extraction/creation by Jeffrey Mogul, DECWRL
- *	Modified by Steve McCanne, LBL.
- *
- * Used to save the received packet headers, after filtering, to
- * a file, and then read them later.
- * The first record in the file contains saved values for the machine
- * dependent values so we can print the dump file on any architecture.
+ * pcap-common.c - common code for pcap and pcap-ng files
  */
=20
-#ifndef lint
-static const char rcsid[] _U_ =3D
-    "@(#) $Header: /tcpdump/master/libpcap/savefile.c,v 1.183 2008-12-23 2=
0:13:29 guy Exp $ (LBL)";
-#endif
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -106,6 +94,23 @@
  * file, and new values after that one might have been assigned.  Also,
  * do *NOT* use any values below 100 - those might already have been
  * taken by one (or more!) organizations.
+ *
+ * Any platform that defines additional DLT_* codes should:
+ *
+ *	request a LINKTYPE_* code and value from tcpdump.org,
+ *	as per the above;
+ *
+ *	add, in their version of libpcap, an entry to map
+ *	those DLT_* codes to the corresponding LINKTYPE_*
+ *	code;
+ *
+ *	redefine, in their "net/bpf.h", any DLT_* values
+ *	that collide with the values used by their additional
+ *	DLT_* codes, to remove those collisions (but without
+ *	making them collide with any of the LINKTYPE_*
+ *	values equal to 50 or above; they should also avoid
+ *	defining DLT_* values that collide with those
+ *	LINKTYPE_* values, either).
  */
 #define LINKTYPE_NULL		DLT_NULL
 #define LINKTYPE_ETHERNET	DLT_EN10MB	/* also for 100Mb and up */
@@ -114,7 +119,7 @@
 #define LINKTYPE_PRONET		DLT_PRONET
 #define LINKTYPE_CHAOS		DLT_CHAOS
 #define LINKTYPE_TOKEN_RING	DLT_IEEE802	/* DLT_IEEE802 is used for Token R=
ing */
-#define LINKTYPE_ARCNET		DLT_ARCNET	/* BSD-style headers */
+#define LINKTYPE_ARCNET_BSD	DLT_ARCNET	/* BSD-style headers */
 #define LINKTYPE_SLIP		DLT_SLIP
 #define LINKTYPE_PPP		DLT_PPP
 #define LINKTYPE_FDDI		DLT_FDDI
@@ -140,10 +145,29 @@
=20
 #define LINKTYPE_SYMANTEC_FIREWALL 99		/* Symantec Enterprise Firewall */
=20
+/*
+ * These correspond to DLT_s that have different values on different
+ * platforms; we map between these values in capture files and
+ * the DLT_ values as returned by pcap_datalink() and passed to
+ * pcap_open_dead().
+ */
 #define LINKTYPE_ATM_RFC1483	100		/* LLC/SNAP-encapsulated ATM */
 #define LINKTYPE_RAW		101		/* raw IP */
 #define LINKTYPE_SLIP_BSDOS	102		/* BSD/OS SLIP BPF header */
 #define LINKTYPE_PPP_BSDOS	103		/* BSD/OS PPP BPF header */
+
+/*
+ * Values starting with 104 are used for newly-assigned link-layer
+ * header type values; for those link-layer header types, the DLT_
+ * value returned by pcap_datalink() and passed to pcap_open_dead(),
+ * and the LINKTYPE_ value that appears in capture files, are the
+ * same.
+ *
+ * LINKTYPE_MATCHING_MIN is the lowest such value; LINKTYPE_MATCHING_MAX
+ * is the highest such value.
+ */
+#define LINKTYPE_MATCHING_MIN	104		/* lowest value in the "matching" range=
 */
+
 #define LINKTYPE_C_HDLC		104		/* Cisco HDLC */
 #define LINKTYPE_IEEE802_11	105		/* IEEE 802.11 (wireless) */
 #define LINKTYPE_ATM_CLIP	106		/* Linux Classical IP over ATM */
@@ -544,39 +568,39 @@
  * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman
  * <avn at pigeonpoint.com>.
  */
-#define LINKTYPE_IPMB_LINUX		209
+#define LINKTYPE_IPMB_LINUX	209
=20
 /*
  * FlexRay automotive bus - http://www.flexray.com/ - as requested
  * by Hannes Kaelber <hannes.kaelber at x2e.de>.
  */
-#define LINKTYPE_FLEXRAY		210
+#define LINKTYPE_FLEXRAY	210
=20
 /*
  * Media Oriented Systems Transport (MOST) bus for multimedia
  * transport - http://www.mostcooperation.com/ - as requested
  * by Hannes Kaelber <hannes.kaelber at x2e.de>.
  */
-#define LINKTYPE_MOST			211
+#define LINKTYPE_MOST		211
=20
 /*
  * Local Interconnect Network (LIN) bus for vehicle networks -
  * http://www.lin-subbus.org/ - as requested by Hannes Kaelber
  * <hannes.kaelber at x2e.de>.
  */
-#define LINKTYPE_LIN			212
+#define LINKTYPE_LIN		212
=20
 /*
  * X2E-private data link type used for serial line capture,
  * as requested by Hannes Kaelber <hannes.kaelber at x2e.de>.
  */
-#define LINKTYPE_X2E_SERIAL		213
+#define LINKTYPE_X2E_SERIAL	213
=20
 /*
  * X2E-private data link type used for the Xoraya data logger
  * family, as requested by Hannes Kaelber <hannes.kaelber at x2e.de>.
  */
-#define LINKTYPE_X2E_XORAYA		214
+#define LINKTYPE_X2E_XORAYA	214
=20
 /*
  * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
@@ -595,22 +619,22 @@
  * is used to communicate keystrokes and mouse movements from the
  * Linux kernel to display systems, such as Xorg.=20
  */
-#define LINKTYPE_LINUX_EVDEV			216
+#define LINKTYPE_LINUX_EVDEV	216
=20
 /*
  * GSM Um and Abis interfaces, preceded by a "gsmtap" header.
  *
  * Requested by Harald Welte <laforge at gnumonks.org>.
  */
-#define LINKTYPE_GSMTAP_UM			217
-#define LINKTYPE_GSMTAP_ABIS			218
+#define LINKTYPE_GSMTAP_UM	217
+#define LINKTYPE_GSMTAP_ABIS	218
=20
 /*
  * MPLS, with an MPLS label as the link-layer header.
  * Requested by Michele Marchetto <michele at openbsd.org> on behalf
  * of OpenBSD.
  */
-#define LINKTYPE_MPLS				219
+#define LINKTYPE_MPLS		219
=20
 /*
  * USB packets, beginning with a Linux USB header, with the USB header
@@ -622,7 +646,7 @@
  * DECT packets, with a pseudo-header; requested by
  * Matthias Wenzel <tcpdump at mazzoo.de>.
  */
-#define LINKTYPE_DECT				221
+#define LINKTYPE_DECT		221
=20
 /*
  * From: "Lidwa, Eric (GSFC-582.0)[SGT INC]" <eric.lidwa-1 at nasa.gov>
@@ -633,7 +657,7 @@
  *   legal before I can submit a patch.
  *
  */
-#define LINKTYPE_AOS				222
+#define LINKTYPE_AOS		222
=20
 /*
  * Wireless HART (Highway Addressable Remote Transducer)
@@ -642,13 +666,13 @@
  *
  * Requested by Sam Roberts <vieuxtech at gmail.com>.
  */
-#define LINKTYPE_WIHART				223
+#define LINKTYPE_WIHART		223
=20
 /*
  * Fibre Channel FC-2 frames, beginning with a Frame_Header.
  * Requested by Kahou Lei <kahou82 at gmail.com>.
  */
-#define LINKTYPE_FC_2				224
+#define LINKTYPE_FC_2		224
=20
 /*
  * Fibre Channel FC-2 frames, beginning with an encoding of the
@@ -710,7 +734,7 @@
  * An IPv4 or IPv6 datagram follows the pseudo-header; dli_family indicates
  * which of those it is.
  */
-#define LINKTYPE_IPNET				226
+#define LINKTYPE_IPNET		226
=20
 /*
  * CAN (Controller Area Network) frames, with a pseudo-header as supplied
@@ -719,15 +743,114 @@
  *
  * Requested by Felix Obenhuber <felix at obenhuber.de>.
  */
-#define LINKTYPE_CAN_SOCKETCAN			227
+#define LINKTYPE_CAN_SOCKETCAN	227
=20
 /*
  * Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies
  * whether it's v4 or v6.  Requested by Darren Reed <Darren.Reed at Sun.COM>.
  */
-#define LINKTYPE_IPV4				228
-#define LINKTYPE_IPV6				229
+#define LINKTYPE_IPV4		228
+#define LINKTYPE_IPV6		229
=20
+/*
+ * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
+ * nothing), and with no FCS at the end of the frame; requested by
+ * Jon Smirl <jonsmirl at gmail.com>.
+ */
+#define LINKTYPE_IEEE802_15_4_NOFCS		230
+
+/*
+ * Raw D-Bus:
+ *
+ *	http://www.freedesktop.org/wiki/Software/dbus
+ *
+ * messages:
+ *
+ *	http://dbus.freedesktop.org/doc/dbus-specification.html#message-protoco=
l-messages
+ *
+ * starting with the endianness flag, followed by the message type, etc.,
+ * but without the authentication handshake before the message sequence:
+ *
+ *	http://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol
+ *
+ * Requested by Martin Vidner <martin at vidner.net>.
+ */
+#define LINKTYPE_DBUS		231
+
+/*
+ * Juniper-private data link type, as per request from
+ * Hannes Gredler <hannes at juniper.net>.=20
+ */
+#define LINKTYPE_JUNIPER_VS			232
+#define LINKTYPE_JUNIPER_SRX_E2E		233
+#define LINKTYPE_JUNIPER_FIBRECHANNEL		234
+
+/*
+ * DVB-CI (DVB Common Interface for communication between a PC Card
+ * module and a DVB receiver).  See
+ *
+ *	http://www.kaiser.cx/pcap-dvbci.html
+ *
+ * for the specification.
+ *
+ * Requested by Martin Kaiser <martin at kaiser.cx>.
+ */
+#define LINKTYPE_DVB_CI		235
+
+/*
+ * Variant of 3GPP TS 27.010 multiplexing protocol.  Requested
+ * by Hans-Christoph Schemmel <hans-christoph.schemmel at cinterion.com>.
+ */
+#define LINKTYPE_MUX27010	236
+
+/*
+ * STANAG 5066 D_PDUs.  Requested by M. Baris Demiray
+ * <barisdemiray at gmail.com>.
+ */
+#define LINKTYPE_STANAG_5066_D_PDU		237
+
+/*
+ * Juniper-private data link type, as per request from
+ * Hannes Gredler <hannes at juniper.net>.=20
+ */
+#define LINKTYPE_JUNIPER_ATM_CEMIC		238
+
+/*
+ * NetFilter LOG messages=20
+ * (payload of netlink NFNL_SUBSYS_ULOG/NFULNL_MSG_PACKET packets)
+ *
+ * Requested by Jakub Zawadzki <darkjames-ws at darkjames.pl>
+ */
+#define LINKTYPE_NFLOG		239
+
+/*
+ * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
+ * for Ethernet packets with a 4-byte pseudo-header and always
+ * with the payload including the FCS, as supplied by their
+ * netANALYZER hardware and software.
+ *
+ * Requested by Holger P. Frommer <HPfrommer at hilscher.com>
+ */
+#define LINKTYPE_NETANALYZER	240
+
+/*
+ * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
+ * for Ethernet packets with a 4-byte pseudo-header and FCS and
+ * 1 byte of SFD, as supplied by their netANALYZER hardware and
+ * software.
+ *
+ * Requested by Holger P. Frommer <HPfrommer at hilscher.com>
+ */
+#define LINKTYPE_NETANALYZER_TRANSPARENT	241
+
+/*
+ * IP-over-Infiniband, as specified by RFC 4391.
+ *
+ * Requested by Petr Sumbera <petr.sumbera at oracle.com>.
+ */
+#define LINKTYPE_IPOIB		242
+
+#define LINKTYPE_MATCHING_MAX	242		/* highest value in the "matching" rang=
e */
=20
 static struct linktype_map {
 	int	dlt;
@@ -744,7 +867,7 @@
 	{ DLT_PRONET,		LINKTYPE_PRONET },
 	{ DLT_CHAOS,		LINKTYPE_CHAOS },
 	{ DLT_IEEE802,		LINKTYPE_TOKEN_RING },
-	{ DLT_ARCNET,		LINKTYPE_ARCNET },
+	{ DLT_ARCNET,		LINKTYPE_ARCNET_BSD },
 	{ DLT_SLIP,		LINKTYPE_SLIP },
 	{ DLT_PPP,		LINKTYPE_PPP },
 	{ DLT_FDDI,	 	LINKTYPE_FDDI },
@@ -785,295 +908,12 @@
 	/* NetBSD PPP over Ethernet */
 	{ DLT_PPP_ETHER,	LINKTYPE_PPP_ETHER },
=20
-	/* IEEE 802.11 wireless */
-	{ DLT_IEEE802_11,	LINKTYPE_IEEE802_11 },
-
-	/* Frame Relay */
-	{ DLT_FRELAY,		LINKTYPE_FRELAY },
-
-	/* OpenBSD loopback */
-	{ DLT_LOOP,		LINKTYPE_LOOP },
-
-	/* OpenBSD IPSEC enc */
-	{ DLT_ENC,		LINKTYPE_ENC },
-
-	/* Linux cooked socket capture */
-	{ DLT_LINUX_SLL,	LINKTYPE_LINUX_SLL },
-
-	/* Apple LocalTalk hardware */
-	{ DLT_LTALK,		LINKTYPE_LTALK },
-
-	/* Acorn Econet */
-	{ DLT_ECONET,		LINKTYPE_ECONET },
-
-	/* OpenBSD DLT_PFLOG */
-	{ DLT_PFLOG,		LINKTYPE_PFLOG },
-
-	/* For Cisco-internal use */
-	{ DLT_CISCO_IOS,	LINKTYPE_CISCO_IOS },
-
-	/* Prism II monitor-mode header plus 802.11 header */
-	{ DLT_PRISM_HEADER,	LINKTYPE_PRISM_HEADER },
-
-	/* FreeBSD Aironet driver stuff */
-	{ DLT_AIRONET_HEADER,	LINKTYPE_AIRONET_HEADER },
-
-	/* Siemens HiPath HDLC */
-	{ DLT_HHDLC,		LINKTYPE_HHDLC },
-
-	/* RFC 2625 IP-over-Fibre Channel */
-	{ DLT_IP_OVER_FC,	LINKTYPE_IP_OVER_FC },
-
-	/* Solaris+SunATM */
-	{ DLT_SUNATM,		LINKTYPE_SUNATM },
-
-	/* RapidIO */
-	{ DLT_RIO,		LINKTYPE_RIO },
-
-	/* PCI Express */
-	{ DLT_PCI_EXP,		LINKTYPE_PCI_EXP },
-
-	/* Xilinx Aurora link layer */
-	{ DLT_AURORA,		LINKTYPE_AURORA },
-
-	/* 802.11 plus BSD radio header */
-	{ DLT_IEEE802_11_RADIO,	LINKTYPE_IEEE802_11_RADIO },
-
-	/* Tazmen Sniffer Protocol */
-	{ DLT_TZSP,		LINKTYPE_TZSP },
-
-	/* Arcnet with Linux-style link-layer headers */
-	{ DLT_ARCNET_LINUX,	LINKTYPE_ARCNET_LINUX },
-
-        /* Juniper-internal chassis encapsulation */
-        { DLT_JUNIPER_MLPPP,    LINKTYPE_JUNIPER_MLPPP },
-        { DLT_JUNIPER_MLFR,     LINKTYPE_JUNIPER_MLFR },
-        { DLT_JUNIPER_ES,       LINKTYPE_JUNIPER_ES },
-        { DLT_JUNIPER_GGSN,     LINKTYPE_JUNIPER_GGSN },
-        { DLT_JUNIPER_MFR,      LINKTYPE_JUNIPER_MFR },
-        { DLT_JUNIPER_ATM2,     LINKTYPE_JUNIPER_ATM2 },
-        { DLT_JUNIPER_SERVICES, LINKTYPE_JUNIPER_SERVICES },
-        { DLT_JUNIPER_ATM1,     LINKTYPE_JUNIPER_ATM1 },
-
-	/* Apple IP-over-IEEE 1394 cooked header */
-	{ DLT_APPLE_IP_OVER_IEEE1394, LINKTYPE_APPLE_IP_OVER_IEEE1394 },
-
-	/* SS7 */
-	{ DLT_MTP2_WITH_PHDR,	LINKTYPE_MTP2_WITH_PHDR },
-	{ DLT_MTP2,		LINKTYPE_MTP2 },
-	{ DLT_MTP3,		LINKTYPE_MTP3 },
-	{ DLT_SCCP,		LINKTYPE_SCCP },
-
-	/* DOCSIS MAC frames */
-	{ DLT_DOCSIS,		LINKTYPE_DOCSIS },
-
-	/* IrDA IrLAP packets + Linux-cooked header */
-	{ DLT_LINUX_IRDA,	LINKTYPE_LINUX_IRDA },
-
-	/* IBM SP and Next Federation switches */
-	{ DLT_IBM_SP,		LINKTYPE_IBM_SP },
-	{ DLT_IBM_SN,		LINKTYPE_IBM_SN },
-
-	/* 802.11 plus AVS radio header */
-	{ DLT_IEEE802_11_RADIO_AVS, LINKTYPE_IEEE802_11_RADIO_AVS },
-
 	/*
-	 * Any platform that defines additional DLT_* codes should:
-	 *
-	 *	request a LINKTYPE_* code and value from tcpdump.org,
-	 *	as per the above;
-	 *
-	 *	add, in their version of libpcap, an entry to map
-	 *	those DLT_* codes to the corresponding LINKTYPE_*
-	 *	code;
-	 *
-	 *	redefine, in their "net/bpf.h", any DLT_* values
-	 *	that collide with the values used by their additional
-	 *	DLT_* codes, to remove those collisions (but without
-	 *	making them collide with any of the LINKTYPE_*
-	 *	values equal to 50 or above; they should also avoid
-	 *	defining DLT_* values that collide with those
-	 *	LINKTYPE_* values, either).
+	 * All LINKTYPE_ values between LINKTYPE_MATCHING_MIN
+	 * and LINKTYPE_MATCHING_MAX are mapped to identical
+	 * DLT_ values.
 	 */
=20
-	/* Juniper-internal chassis encapsulation */
-	{ DLT_JUNIPER_MONITOR,	LINKTYPE_JUNIPER_MONITOR },
-
-	/* BACnet MS/TP */
-	{ DLT_BACNET_MS_TP,	LINKTYPE_BACNET_MS_TP },
-
-	/* PPP for pppd, with direction flag in the PPP header */
-	{ DLT_PPP_PPPD,		LINKTYPE_PPP_PPPD},
-
-	/* Juniper-internal chassis encapsulation */
-        { DLT_JUNIPER_PPPOE,    LINKTYPE_JUNIPER_PPPOE },
-        { DLT_JUNIPER_PPPOE_ATM,LINKTYPE_JUNIPER_PPPOE_ATM },
-
-	/* GPRS LLC */
-	{ DLT_GPRS_LLC,		LINKTYPE_GPRS_LLC },
-
-	/* Transparent Generic Framing Procedure (ITU-T G.7041/Y.1303) */
-	{ DLT_GPF_T,		LINKTYPE_GPF_T },
-
-	/* Framed Generic Framing Procedure (ITU-T G.7041/Y.1303) */
-	{ DLT_GPF_F,		LINKTYPE_GPF_F },
-
-	{ DLT_GCOM_T1E1,	LINKTYPE_GCOM_T1E1 },
-	{ DLT_GCOM_SERIAL,	LINKTYPE_GCOM_SERIAL },
-
-        /* Juniper-internal chassis encapsulation */
-        { DLT_JUNIPER_PIC_PEER, LINKTYPE_JUNIPER_PIC_PEER },
-
-	/* Endace types */
-	{ DLT_ERF_ETH,		LINKTYPE_ERF_ETH },
-	{ DLT_ERF_POS,		LINKTYPE_ERF_POS },
-
-	/* viSDN LAPD */
-	{ DLT_LINUX_LAPD,	LINKTYPE_LINUX_LAPD },
-
-        /* Juniper meta-information before Ether, PPP, Frame Relay, C-HDLC=
 Frames */
-        { DLT_JUNIPER_ETHER, LINKTYPE_JUNIPER_ETHER },
-        { DLT_JUNIPER_PPP, LINKTYPE_JUNIPER_PPP },
-        { DLT_JUNIPER_FRELAY, LINKTYPE_JUNIPER_FRELAY },
-        { DLT_JUNIPER_CHDLC, LINKTYPE_JUNIPER_CHDLC },
-
-        /* Multi Link Frame Relay (FRF.16) */
-        { DLT_MFR,              LINKTYPE_MFR },
-
-        /* Juniper Voice PIC */
-        { DLT_JUNIPER_VP,       LINKTYPE_JUNIPER_VP },
-
-	/* Controller Area Network (CAN) v2.0B */
-	{ DLT_A429,		LINKTYPE_A429 },
-
-	/* Arinc 653 Interpartition Communication messages */
-	{ DLT_A653_ICM,         LINKTYPE_A653_ICM },
-
-	/* USB */
-	{ DLT_USB,		LINKTYPE_USB },
-
-	/* Bluetooth HCI UART transport layer */
-	{ DLT_BLUETOOTH_HCI_H4,	LINKTYPE_BLUETOOTH_HCI_H4 },
-
-	/* IEEE 802.16 MAC Common Part Sublayer */
-	{ DLT_IEEE802_16_MAC_CPS,	LINKTYPE_IEEE802_16_MAC_CPS },
-
-	/* USB with Linux header */
-	{ DLT_USB_LINUX,	LINKTYPE_USB_LINUX },
-
-	/* Controller Area Network (CAN) v2.0B */
-	{ DLT_CAN20B,		LINKTYPE_CAN20B },
-
-	/* IEEE 802.15.4 with address fields padded */
-	{ DLT_IEEE802_15_4_LINUX,	LINKTYPE_IEEE802_15_4_LINUX },
-
-	/* Per Packet Information encapsulated packets */
-	{ DLT_PPI,			LINKTYPE_PPI },
-
-	/* IEEE 802.16 MAC Common Part Sublayer plus radiotap header */
-	{ DLT_IEEE802_16_MAC_CPS_RADIO, LINKTYPE_IEEE802_16_MAC_CPS_RADIO },
-
-        /* Juniper Voice ISM */
-        { DLT_JUNIPER_ISM,      LINKTYPE_JUNIPER_ISM },
-
-	/* IEEE 802.15.4 exactly as it appears in the spec */
-        { DLT_IEEE802_15_4,	LINKTYPE_IEEE802_15_4 },
-
-	/* Various link-layer types for SITA */
-	{ DLT_SITA,		LINKTYPE_SITA },
-
-	/* Various link-layer types for Endace */
-	{ DLT_ERF,		LINKTYPE_ERF },
-
-	/* Special header for u10 Networks boards */
-	{ DLT_RAIF1,		LINKTYPE_RAIF1 },
-
-	/* IPMB */
-	{ DLT_IPMB,		LINKTYPE_IPMB },
-
-        /* Juniper Secure Tunnel */
-        { DLT_JUNIPER_ST,       LINKTYPE_JUNIPER_ST },
-
-	/* Bluetooth HCI UART transport layer, with pseudo-header */
-	{ DLT_BLUETOOTH_HCI_H4_WITH_PHDR, LINKTYPE_BLUETOOTH_HCI_H4_WITH_PHDR },
-
-	/* AX.25 with KISS header */
-	{ DLT_AX25_KISS,	LINKTYPE_AX25_KISS },
-
-	/* Raw LAPD, with no pseudo-header */
-	{ DLT_LAPD,		LINKTYPE_LAPD },
-
-	/* PPP with one-byte pseudo-header giving direction */
-	{ DLT_PPP_WITH_DIR,	LINKTYPE_PPP_WITH_DIR },
-
-	/* Cisco HDLC with one-byte pseudo-header giving direction */
-	{ DLT_C_HDLC_WITH_DIR,	LINKTYPE_C_HDLC_WITH_DIR },
-
-	/* Frame Relay with one-byte pseudo-header giving direction */
-	{ DLT_FRELAY_WITH_DIR,	LINKTYPE_FRELAY_WITH_DIR },
-
-	/* LAPB with one-byte pseudo-header giving direction */
-	{ DLT_LAPB_WITH_DIR,	LINKTYPE_LAPB_WITH_DIR },
-
-	/* IPMB with Linux pseudo-header */
-	{ DLT_IPMB_LINUX,	LINKTYPE_IPMB_LINUX },
-
-	/* FlexRay */
-	{ DLT_FLEXRAY,		LINKTYPE_FLEXRAY },
-
-	/* MOST */
-	{ DLT_MOST,		LINKTYPE_MOST },
-
-	/* LIN */
-	{ DLT_LIN,		LINKTYPE_LIN },
-
-	/* X2E-private serial line capture */
-	{ DLT_X2E_SERIAL,	LINKTYPE_X2E_SERIAL },
-
-	/* X2E-private for Xoraya data logger family */
-	{ DLT_X2E_XORAYA,	LINKTYPE_X2E_XORAYA },
-
-	/* IEEE 802.15.4 with PHY data for non-ASK PHYs */
-	{ DLT_IEEE802_15_4_NONASK_PHY, LINKTYPE_IEEE802_15_4_NONASK_PHY },
-
-	/* Input device events from Linux /dev/input/eventN devices */
-	{ DLT_LINUX_EVDEV,	LINKTYPE_LINUX_EVDEV },
-
-	/* GSM types */
-	{ DLT_GSMTAP_UM,	LINKTYPE_GSMTAP_UM },
-	{ DLT_GSMTAP_ABIS,	LINKTYPE_GSMTAP_ABIS },
-
-	/* MPLS, with an MPLS label as the link-layer header */
-	{ DLT_MPLS,		LINKTYPE_MPLS },
-
-	/* USB with padded Linux header */
-	{ DLT_USB_LINUX_MMAPPED, LINKTYPE_USB_LINUX_MMAPPED },
-
-	/* DECT packets with a pseudo-header */
-	{ DLT_DECT,		LINKTYPE_DECT },
-
-	/* AOS Space Data Link Protocol */
-	{ DLT_AOS,		LINKTYPE_AOS },
-
-	/* Wireless HART */
-	{ DLT_WIHART,		LINKTYPE_WIHART },
-
-	/* Fibre Channel FC-2 frames without SOF or EOF */
-	{ DLT_FC_2,		LINKTYPE_FC_2 },
-
-	/* Fibre Channel FC-2 frames with SOF and EOF */
-	{ DLT_FC_2_WITH_FRAME_DELIMS, LINKTYPE_FC_2_WITH_FRAME_DELIMS },
-
-	/* Solaris IPNET */
-	{ DLT_IPNET,		LINKTYPE_IPNET },
-
-	/* CAN frames with SocketCAN headers */
-	{ DLT_CAN_SOCKETCAN,	LINKTYPE_CAN_SOCKETCAN },
-
-	/* Raw IPv4/IPv6 */
-	{ DLT_IPV4,		LINKTYPE_IPV4 },
-	{ DLT_IPV6,		LINKTYPE_IPV6 },
-
 	{ -1,			-1 }
 };
=20
@@ -1082,6 +922,15 @@
 {
 	int i;
=20
+	/*
+	 * Map the values in the matching range.
+	 */
+	if (dlt >=3D DLT_MATCHING_MIN && dlt <=3D DLT_MATCHING_MAX)
+		return (dlt);
+
+	/*
+	 * Map the values outside that range.
+	 */
 	for (i =3D 0; map[i].dlt !=3D -1; i++) {
 		if (map[i].dlt =3D=3D dlt)
 			return (map[i].linktype);
@@ -1089,8 +938,8 @@
=20
 	/*
 	 * If we don't have a mapping for this DLT_ code, return an
-	 * error; that means that the table above needs to have an
-	 * entry added.
+	 * error; that means that this is a value with no corresponding
+	 * LINKTYPE_ code, and we need to assign one.
 	 */
 	return (-1);
 }
@@ -1100,6 +949,16 @@
 {
 	int i;
=20
+	/*
+	 * Map the values in the matching range.
+	 */
+	if (linktype >=3D LINKTYPE_MATCHING_MIN &&
+	    linktype <=3D LINKTYPE_MATCHING_MAX)
+		return (linktype);
+
+	/*
+	 * Map the values outside that range.
+	 */
 	for (i =3D 0; map[i].linktype !=3D -1; i++) {
 		if (map[i].linktype =3D=3D linktype)
 			return (map[i].dlt);
@@ -1127,33 +986,72 @@
     int header_len_64_bytes)
 {
 	pcap_usb_header_mmapped *uhdr =3D (pcap_usb_header_mmapped *)buf;
+	bpf_u_int32 offset =3D 0;
+	usb_isodesc *pisodesc;
+	int32_t numdesc, i;
+
+	/*
+	 * "offset" is the offset *past* the field we're swapping;
+	 * we skip the field *before* checking to make sure
+	 * the captured data length includes the entire field.
+	 */
=20
 	/*
 	 * The URB id is a totally opaque value; do we really need to=20
 	 * convert it to the reading host's byte order???
 	 */
-	if (hdr->caplen < 8)
+	offset +=3D 8;			/* skip past id */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->id =3D SWAPLL(uhdr->id);
-	if (hdr->caplen < 14)
+
+	offset +=3D 4;			/* skip past various 1-byte fields */
+
+	offset +=3D 2;			/* skip past bus_id */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->bus_id =3D SWAPSHORT(uhdr->bus_id);
-	if (hdr->caplen < 24)
+
+	offset +=3D 2;			/* skip past various 1-byte fields */
+
+	offset +=3D 8;			/* skip past ts_sec */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->ts_sec =3D SWAPLL(uhdr->ts_sec);
-	if (hdr->caplen < 28)
+
+	offset +=3D 4;			/* skip past ts_usec */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->ts_usec =3D SWAPLONG(uhdr->ts_usec);
-	if (hdr->caplen < 32)
+
+	offset +=3D 4;			/* skip past status */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->status =3D SWAPLONG(uhdr->status);
-	if (hdr->caplen < 36)
+
+	offset +=3D 4;			/* skip past urb_len */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->urb_len =3D SWAPLONG(uhdr->urb_len);
-	if (hdr->caplen < 40)
+
+	offset +=3D 4;			/* skip past data_len */
+	if (hdr->caplen < offset)
 		return;
 	uhdr->data_len =3D SWAPLONG(uhdr->data_len);
=20
+	if (uhdr->transfer_type =3D=3D URB_ISOCHRONOUS) {
+		offset +=3D 4;			/* skip past s.iso.error_count */
+		if (hdr->caplen < offset)
+			return;
+		uhdr->s.iso.error_count =3D SWAPLONG(uhdr->s.iso.error_count);
+
+		offset +=3D 4;			/* skip past s.iso.numdesc */
+		if (hdr->caplen < offset)
+			return;
+		uhdr->s.iso.numdesc =3D SWAPLONG(uhdr->s.iso.numdesc);
+	} else
+		offset +=3D 8;			/* skip USB setup header */
+
 	if (header_len_64_bytes) {
 		/*
 		 * This is either the "version 1" header, with
@@ -1163,17 +1061,50 @@
 		 * at the end.  Byte swap them as if this were
 		 * a "version 1" header.
 		 */
-		if (hdr->caplen < 52)
+		offset +=3D 4;			/* skip past interval */
+		if (hdr->caplen < offset)
 			return;
 		uhdr->interval =3D SWAPLONG(uhdr->interval);
-		if (hdr->caplen < 56)
+
+		offset +=3D 4;			/* skip past start_frame */
+		if (hdr->caplen < offset)
 			return;
 		uhdr->start_frame =3D SWAPLONG(uhdr->start_frame);
-		if (hdr->caplen < 60)
+
+		offset +=3D 4;			/* skip past xfer_flags */
+		if (hdr->caplen < offset)
 			return;
 		uhdr->xfer_flags =3D SWAPLONG(uhdr->xfer_flags);
-		if (hdr->caplen < 64)
+
+		offset +=3D 4;			/* skip past ndesc */
+		if (hdr->caplen < offset)
 			return;
 		uhdr->ndesc =3D SWAPLONG(uhdr->ndesc);
 	}=09
+
+	if (uhdr->transfer_type =3D=3D URB_ISOCHRONOUS) {
+		/* swap the values in struct linux_usb_isodesc */
+		pisodesc =3D (usb_isodesc *)(void *)(buf+offset);
+		numdesc =3D uhdr->s.iso.numdesc;
+		for (i =3D 0; i < numdesc; i++) {
+			offset +=3D 4;		/* skip past status */
+			if (hdr->caplen < offset)
+				return;
+			pisodesc->status =3D SWAPLONG(pisodesc->status);
+
+			offset +=3D 4;		/* skip past offset */
+			if (hdr->caplen < offset)
+				return;
+			pisodesc->offset =3D SWAPLONG(pisodesc->offset);
+
+			offset +=3D 4;		/* skip past len */
+			if (hdr->caplen < offset)
+				return;
+			pisodesc->len =3D SWAPLONG(pisodesc->len);
+
+			offset +=3D 4;		/* skip past padding */
+
+			pisodesc++;
+		}
+	}
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-config.in
--- a/head/contrib/libpcap/pcap-config.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-config.in	Wed Jul 25 16:21:35 2012 +0300
@@ -4,6 +4,13 @@
 # Script to give the appropriate compiler flags and linker flags
 # to use when building code that uses libpcap.
 #
+prefix=3D"@prefix@"
+exec_prefix=3D"@exec_prefix@"
+includedir=3D"@includedir@"
+libdir=3D"@libdir@"
+V_RPATH_OPT=3D"@V_RPATH_OPT@"
+LIBS=3D"@LIBS@"
+
 static=3D0
 show_cflags=3D0
 show_libs=3D0
@@ -29,14 +36,14 @@
 	esac
 	shift
 done
-if [ "@V_RPATH_OPT@" !=3D "" ]
+if [ "$V_RPATH_OPT" !=3D "" ]
 then
 	#
 	# If libdir isn't /usr/lib, add it to the run-time linker path.
 	#
-	if [ "@libdir@" !=3D "/usr/lib" ]
+	if [ "$libdir" !=3D "/usr/lib" ]
 	then
-		RPATH=3D at V_RPATH_OPT@@libdir@
+		RPATH=3D$V_RPATH_OPT$libdir
 	fi
 fi
 if [ "$static" =3D 1 ]
@@ -47,19 +54,19 @@
 	#
 	if [ "$show_cflags" =3D 1 -a "$show_libs" =3D 1 ]
 	then
-		echo "-I at includedir@ -L at libdir@ -lpcap @LIBS@"
+		echo "-I$includedir -L$libdir -lpcap $LIBS"
 	elif [ "$show_cflags" =3D 1 -a "$show_additional_libs" =3D 1 ]
 	then
-		echo "-I at includedir@ -L at libdir@ @LIBS@"
+		echo "-I$includedir -L$libdir $LIBS"
 	elif [ "$show_cflags" =3D 1 ]
 	then
-		echo "-I at includedir@"
+		echo "-I$includedir"
 	elif [ "$show_libs" =3D 1 ]
 	then
-		echo "-L at libdir@ -lpcap @LIBS@"
+		echo "-L$libdir -lpcap $LIBS"
 	elif [ "$show_additional_libs" =3D 1 ]
 	then
-		echo "@LIBS@"
+		echo "$LIBS"
 	fi
 else
 	#
@@ -68,15 +75,15 @@
 	#
 	if [ "$show_cflags" =3D 1 -a "$show_libs" =3D 1 ]
 	then
-		echo "-I at includedir@ -L at libdir@ $RPATH -lpcap"
+		echo "-I$includedir -L$libdir $RPATH -lpcap"
 	elif [ "$show_cflags" =3D 1 -a "$show_additional_libs" =3D 1 ]
 	then
-		echo "-I at includedir@"
+		echo "-I$includedir"
 	elif [ "$show_cflags" =3D 1 ]
 	then
-		echo "-I at includedir@"
+		echo "-I$includedir"
 	elif [ "$show_libs" =3D 1 ]
 	then
-		echo "-L at libdir@ $RPATH -lpcap"
+		echo "-L$libdir $RPATH -lpcap"
 	fi
 fi
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-dag.c
--- a/head/contrib/libpcap/pcap-dag.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-dag.c	Wed Jul 25 16:21:35 2012 +0300
@@ -879,8 +879,8 @@
 	int dagstream;
 	int dagfd;
=20
-	/* Try all the DAGs 0-9 */
-	for (c =3D 0; c < 9; c++) {
+	/* Try all the DAGs 0-31 */
+	for (c =3D 0; c < 32; c++) {
 		snprintf(name, 12, "dag%d", c);
 		if (-1 =3D=3D dag_parse_name(name, dagname, DAGNAME_BUFSIZE, &dagstream))
 		{
@@ -897,7 +897,7 @@
 			{
 				int stream, rxstreams;
 				rxstreams =3D dag_rx_get_stream_count(dagfd);
-				for(stream=3D0;stream<16;stream+=3D2) {
+				for(stream=3D0;stream<DAG_STREAM_MAX;stream+=3D2) {
 					if (0 =3D=3D dag_attach_stream(dagfd, stream, 0, 0)) {
 						dag_detach_stream(dagfd, stream);
=20
@@ -908,6 +908,11 @@
 							 */
 							ret =3D -1;
 						}
+					=09
+						rxstreams--;
+						if(rxstreams <=3D 0) {
+							break;
+						}
 					}
 				}			=09
 			}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-dlpi.c
--- a/head/contrib/libpcap/pcap-dlpi.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-dlpi.c	Wed Jul 25 16:21:35 2012 +0300
@@ -143,10 +143,9 @@
 #ifdef DL_HP_RAWDLS
 static int dl_dohpuxbind(int, char *);
 #endif
-static int dlattachreq(int, bpf_u_int32, char *);
+static int dlpromiscon(pcap_t *, bpf_u_int32);
 static int dlbindreq(int, bpf_u_int32, char *);
 static int dlbindack(int, char *, char *, int *);
-static int dlpromisconreq(int, bpf_u_int32, char *);
 static int dlokack(int, const char *, char *, char *);
 static int dlinforeq(int, char *);
 static int dlinfoack(int, char *, char *);
@@ -450,7 +449,7 @@
 	/* Try device without unit number */
 	if ((p->fd =3D open(dname, O_RDWR)) < 0) {
 		if (errno !=3D ENOENT) {
-			if (errno =3D=3D EACCES)
+			if (errno =3D=3D EPERM || errno =3D=3D EACCES)
 				status =3D PCAP_ERROR_PERM_DENIED;
 			snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "%s: %s", dname,
 			    pcap_strerror(errno));
@@ -486,7 +485,7 @@
 				snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
 				    "%s: No DLPI device found", p->opt.source);
 			} else {
-				if (errno =3D=3D EACCES)
+				if (errno =3D=3D EPERM || errno =3D=3D EACCES)
 					status =3D PCAP_ERROR_PERM_DENIED;
 				snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "%s: %s",
 				    dname2, pcap_strerror(errno));
@@ -610,9 +609,12 @@
 		/*
 		** Enable promiscuous (not necessary on send FD)
 		*/
-		if (dlpromisconreq(p->fd, DL_PROMISC_PHYS, p->errbuf) < 0 ||
-		    dlokack(p->fd, "promisc_phys", (char *)buf, p->errbuf) < 0)
+		status =3D dlpromiscon(p, DL_PROMISC_PHYS);
+		if (status < 0) {
+			if (status =3D=3D PCAP_ERROR_PERM_DENIED)
+				status =3D PCAP_ERROR_PROMISC_PERM_DENIED;
 			goto bad;
+		}
=20
 		/*
 		** Try to enable multicast (you would have thought
@@ -620,8 +622,8 @@
 		** HP-UX or SINIX) (Not necessary on send FD)
 		*/
 #if !defined(__hpux) && !defined(sinix)
-		if (dlpromisconreq(p->fd, DL_PROMISC_MULTI, p->errbuf) < 0 ||
-		    dlokack(p->fd, "promisc_multi", (char *)buf, p->errbuf) < 0)
+		status =3D dlpromiscon(p, DL_PROMISC_MULTI);
+		if (status < 0)
 			status =3D PCAP_WARNING;
 #endif
 	}
@@ -631,20 +633,27 @@
 	** under SINIX) (Not necessary on send FD)
 	*/
 #ifndef sinix
-	if (
-#ifdef __hpux
-	    !p->opt.promisc &&
+#if defined(__hpux)
+	/* HP-UX - only do this when not in promiscuous mode */
+	if (!p->opt.promisc) {
+#elif defined(HAVE_SOLARIS)
+	/* Solaris - don't do this on SunATM devices */
+	if (!isatm) {
+#else
+	/* Everything else (except for SINIX) - always do this */
+	{
 #endif
-#ifdef HAVE_SOLARIS
-	    !isatm &&
-#endif
-	    (dlpromisconreq(p->fd, DL_PROMISC_SAP, p->errbuf) < 0 ||
-	    dlokack(p->fd, "promisc_sap", (char *)buf, p->errbuf) < 0)) {
-		/* Not fatal if promisc since the DL_PROMISC_PHYS worked */
-		if (p->opt.promisc)
-			status =3D PCAP_WARNING;
-		else
-			goto bad;
+		status =3D dlpromiscon(p, DL_PROMISC_SAP);
+		if (status < 0) {
+			/*
+			 * Not fatal, since the DL_PROMISC_PHYS mode worked.
+			 * Report it as a warning, however.
+			 */
+			if (p->opt.promisc)
+				status =3D PCAP_WARNING;
+			else
+				goto bad;
+		}
 	}
 #endif /* sinix */
=20
@@ -815,11 +824,15 @@
 static int
 dl_doattach(int fd, int ppa, char *ebuf)
 {
+	dl_attach_req_t	req;
 	bpf_u_int32 buf[MAXDLBUF];
 	int err;
=20
-	if (dlattachreq(fd, ppa, ebuf) < 0)
+	req.dl_primitive =3D DL_ATTACH_REQ;
+	req.dl_ppa =3D ppa;
+	if (send_request(fd, (char *)&req, sizeof(req), "attach", ebuf) < 0)
 		return (PCAP_ERROR);
+
 	err =3D dlokack(fd, "attach", (char *)buf, ebuf);
 	if (err < 0)
 		return (err);
@@ -877,6 +890,27 @@
 }
 #endif
=20
+#define STRINGIFY(n)	#n
+
+static int
+dlpromiscon(pcap_t *p, bpf_u_int32 level)
+{
+	dl_promiscon_req_t req;
+	bpf_u_int32 buf[MAXDLBUF];
+	int err;
+
+	req.dl_primitive =3D DL_PROMISCON_REQ;
+	req.dl_level =3D level;
+	if (send_request(p->fd, (char *)&req, sizeof(req), "promiscon",
+	    p->errbuf) < 0)
+		return (PCAP_ERROR);
+	err =3D dlokack(p->fd, "promiscon" STRINGIFY(level), (char *)buf,
+	    p->errbuf);
+	if (err < 0)
+		return (err);
+	return (0);
+}
+
 int
 pcap_platform_finddevs(pcap_if_t **alldevsp, char *errbuf)
 {
@@ -986,7 +1020,8 @@
 			snprintf(ebuf, PCAP_ERRBUF_SIZE,
 			    "recv_ack: %s: UNIX error - %s",
 			    what, pcap_strerror(dlp->error_ack.dl_unix_errno));
-			if (dlp->error_ack.dl_unix_errno =3D=3D EACCES)
+			if (dlp->error_ack.dl_unix_errno =3D=3D EPERM ||
+			    dlp->error_ack.dl_unix_errno =3D=3D EACCES)
 				return (PCAP_ERROR_PERM_DENIED);
 			break;
=20
@@ -1222,17 +1257,6 @@
 }
=20
 static int
-dlattachreq(int fd, bpf_u_int32 ppa, char *ebuf)
-{
-	dl_attach_req_t	req;
-
-	req.dl_primitive =3D DL_ATTACH_REQ;
-	req.dl_ppa =3D ppa;
-
-	return (send_request(fd, (char *)&req, sizeof(req), "attach", ebuf));
-}
-
-static int
 dlbindreq(int fd, bpf_u_int32 sap, char *ebuf)
 {
=20
@@ -1260,17 +1284,6 @@
 }
=20
 static int
-dlpromisconreq(int fd, bpf_u_int32 level, char *ebuf)
-{
-	dl_promiscon_req_t req;
-
-	req.dl_primitive =3D DL_PROMISCON_REQ;
-	req.dl_level =3D level;
-
-	return (send_request(fd, (char *)&req, sizeof(req), "promiscon", ebuf));
-}
-
-static int
 dlokack(int fd, const char *what, char *bufp, char *ebuf)
 {
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-filter.manmi=
sc
--- a/head/contrib/libpcap/pcap-filter.manmisc	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/libpcap/pcap-filter.manmisc	Wed Jul 25 16:21:35 2012 +03=
00
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap-filter.manmisc.in,v 1.1.2.2=
 2008-10-21 07:44:56 guy Exp $ (LBL)
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap-filter.manmisc.in,v 1.1 200=
8-10-21 07:33:01 guy Exp $ (LBL)
 .\"
 .\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 19=
97
 .\"	The Regents of the University of California.  All rights reserved.
@@ -65,6 +65,8 @@
 .BR dst ,
 .BR "src or dst" ,
 .BR "src and dst" ,
+.BR ra ,
+.BR ta ,
 .BR addr1 ,
 .BR addr2 ,
 .BR addr3 ,
@@ -76,6 +78,8 @@
 .B "src or dst"
 is assumed.
 The
+.BR ra ,
+.BR ta ,
 .BR addr1 ,
 .BR addr2 ,
 .BR addr3 ,
@@ -472,6 +476,15 @@
 .B scrub
 (applies only to packets logged by OpenBSD's or FreeBSD's
 .BR pf (4)).
+.IP "\fBwlan ra \fIehost\fR"
+True if the IEEE 802.11 RA is
+.IR ehost .
+The RA field is used in all frames except for management frames.
+.IP "\fBwlan ta \fIehost\fR"
+True if the IEEE 802.11 TA is
+.IR ehost .
+The TA field is used in all frames except for management frames and
+CTS (Clear To Send) and ACK (Acknowledgment) control frames.
 .IP "\fBwlan addr1 \fIehost\fR"
 True if the first IEEE 802.11 address is
 .IR ehost .
@@ -490,7 +503,7 @@
 .IR ehost .
 The fourth address field is only used for
 WDS (Wireless Distribution System) frames.
-.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, =
\fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fInetbeui\fP"
+.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, =
\fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fBnetbeui\fP"
 Abbreviations for:
 .in +.5i
 .nf
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-filter.manmi=
sc.in
--- a/head/contrib/libpcap/pcap-filter.manmisc.in	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/libpcap/pcap-filter.manmisc.in	Wed Jul 25 16:21:35 2012 =
+0300
@@ -65,6 +65,8 @@
 .BR dst ,
 .BR "src or dst" ,
 .BR "src and dst" ,
+.BR ra ,
+.BR ta ,
 .BR addr1 ,
 .BR addr2 ,
 .BR addr3 ,
@@ -76,6 +78,8 @@
 .B "src or dst"
 is assumed.
 The
+.BR ra ,
+.BR ta ,
 .BR addr1 ,
 .BR addr2 ,
 .BR addr3 ,
@@ -472,6 +476,15 @@
 .B scrub
 (applies only to packets logged by OpenBSD's or FreeBSD's
 .BR pf (4)).
+.IP "\fBwlan ra \fIehost\fR"
+True if the IEEE 802.11 RA is
+.IR ehost .
+The RA field is used in all frames except for management frames.
+.IP "\fBwlan ta \fIehost\fR"
+True if the IEEE 802.11 TA is
+.IR ehost .
+The TA field is used in all frames except for management frames and
+CTS (Clear To Send) and ACK (Acknowledgment) control frames.
 .IP "\fBwlan addr1 \fIehost\fR"
 True if the first IEEE 802.11 address is
 .IR ehost .
@@ -490,7 +503,7 @@
 .IR ehost .
 The fourth address field is only used for
 WDS (Wireless Distribution System) frames.
-.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, =
\fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fInetbeui\fP"
+.IP "\fBip\fR, \fBip6\fR, \fBarp\fR, \fBrarp\fR, \fBatalk\fR, \fBaarp\fR, =
\fBdecnet\fR, \fBiso\fR, \fBstp\fR, \fBipx\fR, \fBnetbeui\fP"
 Abbreviations for:
 .in +.5i
 .nf
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-int.h
--- a/head/contrib/libpcap/pcap-int.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-int.h	Wed Jul 25 16:21:35 2012 +0300
@@ -209,6 +209,7 @@
 	char	*source;
 	int	promisc;
 	int	rfmon;
+	int	tstamp_type;
 };
=20
 /*
@@ -331,6 +332,8 @@
 	char errbuf[PCAP_ERRBUF_SIZE + 1];
 	int dlt_count;
 	u_int *dlt_list;
+	int tstamp_type_count;
+	u_int *tstamp_type_list;
=20
 	struct pcap_pkthdr pcap_header;	/* This is needed for the pcap_next_ex() =
to work */
 };
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-libdlpi.c
--- a/head/contrib/libpcap/pcap-libdlpi.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-libdlpi.c	Wed Jul 25 16:21:35 2012 +0300
@@ -49,6 +49,7 @@
 #include "dlpisubs.h"
=20
 /* Forwards. */
+static int dlpromiscon(pcap_t *, bpf_u_int32);
 static int pcap_read_libdlpi(pcap_t *, int, pcap_handler, u_char *);
 static int pcap_inject_libdlpi(pcap_t *, const void *, size_t);
 static void pcap_close_libdlpi(pcap_t *);
@@ -114,7 +115,8 @@
 	if (retv !=3D DLPI_SUCCESS) {
 		if (retv =3D=3D DLPI_ELINKNAMEINVAL || retv =3D=3D DLPI_ENOLINK)
 			err =3D PCAP_ERROR_NO_SUCH_DEVICE;
-		else if (retv =3D=3D DL_SYSERR && errno =3D=3D EACCES)
+		else if (retv =3D=3D DL_SYSERR &&
+		    (errno =3D=3D EPERM || errno =3D=3D EACCES))
 			err =3D PCAP_ERROR_PERM_DENIED;
 		pcap_libdlpi_err(p->opt.source, "dlpi_open", retv,
 		    p->errbuf);
@@ -139,34 +141,43 @@
=20
 	/* Enable promiscuous mode. */
 	if (p->opt.promisc) {
-		retv =3D dlpi_promiscon(p->dlpi_hd, DL_PROMISC_PHYS);
-		if (retv !=3D DLPI_SUCCESS) {
-			pcap_libdlpi_err(p->opt.source,
-			    "dlpi_promisc(PHYSICAL)", retv, p->errbuf);
+		err =3D dlpromiscon(p, DL_PROMISC_PHYS);
+		if (err < 0) {
+			/*
+			 * "You don't have permission to capture on
+			 * this device" and "you don't have permission
+			 * to capture in promiscuous mode on this
+			 * device" are different; let the user know,
+			 * so if they can't get permission to
+			 * capture in promiscuous mode, they can at
+			 * least try to capture in non-promiscuous
+			 * mode.
+			 *
+			 * XXX - you might have to capture in
+			 * promiscuous mode to see outgoing packets.
+			 */
+			if (err =3D=3D PCAP_ERROR_PERM_DENIED)
+				err =3D PCAP_ERROR_PROMISC_PERM_DENIED;
 			goto bad;
 		}
 	} else {
 		/* Try to enable multicast. */
-		retv =3D dlpi_promiscon(p->dlpi_hd, DL_PROMISC_MULTI);
-		if (retv !=3D DLPI_SUCCESS) {
-			pcap_libdlpi_err(p->opt.source, "dlpi_promisc(MULTI)",
-			    retv, p->errbuf);
+		err =3D dlpromiscon(p, DL_PROMISC_MULTI);
+		if (err < 0)
 			goto bad;
-		}
 	}
=20
 	/* Try to enable SAP promiscuity. */
-	retv =3D dlpi_promiscon(p->dlpi_hd, DL_PROMISC_SAP);
-	if (retv !=3D DLPI_SUCCESS) {
-		if (p->opt.promisc) {
-			pcap_libdlpi_err(p->opt.source, "dlpi_promisc(SAP)",
-			    retv, p->errbuf);
+	err =3D dlpromiscon(p, DL_PROMISC_SAP);
+	if (err < 0) {
+		/*
+		 * Not fatal, since the DL_PROMISC_PHYS mode worked.
+		 * Report it as a warning, however.
+		 */
+		if (p->opt.promisc)
+			err =3D PCAP_WARNING;
+		else
 			goto bad;
-		}
-
-		/* Not fatal, since the DL_PROMISC_PHYS mode worked. */
-		fprintf(stderr, "WARNING: dlpi_promisc(SAP) failed on"
-		    " %s:(%s)\n", p->opt.source, dlpi_strerror(retv));
 	}
=20
 	/* Determine link type.  */
@@ -219,6 +230,27 @@
 	return (err);
 }
=20
+#define STRINGIFY(n)	#n
+
+static int
+dlpromiscon(pcap_t *p, bpf_u_int32 level)
+{
+	int err;
+
+	retv =3D dlpi_promiscon(p->hd, level);
+	if (retv !=3D DLPI_SUCCESS) {
+		if (retv =3D=3D DL_SYSERR &&
+		    (errno =3D=3D EPERM || errno =3D=3D EACCES))
+			err =3D PCAP_ERROR_PERM_DENIED;
+		else
+			err =3D PCAP_ERROR;
+		pcap_libdlpi_err(p->opt.source, "dlpi_promiscon" STRINGIFY(level),
+		    retv, p->errbuf);
+		return (err);
+	}
+	return (0);
+}
+
 /*
  * In Solaris, the "standard" mechanism" i.e SIOCGLIFCONF will only find
  * network links that are plumbed and are up. dlpi_walk(3DLPI) will find
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-linktype.man=
misc
--- a/head/contrib/libpcap/pcap-linktype.manmisc	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/libpcap/pcap-linktype.manmisc	Wed Jul 25 16:21:35 2012 +=
0300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap-linktype.manmisc.in,v 1.1.2=
.4 2008-10-27 22:52:05 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap-linktype.manmisc.in,v 1.3 2=
008-10-27 22:52:30 guy Exp $
 .\"
 .\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 19=
97
 .\"	The Regents of the University of California.  All rights reserved.
@@ -44,239 +44,7 @@
 The names for those values begin with
 .BR LINKTYPE_ .
 .PP
-The link-layer header types supported by libpcap are listed here.  The
-value corresponding to
-.B LINKTYPE_
-names are given; the value corresponding to
-.B DLT_
-values are, in some cases, platform dependent, and are not given;
-applications should check for particular
-.B DLT_
-values by name.
-.RS 5
-.TP 5
-.BR DLT_NULL "; " LINKTYPE_NULL =3D 0
-BSD loopback encapsulation; the link layer header is a 4-byte field, in
-.I host
-byte order, containing a PF_ value from
-.B socket.h
-for the network-layer protocol of the packet.
-.IP
-Note that ``host byte order'' is the byte order of the machine on which
-the packets are captured, and the PF_ values are for the OS of the
-machine on which the packets are captured; if a live capture is being
-done, ``host byte order'' is the byte order of the machine capturing the
-packets, and the PF_ values are those of the OS of the machine capturing
-the packets, but if a ``savefile'' is being read, the byte order and PF_
-values are
-.I not
-necessarily those of the machine reading the capture file.
-.TP 5
-.BR DLT_EN10MB "; " LINKTYPE_ETHERNET =3D 1
-Ethernet (10Mb, 100Mb, 1000Mb, and up); the
-.B 10MB
-in the
-.B DLT_
-name is historical.
-.TP 5
-.BR DLT_IEEE802 "; " LINKTYPE_TOKEN_RING =3D 6
-IEEE 802.5 Token Ring; the
-.B IEEE802
-in the
-.B DLT_
-name is historical.
-.TP 5
-.BR DLT_ARCNET "; " LINKTYPE_ARCNET =3D 7
-ARCNET
-.TP 5
-.BR DLT_SLIP "; " LINKTYPE_SLIP =3D 8
-SLIP; the link layer header contains, in order:
-.RS 10
-.LP
-a 1-byte flag, which is 0 for packets received by the machine and 1 for
-packets sent by the machine;
-.LP
-a 1-byte field, the upper 4 bits of which indicate the type of packet,
-as per RFC 1144:
-.RS 5
-.TP 5
-0x40
-an unmodified IP datagram (TYPE_IP);
-.TP 5
-0x70
-an uncompressed-TCP IP datagram (UNCOMPRESSED_TCP), with that byte being
-the first byte of the raw IP header on the wire, containing the
-connection number in the protocol field;
-.TP 5
-0x80
-a compressed-TCP IP datagram (COMPRESSED_TCP), with that byte being the
-first byte of the compressed TCP/IP datagram header;
-.RE
-.LP
-for UNCOMPRESSED_TCP, the rest of the modified IP header, and for
-COMPRESSED_TCP, the compressed TCP/IP datagram header;
-.RE
-.RS 5
-.LP
-for a total of 16 bytes; the uncompressed IP datagram follows the header.
-.RE
-.TP 5
-.BR DLT_PPP "; " LINKTYPE_PPP =3D 9
-PPP; if the first 2 bytes are 0xff and 0x03, it's PPP in HDLC-like
-framing, with the PPP header following those two bytes, otherwise it's
-PPP without framing, and the packet begins with the PPP header.
-.TP 5
-.BR DLT_FDDI "; " LINKTYPE_FDDI =3D 10
-FDDI
-.TP 5
-.BR DLT_ATM_RFC1483 "; " LINKTYPE_ATM_RFC1483 =3D 100
-RFC 1483 LLC/SNAP-encapsulated ATM; the packet begins with an IEEE 802.2
-LLC header.
-.TP 5
-.BR DLT_RAW "; " LINKTYPE_RAW =3D 101
-raw IP; the packet begins with an IP header.
-.TP 5
-.BR DLT_PPP_SERIAL "; " LINKTYPE_PPP_HDLC =3D 50
-PPP in HDLC-like framing, as per RFC 1662, or Cisco PPP with HDLC
-framing, as per section 4.3.1 of RFC 1547; the first byte will be 0xFF
-for PPP in HDLC-like framing, and will be 0x0F or 0x8F for Cisco PPP
-with HDLC framing.
-.TP 5
-.BR DLT_PPP_ETHER "; " LINKTYPE_PPP_ETHER =3D 51
-PPPoE; the packet begins with a PPPoE header, as per RFC 2516.
-.TP 5
-.BR DLT_C_HDLC "; " LINKTYPE_C_HDLC =3D 104
-Cisco PPP with HDLC framing, as per section 4.3.1 of RFC 1547.
-.TP 5
-.BR DLT_IEEE802_11 "; " LINKTYPE_IEEE802_11 =3D 105
-IEEE 802.11 wireless LAN
-.TP 5
-.BR DLT_FRELAY "; " LINKTYPE_FRELAY =3D 107
-Frame Relay
-.TP 5
-.BR DLT_LOOP "; " LINKTYPE_LOOP =3D 108
-OpenBSD loopback encapsulation; the link layer header is a 4-byte field, in
-.I network
-byte order, containing a PF_ value from OpenBSD's
-.B socket.h
-for the network-layer protocol of the packet.
-.IP
-Note that, if a ``savefile'' is being read, those PF_ values are
-.I not
-necessarily those of the machine reading the capture file.
-.TP 5
-.BR DLT_LINUX_SLL "; " LINKTYPE_LINUX_SLL =3D 113
-Linux "cooked" capture encapsulation; the link layer header contains, in
-order:
-.RS 10
-.LP
-a 2-byte "packet type", in network byte order, which is one of:
-.RS 5
-.TP 5
-0
-packet was sent to us by somebody else
-.TP 5
-1
-packet was broadcast by somebody else
-.TP 5
-2
-packet was multicast, but not broadcast, by somebody else
-.TP 5
-3
-packet was sent by somebody else to somebody else
-.TP 5
-4
-packet was sent by us
-.RE
-.LP
-a 2-byte field, in network byte order, containing a Linux ARPHRD_ value
-for the link layer device type;
-.LP
-a 2-byte field, in network byte order, containing the length of the
-link layer address of the sender of the packet (which could be 0);
-.LP
-an 8-byte field containing that number of bytes of the link layer header
-(if there are more than 8 bytes, only the first 8 are present);
-.LP
-a 2-byte field containing an Ethernet protocol type, in network byte
-order, or containing 1 for Novell 802.3 frames without an 802.2 LLC
-header or 4 for frames beginning with an 802.2 LLC header.
-.RE
-.TP 5
-.BR DLT_LTALK "; " LINKTYPE_LTALK =3D 104
-Apple LocalTalk; the packet begins with an AppleTalk LLAP header.
-.TP 5
-.BR DLT_PFLOG "; " LINKTYPE_PFLOG =3D 117
-OpenBSD pflog; the link layer header contains a
-.B "struct pfloghdr"
-structure, as defined by the host on which the file was saved.  (This
-differs from operating system to operating system and release to
-release; there is nothing in the file to indicate what the layout of
-that structure is.)
-.TP 5
-.BR DLT_PRISM_HEADER "; " LINKTYPE_PRISM_HEADER =3D 119
-Prism monitor mode information followed by an 802.11 header.
-.TP 5
-.BR DLT_IP_OVER_FC "; " LINKTYPE_IP_OVER_FC =3D 122
-RFC 2625 IP-over-Fibre Channel, with the link-layer header being the
-Network_Header as described in that RFC.
-.TP 5
-.BR DLT_SUNATM "; " LINKTYPE_SUNATM =3D 123
-SunATM devices; the link layer header contains, in order:
-.RS 10
-.LP
-a 1-byte flag field, containing a direction flag in the uppermost bit,
-which is set for packets transmitted by the machine and clear for
-packets received by the machine, and a 4-byte traffic type in the
-low-order 4 bits, which is one of:
-.RS 5
-.TP 5
-0
-raw traffic
-.TP 5
-1
-LANE traffic
-.TP 5
-2
-LLC-encapsulated traffic
-.TP 5
-3
-MARS traffic
-.TP 5
-4
-IFMP traffic
-.TP 5
-5
-ILMI traffic
-.TP 5
-6
-Q.2931 traffic
-.RE
-.LP
-a 1-byte VPI value;
-.LP
-a 2-byte VCI field, in network byte order.
-.RE
-.TP 5
-.BR DLT_IEEE802_11_RADIO "; " LINKTYPE_IEEE802_11_RADIO =3D 127
-link-layer information followed by an 802.11 header - see
-http://www.shaftnet.org/~pizza/software/capturefrm.txt for a description
-of the link-layer information.
-.TP 5
-.BR DLT_ARCNET_LINUX "; " LINKTYPE_ARCNET_LINUX =3D 129
-ARCNET, with no exception frames, reassembled packets rather than raw
-frames, and an extra 16-bit offset field between the destination host
-and type bytes.
-.TP 5
-.BR DLT_LINUX_IRDA "; " LINKTYPE_LINUX_IRDA =3D 144
-Linux-IrDA packets, with a
-.B DLT_LINUX_SLL
-header followed by the IrLAP header.
-.TP 5
-.BR DLT_LINUX_LAPD "; " LINKTYPE_LINUX_LAPD =3D 177
-LAPD (Q.921) frames, with a
-.B DLT_LINUX_SLL
-header captured via vISDN.
-.RE
+The link-layer header types supported by libpcap are described at
+http://www.tcpdump.org/linktypes.html.
 .SH SEE ALSO
 pcap_datalink(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-linktype.man=
misc.in
--- a/head/contrib/libpcap/pcap-linktype.manmisc.in	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/libpcap/pcap-linktype.manmisc.in	Wed Jul 25 16:21:35 201=
2 +0300
@@ -44,241 +44,7 @@
 The names for those values begin with
 .BR LINKTYPE_ .
 .PP
-The link-layer header types supported by libpcap are listed here.  The
-value corresponding to
-.B LINKTYPE_
-names are given; the value corresponding to
-.B DLT_
-values are, in some cases, platform dependent, and are not given;
-applications should check for particular
-.B DLT_
-values by name.
-.RS 5
-.TP 5
-.BR DLT_NULL "; " LINKTYPE_NULL =3D 0
-BSD loopback encapsulation; the link-layer header is a 4-byte field, in
-.I host
-byte order, containing a PF_ value from
-.B socket.h
-for the network-layer protocol of the packet.
-.IP
-Note that ``host byte order'' is the byte order of the machine on which
-the packets are captured, and the PF_ values are for the OS of the
-machine on which the packets are captured; if a live capture is being
-done, ``host byte order'' is the byte order of the machine capturing the
-packets, and the PF_ values are those of the OS of the machine capturing
-the packets, but if a ``savefile'' is being read, the byte order and PF_
-values are
-.I not
-necessarily those of the machine reading the capture file.
-.TP 5
-.BR DLT_EN10MB "; " LINKTYPE_ETHERNET =3D 1
-Ethernet (10Mb, 100Mb, 1000Mb, and up); the
-.B 10MB
-in the
-.B DLT_
-name is historical.
-.TP 5
-.BR DLT_IEEE802 "; " LINKTYPE_TOKEN_RING =3D 6
-IEEE 802.5 Token Ring; the
-.B IEEE802
-in the
-.B DLT_
-name is historical.
-.TP 5
-.BR DLT_ARCNET "; " LINKTYPE_ARCNET =3D 7
-ARCNET
-.TP 5
-.BR DLT_SLIP "; " LINKTYPE_SLIP =3D 8
-SLIP; the link-layer header contains, in order:
-.RS 10
-.LP
-a 1-byte flag, which is 0 for packets received by the machine and 1 for
-packets sent by the machine;
-.LP
-a 1-byte field, the upper 4 bits of which indicate the type of packet,
-as per RFC 1144:
-.RS 5
-.TP 5
-0x40
-an unmodified IP datagram (TYPE_IP);
-.TP 5
-0x70
-an uncompressed-TCP IP datagram (UNCOMPRESSED_TCP), with that byte being
-the first byte of the raw IP header on the wire, containing the
-connection number in the protocol field;
-.TP 5
-0x80
-a compressed-TCP IP datagram (COMPRESSED_TCP), with that byte being the
-first byte of the compressed TCP/IP datagram header;
-.RE
-.LP
-for UNCOMPRESSED_TCP, the rest of the modified IP header, and for
-COMPRESSED_TCP, the compressed TCP/IP datagram header;
-.RE
-.RS 5
-.LP
-for a total of 16 bytes; the uncompressed IP datagram follows the header.
-.RE
-.TP 5
-.BR DLT_PPP "; " LINKTYPE_PPP =3D 9
-PPP; if the first 2 bytes are 0xff and 0x03, it's PPP in HDLC-like
-framing, with the PPP header following those two bytes, otherwise it's
-PPP without framing, and the packet begins with the PPP header.
-.TP 5
-.BR DLT_FDDI "; " LINKTYPE_FDDI =3D 10
-FDDI
-.TP 5
-.BR DLT_ATM_RFC1483 "; " LINKTYPE_ATM_RFC1483 =3D 100
-RFC 1483 LLC/SNAP-encapsulated ATM; the packet begins with an IEEE 802.2
-LLC header.
-.TP 5
-.BR DLT_RAW "; " LINKTYPE_RAW =3D 101
-raw IP; the packet begins with an IP header.
-.TP 5
-.BR DLT_PPP_SERIAL "; " LINKTYPE_PPP_HDLC =3D 50
-PPP in HDLC-like framing, as per RFC 1662, or Cisco PPP with HDLC
-framing, as per section 4.3.1 of RFC 1547; the first byte will be 0xFF
-for PPP in HDLC-like framing, and will be 0x0F or 0x8F for Cisco PPP
-with HDLC framing.
-.TP 5
-.BR DLT_PPP_ETHER "; " LINKTYPE_PPP_ETHER =3D 51
-PPPoE; the packet begins with a PPPoE header, as per RFC 2516.
-.TP 5
-.BR DLT_C_HDLC "; " LINKTYPE_C_HDLC =3D 104
-Cisco PPP with HDLC framing, as per section 4.3.1 of RFC 1547.
-.TP 5
-.BR DLT_IEEE802_11 "; " LINKTYPE_IEEE802_11 =3D 105
-IEEE 802.11 wireless LAN
-.TP 5
-.BR DLT_FRELAY "; " LINKTYPE_FRELAY =3D 107
-Frame Relay
-.TP 5
-.BR DLT_LOOP "; " LINKTYPE_LOOP =3D 108
-OpenBSD loopback encapsulation; the link-layer header is a 4-byte field, in
-.I network
-byte order, containing a PF_ value from OpenBSD's
-.B socket.h
-for the network-layer protocol of the packet.
-.IP
-Note that, if a ``savefile'' is being read, those PF_ values are
-.I not
-necessarily those of the machine reading the capture file.
-.TP 5
-.BR DLT_LINUX_SLL "; " LINKTYPE_LINUX_SLL =3D 113
-Linux "cooked" capture encapsulation; the link-layer header contains, in
-order:
-.RS 10
-.LP
-a 2-byte "packet type", in network byte order, which is one of:
-.RS 5
-.TP 5
-0
-packet was sent to us by somebody else
-.TP 5
-1
-packet was broadcast by somebody else
-.TP 5
-2
-packet was multicast, but not broadcast, by somebody else
-.TP 5
-3
-packet was sent by somebody else to somebody else
-.TP 5
-4
-packet was sent by us
-.RE
-.LP
-a 2-byte field, in network byte order, containing a Linux ARPHRD_ value
-for the link-layer device type;
-.LP
-a 2-byte field, in network byte order, containing the length of the
-link-layer address of the sender of the packet (which could be 0);
-.LP
-an 8-byte field containing that number of bytes of the link-layer
-address of the sender (if there are more than 8 bytes, only the first
-8 are present, and if there are fewer than 8 bytes, there are padding
-bytes after the address to pad the field to 8 bytes);
-.LP
-a 2-byte field containing an Ethernet protocol type, in network byte
-order, or containing 1 for Novell 802.3 frames without an 802.2 LLC
-header or 4 for frames beginning with an 802.2 LLC header.
-.RE
-.TP 5
-.BR DLT_LTALK "; " LINKTYPE_LTALK =3D 104
-Apple LocalTalk; the packet begins with an AppleTalk LLAP header.
-.TP 5
-.BR DLT_PFLOG "; " LINKTYPE_PFLOG =3D 117
-OpenBSD pflog; the link-layer header contains a
-.B "struct pfloghdr"
-structure, as defined by the host on which the file was saved.  (This
-differs from operating system to operating system and release to
-release; there is nothing in the file to indicate what the layout of
-that structure is.)
-.TP 5
-.BR DLT_PRISM_HEADER "; " LINKTYPE_PRISM_HEADER =3D 119
-Prism monitor mode information followed by an 802.11 header.
-.TP 5
-.BR DLT_IP_OVER_FC "; " LINKTYPE_IP_OVER_FC =3D 122
-RFC 2625 IP-over-Fibre Channel, with the link-layer header being the
-Network_Header as described in that RFC.
-.TP 5
-.BR DLT_SUNATM "; " LINKTYPE_SUNATM =3D 123
-SunATM devices; the link-layer header contains, in order:
-.RS 10
-.LP
-a 1-byte flag field, containing a direction flag in the uppermost bit,
-which is set for packets transmitted by the machine and clear for
-packets received by the machine, and a 4-byte traffic type in the
-low-order 4 bits, which is one of:
-.RS 5
-.TP 5
-0
-raw traffic
-.TP 5
-1
-LANE traffic
-.TP 5
-2
-LLC-encapsulated traffic
-.TP 5
-3
-MARS traffic
-.TP 5
-4
-IFMP traffic
-.TP 5
-5
-ILMI traffic
-.TP 5
-6
-Q.2931 traffic
-.RE
-.LP
-a 1-byte VPI value;
-.LP
-a 2-byte VCI field, in network byte order.
-.RE
-.TP 5
-.BR DLT_IEEE802_11_RADIO "; " LINKTYPE_IEEE802_11_RADIO =3D 127
-link-layer information followed by an 802.11 header - see
-http://www.shaftnet.org/~pizza/software/capturefrm.txt for a description
-of the link-layer information.
-.TP 5
-.BR DLT_ARCNET_LINUX "; " LINKTYPE_ARCNET_LINUX =3D 129
-ARCNET, with no exception frames, reassembled packets rather than raw
-frames, and an extra 16-bit offset field between the destination host
-and type bytes.
-.TP 5
-.BR DLT_LINUX_IRDA "; " LINKTYPE_LINUX_IRDA =3D 144
-Linux-IrDA packets, with a
-.B DLT_LINUX_SLL
-header followed by the IrLAP header.
-.TP 5
-.BR DLT_LINUX_LAPD "; " LINKTYPE_LINUX_LAPD =3D 177
-LAPD (Q.921) frames, with a
-.B DLT_LINUX_SLL
-header captured via vISDN.
-.RE
+The link-layer header types supported by libpcap are described at
+http://www.tcpdump.org/linktypes.html.
 .SH SEE ALSO
 pcap_datalink(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-linux.c
--- a/head/contrib/libpcap/pcap-linux.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-linux.c	Wed Jul 25 16:21:35 2012 +0300
@@ -138,26 +138,6 @@
 #include <poll.h>
 #include <dirent.h>
=20
-/*
- * Got Wireless Extensions?
- */
-#ifdef HAVE_LINUX_WIRELESS_H
-#include <linux/wireless.h>
-#endif /* HAVE_LINUX_WIRELESS_H */
-
-/*
- * Got libnl?
- */
-#ifdef HAVE_LIBNL
-#include <linux/nl80211.h>
-
-#include <netlink/genl/genl.h>
-#include <netlink/genl/family.h>
-#include <netlink/genl/ctrl.h>
-#include <netlink/msg.h>
-#include <netlink/attr.h>
-#endif /* HAVE_LIBNL */
-
 #include "pcap-int.h"
 #include "pcap/sll.h"
 #include "pcap/vlan.h"
@@ -186,6 +166,10 @@
 #include "pcap-can-linux.h"
 #endif
=20
+#ifdef PCAP_SUPPORT_NETFILTER
+#include "pcap-netfilter-linux.h"
+#endif
+
 /*
  * If PF_PACKET is defined, we can use {SOCK_RAW,SOCK_DGRAM}/PF_PACKET
  * sockets rather than SOCK_PACKET sockets.
@@ -250,6 +234,46 @@
 #include <linux/filter.h>
 #endif
=20
+/*
+ * We need linux/sockios.h if we have linux/net_tstamp.h (for time stamp
+ * specification) or linux/ethtool.h (for ethtool ioctls to get offloading
+ * information).
+ */
+#if defined(HAVE_LINUX_NET_TSTAMP_H) || defined(HAVE_LINUX_ETHTOOL_H)
+#include <linux/sockios.h>
+#endif
+
+#ifdef HAVE_LINUX_NET_TSTAMP_H
+#include <linux/net_tstamp.h>
+#endif
+
+/*
+ * Got Wireless Extensions?
+ */
+#ifdef HAVE_LINUX_WIRELESS_H
+#include <linux/wireless.h>
+#endif /* HAVE_LINUX_WIRELESS_H */
+
+/*
+ * Got libnl?
+ */
+#ifdef HAVE_LIBNL
+#include <linux/nl80211.h>
+
+#include <netlink/genl/genl.h>
+#include <netlink/genl/family.h>
+#include <netlink/genl/ctrl.h>
+#include <netlink/msg.h>
+#include <netlink/attr.h>
+#endif /* HAVE_LIBNL */
+
+/*
+ * Got ethtool support?
+ */
+#ifdef HAVE_LINUX_ETHTOOL_H
+#include <linux/ethtool.h>
+#endif
+
 #ifndef HAVE_SOCKLEN_T
 typedef int		socklen_t;
 #endif
@@ -295,7 +319,7 @@
 static int pcap_activate_linux(pcap_t *);
 static int activate_old(pcap_t *);
 static int activate_new(pcap_t *);
-static int activate_mmap(pcap_t *);
+static int activate_mmap(pcap_t *, int *);
 static int pcap_can_set_rfmon_linux(pcap_t *);
 static int pcap_read_linux(pcap_t *, int, pcap_handler, u_char *);
 static int pcap_read_packet(pcap_t *, pcap_handler, u_char *);
@@ -315,7 +339,7 @@
 #define RING_GET_FRAME(h) (((union thdr **)h->buffer)[h->offset])
=20
 static void destroy_ring(pcap_t *handle);
-static int create_ring(pcap_t *handle);
+static int create_ring(pcap_t *handle, int *status);
 static int prepare_tpacket_socket(pcap_t *handle);
 static void pcap_cleanup_linux_mmap(pcap_t *);
 static int pcap_read_linux_mmap(pcap_t *, int, pcap_handler , u_char *);
@@ -331,7 +355,7 @@
  */
 #ifdef HAVE_PF_PACKET_SOCKETS
 static int	iface_get_id(int fd, const char *device, char *ebuf);
-#endif
+#endif /* HAVE_PF_PACKET_SOCKETS */
 static int	iface_get_mtu(int fd, const char *device, char *ebuf);
 static int 	iface_get_arptype(int fd, const char *device, char *ebuf);
 #ifdef HAVE_PF_PACKET_SOCKETS
@@ -342,6 +366,7 @@
 static int	enter_rfmon_mode(pcap_t *handle, int sock_fd,
     const char *device);
 #endif /* HAVE_PF_PACKET_SOCKETS */
+static int	iface_get_offload(pcap_t *handle);
 static int 	iface_bind_old(int fd, const char *device, char *ebuf);
=20
 #ifdef SO_ATTACH_FILTER
@@ -355,7 +380,7 @@
 	=3D BPF_STMT(BPF_RET | BPF_K, 0);
 static struct sock_fprog	total_fcode
 	=3D { 1, &total_insn };
-#endif
+#endif /* SO_ATTACH_FILTER */
=20
 pcap_t *
 pcap_create(const char *device, char *ebuf)
@@ -405,58 +430,85 @@
 	}
 #endif
=20
+#ifdef PCAP_SUPPORT_NETFILTER
+	if (strncmp(device, "nflog", strlen("nflog")) =3D=3D 0) {
+		return nflog_create(device, ebuf);
+	}
+#endif
+
 	handle =3D pcap_create_common(device, ebuf);
 	if (handle =3D=3D NULL)
 		return NULL;
=20
 	handle->activate_op =3D pcap_activate_linux;
 	handle->can_set_rfmon_op =3D pcap_can_set_rfmon_linux;
+#if defined(HAVE_LINUX_NET_TSTAMP_H) && defined(PACKET_TIMESTAMP)
+	/*
+	 * We claim that we support:
+	 *
+	 *	software time stamps, with no details about their precision;
+	 *	hardware time stamps, synced to the host time;
+	 *	hardware time stamps, not synced to the host time.
+	 *
+	 * XXX - we can't ask a device whether it supports
+	 * hardware time stamps, so we just claim all devices do.
+	 */
+	handle->tstamp_type_count =3D 3;
+	handle->tstamp_type_list =3D malloc(3 * sizeof(u_int));
+	if (handle->tstamp_type_list =3D=3D NULL) {
+		free(handle);
+		return NULL;
+	}
+	handle->tstamp_type_list[0] =3D PCAP_TSTAMP_HOST;
+	handle->tstamp_type_list[1] =3D PCAP_TSTAMP_ADAPTER;
+	handle->tstamp_type_list[2] =3D PCAP_TSTAMP_ADAPTER_UNSYNCED;
+#endif
+
 	return handle;
 }
=20
 #ifdef HAVE_LIBNL
 /*
-	 *
-	 * If interface {if} is a mac80211 driver, the file
-	 * /sys/class/net/{if}/phy80211 is a symlink to
-	 * /sys/class/ieee80211/{phydev}, for some {phydev}.
-	 *
-	 * On Fedora 9, with a 2.6.26.3-29 kernel, my Zydas stick, at
-	 * least, has a "wmaster0" device and a "wlan0" device; the
-	 * latter is the one with the IP address.  Both show up in
-	 * "tcpdump -D" output.  Capturing on the wmaster0 device
-	 * captures with 802.11 headers.
-	 *
-	 * airmon-ng searches through /sys/class/net for devices named
-	 * monN, starting with mon0; as soon as one *doesn't* exist,
-	 * it chooses that as the monitor device name.  If the "iw"
-	 * command exists, it does "iw dev {if} interface add {monif}
-	 * type monitor", where {monif} is the monitor device.  It
-	 * then (sigh) sleeps .1 second, and then configures the
-	 * device up.  Otherwise, if /sys/class/ieee80211/{phydev}/add_iface
-	 * is a file, it writes {mondev}, without a newline, to that file,
-	 * and again (sigh) sleeps .1 second, and then iwconfig's that
-	 * device into monitor mode and configures it up.  Otherwise,
-	 * you can't do monitor mode.
-	 *
-	 * All these devices are "glued" together by having the
-	 * /sys/class/net/{device}/phy80211 links pointing to the same
-	 * place, so, given a wmaster, wlan, or mon device, you can
-	 * find the other devices by looking for devices with
-	 * the same phy80211 link.
-	 *
-	 * To turn monitor mode off, delete the monitor interface,
-	 * either with "iw dev {monif} interface del" or by sending
-	 * {monif}, with no NL, down /sys/class/ieee80211/{phydev}/remove_iface
-	 *
-	 * Note: if you try to create a monitor device named "monN", and
-	 * there's already a "monN" device, it fails, as least with
-	 * the netlink interface (which is what iw uses), with a return
-	 * value of -ENFILE.  (Return values are negative errnos.)  We
-	 * could probably use that to find an unused device.
-	 *
-	 * Yes, you can have multiple monitor devices for a given
-	 * physical device.
+ * If interface {if} is a mac80211 driver, the file
+ * /sys/class/net/{if}/phy80211 is a symlink to
+ * /sys/class/ieee80211/{phydev}, for some {phydev}.
+ *
+ * On Fedora 9, with a 2.6.26.3-29 kernel, my Zydas stick, at
+ * least, has a "wmaster0" device and a "wlan0" device; the
+ * latter is the one with the IP address.  Both show up in
+ * "tcpdump -D" output.  Capturing on the wmaster0 device
+ * captures with 802.11 headers.
+ *
+ * airmon-ng searches through /sys/class/net for devices named
+ * monN, starting with mon0; as soon as one *doesn't* exist,
+ * it chooses that as the monitor device name.  If the "iw"
+ * command exists, it does "iw dev {if} interface add {monif}
+ * type monitor", where {monif} is the monitor device.  It
+ * then (sigh) sleeps .1 second, and then configures the
+ * device up.  Otherwise, if /sys/class/ieee80211/{phydev}/add_iface
+ * is a file, it writes {mondev}, without a newline, to that file,
+ * and again (sigh) sleeps .1 second, and then iwconfig's that
+ * device into monitor mode and configures it up.  Otherwise,
+ * you can't do monitor mode.
+ *
+ * All these devices are "glued" together by having the
+ * /sys/class/net/{device}/phy80211 links pointing to the same
+ * place, so, given a wmaster, wlan, or mon device, you can
+ * find the other devices by looking for devices with
+ * the same phy80211 link.
+ *
+ * To turn monitor mode off, delete the monitor interface,
+ * either with "iw dev {monif} interface del" or by sending
+ * {monif}, with no NL, down /sys/class/ieee80211/{phydev}/remove_iface
+ *
+ * Note: if you try to create a monitor device named "monN", and
+ * there's already a "monN" device, it fails, as least with
+ * the netlink interface (which is what iw uses), with a return
+ * value of -ENFILE.  (Return values are negative errnos.)  We
+ * could probably use that to find an unused device.
+ *
+ * Yes, you can have multiple monitor devices for a given
+ * physical device.
 */
=20
 /*
@@ -501,8 +553,41 @@
 	return 1;
 }
=20
+#ifdef HAVE_LIBNL_2_x
+#define get_nl_errmsg	nl_geterror
+#else
+/* libnl 2.x compatibility code */
+
+#define nl_sock nl_handle
+
+static inline struct nl_handle *
+nl_socket_alloc(void)
+{
+	return nl_handle_alloc();
+}
+
+static inline void
+nl_socket_free(struct nl_handle *h)
+{
+	nl_handle_destroy(h);
+}
+
+#define get_nl_errmsg	strerror
+
+static inline int
+__genl_ctrl_alloc_cache(struct nl_handle *h, struct nl_cache **cache)
+{
+	struct nl_cache *tmp =3D genl_ctrl_alloc_cache(h);
+	if (!tmp)
+		return -ENOMEM;
+	*cache =3D tmp;
+	return 0;
+}
+#define genl_ctrl_alloc_cache __genl_ctrl_alloc_cache
+#endif /* !HAVE_LIBNL_2_x */
+
 struct nl80211_state {
-	struct nl_handle *nl_handle;
+	struct nl_sock *nl_sock;
 	struct nl_cache *nl_cache;
 	struct genl_family *nl80211;
 };
@@ -510,23 +595,26 @@
 static int
 nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *devi=
ce)
 {
-	state->nl_handle =3D nl_handle_alloc();
-	if (!state->nl_handle) {
+	int err;
+
+	state->nl_sock =3D nl_socket_alloc();
+	if (!state->nl_sock) {
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 		    "%s: failed to allocate netlink handle", device);
 		return PCAP_ERROR;
 	}
=20
-	if (genl_connect(state->nl_handle)) {
+	if (genl_connect(state->nl_sock)) {
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 		    "%s: failed to connect to generic netlink", device);
 		goto out_handle_destroy;
 	}
=20
-	state->nl_cache =3D genl_ctrl_alloc_cache(state->nl_handle);
-	if (!state->nl_cache) {
+	err =3D genl_ctrl_alloc_cache(state->nl_sock, &state->nl_cache);
+	if (err < 0) {
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-		    "%s: failed to allocate generic netlink cache", device);
+		    "%s: failed to allocate generic netlink cache: %s",
+		    device, get_nl_errmsg(-err));
 		goto out_handle_destroy;
 	}
=20
@@ -542,7 +630,7 @@
 out_cache_free:
 	nl_cache_free(state->nl_cache);
 out_handle_destroy:
-	nl_handle_destroy(state->nl_handle);
+	nl_socket_free(state->nl_sock);
 	return PCAP_ERROR;
 }
=20
@@ -551,7 +639,7 @@
 {
 	genl_family_put(state->nl80211);
 	nl_cache_free(state->nl_cache);
-	nl_handle_destroy(state->nl_handle);
+	nl_socket_free(state->nl_sock);
 }
=20
 static int
@@ -579,12 +667,19 @@
 	NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, mondevice);
 	NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, NL80211_IFTYPE_MONITOR);
=20
-	err =3D nl_send_auto_complete(state->nl_handle, msg);
+	err =3D nl_send_auto_complete(state->nl_sock, msg);
 	if (err < 0) {
+#ifdef HAVE_LIBNL_2_x
+		if (err =3D=3D -NLE_FAILURE) {
+#else
 		if (err =3D=3D -ENFILE) {
+#endif
 			/*
 			 * Device not available; our caller should just
-			 * keep trying.
+			 * keep trying.  (libnl 2.x maps ENFILE to
+			 * NLE_FAILURE; it can also map other errors
+			 * to that, but there's not much we can do
+			 * about that.)
 			 */
 			nlmsg_free(msg);
 			return 0;
@@ -595,17 +690,24 @@
 			 */
 			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 			    "%s: nl_send_auto_complete failed adding %s interface: %s",
-			    device, mondevice, strerror(-err));
+			    device, mondevice, get_nl_errmsg(-err));
 			nlmsg_free(msg);
 			return PCAP_ERROR;
 		}
 	}
-	err =3D nl_wait_for_ack(state->nl_handle);
+	err =3D nl_wait_for_ack(state->nl_sock);
 	if (err < 0) {
+#ifdef HAVE_LIBNL_2_x
+		if (err =3D=3D -NLE_FAILURE) {
+#else
 		if (err =3D=3D -ENFILE) {
+#endif
 			/*
 			 * Device not available; our caller should just
-			 * keep trying.
+			 * keep trying.  (libnl 2.x maps ENFILE to
+			 * NLE_FAILURE; it can also map other errors
+			 * to that, but there's not much we can do
+			 * about that.)
 			 */
 			nlmsg_free(msg);
 			return 0;
@@ -616,7 +718,7 @@
 			 */
 			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 			    "%s: nl_wait_for_ack failed adding %s interface: %s",
-			    device, mondevice, strerror(-err));
+			    device, mondevice, get_nl_errmsg(-err));
 			nlmsg_free(msg);
 			return PCAP_ERROR;
 		}
@@ -659,47 +761,21 @@
 		    0, NL80211_CMD_DEL_INTERFACE, 0);
 	NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, ifindex);
=20
-	err =3D nl_send_auto_complete(state->nl_handle, msg);
+	err =3D nl_send_auto_complete(state->nl_sock, msg);
 	if (err < 0) {
-		if (err =3D=3D -ENFILE) {
-			/*
-			 * Device not available; our caller should just
-			 * keep trying.
-			 */
-			nlmsg_free(msg);
-			return 0;
-		} else {
-			/*
-			 * Real failure, not just "that device is not
-			 * available.
-			 */
-			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-			    "%s: nl_send_auto_complete failed deleting %s interface: %s",
-			    device, mondevice, strerror(-err));
-			nlmsg_free(msg);
-			return PCAP_ERROR;
-		}
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "%s: nl_send_auto_complete failed deleting %s interface: %s",
+		    device, mondevice, get_nl_errmsg(-err));
+		nlmsg_free(msg);
+		return PCAP_ERROR;
 	}
-	err =3D nl_wait_for_ack(state->nl_handle);
+	err =3D nl_wait_for_ack(state->nl_sock);
 	if (err < 0) {
-		if (err =3D=3D -ENFILE) {
-			/*
-			 * Device not available; our caller should just
-			 * keep trying.
-			 */
-			nlmsg_free(msg);
-			return 0;
-		} else {
-			/*
-			 * Real failure, not just "that device is not
-			 * available.
-			 */
-			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-			    "%s: nl_wait_for_ack failed adding %s interface: %s",
-			    device, mondevice, strerror(-err));
-			nlmsg_free(msg);
-			return PCAP_ERROR;
-		}
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "%s: nl_wait_for_ack failed adding %s interface: %s",
+		    device, mondevice, get_nl_errmsg(-err));
+		nlmsg_free(msg);
+		return PCAP_ERROR;
 	}
=20
 	/*
@@ -786,6 +862,18 @@
 #endif
=20
 	/*
+	 * If we haven't already done so, arrange to have
+	 * "pcap_close_all()" called when we exit.
+	 */
+	if (!pcap_do_addexit(handle)) {
+		/*
+		 * "atexit()" failed; don't put the interface
+		 * in rfmon mode, just give up.
+		 */
+		return PCAP_ERROR_RFMON_NOTSUP;
+	}
+
+	/*
 	 * Now configure the monitor interface up.
 	 */
 	memset(&ifr, 0, sizeof(ifr));
@@ -994,6 +1082,7 @@
 	int ret;
 #endif /* HAVE_LIBNL */
 #ifdef IW_MODE_MONITOR
+	int oldflags;
 	struct iwreq ireq;
 #endif /* IW_MODE_MONITOR */
=20
@@ -1017,10 +1106,10 @@
 			    sizeof(ifr.ifr_name));
 			if (ioctl(handle->fd, SIOCGIFFLAGS, &ifr) =3D=3D -1) {
 				fprintf(stderr,
-				    "Can't restore interface flags (SIOCGIFFLAGS failed: %s).\n"
+				    "Can't restore interface %s flags (SIOCGIFFLAGS failed: %s).\n"
 				    "Please adjust manually.\n"
 				    "Hint: This can't happen with Linux >=3D 2.2.0.\n",
-				    strerror(errno));
+				    handle->md.device, strerror(errno));
 			} else {
 				if (ifr.ifr_flags & IFF_PROMISC) {
 					/*
@@ -1031,9 +1120,10 @@
 					if (ioctl(handle->fd, SIOCSIFFLAGS,
 					    &ifr) =3D=3D -1) {
 						fprintf(stderr,
-						    "Can't restore interface flags (SIOCSIFFLAGS failed: %s).\n"
+						    "Can't restore interface %s flags (SIOCSIFFLAGS failed: %s).\n"
 						    "Please adjust manually.\n"
 						    "Hint: This can't happen with Linux >=3D 2.2.0.\n",
+						    handle->md.device,
 						    strerror(errno));
 					}
 				}
@@ -1067,6 +1157,29 @@
 			 * mode, this code cannot know that, so it'll take
 			 * it out of rfmon mode.
 			 */
+
+			/*
+			 * First, take the interface down if it's up;
+			 * otherwise, we might get EBUSY.
+			 * If we get errors, just drive on and print
+			 * a warning if we can't restore the mode.
+			 */
+			oldflags =3D 0;
+			memset(&ifr, 0, sizeof(ifr));
+			strncpy(ifr.ifr_name, handle->md.device,
+			    sizeof(ifr.ifr_name));
+			if (ioctl(handle->fd, SIOCGIFFLAGS, &ifr) !=3D -1) {
+				if (ifr.ifr_flags & IFF_UP) {
+					oldflags =3D ifr.ifr_flags;
+					ifr.ifr_flags &=3D ~IFF_UP;
+					if (ioctl(handle->fd, SIOCSIFFLAGS, &ifr) =3D=3D -1)
+						oldflags =3D 0;	/* didn't set, don't restore */
+				}
+			}
+
+			/*
+			 * Now restore the mode.
+			 */
 			strncpy(ireq.ifr_ifrn.ifrn_name, handle->md.device,
 			    sizeof ireq.ifr_ifrn.ifrn_name);
 			ireq.ifr_ifrn.ifrn_name[sizeof ireq.ifr_ifrn.ifrn_name - 1]
@@ -1077,9 +1190,23 @@
 				 * Scientist, you've failed.
 				 */
 				fprintf(stderr,
-				    "Can't restore interface wireless mode (SIOCSIWMODE failed: %s).\n"
+				    "Can't restore interface %s wireless mode (SIOCSIWMODE failed: %s)=
.\n"
 				    "Please adjust manually.\n",
-				    strerror(errno));
+				    handle->md.device, strerror(errno));
+			}
+
+			/*
+			 * Now bring the interface back up if we brought
+			 * it down.
+			 */
+			if (oldflags !=3D 0) {
+				ifr.ifr_flags =3D oldflags;
+				if (ioctl(handle->fd, SIOCSIFFLAGS, &ifr) =3D=3D -1) {
+					fprintf(stderr,
+					    "Can't bring interface %s back up (SIOCSIFFLAGS failed: %s).\n"
+					    "Please adjust manually.\n",
+					    handle->md.device, strerror(errno));
+				}
 			}
 		}
 #endif /* IW_MODE_MONITOR */
@@ -1167,34 +1294,46 @@
 	 * to be compatible with older kernels for a while so we are
 	 * trying both methods with the newer method preferred.
 	 */
-
-	if ((status =3D activate_new(handle)) =3D=3D 1) {
+	status =3D activate_new(handle);
+	if (status < 0) {
+		/*
+		 * Fatal error with the new way; just fail.
+		 * status has the error return; if it's PCAP_ERROR,
+		 * handle->errbuf has been set appropriately.
+		 */
+		goto fail;
+	}
+	if (status =3D=3D 1) {
 		/*
 		 * Success.
 		 * Try to use memory-mapped access.
 		 */
-		switch (activate_mmap(handle)) {
+		switch (activate_mmap(handle, &status)) {
=20
 		case 1:
-			/* we succeeded; nothing more to do */
-			return 0;
+			/*
+			 * We succeeded.  status has been
+			 * set to the status to return,
+			 * which might be 0, or might be
+			 * a PCAP_WARNING_ value.
+			 */
+			return status;
=20
 		case 0:
 			/*
 			 * Kernel doesn't support it - just continue
 			 * with non-memory-mapped access.
 			 */
-			status =3D 0;
 			break;
=20
 		case -1:
 			/*
-			 * We failed to set up to use it, or kernel
-			 * supports it, but we failed to enable it;
-			 * return an error.  handle->errbuf contains
-			 * an error message.
+			 * We failed to set up to use it, or the kernel
+			 * supports it, but we failed to enable it.
+			 * status has been set to the error status to
+			 * return and, if it's PCAP_ERROR, handle->errbuf
+			 * contains the error message.
 			 */
-			status =3D PCAP_ERROR;
 			goto fail;
 		}
 	}
@@ -1208,18 +1347,12 @@
 			 */
 			goto fail;
 		}
-	} else {
-		/*
-		 * Fatal error with the new way; just fail.
-		 * status has the error return; if it's PCAP_ERROR,
-		 * handle->errbuf has been set appropriately.
-		 */
-		goto fail;
 	}
=20
 	/*
 	 * We set up the socket, but not with memory-mapped access.
 	 */
+	status =3D 0;
 	if (handle->opt.buffer_size !=3D 0) {
 		/*
 		 * Set the socket buffer size to the specified value.
@@ -1814,8 +1947,20 @@
 	int ret =3D 1;
=20
 	sys_class_net_d =3D opendir("/sys/class/net");
-	if (sys_class_net_d =3D=3D NULL && errno =3D=3D ENOENT)
-		return (0);
+	if (sys_class_net_d =3D=3D NULL) {
+		/*
+		 * Don't fail if it doesn't exist at all.
+		 */
+		if (errno =3D=3D ENOENT)
+			return (0);
+
+		/*
+		 * Fail if we got some other error.
+		 */
+		(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't open /sys/class/net: %s", pcap_strerror(errno));
+		return (-1);
+	}
=20
 	/*
 	 * Create a socket from which to fetch interface information.
@@ -1824,6 +1969,7 @@
 	if (fd < 0) {
 		(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
 		    "socket: %s", pcap_strerror(errno));
+		(void)closedir(sys_class_net_d);
 		return (-1);
 	}
=20
@@ -1883,7 +2029,7 @@
 		 */
 		strncpy(ifrflags.ifr_name, name, sizeof(ifrflags.ifr_name));
 		if (ioctl(fd, SIOCGIFFLAGS, (char *)&ifrflags) < 0) {
-			if (errno =3D=3D ENXIO)
+			if (errno =3D=3D ENXIO || errno =3D=3D ENODEV)
 				continue;
 			(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
 			    "SIOCGIFFLAGS: %.*s: %s",
@@ -1947,8 +2093,20 @@
 	int ret =3D 0;
=20
 	proc_net_f =3D fopen("/proc/net/dev", "r");
-	if (proc_net_f =3D=3D NULL && errno =3D=3D ENOENT)
-		return (0);
+	if (proc_net_f =3D=3D NULL) {
+		/*
+		 * Don't fail if it doesn't exist at all.
+		 */
+		if (errno =3D=3D ENOENT)
+			return (0);
+
+		/*
+		 * Fail if we got some other error.
+		 */
+		(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
+		    "Can't open /proc/net/dev: %s", pcap_strerror(errno));
+		return (-1);
+	}
=20
 	/*
 	 * Create a socket from which to fetch interface information.
@@ -1957,6 +2115,7 @@
 	if (fd < 0) {
 		(void)snprintf(errbuf, PCAP_ERRBUF_SIZE,
 		    "socket: %s", pcap_strerror(errno));
+		(void)fclose(proc_net_f);
 		return (-1);
 	}
=20
@@ -2132,6 +2291,14 @@
 		return (-1);
 #endif
=20
+#ifdef PCAP_SUPPORT_NETFILTER
+	/*
+	 * Add netfilter devices.
+	 */
+	if (netfilter_platform_finddevs(alldevsp, errbuf) < 0)
+		return (-1);
+#endif
+
 	return (0);
 }
=20
@@ -2227,6 +2394,30 @@
 		}
 	}
=20
+	/*
+	 * NOTE: at this point, we've set both the "len" and "filter"
+	 * fields of "fcode".  As of the 2.6.32.4 kernel, at least,
+	 * those are the only members of the "sock_fprog" structure,
+	 * so we initialize every member of that structure.
+	 *
+	 * If there is anything in "fcode" that is not initialized,
+	 * it is either a field added in a later kernel, or it's
+	 * padding.
+	 *
+	 * If a new field is added, this code needs to be updated
+	 * to set it correctly.
+	 *
+	 * If there are no other fields, then:
+	 *
+	 *	if the Linux kernel looks at the padding, it's
+	 *	buggy;
+	 *
+	 *	if the Linux kernel doesn't look at the padding,
+	 *	then if some tool complains that we're passing
+	 *	uninitialized data to the kernel, then the tool
+	 *	is buggy and needs to understand that it's just
+	 *	padding.
+	 */
 	if (can_filter_in_kernel) {
 		if ((err =3D set_kernel_filter(handle, &fcode)) =3D=3D 0)
 		{
@@ -2302,7 +2493,6 @@
 	return -1;
 }
=20
-
 #ifdef HAVE_PF_PACKET_SOCKETS
 /*
  * Map the PACKET_ value to a LINUX_SLL_ value; we
@@ -2649,6 +2839,13 @@
 		handle->linktype =3D DLT_RAW;
 		break;
=20
+#ifndef ARPHRD_IEEE802154
+#define ARPHRD_IEEE802154      804
+#endif
+       case ARPHRD_IEEE802154:
+               handle->linktype =3D  DLT_IEEE802_15_4_NOFCS;
+               break;
+
 	default:
 		handle->linktype =3D -1;
 		break;
@@ -2688,9 +2885,28 @@
 		socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
=20
 	if (sock_fd =3D=3D -1) {
+		if (errno =3D=3D EINVAL || errno =3D=3D EAFNOSUPPORT) {
+			/*
+			 * We don't support PF_PACKET/SOCK_whatever
+			 * sockets; try the old mechanism.
+			 */
+			return 0;
+		}
+
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "socket: %s",
 			 pcap_strerror(errno) );
-		return 0;	/* try old mechanism */
+		if (errno =3D=3D EPERM || errno =3D=3D EACCES) {
+			/*
+			 * You don't have permission to open the
+			 * socket.
+			 */
+			return PCAP_ERROR_PERM_DENIED;
+		} else {
+			/*
+			 * Other error.
+			 */
+			return PCAP_ERROR;
+		}
 	}
=20
 	/* It seems the kernel supports the new interface. */
@@ -2787,7 +3003,18 @@
 			if (sock_fd =3D=3D -1) {
 				snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 				    "socket: %s", pcap_strerror(errno));
-				return PCAP_ERROR;
+				if (errno =3D=3D EPERM || errno =3D=3D EACCES) {
+					/*
+					 * You don't have permission to
+					 * open the socket.
+					 */
+					return PCAP_ERROR_PERM_DENIED;
+				} else {
+					/*
+					 * Other error.
+					 */
+					return PCAP_ERROR;
+				}
 			}
 			handle->md.cooked =3D 1;
=20
@@ -2950,10 +3177,22 @@
 #endif
 }
=20
+#ifdef HAVE_PACKET_RING
+/*
+ * Attempt to activate with memory-mapped access.
+ *
+ * On success, returns 1, and sets *status to 0 if there are no warnings
+ * or to a PCAP_WARNING_ code if there is a warning.
+ *
+ * On failure due to lack of support for memory-mapped capture, returns
+ * 0.
+ *
+ * On error, returns -1, and sets *status to the appropriate error code;
+ * if that is PCAP_ERROR, sets handle->errbuf to the appropriate message.
+ */
 static int=20
-activate_mmap(pcap_t *handle)
+activate_mmap(pcap_t *handle, int *status)
 {
-#ifdef HAVE_PACKET_RING
 	int ret;
=20
 	/*
@@ -2965,7 +3204,8 @@
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 			 "can't allocate oneshot buffer: %s",
 			 pcap_strerror(errno));
-		return PCAP_ERROR;
+		*status =3D PCAP_ERROR;
+		return -1;
 	}
=20
 	if (handle->opt.buffer_size =3D=3D 0) {
@@ -2973,20 +3213,38 @@
 		handle->opt.buffer_size =3D 2*1024*1024;
 	}
 	ret =3D prepare_tpacket_socket(handle);
-	if (ret !=3D 1) {
+	if (ret =3D=3D -1) {
 		free(handle->md.oneshot_buffer);
+		*status =3D PCAP_ERROR;
 		return ret;
 	}
-	ret =3D create_ring(handle);
-	if (ret !=3D 1) {
+	ret =3D create_ring(handle, status);
+	if (ret =3D=3D 0) {
+		/*
+		 * We don't support memory-mapped capture; our caller
+		 * will fall back on reading from the socket.
+		 */
 		free(handle->md.oneshot_buffer);
-		return ret;
+		return 0;
 	}
-
-	/* override some defaults and inherit the other fields from
-	 * activate_new
-	 * handle->offset is used to get the current position into the rx ring=20
-	 * handle->cc is used to store the ring size */
+	if (ret =3D=3D -1) {
+		/*
+		 * Error attempting to enable memory-mapped capture;
+		 * fail.  create_ring() has set *status.
+		 */
+		free(handle->md.oneshot_buffer);
+		return -1;
+	}
+
+	/*
+	 * Success.  *status has been set either to 0 if there are no
+	 * warnings or to a PCAP_WARNING_ value if there is a warning.
+	 *
+	 * Override some defaults and inherit the other fields from
+	 * activate_new.
+	 * handle->offset is used to get the current position into the rx ring.
+	 * handle->cc is used to store the ring size.
+	 */
 	handle->read_op =3D pcap_read_linux_mmap;
 	handle->cleanup_op =3D pcap_cleanup_linux_mmap;
 	handle->setfilter_op =3D pcap_setfilter_linux_mmap;
@@ -2995,12 +3253,21 @@
 	handle->oneshot_callback =3D pcap_oneshot_mmap;
 	handle->selectable_fd =3D handle->fd;
 	return 1;
+}
 #else /* HAVE_PACKET_RING */
+static int=20
+activate_mmap(pcap_t *handle _U_, int *status _U_)
+{
 	return 0;
+}
 #endif /* HAVE_PACKET_RING */
-}
=20
 #ifdef HAVE_PACKET_RING
+/*
+ * Attempt to set the socket to version 2 of the memory-mapped header.
+ * Return 1 if we succeed or if we fail because version 2 isn't
+ * supported; return -1 on any other error, and set handle->errbuf.
+ */
 static int
 prepare_tpacket_socket(pcap_t *handle)
 {
@@ -3052,20 +3319,140 @@
 	return 1;
 }
=20
+/*
+ * Attempt to set up memory-mapped access.
+ *
+ * On success, returns 1, and sets *status to 0 if there are no warnings
+ * or to a PCAP_WARNING_ code if there is a warning.
+ *
+ * On failure due to lack of support for memory-mapped capture, returns
+ * 0.
+ *
+ * On error, returns -1, and sets *status to the appropriate error code;
+ * if that is PCAP_ERROR, sets handle->errbuf to the appropriate message.
+ */
 static int
-create_ring(pcap_t *handle)
+create_ring(pcap_t *handle, int *status)
 {
 	unsigned i, j, frames_per_block;
 	struct tpacket_req req;
-
-	/* Note that with large snapshot (say 64K) only a few frames=20
-	 * will be available in the ring even with pretty large ring size
-	 * (and a lot of memory will be unused).=20
-	 * The snap len should be carefully chosen to achive best
-	 * performance */
-	req.tp_frame_size =3D TPACKET_ALIGN(handle->snapshot +
-					  TPACKET_ALIGN(handle->md.tp_hdrlen) +
-					  sizeof(struct sockaddr_ll));
+	socklen_t len;
+	unsigned int sk_type, tp_reserve, maclen, tp_hdrlen, netoff, macoff;
+	unsigned int frame_size;
+
+	/*
+	 * Start out assuming no warnings or errors.
+	 */
+	*status =3D 0;
+
+	/* Note that with large snapshot length (say 64K, which is the default
+	 * for recent versions of tcpdump, the value that "-s 0" has given
+	 * for a long time with tcpdump, and the default in Wireshark/TShark),
+	 * if we use the snapshot length to calculate the frame length,
+	 * only a few frames will be available in the ring even with pretty
+	 * large ring size (and a lot of memory will be unused).
+	 *
+	 * Ideally, we should choose a frame length based on the
+	 * minimum of the specified snapshot length and the maximum
+	 * packet size.  That's not as easy as it sounds; consider, for
+	 * example, an 802.11 interface in monitor mode, where the
+	 * frame would include a radiotap header, where the maximum
+	 * radiotap header length is device-dependent.
+	 *
+	 * So, for now, we just do this for Ethernet devices, where
+	 * there's no metadata header, and the link-layer header is
+	 * fixed length.  We can get the maximum packet size by
+	 * adding 18, the Ethernet header length plus the CRC length
+	 * (just in case we happen to get the CRC in the packet), to
+	 * the MTU of the interface; we fetch the MTU in the hopes
+	 * that it reflects support for jumbo frames.  (Even if the
+	 * interface is just being used for passive snooping, the driver
+	 * might set the size of buffers in the receive ring based on
+	 * the MTU, so that the MTU limits the maximum size of packets
+	 * that we can receive.)
+	 *
+	 * We don't do that if segmentation/fragmentation or receive
+	 * offload are enabled, so we don't get rudely surprised by
+	 * "packets" bigger than the MTU. */
+	frame_size =3D handle->snapshot;
+	if (handle->linktype =3D=3D DLT_EN10MB) {
+		int mtu;
+		int offload;
+
+		offload =3D iface_get_offload(handle);
+		if (offload =3D=3D -1) {
+			*status =3D PCAP_ERROR;
+			return -1;
+		}
+		if (!offload) {
+			mtu =3D iface_get_mtu(handle->fd, handle->opt.source,
+			    handle->errbuf);
+			if (mtu =3D=3D -1) {
+				*status =3D PCAP_ERROR;
+				return -1;
+			}
+			if (frame_size > mtu + 18)
+				frame_size =3D mtu + 18;
+		}
+	}
+=09
+	/* NOTE: calculus matching those in tpacket_rcv()
+	 * in linux-2.6/net/packet/af_packet.c
+	 */
+	len =3D sizeof(sk_type);
+	if (getsockopt(handle->fd, SOL_SOCKET, SO_TYPE, &sk_type, &len) < 0) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "getsockopt: %s", pcap_strerr=
or(errno));
+		*status =3D PCAP_ERROR;
+		return -1;
+	}
+#ifdef PACKET_RESERVE
+	len =3D sizeof(tp_reserve);
+	if (getsockopt(handle->fd, SOL_PACKET, PACKET_RESERVE, &tp_reserve, &len)=
 < 0) {
+		if (errno !=3D ENOPROTOOPT) {
+			/*
+			 * ENOPROTOOPT means "kernel doesn't support
+			 * PACKET_RESERVE", in which case we fall back
+			 * as best we can.
+			 */
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "getsockopt: %s", pcap_strer=
ror(errno));
+			*status =3D PCAP_ERROR;
+			return -1;
+		}
+		tp_reserve =3D 0;	/* older kernel, reserve not supported */
+	}
+#else
+	tp_reserve =3D 0;	/* older kernel, reserve not supported */
+#endif
+	maclen =3D (sk_type =3D=3D SOCK_DGRAM) ? 0 : MAX_LINKHEADER_SIZE;
+		/* XXX: in the kernel maclen is calculated from
+		 * LL_ALLOCATED_SPACE(dev) and vnet_hdr.hdr_len
+		 * in:  packet_snd()           in linux-2.6/net/packet/af_packet.c
+		 * then packet_alloc_skb()     in linux-2.6/net/packet/af_packet.c
+		 * then sock_alloc_send_pskb() in linux-2.6/net/core/sock.c
+		 * but I see no way to get those sizes in userspace,
+		 * like for instance with an ifreq ioctl();
+		 * the best thing I've found so far is MAX_HEADER in the kernel
+		 * part of linux-2.6/include/linux/netdevice.h
+		 * which goes up to 128+48=3D176; since pcap-linux.c defines
+		 * a MAX_LINKHEADER_SIZE of 256 which is greater than that,
+		 * let's use it.. maybe is it even large enough to directly
+		 * replace macoff..
+		 */
+	tp_hdrlen =3D TPACKET_ALIGN(handle->md.tp_hdrlen) + sizeof(struct sockadd=
r_ll) ;
+	netoff =3D TPACKET_ALIGN(tp_hdrlen + (maclen < 16 ? 16 : maclen)) + tp_re=
serve;
+		/* NOTE: AFAICS tp_reserve may break the TPACKET_ALIGN of
+		 * netoff, which contradicts
+		 * linux-2.6/Documentation/networking/packet_mmap.txt
+		 * documenting that:
+		 * "- Gap, chosen so that packet data (Start+tp_net)
+		 * aligns to TPACKET_ALIGNMENT=3D16"
+		 */
+		/* NOTE: in linux-2.6/include/linux/skbuff.h:
+		 * "CPUs often take a performance hit
+		 *  when accessing unaligned memory locations"
+		 */
+	macoff =3D netoff - maclen;
+	req.tp_frame_size =3D TPACKET_ALIGN(macoff + frame_size);
 	req.tp_frame_nr =3D handle->opt.buffer_size/req.tp_frame_size;
=20
 	/* compute the minumum block size that will handle this frame.=20
@@ -3078,6 +3465,109 @@
=20
 	frames_per_block =3D req.tp_block_size/req.tp_frame_size;
=20
+	/*
+	 * PACKET_TIMESTAMP was added after linux/net_tstamp.h was,
+	 * so we check for PACKET_TIMESTAMP.  We check for
+	 * linux/net_tstamp.h just in case a system somehow has
+	 * PACKET_TIMESTAMP but not linux/net_tstamp.h; that might
+	 * be unnecessary.
+	 *
+	 * SIOCSHWTSTAMP was introduced in the patch that introduced
+	 * linux/net_tstamp.h, so we don't bother checking whether
+	 * SIOCSHWTSTAMP is defined (if your Linux system has
+	 * linux/net_tstamp.h but doesn't define SIOCSHWTSTAMP, your
+	 * Linux system is badly broken).
+	 */
+#if defined(HAVE_LINUX_NET_TSTAMP_H) && defined(PACKET_TIMESTAMP)
+	/*
+	 * If we were told to do so, ask the kernel and the driver
+	 * to use hardware timestamps.
+	 *
+	 * Hardware timestamps are only supported with mmapped
+	 * captures.
+	 */
+	if (handle->opt.tstamp_type =3D=3D PCAP_TSTAMP_ADAPTER ||
+	    handle->opt.tstamp_type =3D=3D PCAP_TSTAMP_ADAPTER_UNSYNCED) {
+		struct hwtstamp_config hwconfig;
+		struct ifreq ifr;
+		int timesource;
+
+		/*
+		 * Ask for hardware time stamps on all packets,
+		 * including transmitted packets.
+		 */
+		memset(&hwconfig, 0, sizeof(hwconfig));
+		hwconfig.tx_type =3D HWTSTAMP_TX_ON;
+		hwconfig.rx_filter =3D HWTSTAMP_FILTER_ALL;
+
+		memset(&ifr, 0, sizeof(ifr));
+		strcpy(ifr.ifr_name, handle->opt.source);
+		ifr.ifr_data =3D (void *)&hwconfig;
+
+		if (ioctl(handle->fd, SIOCSHWTSTAMP, &ifr) < 0) {
+			switch (errno) {
+
+			case EPERM:
+				/*
+				 * Treat this as an error, as the
+				 * user should try to run this
+				 * with the appropriate privileges -
+				 * and, if they can't, shouldn't
+				 * try requesting hardware time stamps.
+				 */
+				*status =3D PCAP_ERROR_PERM_DENIED;
+				return -1;
+
+			case EOPNOTSUPP:
+				/*
+				 * Treat this as a warning, as the
+				 * only way to fix the warning is to
+				 * get an adapter that supports hardware
+				 * time stamps.  We'll just fall back
+				 * on the standard host time stamps.
+				 */
+				*status =3D PCAP_WARNING_TSTAMP_TYPE_NOTSUP;
+				break;
+
+			default:
+				snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+					"SIOCSHWTSTAMP failed: %s",
+					pcap_strerror(errno));
+				*status =3D PCAP_ERROR;
+				return -1;
+			}
+		} else {
+			/*
+			 * Well, that worked.  Now specify the type of
+			 * hardware time stamp we want for this
+			 * socket.
+			 */
+			if (handle->opt.tstamp_type =3D=3D PCAP_TSTAMP_ADAPTER) {
+				/*
+				 * Hardware timestamp, synchronized
+				 * with the system clock.
+				 */
+				timesource =3D SOF_TIMESTAMPING_SYS_HARDWARE;
+			} else {
+				/*
+				 * PCAP_TSTAMP_ADAPTER_UNSYNCED - hardware
+				 * timestamp, not synchronized with the
+				 * system clock.
+				 */
+				timesource =3D SOF_TIMESTAMPING_RAW_HARDWARE;
+			}
+			if (setsockopt(handle->fd, SOL_PACKET, PACKET_TIMESTAMP,
+				(void *)&timesource, sizeof(timesource))) {
+				snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,=20
+					"can't set PACKET_TIMESTAMP: %s",=20
+					pcap_strerror(errno));
+				*status =3D PCAP_ERROR;
+				return -1;
+			}
+		}
+	}
+#endif /* HAVE_LINUX_NET_TSTAMP_H && PACKET_TIMESTAMP */
+
 	/* ask the kernel to create the ring */
 retry:
 	req.tp_block_nr =3D req.tp_frame_nr / frames_per_block;
@@ -3112,6 +3602,7 @@
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 		    "can't create rx ring on packet socket: %s",
 		    pcap_strerror(errno));
+		*status =3D PCAP_ERROR;
 		return -1;
 	}
=20
@@ -3125,6 +3616,7 @@
=20
 		/* clear the allocated ring on error*/
 		destroy_ring(handle);
+		*status =3D PCAP_ERROR;
 		return -1;
 	}
=20
@@ -3137,6 +3629,7 @@
 		    pcap_strerror(errno));
=20
 		destroy_ring(handle);
+		*status =3D PCAP_ERROR;
 		return -1;
 	}
=20
@@ -3813,6 +4306,8 @@
 	monitor_type montype;
 	int i;
 	__u32 cmd;
+	struct ifreq ifr;
+	int oldflags;
 	int args[2];
 	int channel;
=20
@@ -3823,6 +4318,13 @@
 	if (err <=3D 0)
 		return err;	/* either it doesn't or the device doesn't even exist */
 	/*
+	 * Start out assuming we have no private extensions to control
+	 * radio metadata.
+	 */
+	montype =3D MONITOR_WEXT;
+	cmd =3D 0;
+
+	/*
 	 * Try to get all the Wireless Extensions private ioctls
 	 * supported by this device.
 	 *
@@ -3845,187 +4347,189 @@
 		    device);
 		return PCAP_ERROR;
 	}
-	if (errno =3D=3D EOPNOTSUPP) {
+	if (errno !=3D EOPNOTSUPP) {
 		/*
-		 * No private ioctls, so we assume that there's only one
-		 * DLT_ for monitor mode.
+		 * OK, it's not as if there are no private ioctls.
 		 */
-		return 0;
-	}
-	if (errno !=3D E2BIG) {
+		if (errno !=3D E2BIG) {
+			/*
+			 * Failed.
+			 */
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "%s: SIOCGIWPRIV: %s", device,
+			    pcap_strerror(errno));
+			return PCAP_ERROR;
+		}
+
 		/*
-		 * Failed.
+		 * OK, try to get the list of private ioctls.
 		 */
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-		    "%s: SIOCGIWPRIV: %s", device, pcap_strerror(errno));
-		return PCAP_ERROR;
-	}
-	priv =3D malloc(ireq.u.data.length * sizeof (struct iw_priv_args));
-	if (priv =3D=3D NULL) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-			 "malloc: %s", pcap_strerror(errno));
-		return PCAP_ERROR;
-	}
-	ireq.u.data.pointer =3D (void *)priv;
-	if (ioctl(sock_fd, SIOCGIWPRIV, &ireq) =3D=3D -1) {
-		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
-		    "%s: SIOCGIWPRIV: %s", device, pcap_strerror(errno));
-		free(priv);
-		return PCAP_ERROR;
-	}
-
-	/*
-	 * Look for private ioctls to turn monitor mode on or, if
-	 * monitor mode is on, to set the header type.
-	 */
-	montype =3D MONITOR_WEXT;
-	cmd =3D 0;
-	for (i =3D 0; i < ireq.u.data.length; i++) {
-		if (strcmp(priv[i].name, "monitor_type") =3D=3D 0) {
-			/*
-			 * Hostap driver, use this one.
-			 * Set monitor mode first.
-			 * You can set it to 0 to get DLT_IEEE80211,
-			 * 1 to get DLT_PRISM, 2 to get
-			 * DLT_IEEE80211_RADIO_AVS, and, with more
-			 * recent versions of the driver, 3 to get
-			 * DLT_IEEE80211_RADIO.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
-				break;
-			if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
-				break;
-			montype =3D MONITOR_HOSTAP;
-			cmd =3D priv[i].cmd;
-			break;
+		priv =3D malloc(ireq.u.data.length * sizeof (struct iw_priv_args));
+		if (priv =3D=3D NULL) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "malloc: %s", pcap_strerror(errno));
+			return PCAP_ERROR;
 		}
-		if (strcmp(priv[i].name, "set_prismhdr") =3D=3D 0) {
-			/*
-			 * Prism54 driver, use this one.
-			 * Set monitor mode first.
-			 * You can set it to 2 to get DLT_IEEE80211
-			 * or 3 or get DLT_PRISM.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
-				break;
-			if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
-				break;
-			montype =3D MONITOR_PRISM54;
-			cmd =3D priv[i].cmd;
-			break;
+		ireq.u.data.pointer =3D (void *)priv;
+		if (ioctl(sock_fd, SIOCGIWPRIV, &ireq) =3D=3D -1) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "%s: SIOCGIWPRIV: %s", device,
+			    pcap_strerror(errno));
+			free(priv);
+			return PCAP_ERROR;
 		}
-		if (strcmp(priv[i].name, "forceprismheader") =3D=3D 0) {
-			/*
-			 * RT2570 driver, use this one.
-			 * Do this after turning monitor mode on.
-			 * You can set it to 1 to get DLT_PRISM or 2
-			 * to get DLT_IEEE80211.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
-				break;
-			if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
-				break;
-			montype =3D MONITOR_RT2570;
-			cmd =3D priv[i].cmd;
-			break;
-		}
-		if (strcmp(priv[i].name, "forceprism") =3D=3D 0) {
-			/*
-			 * RT73 driver, use this one.
-			 * Do this after turning monitor mode on.
-			 * Its argument is a *string*; you can
-			 * set it to "1" to get DLT_PRISM or "2"
-			 * to get DLT_IEEE80211.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_CHAR)
-				break;
-			if (priv[i].set_args & IW_PRIV_SIZE_FIXED)
-				break;
-			montype =3D MONITOR_RT73;
-			cmd =3D priv[i].cmd;
-			break;
-		}
-		if (strcmp(priv[i].name, "prismhdr") =3D=3D 0) {
-			/*
-			 * One of the RTL8xxx drivers, use this one.
-			 * It can only be done after monitor mode
-			 * has been turned on.  You can set it to 1
-			 * to get DLT_PRISM or 0 to get DLT_IEEE80211.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
-				break;
-			if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
-				break;
-			montype =3D MONITOR_RTL8XXX;
-			cmd =3D priv[i].cmd;
-			break;
-		}
-		if (strcmp(priv[i].name, "rfmontx") =3D=3D 0) {
-			/*
-			 * RT2500 or RT61 driver, use this one.
-			 * It has one one-byte parameter; set
-			 * u.data.length to 1 and u.data.pointer to
-			 * point to the parameter.
-			 * It doesn't itself turn monitor mode on.
-			 * You can set it to 1 to allow transmitting
-			 * in monitor mode(?) and get DLT_IEEE80211,
-			 * or set it to 0 to disallow transmitting in
-			 * monitor mode(?) and get DLT_PRISM.
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 2)
-				break;
-			montype =3D MONITOR_RT2500;
-			cmd =3D priv[i].cmd;
-			break;
-		}
-		if (strcmp(priv[i].name, "monitor") =3D=3D 0) {
-			/*
-			 * Either ACX100 or hostap, use this one.
-			 * It turns monitor mode on.
-			 * If it takes two arguments, it's ACX100;
-			 * the first argument is 1 for DLT_PRISM
-			 * or 2 for DLT_IEEE80211, and the second
-			 * argument is the channel on which to
-			 * run.  If it takes one argument, it's
-			 * HostAP, and the argument is 2 for
-			 * DLT_IEEE80211 and 3 for DLT_PRISM.
-			 *
-			 * If we see this, we don't quit, as this
-			 * might be a version of the hostap driver
-			 * that also supports "monitor_type".
-			 */
-			if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
-				break;
-			if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
-				break;
-			switch (priv[i].set_args & IW_PRIV_SIZE_MASK) {
-
-			case 1:
-				montype =3D MONITOR_PRISM;
+
+		/*
+		 * Look for private ioctls to turn monitor mode on or, if
+		 * monitor mode is on, to set the header type.
+		 */
+		for (i =3D 0; i < ireq.u.data.length; i++) {
+			if (strcmp(priv[i].name, "monitor_type") =3D=3D 0) {
+				/*
+				 * Hostap driver, use this one.
+				 * Set monitor mode first.
+				 * You can set it to 0 to get DLT_IEEE80211,
+				 * 1 to get DLT_PRISM, 2 to get
+				 * DLT_IEEE80211_RADIO_AVS, and, with more
+				 * recent versions of the driver, 3 to get
+				 * DLT_IEEE80211_RADIO.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
+					break;
+				if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
+					break;
+				montype =3D MONITOR_HOSTAP;
 				cmd =3D priv[i].cmd;
 				break;
-
-			case 2:
-				montype =3D MONITOR_ACX100;
+			}
+			if (strcmp(priv[i].name, "set_prismhdr") =3D=3D 0) {
+				/*
+				 * Prism54 driver, use this one.
+				 * Set monitor mode first.
+				 * You can set it to 2 to get DLT_IEEE80211
+				 * or 3 or get DLT_PRISM.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
+					break;
+				if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
+					break;
+				montype =3D MONITOR_PRISM54;
 				cmd =3D priv[i].cmd;
 				break;
-
-			default:
+			}
+			if (strcmp(priv[i].name, "forceprismheader") =3D=3D 0) {
+				/*
+				 * RT2570 driver, use this one.
+				 * Do this after turning monitor mode on.
+				 * You can set it to 1 to get DLT_PRISM or 2
+				 * to get DLT_IEEE80211.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
+					break;
+				if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
+					break;
+				montype =3D MONITOR_RT2570;
+				cmd =3D priv[i].cmd;
 				break;
 			}
+			if (strcmp(priv[i].name, "forceprism") =3D=3D 0) {
+				/*
+				 * RT73 driver, use this one.
+				 * Do this after turning monitor mode on.
+				 * Its argument is a *string*; you can
+				 * set it to "1" to get DLT_PRISM or "2"
+				 * to get DLT_IEEE80211.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_CHAR)
+					break;
+				if (priv[i].set_args & IW_PRIV_SIZE_FIXED)
+					break;
+				montype =3D MONITOR_RT73;
+				cmd =3D priv[i].cmd;
+				break;
+			}
+			if (strcmp(priv[i].name, "prismhdr") =3D=3D 0) {
+				/*
+				 * One of the RTL8xxx drivers, use this one.
+				 * It can only be done after monitor mode
+				 * has been turned on.  You can set it to 1
+				 * to get DLT_PRISM or 0 to get DLT_IEEE80211.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
+					break;
+				if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 1)
+					break;
+				montype =3D MONITOR_RTL8XXX;
+				cmd =3D priv[i].cmd;
+				break;
+			}
+			if (strcmp(priv[i].name, "rfmontx") =3D=3D 0) {
+				/*
+				 * RT2500 or RT61 driver, use this one.
+				 * It has one one-byte parameter; set
+				 * u.data.length to 1 and u.data.pointer to
+				 * point to the parameter.
+				 * It doesn't itself turn monitor mode on.
+				 * You can set it to 1 to allow transmitting
+				 * in monitor mode(?) and get DLT_IEEE80211,
+				 * or set it to 0 to disallow transmitting in
+				 * monitor mode(?) and get DLT_PRISM.
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if ((priv[i].set_args & IW_PRIV_SIZE_MASK) !=3D 2)
+					break;
+				montype =3D MONITOR_RT2500;
+				cmd =3D priv[i].cmd;
+				break;
+			}
+			if (strcmp(priv[i].name, "monitor") =3D=3D 0) {
+				/*
+				 * Either ACX100 or hostap, use this one.
+				 * It turns monitor mode on.
+				 * If it takes two arguments, it's ACX100;
+				 * the first argument is 1 for DLT_PRISM
+				 * or 2 for DLT_IEEE80211, and the second
+				 * argument is the channel on which to
+				 * run.  If it takes one argument, it's
+				 * HostAP, and the argument is 2 for
+				 * DLT_IEEE80211 and 3 for DLT_PRISM.
+				 *
+				 * If we see this, we don't quit, as this
+				 * might be a version of the hostap driver
+				 * that also supports "monitor_type".
+				 */
+				if ((priv[i].set_args & IW_PRIV_TYPE_MASK) !=3D IW_PRIV_TYPE_INT)
+					break;
+				if (!(priv[i].set_args & IW_PRIV_SIZE_FIXED))
+					break;
+				switch (priv[i].set_args & IW_PRIV_SIZE_MASK) {
+
+				case 1:
+					montype =3D MONITOR_PRISM;
+					cmd =3D priv[i].cmd;
+					break;
+
+				case 2:
+					montype =3D MONITOR_ACX100;
+					cmd =3D priv[i].cmd;
+					break;
+
+				default:
+					break;
+				}
+			}
 		}
+		free(priv);
 	}
-	free(priv);
=20
 	/*
 	 * XXX - ipw3945?  islism?
@@ -4120,7 +4624,29 @@
 	}
=20
 	/*
-	 * First, turn monitor mode on.
+	 * First, take the interface down if it's up; otherwise, we
+	 * might get EBUSY.
+	 */
+	memset(&ifr, 0, sizeof(ifr));
+	strncpy(ifr.ifr_name, device, sizeof(ifr.ifr_name));
+	if (ioctl(sock_fd, SIOCGIFFLAGS, &ifr) =3D=3D -1) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "%s: Can't get flags: %s", device, strerror(errno));
+		return PCAP_ERROR;
+	}
+	oldflags =3D 0;
+	if (ifr.ifr_flags & IFF_UP) {
+		oldflags =3D ifr.ifr_flags;
+		ifr.ifr_flags &=3D ~IFF_UP;
+		if (ioctl(sock_fd, SIOCSIFFLAGS, &ifr) =3D=3D -1) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "%s: Can't set flags: %s", device, strerror(errno));
+			return PCAP_ERROR;
+		}
+	}
+
+	/*
+	 * Then turn monitor mode on.
 	 */
 	strncpy(ireq.ifr_ifrn.ifrn_name, device,
 	    sizeof ireq.ifr_ifrn.ifrn_name);
@@ -4129,7 +4655,14 @@
 	if (ioctl(sock_fd, SIOCSIWMODE, &ireq) =3D=3D -1) {
 		/*
 		 * Scientist, you've failed.
+		 * Bring the interface back up if we shut it down.
 		 */
+		ifr.ifr_flags =3D oldflags;
+		if (ioctl(sock_fd, SIOCSIFFLAGS, &ifr) =3D=3D -1) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "%s: Can't set flags: %s", device, strerror(errno));
+			return PCAP_ERROR;
+		}
 		return PCAP_ERROR_RFMON_NOTSUP;
 	}
=20
@@ -4292,6 +4825,32 @@
 	}
=20
 	/*
+	 * Now bring the interface back up if we brought it down.
+	 */
+	if (oldflags !=3D 0) {
+		ifr.ifr_flags =3D oldflags;
+		if (ioctl(sock_fd, SIOCSIFFLAGS, &ifr) =3D=3D -1) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+			    "%s: Can't set flags: %s", device, strerror(errno));
+
+			/*
+			 * At least try to restore the old mode on the
+			 * interface.
+			 */
+			if (ioctl(handle->fd, SIOCSIWMODE, &ireq) =3D=3D -1) {
+				/*
+				 * Scientist, you've failed.
+				 */
+				fprintf(stderr,
+				    "Can't restore interface wireless mode (SIOCSIWMODE failed: %s).\n"
+				    "Please adjust manually.\n",
+				    strerror(errno));
+			}
+			return PCAP_ERROR;
+		}
+	}
+
+	/*
 	 * Note that we have to put the old mode back when we
 	 * close the device.
 	 */
@@ -4340,6 +4899,112 @@
 	return 0;
 }
=20
+/*
+ * Find out if we have any form of fragmentation/reassembly offloading.
+ *
+ * We do so using SIOCETHTOOL checking for various types of offloading;
+ * if SIOCETHTOOL isn't defined, or we don't have any #defines for any
+ * of the types of offloading, there's nothing we can do to check, so
+ * we just say "no, we don't".
+ */
+#if defined(SIOCETHTOOL) && (defined(ETHTOOL_GTSO) || defined(ETHTOOL_GUFO=
) || defined(ETHTOOL_GGSO) || defined(ETHTOOL_GFLAGS) || defined(ETHTOOL_GG=
RO))
+static int
+iface_ethtool_ioctl(pcap_t *handle, int cmd, const char *cmdname)
+{
+	struct ifreq	ifr;
+	struct ethtool_value eval;
+
+	memset(&ifr, 0, sizeof(ifr));
+	strncpy(ifr.ifr_name, handle->opt.source, sizeof(ifr.ifr_name));
+	eval.cmd =3D cmd;
+	ifr.ifr_data =3D (caddr_t)&eval;
+	if (ioctl(handle->fd, SIOCETHTOOL, &ifr) =3D=3D -1) {
+		if (errno =3D=3D EOPNOTSUPP) {
+			/*
+			 * OK, let's just return 0, which, in our
+			 * case, either means "no, what we're asking
+			 * about is not enabled" or "all the flags
+			 * are clear (i.e., nothing is enabled)".
+			 */
+			return 0;
+		}
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+		    "%s: SIOETHTOOL(%s) ioctl failed: %s", handle->opt.source,
+		    cmdname, strerror(errno));
+		return -1;
+	}
+	return eval.data;=09
+}
+
+static int
+iface_get_offload(pcap_t *handle)
+{
+	int ret;
+
+#ifdef ETHTOOL_GTSO
+	ret =3D iface_ethtool_ioctl(handle, ETHTOOL_GTSO, "ETHTOOL_GTSO");
+	if (ret =3D=3D -1)
+		return -1;
+	if (ret)
+		return 1;	/* TCP segmentation offloading on */
+#endif
+
+#ifdef ETHTOOL_GUFO
+	ret =3D iface_ethtool_ioctl(handle, ETHTOOL_GUFO, "ETHTOOL_GUFO");
+	if (ret =3D=3D -1)
+		return -1;
+	if (ret)
+		return 1;	/* UDP fragmentation offloading on */
+#endif
+
+#ifdef ETHTOOL_GGSO
+	/*
+	 * XXX - will this cause large unsegmented packets to be
+	 * handed to PF_PACKET sockets on transmission?  If not,
+	 * this need not be checked.
+	 */
+	ret =3D iface_ethtool_ioctl(handle, ETHTOOL_GGSO, "ETHTOOL_GGSO");
+	if (ret =3D=3D -1)
+		return -1;
+	if (ret)
+		return 1;	/* generic segmentation offloading on */
+#endif
+
+#ifdef ETHTOOL_GFLAGS
+	ret =3D iface_ethtool_ioctl(handle, ETHTOOL_GFLAGS, "ETHTOOL_GFLAGS");
+	if (ret =3D=3D -1)
+		return -1;
+	if (ret & ETH_FLAG_LRO)
+		return 1;	/* large receive offloading on */
+#endif
+
+#ifdef ETHTOOL_GGRO
+	/*
+	 * XXX - will this cause large reassembled packets to be
+	 * handed to PF_PACKET sockets on receipt?  If not,
+	 * this need not be checked.
+	 */
+	ret =3D iface_ethtool_ioctl(handle, ETHTOOL_GGRO, "ETHTOOL_GGRO");
+	if (ret =3D=3D -1)
+		return -1;
+	if (ret)
+		return 1;	/* generic (large) receive offloading on */
+#endif
+
+	return 0;
+}
+#else /* SIOCETHTOOL */
+static int
+iface_get_offload(pcap_t *handle _U_)
+{
+	/*
+	 * XXX - do we need to get this information if we don't
+	 * have the ethtool ioctls?  If so, how do we do that?
+	 */
+	return 0;
+}
+#endif /* SIOCETHTOOL */
+
 #endif /* HAVE_PF_PACKET_SOCKETS */
=20
 /* =3D=3D=3D=3D=3D Functions to interface to the older kernels =3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D */
@@ -4363,7 +5028,18 @@
 	if (handle->fd =3D=3D -1) {
 		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
 			 "socket: %s", pcap_strerror(errno));
-		return PCAP_ERROR_PERM_DENIED;
+		if (errno =3D=3D EPERM || errno =3D=3D EACCES) {
+			/*
+			 * You don't have permission to open the
+			 * socket.
+			 */
+			return PCAP_ERROR_PERM_DENIED;
+		} else {
+			/*
+			 * Other error.
+			 */
+			return PCAP_ERROR;
+		}
 	}
=20
 	/* It worked - we are using the old interface */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-netfilter-li=
nux.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap-netfilter-linux.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,468 @@
+/*
+ * Copyright (c) 2011 Jakub Zawadzki
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote=20
+ * products derived from this software without specific prior written=20
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "pcap-int.h"
+
+#ifdef NEED_STRERROR_H
+#include "strerror.h"
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+
+#include <time.h>
+#include <sys/time.h>
+#include <netinet/in.h>
+#include <linux/types.h>
+
+#include <linux/netlink.h>
+#include <linux/netfilter/nfnetlink.h>
+#include <linux/netfilter/nfnetlink_log.h>
+
+#include "pcap-netfilter-linux.h"
+
+#define HDR_LENGTH (NLMSG_LENGTH(NLMSG_ALIGN(sizeof(struct nfgenmsg))))
+
+#define NFLOG_IFACE "nflog"
+
+static int
+nflog_read_linux(pcap_t *handle, int max_packets, pcap_handler callback, u=
_char *user)
+{
+	const unsigned char *buf;
+	int count =3D 0;
+	int len;
+
+	/* ignore interrupt system call error */
+	do {
+		len =3D recv(handle->fd, handle->buffer, handle->bufsize, 0);
+		if (handle->break_loop) {
+			handle->break_loop =3D 0;
+			return -2;
+		}
+	} while ((len =3D=3D -1) && (errno =3D=3D EINTR));
+
+	if (len < 0) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't receive packet %d:%s",=
 errno, pcap_strerror(errno));
+		return -1;
+	}
+
+	buf =3D handle->buffer;
+	while (len >=3D NLMSG_SPACE(0)) {
+		const struct nlmsghdr *nlh =3D (const struct nlmsghdr *) buf;
+		u_int32_t msg_len;
+
+		if (nlh->nlmsg_len < sizeof(struct nlmsghdr) || len < nlh->nlmsg_len) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Message truncated: (got: %d=
) (nlmsg_len: %u)", len, nlh->nlmsg_len);
+			return -1;
+		}
+
+		if (NFNL_SUBSYS_ID(nlh->nlmsg_type) =3D=3D NFNL_SUBSYS_ULOG &&=20
+			NFNL_MSG_TYPE(nlh->nlmsg_type) =3D=3D NFULNL_MSG_PACKET)=20
+		{
+			const unsigned char *payload =3D NULL;
+			struct pcap_pkthdr pkth;
+
+			if (handle->linktype !=3D DLT_NFLOG) {
+				const struct nfattr *payload_attr =3D NULL;
+
+				if (nlh->nlmsg_len < HDR_LENGTH) {
+					snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Malformed message: (nlmsg=
_len: %u)", nlh->nlmsg_len);
+					return -1;
+				}
+
+				if (nlh->nlmsg_len > HDR_LENGTH) {
+					struct nfattr *attr =3D NFM_NFA(NLMSG_DATA(nlh));
+					int attr_len =3D nlh->nlmsg_len - NLMSG_ALIGN(HDR_LENGTH);
+
+					while (NFA_OK(attr, attr_len)) {
+						switch (NFA_TYPE(attr)) {
+							case NFULA_PAYLOAD:
+								payload_attr =3D attr;
+								break;
+						}
+						attr =3D NFA_NEXT(attr, attr_len);
+					}
+				}
+
+				if (payload_attr) {
+					payload =3D NFA_DATA(payload_attr);
+					pkth.len =3D pkth.caplen =3D NFA_PAYLOAD(payload_attr);
+				}
+
+			} else {
+				payload =3D NLMSG_DATA(nlh);
+				pkth.caplen =3D pkth.len =3D nlh->nlmsg_len-NLMSG_ALIGN(sizeof(struct =
nlmsghdr));
+			}
+
+			if (payload) {
+				/* pkth.caplen =3D min (payload_len, handle->snapshot); */
+
+				gettimeofday(&pkth.ts, NULL);
+				if (handle->fcode.bf_insns =3D=3D NULL ||
+						bpf_filter(handle->fcode.bf_insns, payload, pkth.len, pkth.caplen))=20
+				{
+					handle->md.packets_read++;
+					callback(user, &pkth, payload);
+					count++;
+				}
+			}
+		}
+
+		msg_len =3D NLMSG_ALIGN(nlh->nlmsg_len);
+		if (msg_len > len)
+			msg_len =3D len;
+
+		len -=3D msg_len;
+		buf +=3D msg_len;
+	}
+	return count;
+}
+
+static int
+netfilter_set_datalink(pcap_t *handle, int dlt)
+{
+	handle->linktype =3D dlt;
+	return 0;
+}
+
+static int
+netfilter_stats_linux(pcap_t *handle, struct pcap_stat *stats)
+{
+	stats->ps_recv =3D handle->md.packets_read;
+	stats->ps_drop =3D 0;
+	stats->ps_ifdrop =3D 0;
+	return 0;
+}
+
+static int
+netfilter_inject_linux(pcap_t *handle, const void *buf, size_t size)
+{
+	snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "inject not supported on netfi=
lter devices");
+	return (-1);
+}                          =20
+
+struct my_nfattr {
+	u_int16_t nfa_len;
+	u_int16_t nfa_type;
+	void *data;
+};
+
+static int
+nflog_send_config_msg(const pcap_t *handle, u_int8_t family, u_int16_t res=
_id, const struct my_nfattr *mynfa)
+{
+	char buf[1024] __attribute__ ((aligned));
+
+	struct nlmsghdr *nlh =3D (struct nlmsghdr *) buf;
+	struct nfgenmsg *nfg =3D (struct nfgenmsg *) (buf + sizeof(struct nlmsghd=
r));
+
+	struct sockaddr_nl snl;
+	static unsigned int seq_id;
+=09
+	if (!seq_id)
+		seq_id =3D time(NULL);
+	++seq_id;
+
+	nlh->nlmsg_len =3D NLMSG_LENGTH(sizeof(struct nfgenmsg));
+	nlh->nlmsg_type =3D (NFNL_SUBSYS_ULOG << 8) | NFULNL_MSG_CONFIG;
+	nlh->nlmsg_flags =3D NLM_F_REQUEST | NLM_F_ACK;
+	nlh->nlmsg_pid =3D 0;	/* to kernel */
+	nlh->nlmsg_seq =3D seq_id;
+
+	nfg->nfgen_family =3D family;
+	nfg->version =3D NFNETLINK_V0;
+	nfg->res_id =3D htons(res_id);
+
+	if (mynfa) {
+		struct nfattr *nfa =3D (struct nfattr *) (buf + NLMSG_ALIGN(nlh->nlmsg_l=
en));
+
+		nfa->nfa_type =3D mynfa->nfa_type;
+		nfa->nfa_len =3D NFA_LENGTH(mynfa->nfa_len);
+		memcpy(NFA_DATA(nfa), mynfa->data, mynfa->nfa_len);
+		nlh->nlmsg_len =3D NLMSG_ALIGN(nlh->nlmsg_len) + NFA_ALIGN(nfa->nfa_len);
+	}
+
+	memset(&snl, 0, sizeof(snl));
+	snl.nl_family =3D AF_NETLINK;
+
+	if (sendto(handle->fd, nlh, nlh->nlmsg_len, 0, (struct sockaddr *) &snl, =
sizeof(snl)) =3D=3D -1)
+		return -1;
+
+	/* waiting for reply loop */
+	do {
+		socklen_t addrlen =3D sizeof(snl);
+		int len;
+
+		/* ignore interrupt system call error */
+		do {
+			len =3D recvfrom(handle->fd, buf, sizeof(buf), 0, (struct sockaddr *) &=
snl, &addrlen);
+		} while ((len =3D=3D -1) && (errno =3D=3D EINTR));
+
+		if (len <=3D 0)
+			return len;
+
+		if (addrlen !=3D sizeof(snl) || snl.nl_family !=3D AF_NETLINK) {
+			errno =3D EINVAL;
+			return -1;
+		}
+
+		nlh =3D (struct nlmsghdr *) buf;
+		if (snl.nl_pid !=3D 0 || seq_id !=3D nlh->nlmsg_seq)	/* if not from kern=
el or wrong sequence skip */
+			continue;
+
+		while (len >=3D NLMSG_SPACE(0) && NLMSG_OK(nlh, len)) {
+			if (nlh->nlmsg_type =3D=3D NLMSG_ERROR || (nlh->nlmsg_type =3D=3D NLMSG=
_DONE && nlh->nlmsg_flags & NLM_F_MULTI)) {
+				if (nlh->nlmsg_len < NLMSG_ALIGN(sizeof(struct nlmsgerr))) {
+					errno =3D EBADMSG;
+					return -1;
+				}
+				errno =3D -(*((int *)NLMSG_DATA(nlh)));
+				return (errno =3D=3D 0) ? 0 : -1;
+			}
+			nlh =3D NLMSG_NEXT(nlh, len);
+		}
+	} while (1);
+
+	return -1; /* never here */
+}
+
+static int
+nflog_send_config_cmd(const pcap_t *handle, u_int16_t group_id, u_int8_t c=
md, u_int8_t family)
+{
+	struct nfulnl_msg_config_cmd msg;
+	struct my_nfattr nfa;
+
+	msg.command =3D cmd;
+
+	nfa.data =3D &msg;
+	nfa.nfa_type =3D NFULA_CFG_CMD;
+	nfa.nfa_len =3D sizeof(msg);
+
+	return nflog_send_config_msg(handle, family, group_id, &nfa);
+}
+
+static int=20
+nflog_send_config_mode(const pcap_t *handle, u_int16_t group_id, u_int8_t =
copy_mode, u_int32_t copy_range)
+{
+	struct nfulnl_msg_config_mode msg;
+	struct my_nfattr nfa;
+
+	msg.copy_range =3D htonl(copy_range);
+	msg.copy_mode =3D copy_mode;
+
+	nfa.data =3D &msg;
+	nfa.nfa_type =3D NFULA_CFG_MODE;
+	nfa.nfa_len =3D sizeof(msg);
+
+	return nflog_send_config_msg(handle, AF_UNSPEC, group_id, &nfa);
+}
+
+static int
+nflog_activate(pcap_t* handle)
+{
+	const char *dev =3D handle->opt.source;
+	unsigned short groups[32];
+	int group_count =3D 0;
+	int i;
+
+	if (strncmp(dev, NFLOG_IFACE, strlen(NFLOG_IFACE)) =3D=3D 0) {
+		dev +=3D strlen(NFLOG_IFACE);
+
+		/* nflog:30,33,42 looks nice, allow it */
+		if (*dev =3D=3D ':')
+			dev++;
+
+		while (*dev) {
+			long int group_id;
+			char *end_dev;
+
+			if (group_count =3D=3D 32) {
+				snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+						"Maximum 32 netfilter groups! dev: %s",=20
+						handle->opt.source);
+				return PCAP_ERROR;
+			}
+
+			group_id =3D strtol(dev, &end_dev, 0);
+			if (end_dev !=3D dev) {
+				if (group_id < 0 || group_id > 65535) {
+					snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+							"Netfilter group range from 0 to 65535 (got %ld)",
+							group_id);
+					return PCAP_ERROR;
+				}
+
+				groups[group_count++] =3D (unsigned short) group_id;
+				dev =3D end_dev;
+			}
+			if (*dev !=3D ',')
+				break;
+			dev++;
+		}
+	}
+
+	if (*dev) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+				"Can't get netfilter group(s) index from %s",=20
+				handle->opt.source);
+		return PCAP_ERROR;
+	}
+
+	/* if no groups, add default: 0 */
+	if (!group_count) {
+		groups[0] =3D 0;
+		group_count =3D 1;
+	}
+
+	/* Initialize some components of the pcap structure. */
+	handle->bufsize =3D 128 + handle->snapshot;
+	handle->offset =3D 0;
+	handle->linktype =3D DLT_NFLOG;
+	handle->read_op =3D nflog_read_linux;
+	handle->inject_op =3D netfilter_inject_linux;
+	handle->setfilter_op =3D install_bpf_program; /* no kernel filtering */
+	handle->setdirection_op =3D NULL;
+	handle->set_datalink_op =3D NULL;
+	handle->set_datalink_op =3D netfilter_set_datalink;
+	handle->getnonblock_op =3D pcap_getnonblock_fd;
+	handle->setnonblock_op =3D pcap_setnonblock_fd;
+	handle->stats_op =3D netfilter_stats_linux;
+
+	/* Create netlink socket */
+	handle->fd =3D socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER);
+	if (handle->fd < 0) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't create raw socket %d:%=
s", errno, pcap_strerror(errno));
+		return PCAP_ERROR;
+	}
+
+	handle->dlt_list =3D (u_int *) malloc(sizeof(u_int) * 2);
+	if (handle->dlt_list !=3D NULL) {
+		handle->dlt_list[0] =3D DLT_NFLOG;
+		handle->dlt_list[1] =3D DLT_IPV4;
+		handle->dlt_count =3D 2;
+	}
+
+	handle->buffer =3D malloc(handle->bufsize);
+	if (!handle->buffer) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't allocate dump buffer: =
%s", pcap_strerror(errno));
+		goto close_fail;
+	}
+
+	if (nflog_send_config_cmd(handle, 0, NFULNL_CFG_CMD_PF_UNBIND, AF_INET) <=
 0) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "NFULNL_CFG_CMD_PF_UNBIND: %s=
", pcap_strerror(errno));
+		goto close_fail;
+	}
+
+	if (nflog_send_config_cmd(handle, 0, NFULNL_CFG_CMD_PF_BIND, AF_INET) < 0=
) {
+		snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "NFULNL_CFG_CMD_PF_BIND: %s",=
 pcap_strerror(errno));
+		goto close_fail;
+	}
+
+	/* Bind socket to the nflog groups */
+	for (i =3D 0; i < group_count; i++) {
+		if (nflog_send_config_cmd(handle, groups[i], NFULNL_CFG_CMD_BIND, AF_UNS=
PEC) < 0) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "Can't listen on group group=
 index: %s", pcap_strerror(errno));
+			goto close_fail;
+		}
+
+		if (nflog_send_config_mode(handle, groups[i], NFULNL_COPY_PACKET, handle=
->snapshot) < 0) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "NFULNL_COPY_PACKET: %s", pc=
ap_strerror(errno));
+			goto close_fail;
+		}
+	}
+
+	if (handle->opt.rfmon) {
+		/*
+		 * Monitor mode doesn't apply to netfilter devices.
+		 */
+		pcap_cleanup_live_common(handle);
+		return PCAP_ERROR_RFMON_NOTSUP;
+	}
+
+	if (handle->opt.buffer_size !=3D 0) {
+		/*
+		 * Set the socket buffer size to the specified value.
+		 */
+		if (setsockopt(handle->fd, SOL_SOCKET, SO_RCVBUF, &handle->opt.buffer_si=
ze, sizeof(handle->opt.buffer_size)) =3D=3D -1) {
+			snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "SO_RCVBUF: %s", pcap_strerr=
or(errno));
+			goto close_fail;
+		}
+	}
+
+	handle->selectable_fd =3D handle->fd;
+	return 0;
+
+close_fail:
+	pcap_cleanup_live_common(handle);
+	return PCAP_ERROR;
+}
+
+pcap_t *
+nflog_create(const char *device, char *ebuf)
+{
+	pcap_t *p;
+
+	p =3D pcap_create_common(device, ebuf);
+	if (p =3D=3D NULL)
+		return (NULL);
+
+	p->activate_op =3D nflog_activate;
+	return (p);
+}
+
+int=20
+netfilter_platform_finddevs(pcap_if_t **alldevsp, char *err_str)
+{
+	pcap_if_t *found_dev =3D *alldevsp;
+	int sock;
+=09
+	sock =3D socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER);
+	if (sock < 0) {
+		/* if netlink is not supported this this is not fatal */
+		if (errno =3D=3D EAFNOSUPPORT)
+			return 0;
+		snprintf(err_str, PCAP_ERRBUF_SIZE, "Can't open netlink socket %d:%s",
+			errno, pcap_strerror(errno));
+		return -1;
+	}
+	close(sock);
+
+	if (pcap_add_if(&found_dev, NFLOG_IFACE, 0, "Linux netfilter log (NFLOG) =
interface", err_str) < 0)
+		return -1;
+	return 0;
+}
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-netfilter-li=
nux.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap-netfilter-linux.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2011 Jakub Zawadzki
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote=20
+ * products derived from this software without specific prior written=20
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Prototypes for netlink-related functions
+ */
+int netfilter_platform_finddevs(pcap_if_t **alldevsp, char *err_str);
+pcap_t *nflog_create(const char *device, char *ebuf);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-savefile.man=
file
--- a/head/contrib/libpcap/pcap-savefile.manfile	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/libpcap/pcap-savefile.manfile	Wed Jul 25 16:21:35 2012 +=
0300
@@ -1,5 +1,5 @@
 '\" t
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap-savefile.manfile.in,v 1.1.2=
.3 2008-10-24 07:34:06 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap-savefile.manfile.in,v 1.2 2=
008-10-24 07:33:50 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-stdinc.h
--- a/head/contrib/libpcap/pcap-stdinc.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-stdinc.h	Wed Jul 25 16:21:35 2012 +0300
@@ -33,13 +33,6 @@
 #ifndef pcap_stdinc_h
 #define pcap_stdinc_h
=20
-#define SIZEOF_CHAR 1
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#ifndef _MSC_EXTENSIONS
-#define SIZEOF_LONG_LONG 8
-#endif
-
 /*
  * Avoids a compiler warning in case this was already defined     =20
  * (someone defined _WINSOCKAPI_ when including 'windows.h', in order
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-tstamp.manmi=
sc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap-tstamp.manmisc	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 19=
97
+.\"	The Regents of the University of California.  All rights reserved.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP-TSTAMP 7 "22 August 2010"
+.SH NAME
+pcap-tstamp \- packet time stamps in libpcap
+.SH DESCRIPTION
+When capturing traffic, each packet is given a time stamp representing,
+for incoming packets, the arrival time of the packet and, for outgoing
+packets, the transmission time of the packet.  This time is an
+approximation of the arrival or transmission time.  If it is supplied by
+the operating system running on the host on which the capture is being
+done, there are several reasons why it might not precisely represent the
+arrival or transmission time:
+.IP
+if the time stamp is applied to the packet when the networking stack
+receives the packet, the networking stack might not see the packet until
+an interrupt is delivered for the packet or a timer event causes the
+networking device driver to poll for packets, and the time stamp might
+not be applied until the packet has had some processing done by other
+code in the networking stack, so there might be a significant delay
+between the time when the last bit of the packet is received by the
+capture device and when the networking stack time-stamps the packet;
+.IP
+the timer used to generate the time stamps might have low resolution,
+for example, it might be a timer updated once per host operating system
+timer tick, with the host operating system timer ticking once every few
+milliseconds;
+.IP
+a high-resolution timer might use a counter that runs at a rate
+dependent on the processor clock speed, and that clock speed might be
+adjusted upwards or downwards over time and the timer might not be able
+to compensate for all those adjustments;
+.IP
+the host operating system's clock might be adjusted over time to match a
+time standard to which the host is being synchronized, which might be
+done by temporarily slowing down or speeding up the clock or by making a
+single adjustment;
+.IP
+different CPU cores on a multi-core or multi-processor system might be
+running at different speeds, or might not have time counters all
+synchronized, so packets time-stamped by different cores might not have
+consistent time stamps.
+.LP
+In addition, packets time-stamped by different cores might be
+time-stamped in one order and added to the queue of packets for libpcap
+to read in another order, so time stamps might not be monotonically
+increasing.
+.LP
+Some capture devices on some platforms can provide time stamps for
+packets; those time stamps are usually high-resolution time stamps, and
+are usually applied to the packet when the first or last bit of the
+packet arrives, and are thus more accurate than time stamps provided by
+the host operating system.  Those time stamps might not, however, be
+synchronized with the host operating system's clock, so that, for
+example, the time stamp of a packet might not correspond to the time
+stamp of an event on the host triggered by the arrival of that packet.
+.LP
+Depending on the capture device and the software on the host, libpcap
+might allow different types of time stamp to be used.  The
+.BR pcap_list_tstamp_types (3PCAP)
+routine provides, for a packet capture handle created by
+.BR pcap_create (3PCAP)
+but not yet activated by
+.BR pcap_activate (3PCAP),
+a list of time stamp types supported by the capture device for that
+handle.
+The list might be empty, in which case no choice of time stamp type is
+offered for that capture device.  If the list is not empty, the
+.BR pcap_set_tstamp_type (3PCAP)
+routine can be used after a
+.B pcap_create()
+call and before a
+.B pcap_activate()
+call to specify the type of time stamp to be used on the device.
+The time stamp types are listed here; the first value is the #define to
+use in code, the second value is the value returned by
+.B pcap_tstamp_type_val_to_name()
+and accepted by
+.BR pcap_tstamp_name_to_val() .
+.RS 5
+.TP 5
+.BR PCAP_TSTAMP_HOST " - " host
+Time stamp provided by the host on which the capture is being done.  The
+precision of this time stamp is unspecified; it might or might not be
+synchronized with the host operating system's clock.
+.TP 5
+.BR PCAP_TSTAMP_HOST_LOWPREC " - " host_lowprec
+Time stamp provided by the host on which the capture is being done.=20
+This is a low-precision time stamp, synchronized with the host operating
+system's clock.
+.TP 5
+.BR PCAP_TSTAMP_HOST_HIPREC " - " host_hiprec
+Time stamp provided by the host on which the capture is being done.=20
+This is a high-precision time stamp; it might or might not be
+synchronized with the host operating system's clock.  It might be more
+expensive to fetch than
+.BR PCAP_TSTAMP_HOST_LOWPREC .
+.TP 5
+.BR PCAP_TSTAMP_ADAPTER " - " adapter
+Time stamp provided by the network adapter on which the capture is being
+done.  This is a high-precision time stamp, synchronized with the host
+operating system's clock.
+.TP 5
+.BR PCAP_TSTAMP_ADAPTER_UNSYNCED " - " adapter_unsynced
+Time stamp provided by the network adapter on which the capture is being
+done.  This is a high-precision time stamp; it is not synchronized with
+the host operating system's clock.
+.RE
+.SH SEE ALSO
+pcap_set_tstamp_type(3PCAP),
+pcap_list_tstamp_types(3PCAP),
+pcap_tstamp_type_val_to_name(3PCAP),
+pcap_tstamp_name_to_val(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-tstamp.manmi=
sc.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap-tstamp.manmisc.in	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 19=
97
+.\"	The Regents of the University of California.  All rights reserved.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP-TSTAMP @MAN_MISC_INFO@ "22 August 2010"
+.SH NAME
+pcap-tstamp \- packet time stamps in libpcap
+.SH DESCRIPTION
+When capturing traffic, each packet is given a time stamp representing,
+for incoming packets, the arrival time of the packet and, for outgoing
+packets, the transmission time of the packet.  This time is an
+approximation of the arrival or transmission time.  If it is supplied by
+the operating system running on the host on which the capture is being
+done, there are several reasons why it might not precisely represent the
+arrival or transmission time:
+.IP
+if the time stamp is applied to the packet when the networking stack
+receives the packet, the networking stack might not see the packet until
+an interrupt is delivered for the packet or a timer event causes the
+networking device driver to poll for packets, and the time stamp might
+not be applied until the packet has had some processing done by other
+code in the networking stack, so there might be a significant delay
+between the time when the last bit of the packet is received by the
+capture device and when the networking stack time-stamps the packet;
+.IP
+the timer used to generate the time stamps might have low resolution,
+for example, it might be a timer updated once per host operating system
+timer tick, with the host operating system timer ticking once every few
+milliseconds;
+.IP
+a high-resolution timer might use a counter that runs at a rate
+dependent on the processor clock speed, and that clock speed might be
+adjusted upwards or downwards over time and the timer might not be able
+to compensate for all those adjustments;
+.IP
+the host operating system's clock might be adjusted over time to match a
+time standard to which the host is being synchronized, which might be
+done by temporarily slowing down or speeding up the clock or by making a
+single adjustment;
+.IP
+different CPU cores on a multi-core or multi-processor system might be
+running at different speeds, or might not have time counters all
+synchronized, so packets time-stamped by different cores might not have
+consistent time stamps.
+.LP
+In addition, packets time-stamped by different cores might be
+time-stamped in one order and added to the queue of packets for libpcap
+to read in another order, so time stamps might not be monotonically
+increasing.
+.LP
+Some capture devices on some platforms can provide time stamps for
+packets; those time stamps are usually high-resolution time stamps, and
+are usually applied to the packet when the first or last bit of the
+packet arrives, and are thus more accurate than time stamps provided by
+the host operating system.  Those time stamps might not, however, be
+synchronized with the host operating system's clock, so that, for
+example, the time stamp of a packet might not correspond to the time
+stamp of an event on the host triggered by the arrival of that packet.
+.LP
+Depending on the capture device and the software on the host, libpcap
+might allow different types of time stamp to be used.  The
+.BR pcap_list_tstamp_types (3PCAP)
+routine provides, for a packet capture handle created by
+.BR pcap_create (3PCAP)
+but not yet activated by
+.BR pcap_activate (3PCAP),
+a list of time stamp types supported by the capture device for that
+handle.
+The list might be empty, in which case no choice of time stamp type is
+offered for that capture device.  If the list is not empty, the
+.BR pcap_set_tstamp_type (3PCAP)
+routine can be used after a
+.B pcap_create()
+call and before a
+.B pcap_activate()
+call to specify the type of time stamp to be used on the device.
+The time stamp types are listed here; the first value is the #define to
+use in code, the second value is the value returned by
+.B pcap_tstamp_type_val_to_name()
+and accepted by
+.BR pcap_tstamp_name_to_val() .
+.RS 5
+.TP 5
+.BR PCAP_TSTAMP_HOST " - " host
+Time stamp provided by the host on which the capture is being done.  The
+precision of this time stamp is unspecified; it might or might not be
+synchronized with the host operating system's clock.
+.TP 5
+.BR PCAP_TSTAMP_HOST_LOWPREC " - " host_lowprec
+Time stamp provided by the host on which the capture is being done.=20
+This is a low-precision time stamp, synchronized with the host operating
+system's clock.
+.TP 5
+.BR PCAP_TSTAMP_HOST_HIPREC " - " host_hiprec
+Time stamp provided by the host on which the capture is being done.=20
+This is a high-precision time stamp; it might or might not be
+synchronized with the host operating system's clock.  It might be more
+expensive to fetch than
+.BR PCAP_TSTAMP_HOST_LOWPREC .
+.TP 5
+.BR PCAP_TSTAMP_ADAPTER " - " adapter
+Time stamp provided by the network adapter on which the capture is being
+done.  This is a high-precision time stamp, synchronized with the host
+operating system's clock.
+.TP 5
+.BR PCAP_TSTAMP_ADAPTER_UNSYNCED " - " adapter_unsynced
+Time stamp provided by the network adapter on which the capture is being
+done.  This is a high-precision time stamp; it is not synchronized with
+the host operating system's clock.
+.RE
+.SH SEE ALSO
+pcap_set_tstamp_type(3PCAP),
+pcap_list_tstamp_types(3PCAP),
+pcap_tstamp_type_val_to_name(3PCAP),
+pcap_tstamp_name_to_val(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-usb-linux.c
--- a/head/contrib/libpcap/pcap-usb-linux.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-usb-linux.c	Wed Jul 25 16:21:35 2012 +0300
@@ -61,8 +61,15 @@
 #include <sys/ioctl.h>
 #include <sys/mman.h>
 #ifdef HAVE_LINUX_USBDEVICE_FS_H
+/*
+ * We might need <linux/compiler.h> to define __user for
+ * <linux/usbdevice_fs.h>.
+ */
+#ifdef HAVE_LINUX_COMPILER_H
+#include <linux/compiler.h>
+#endif /* HAVE_LINUX_COMPILER_H */
 #include <linux/usbdevice_fs.h>
-#endif
+#endif /* HAVE_LINUX_USBDEVICE_FS_H */
=20
 #define USB_IFACE "usbmon"
 #define USB_TEXT_DIR_OLD "/sys/kernel/debug/usbmon"
@@ -122,7 +129,6 @@
 static int usb_read_linux_bin(pcap_t *, int , pcap_handler , u_char *);
 static int usb_read_linux_mmap(pcap_t *, int , pcap_handler , u_char *);
 static int usb_inject_linux(pcap_t *, const void *, size_t);
-static int usb_setfilter_linux(pcap_t *, struct bpf_program *);
 static int usb_setdirection_linux(pcap_t *, pcap_direction_t);
 static void usb_cleanup_linux_mmap(pcap_t *);
=20
@@ -301,7 +307,7 @@
 	handle->linktype =3D DLT_USB_LINUX;
=20
 	handle->inject_op =3D usb_inject_linux;
-	handle->setfilter_op =3D usb_setfilter_linux;
+	handle->setfilter_op =3D install_bpf_program; /* no kernel filtering */
 	handle->setdirection_op =3D usb_setdirection_linux;
 	handle->set_datalink_op =3D NULL;	/* can't change data link type */
 	handle->getnonblock_op =3D pcap_getnonblock_fd;
@@ -597,12 +603,17 @@
=20
 got:
 	uhdr->data_len =3D data_len;
-	handle->md.packets_read++;
 	if (pkth.caplen > handle->snapshot)
 		pkth.caplen =3D handle->snapshot;
=20
-	callback(user, &pkth, handle->buffer);
-	return 1;
+	if (handle->fcode.bf_insns =3D=3D NULL ||
+	    bpf_filter(handle->fcode.bf_insns, handle->buffer,
+	      pkth.len, pkth.caplen)) {
+		handle->md.packets_read++;
+		callback(user, &pkth, handle->buffer);
+		return 1;
+	}
+	return 0;	/* didn't pass filter */
 }
=20
 static int
@@ -689,12 +700,6 @@
 }
=20
 static int=20
-usb_setfilter_linux(pcap_t *p, struct bpf_program *fp)
-{
-	return 0;
-}
-
-static int=20
 usb_setdirection_linux(pcap_t *p, pcap_direction_t d)
 {
 	p->direction =3D d;
@@ -767,9 +772,15 @@
 	pkth.ts.tv_sec =3D info.hdr->ts_sec;
 	pkth.ts.tv_usec =3D info.hdr->ts_usec;
=20
-	handle->md.packets_read++;
-	callback(user, &pkth, handle->buffer);
-	return 1;
+	if (handle->fcode.bf_insns =3D=3D NULL ||
+	    bpf_filter(handle->fcode.bf_insns, handle->buffer,
+	      pkth.len, pkth.caplen)) {
+		handle->md.packets_read++;
+		callback(user, &pkth, handle->buffer);
+		return 1;
+	}
+
+	return 0;	/* didn't pass filter */
 }
=20
 /*
@@ -841,9 +852,13 @@
 			pkth.ts.tv_sec =3D hdr->ts_sec;
 			pkth.ts.tv_usec =3D hdr->ts_usec;
=20
-			handle->md.packets_read++;
-			callback(user, &pkth, (u_char*) hdr);
-			packets++;
+			if (handle->fcode.bf_insns =3D=3D NULL ||
+			    bpf_filter(handle->fcode.bf_insns, (u_char*) hdr,
+			      pkth.len, pkth.caplen)) {
+				handle->md.packets_read++;
+				callback(user, &pkth, (u_char*) hdr);
+				packets++;
+			}
 		}
=20
 		/* with max_packets <=3D 0 we stop afer the first chunk*/
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap-win32.c
--- a/head/contrib/libpcap/pcap-win32.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap-win32.c	Wed Jul 25 16:21:35 2012 +0300
@@ -39,7 +39,12 @@
 #include <pcap-int.h>
 #include <Packet32.h>
 #ifdef __MINGW32__
+#ifdef __MINGW64__
+#include <ntddndis.h>
+#else  /*__MINGW64__*/
+#include <ddk/ntddndis.h>
 #include <ddk/ndis.h>
+#endif /*__MINGW64__*/
 #else /*__MINGW32__*/
 #include <ntddndis.h>
 #endif /*__MINGW32__*/
@@ -232,7 +237,7 @@
 		 * XXX A bpf_hdr matches a pcap_pkthdr.
 		 */
 		(*callback)(user, (struct pcap_pkthdr*)bp, bp + hdrlen);
-		bp +=3D BPF_WORDALIGN(caplen + hdrlen);
+		bp +=3D Packet_WORDALIGN(caplen + hdrlen);
 		if (++n >=3D cnt && cnt > 0) {
 			p->bp =3D bp;
 			p->cc =3D ep - bp;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap.3pcap
--- a/head/contrib/libpcap/pcap.3pcap	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap.3pcap	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap.3pcap.in,v 1.1.2.2 2008-10-=
21 07:44:57 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap.3pcap.in,v 1.1 2008-10-21 0=
7:33:01 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
@@ -37,22 +37,51 @@
 through this mechanism.
 It also supports saving captured packets to a ``savefile'', and reading
 packets from a ``savefile''.
+.SS Opening a capture handle for reading
+To open a handle for a live capture, given the name of the network or
+other interface on which the capture should be done, call
+.BR pcap_create (),
+set the appropriate options on the handle, and then activate it with
+.BR pcap_activate ().
 .PP
-To open a handle for a live capture, call
-.BR pcap_create() ,
-set the appropriate options on the handle, and then activate it with
-.BR pcap_activate() .
-To open a handle for a ``savefile'' with captured packets, call
-.BR pcap_open_offline() .
-Both
-.B pcap_create()
+To obtain a list of devices that can be opened for a live capture, call
+.BR pcap_findalldevs ();
+to free the list returned by
+.BR pcap_findalldevs (),
+call
+.BR pcap_freealldevs ().
+.BR pcap_lookupdev ()
+will return the first device on that list that is not a ``loopback``
+network interface.
+.PP
+To open a handle for a ``savefile'' from which to read packets, given the
+pathname of the ``savefile'', call
+.BR pcap_open_offline ();
+to set up a handle for a ``savefile'', given a
+.B "FILE\ *"
+referring to a file already opened for reading, call
+.BR pcap_fopen_offline ().
+.PP
+In order to get a ``fake''
+.B pcap_t
+for use in routines that require a
+.B pcap_t
+as an argument, such as routines to open a ``savefile'' for writing and
+to compile a filter expression, call
+.BR pcap_open_dead ().
+.PP
+.BR pcap_create (),
+.BR pcap_open_offline (),
+.BR pcap_fopen_offline (),
 and
-.B pcap_open_offline()
+.BR pcap_open_dead ()
 return a pointer to a
 .BR pcap_t ,
 which is the handle used for reading packets from the capture stream or
 the ``savefile'', and for finding out information about the capture
 stream or ``savefile''.
+To close a handle, use
+.BR pcap_close ().
 .PP
 The options that can be set on a capture handle include
 .IP "snapshot length"
@@ -75,7 +104,7 @@
 networks, to capture all the data available from the packet.
 .IP
 The snapshot length is set with
-.BR pcap_set_snaplen() .
+.BR pcap_set_snaplen ().
 .IP "promiscuous mode"
 On broadcast LANs such as Ethernet, if the network isn't switched, or if
 the adapter is connected to a "mirror port" on a switch to which all
@@ -97,7 +126,7 @@
 or NULL is supplied, the setting of promiscuous mode is ignored.
 .IP
 Promiscuous mode is set with
-.BR pcap_set_promisc() .
+.BR pcap_set_promisc ().
 .IP "monitor mode"
 On IEEE 802.11 wireless LANs, even if an adapter is in promiscuous mode,
 it will supply to the host only frames for the network with which it's
@@ -118,9 +147,9 @@
 network with another adapter.
 .IP
 Monitor mode is set with
-.BR pcap_set_rfmon() ,
+.BR pcap_set_rfmon (),
 and
-.B pcap_can_set_rfmon()
+.BR pcap_can_set_rfmon ()
 can be used to determine whether an adapter can be put into monitor
 mode.
 .IP "read timeout"
@@ -162,7 +191,7 @@
 expires even if no packets have arrived.
 .IP
 The read timeout is set with
-.BR pcap_set_timeout() .
+.BR pcap_set_timeout ().
 .IP "buffer size"
 Packets that arrive for a capture are stored in a buffer, so that they
 do not have to be read by the application as soon as they arrive.  On
@@ -175,7 +204,17 @@
 packets from being dropped.
 .IP
 The buffer size is set with
-.BR pcap_set_buffer_size() .
+.BR pcap_set_buffer_size ().
+.IP "timestamp type"
+On some platforms, the time stamp given to packets on live captures can
+come from different sources that can have different resolutions or that
+can have different relationships to the time values for the current time
+supplied by routines on the native operating system.  See
+.BR pcap-tstamp (7)
+for a list of time stamp types.
+.IP
+The time stamp type is set with
+.BR pcap_set_tstamp_type ().
 .PP
 Reading packets from a network interface may require that you have
 special privileges:
@@ -260,26 +299,193 @@
 .PP
 Reading a saved packet file doesn't require special privileges.
 .PP
-To open a ``savefile`` to which to write packets, call
-.BR pcap_dump_open() .
-It returns a pointer to a
-.BR pcap_dumper_t ,
-which is the handle used for writing packets to the ``savefile''.
+The packets read from the handle may include a ``pseudo-header''
+containing various forms of packet meta-data, and probably includes a
+link-layer header whose contents can differ for different network
+interfaces.  To determine the format of the packets supplied by the
+handle, call
+.BR pcap_datalink ();
+.I http://www.tcpdump.org/linktypes.html
+lists the values it returns and describes the packet formats that
+correspond to those values.
 .PP
+To obtain the
+.B "FILE\ *"
+corresponding to a
+.B pcap_t
+opened for a ``savefile'', call
+.BR pcap_file ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_create (3PCAP)
+get a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_activate (3PCAP)
+activate a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_findalldevs (3PCAP)
+get a list of devices that can be opened for a live capture
+.TP
+.BR pcap_freealldevs (3PCAP)
+free list of devices
+.TP
+.BR pcap_lookupdev (3PCAP)
+get first non-loopback device on that list
+.TP
+.BR pcap_open_offline (3PCAP)
+open a
+.B pcap_t
+for a ``savefile'', given a pathname
+.TP
+.BR pcap_fopen_offline (3PCAP)
+open a
+.B pcap_t
+for a ``savefile'', given a
+.B "FILE\ *"
+.TP
+.BR pcap_open_dead (3PCAP)
+create a ``fake''
+.B pcap_t
+.TP
+.BR pcap_close (3PCAP)
+close a
+.B pcap_t
+.TP
+.BR pcap_set_snaplen (3PCAP)
+set the snapshot length for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_snapshot (3PCAP)
+get the snapshot length for a
+.B pcap_t
+.TP
+.BR pcap_set_promisc (3PCAP)
+set promiscuous mode for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_rfmon (3PCAP)
+set monitor mode for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_can_set_rfmon (3PCAP)
+determine whether monitor mode can be set for a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_timeout (3PCAP)
+set read timeout for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_buffer_size (3PCAP)
+set buffer size for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_tstamp_type (3PCAP)
+set time stamp type for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_list_tstamp_types (3PCAP)
+get list of available time stamp types for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_free_tstamp_types (3PCAP)
+free list of available time stamp types
+.TP
+.BR pcap_tstamp_type_val_to_name (3PCAP)
+get name for a time stamp type
+.TP
+.BR pcap_tstamp_type_val_to_description (3PCAP)
+get description for a time stamp type
+.TP
+.BR pcap_tstamp_name_to_val (3PCAP)
+get time stamp type corresponding to a name
+.TP
+.BR pcap_datalink (3PCAP)
+get link-layer header type for a
+.B pcap_t
+.TP
+.BR pcap_file (3PCAP)
+get the
+.B "FILE\ *"
+for a
+.B pcap_t
+opened for a ``savefile''
+.TP
+.BR pcap_is_swapped (3PCAP)
+determine whether a ``savefile'' being read came from a machine with the
+opposite byte order
+.TP
+.BR pcap_major_version (3PCAP)
+.PD 0
+.TP
+.BR pcap_minor_version (3PCAP)
+get the major and minor version of the file format version for a
+``savefile''
+.PD
+.RE
+.SS Selecting a link-layer header type for a live capture
+Some devices may provide more than one link-layer header type.  To
+obtain a list of all link-layer header types provided by a device, call
+.BR pcap_list_datalinks ()
+on an activated
+.B pcap_t
+for the device.
+To free a list of link-layer header types, call
+.BR pcap_free_datalinks ().
+To set the link-layer header type for a device, call
+.BR pcap_set_datalink ().
+This should be done after the device has been activated but before any
+packets are read and before any filters are compiled or installed.
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_list_datalinks (3PCAP)
+get a list of link-layer header types for a device
+.TP
+.BR pcap_free_datalinks (3PCAP)
+free list of link-layer header types
+.TP
+.BR pcap_set_datalink (3PCAP)
+set link-layer header type for a device
+.TP
+.BR pcap_datalink_val_to_name (3PCAP)
+get name for a link-layer header type
+.TP
+.BR pcap_datalink_val_to_description (3PCAP)
+get description for a link-layer header type
+.TP
+.BR pcap_datalink_name_to_val (3PCAP)
+get link-layer header type corresponding to a name
+.RE
+.SS Reading packets
 Packets are read with
-.B pcap_dispatch()
+.BR pcap_dispatch ()
 or
-.BR pcap_loop() ,
+.BR pcap_loop (),
 which process one or more packets, calling a callback routine for each
 packet, or with
-.B pcap_next()
+.BR pcap_next ()
 or
-.BR pcap_next_ex() ,
+.BR pcap_next_ex (),
 which return the next packet.
 The callback for
-.B pcap_dispatch()
+.BR pcap_dispatch ()
 and
-.BR pcap_loop()
+.BR pcap_loop ()
 is supplied a pointer to a
 .IR "struct pcap_pkthdr" ,
 which includes the following members:
@@ -304,9 +510,9 @@
 is larger than the maximum number of bytes to capture).
 .RE
 .PP
-.B pcap_next_ex()
+.BR pcap_next_ex ()
 supplies that pointer through a pointer argument.
-.B pcap_next()
+.BR pcap_next ()
 is passed an argument that points to a
 .I struct pcap_pkthdr
 structure, and fills it in.
@@ -323,15 +529,306 @@
 for
 .I snaplen
 in your call to
-.B pcap_open_live()
+.BR pcap_set_snaplen ()
 that is sufficiently large to get all of the packet's data - a value of
 65535 should be sufficient on most if not all networks).  When reading
 from a ``savefile'', the snapshot length specified when the capture was
 performed will limit the amount of packet data available.
-.B pcap_next()
+.BR pcap_next ()
 returns that pointer;
-.B pcap_next_ex()
+.BR pcap_next_ex ()
 supplies that pointer through a pointer argument.
+.PP
+To force the loop in
+.BR pcap_dispatch ()
+or
+.BR pcap_loop ()
+to terminate, call
+.BR pcap_breakloop ().
+.PP
+By default, when reading packets from an interface opened for a live
+capture,
+.BR pcap_dispatch (),
+.BR pcap_next (),
+and
+.BR pcap_next_ex ()
+will, if no packets are currently available to be read, block waiting
+for packets to become available.  On some, but
+.I not
+all, platforms, if a read timeout was specified, the wait will terminate
+after the read timeout expires; applications should be prepared for
+this, as it happens on some platforms, but should not rely on it, as it
+does not happen on other platforms.
+.PP
+A handle can be put into ``non-blocking mode'', so that those routines
+will, rather than blocking, return an indication that no packets are
+available to read.  Call
+.BR pcap_setnonblock ()
+to put a handle into non-blocking mode or to take it out of non-blocking
+mode; call
+.BR pcap_getnonblock ()
+to determine whether a handle is in non-blocking mode.  Note that
+non-blocking mode does not work correctly in Mac OS X 10.6.
+.PP
+Non-blocking mode is often combined with routines such as
+.BR select (2)
+or
+.BR poll (2)
+or other routines a platform offers to wait for the availability of data
+on any of a set of descriptors.  To obtain, for a handle, a descriptor
+that can be used in those routines, call
+.BR pcap_get_selectable_fd ().
+Not all handles have such a descriptor available;
+.BR pcap_get_selectable_fd ()
+will return \-1 if no such descriptor exists.  In addition, for various
+reasons, one or more of those routines will not work properly with the
+descriptor; the documentation for
+.BR pcap_get_selectable_fd ()
+gives details.
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dispatch (3PCAP)
+read a bufferful of packets from a
+.B pcap_t
+open for a live capture or the full set of packets from a
+.B pcap_t
+open for a ``savefile''
+.TP
+.BR pcap_loop (3PCAP)
+read packets from a
+.B pcap_t
+until an interrupt or error occurs
+.TP
+.BR pcap_next (3PCAP)
+read the next packet from a
+.B pcap_t
+without an indication whether an error occurred
+.TP
+.BR pcap_next_ex (3PCAP)
+read the next packet from a
+.B pcap_t
+with an error indication on an error
+.TP
+.BR pcap_breakloop (3PCAP)
+prematurely terminate the loop in
+.BR pcap_dispatch ()
+or
+.BR pcap_loop ()
+.TP
+.BR pcap_setnonblock (3PCAP)
+set or clear non-blocking mode on a
+.B pcap_t
+.TP
+.BR pcap_getnonblock (3PCAP)
+get the state of non-blocking mode for a
+.B pcap_t
+.TP
+.BR pcap_get_selectable_fd (3PCAP)
+attempt to get a descriptor for a
+.B pcap_t
+that can be used in calls such as
+.BR select (2)
+and
+.BR poll (2)
+.RE
+.SS Filters
+In order to cause only certain packets to be returned when reading
+packets, a filter can be set on a handle.  For a live capture, the
+filtering will be performed in kernel mode, if possible, to avoid
+copying ``uninteresting'' packets from the kernel to user mode.
+.PP
+A filter can be specified as a text string; the syntax and semantics of
+the string are as described by
+.BR pcap-filter (7).
+A filter string is compiled into a program in a pseudo-machine-language
+by
+.BR pcap_compile ()
+and the resulting program can be made a filter for a handle with
+.BR pcap_setfilter ().
+The result of
+.BR pcap_compile ()
+can be freed with a call to
+.BR pcap_freecode ().
+.BR pcap_compile ()
+may require a network mask for certain expressions in the filter string;
+.BR pcap_lookupnet ()
+can be used to find the network address and network mask for a given
+capture device.
+.PP
+A compiled filter can also be applied directly to a packet that has been
+read using
+.BR pcap_offline_filter ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_compile (3PCAP)
+compile filter expression to a pseudo-machine-language code program
+.TP
+.BR pcap_freecode (3PCAP)
+free a filter program
+.TP
+.BR pcap_setfilter (3PCAP)
+set filter for a
+.B pcap_t
+.TP
+.BR pcap_lookupnet (3PCAP)
+get network address and network mask for a capture device
+.TP
+.BR pcap_offline_filter (3PCAP)
+apply a filter program to a packet
+.RE
+.SS Incoming and outgoing packets
+By default, libpcap will attempt to capture both packets sent by the
+machine and packets received by the machine.  To limit it to capturing
+only packets received by the machine or, if possible, only packets sent
+by the machine, call
+.BR pcap_setdirection ().
+.TP
+.BR Routines
+.RS
+.TP
+.BR pcap_setdirection (3PCAP)
+specify whether to capture incoming packets, outgoing packets, or both
+.RE
+.SS Capture statistics
+To get statistics about packets received and dropped in a live capture,
+call
+.BR pcap_stats ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_stats (3PCAP)
+get capture statistics
+.RE
+.SS Opening a handle for writing captured packets
+To open a ``savefile`` to which to write packets, given the pathname the
+``savefile'' should have, call
+.BR pcap_dump_open ().
+To open a ``savefile`` to which to write packets, given the pathname the
+``savefile'' should have, call
+.BR pcap_dump_open ();
+to set up a handle for a ``savefile'', given a
+.B "FILE\ *"
+referring to a file already opened for writing, call
+.BR pcap_dump_fopen ().
+They each return pointers to a
+.BR pcap_dumper_t ,
+which is the handle used for writing packets to the ``savefile''.  If it
+succeeds, it will have created the file if it doesn't exist and
+truncated the file if it does exist.
+To close a
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump_close ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dump_open (3PCAP)
+open a
+.B pcap_dumper_t
+for a ``savefile``, given a pathname
+.TP
+.BR pcap_dump_fopen (3PCAP)
+open a
+.B pcap_dumper_t
+for a ``savefile``, given a
+.B "FILE\ *"
+.TP
+.BR pcap_dump_close (3PCAP)
+close a
+.B pcap_dumper_t
+.TP
+.BR pcap_dump_file (3PCAP)
+get the
+.B "FILE\ *"
+for a
+.B pcap_dumper_t
+opened for a ``savefile''
+.RE
+.SS Writing packets
+To write a packet to a
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump ().
+Packets written with
+.BR pcap_dump ()
+may be buffered, rather than being immediately written to the
+``savefile''.  Closing the
+.B pcap_dumper_t
+will cause all buffered-but-not-yet-written packets to be written to the
+``savefile''.
+To force all packets written to the
+.BR pcap_dumper_t ,
+and not yet written to the ``savefile'' because they're buffered by the
+.BR pcap_dumper_t ,
+to be written to the ``savefile'', without closing the
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump_flush ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dump (3PCAP)
+write packet to a
+.B pcap_dumper_t
+.TP
+.BR pcap_dump_flush (3PCAP)
+flush buffered packets written to a
+.B pcap_dumper_t
+to the ``savefile''
+.TP
+.BR pcap_dump_ftell (3PCAP)
+get current file position for a
+.B pcap_dumper_t
+.RE
+.SS Injecting packets
+If you have the required privileges, you can inject packets onto a
+network with a
+.B pcap_t
+for a live capture, using
+.BR pcap_inject ()
+or
+.BR pcap_sendpacket ().
+(The two routines exist for compatibility with both OpenBSD and WinPcap;
+they perform the same function, but have different return values.)
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_inject (3PCAP)
+.PD 0
+.TP
+.BR pcap_sendpacket (3PCAP)
+transmit a packet
+.PD
+.RE
+.SS Reporting errors
+Some routines return error or warning status codes; to convert them to a
+string, use
+.BR pcap_statustostr ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_statustostr (3PCAP)
+get a string for an error or warning status code
+.RE
+.SS Getting library version information
+To get a string giving version information about libpcap, call
+.BR pcap_library_version ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_library_version (3PCAP)
+get library version string
+.RE
 .SH BACKWARDS COMPATIBILITY
 .PP
 In versions of libpcap prior to 1.0, the
@@ -346,18 +843,18 @@
 for you, rather than including
 .BR <pcap/pcap.h> .
 .PP
-.B pcap_create()
+.BR pcap_create ()
 and
-.B pcap_activate()
+.BR pcap_activate ()
 were not available in versions of libpcap prior to 1.0; if you are
 writing an application that must work on versions of libpcap prior to
 1.0, either use
-.B pcap_open_live()
+.BR pcap_open_live ()
 to get a handle for a live capture or, if you want to be able to use the
 additional capabilities offered by using
-.B pcap_create()
+.BR pcap_create ()
 and
-.BR pcap_activate() ,
+.BR pcap_activate (),
 use an
 .BR autoconf (1)
 script or some other configuration script to check whether the libpcap
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap.3pcap.in
--- a/head/contrib/libpcap/pcap.3pcap.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap.3pcap.in	Wed Jul 25 16:21:35 2012 +0300
@@ -37,22 +37,51 @@
 through this mechanism.
 It also supports saving captured packets to a ``savefile'', and reading
 packets from a ``savefile''.
+.SS Opening a capture handle for reading
+To open a handle for a live capture, given the name of the network or
+other interface on which the capture should be done, call
+.BR pcap_create (),
+set the appropriate options on the handle, and then activate it with
+.BR pcap_activate ().
 .PP
-To open a handle for a live capture, call
-.BR pcap_create() ,
-set the appropriate options on the handle, and then activate it with
-.BR pcap_activate() .
-To open a handle for a ``savefile'' with captured packets, call
-.BR pcap_open_offline() .
-Both
-.B pcap_create()
+To obtain a list of devices that can be opened for a live capture, call
+.BR pcap_findalldevs ();
+to free the list returned by
+.BR pcap_findalldevs (),
+call
+.BR pcap_freealldevs ().
+.BR pcap_lookupdev ()
+will return the first device on that list that is not a ``loopback``
+network interface.
+.PP
+To open a handle for a ``savefile'' from which to read packets, given the
+pathname of the ``savefile'', call
+.BR pcap_open_offline ();
+to set up a handle for a ``savefile'', given a
+.B "FILE\ *"
+referring to a file already opened for reading, call
+.BR pcap_fopen_offline ().
+.PP
+In order to get a ``fake''
+.B pcap_t
+for use in routines that require a
+.B pcap_t
+as an argument, such as routines to open a ``savefile'' for writing and
+to compile a filter expression, call
+.BR pcap_open_dead ().
+.PP
+.BR pcap_create (),
+.BR pcap_open_offline (),
+.BR pcap_fopen_offline (),
 and
-.B pcap_open_offline()
+.BR pcap_open_dead ()
 return a pointer to a
 .BR pcap_t ,
 which is the handle used for reading packets from the capture stream or
 the ``savefile'', and for finding out information about the capture
 stream or ``savefile''.
+To close a handle, use
+.BR pcap_close ().
 .PP
 The options that can be set on a capture handle include
 .IP "snapshot length"
@@ -75,7 +104,7 @@
 networks, to capture all the data available from the packet.
 .IP
 The snapshot length is set with
-.BR pcap_set_snaplen() .
+.BR pcap_set_snaplen ().
 .IP "promiscuous mode"
 On broadcast LANs such as Ethernet, if the network isn't switched, or if
 the adapter is connected to a "mirror port" on a switch to which all
@@ -97,7 +126,7 @@
 or NULL is supplied, the setting of promiscuous mode is ignored.
 .IP
 Promiscuous mode is set with
-.BR pcap_set_promisc() .
+.BR pcap_set_promisc ().
 .IP "monitor mode"
 On IEEE 802.11 wireless LANs, even if an adapter is in promiscuous mode,
 it will supply to the host only frames for the network with which it's
@@ -118,9 +147,9 @@
 network with another adapter.
 .IP
 Monitor mode is set with
-.BR pcap_set_rfmon() ,
+.BR pcap_set_rfmon (),
 and
-.B pcap_can_set_rfmon()
+.BR pcap_can_set_rfmon ()
 can be used to determine whether an adapter can be put into monitor
 mode.
 .IP "read timeout"
@@ -162,7 +191,7 @@
 expires even if no packets have arrived.
 .IP
 The read timeout is set with
-.BR pcap_set_timeout() .
+.BR pcap_set_timeout ().
 .IP "buffer size"
 Packets that arrive for a capture are stored in a buffer, so that they
 do not have to be read by the application as soon as they arrive.  On
@@ -175,7 +204,17 @@
 packets from being dropped.
 .IP
 The buffer size is set with
-.BR pcap_set_buffer_size() .
+.BR pcap_set_buffer_size ().
+.IP "timestamp type"
+On some platforms, the time stamp given to packets on live captures can
+come from different sources that can have different resolutions or that
+can have different relationships to the time values for the current time
+supplied by routines on the native operating system.  See
+.BR pcap-tstamp (@MAN_MISC_INFO@)
+for a list of time stamp types.
+.IP
+The time stamp type is set with
+.BR pcap_set_tstamp_type ().
 .PP
 Reading packets from a network interface may require that you have
 special privileges:
@@ -260,26 +299,193 @@
 .PP
 Reading a saved packet file doesn't require special privileges.
 .PP
-To open a ``savefile`` to which to write packets, call
-.BR pcap_dump_open() .
-It returns a pointer to a
-.BR pcap_dumper_t ,
-which is the handle used for writing packets to the ``savefile''.
+The packets read from the handle may include a ``pseudo-header''
+containing various forms of packet meta-data, and probably includes a
+link-layer header whose contents can differ for different network
+interfaces.  To determine the format of the packets supplied by the
+handle, call
+.BR pcap_datalink ();
+.I http://www.tcpdump.org/linktypes.html
+lists the values it returns and describes the packet formats that
+correspond to those values.
 .PP
+To obtain the
+.B "FILE\ *"
+corresponding to a
+.B pcap_t
+opened for a ``savefile'', call
+.BR pcap_file ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_create (3PCAP)
+get a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_activate (3PCAP)
+activate a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_findalldevs (3PCAP)
+get a list of devices that can be opened for a live capture
+.TP
+.BR pcap_freealldevs (3PCAP)
+free list of devices
+.TP
+.BR pcap_lookupdev (3PCAP)
+get first non-loopback device on that list
+.TP
+.BR pcap_open_offline (3PCAP)
+open a
+.B pcap_t
+for a ``savefile'', given a pathname
+.TP
+.BR pcap_fopen_offline (3PCAP)
+open a
+.B pcap_t
+for a ``savefile'', given a
+.B "FILE\ *"
+.TP
+.BR pcap_open_dead (3PCAP)
+create a ``fake''
+.B pcap_t
+.TP
+.BR pcap_close (3PCAP)
+close a
+.B pcap_t
+.TP
+.BR pcap_set_snaplen (3PCAP)
+set the snapshot length for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_snapshot (3PCAP)
+get the snapshot length for a
+.B pcap_t
+.TP
+.BR pcap_set_promisc (3PCAP)
+set promiscuous mode for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_rfmon (3PCAP)
+set monitor mode for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_can_set_rfmon (3PCAP)
+determine whether monitor mode can be set for a
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_timeout (3PCAP)
+set read timeout for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_buffer_size (3PCAP)
+set buffer size for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_set_tstamp_type (3PCAP)
+set time stamp type for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_list_tstamp_types (3PCAP)
+get list of available time stamp types for a not-yet-activated
+.B pcap_t
+for live capture
+.TP
+.BR pcap_free_tstamp_types (3PCAP)
+free list of available time stamp types
+.TP
+.BR pcap_tstamp_type_val_to_name (3PCAP)
+get name for a time stamp type
+.TP
+.BR pcap_tstamp_type_val_to_description (3PCAP)
+get description for a time stamp type
+.TP
+.BR pcap_tstamp_name_to_val (3PCAP)
+get time stamp type corresponding to a name
+.TP
+.BR pcap_datalink (3PCAP)
+get link-layer header type for a
+.B pcap_t
+.TP
+.BR pcap_file (3PCAP)
+get the
+.B "FILE\ *"
+for a
+.B pcap_t
+opened for a ``savefile''
+.TP
+.BR pcap_is_swapped (3PCAP)
+determine whether a ``savefile'' being read came from a machine with the
+opposite byte order
+.TP
+.BR pcap_major_version (3PCAP)
+.PD 0
+.TP
+.BR pcap_minor_version (3PCAP)
+get the major and minor version of the file format version for a
+``savefile''
+.PD
+.RE
+.SS Selecting a link-layer header type for a live capture
+Some devices may provide more than one link-layer header type.  To
+obtain a list of all link-layer header types provided by a device, call
+.BR pcap_list_datalinks ()
+on an activated
+.B pcap_t
+for the device.
+To free a list of link-layer header types, call
+.BR pcap_free_datalinks ().
+To set the link-layer header type for a device, call
+.BR pcap_set_datalink ().
+This should be done after the device has been activated but before any
+packets are read and before any filters are compiled or installed.
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_list_datalinks (3PCAP)
+get a list of link-layer header types for a device
+.TP
+.BR pcap_free_datalinks (3PCAP)
+free list of link-layer header types
+.TP
+.BR pcap_set_datalink (3PCAP)
+set link-layer header type for a device
+.TP
+.BR pcap_datalink_val_to_name (3PCAP)
+get name for a link-layer header type
+.TP
+.BR pcap_datalink_val_to_description (3PCAP)
+get description for a link-layer header type
+.TP
+.BR pcap_datalink_name_to_val (3PCAP)
+get link-layer header type corresponding to a name
+.RE
+.SS Reading packets
 Packets are read with
-.B pcap_dispatch()
+.BR pcap_dispatch ()
 or
-.BR pcap_loop() ,
+.BR pcap_loop (),
 which process one or more packets, calling a callback routine for each
 packet, or with
-.B pcap_next()
+.BR pcap_next ()
 or
-.BR pcap_next_ex() ,
+.BR pcap_next_ex (),
 which return the next packet.
 The callback for
-.B pcap_dispatch()
+.BR pcap_dispatch ()
 and
-.BR pcap_loop()
+.BR pcap_loop ()
 is supplied a pointer to a
 .IR "struct pcap_pkthdr" ,
 which includes the following members:
@@ -304,9 +510,9 @@
 is larger than the maximum number of bytes to capture).
 .RE
 .PP
-.B pcap_next_ex()
+.BR pcap_next_ex ()
 supplies that pointer through a pointer argument.
-.B pcap_next()
+.BR pcap_next ()
 is passed an argument that points to a
 .I struct pcap_pkthdr
 structure, and fills it in.
@@ -323,15 +529,306 @@
 for
 .I snaplen
 in your call to
-.B pcap_open_live()
+.BR pcap_set_snaplen ()
 that is sufficiently large to get all of the packet's data - a value of
 65535 should be sufficient on most if not all networks).  When reading
 from a ``savefile'', the snapshot length specified when the capture was
 performed will limit the amount of packet data available.
-.B pcap_next()
+.BR pcap_next ()
 returns that pointer;
-.B pcap_next_ex()
+.BR pcap_next_ex ()
 supplies that pointer through a pointer argument.
+.PP
+To force the loop in
+.BR pcap_dispatch ()
+or
+.BR pcap_loop ()
+to terminate, call
+.BR pcap_breakloop ().
+.PP
+By default, when reading packets from an interface opened for a live
+capture,
+.BR pcap_dispatch (),
+.BR pcap_next (),
+and
+.BR pcap_next_ex ()
+will, if no packets are currently available to be read, block waiting
+for packets to become available.  On some, but
+.I not
+all, platforms, if a read timeout was specified, the wait will terminate
+after the read timeout expires; applications should be prepared for
+this, as it happens on some platforms, but should not rely on it, as it
+does not happen on other platforms.
+.PP
+A handle can be put into ``non-blocking mode'', so that those routines
+will, rather than blocking, return an indication that no packets are
+available to read.  Call
+.BR pcap_setnonblock ()
+to put a handle into non-blocking mode or to take it out of non-blocking
+mode; call
+.BR pcap_getnonblock ()
+to determine whether a handle is in non-blocking mode.  Note that
+non-blocking mode does not work correctly in Mac OS X 10.6.
+.PP
+Non-blocking mode is often combined with routines such as
+.BR select (2)
+or
+.BR poll (2)
+or other routines a platform offers to wait for the availability of data
+on any of a set of descriptors.  To obtain, for a handle, a descriptor
+that can be used in those routines, call
+.BR pcap_get_selectable_fd ().
+Not all handles have such a descriptor available;
+.BR pcap_get_selectable_fd ()
+will return \-1 if no such descriptor exists.  In addition, for various
+reasons, one or more of those routines will not work properly with the
+descriptor; the documentation for
+.BR pcap_get_selectable_fd ()
+gives details.
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dispatch (3PCAP)
+read a bufferful of packets from a
+.B pcap_t
+open for a live capture or the full set of packets from a
+.B pcap_t
+open for a ``savefile''
+.TP
+.BR pcap_loop (3PCAP)
+read packets from a
+.B pcap_t
+until an interrupt or error occurs
+.TP
+.BR pcap_next (3PCAP)
+read the next packet from a
+.B pcap_t
+without an indication whether an error occurred
+.TP
+.BR pcap_next_ex (3PCAP)
+read the next packet from a
+.B pcap_t
+with an error indication on an error
+.TP
+.BR pcap_breakloop (3PCAP)
+prematurely terminate the loop in
+.BR pcap_dispatch ()
+or
+.BR pcap_loop ()
+.TP
+.BR pcap_setnonblock (3PCAP)
+set or clear non-blocking mode on a
+.B pcap_t
+.TP
+.BR pcap_getnonblock (3PCAP)
+get the state of non-blocking mode for a
+.B pcap_t
+.TP
+.BR pcap_get_selectable_fd (3PCAP)
+attempt to get a descriptor for a
+.B pcap_t
+that can be used in calls such as
+.BR select (2)
+and
+.BR poll (2)
+.RE
+.SS Filters
+In order to cause only certain packets to be returned when reading
+packets, a filter can be set on a handle.  For a live capture, the
+filtering will be performed in kernel mode, if possible, to avoid
+copying ``uninteresting'' packets from the kernel to user mode.
+.PP
+A filter can be specified as a text string; the syntax and semantics of
+the string are as described by
+.BR pcap-filter (@MAN_MISC_INFO@).
+A filter string is compiled into a program in a pseudo-machine-language
+by
+.BR pcap_compile ()
+and the resulting program can be made a filter for a handle with
+.BR pcap_setfilter ().
+The result of
+.BR pcap_compile ()
+can be freed with a call to
+.BR pcap_freecode ().
+.BR pcap_compile ()
+may require a network mask for certain expressions in the filter string;
+.BR pcap_lookupnet ()
+can be used to find the network address and network mask for a given
+capture device.
+.PP
+A compiled filter can also be applied directly to a packet that has been
+read using
+.BR pcap_offline_filter ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_compile (3PCAP)
+compile filter expression to a pseudo-machine-language code program
+.TP
+.BR pcap_freecode (3PCAP)
+free a filter program
+.TP
+.BR pcap_setfilter (3PCAP)
+set filter for a
+.B pcap_t
+.TP
+.BR pcap_lookupnet (3PCAP)
+get network address and network mask for a capture device
+.TP
+.BR pcap_offline_filter (3PCAP)
+apply a filter program to a packet
+.RE
+.SS Incoming and outgoing packets
+By default, libpcap will attempt to capture both packets sent by the
+machine and packets received by the machine.  To limit it to capturing
+only packets received by the machine or, if possible, only packets sent
+by the machine, call
+.BR pcap_setdirection ().
+.TP
+.BR Routines
+.RS
+.TP
+.BR pcap_setdirection (3PCAP)
+specify whether to capture incoming packets, outgoing packets, or both
+.RE
+.SS Capture statistics
+To get statistics about packets received and dropped in a live capture,
+call
+.BR pcap_stats ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_stats (3PCAP)
+get capture statistics
+.RE
+.SS Opening a handle for writing captured packets
+To open a ``savefile`` to which to write packets, given the pathname the
+``savefile'' should have, call
+.BR pcap_dump_open ().
+To open a ``savefile`` to which to write packets, given the pathname the
+``savefile'' should have, call
+.BR pcap_dump_open ();
+to set up a handle for a ``savefile'', given a
+.B "FILE\ *"
+referring to a file already opened for writing, call
+.BR pcap_dump_fopen ().
+They each return pointers to a
+.BR pcap_dumper_t ,
+which is the handle used for writing packets to the ``savefile''.  If it
+succeeds, it will have created the file if it doesn't exist and
+truncated the file if it does exist.
+To close a
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump_close ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dump_open (3PCAP)
+open a
+.B pcap_dumper_t
+for a ``savefile``, given a pathname
+.TP
+.BR pcap_dump_fopen (3PCAP)
+open a
+.B pcap_dumper_t
+for a ``savefile``, given a
+.B "FILE\ *"
+.TP
+.BR pcap_dump_close (3PCAP)
+close a
+.B pcap_dumper_t
+.TP
+.BR pcap_dump_file (3PCAP)
+get the
+.B "FILE\ *"
+for a
+.B pcap_dumper_t
+opened for a ``savefile''
+.RE
+.SS Writing packets
+To write a packet to a
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump ().
+Packets written with
+.BR pcap_dump ()
+may be buffered, rather than being immediately written to the
+``savefile''.  Closing the
+.B pcap_dumper_t
+will cause all buffered-but-not-yet-written packets to be written to the
+``savefile''.
+To force all packets written to the
+.BR pcap_dumper_t ,
+and not yet written to the ``savefile'' because they're buffered by the
+.BR pcap_dumper_t ,
+to be written to the ``savefile'', without closing the
+.BR pcap_dumper_t ,
+call
+.BR pcap_dump_flush ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_dump (3PCAP)
+write packet to a
+.B pcap_dumper_t
+.TP
+.BR pcap_dump_flush (3PCAP)
+flush buffered packets written to a
+.B pcap_dumper_t
+to the ``savefile''
+.TP
+.BR pcap_dump_ftell (3PCAP)
+get current file position for a
+.B pcap_dumper_t
+.RE
+.SS Injecting packets
+If you have the required privileges, you can inject packets onto a
+network with a
+.B pcap_t
+for a live capture, using
+.BR pcap_inject ()
+or
+.BR pcap_sendpacket ().
+(The two routines exist for compatibility with both OpenBSD and WinPcap;
+they perform the same function, but have different return values.)
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_inject (3PCAP)
+.PD 0
+.TP
+.BR pcap_sendpacket (3PCAP)
+transmit a packet
+.PD
+.RE
+.SS Reporting errors
+Some routines return error or warning status codes; to convert them to a
+string, use
+.BR pcap_statustostr ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_statustostr (3PCAP)
+get a string for an error or warning status code
+.RE
+.SS Getting library version information
+To get a string giving version information about libpcap, call
+.BR pcap_library_version ().
+.TP
+.B Routines
+.RS
+.TP
+.BR pcap_library_version (3PCAP)
+get library version string
+.RE
 .SH BACKWARDS COMPATIBILITY
 .PP
 In versions of libpcap prior to 1.0, the
@@ -346,18 +843,18 @@
 for you, rather than including
 .BR <pcap/pcap.h> .
 .PP
-.B pcap_create()
+.BR pcap_create ()
 and
-.B pcap_activate()
+.BR pcap_activate ()
 were not available in versions of libpcap prior to 1.0; if you are
 writing an application that must work on versions of libpcap prior to
 1.0, either use
-.B pcap_open_live()
+.BR pcap_open_live ()
 to get a handle for a live capture or, if you want to be able to use the
 additional capabilities offered by using
-.B pcap_create()
+.BR pcap_create ()
 and
-.BR pcap_activate() ,
+.BR pcap_activate (),
 use an
 .BR autoconf (1)
 script or some other configuration script to check whether the libpcap
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap.c
--- a/head/contrib/libpcap/pcap.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap.c	Wed Jul 25 16:21:35 2012 +0300
@@ -58,7 +58,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#if !defined(_MSC_VER) && !defined(__BORLANDC__)
+#if !defined(_MSC_VER) && !defined(__BORLANDC__) && !defined(__MINGW32__)
 #include <unistd.h>
 #endif
 #include <fcntl.h>
@@ -83,7 +83,7 @@
 pcap_not_initialized(pcap_t *pcap)
 {
 	/* this means 'not initialized' */
-	return PCAP_ERROR_NOT_ACTIVATED;
+	return (PCAP_ERROR_NOT_ACTIVATED);
 }
=20
 /*
@@ -106,6 +106,56 @@
 }
=20
 /*
+ * Sets *tstamp_typesp to point to an array 1 or more supported time stamp
+ * types; the return value is the number of supported time stamp types.
+ * The list should be freed by a call to pcap_free_tstamp_types() when
+ * you're done with it.
+ *
+ * A return value of 0 means "you don't get a choice of time stamp type",
+ * in which case *tstamp_typesp is set to null.
+ *
+ * PCAP_ERROR is returned on error.
+ */
+int
+pcap_list_tstamp_types(pcap_t *p, int **tstamp_typesp)
+{
+	if (p->tstamp_type_count =3D=3D 0) {
+		/*
+		 * We don't support multiple time stamp types.
+		 */
+		*tstamp_typesp =3D NULL;
+	} else {
+		*tstamp_typesp =3D (int*)calloc(sizeof(**tstamp_typesp),
+		    p->tstamp_type_count);
+		if (*tstamp_typesp =3D=3D NULL) {
+			(void)snprintf(p->errbuf, sizeof(p->errbuf),
+			    "malloc: %s", pcap_strerror(errno));
+			return (PCAP_ERROR);
+		}
+		(void)memcpy(*tstamp_typesp, p->tstamp_type_list,
+		    sizeof(**tstamp_typesp) * p->tstamp_type_count);
+	}
+	return (p->tstamp_type_count);
+}
+
+/*
+ * In Windows, you might have a library built with one version of the
+ * C runtime library and an application built with another version of
+ * the C runtime library, which means that the library might use one
+ * version of malloc() and free() and the application might use another
+ * version of malloc() and free().  If so, that means something
+ * allocated by the library cannot be freed by the application, so we
+ * need to have a pcap_free_tstamp_types() routine to free up the list
+ * allocated by pcap_list_tstamp_types(), even though it's just a wrapper
+ * around free().
+ */
+void
+pcap_free_tstamp_types(int *tstamp_type_list)
+{
+	free(tstamp_type_list);
+}
+
+/*
  * Default one-shot callback; overridden for capture types where the
  * packet data cannot be guaranteed to be available after the callback
  * returns, so that a copy must be made.
@@ -150,7 +200,8 @@
 		int status;
=20
 		/* We are on an offline capture */
-		status =3D pcap_offline_read(p, 1, pcap_oneshot, (u_char *)&s);
+		status =3D pcap_offline_read(p, 1, p->oneshot_callback,
+		    (u_char *)&s);
=20
 		/*
 		 * Return codes for pcap_offline_read() are:
@@ -179,7 +230,7 @@
 	 * The first one ('0') conflicts with the return code of 0 from
 	 * pcap_offline_read() meaning "end of file".
 	*/
-	return (p->read_op(p, 1, pcap_oneshot, (u_char *)&s));
+	return (p->read_op(p, 1, p->oneshot_callback, (u_char *)&s));
 }
=20
 static void
@@ -259,6 +310,7 @@
 	pcap_set_snaplen(p, 65535);	/* max packet size */
 	p->opt.promisc =3D 0;
 	p->opt.buffer_size =3D 0;
+	p->opt.tstamp_type =3D -1;	/* default to not setting time stamp type */
 	return (p);
 }
=20
@@ -268,54 +320,89 @@
 	if (p->activated) {
 		snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "can't perform "
 			" operation on activated capture");
-		return -1;
+		return (-1);
 	}
-	return 0;
+	return (0);
 }
=20
 int
 pcap_set_snaplen(pcap_t *p, int snaplen)
 {
 	if (pcap_check_activated(p))
-		return PCAP_ERROR_ACTIVATED;
+		return (PCAP_ERROR_ACTIVATED);
 	p->snapshot =3D snaplen;
-	return 0;
+	return (0);
 }
=20
 int
 pcap_set_promisc(pcap_t *p, int promisc)
 {
 	if (pcap_check_activated(p))
-		return PCAP_ERROR_ACTIVATED;
+		return (PCAP_ERROR_ACTIVATED);
 	p->opt.promisc =3D promisc;
-	return 0;
+	return (0);
 }
=20
 int
 pcap_set_rfmon(pcap_t *p, int rfmon)
 {
 	if (pcap_check_activated(p))
-		return PCAP_ERROR_ACTIVATED;
+		return (PCAP_ERROR_ACTIVATED);
 	p->opt.rfmon =3D rfmon;
-	return 0;
+	return (0);
 }
=20
 int
 pcap_set_timeout(pcap_t *p, int timeout_ms)
 {
 	if (pcap_check_activated(p))
-		return PCAP_ERROR_ACTIVATED;
+		return (PCAP_ERROR_ACTIVATED);
 	p->md.timeout =3D timeout_ms;
-	return 0;
+	return (0);
+}
+
+int
+pcap_set_tstamp_type(pcap_t *p, int tstamp_type)
+{
+	int i;
+
+	if (pcap_check_activated(p))
+		return (PCAP_ERROR_ACTIVATED);
+
+	/*
+	 * If p->tstamp_type_count is 0, we don't support setting
+	 * the time stamp type at all.
+	 */
+	if (p->tstamp_type_count =3D=3D 0)
+		return (PCAP_ERROR_CANTSET_TSTAMP_TYPE);
+
+	/*
+	 * Check whether we claim to support this type of time stamp.
+	 */
+	for (i =3D 0; i < p->tstamp_type_count; i++) {
+		if (p->tstamp_type_list[i] =3D=3D tstamp_type) {
+			/*
+			 * Yes.
+			 */
+			p->opt.tstamp_type =3D tstamp_type;
+			return (0);
+		}
+	}
+
+	/*
+	 * No.  We support setting the time stamp type, but not to this
+	 * particular value.
+	 */
+	return (PCAP_WARNING_TSTAMP_TYPE_NOTSUP);
 }
=20
 int
 pcap_set_buffer_size(pcap_t *p, int buffer_size)
 {
 	if (pcap_check_activated(p))
-		return PCAP_ERROR_ACTIVATED;
+		return (PCAP_ERROR_ACTIVATED);
 	p->opt.buffer_size =3D buffer_size;
-	return 0;
+	return (0);
 }
=20
 int
@@ -323,6 +410,15 @@
 {
 	int status;
=20
+	/*
+	 * Catch attempts to re-activate an already-activated
+	 * pcap_t; this should, for example, catch code that
+	 * calls pcap_open_live() followed by pcap_activate(),
+	 * as some code that showed up in a Stack Exchange
+	 * question did.
+	 */
+	if (pcap_check_activated(p))
+		return (PCAP_ERROR_ACTIVATED);
 	status =3D p->activate_op(p);
 	if (status >=3D 0)
 		p->activated =3D 1;
@@ -385,7 +481,8 @@
 		snprintf(errbuf, PCAP_ERRBUF_SIZE, "%s: %s", source,
 		    p->errbuf);
 	else if (status =3D=3D PCAP_ERROR_NO_SUCH_DEVICE ||
-	    status =3D=3D PCAP_ERROR_PERM_DENIED)
+	    status =3D=3D PCAP_ERROR_PERM_DENIED ||
+	    status =3D=3D PCAP_ERROR_PROMISC_PERM_DENIED)
 		snprintf(errbuf, PCAP_ERRBUF_SIZE, "%s: %s (%s)", source,
 		    pcap_statustostr(status), p->errbuf);
 	else
@@ -398,7 +495,7 @@
 int
 pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
 {
-	return p->read_op(p, cnt, callback, user);
+	return (p->read_op(p, cnt, callback, user));
 }
=20
 /*
@@ -408,7 +505,7 @@
 pcap_read(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
 {
=20
-	return p->read_op(p, cnt, callback, user);
+	return (p->read_op(p, cnt, callback, user));
 }
=20
 int
@@ -572,111 +669,6 @@
 	return (-1);
 }
=20
-struct dlt_choice {
-	const char *name;
-	const char *description;
-	int	dlt;
-};
-
-#define DLT_CHOICE(code, description) { #code, description, code }
-#define DLT_CHOICE_SENTINEL { NULL, NULL, 0 }
-
-static struct dlt_choice dlt_choices[] =3D {
-	DLT_CHOICE(DLT_NULL, "BSD loopback"),
-	DLT_CHOICE(DLT_EN10MB, "Ethernet"),
-	DLT_CHOICE(DLT_IEEE802, "Token ring"),
-	DLT_CHOICE(DLT_ARCNET, "BSD ARCNET"),
-	DLT_CHOICE(DLT_SLIP, "SLIP"),
-	DLT_CHOICE(DLT_PPP, "PPP"),
-	DLT_CHOICE(DLT_FDDI, "FDDI"),
-	DLT_CHOICE(DLT_ATM_RFC1483, "RFC 1483 LLC-encapsulated ATM"),
-	DLT_CHOICE(DLT_RAW, "Raw IP"),
-	DLT_CHOICE(DLT_SLIP_BSDOS, "BSD/OS SLIP"),
-	DLT_CHOICE(DLT_PPP_BSDOS, "BSD/OS PPP"),
-	DLT_CHOICE(DLT_ATM_CLIP, "Linux Classical IP-over-ATM"),
-	DLT_CHOICE(DLT_PPP_SERIAL, "PPP over serial"),
-	DLT_CHOICE(DLT_PPP_ETHER, "PPPoE"),
-        DLT_CHOICE(DLT_SYMANTEC_FIREWALL, "Symantec Firewall"),
-	DLT_CHOICE(DLT_C_HDLC, "Cisco HDLC"),
-	DLT_CHOICE(DLT_IEEE802_11, "802.11"),
-	DLT_CHOICE(DLT_FRELAY, "Frame Relay"),
-	DLT_CHOICE(DLT_LOOP, "OpenBSD loopback"),
-	DLT_CHOICE(DLT_ENC, "OpenBSD encapsulated IP"),
-	DLT_CHOICE(DLT_LINUX_SLL, "Linux cooked"),
-	DLT_CHOICE(DLT_LTALK, "Localtalk"),
-	DLT_CHOICE(DLT_PFLOG, "OpenBSD pflog file"),
-	DLT_CHOICE(DLT_PRISM_HEADER, "802.11 plus Prism header"),
-	DLT_CHOICE(DLT_IP_OVER_FC, "RFC 2625 IP-over-Fibre Channel"),
-	DLT_CHOICE(DLT_SUNATM, "Sun raw ATM"),
-	DLT_CHOICE(DLT_IEEE802_11_RADIO, "802.11 plus radiotap header"),
-	DLT_CHOICE(DLT_ARCNET_LINUX, "Linux ARCNET"),
-        DLT_CHOICE(DLT_JUNIPER_MLPPP, "Juniper Multi-Link PPP"),
-	DLT_CHOICE(DLT_JUNIPER_MLFR, "Juniper Multi-Link Frame Relay"),
-        DLT_CHOICE(DLT_JUNIPER_ES, "Juniper Encryption Services PIC"),
-        DLT_CHOICE(DLT_JUNIPER_GGSN, "Juniper GGSN PIC"),
-	DLT_CHOICE(DLT_JUNIPER_MFR, "Juniper FRF.16 Frame Relay"),
-        DLT_CHOICE(DLT_JUNIPER_ATM2, "Juniper ATM2 PIC"),
-        DLT_CHOICE(DLT_JUNIPER_SERVICES, "Juniper Advanced Services PIC"),
-        DLT_CHOICE(DLT_JUNIPER_ATM1, "Juniper ATM1 PIC"),
-	DLT_CHOICE(DLT_APPLE_IP_OVER_IEEE1394, "Apple IP-over-IEEE 1394"),
-	DLT_CHOICE(DLT_MTP2_WITH_PHDR, "SS7 MTP2 with Pseudo-header"),
-	DLT_CHOICE(DLT_MTP2, "SS7 MTP2"),
-	DLT_CHOICE(DLT_MTP3, "SS7 MTP3"),
-	DLT_CHOICE(DLT_SCCP, "SS7 SCCP"),
-	DLT_CHOICE(DLT_DOCSIS, "DOCSIS"),
-	DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"),
-	DLT_CHOICE(DLT_IEEE802_11_RADIO_AVS, "802.11 plus AVS radio information h=
eader"),
-        DLT_CHOICE(DLT_JUNIPER_MONITOR, "Juniper Passive Monitor PIC"),
-	DLT_CHOICE(DLT_PPP_PPPD, "PPP for pppd, with direction flag"),
-	DLT_CHOICE(DLT_JUNIPER_PPPOE, "Juniper PPPoE"),
-	DLT_CHOICE(DLT_JUNIPER_PPPOE_ATM, "Juniper PPPoE/ATM"),
-	DLT_CHOICE(DLT_GPRS_LLC, "GPRS LLC"),
-	DLT_CHOICE(DLT_GPF_T, "GPF-T"),
-	DLT_CHOICE(DLT_GPF_F, "GPF-F"),
-	DLT_CHOICE(DLT_JUNIPER_PIC_PEER, "Juniper PIC Peer"),
-	DLT_CHOICE(DLT_ERF_ETH,	"Ethernet with Endace ERF header"),
-	DLT_CHOICE(DLT_ERF_POS, "Packet-over-SONET with Endace ERF header"),
-	DLT_CHOICE(DLT_LINUX_LAPD, "Linux vISDN LAPD"),
-	DLT_CHOICE(DLT_JUNIPER_ETHER, "Juniper Ethernet"),
-	DLT_CHOICE(DLT_JUNIPER_PPP, "Juniper PPP"),
-	DLT_CHOICE(DLT_JUNIPER_FRELAY, "Juniper Frame Relay"),
-	DLT_CHOICE(DLT_JUNIPER_CHDLC, "Juniper C-HDLC"),
-	DLT_CHOICE(DLT_MFR, "FRF.16 Frame Relay"),
-	DLT_CHOICE(DLT_JUNIPER_VP, "Juniper Voice PIC"),
-	DLT_CHOICE(DLT_A429, "Arinc 429"),
-	DLT_CHOICE(DLT_A653_ICM, "Arinc 653 Interpartition Communication"),
-	DLT_CHOICE(DLT_USB, "USB"),
-	DLT_CHOICE(DLT_BLUETOOTH_HCI_H4, "Bluetooth HCI UART transport layer"),
-	DLT_CHOICE(DLT_IEEE802_16_MAC_CPS, "IEEE 802.16 MAC Common Part Sublayer"=
),
-	DLT_CHOICE(DLT_USB_LINUX, "USB with Linux header"),
-	DLT_CHOICE(DLT_CAN20B, "Controller Area Network (CAN) v. 2.0B"),
-	DLT_CHOICE(DLT_IEEE802_15_4_LINUX, "IEEE 802.15.4 with Linux padding"),
-	DLT_CHOICE(DLT_PPI, "Per-Packet Information"),
-	DLT_CHOICE(DLT_IEEE802_16_MAC_CPS_RADIO, "IEEE 802.16 MAC Common Part Sub=
layer plus radiotap header"),
-	DLT_CHOICE(DLT_JUNIPER_ISM, "Juniper Integrated Service Module"),
-	DLT_CHOICE(DLT_IEEE802_15_4, "IEEE 802.15.4"),
-	DLT_CHOICE(DLT_SITA, "SITA pseudo-header"),
-	DLT_CHOICE(DLT_ERF, "Endace ERF header"),
-	DLT_CHOICE(DLT_RAIF1, "Ethernet with u10 Networks pseudo-header"),
-	DLT_CHOICE(DLT_IPMB, "IPMB"),
-	DLT_CHOICE(DLT_JUNIPER_ST, "Juniper Secure Tunnel"),
-	DLT_CHOICE(DLT_BLUETOOTH_HCI_H4_WITH_PHDR, "Bluetooth HCI UART transport =
layer plus pseudo-header"),
-	DLT_CHOICE(DLT_AX25_KISS, "AX.25 with KISS header"),
-	DLT_CHOICE(DLT_IEEE802_15_4_NONASK_PHY, "IEEE 802.15.4 with non-ASK PHY d=
ata"),
-	DLT_CHOICE(DLT_MPLS, "MPLS with label as link-layer header"),
-	DLT_CHOICE(DLT_USB_LINUX_MMAPPED, "USB with padded Linux header"),
-	DLT_CHOICE(DLT_DECT, "DECT"),
-	DLT_CHOICE(DLT_AOS, "AOS Space Data Link protocol"),
-	DLT_CHOICE(DLT_WIHART, "Wireless HART"),
-	DLT_CHOICE(DLT_FC_2, "Fibre Channel FC-2"),
-	DLT_CHOICE(DLT_FC_2_WITH_FRAME_DELIMS, "Fibre Channel FC-2 with frame del=
imiters"),
-	DLT_CHOICE(DLT_IPNET, "Solaris ipnet"),
-	DLT_CHOICE(DLT_CAN_SOCKETCAN, "CAN-bus with SocketCAN headers"),
-	DLT_CHOICE(DLT_IPV4, "Raw IPv4"),
-	DLT_CHOICE(DLT_IPV6, "Raw IPv6"),
-	DLT_CHOICE_SENTINEL
-};
-
 /*
  * This array is designed for mapping upper and lower case letter
  * together for a case independent comparison.  The mappings are
@@ -762,6 +754,121 @@
 	return (cm[*us1] - cm[*--us2]);
 }
=20
+struct dlt_choice {
+	const char *name;
+	const char *description;
+	int	dlt;
+};
+
+#define DLT_CHOICE(code, description) { #code, description, code }
+#define DLT_CHOICE_SENTINEL { NULL, NULL, 0 }
+
+static struct dlt_choice dlt_choices[] =3D {
+	DLT_CHOICE(DLT_NULL, "BSD loopback"),
+	DLT_CHOICE(DLT_EN10MB, "Ethernet"),
+	DLT_CHOICE(DLT_IEEE802, "Token ring"),
+	DLT_CHOICE(DLT_ARCNET, "BSD ARCNET"),
+	DLT_CHOICE(DLT_SLIP, "SLIP"),
+	DLT_CHOICE(DLT_PPP, "PPP"),
+	DLT_CHOICE(DLT_FDDI, "FDDI"),
+	DLT_CHOICE(DLT_ATM_RFC1483, "RFC 1483 LLC-encapsulated ATM"),
+	DLT_CHOICE(DLT_RAW, "Raw IP"),
+	DLT_CHOICE(DLT_SLIP_BSDOS, "BSD/OS SLIP"),
+	DLT_CHOICE(DLT_PPP_BSDOS, "BSD/OS PPP"),
+	DLT_CHOICE(DLT_ATM_CLIP, "Linux Classical IP-over-ATM"),
+	DLT_CHOICE(DLT_PPP_SERIAL, "PPP over serial"),
+	DLT_CHOICE(DLT_PPP_ETHER, "PPPoE"),
+        DLT_CHOICE(DLT_SYMANTEC_FIREWALL, "Symantec Firewall"),
+	DLT_CHOICE(DLT_C_HDLC, "Cisco HDLC"),
+	DLT_CHOICE(DLT_IEEE802_11, "802.11"),
+	DLT_CHOICE(DLT_FRELAY, "Frame Relay"),
+	DLT_CHOICE(DLT_LOOP, "OpenBSD loopback"),
+	DLT_CHOICE(DLT_ENC, "OpenBSD encapsulated IP"),
+	DLT_CHOICE(DLT_LINUX_SLL, "Linux cooked"),
+	DLT_CHOICE(DLT_LTALK, "Localtalk"),
+	DLT_CHOICE(DLT_PFLOG, "OpenBSD pflog file"),
+	DLT_CHOICE(DLT_PRISM_HEADER, "802.11 plus Prism header"),
+	DLT_CHOICE(DLT_IP_OVER_FC, "RFC 2625 IP-over-Fibre Channel"),
+	DLT_CHOICE(DLT_SUNATM, "Sun raw ATM"),
+	DLT_CHOICE(DLT_IEEE802_11_RADIO, "802.11 plus radiotap header"),
+	DLT_CHOICE(DLT_ARCNET_LINUX, "Linux ARCNET"),
+        DLT_CHOICE(DLT_JUNIPER_MLPPP, "Juniper Multi-Link PPP"),
+	DLT_CHOICE(DLT_JUNIPER_MLFR, "Juniper Multi-Link Frame Relay"),
+        DLT_CHOICE(DLT_JUNIPER_ES, "Juniper Encryption Services PIC"),
+        DLT_CHOICE(DLT_JUNIPER_GGSN, "Juniper GGSN PIC"),
+	DLT_CHOICE(DLT_JUNIPER_MFR, "Juniper FRF.16 Frame Relay"),
+        DLT_CHOICE(DLT_JUNIPER_ATM2, "Juniper ATM2 PIC"),
+        DLT_CHOICE(DLT_JUNIPER_SERVICES, "Juniper Advanced Services PIC"),
+        DLT_CHOICE(DLT_JUNIPER_ATM1, "Juniper ATM1 PIC"),
+	DLT_CHOICE(DLT_APPLE_IP_OVER_IEEE1394, "Apple IP-over-IEEE 1394"),
+	DLT_CHOICE(DLT_MTP2_WITH_PHDR, "SS7 MTP2 with Pseudo-header"),
+	DLT_CHOICE(DLT_MTP2, "SS7 MTP2"),
+	DLT_CHOICE(DLT_MTP3, "SS7 MTP3"),
+	DLT_CHOICE(DLT_SCCP, "SS7 SCCP"),
+	DLT_CHOICE(DLT_DOCSIS, "DOCSIS"),
+	DLT_CHOICE(DLT_LINUX_IRDA, "Linux IrDA"),
+	DLT_CHOICE(DLT_IEEE802_11_RADIO_AVS, "802.11 plus AVS radio information h=
eader"),
+        DLT_CHOICE(DLT_JUNIPER_MONITOR, "Juniper Passive Monitor PIC"),
+	DLT_CHOICE(DLT_PPP_PPPD, "PPP for pppd, with direction flag"),
+	DLT_CHOICE(DLT_JUNIPER_PPPOE, "Juniper PPPoE"),
+	DLT_CHOICE(DLT_JUNIPER_PPPOE_ATM, "Juniper PPPoE/ATM"),
+	DLT_CHOICE(DLT_GPRS_LLC, "GPRS LLC"),
+	DLT_CHOICE(DLT_GPF_T, "GPF-T"),
+	DLT_CHOICE(DLT_GPF_F, "GPF-F"),
+	DLT_CHOICE(DLT_JUNIPER_PIC_PEER, "Juniper PIC Peer"),
+	DLT_CHOICE(DLT_ERF_ETH,	"Ethernet with Endace ERF header"),
+	DLT_CHOICE(DLT_ERF_POS, "Packet-over-SONET with Endace ERF header"),
+	DLT_CHOICE(DLT_LINUX_LAPD, "Linux vISDN LAPD"),
+	DLT_CHOICE(DLT_JUNIPER_ETHER, "Juniper Ethernet"),
+	DLT_CHOICE(DLT_JUNIPER_PPP, "Juniper PPP"),
+	DLT_CHOICE(DLT_JUNIPER_FRELAY, "Juniper Frame Relay"),
+	DLT_CHOICE(DLT_JUNIPER_CHDLC, "Juniper C-HDLC"),
+	DLT_CHOICE(DLT_MFR, "FRF.16 Frame Relay"),
+	DLT_CHOICE(DLT_JUNIPER_VP, "Juniper Voice PIC"),
+	DLT_CHOICE(DLT_A429, "Arinc 429"),
+	DLT_CHOICE(DLT_A653_ICM, "Arinc 653 Interpartition Communication"),
+	DLT_CHOICE(DLT_USB, "USB"),
+	DLT_CHOICE(DLT_BLUETOOTH_HCI_H4, "Bluetooth HCI UART transport layer"),
+	DLT_CHOICE(DLT_IEEE802_16_MAC_CPS, "IEEE 802.16 MAC Common Part Sublayer"=
),
+	DLT_CHOICE(DLT_USB_LINUX, "USB with Linux header"),
+	DLT_CHOICE(DLT_CAN20B, "Controller Area Network (CAN) v. 2.0B"),
+	DLT_CHOICE(DLT_IEEE802_15_4_LINUX, "IEEE 802.15.4 with Linux padding"),
+	DLT_CHOICE(DLT_PPI, "Per-Packet Information"),
+	DLT_CHOICE(DLT_IEEE802_16_MAC_CPS_RADIO, "IEEE 802.16 MAC Common Part Sub=
layer plus radiotap header"),
+	DLT_CHOICE(DLT_JUNIPER_ISM, "Juniper Integrated Service Module"),
+	DLT_CHOICE(DLT_IEEE802_15_4, "IEEE 802.15.4 with FCS"),
+	DLT_CHOICE(DLT_SITA, "SITA pseudo-header"),
+	DLT_CHOICE(DLT_ERF, "Endace ERF header"),
+	DLT_CHOICE(DLT_RAIF1, "Ethernet with u10 Networks pseudo-header"),
+	DLT_CHOICE(DLT_IPMB, "IPMB"),
+	DLT_CHOICE(DLT_JUNIPER_ST, "Juniper Secure Tunnel"),
+	DLT_CHOICE(DLT_BLUETOOTH_HCI_H4_WITH_PHDR, "Bluetooth HCI UART transport =
layer plus pseudo-header"),
+	DLT_CHOICE(DLT_AX25_KISS, "AX.25 with KISS header"),
+	DLT_CHOICE(DLT_IEEE802_15_4_NONASK_PHY, "IEEE 802.15.4 with non-ASK PHY d=
ata"),
+	DLT_CHOICE(DLT_MPLS, "MPLS with label as link-layer header"),
+	DLT_CHOICE(DLT_USB_LINUX_MMAPPED, "USB with padded Linux header"),
+	DLT_CHOICE(DLT_DECT, "DECT"),
+	DLT_CHOICE(DLT_AOS, "AOS Space Data Link protocol"),
+	DLT_CHOICE(DLT_WIHART, "Wireless HART"),
+	DLT_CHOICE(DLT_FC_2, "Fibre Channel FC-2"),
+	DLT_CHOICE(DLT_FC_2_WITH_FRAME_DELIMS, "Fibre Channel FC-2 with frame del=
imiters"),
+	DLT_CHOICE(DLT_IPNET, "Solaris ipnet"),
+	DLT_CHOICE(DLT_CAN_SOCKETCAN, "CAN-bus with SocketCAN headers"),
+	DLT_CHOICE(DLT_IPV4, "Raw IPv4"),
+	DLT_CHOICE(DLT_IPV6, "Raw IPv6"),
+	DLT_CHOICE(DLT_IEEE802_15_4_NOFCS, "IEEE 802.15.4 without FCS"),
+	DLT_CHOICE(DLT_JUNIPER_VS, "Juniper Virtual Server"),
+	DLT_CHOICE(DLT_JUNIPER_SRX_E2E, "Juniper SRX E2E"),
+	DLT_CHOICE(DLT_JUNIPER_FIBRECHANNEL, "Juniper Fibre Channel"),
+	DLT_CHOICE(DLT_DVB_CI, "DVB-CI"),
+	DLT_CHOICE(DLT_JUNIPER_ATM_CEMIC, "Juniper ATM CEMIC"),
+	DLT_CHOICE(DLT_NFLOG, "Linux netfilter log messages"),
+	DLT_CHOICE(DLT_NETANALYZER, "Ethernet with Hilscher netANALYZER pseudo-he=
ader"),
+	DLT_CHOICE(DLT_NETANALYZER_TRANSPARENT, "Ethernet with Hilscher netANALYZ=
ER pseudo-header and with preamble and SFD"),
+	DLT_CHOICE(DLT_IPOIB, "RFC 4391 IP-over-Infiniband"),
+	DLT_CHOICE_SENTINEL
+};
+
 int
 pcap_datalink_name_to_val(const char *name)
 {
@@ -799,6 +906,57 @@
 	return (NULL);
 }
=20
+struct tstamp_type_choice {
+	const char *name;
+	const char *description;
+	int	type;
+};
+
+static struct tstamp_type_choice tstamp_type_choices[] =3D {
+	{ "host", "Host", PCAP_TSTAMP_HOST },
+	{ "host_lowprec", "Host, low precision", PCAP_TSTAMP_HOST_LOWPREC },
+	{ "host_hiprec", "Host, high precision", PCAP_TSTAMP_HOST_HIPREC },
+	{ "adapter", "Adapter", PCAP_TSTAMP_ADAPTER },
+	{ "adapter_unsynced", "Adapter, not synced with system time", PCAP_TSTAMP=
_ADAPTER_UNSYNCED },
+	{ NULL, NULL, 0 }
+};
+
+int
+pcap_tstamp_type_name_to_val(const char *name)
+{
+	int i;
+
+	for (i =3D 0; tstamp_type_choices[i].name !=3D NULL; i++) {
+		if (pcap_strcasecmp(tstamp_type_choices[i].name, name) =3D=3D 0)
+			return (tstamp_type_choices[i].type);
+	}
+	return (PCAP_ERROR);
+}
+
+const char *
+pcap_tstamp_type_val_to_name(int tstamp_type)
+{
+	int i;
+
+	for (i =3D 0; tstamp_type_choices[i].name !=3D NULL; i++) {
+		if (tstamp_type_choices[i].type =3D=3D tstamp_type)
+			return (tstamp_type_choices[i].name);
+	}
+	return (NULL);
+}
+
+const char *
+pcap_tstamp_type_val_to_description(int tstamp_type)
+{
+	int i;
+
+	for (i =3D 0; tstamp_type_choices[i].name !=3D NULL; i++) {
+		if (tstamp_type_choices[i].type =3D=3D tstamp_type)
+			return (tstamp_type_choices[i].description);
+	}
+	return (NULL);
+}
+
 int
 pcap_snapshot(pcap_t *p)
 {
@@ -865,7 +1023,7 @@
 int
 pcap_getnonblock(pcap_t *p, char *errbuf)
 {
-	return p->getnonblock_op(p, errbuf);
+	return (p->getnonblock_op(p, errbuf));
 }
=20
 /*
@@ -897,7 +1055,7 @@
 int
 pcap_setnonblock(pcap_t *p, int nonblock, char *errbuf)
 {
-	return p->setnonblock_op(p, nonblock, errbuf);
+	return (p->setnonblock_op(p, nonblock, errbuf));
 }
=20
 #if !defined(WIN32) && !defined(MSDOS)
@@ -977,6 +1135,9 @@
 	case PCAP_WARNING:
 		return("Generic warning");
=20
+	case PCAP_WARNING_TSTAMP_TYPE_NOTSUP:
+		return ("That type of time stamp is not supported by that device");
+
 	case PCAP_WARNING_PROMISC_NOTSUP:
 		return ("That device doesn't support promiscuous mode");
=20
@@ -1006,6 +1167,12 @@
=20
 	case PCAP_ERROR_IFACE_NOT_UP:
 		return ("That device is not up");
+
+	case PCAP_ERROR_CANTSET_TSTAMP_TYPE:
+		return ("That device doesn't support setting the time stamp type");
+
+	case PCAP_ERROR_PROMISC_PERM_DENIED:
+		return ("You don't have permission to capture in promiscuous mode on tha=
t device");
 	}
 	(void)snprintf(ebuf, sizeof ebuf, "Unknown error: %d", errnum);
 	return(ebuf);
@@ -1034,7 +1201,7 @@
 int
 pcap_setfilter(pcap_t *p, struct bpf_program *fp)
 {
-	return p->setfilter_op(p, fp);
+	return (p->setfilter_op(p, fp));
 }
=20
 /*
@@ -1049,15 +1216,15 @@
 	if (p->setdirection_op =3D=3D NULL) {
 		snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
 		    "Setting direction is not implemented on this platform");
-		return -1;
+		return (-1);
 	} else
-		return p->setdirection_op(p, d);
+		return (p->setdirection_op(p, d));
 }
=20
 int
 pcap_stats(pcap_t *p, struct pcap_stat *ps)
 {
-	return p->stats_op(p, ps);
+	return (p->stats_op(p, ps));
 }
=20
 static int
@@ -1072,7 +1239,7 @@
 int
 pcap_setbuff(pcap_t *p, int dim)
 {
-	return p->setbuff_op(p, dim);
+	return (p->setbuff_op(p, dim));
 }
=20
 static int
@@ -1086,7 +1253,7 @@
 int
 pcap_setmode(pcap_t *p, int mode)
 {
-	return p->setmode_op(p, mode);
+	return (p->setmode_op(p, mode));
 }
=20
 static int
@@ -1100,7 +1267,7 @@
 int
 pcap_setmintocopy(pcap_t *p, int size)
 {
-	return p->setmintocopy_op(p, size);
+	return (p->setmintocopy_op(p, size));
 }
=20
 static int
@@ -1213,6 +1380,11 @@
 		p->dlt_list =3D NULL;
 		p->dlt_count =3D 0;
 	}
+	if (p->tstamp_type_list !=3D NULL) {
+		free(p->tstamp_type_list);
+		p->tstamp_type_list =3D NULL;
+		p->tstamp_type_count =3D 0;
+	}
 	pcap_freecode(&p->fcode);
 #if !defined(WIN32) && !defined(MSDOS)
 	if (p->fd >=3D 0) {
@@ -1249,7 +1421,7 @@
 #endif
 	p->cleanup_op =3D pcap_cleanup_dead;
 	p->activated =3D 1;
-	return p;
+	return (p);
 }
=20
 /*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap/bpf.h
--- a/head/contrib/libpcap/pcap/bpf.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap/bpf.h	Wed Jul 25 16:21:35 2012 +0300
@@ -48,10 +48,30 @@
  * "pcap-bpf.c" will include the native OS version, as it deals with
  * the OS's BPF implementation.
  *
- * XXX - should this all just be moved to "pcap.h"?
+ * At least two programs found by Google Code Search explicitly includes
+ * <pcap/bpf.h> (even though <pcap.h>/<pcap/pcap.h> includes it for you),
+ * so moving that stuff to <pcap/pcap.h> would break the build for some
+ * programs.
  */
=20
-#ifndef BPF_MAJOR_VERSION
+/*
+ * If we've already included <net/bpf.h>, don't re-define this stuff.
+ * We assume BSD-style multiple-include protection in <net/bpf.h>,
+ * which is true of all but the oldest versions of FreeBSD and NetBSD,
+ * or Tru64 UNIX-style multiple-include protection (or, at least,
+ * Tru64 UNIX 5.x-style; I don't have earlier versions available to check),
+ * or AIX-style multiple-include protection (or, at least, AIX 5.x-style;
+ * I don't have earlier versions available to check).
+ *
+ * We do not check for BPF_MAJOR_VERSION, as that's defined by
+ * <linux/filter.h>, which is directly or indirectly included in some
+ * programs that also include pcap.h, and <linux/filter.h> doesn't
+ * define stuff we need.
+ *
+ * This also provides our own multiple-include protection.
+ */
+#if !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) && !def=
ined(lib_pcap_bpf_h)
+#define lib_pcap_bpf_h
=20
 #ifdef __cplusplus
 extern "C" {
@@ -70,7 +90,9 @@
=20
 /*
  * Alignment macros.  BPF_WORDALIGN rounds up to the next=20
- * even multiple of BPF_ALIGNMENT.=20
+ * even multiple of BPF_ALIGNMENT.
+ *
+ * Tcpdump's print-pflog.c uses this, so we define it here.
  */
 #ifndef __NetBSD__
 #define BPF_ALIGNMENT sizeof(bpf_int32)
@@ -79,9 +101,6 @@
 #endif
 #define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))
=20
-#define BPF_MAXBUFSIZE 0x8000
-#define BPF_MINBUFSIZE 32
-
 /*
  * Structure for "pcap_compile()", "pcap_setfilter()", etc..
  */
@@ -91,26 +110,7 @@
 };
 =20
 /*
- * Struct return by BIOCVERSION.  This represents the version number of=20
- * the filter language described by the instruction encodings below.
- * bpf understands a program iff kernel_major =3D=3D filter_major &&
- * kernel_minor >=3D filter_minor, that is, if the value returned by the
- * running kernel has the same major number and a minor number equal
- * equal to or less than the filter being downloaded.  Otherwise, the
- * results are undefined, meaning an error may be returned or packets
- * may be accepted haphazardly.
- * It has nothing to do with the source code version.
- */
-struct bpf_version {
-	u_short bv_major;
-	u_short bv_minor;
-};
-/* Current version number of filter architecture. */
-#define BPF_MAJOR_VERSION 1
-#define BPF_MINOR_VERSION 1
-
-/*
- * Data-link level type codes.
+ * Link-layer header type codes.
  *
  * Do *NOT* add new values to this list without asking
  * "tcpdump-workers at lists.tcpdump.org" for a value.  Otherwise, you run
@@ -119,6 +119,12 @@
  * being able to handle captures with your new DLT_ value, with no hope
  * that they will ever be changed to do so (as that would destroy their
  * ability to read captures using that value for that other purpose).
+ *
+ * See
+ *
+ *	http://www.tcpdump.org/linktypes.html
+ *
+ * for detailed descriptions of some of these link-layer header types.
  */
=20
 /*
@@ -203,11 +209,24 @@
=20
 /*
  * Values between 100 and 103 are used in capture file headers as
- * link-layer types corresponding to DLT_ types that differ
- * between platforms; don't use those values for new DLT_ new types.
+ * link-layer header type LINKTYPE_ values corresponding to DLT_ types
+ * that differ between platforms; don't use those values for new DLT_
+ * new types.
  */
=20
 /*
+ * Values starting with 104 are used for newly-assigned link-layer
+ * header type values; for those link-layer header types, the DLT_
+ * value returned by pcap_datalink() and passed to pcap_open_dead(),
+ * and the LINKTYPE_ value that appears in capture files, are the
+ * same.
+ *
+ * DLT_MATCHING_MIN is the lowest such value; DLT_MATCHING_MAX is
+ * the highest such value.
+ */
+#define DLT_MATCHING_MIN	104
+
+/*
  * This value was defined by libpcap 0.5; platforms that have defined
  * it with a different value should define it here with that value -
  * a link type of 104 in a save file will be mapped to DLT_C_HDLC,
@@ -697,6 +716,8 @@
 /*
  * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
  * nothing); requested by Mikko Saarnivala <mikko.saarnivala at sensinode.com=
>.
+ * For this one, we expect the FCS to be present at the end of the frame;
+ * if the frame has no FCS, DLT_IEEE802_15_4_NOFCS should be used.
  */
 #define DLT_IEEE802_15_4	195
=20
@@ -942,7 +963,7 @@
  * An IPv4 or IPv6 datagram follows the pseudo-header; dli_family indicates
  * which of those it is.
  */
-#define DLT_IPNET			226
+#define DLT_IPNET		226
=20
 /*
  * CAN (Controller Area Network) frames, with a pseudo-header as supplied
@@ -951,14 +972,116 @@
  *
  * Requested by Felix Obenhuber <felix at obenhuber.de>.
  */
-#define DLT_CAN_SOCKETCAN		227
+#define DLT_CAN_SOCKETCAN	227
=20
 /*
  * Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies
  * whether it's v4 or v6.  Requested by Darren Reed <Darren.Reed at Sun.COM>.
  */
-#define DLT_IPV4			228
-#define DLT_IPV6			229
+#define DLT_IPV4		228
+#define DLT_IPV6		229
+
+/*
+ * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
+ * nothing), and with no FCS at the end of the frame; requested by
+ * Jon Smirl <jonsmirl at gmail.com>.
+ */
+#define DLT_IEEE802_15_4_NOFCS	230
+
+/*
+ * Raw D-Bus:
+ *
+ *	http://www.freedesktop.org/wiki/Software/dbus
+ *
+ * messages:
+ *
+ *	http://dbus.freedesktop.org/doc/dbus-specification.html#message-protoco=
l-messages
+ *
+ * starting with the endianness flag, followed by the message type, etc.,
+ * but without the authentication handshake before the message sequence:
+ *
+ *	http://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol
+ *
+ * Requested by Martin Vidner <martin at vidner.net>.
+ */
+#define DLT_DBUS		231
+
+/*
+ * Juniper-private data link type, as per request from
+ * Hannes Gredler <hannes at juniper.net>.
+ */
+#define DLT_JUNIPER_VS			232
+#define DLT_JUNIPER_SRX_E2E		233
+#define DLT_JUNIPER_FIBRECHANNEL	234
+
+/*
+ * DVB-CI (DVB Common Interface for communication between a PC Card
+ * module and a DVB receiver).  See
+ *
+ *	http://www.kaiser.cx/pcap-dvbci.html
+ *
+ * for the specification.
+ *
+ * Requested by Martin Kaiser <martin at kaiser.cx>.
+ */
+#define DLT_DVB_CI		235
+
+/*
+ * Variant of 3GPP TS 27.010 multiplexing protocol (similar to, but
+ * *not* the same as, 27.010).  Requested by Hans-Christoph Schemmel
+ * <hans-christoph.schemmel at cinterion.com>.
+ */
+#define DLT_MUX27010		236
+
+/*
+ * STANAG 5066 D_PDUs.  Requested by M. Baris Demiray
+ * <barisdemiray at gmail.com>.
+ */
+#define DLT_STANAG_5066_D_PDU	237
+
+/*
+ * Juniper-private data link type, as per request from
+ * Hannes Gredler <hannes at juniper.net>.
+ */
+#define DLT_JUNIPER_ATM_CEMIC	238
+
+/*
+ * NetFilter LOG messages=20
+ * (payload of netlink NFNL_SUBSYS_ULOG/NFULNL_MSG_PACKET packets)
+ *
+ * Requested by Jakub Zawadzki <darkjames-ws at darkjames.pl>
+ */
+#define DLT_NFLOG		239
+
+/*
+ * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
+ * for Ethernet packets with a 4-byte pseudo-header and always
+ * with the payload including the FCS, as supplied by their
+ * netANALYZER hardware and software.
+ *
+ * Requested by Holger P. Frommer <HPfrommer at hilscher.com>
+ */
+#define DLT_NETANALYZER		240
+
+/*
+ * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type
+ * for Ethernet packets with a 4-byte pseudo-header and FCS and
+ * with the Ethernet header preceded by 7 bytes of preamble and
+ * 1 byte of SFD, as supplied by their netANALYZER hardware and
+ * software.
+ *
+ * Requested by Holger P. Frommer <HPfrommer at hilscher.com>
+ */
+#define DLT_NETANALYZER_TRANSPARENT	241
+
+/*
+ * IP-over-Infiniband, as specified by RFC 4391.
+ *
+ * Requested by Petr Sumbera <petr.sumbera at oracle.com>.
+ */
+#define DLT_IPOIB		242
+
+#define DLT_MATCHING_MAX	242	/* highest value in the "matching" range */
=20
 /*
  * DLT and savefile link type values are split into a class and
@@ -1069,4 +1192,4 @@
 }
 #endif
=20
-#endif
+#endif /* !defined(_NET_BPF_H_) && !defined(_BPF_H_) && !defined(_H_BPF) &=
& !defined(lib_pcap_bpf_h) */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap/pcap.h
--- a/head/contrib/libpcap/pcap/pcap.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap/pcap.h	Wed Jul 25 16:21:35 2012 +0300
@@ -249,6 +249,8 @@
 #define PCAP_ERROR_NOT_RFMON		-7	/* operation supported only in monitor mo=
de */
 #define PCAP_ERROR_PERM_DENIED		-8	/* no permission to open the device */
 #define PCAP_ERROR_IFACE_NOT_UP		-9	/* interface isn't up */
+#define PCAP_ERROR_CANTSET_TSTAMP_TYPE	-10	/* this device doesn't support =
setting the time stamp type */
+#define PCAP_ERROR_PROMISC_PERM_DENIED	-11	/* you don't have permission to=
 capture in promiscuous mode */
=20
 /*
  * Warning codes for the pcap API.
@@ -257,6 +259,7 @@
  */
 #define PCAP_WARNING			1	/* generic warning code */
 #define PCAP_WARNING_PROMISC_NOTSUP	2	/* this device doesn't support promi=
scuous mode */
+#define PCAP_WARNING_TSTAMP_TYPE_NOTSUP	3	/* the requested time stamp type=
 is not supported */
=20
 /*
  * Value to pass to pcap_compile() as the netmask if you don't know what
@@ -273,9 +276,60 @@
 int	pcap_can_set_rfmon(pcap_t *);
 int	pcap_set_rfmon(pcap_t *, int);
 int	pcap_set_timeout(pcap_t *, int);
+int	pcap_set_tstamp_type(pcap_t *, int);
 int	pcap_set_buffer_size(pcap_t *, int);
 int	pcap_activate(pcap_t *);
=20
+int	pcap_list_tstamp_types(pcap_t *, int **);
+void	pcap_free_tstamp_types(int *);
+int	pcap_tstamp_type_name_to_val(const char *);
+const char *pcap_tstamp_type_val_to_name(int);
+const char *pcap_tstamp_type_val_to_description(int);
+
+/*
+ * Time stamp types.
+ * Not all systems and interfaces will necessarily support all of these.
+ *
+ * A system that supports PCAP_TSTAMP_HOST is offering time stamps
+ * provided by the host machine, rather than by the capture device,
+ * but not committing to any characteristics of the time stamp;
+ * it will not offer any of the PCAP_TSTAMP_HOST_ subtypes.
+ *
+ * PCAP_TSTAMP_HOST_LOWPREC is a time stamp, provided by the host machine,
+ * that's low-precision but relatively cheap to fetch; it's normally done
+ * using the system clock, so it's normally synchronized with times you'd
+ * fetch from system calls.
+ *
+ * PCAP_TSTAMP_HOST_HIPREC is a time stamp, provided by the host machine,
+ * that's high-precision; it might be more expensive to fetch.  It might
+ * or might not be synchronized with the system clock, and might have
+ * problems with time stamps for packets received on different CPUs,
+ * depending on the platform.
+ *
+ * PCAP_TSTAMP_ADAPTER is a high-precision time stamp supplied by the
+ * capture device; it's synchronized with the system clock.
+ *
+ * PCAP_TSTAMP_ADAPTER_UNSYNCED is a high-precision time stamp supplied by
+ * the capture device; it's not synchronized with the system clock.
+ *
+ * Note that time stamps synchronized with the system clock can go
+ * backwards, as the system clock can go backwards.  If a clock is
+ * not in sync with the system clock, that could be because the
+ * system clock isn't keeping accurate time, because the other
+ * clock isn't keeping accurate time, or both.
+ *
+ * Note that host-provided time stamps generally correspond to the
+ * time when the time-stamping code sees the packet; this could
+ * be some unknown amount of time after the first or last bit of
+ * the packet is received by the network adapter, due to batching
+ * of interrupts for packet arrival, queueing delays, etc..
+ */
+#define PCAP_TSTAMP_HOST		0	/* host-provided, unknown characteristics */
+#define PCAP_TSTAMP_HOST_LOWPREC	1	/* host-provided, low precision */
+#define PCAP_TSTAMP_HOST_HIPREC		2	/* host-provided, high precision */
+#define PCAP_TSTAMP_ADAPTER		3	/* device-provided, synced with the system =
clock */
+#define PCAP_TSTAMP_ADAPTER_UNSYNCED	4	/* device-provided, not synced with=
 the system clock */
+
 pcap_t	*pcap_open_live(const char *, int, int, int, char *);
 pcap_t	*pcap_open_dead(int, int);
 pcap_t	*pcap_open_offline(const char *, char *);
@@ -346,8 +400,16 @@
=20
 const char *pcap_lib_version(void);
=20
-/* XXX this guy lives in the bpf tree */
+/*
+ * On at least some versions of NetBSD, we don't want to declare
+ * bpf_filter() here, as it's also be declared in <net/bpf.h>, with a
+ * different signature, but, on other BSD-flavored UN*Xes, it's not
+ * declared in <net/bpf.h>, so we *do* want to declare it here, so it's
+ * declared when we build pcap-bpf.c.
+ */
+#ifndef __NetBSD__
 u_int	bpf_filter(struct bpf_insn *, u_char *, u_int, u_int);=20
+#endif
 int	bpf_validate(const struct bpf_insn *f, int len);
 char	*bpf_image(struct bpf_insn *, int);
 void	bpf_dump(struct bpf_program *, int);
@@ -395,4 +457,4 @@
 }
 #endif
=20
-#endif
+#endif /* lib_pcap_pcap_h */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_activate.3pc=
ap
--- a/head/contrib/libpcap/pcap_activate.3pcap	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/libpcap/pcap_activate.3pcap	Wed Jul 25 16:21:35 2012 +03=
00
@@ -43,6 +43,11 @@
 .B PCAP_WARNING_PROMISC_NOTSUP
 on success on a device that doesn't support promiscuous mode if
 promiscuous mode was requested,
+.B PCAP_WARNING_TSTAMP_TYPE_NOTSUP
+on success if the time stamp type specified in a previous
+.B pcap_set_tstamp_type()
+call isn't supported by the capture source (the time stamp type is
+left as the default),
 .B PCAP_WARNING
 on success with any other warning,
 .B PCAP_ERROR_ACTIVATED
@@ -52,6 +57,9 @@
 exist,
 .B PCAP_ERROR_PERM_DENIED
 if the process doesn't have permission to open the capture source,
+.B PCAP_ERROR_PROMISC_PERM_DENIED
+if the process has permission to open the capture source but doesn't
+have permission to put it into promiscuous mode,
 .B PCAP_ERROR_RFMON_NOTSUP
 if monitor mode was specified but the capture source doesn't support
 monitor mode,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_can_set_rfmo=
n.3pcap
--- a/head/contrib/libpcap/pcap_can_set_rfmon.3pcap	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/libpcap/pcap_can_set_rfmon.3pcap	Wed Jul 25 16:21:35 201=
2 +0300
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_CAN_SET_RFMON 3PCAP "5 April 2008"
+.TH PCAP_CAN_SET_RFMON 3PCAP "18 May 2010"
 .SH NAME
 pcap_can_set_rfmon \- check whether monitor mode can be set for a
 not-yet-activated capture handle
@@ -37,11 +37,15 @@
 checks whether monitor mode could be set on a capture handle when
 the handle is activated.
 .SH RETURN VALUE
-.B pcap_set_rfmon()
+.B pcap_can_set_rfmon()
 returns 0 if monitor mode could not be set,
 1 if monitor mode could be set,
 .B PCAP_ERROR_NO_SUCH_DEVICE
-if the device specified when the handle was created doesn't exist,
+if the capture source specified when the handle was created doesn't
+exist,
+.B PCAP_ERROR_PERM_DENIED
+if the process doesn't have permission to check whether monitor mode
+could be supported,
 .B PCAP_ERROR_ACTIVATED
 if called on a capture handle that has been activated, or
 .B PCAP_ERROR
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_compile.3pcap
--- a/head/contrib/libpcap/pcap_compile.3pcap	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_compile.3pcap	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_compile.3pcap.in,v 1.1.2.2 =
2008-10-21 07:44:57 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_compile.3pcap.in,v 1.1 2008=
-10-21 07:33:02 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
@@ -54,9 +54,9 @@
 the filter program.  If the netmask of the network on which packets are
 being captured isn't known to the program, or if packets are being
 captured on the Linux "any" pseudo-interface that can capture on more
-than one network, a value of 0 can be supplied; tests for IPv4 broadcast
-addreses won't be done correctly, but all other tests in the filter
-program will be OK.
+than one network, a value of PCAP_NETMASK_UNKNOWN can be supplied; tests
+for IPv4 broadcast addresses will fail to compile, but all other tests in
+the filter program will be OK.
 .SH RETURN VALUE
 .B pcap_compile()
 returns 0 on success and \-1 on failure.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_compile.3pca=
p.in
--- a/head/contrib/libpcap/pcap_compile.3pcap.in	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/libpcap/pcap_compile.3pcap.in	Wed Jul 25 16:21:35 2012 +=
0300
@@ -55,7 +55,7 @@
 being captured isn't known to the program, or if packets are being
 captured on the Linux "any" pseudo-interface that can capture on more
 than one network, a value of PCAP_NETMASK_UNKNOWN can be supplied; tests
-for IPv4 broadcast addreses will fail to compile, but all other tests in
+for IPv4 broadcast addresses will fail to compile, but all other tests in
 the filter program will be OK.
 .SH RETURN VALUE
 .B pcap_compile()
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_datalink.3pc=
ap
--- a/head/contrib/libpcap/pcap_datalink.3pcap	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/libpcap/pcap_datalink.3pcap	Wed Jul 25 16:21:35 2012 +03=
00
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_datalink.3pcap.in,v 1.1.2.2=
 2008-10-21 07:44:57 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_datalink.3pcap.in,v 1.1 200=
8-10-21 07:33:02 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_DATALINK 3PCAP "5 April 2008"
+.TH PCAP_DATALINK 3PCAP "22 August 2010"
 .SH NAME
 pcap_datalink \- get the link-layer header type
 .SH SYNOPSIS
@@ -34,7 +34,7 @@
 .fi
 .SH DESCRIPTION
 .B pcap_datalink()
-returns the link layer type for the live capture or ``savefile''
+returns the link-layer header type for the live capture or ``savefile''
 specified by
 .IR p .
 .SH SEE ALSO
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_datalink.3pc=
ap.in
--- a/head/contrib/libpcap/pcap_datalink.3pcap.in	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/libpcap/pcap_datalink.3pcap.in	Wed Jul 25 16:21:35 2012 =
+0300
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_DATALINK 3PCAP "5 April 2008"
+.TH PCAP_DATALINK 3PCAP "22 August 2010"
 .SH NAME
 pcap_datalink \- get the link-layer header type
 .SH SYNOPSIS
@@ -34,7 +34,7 @@
 .fi
 .SH DESCRIPTION
 .B pcap_datalink()
-returns the link layer type for the live capture or ``savefile''
+returns the link-layer header type for the live capture or ``savefile''
 specified by
 .IR p .
 .SH SEE ALSO
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_datalink_nam=
e_to_val.3pcap
--- a/head/contrib/libpcap/pcap_datalink_name_to_val.3pcap	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_datalink_name_to_val.3pcap	Wed Jul 25 16:21=
:35 2012 +0300
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_DATALINK_NAME_TO_VAL 3PCAP "5 April 2008"
+.TH PCAP_DATALINK_NAME_TO_VAL 3PCAP "22 August 2010"
 .SH NAME
 pcap_datalink_name_to_val \- get the link-layer header type value
 corresponding to a header type name
@@ -35,12 +35,12 @@
 .fi
 .SH DESCRIPTION
 .B pcap_datalink_name_to_val()
-translates a data link type name, which is a
+translates a link-layer header type name, which is a
 .B DLT_
 name with the
 .B DLT_
-removed, to the corresponding data link type value.  The translation
-is case-insensitive.
+removed, to the corresponding link-layer header type value.  The
+translation is case-insensitive.
 .SH RETURN VALUE
 .B pcap_datalink_name_to_val()
 returns 0 on success and \-1 on failure.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_datalink_val=
_to_name.3pcap
--- a/head/contrib/libpcap/pcap_datalink_val_to_name.3pcap	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_datalink_val_to_name.3pcap	Wed Jul 25 16:21=
:35 2012 +0300
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_DATALINK_VAL_TO_NAME 3PCAP "24 December 2008"
+.TH PCAP_DATALINK_VAL_TO_NAME 3PCAP "22 August 2010"
 .SH NAME
 pcap_datalink_val_to_name, pcap_datalink_val_to_description \- get a
 name or description for a link-layer header type value
@@ -36,9 +36,9 @@
 .fi
 .SH DESCRIPTION
 .B pcap_datalink_val_to_name()
-translates a data link type value to the corresponding data link type
-name.  NULL is returned on failure.
+translates a link-layer header type value to the corresponding
+link-layer header type name.  NULL is returned on failure.
 .PP
 .B pcap_datalink_val_to_description()
-translates a data link type value to a short description of that data
-link type.  NULL is returned on failure.
+translates a link-layer header type value to a short description of that
+link-layer header type.  NULL is returned on failure.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_dump_open.3p=
cap
--- a/head/contrib/libpcap/pcap_dump_open.3pcap	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/libpcap/pcap_dump_open.3pcap	Wed Jul 25 16:21:35 2012 +0=
300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_dump_open.3pcap.in,v 1.1.2.=
2 2008-10-23 05:59:43 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_dump_open.3pcap.in,v 1.1 20=
08-10-23 05:56:59 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_fileno.3pcap
--- a/head/contrib/libpcap/pcap_fileno.3pcap	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_fileno.3pcap	Wed Jul 25 16:21:35 2012 +0300
@@ -47,7 +47,7 @@
 .LP
 If
 .I p
-refers to a ``savefile'' that was opened using fuctions such as
+refers to a ``savefile'' that was opened using functions such as
 .BR pcap_open_offline()
 or
 .BR pcap_fopen_offline() ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_findalldevs.=
3pcap
--- a/head/contrib/libpcap/pcap_findalldevs.3pcap	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/libpcap/pcap_findalldevs.3pcap	Wed Jul 25 16:21:35 2012 =
+0300
@@ -19,9 +19,10 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_FINDALLDEVS 3PCAP "5 April 2008"
+.TH PCAP_FINDALLDEVS 3PCAP "22 August 2010"
 .SH NAME
-pcap_findalldevs \- get a list of capture devices
+pcap_findalldevs, pcap_freealldevs \- get a list of capture devices, and
+free that list
 .SH SYNOPSIS
 .nf
 .ft B
@@ -35,6 +36,7 @@
 .LP
 .ft B
 int pcap_findalldevs(pcap_if_t **alldevsp, char *errbuf);
+void pcap_freealldevs(pcap_if_t *alldevs);
 .ft
 .fi
 .SH DESCRIPTION
@@ -48,12 +50,17 @@
 (Note that there may be network devices that cannot be opened by the
 process calling
 .BR pcap_findalldevs() ,
-because, for example, that process might not have sufficient privileges
+because, for example, that process does not have sufficient privileges
 to open them for capturing; if so, those devices will not appear on the
 list.)
+If
+.B pcap_findalldevs()
+succeeds, the pointer pointed to by
 .I alldevsp
-is set to point to the first element of the list; each element of the
-list is of type
+is set to point to the first element of the list, or to
+.B NULL
+if no devices were found (this is considered success).
+Each element of the list is of type
 .BR pcap_if_t ,
 and has the following members:
 .RS
@@ -75,14 +82,18 @@
 a pointer to a string giving a human-readable description of the device
 .TP
 .B addresses
-a pointer to the first element of a list of addresses for the interface
+a pointer to the first element of a list of network addresses for the
+device,
+or
+.B NULL
+if the device has no addresses
 .TP
 .B flags
-interface flags:
+device flags:
 .RS
 .TP
 .B PCAP_IF_LOOPBACK
-set if the interface is a loopback interface
+set if the device is a loopback interface
 .RE
 .RE
 .PP
@@ -119,7 +130,7 @@
 that contains the broadcast address corresponding to the address pointed
 to by
 .BR addr ;
-may be null if the interface doesn't support broadcasts
+may be null if the device doesn't support broadcasts
 .TP
 .B dstaddr
 if not
@@ -129,21 +140,40 @@
 that contains the destination address corresponding to the address pointed
 to by
 .BR addr ;
-may be null if the interface isn't a point-to-point interface
+may be null if the device isn't a point-to-point interface
 .RE
 .PP
-Note that not all the addresses in the list of addresses are
-necessarily IPv4 or IPv6 addresses - you must check the
+Note that the addresses in the list of addresses might be IPv4
+addresses, IPv6 addresses, or some other type of addresses, so you must
+check the
 .B sa_family
 member of the
 .B "struct sockaddr"
-before interpreting the contents of the address.
+before interpreting the contents of the address; do not assume that the
+addresses are all IPv4 addresses, or even all IPv4 or IPv6 addresses.
+IPv4 addresses have the value
+.BR AF_INET ,
+IPv6 addresses have the value
+.B AF_INET6
+(which older operating systems that don't support IPv6 might not
+define), and other addresses have other values.  Whether other addresses
+are returned, and what types they might have is platform-dependent.
+For IPv4 addresses, the
+.B "struct sockaddr"
+pointer can be interpreted as if it pointed to a
+.BR "struct sockaddr_in" ;
+for IPv6 addresses, it can be interpreted as if it pointed to a
+.BR "struct sockaddr_in6".
 .PP
 The list of devices must be freed with
-.BR pcap_freealldevs() .
+.BR pcap_freealldevs() ,
+whch frees the list pointed to by
+.IR alldevs .
 .SH RETURN VALUE
 .B pcap_findalldevs()
-returns 0 on success and \-1 on failure.
+returns 0 on success and \-1 on failure; as indicated, finding no
+devices is considered success, rather than failure, so 0 will be
+returned in that case.
 If \-1 is returned,
 .I errbuf
 is filled in with an appropriate error message.
@@ -153,4 +183,4 @@
 chars.
 .SH SEE ALSO
 pcap(3PCAP), pcap_create(3PCAP), pcap_activate(3PCAP),
-pcap_open_live(3PCAP), pcap_freealldevs(3PCAP)
+pcap_open_live(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_free_datalin=
ks.3pcap
--- a/head/contrib/libpcap/pcap_free_datalinks.3pcap	Wed Jul 25 16:20:13 20=
12 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_free_datalinks.3pcap,v 1.1 =
2008-05-26 19:58:06 guy Exp $
-.\"
-.\" Copyright (c) 1994, 1996, 1997
-.\"	The Regents of the University of California.  All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that: (1) source code distributio=
ns
-.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
-.\" distributions including binary code include the above copyright notice=
 and
-.\" this paragraph in its entirety in the documentation or other materials
-.\" provided with the distribution, and (3) all advertising materials ment=
ioning
-.\" features or use of this software display the following acknowledgement:
-.\" ``This product includes software developed by the University of Califo=
rnia,
-.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
-.\" the University nor the names of its contributors may be used to endorse
-.\" or promote products derived from this software without specific prior
-.\" written permission.
-.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
-.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-.\"
-.TH PCAP_FREE_DATALINKS 3PCAP "26 May 2008"
-.SH NAME
-pcap_free_datalinks \- free a list of link-layer header types from
-pcap_get_datalinks()
-.SH SYNOPSIS
-.nf
-.ft B
-#include <pcap/pcap.h>
-.ft
-.LP
-.ft B
-void pcap_free_datalinks(int *dlt_list);
-.ft
-.fi
-.SH DESCRIPTION
-.B pcap_free_datalinks()
-is used to free a list of supported data link types returned by
-.BR pcap_list_datalinks() .
-.SH SEE ALSO
-pcap(3PCAP), pcap_list_datalinks(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_freealldevs.=
3pcap
--- a/head/contrib/libpcap/pcap_freealldevs.3pcap	Wed Jul 25 16:20:13 2012 =
+0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_freealldevs.3pcap,v 1.3 200=
8-04-06 02:53:22 guy Exp $
-.\"
-.\" Copyright (c) 1994, 1996, 1997
-.\"	The Regents of the University of California.  All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that: (1) source code distributio=
ns
-.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
-.\" distributions including binary code include the above copyright notice=
 and
-.\" this paragraph in its entirety in the documentation or other materials
-.\" provided with the distribution, and (3) all advertising materials ment=
ioning
-.\" features or use of this software display the following acknowledgement:
-.\" ``This product includes software developed by the University of Califo=
rnia,
-.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
-.\" the University nor the names of its contributors may be used to endorse
-.\" or promote products derived from this software without specific prior
-.\" written permission.
-.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
-.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-.\"
-.TH PCAP_FREEALLDEVS 3PCAP "5 April 2008"
-.SH NAME
-pcap_freealldevs \- free a list of capture devices
-.SH SYNOPSIS
-.nf
-.ft B
-#include <pcap/pcap.h>
-.ft
-.LP
-.ft B
-void pcap_freealldevs(pcap_if_t *alldevs);
-.ft
-.fi
-.SH DESCRIPTION
-.B pcap_freealldevs()
-is used to free a list allocated by
-.BR pcap_findalldevs() .
-.SH SEE ALSO
-pcap(3PCAP), pcap_findalldevs(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_get_selectab=
le_fd.3pcap
--- a/head/contrib/libpcap/pcap_get_selectable_fd.3pcap	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/libpcap/pcap_get_selectable_fd.3pcap	Wed Jul 25 16:21:35=
 2012 +0300
@@ -56,19 +56,29 @@
 (for example, regular network devices on FreeBSD 4.3 and 4.4, and Endace
 DAG devices), so \-1 is returned for those devices.
 .PP
-Note that on most versions of most BSDs (including Mac OS X)
+Note that in:
+.IP
+FreeBSD prior to FreeBSD 4.6;
+.IP
+NetBSD prior to NetBSD 3.0;
+.IP
+OpenBSD prior to OpenBSD 2.4;
+.IP
+Mac OS X prior to Mac OS X 10.7;
+.PP
 .B select()
 and
 .B poll()
 do not work correctly on BPF devices;
 .B pcap_get_selectable_fd()
 will return a file descriptor on most of those versions (the exceptions
-being FreeBSD 4.3 and 4.4), a simple
+being FreeBSD 4.3 and 4.4), but a simple
 .B select()
 or
 .B poll()
-will not return even after the read timeout expires.  To work around
-this, an application that uses
+will not indicate that the descriptor is readable until a full buffer's
+worth of packets is received, even if the read timeout expires before
+then.  To work around this, an application that uses
 .B select()
 or
 .B poll()
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_list_datalin=
ks.3pcap
--- a/head/contrib/libpcap/pcap_list_datalinks.3pcap	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/libpcap/pcap_list_datalinks.3pcap	Wed Jul 25 16:21:35 20=
12 +0300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_list_datalinks.3pcap.in,v 1=
.1.2.2 2008-10-21 07:44:57 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_list_datalinks.3pcap.in,v 1=
.1 2008-10-21 07:33:02 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
@@ -19,10 +19,10 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_LIST_DATALINKS 3PCAP "5 April 2008"
+.TH PCAP_LIST_DATALINKS 3PCAP "22 August 2010"
 .SH NAME
-pcap_list_datalinks \- get a list of link-layer header types supported
-by a capture device
+pcap_list_datalinks, pcap_free_datalinks \- get a list of link-layer header
+types supported by a capture device, and free that list
 .SH SYNOPSIS
 .nf
 .ft B
@@ -31,21 +31,26 @@
 .LP
 .ft B
 int pcap_list_datalinks(pcap_t *p, int **dlt_buf);
+void pcap_free_datalinks(int *dlt_list);
 .ft
 .fi
 .SH DESCRIPTION
 .B pcap_list_datalinks()
-is used to get a list of the supported data link types of the interface
-associated with the pcap descriptor.
+is used to get a list of the supported link-layer header types of the
+interface associated with the pcap descriptor.
 .B pcap_list_datalinks()
 allocates an array to hold the list and sets
-.IR *dlt_buf .
+.IR *dlt_buf=20
+to point to that array.
+.LP
 The caller is responsible for freeing the array with
-.BR pcap_free_datalinks (3PCAP).
+.BR pcap_free_datalinks() ,
+which frees the list of link-layer header types pointed to by
+.IR dlt_list .
 .SH RETURN VALUE
 .B pcap_list_datalinks()
-returns the number of data link types in the array on success and \-1
-on failure.
+returns the number of link-layer header types in the array on success
+and \-1 on failure.
 If \-1 is returned,
 .B pcap_geterr()
 or
@@ -54,5 +59,6 @@
 .I p
 as an argument to fetch or display the error text.
 .SH SEE ALSO
-pcap(3PCAP), pcap_geterr(3PCAP), pcap_free_datalinks(3PCAP),
+pcap(3PCAP), pcap_geterr(3PCAP),
+pcap_datalink_val_to_name(3PCAP),
 pcap-linktype(7)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_list_datalin=
ks.3pcap.in
--- a/head/contrib/libpcap/pcap_list_datalinks.3pcap.in	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/libpcap/pcap_list_datalinks.3pcap.in	Wed Jul 25 16:21:35=
 2012 +0300
@@ -19,10 +19,10 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_LIST_DATALINKS 3PCAP "5 April 2008"
+.TH PCAP_LIST_DATALINKS 3PCAP "22 August 2010"
 .SH NAME
-pcap_list_datalinks \- get a list of link-layer header types supported
-by a capture device
+pcap_list_datalinks, pcap_free_datalinks \- get a list of link-layer header
+types supported by a capture device, and free that list
 .SH SYNOPSIS
 .nf
 .ft B
@@ -31,21 +31,26 @@
 .LP
 .ft B
 int pcap_list_datalinks(pcap_t *p, int **dlt_buf);
+void pcap_free_datalinks(int *dlt_list);
 .ft
 .fi
 .SH DESCRIPTION
 .B pcap_list_datalinks()
-is used to get a list of the supported data link types of the interface
-associated with the pcap descriptor.
+is used to get a list of the supported link-layer header types of the
+interface associated with the pcap descriptor.
 .B pcap_list_datalinks()
 allocates an array to hold the list and sets
-.IR *dlt_buf .
+.IR *dlt_buf=20
+to point to that array.
+.LP
 The caller is responsible for freeing the array with
-.BR pcap_free_datalinks (3PCAP).
+.BR pcap_free_datalinks() ,
+which frees the list of link-layer header types pointed to by
+.IR dlt_list .
 .SH RETURN VALUE
 .B pcap_list_datalinks()
-returns the number of data link types in the array on success and \-1
-on failure.
+returns the number of link-layer header types in the array on success
+and \-1 on failure.
 If \-1 is returned,
 .B pcap_geterr()
 or
@@ -54,5 +59,6 @@
 .I p
 as an argument to fetch or display the error text.
 .SH SEE ALSO
-pcap(3PCAP), pcap_geterr(3PCAP), pcap_free_datalinks(3PCAP),
+pcap(3PCAP), pcap_geterr(3PCAP),
+pcap_datalink_val_to_name(3PCAP),
 pcap-linktype(@MAN_MISC_INFO@)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_list_tstamp_=
types.3pcap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_list_tstamp_types.3pcap	Wed Jul 25 16:21:35=
 2012 +0300
@@ -0,0 +1,70 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_LIST_TSTAMP_TYPES 3PCAP "21 August 2010"
+.SH NAME
+pcap_list_tstamp_types, pcap_free_tstamp_types \- get a list of time
+stamp types supported by a capture device, and free that list
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap/pcap.h>
+.ft
+.LP
+.ft B
+int pcap_list_tstamp_types(pcap_t *p, int **tstamp_typesp);
+void pcap_free_tstamp_types(int *tstamp_types);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_list_tstamp_types()
+is used to get a list of the supported time stamp types of the interface
+associated with the pcap descriptor.
+.B pcap_list_tstamp_types()
+allocates an array to hold the list and sets
+.I *tstamp_typesp
+to point to the array.
+See
+.BR pcap-tstamp (7)
+for a list of all the time stamp types.
+.PP
+The caller is responsible for freeing the array with
+.BR pcap_free_tstamp_types() ,
+which frees the list pointed to by
+.IR tstamp_types .
+.SH RETURN VALUE
+.B pcap_list_tstamp_types()
+returns the number of time stamp types in the array on success and
+.B PCAP_ERROR
+on failure.
+A return value of zero means that you cannot specify a time stamp type;
+you are limited to the capture device's default time stamp type.
+If
+.B PCAP_ERROR
+is returned,
+.B pcap_geterr()
+or
+.B pcap_perror()
+may be called with
+.I p
+as an argument to fetch or display the error text.
+.SH SEE ALSO
+pcap(3PCAP), pcap_geterr(3PCAP), pcap_tstamp_type_val_to_name(3PCAP),
+pcap-tstamp(7)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_list_tstamp_=
types.3pcap.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_list_tstamp_types.3pcap.in	Wed Jul 25 16:21=
:35 2012 +0300
@@ -0,0 +1,70 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_LIST_TSTAMP_TYPES 3PCAP "21 August 2010"
+.SH NAME
+pcap_list_tstamp_types, pcap_free_tstamp_types \- get a list of time
+stamp types supported by a capture device, and free that list
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap/pcap.h>
+.ft
+.LP
+.ft B
+int pcap_list_tstamp_types(pcap_t *p, int **tstamp_typesp);
+void pcap_free_tstamp_types(int *tstamp_types);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_list_tstamp_types()
+is used to get a list of the supported time stamp types of the interface
+associated with the pcap descriptor.
+.B pcap_list_tstamp_types()
+allocates an array to hold the list and sets
+.I *tstamp_typesp
+to point to the array.
+See
+.BR pcap-tstamp (@MAN_MISC_INFO@)
+for a list of all the time stamp types.
+.PP
+The caller is responsible for freeing the array with
+.BR pcap_free_tstamp_types() ,
+which frees the list pointed to by
+.IR tstamp_types .
+.SH RETURN VALUE
+.B pcap_list_tstamp_types()
+returns the number of time stamp types in the array on success and
+.B PCAP_ERROR
+on failure.
+A return value of zero means that you cannot specify a time stamp type;
+you are limited to the capture device's default time stamp type.
+If
+.B PCAP_ERROR
+is returned,
+.B pcap_geterr()
+or
+.B pcap_perror()
+may be called with
+.I p
+as an argument to fetch or display the error text.
+.SH SEE ALSO
+pcap(3PCAP), pcap_geterr(3PCAP), pcap_tstamp_type_val_to_name(3PCAP),
+pcap-tstamp(@MAN_MISC_INFO@)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_loop.3pcap
--- a/head/contrib/libpcap/pcap_loop.3pcap	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_loop.3pcap	Wed Jul 25 16:21:35 2012 +0300
@@ -109,7 +109,12 @@
 (as given in the
 .I struct pcap_pkthdr
 a pointer to which is passed to the callback routine)
-bytes of data from the packet.
+bytes of data from the packet.  The
+.I struct pcap_pkthdr
+and the packet data are not to be freed by the callback routine, and are
+not guaranteed to be valid after the callback routine returns; if the
+code needs them to be valid after the callback, it must make a copy of
+them.
 .SH RETURN VALUE
 .B pcap_loop()
 returns 0 if
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_major_versio=
n.3pcap
--- a/head/contrib/libpcap/pcap_major_version.3pcap	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/libpcap/pcap_major_version.3pcap	Wed Jul 25 16:21:35 201=
2 +0300
@@ -36,12 +36,14 @@
 .SH DESCRIPTION
 If
 .I p
-refers to a savefile,
+refers to a ``savefile'',
 .B pcap_major_version()
-returns the major number of the file format of the savefile and
+returns the major number of the file format of the ``savefile'' and
 .B pcap_minor_version()
-returns the minor number of the file format of the savefile.  The
-version number is stored in the header of the savefile.
+returns the minor number of the file format of the ``savefile''.  The
+version number is stored in the ``savefile''; note that the meaning of
+its values depends on the type of ``savefile'' (for example, pcap or
+pcap-NG).
 .PP
 If
 .I p
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_next_ex.3pcap
--- a/head/contrib/libpcap/pcap_next_ex.3pcap	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/pcap_next_ex.3pcap	Wed Jul 25 16:21:35 2012 +0300
@@ -45,7 +45,16 @@
 struct for the packet, and the
 pointer pointed to by the
 .I pkt_data
-argument is set to point to the data in the packet.
+argument is set to point to the data in the packet.  The
+.I struct pcap_pkthdr
+and the packet data are not to be freed by the caller, and are not
+guaranteed to be valid after the next call to
+.BR pcap_next_ex() ,
+.BR pcap_next() ,
+.BR pcap_loop() ,
+or
+.BR pcap_dispatch() ;
+if the code needs them to remain valid, it must make a copy of them.
 .PP
 .B pcap_next()
 reads the next packet (by calling
@@ -54,7 +63,15 @@
 .I cnt
 of 1) and returns a
 .I u_char
-pointer to the data in that packet.
+pointer to the data in that packet.  The
+packet data is not to be freed by the caller, and is not
+guaranteed to be valid after the next call to
+.BR pcap_next_ex() ,
+.BR pcap_next() ,
+.BR pcap_loop() ,
+or
+.BR pcap_dispatch() ;
+if the code needs it to remain valid, it must make a copy of it.
 The
 .I pcap_pkthdr
 structure pointed to by
@@ -78,13 +95,13 @@
 .B pcap_next()
 returns a pointer to the packet data on success, and returns
 .B NULL
-if an error occured, or if no packets were read from a live
+if an error occurred, or if no packets were read from a live
 capture (if, for example, they were discarded because they didn't pass
 the packet filter, or if, on platforms that support a read timeout that
 starts before any packets arrive, the timeout expires before any packets
 arrive, or if the file descriptor for the capture device is in
 non-blocking mode and no packets were available to be read), or if no
 more packets are available in a ``savefile.''  Unfortunately, there is
-no way to determine whether an error occured or not.
+no way to determine whether an error occurred or not.
 .SH SEE ALSO
 pcap(3PCAP), pcap_geterr(3PCAP), pcap_dispatch(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_open_dead.3p=
cap
--- a/head/contrib/libpcap/pcap_open_dead.3pcap	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/libpcap/pcap_open_dead.3pcap	Wed Jul 25 16:21:35 2012 +0=
300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_open_dead.3pcap.in,v 1.1.2.=
2 2008-10-21 07:44:57 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_open_dead.3pcap.in,v 1.1 20=
08-10-21 07:33:02 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_open_live.3p=
cap
--- a/head/contrib/libpcap/pcap_open_live.3pcap	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/libpcap/pcap_open_live.3pcap	Wed Jul 25 16:21:35 2012 +0=
300
@@ -74,7 +74,7 @@
 .I errbuf
 may also be set to warning text when
 .B pcap_open_live()
-succeds; to detect this case the caller should store a zero-length string =
in
+succeeds; to detect this case the caller should store a zero-length string=
 in
 .I errbuf
 before calling
 .B pcap_open_live()
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_open_offline=
.3pcap
--- a/head/contrib/libpcap/pcap_open_offline.3pcap	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/libpcap/pcap_open_offline.3pcap	Wed Jul 25 16:21:35 2012=
 +0300
@@ -1,4 +1,4 @@
-.\" @(#) $Header: /tcpdump/master/libpcap/pcap_open_offline.3pcap.in,v 1.1=
.2.2 2008-10-23 05:59:43 guy Exp $
+.\" @(#) $Header: /tcpdump/master/libpcap/pcap_open_offline.3pcap.in,v 1.1=
 2008-10-23 05:56:59 guy Exp $
 .\"
 .\" Copyright (c) 1994, 1996, 1997
 .\"	The Regents of the University of California.  All rights reserved.
@@ -43,11 +43,15 @@
 is called to open a ``savefile'' for reading.
 .PP
 .I fname
-specifies the name of the file to open. The file has
-the same format as those used by
+specifies the name of the file to open. The file can have the pcap file
+format as described in
+.BR pcap-savefile (5),
+which is the file format used by, among other programs,
 .BR tcpdump (1)
 and
-.BR tcpslice (1).
+.BR tcpslice (1),
+or can have the pcap-ng file format, although not all pcap-ng files can
+be read.
 The name "-" in a synonym for
 .BR stdin .
 .PP
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_set_datalink=
.3pcap
--- a/head/contrib/libpcap/pcap_set_datalink.3pcap	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/libpcap/pcap_set_datalink.3pcap	Wed Jul 25 16:21:35 2012=
 +0300
@@ -19,7 +19,7 @@
 .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
-.TH PCAP_SET_DATALINK 3PCAP "5 April 2008"
+.TH PCAP_SET_DATALINK 3PCAP "22 August 2010"
 .SH NAME
 pcap_set_datalink \- set the link-layer header type to be used by a
 capture device
@@ -35,7 +35,7 @@
 .fi
 .SH DESCRIPTION
 .B pcap_set_datalink()
-is used to set the current data link type of the pcap descriptor
+is used to set the current link-layer header type of the pcap descriptor
 to the type specified by
 .IR dlt .
 .SH RETURN VALUE
@@ -49,4 +49,5 @@
 .I p
 as an argument to fetch or display the error text.
 .SH SEE ALSO
-pcap(3PCAP), pcap_geterr(3PCAP)
+pcap(3PCAP), pcap_geterr(3PCAP),
+pcap_datalink_name_to_val(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_set_tstamp_t=
ype.3pcap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_set_tstamp_type.3pcap	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,65 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_SET_TSTAMP_TYPE 3PCAP "21 August 2010"
+.SH NAME
+pcap_set_tstamp_type \- set the time stamp type to be used by a
+capture device
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap/pcap.h>
+.ft
+.LP
+.ft B
+int pcap_set_tstamp_type(pcap_t *p, int tstamp_type);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_set_tstamp_type()
+sets the the type of time stamp desired for packets captured on the pcap
+descriptor to the type specified by
+.IR tstamp_type .
+It must be called on a pcap descriptor created by
+.B pcap_create()
+that has not yet been activated by
+.BR pcap_activate() .
+.B pcap_list_tstamp_types()
+will give a list of the time stamp types supported by a given capture
+device.
+See
+.BR pcap-tstamp (7)
+for a list of all the time stamp types.
+.SH RETURN VALUE
+.B pcap_set_tstamp_type()
+returns 0 on success if the specified time stamp type is expected to be
+supported by the capture device,
+.B PCAP_WARNING_TSTAMP_TYPE_NOTSUP
+on success if the specified time stamp type is not supported by the
+capture device,
+.B PCAP_ERROR_ACTIVATED
+if called on a capture handle that has been activated, and
+.B PCAP_ERROR_CANTSET_TSTAMP_TYPE
+if the capture device doesn't support setting the time stamp type.
+.SH SEE ALSO
+pcap(3PCAP),
+pcap_list_tstamp_types(3PCAP),
+pcap_tstamp_type_name_to_val(3PCAP),
+pcap-tstamp(7)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_set_tstamp_t=
ype.3pcap.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_set_tstamp_type.3pcap.in	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,65 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_SET_TSTAMP_TYPE 3PCAP "21 August 2010"
+.SH NAME
+pcap_set_tstamp_type \- set the time stamp type to be used by a
+capture device
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap/pcap.h>
+.ft
+.LP
+.ft B
+int pcap_set_tstamp_type(pcap_t *p, int tstamp_type);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_set_tstamp_type()
+sets the the type of time stamp desired for packets captured on the pcap
+descriptor to the type specified by
+.IR tstamp_type .
+It must be called on a pcap descriptor created by
+.B pcap_create()
+that has not yet been activated by
+.BR pcap_activate() .
+.B pcap_list_tstamp_types()
+will give a list of the time stamp types supported by a given capture
+device.
+See
+.BR pcap-tstamp (@MAN_MISC_INFO@)
+for a list of all the time stamp types.
+.SH RETURN VALUE
+.B pcap_set_tstamp_type()
+returns 0 on success if the specified time stamp type is expected to be
+supported by the capture device,
+.B PCAP_WARNING_TSTAMP_TYPE_NOTSUP
+on success if the specified time stamp type is not supported by the
+capture device,
+.B PCAP_ERROR_ACTIVATED
+if called on a capture handle that has been activated, and
+.B PCAP_ERROR_CANTSET_TSTAMP_TYPE
+if the capture device doesn't support setting the time stamp type.
+.SH SEE ALSO
+pcap(3PCAP),
+pcap_list_tstamp_types(3PCAP),
+pcap_tstamp_type_name_to_val(3PCAP),
+pcap-tstamp(@MAN_MISC_INFO@)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_tstamp_type_=
name_to_val.3pcap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_tstamp_type_name_to_val.3pcap	Wed Jul 25 16=
:21:35 2012 +0300
@@ -0,0 +1,45 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_TSTAMP_TYPE_NAME_TO_VAL 3PCAP "21 August 2010"
+.SH NAME
+pcap_tstamp_type_name_to_val \- get the time stamp type value
+corresponding to a time stamp type name
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap/pcap.h>
+.ft
+.LP
+.ft B
+int pcap_tstamp_type_name_to_val(const char *name);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_tstamp_type_name_to_val()
+translates a time stamp type name to the corresponding time stamp type
+value.  The translation is case-insensitive.
+.SH RETURN VALUE
+.B pcap_tstamp_type_name_to_val()
+returns 0 on success and
+.B PCAP_ERROR
+on failure.
+.SH SEE ALSO
+pcap(3PCAP), pcap_tstamp_type_val_to_name(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/pcap_tstamp_type_=
val_to_name.3pcap
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/pcap_tstamp_type_val_to_name.3pcap	Wed Jul 25 16=
:21:35 2012 +0300
@@ -0,0 +1,45 @@
+.\"
+.\" Copyright (c) 1994, 1996, 1997
+.\"	The Regents of the University of California.  All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that: (1) source code distributio=
ns
+.\" retain the above copyright notice and this paragraph in its entirety, =
(2)
+.\" distributions including binary code include the above copyright notice=
 and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials ment=
ioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of Califo=
rnia,
+.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name =
of
+.\" the University nor the names of its contributors may be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.TH PCAP_TSTAMP_TYPE_VAL_TO_NAME 3PCAP "21 August 2010"
+.SH NAME
+pcap_tstamp_type_val_to_name, pcap_tstamp_type_val_to_description \- get
+a name or description for a time stamp type value
+.SH SYNOPSIS
+.nf
+.ft B
+#include <pcap.h>
+.ft
+.LP
+.ft B
+const char *pcap_tstamp_type_val_to_name(int tstamp_type);
+const char *pcap_tstamp_type_val_to_description(int tstamp_type);
+.ft
+.fi
+.SH DESCRIPTION
+.B pcap_tstamp_type_val_to_name()
+translates a time stamp type value to the corresponding time stamp type
+name.  NULL is returned on failure.
+.PP
+.B pcap_tstamp_type_val_to_description()
+translates a time stamp type value to a short description of that time
+stamp type.  NULL is returned on failure.
+.SH SEE ALSO
+pcap(3PCAP), pcap_tstamp_type_name_to_val(3PCAP)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/savefile.c
--- a/head/contrib/libpcap/savefile.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/savefile.c	Wed Jul 25 16:21:35 2012 +0300
@@ -94,10 +94,16 @@
 sf_setnonblock(pcap_t *p, int nonblock, char *errbuf)
 {
 	/*
-	 * This is a savefile, not a live capture file, so ignore
-	 * requests to put it in non-blocking mode.
+	 * This is a savefile, not a live capture file, so reject
+	 * requests to put it in non-blocking mode.  (If it's a
+	 * pipe, it could be put in non-blocking mode, but that
+	 * would significantly complicate the code to read packets,
+	 * as it would have to handle reading partial packets and
+	 * keeping the state of the read.)
 	 */
-	return (0);
+	snprintf(p->errbuf, PCAP_ERRBUF_SIZE,
+	    "Savefiles cannot be put into non-blocking mode");
+	return (-1);
 }
=20
 static int
@@ -161,6 +167,7 @@
 		(void)fclose(p->sf.rfile);
 	if (p->buffer !=3D NULL)
 		free(p->buffer);
+	pcap_freecode(&p->fcode);
 }
=20
 pcap_t *
@@ -376,7 +383,7 @@
 		}
=20
 		if ((fcode =3D p->fcode.bf_insns) =3D=3D NULL ||
-		    bpf_filter(fcode, p->buffer, h.len, h.caplen)) {
+		    bpf_filter(fcode, data, h.len, h.caplen)) {
 			(*callback)(user, &h, data);
 			if (++n >=3D cnt && cnt > 0)
 				break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/scanner.l
--- a/head/contrib/libpcap/scanner.l	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/scanner.l	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/libpcap/scanner.l 235426 2012-05-14 05:12:56Z de=
lphij $
  */
=20
 #ifndef lint
@@ -56,7 +56,7 @@
 #include <pcap-stdinc.h>
=20
 #ifdef __MINGW32__
-#include "IP6_misc.h"
+#include "ip6_misc.h"
 #endif
 #else /* WIN32 */
 #include <sys/socket.h>	/* for "struct sockaddr" in "struct addrinfo" */
@@ -79,6 +79,7 @@
 static inline int xdtoi(int);
=20
 #ifdef FLEX_SCANNER
+#define YY_NO_INPUT
 #define YY_NO_UNPUT
 static YY_BUFFER_STATE in_buffer;
 #else
@@ -203,6 +204,7 @@
 igrp		return IGRP;
 pim		return PIM;
 vrrp		return VRRP;
+carp		return CARP;
 radio		return RADIO;
=20
 ip6		{
@@ -274,6 +276,8 @@
 address2|addr2	return ADDR2;
 address3|addr3	return ADDR3;
 address4|addr4	return ADDR4;
+ra		return RA;
+ta		return TA;
=20
 less		return LESS;
 greater		return GREATER;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/selpolltest.c
--- a/head/contrib/libpcap/selpolltest.c	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,350 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (=
2)
- * distributions including binary code include the above copyright notice =
and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials menti=
oning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of Califor=
nia,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior
- * written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef lint
-static const char copyright[] =3D
-    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
-The Regents of the University of California.  All rights reserved.\n";
-#endif
-
-#include <pcap.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/select.h>
-#include <poll.h>
-
-char *program_name;
-
-/* Forwards */
-static void countme(u_char *, const struct pcap_pkthdr *, const u_char *);
-static void usage(void) __attribute__((noreturn));
-static void error(const char *, ...);
-static void warning(const char *, ...);
-static char *copy_argv(char **);
-
-static pcap_t *pd;
-
-extern int optind;
-extern int opterr;
-extern char *optarg;
-
-int
-main(int argc, char **argv)
-{
-	register int op;
-	bpf_u_int32 localnet, netmask;
-	register char *cp, *cmdbuf, *device;
-	int doselect, dopoll, dotimeout, dononblock;
-	struct bpf_program fcode;
-	char ebuf[PCAP_ERRBUF_SIZE];
-	int selectable_fd;
-	int status;
-	int packet_count;
-
-	device =3D NULL;
-	doselect =3D 0;
-	dopoll =3D 0;
-	dotimeout =3D 0;
-	dononblock =3D 0;
-	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
-		program_name =3D cp + 1;
-	else
-		program_name =3D argv[0];
-
-	opterr =3D 0;
-	while ((op =3D getopt(argc, argv, "i:sptn")) !=3D -1) {
-		switch (op) {
-
-		case 'i':
-			device =3D optarg;
-			break;
-
-		case 's':
-			doselect =3D 1;
-			break;
-
-		case 'p':
-			dopoll =3D 1;
-			break;
-
-		case 't':
-			dotimeout =3D 1;
-			break;
-
-		case 'n':
-			dononblock =3D 1;
-			break;
-
-		default:
-			usage();
-			/* NOTREACHED */
-		}
-	}
-
-	if (doselect && dopoll) {
-		fprintf(stderr, "selpolltest: choose select (-s) or poll (-p), but not b=
oth\n");
-		return 1;
-	}
-	if (dotimeout && !doselect && !dopoll) {
-		fprintf(stderr, "selpolltest: timeout (-t) requires select (-s) or poll =
(-p)\n");
-		return 1;
-	}
-	if (device =3D=3D NULL) {
-		device =3D pcap_lookupdev(ebuf);
-		if (device =3D=3D NULL)
-			error("%s", ebuf);
-	}
-	*ebuf =3D '\0';
-	pd =3D pcap_open_live(device, 65535, 0, 1000, ebuf);
-	if (pd =3D=3D NULL)
-		error("%s", ebuf);
-	else if (*ebuf)
-		warning("%s", ebuf);
-	if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) {
-		localnet =3D 0;
-		netmask =3D 0;
-		warning("%s", ebuf);
-	}
-	cmdbuf =3D copy_argv(&argv[optind]);
-
-	if (pcap_compile(pd, &fcode, cmdbuf, 1, netmask) < 0)
-		error("%s", pcap_geterr(pd));
-
-	if (pcap_setfilter(pd, &fcode) < 0)
-		error("%s", pcap_geterr(pd));
-	if (pcap_get_selectable_fd(pd) =3D=3D -1)
-		error("pcap_get_selectable_fd() fails");
-	if (dononblock) {
-		if (pcap_setnonblock(pd, 1, ebuf) =3D=3D -1)
-			error("pcap_setnonblock failed: %s", ebuf);
-	}
-	selectable_fd =3D pcap_get_selectable_fd(pd);
-	printf("Listening on %s\n", device);
-	if (doselect) {
-		for (;;) {
-			fd_set setread, setexcept;
-			struct timeval seltimeout;
-
-			FD_ZERO(&setread);
-			FD_SET(selectable_fd, &setread);
-			FD_ZERO(&setexcept);
-			FD_SET(selectable_fd, &setexcept);
-			if (dotimeout) {
-				seltimeout.tv_sec =3D 0;
-				seltimeout.tv_usec =3D 1000;
-				status =3D select(selectable_fd + 1, &setread,
-				    NULL, &setexcept, &seltimeout);
-			} else {
-				status =3D select(selectable_fd + 1, &setread,
-				    NULL, &setexcept, NULL);
-			}
-			if (status =3D=3D -1) {
-				printf("Select returns error (%s)\n",
-				    strerror(errno));
-			} else {
-				if (status =3D=3D 0)
-					printf("Select timed out: ");
-				else
-					printf("Select returned a descriptor: ");
-				if (FD_ISSET(selectable_fd, &setread))
-					printf("readable, ");
-				else
-					printf("not readable, ");
-				if (FD_ISSET(selectable_fd, &setexcept))
-					printf("exceptional condition\n");
-				else
-					printf("no exceptional condition\n");
-				packet_count =3D 0;
-				status =3D pcap_dispatch(pd, -1, countme,
-				    (u_char *)&packet_count);
-				if (status < 0)
-					break;
-				printf("%d packets seen, %d packets counted after select returns\n",
-				    status, packet_count);
-			}
-		}
-	} else if (dopoll) {
-		for (;;) {
-			struct pollfd fd;
-			int polltimeout;
-
-			fd.fd =3D selectable_fd;
-			fd.events =3D POLLIN;
-			if (dotimeout)
-				polltimeout =3D 1;
-			else
-				polltimeout =3D -1;
-			status =3D poll(&fd, 1, polltimeout);
-			if (status =3D=3D -1) {
-				printf("Poll returns error (%s)\n",
-				    strerror(errno));
-			} else {
-				if (status =3D=3D 0)
-					printf("Poll timed out\n");
-				else {
-					printf("Poll returned a descriptor: ");
-					if (fd.revents & POLLIN)
-						printf("readable, ");
-					else
-						printf("not readable, ");
-					if (fd.revents & POLLERR)
-						printf("exceptional condition, ");
-					else
-						printf("no exceptional condition, ");
-					if (fd.revents & POLLHUP)
-						printf("disconnect, ");
-					else
-						printf("no disconnect, ");
-					if (fd.revents & POLLNVAL)
-						printf("invalid\n");
-					else
-						printf("not invalid\n");
-				}
-				packet_count =3D 0;
-				status =3D pcap_dispatch(pd, -1, countme,
-				    (u_char *)&packet_count);
-				if (status < 0)
-					break;
-				printf("%d packets seen, %d packets counted after poll returns\n",
-				    status, packet_count);
-			}
-		}
-	} else {
-		for (;;) {
-			packet_count =3D 0;
-			status =3D pcap_dispatch(pd, -1, countme,
-			    (u_char *)&packet_count);
-			if (status < 0)
-				break;
-			printf("%d packets seen, %d packets counted after pcap_dispatch returns=
\n",
-			    status, packet_count);
-		}
-	}
-	if (status =3D=3D -2) {
-		/*
-		 * We got interrupted, so perhaps we didn't
-		 * manage to finish a line we were printing.
-		 * Print an extra newline, just in case.
-		 */
-		putchar('\n');
-	}
-	(void)fflush(stdout);
-	if (status =3D=3D -1) {
-		/*
-		 * Error.  Report it.
-		 */
-		(void)fprintf(stderr, "%s: pcap_loop: %s\n",
-		    program_name, pcap_geterr(pd));
-	}
-	pcap_close(pd);
-	exit(status =3D=3D -1 ? 1 : 0);
-}
-
-static void
-countme(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
-{
-	int *counterp =3D (int *)user;
-
-	(*counterp)++;
-}
-
-static void
-usage(void)
-{
-	(void)fprintf(stderr, "Usage: %s [ -sptn ] [ -i interface ] [expression]\=
n",
-	    program_name);
-	exit(1);
-}
-
-/* VARARGS */
-static void
-error(const char *fmt, ...)
-{
-	va_list ap;
-
-	(void)fprintf(stderr, "%s: ", program_name);
-	va_start(ap, fmt);
-	(void)vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	if (*fmt) {
-		fmt +=3D strlen(fmt);
-		if (fmt[-1] !=3D '\n')
-			(void)fputc('\n', stderr);
-	}
-	exit(1);
-	/* NOTREACHED */
-}
-
-/* VARARGS */
-static void
-warning(const char *fmt, ...)
-{
-	va_list ap;
-
-	(void)fprintf(stderr, "%s: WARNING: ", program_name);
-	va_start(ap, fmt);
-	(void)vfprintf(stderr, fmt, ap);
-	va_end(ap);
-	if (*fmt) {
-		fmt +=3D strlen(fmt);
-		if (fmt[-1] !=3D '\n')
-			(void)fputc('\n', stderr);
-	}
-}
-
-/*
- * Copy arg vector into a new buffer, concatenating arguments with spaces.
- */
-static char *
-copy_argv(register char **argv)
-{
-	register char **p;
-	register u_int len =3D 0;
-	char *buf;
-	char *src, *dst;
-
-	p =3D argv;
-	if (*p =3D=3D 0)
-		return 0;
-
-	while (*p)
-		len +=3D strlen(*p++) + 1;
-
-	buf =3D (char *)malloc(len);
-	if (buf =3D=3D NULL)
-		error("copy_argv: malloc");
-
-	p =3D argv;
-	dst =3D buf;
-	while ((src =3D *p++) !=3D NULL) {
-		while ((*dst++ =3D *src++) !=3D '\0')
-			;
-		dst[-1] =3D ' ';
-	}
-	dst[-1] =3D '\0';
-
-	return buf;
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/sf-pcap-ng.c
--- a/head/contrib/libpcap/sf-pcap-ng.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/sf-pcap-ng.c	Wed Jul 25 16:21:35 2012 +0300
@@ -746,7 +746,7 @@
 done:
 	p->tzoff =3D 0;	/* XXX - not used in pcap */
 	p->snapshot =3D idbp->snaplen;
-	p->linktype =3D idbp->linktype;
+	p->linktype =3D linktype_to_dlt(idbp->linktype);
 	p->linktype_ext =3D 0;
=20
 	p->sf.next_packet_op =3D pcap_ng_next_packet;
@@ -772,7 +772,6 @@
 	struct simple_packet_block *spbp;
 	struct packet_block *pbp;
 	bpf_u_int32 interface_id =3D 0xFFFFFFFF;
-	size_t pblock_len;
 	struct interface_description_block *idbp;
 	struct section_header_block *shbp;
 	FILE *fp =3D p->sf.rfile;
@@ -823,7 +822,6 @@
 				t =3D ((u_int64_t)epbp->timestamp_high) << 32 |
 				    epbp->timestamp_low;
 			}
-			pblock_len =3D sizeof(*epbp);
 			goto found;
 		=09
 		case BT_SPB:
@@ -860,7 +858,6 @@
 			if (hdr->caplen > p->snapshot)
 				hdr->caplen =3D p->snapshot;
 			t =3D 0;	/* no time stamps */
-			pblock_len =3D sizeof(*spbp);
 			goto found;
=20
 		case BT_PB:
@@ -890,7 +887,6 @@
 				t =3D ((u_int64_t)pbp->timestamp_high) << 32 |
 				    pbp->timestamp_low;
 			}
-			pblock_len =3D sizeof(*pbp);
 			goto found;
=20
 		case BT_IDB:
@@ -1053,7 +1049,7 @@
 	/*
 	 * Is the interface ID an interface we know?
 	 */
-	if (interface_id > p->sf.ifcount) {
+	if (interface_id >=3D p->sf.ifcount) {
 		/*
 		 * Yes.  Fail.
 		 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/sf-pcap.c
--- a/head/contrib/libpcap/sf-pcap.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/libpcap/sf-pcap.c	Wed Jul 25 16:21:35 2012 +0300
@@ -271,8 +271,12 @@
 	 * Allocate a buffer for the packet data.
 	 */
 	p->bufsize =3D p->snapshot;
-	if (p->bufsize <=3D 0)
-		p->bufsize =3D BPF_MAXBUFSIZE;
+	if (p->bufsize <=3D 0) {
+		/*
+		 * Bogus snapshot length; use 64KiB as a fallback.
+		 */
+		p->bufsize =3D 65536;
+	}
 	p->buffer =3D malloc(p->bufsize);
 	if (p->buffer =3D=3D NULL) {
 		snprintf(errbuf, PCAP_ERRBUF_SIZE, "out of memory");
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/filtertest.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/filtertest.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,266 @@
+/*
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static const char copyright[] _U_ =3D
+    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
+The Regents of the University of California.  All rights reserved.\n";
+static const char rcsid[] _U_ =3D
+    "@(#) $Header: /tcpdump/master/libpcap/filtertest.c,v 1.2 2005-08-08 1=
7:50:13 guy Exp $ (LBL)";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <pcap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <arpa/inet.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef HAVE___ATTRIBUTE__
+#define __attribute__(x)
+#endif
+
+static char *program_name;
+
+/* Forwards */
+static void usage(void) __attribute__((noreturn));
+static void error(const char *, ...)
+    __attribute__((noreturn, format (printf, 1, 2)));
+
+extern int optind;
+extern int opterr;
+extern char *optarg;
+
+/*
+ * On Windows, we need to open the file in binary mode, so that
+ * we get all the bytes specified by the size we get from "fstat()".
+ * On UNIX, that's not necessary.  O_BINARY is defined on Windows;
+ * we define it as 0 if it's not defined, so it does nothing.
+ */
+#ifndef O_BINARY
+#define O_BINARY	0
+#endif
+
+static char *
+read_infile(char *fname)
+{
+	register int i, fd, cc;
+	register char *cp;
+	struct stat buf;
+
+	fd =3D open(fname, O_RDONLY|O_BINARY);
+	if (fd < 0)
+		error("can't open %s: %s", fname, pcap_strerror(errno));
+
+	if (fstat(fd, &buf) < 0)
+		error("can't stat %s: %s", fname, pcap_strerror(errno));
+
+	cp =3D malloc((u_int)buf.st_size + 1);
+	if (cp =3D=3D NULL)
+		error("malloc(%d) for %s: %s", (u_int)buf.st_size + 1,
+			fname, pcap_strerror(errno));
+	cc =3D read(fd, cp, (u_int)buf.st_size);
+	if (cc < 0)
+		error("read %s: %s", fname, pcap_strerror(errno));
+	if (cc !=3D buf.st_size)
+		error("short read %s (%d !=3D %d)", fname, cc, (int)buf.st_size);
+
+	close(fd);
+	/* replace "# comment" with spaces */
+	for (i =3D 0; i < cc; i++) {
+		if (cp[i] =3D=3D '#')
+			while (i < cc && cp[i] !=3D '\n')
+				cp[i++] =3D ' ';
+	}
+	cp[cc] =3D '\0';
+	return (cp);
+}
+
+/* VARARGS */
+static void
+error(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+	exit(1);
+	/* NOTREACHED */
+}
+
+/*
+ * Copy arg vector into a new buffer, concatenating arguments with spaces.
+ */
+static char *
+copy_argv(register char **argv)
+{
+	register char **p;
+	register u_int len =3D 0;
+	char *buf;
+	char *src, *dst;
+
+	p =3D argv;
+	if (*p =3D=3D 0)
+		return 0;
+
+	while (*p)
+		len +=3D strlen(*p++) + 1;
+
+	buf =3D (char *)malloc(len);
+	if (buf =3D=3D NULL)
+		error("copy_argv: malloc");
+
+	p =3D argv;
+	dst =3D buf;
+	while ((src =3D *p++) !=3D NULL) {
+		while ((*dst++ =3D *src++) !=3D '\0')
+			;
+		dst[-1] =3D ' ';
+	}
+	dst[-1] =3D '\0';
+
+	return buf;
+}
+
+int
+main(int argc, char **argv)
+{
+	char *cp;
+	int op;
+	int dflag;
+	char *infile;
+	int Oflag;
+	long snaplen;
+	int dlt;
+	bpf_u_int32 netmask =3D PCAP_NETMASK_UNKNOWN;
+	char *cmdbuf;
+	pcap_t *pd;
+	struct bpf_program fcode;
+
+#ifdef WIN32
+	if(wsockinit() !=3D 0) return 1;
+#endif /* WIN32 */
+
+	dflag =3D 1;
+	infile =3D NULL;
+	Oflag =3D 1;
+	snaplen =3D 68;
+ =20
+	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
+		program_name =3D cp + 1;
+	else
+		program_name =3D argv[0];
+
+	opterr =3D 0;
+	while ((op =3D getopt(argc, argv, "dF:m:Os:")) !=3D -1) {
+		switch (op) {
+
+		case 'd':
+			++dflag;
+			break;
+
+		case 'F':
+			infile =3D optarg;
+			break;
+
+		case 'O':
+			Oflag =3D 0;
+			break;
+
+		case 'm': {
+			in_addr_t addr;
+
+			addr =3D inet_addr(optarg);
+			if (addr =3D=3D INADDR_NONE)
+				error("invalid netmask %s", optarg);
+			netmask =3D addr;
+			break;
+		}
+
+		case 's': {
+			char *end;
+
+			snaplen =3D strtol(optarg, &end, 0);
+			if (optarg =3D=3D end || *end !=3D '\0'
+			    || snaplen < 0 || snaplen > 65535)
+				error("invalid snaplen %s", optarg);
+			else if (snaplen =3D=3D 0)
+				snaplen =3D 65535;
+			break;
+		}
+
+		default:
+			usage();
+			/* NOTREACHED */
+		}
+	}
+
+	if (optind >=3D argc) {
+		usage();
+		/* NOTREACHED */
+	}
+
+	dlt =3D pcap_datalink_name_to_val(argv[optind]);
+	if (dlt < 0)
+		error("invalid data link type %s", argv[optind]);
+=09
+	if (infile)
+		cmdbuf =3D read_infile(infile);
+	else
+		cmdbuf =3D copy_argv(&argv[optind+1]);
+
+	pd =3D pcap_open_dead(dlt, snaplen);
+	if (pd =3D=3D NULL)
+		error("Can't open fake pcap_t");
+
+	if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)
+		error("%s", pcap_geterr(pd));
+	bpf_dump(&fcode, dflag);
+	pcap_close(pd);
+	exit(0);
+}
+
+static void
+usage(void)
+{
+	(void)fprintf(stderr, "%s, with %s\n", program_name,
+	    pcap_lib_version());
+	(void)fprintf(stderr,
+	    "Usage: %s [-dO] [ -F file ] [ -m netmask] [ -s snaplen ] dlt [ expre=
ssion ]\n",
+	    program_name);
+	exit(1);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/findalldevst=
est.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/findalldevstest.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,131 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+
+#include <pcap.h>
+
+static void ifprint(pcap_if_t *d);
+static char *iptos(bpf_u_int32 in);
+
+int main(int argc, char **argv)
+{
+  pcap_if_t *alldevs;
+  pcap_if_t *d;
+  char *s;
+  bpf_u_int32 net, mask;
+ =20
+  char errbuf[PCAP_ERRBUF_SIZE+1];
+  if (pcap_findalldevs(&alldevs, errbuf) =3D=3D -1)
+  {
+    fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
+    exit(1);
+  }
+  for(d=3Dalldevs;d;d=3Dd->next)
+  {
+    ifprint(d);
+  }
+
+  if ( (s =3D pcap_lookupdev(errbuf)) =3D=3D NULL)
+  {
+    fprintf(stderr,"Error in pcap_lookupdev: %s\n",errbuf);
+  }
+  else
+  {
+    printf("Preferred device name: %s\n",s);
+  }
+
+  if (pcap_lookupnet(s, &net, &mask, errbuf) < 0)
+  {
+    fprintf(stderr,"Error in pcap_lookupnet: %s\n",errbuf);
+  }
+  else
+  {
+    printf("Preferred device is on network: %s/%s\n",iptos(net), iptos(mas=
k));
+  }
+ =20
+  exit(0);
+}
+
+static void ifprint(pcap_if_t *d)
+{
+  pcap_addr_t *a;
+#ifdef INET6
+  char ntop_buf[INET6_ADDRSTRLEN];
+#endif
+
+  printf("%s\n",d->name);
+  if (d->description)
+    printf("\tDescription: %s\n",d->description);
+  printf("\tLoopback: %s\n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no");
+
+  for(a=3Dd->addresses;a;a=3Da->next) {
+    switch(a->addr->sa_family)
+    {
+      case AF_INET:
+        printf("\tAddress Family: AF_INET\n");
+        if (a->addr)
+          printf("\t\tAddress: %s\n",
+            inet_ntoa(((struct sockaddr_in *)(a->addr))->sin_addr));
+        if (a->netmask)
+          printf("\t\tNetmask: %s\n",
+            inet_ntoa(((struct sockaddr_in *)(a->netmask))->sin_addr));
+        if (a->broadaddr)
+          printf("\t\tBroadcast Address: %s\n",
+            inet_ntoa(((struct sockaddr_in *)(a->broadaddr))->sin_addr));
+        if (a->dstaddr)
+          printf("\t\tDestination Address: %s\n",
+            inet_ntoa(((struct sockaddr_in *)(a->dstaddr))->sin_addr));
+        break;
+#ifdef INET6
+      case AF_INET6:
+        printf("\tAddress Family: AF_INET6\n");
+        if (a->addr)
+          printf("\t\tAddress: %s\n",
+            inet_ntop(AF_INET6,
+               ((struct sockaddr_in6 *)(a->addr))->sin6_addr.s6_addr,
+               ntop_buf, sizeof ntop_buf));
+        if (a->netmask)
+          printf("\t\tNetmask: %s\n",
+            inet_ntop(AF_INET6,
+              ((struct sockaddr_in6 *)(a->netmask))->sin6_addr.s6_addr,
+               ntop_buf, sizeof ntop_buf));
+        if (a->broadaddr)
+          printf("\t\tBroadcast Address: %s\n",
+            inet_ntop(AF_INET6,
+              ((struct sockaddr_in6 *)(a->broadaddr))->sin6_addr.s6_addr,
+               ntop_buf, sizeof ntop_buf));
+        if (a->dstaddr)
+          printf("\t\tDestination Address: %s\n",
+            inet_ntop(AF_INET6,
+              ((struct sockaddr_in6 *)(a->dstaddr))->sin6_addr.s6_addr,
+               ntop_buf, sizeof ntop_buf));
+        break;
+#endif
+      default:
+        printf("\tAddress Family: Unknown (%d)\n", a->addr->sa_family);
+        break;
+    }
+  }
+  printf("\n");
+}
+
+/* From tcptraceroute */
+#define IPTOSBUFFERS	12
+static char *iptos(bpf_u_int32 in)
+{
+	static char output[IPTOSBUFFERS][3*4+3+1];
+	static short which;
+	u_char *p;
+
+	p =3D (u_char *)∈
+	which =3D (which + 1 =3D=3D IPTOSBUFFERS ? 0 : which + 1);
+	sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
+	return output[which];
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/nonblocktest=
.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/nonblocktest.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,226 @@
+/*
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static const char copyright[] =3D
+    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
+The Regents of the University of California.  All rights reserved.\n";
+#endif
+
+#include <pcap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/select.h>
+#include <poll.h>
+
+char *program_name;
+
+/* Forwards */
+static void countme(u_char *, const struct pcap_pkthdr *, const u_char *);
+static void usage(void) __attribute__((noreturn));
+static void error(const char *, ...);
+static void warning(const char *, ...);
+static char *copy_argv(char **);
+
+static pcap_t *pd;
+
+extern int optind;
+extern int opterr;
+extern char *optarg;
+
+int
+main(int argc, char **argv)
+{
+	register int op;
+	bpf_u_int32 localnet, netmask;
+	register char *cp, *cmdbuf, *device;
+	struct bpf_program fcode;
+	char ebuf[PCAP_ERRBUF_SIZE];
+	int status;
+	int packet_count;
+
+	device =3D NULL;
+	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
+		program_name =3D cp + 1;
+	else
+		program_name =3D argv[0];
+
+	opterr =3D 0;
+	while ((op =3D getopt(argc, argv, "i:")) !=3D -1) {
+		switch (op) {
+
+		case 'i':
+			device =3D optarg;
+			break;
+
+		default:
+			usage();
+			/* NOTREACHED */
+		}
+	}
+
+	if (device =3D=3D NULL) {
+		device =3D pcap_lookupdev(ebuf);
+		if (device =3D=3D NULL)
+			error("%s", ebuf);
+	}
+	*ebuf =3D '\0';
+	pd =3D pcap_open_live(device, 65535, 0, 1000, ebuf);
+	if (pd =3D=3D NULL)
+		error("%s", ebuf);
+	else if (*ebuf)
+		warning("%s", ebuf);
+	if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) {
+		localnet =3D 0;
+		netmask =3D 0;
+		warning("%s", ebuf);
+	}
+	cmdbuf =3D copy_argv(&argv[optind]);
+
+	if (pcap_compile(pd, &fcode, cmdbuf, 1, netmask) < 0)
+		error("%s", pcap_geterr(pd));
+
+	if (pcap_setfilter(pd, &fcode) < 0)
+		error("%s", pcap_geterr(pd));
+	if (pcap_setnonblock(pd, 1, ebuf) =3D=3D -1)
+		error("pcap_setnonblock failed: %s", ebuf);
+	printf("Listening on %s\n", device);
+	for (;;) {
+		packet_count =3D 0;
+		status =3D pcap_dispatch(pd, -1, countme,
+		    (u_char *)&packet_count);
+		if (status < 0)
+			break;
+		if (status !=3D 0) {
+			printf("%d packets seen, %d packets counted after pcap_dispatch returns=
\n",
+			    status, packet_count);
+		}
+	}
+	if (status =3D=3D -2) {
+		/*
+		 * We got interrupted, so perhaps we didn't
+		 * manage to finish a line we were printing.
+		 * Print an extra newline, just in case.
+		 */
+		putchar('\n');
+	}
+	(void)fflush(stdout);
+	if (status =3D=3D -1) {
+		/*
+		 * Error.  Report it.
+		 */
+		(void)fprintf(stderr, "%s: pcap_loop: %s\n",
+		    program_name, pcap_geterr(pd));
+	}
+	pcap_close(pd);
+	exit(status =3D=3D -1 ? 1 : 0);
+}
+
+static void
+countme(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
+{
+	int *counterp =3D (int *)user;
+
+	(*counterp)++;
+}
+
+static void
+usage(void)
+{
+	(void)fprintf(stderr, "Usage: %s [ -sptn ] [ -i interface ] [expression]\=
n",
+	    program_name);
+	exit(1);
+}
+
+/* VARARGS */
+static void
+error(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+	exit(1);
+	/* NOTREACHED */
+}
+
+/* VARARGS */
+static void
+warning(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: WARNING: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+}
+
+/*
+ * Copy arg vector into a new buffer, concatenating arguments with spaces.
+ */
+static char *
+copy_argv(register char **argv)
+{
+	register char **p;
+	register u_int len =3D 0;
+	char *buf;
+	char *src, *dst;
+
+	p =3D argv;
+	if (*p =3D=3D 0)
+		return 0;
+
+	while (*p)
+		len +=3D strlen(*p++) + 1;
+
+	buf =3D (char *)malloc(len);
+	if (buf =3D=3D NULL)
+		error("copy_argv: malloc");
+
+	p =3D argv;
+	dst =3D buf;
+	while ((src =3D *p++) !=3D NULL) {
+		while ((*dst++ =3D *src++) !=3D '\0')
+			;
+		dst[-1] =3D ' ';
+	}
+	dst[-1] =3D '\0';
+
+	return buf;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/opentest.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/opentest.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static const char copyright[] =3D
+    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
+The Regents of the University of California.  All rights reserved.\n";
+#endif
+
+#include <pcap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define MAXIMUM_SNAPLEN		65535
+
+static char *program_name;
+
+/* Forwards */
+static void usage(void) __attribute__((noreturn));
+static void error(const char *, ...);
+static void warning(const char *, ...);
+
+extern int optind;
+extern int opterr;
+extern char *optarg;
+
+int
+main(int argc, char **argv)
+{
+	register int op;
+	register char *cp, *device;
+	int dorfmon, dopromisc, snaplen, useactivate, bufsize;
+	char ebuf[PCAP_ERRBUF_SIZE];
+	pcap_t *pd;
+	int status =3D 0;
+
+	device =3D NULL;
+	dorfmon =3D 0;
+	dopromisc =3D 0;
+	snaplen =3D MAXIMUM_SNAPLEN;
+	bufsize =3D 0;
+	useactivate =3D 0;
+	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
+		program_name =3D cp + 1;
+	else
+		program_name =3D argv[0];
+
+	opterr =3D 0;
+	while ((op =3D getopt(argc, argv, "i:Ips:aB:")) !=3D -1) {
+		switch (op) {
+
+		case 'i':
+			device =3D optarg;
+			break;
+
+		case 'I':
+			dorfmon =3D 1;
+			useactivate =3D 1;	/* required for rfmon */
+			break;
+
+		case 'p':
+			dopromisc =3D 1;
+			break;
+
+		case 's': {
+			char *end;
+
+			snaplen =3D strtol(optarg, &end, 0);
+			if (optarg =3D=3D end || *end !=3D '\0'
+			    || snaplen < 0 || snaplen > MAXIMUM_SNAPLEN)
+				error("invalid snaplen %s", optarg);
+			else if (snaplen =3D=3D 0)
+				snaplen =3D MAXIMUM_SNAPLEN;
+			break;
+		}
+
+		case 'B':
+			bufsize =3D atoi(optarg)*1024;
+			if (bufsize <=3D 0)
+				error("invalid packet buffer size %s", optarg);
+			useactivate =3D 1;	/* required for bufsize */
+			break;
+
+		case 'a':
+			useactivate =3D 1;
+			break;
+
+		default:
+			usage();
+			/* NOTREACHED */
+		}
+	}
+
+	if (useactivate) {
+		pd =3D pcap_create(device, ebuf);
+		if (pd =3D=3D NULL)
+			error("%s", ebuf);
+		status =3D pcap_set_snaplen(pd, snaplen);
+		if (status !=3D 0)
+			error("%s: pcap_set_snaplen failed: %s",
+			    device, pcap_statustostr(status));
+		if (dopromisc) {
+			status =3D pcap_set_promisc(pd, 1);
+			if (status !=3D 0)
+				error("%s: pcap_set_promisc failed: %s",
+				    device, pcap_statustostr(status));
+		}
+		if (dorfmon) {
+			status =3D pcap_set_rfmon(pd, 1);
+			if (status !=3D 0)
+				error("%s: pcap_set_rfmon failed: %s",
+				    device, pcap_statustostr(status));
+		}
+		status =3D pcap_set_timeout(pd, 1000);
+		if (status !=3D 0)
+			error("%s: pcap_set_timeout failed: %s",
+			    device, pcap_statustostr(status));
+		if (bufsize !=3D 0) {
+			status =3D pcap_set_buffer_size(pd, bufsize);
+			if (status !=3D 0)
+				error("%s: pcap_set_buffer_size failed: %s",
+				    device, pcap_statustostr(status));
+		}
+		status =3D pcap_activate(pd);
+		if (status < 0) {
+			/*
+			 * pcap_activate() failed.
+			 */
+			error("%s: %s\n(%s)", device,
+			    pcap_statustostr(status), pcap_geterr(pd));
+		} else if (status > 0) {
+			/*
+			 * pcap_activate() succeeded, but it's warning us
+			 * of a problem it had.
+			 */
+			warning("%s: %s\n(%s)", device,
+			    pcap_statustostr(status), pcap_geterr(pd));
+		}
+	} else {
+		*ebuf =3D '\0';
+		pd =3D pcap_open_live(device, 65535, 0, 1000, ebuf);
+		if (pd =3D=3D NULL)
+			error("%s", ebuf);
+		else if (*ebuf)
+			warning("%s", ebuf);
+	}
+	pcap_close(pd);
+	exit(status < 0 ? 1 : 0);
+}
+
+static void
+usage(void)
+{
+	(void)fprintf(stderr,
+	    "Usage: %s [ -Ipa ] [ -i interface ] [ -s snaplen ] [ -B bufsize ]\n",
+	    program_name);
+	exit(1);
+}
+
+/* VARARGS */
+static void
+error(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+	exit(1);
+	/* NOTREACHED */
+}
+
+/* VARARGS */
+static void
+warning(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: WARNING: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/reactivatete=
st.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/reactivatetest.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static const char copyright[] =3D
+    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
+The Regents of the University of California.  All rights reserved.\n";
+#endif
+
+#include <pcap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+
+/* Forwards */
+static void error(const char *, ...);
+
+int
+main(void)
+{
+	char ebuf[PCAP_ERRBUF_SIZE];
+	pcap_t *pd;
+	int status =3D 0;
+
+	pd =3D pcap_open_live("lo0", 65535, 0, 1000, ebuf);
+	if (pd =3D=3D NULL) {
+		pd =3D pcap_open_live("lo", 65535, 0, 1000, ebuf);
+		if (pd =3D=3D NULL) {
+			error("Neither lo0 nor lo could be opened: %s",
+			    ebuf);
+			return 2;
+		}
+	}
+	status =3D pcap_activate(pd);
+	if (status !=3D PCAP_ERROR_ACTIVATED) {
+		if (status =3D=3D 0)
+			error("pcap_activate() of opened pcap_t succeeded");
+		else if (status =3D=3D PCAP_ERROR)
+			error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_=
ACTIVATED",
+			    pcap_geterr(pd));
+		else
+			error("pcap_activate() of opened pcap_t failed with %s, not PCAP_ERROR_=
ACTIVATED",
+			    pcap_statustostr(status));
+	}
+	return 0;
+}
+
+/* VARARGS */
+static void
+error(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "reactivatetest: ");
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+	exit(1);
+	/* NOTREACHED */
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libpcap/test/selpolltest.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/libpcap/test/selpolltest.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,350 @@
+/*
+ * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 199=
7, 2000
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifndef lint
+static const char copyright[] =3D
+    "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 19=
96, 1997, 2000\n\
+The Regents of the University of California.  All rights reserved.\n";
+#endif
+
+#include <pcap.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/select.h>
+#include <poll.h>
+
+char *program_name;
+
+/* Forwards */
+static void countme(u_char *, const struct pcap_pkthdr *, const u_char *);
+static void usage(void) __attribute__((noreturn));
+static void error(const char *, ...);
+static void warning(const char *, ...);
+static char *copy_argv(char **);
+
+static pcap_t *pd;
+
+extern int optind;
+extern int opterr;
+extern char *optarg;
+
+int
+main(int argc, char **argv)
+{
+	register int op;
+	bpf_u_int32 localnet, netmask;
+	register char *cp, *cmdbuf, *device;
+	int doselect, dopoll, dotimeout, dononblock;
+	struct bpf_program fcode;
+	char ebuf[PCAP_ERRBUF_SIZE];
+	int selectable_fd;
+	int status;
+	int packet_count;
+
+	device =3D NULL;
+	doselect =3D 0;
+	dopoll =3D 0;
+	dotimeout =3D 0;
+	dononblock =3D 0;
+	if ((cp =3D strrchr(argv[0], '/')) !=3D NULL)
+		program_name =3D cp + 1;
+	else
+		program_name =3D argv[0];
+
+	opterr =3D 0;
+	while ((op =3D getopt(argc, argv, "i:sptn")) !=3D -1) {
+		switch (op) {
+
+		case 'i':
+			device =3D optarg;
+			break;
+
+		case 's':
+			doselect =3D 1;
+			break;
+
+		case 'p':
+			dopoll =3D 1;
+			break;
+
+		case 't':
+			dotimeout =3D 1;
+			break;
+
+		case 'n':
+			dononblock =3D 1;
+			break;
+
+		default:
+			usage();
+			/* NOTREACHED */
+		}
+	}
+
+	if (doselect && dopoll) {
+		fprintf(stderr, "selpolltest: choose select (-s) or poll (-p), but not b=
oth\n");
+		return 1;
+	}
+	if (dotimeout && !doselect && !dopoll) {
+		fprintf(stderr, "selpolltest: timeout (-t) requires select (-s) or poll =
(-p)\n");
+		return 1;
+	}
+	if (device =3D=3D NULL) {
+		device =3D pcap_lookupdev(ebuf);
+		if (device =3D=3D NULL)
+			error("%s", ebuf);
+	}
+	*ebuf =3D '\0';
+	pd =3D pcap_open_live(device, 65535, 0, 1000, ebuf);
+	if (pd =3D=3D NULL)
+		error("%s", ebuf);
+	else if (*ebuf)
+		warning("%s", ebuf);
+	if (pcap_lookupnet(device, &localnet, &netmask, ebuf) < 0) {
+		localnet =3D 0;
+		netmask =3D 0;
+		warning("%s", ebuf);
+	}
+	cmdbuf =3D copy_argv(&argv[optind]);
+
+	if (pcap_compile(pd, &fcode, cmdbuf, 1, netmask) < 0)
+		error("%s", pcap_geterr(pd));
+
+	if (pcap_setfilter(pd, &fcode) < 0)
+		error("%s", pcap_geterr(pd));
+	if (pcap_get_selectable_fd(pd) =3D=3D -1)
+		error("pcap_get_selectable_fd() fails");
+	if (dononblock) {
+		if (pcap_setnonblock(pd, 1, ebuf) =3D=3D -1)
+			error("pcap_setnonblock failed: %s", ebuf);
+	}
+	selectable_fd =3D pcap_get_selectable_fd(pd);
+	printf("Listening on %s\n", device);
+	if (doselect) {
+		for (;;) {
+			fd_set setread, setexcept;
+			struct timeval seltimeout;
+
+			FD_ZERO(&setread);
+			FD_SET(selectable_fd, &setread);
+			FD_ZERO(&setexcept);
+			FD_SET(selectable_fd, &setexcept);
+			if (dotimeout) {
+				seltimeout.tv_sec =3D 0;
+				seltimeout.tv_usec =3D 1000;
+				status =3D select(selectable_fd + 1, &setread,
+				    NULL, &setexcept, &seltimeout);
+			} else {
+				status =3D select(selectable_fd + 1, &setread,
+				    NULL, &setexcept, NULL);
+			}
+			if (status =3D=3D -1) {
+				printf("Select returns error (%s)\n",
+				    strerror(errno));
+			} else {
+				if (status =3D=3D 0)
+					printf("Select timed out: ");
+				else
+					printf("Select returned a descriptor: ");
+				if (FD_ISSET(selectable_fd, &setread))
+					printf("readable, ");
+				else
+					printf("not readable, ");
+				if (FD_ISSET(selectable_fd, &setexcept))
+					printf("exceptional condition\n");
+				else
+					printf("no exceptional condition\n");
+				packet_count =3D 0;
+				status =3D pcap_dispatch(pd, -1, countme,
+				    (u_char *)&packet_count);
+				if (status < 0)
+					break;
+				printf("%d packets seen, %d packets counted after select returns\n",
+				    status, packet_count);
+			}
+		}
+	} else if (dopoll) {
+		for (;;) {
+			struct pollfd fd;
+			int polltimeout;
+
+			fd.fd =3D selectable_fd;
+			fd.events =3D POLLIN;
+			if (dotimeout)
+				polltimeout =3D 1;
+			else
+				polltimeout =3D -1;
+			status =3D poll(&fd, 1, polltimeout);
+			if (status =3D=3D -1) {
+				printf("Poll returns error (%s)\n",
+				    strerror(errno));
+			} else {
+				if (status =3D=3D 0)
+					printf("Poll timed out\n");
+				else {
+					printf("Poll returned a descriptor: ");
+					if (fd.revents & POLLIN)
+						printf("readable, ");
+					else
+						printf("not readable, ");
+					if (fd.revents & POLLERR)
+						printf("exceptional condition, ");
+					else
+						printf("no exceptional condition, ");
+					if (fd.revents & POLLHUP)
+						printf("disconnect, ");
+					else
+						printf("no disconnect, ");
+					if (fd.revents & POLLNVAL)
+						printf("invalid\n");
+					else
+						printf("not invalid\n");
+				}
+				packet_count =3D 0;
+				status =3D pcap_dispatch(pd, -1, countme,
+				    (u_char *)&packet_count);
+				if (status < 0)
+					break;
+				printf("%d packets seen, %d packets counted after poll returns\n",
+				    status, packet_count);
+			}
+		}
+	} else {
+		for (;;) {
+			packet_count =3D 0;
+			status =3D pcap_dispatch(pd, -1, countme,
+			    (u_char *)&packet_count);
+			if (status < 0)
+				break;
+			printf("%d packets seen, %d packets counted after pcap_dispatch returns=
\n",
+			    status, packet_count);
+		}
+	}
+	if (status =3D=3D -2) {
+		/*
+		 * We got interrupted, so perhaps we didn't
+		 * manage to finish a line we were printing.
+		 * Print an extra newline, just in case.
+		 */
+		putchar('\n');
+	}
+	(void)fflush(stdout);
+	if (status =3D=3D -1) {
+		/*
+		 * Error.  Report it.
+		 */
+		(void)fprintf(stderr, "%s: pcap_loop: %s\n",
+		    program_name, pcap_geterr(pd));
+	}
+	pcap_close(pd);
+	exit(status =3D=3D -1 ? 1 : 0);
+}
+
+static void
+countme(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
+{
+	int *counterp =3D (int *)user;
+
+	(*counterp)++;
+}
+
+static void
+usage(void)
+{
+	(void)fprintf(stderr, "Usage: %s [ -sptn ] [ -i interface ] [expression]\=
n",
+	    program_name);
+	exit(1);
+}
+
+/* VARARGS */
+static void
+error(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+	exit(1);
+	/* NOTREACHED */
+}
+
+/* VARARGS */
+static void
+warning(const char *fmt, ...)
+{
+	va_list ap;
+
+	(void)fprintf(stderr, "%s: WARNING: ", program_name);
+	va_start(ap, fmt);
+	(void)vfprintf(stderr, fmt, ap);
+	va_end(ap);
+	if (*fmt) {
+		fmt +=3D strlen(fmt);
+		if (fmt[-1] !=3D '\n')
+			(void)fputc('\n', stderr);
+	}
+}
+
+/*
+ * Copy arg vector into a new buffer, concatenating arguments with spaces.
+ */
+static char *
+copy_argv(register char **argv)
+{
+	register char **p;
+	register u_int len =3D 0;
+	char *buf;
+	char *src, *dst;
+
+	p =3D argv;
+	if (*p =3D=3D 0)
+		return 0;
+
+	while (*p)
+		len +=3D strlen(*p++) + 1;
+
+	buf =3D (char *)malloc(len);
+	if (buf =3D=3D NULL)
+		error("copy_argv: malloc");
+
+	p =3D argv;
+	dst =3D buf;
+	while ((src =3D *p++) !=3D NULL) {
+		while ((*dst++ =3D *src++) !=3D '\0')
+			;
+		dst[-1] =3D ' ';
+	}
+	dst[-1] =3D '\0';
+
+	return buf;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/lo=
cale_facets.tcc
--- a/head/contrib/libstdc++/include/bits/locale_facets.tcc	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/libstdc++/include/bits/locale_facets.tcc	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -887,7 +887,11 @@
       const fmtflags __fmt =3D __io.flags();
       __io.flags(__fmt & ~ios_base::basefield | ios_base::hex);
=20
-      unsigned long __ul;
+      typedef __gnu_cxx::__conditional_type<(sizeof(void*)
+					     <=3D sizeof(unsigned long)),
+	unsigned long, unsigned long long>::__type _UIntPtrType;
+
+      _UIntPtrType __ul;
       __beg =3D _M_extract_int(__beg, __end, __io, __err, __ul);
=20
       // Reset from hex formatted input.
@@ -1309,8 +1313,12 @@
 					 | ios_base::internal);
       __io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase));
=20
+      typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
+					     <=3D sizeof(unsigned long)),
+	unsigned long, unsigned long long>::__type _UIntPtrType;
+
       __s =3D _M_insert_int(__s, __io, __fill,
-			  reinterpret_cast<unsigned long>(__v));
+			  reinterpret_cast<_UIntPtrType>(__v));
       __io.flags(__flags);
       return __s;
     }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_bvector.h
--- a/head/contrib/libstdc++/include/bits/stl_bvector.h	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_bvector.h	Wed Jul 25 16:21:35=
 2012 +0300
@@ -385,6 +385,11 @@
 	_Bit_iterator 	_M_start;
 	_Bit_iterator 	_M_finish;
 	_Bit_type* 	_M_end_of_storage;
+
+	_Bvector_impl()
+	: _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0)
+	{ }
+
 	_Bvector_impl(const _Bit_alloc_type& __a)
 	: _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
 	{ }
@@ -405,7 +410,11 @@
       get_allocator() const
       { return allocator_type(_M_get_Bit_allocator()); }
=20
-      _Bvector_base(const allocator_type& __a) : _M_impl(__a) { }
+      _Bvector_base()
+      : _M_impl() { }
+
+      _Bvector_base(const allocator_type& __a)
+      : _M_impl(__a) { }
=20
       ~_Bvector_base()
       { this->_M_deallocate(); }
@@ -480,8 +489,11 @@
     using _Base::_M_get_Bit_allocator;
=20
   public:
+    vector()
+    : _Base() { }
+
     explicit
-    vector(const allocator_type& __a =3D allocator_type())
+    vector(const allocator_type& __a)
     : _Base(__a) { }
=20
     explicit
@@ -678,7 +690,7 @@
     }
=20
     void
-    swap(vector<bool, _Alloc>& __x)
+    swap(vector& __x)
     {
       std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
       std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_deque.h
--- a/head/contrib/libstdc++/include/bits/stl_deque.h	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_deque.h	Wed Jul 25 16:21:35 2=
012 +0300
@@ -380,6 +380,10 @@
       typedef _Deque_iterator<_Tp, _Tp&, _Tp*>             iterator;
       typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
=20
+      _Deque_base()
+      : _M_impl()
+      { _M_initialize_map(0); }
+
       _Deque_base(const allocator_type& __a, size_t __num_elements)
       : _M_impl(__a)
       { _M_initialize_map(__num_elements); }
@@ -406,6 +410,11 @@
 	iterator _M_start;
 	iterator _M_finish;
=20
+	_Deque_impl()
+	: _Tp_alloc_type(), _M_map(0), _M_map_size(0),
+	  _M_start(), _M_finish()
+	{ }
+
 	_Deque_impl(const _Tp_alloc_type& __a)
 	: _Tp_alloc_type(__a), _M_map(0), _M_map_size(0),
 	  _M_start(), _M_finish()
@@ -679,8 +688,11 @@
       /**
        *  @brief  Default constructor creates no elements.
        */
+      deque()
+      : _Base() { }
+
       explicit
-      deque(const allocator_type& __a =3D allocator_type())
+      deque(const allocator_type& __a)
       : _Base(__a, 0) {}
=20
       /**
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_list.h
--- a/head/contrib/libstdc++/include/bits/stl_list.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_list.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -305,6 +305,10 @@
       {
 	_List_node_base _M_node;
=20
+	_List_impl()
+	: _Node_alloc_type(), _M_node()
+	{ }
+
 	_List_impl(const _Node_alloc_type& __a)
 	: _Node_alloc_type(__a), _M_node()
 	{ }
@@ -339,6 +343,10 @@
       get_allocator() const
       { return allocator_type(_M_get_Node_allocator()); }
=20
+      _List_base()
+      : _M_impl()
+      { _M_init(); }
+
       _List_base(const allocator_type& __a)
       : _M_impl(__a)
       { _M_init(); }
@@ -468,8 +476,11 @@
       /**
        *  @brief  Default constructor creates no elements.
        */
+      list()
+      : _Base() { }
+
       explicit
-      list(const allocator_type& __a =3D allocator_type())
+      list(const allocator_type& __a)
       : _Base(__a) { }
=20
       /**
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_map.h
--- a/head/contrib/libstdc++/include/bits/stl_map.h	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_map.h	Wed Jul 25 16:21:35 201=
2 +0300
@@ -155,7 +155,7 @@
        *  @brief  Default constructor creates no elements.
        */
       map()
-      : _M_t(_Compare(), allocator_type()) { }
+      : _M_t() { }
=20
       // for some reason this was made a separate function
       /**
@@ -186,7 +186,7 @@
        */
       template <typename _InputIterator>
         map(_InputIterator __first, _InputIterator __last)
-	: _M_t(_Compare(), allocator_type())
+	: _M_t()
         { _M_t._M_insert_unique(__first, __last); }
=20
       /**
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_multimap.h
--- a/head/contrib/libstdc++/include/bits/stl_multimap.h	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_multimap.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -152,7 +152,7 @@
        *  @brief  Default constructor creates no elements.
        */
       multimap()
-      : _M_t(_Compare(), allocator_type()) { }
+      : _M_t() { }
=20
       // for some reason this was made a separate function
       /**
@@ -184,8 +184,8 @@
        */
       template <typename _InputIterator>
         multimap(_InputIterator __first, _InputIterator __last)
-	: _M_t(_Compare(), allocator_type())
-        { _M_t._M_insert_equal(__first, __last); }
+	: _M_t()
+        { _M_t._M_insert_unique(__first, __last); }
=20
       /**
        *  @brief  Builds a %multimap from a range.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_multiset.h
--- a/head/contrib/libstdc++/include/bits/stl_multiset.h	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_multiset.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -134,7 +134,7 @@
        *  @brief  Default constructor creates no elements.
        */
       multiset()
-      : _M_t(_Compare(), allocator_type()) { }
+      : _M_t() { }
=20
       explicit
       multiset(const _Compare& __comp,
@@ -152,7 +152,7 @@
        */
       template <class _InputIterator>
         multiset(_InputIterator __first, _InputIterator __last)
-	: _M_t(_Compare(), allocator_type())
+	: _M_t()
         { _M_t._M_insert_equal(__first, __last); }
=20
       /**
@@ -180,7 +180,7 @@
        *  The newly-created %multiset uses a copy of the allocation object=
 used
        *  by @a x.
        */
-      multiset(const multiset<_Key,_Compare,_Alloc>& __x)
+      multiset(const multiset& __x)
       : _M_t(__x._M_t) { }
=20
       /**
@@ -190,8 +190,8 @@
        *  All the elements of @a x are copied, but unlike the copy constru=
ctor,
        *  the allocator object is not copied.
        */
-      multiset<_Key,_Compare,_Alloc>&
-      operator=3D(const multiset<_Key,_Compare,_Alloc>& __x)
+      multiset&
+      operator=3D(const multiset& __x)
       {
 	_M_t =3D __x._M_t;
 	return *this;
@@ -275,7 +275,7 @@
        *  std::swap(s1,s2) will feed to this function.
        */
       void
-      swap(multiset<_Key, _Compare, _Alloc>& __x)
+      swap(multiset& __x)
       { _M_t.swap(__x._M_t); }
=20
       // insert/erase
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_set.h
--- a/head/contrib/libstdc++/include/bits/stl_set.h	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_set.h	Wed Jul 25 16:21:35 201=
2 +0300
@@ -138,7 +138,7 @@
       // allocation/deallocation
       ///  Default constructor creates no elements.
       set()
-      : _M_t(_Compare(), allocator_type()) {}
+      : _M_t() { }
=20
       /**
        *  @brief  Default constructor creates no elements.
@@ -162,7 +162,7 @@
        */
       template<class _InputIterator>
         set(_InputIterator __first, _InputIterator __last)
-        : _M_t(_Compare(), allocator_type())
+        : _M_t()
         { _M_t._M_insert_unique(__first, __last); }
=20
       /**
@@ -190,7 +190,7 @@
        *  The newly-created %set uses a copy of the allocation object used
        *  by @a x.
        */
-      set(const set<_Key,_Compare,_Alloc>& __x)
+      set(const set& __x)
       : _M_t(__x._M_t) { }
=20
       /**
@@ -200,8 +200,8 @@
        *  All the elements of @a x are copied, but unlike the copy constru=
ctor,
        *  the allocator object is not copied.
        */
-      set<_Key,_Compare,_Alloc>&
-      operator=3D(const set<_Key, _Compare, _Alloc>& __x)
+      set&
+      operator=3D(const set& __x)
       {
 	_M_t =3D __x._M_t;
 	return *this;
@@ -283,7 +283,7 @@
        *  std::swap(s1,s2) will feed to this function.
        */
       void
-      swap(set<_Key,_Compare,_Alloc>& __x)
+      swap(set& __x)
       { _M_t.swap(__x._M_t); }
=20
       // insert/erase
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_tree.h
--- a/head/contrib/libstdc++/include/bits/stl_tree.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_tree.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -410,10 +410,19 @@
 	  _Rb_tree_node_base 	_M_header;
 	  size_type 		_M_node_count; // Keeps track of size of tree.
=20
-	  _Rb_tree_impl(const _Node_allocator& __a =3D _Node_allocator(),
-			const _Key_compare& __comp =3D _Key_compare())
-	  : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),=20
+	  _Rb_tree_impl()
+	  : _Node_allocator(), _M_key_compare(), _M_header(),
 	    _M_node_count(0)
+	  { _M_initialize(); }
+
+	  _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
+	  : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
+	    _M_node_count(0)
+	  { _M_initialize(); }
+
+	private:
+	  void
+	  _M_initialize()
 	  {
 	    this->_M_header._M_color =3D _S_red;
 	    this->_M_header._M_parent =3D 0;
@@ -431,11 +440,20 @@
 	  _Rb_tree_node_base 	_M_header;
 	  size_type 		_M_node_count; // Keeps track of size of tree.
=20
-	  _Rb_tree_impl(const _Node_allocator& __a =3D _Node_allocator(),
-			const _Key_compare& __comp =3D _Key_compare())
+	  _Rb_tree_impl()
+	  : _Node_allocator(), _M_key_compare(), _M_header(),
+	    _M_node_count(0)
+	  { _M_initialize(); }
+
+	  _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
 	  : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
 	    _M_node_count(0)
-	  {=20
+	  { _M_initialize(); }
+
+	private:
+	  void
+	  _M_initialize()
+	  {
 	    this->_M_header._M_color =3D _S_red;
 	    this->_M_header._M_parent =3D 0;
 	    this->_M_header._M_left =3D &this->_M_header;
@@ -568,16 +586,13 @@
       _Rb_tree()
       { }
=20
-      _Rb_tree(const _Compare& __comp)
-      : _M_impl(allocator_type(), __comp)
+      _Rb_tree(const _Compare& __comp,
+	       const allocator_type& __a =3D allocator_type())
+      : _M_impl(__comp, __a)
       { }
=20
-      _Rb_tree(const _Compare& __comp, const allocator_type& __a)
-      : _M_impl(__a, __comp)
-      { }
-
-      _Rb_tree(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& =
__x)
-      : _M_impl(__x._M_get_Node_allocator(), __x._M_impl._M_key_compare)
+      _Rb_tree(const _Rb_tree& __x)
+      : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
       {
 	if (__x._M_root() !=3D 0)
 	  {
@@ -591,8 +606,8 @@
       ~_Rb_tree()
       { _M_erase(_M_begin()); }
=20
-      _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
-      operator=3D(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc=
>& __x);
+      _Rb_tree&
+      operator=3D(const _Rb_tree& __x);
=20
       // Accessors.
       _Compare
@@ -653,7 +668,7 @@
       { return get_allocator().max_size(); }
=20
       void
-      swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t);
+      swap(_Rb_tree& __t);
=20
       // Insert/erase.
       pair<iterator, bool>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/libstdc++/include/bits/st=
l_vector.h
--- a/head/contrib/libstdc++/include/bits/stl_vector.h	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/libstdc++/include/bits/stl_vector.h	Wed Jul 25 16:21:35 =
2012 +0300
@@ -84,6 +84,11 @@
 	_Tp*           _M_start;
 	_Tp*           _M_finish;
 	_Tp*           _M_end_of_storage;
+
+	_Vector_impl()
+	: _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+	{ }
+
 	_Vector_impl(_Tp_alloc_type const& __a)
 	: _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
 	{ }
@@ -104,6 +109,9 @@
       get_allocator() const
       { return allocator_type(_M_get_Tp_allocator()); }
=20
+      _Vector_base()
+      : _M_impl() { }
+
       _Vector_base(const allocator_type& __a)
       : _M_impl(__a)
       { }
@@ -194,8 +202,11 @@
       /**
        *  @brief  Default constructor creates no elements.
        */
+      vector()
+      : _Base() { }
+
       explicit
-      vector(const allocator_type& __a =3D allocator_type())
+      vector(const allocator_type& __a)
       : _Base(__a)
       { }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm-c/lto.h
--- a/head/contrib/llvm/include/llvm-c/lto.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm-c/lto.h	Wed Jul 25 16:21:35 2012 +0300
@@ -251,12 +251,6 @@
                                int nargs);
=20
 /**
- * Enables the internalize pass during LTO optimizations.
- */
-extern void
-lto_codegen_set_whole_program_optimization(lto_code_gen_t cg);
-
-/**
  * Adds to a list of all global symbols that must exist in the final
  * generated code.  If a function is not listed, it might be
  * inlined into every usage and optimized away.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/ADT/Sma=
llPtrSet.h
--- a/head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h	Wed Jul 25 16:21:35 =
2012 +0300
@@ -126,9 +126,6 @@
 private:
   bool isSmall() const { return CurArray =3D=3D SmallArray; }
=20
-  unsigned Hash(const void *Ptr) const {
-    return static_cast<unsigned>(((uintptr_t)Ptr >> 4) & (CurArraySize-1));
-  }
   const void * const *FindBucketFor(const void *Ptr) const;
   void shrink_and_clear();
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/ADT/Str=
ingMap.h
--- a/head/contrib/llvm/include/llvm/ADT/StringMap.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/include/llvm/ADT/StringMap.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -239,7 +239,7 @@
   explicit StringMap(AllocatorTy A)
     : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))), Allocator(=
A) {}
=20
-  explicit StringMap(const StringMap &RHS)
+  StringMap(const StringMap &RHS)
     : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {
     assert(RHS.empty() &&
            "Copy ctor from non-empty stringmap not implemented yet!");
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/CodeGen=
/DFAPacketizer.h
--- a/head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -28,7 +28,6 @@
=20
 #include "llvm/CodeGen/MachineBasicBlock.h"
 #include "llvm/ADT/DenseMap.h"
-#include <map>
=20
 namespace llvm {
=20
@@ -37,7 +36,7 @@
 class MachineLoopInfo;
 class MachineDominatorTree;
 class InstrItineraryData;
-class DefaultVLIWScheduler;
+class ScheduleDAGInstrs;
 class SUnit;
=20
 class DFAPacketizer {
@@ -78,8 +77,6 @@
   // reserveResources - Reserve the resources occupied by a machine
   // instruction and change the current state to reflect that change.
   void reserveResources(llvm::MachineInstr *MI);
-
-  const InstrItineraryData *getInstrItins() const { return InstrItins; }
 };
=20
 // VLIWPacketizerList - Implements a simple VLIW packetizer using DFA. The
@@ -90,21 +87,20 @@
 // and machine resource is marked as taken. If any dependency is found, a =
target
 // API call is made to prune the dependence.
 class VLIWPacketizerList {
-protected:
   const TargetMachine &TM;
   const MachineFunction &MF;
   const TargetInstrInfo *TII;
=20
-  // The VLIW Scheduler.
-  DefaultVLIWScheduler *VLIWScheduler;
+  // Encapsulate data types not exposed to the target interface.
+  ScheduleDAGInstrs *SchedulerImpl;
=20
+protected:
   // Vector of instructions assigned to the current packet.
   std::vector<MachineInstr*> CurrentPacketMIs;
   // DFA resource tracker.
   DFAPacketizer *ResourceTracker;
-
-  // Generate MI -> SU map.
-  std::map<MachineInstr*, SUnit*> MIToSUnit;
+  // Scheduling units.
+  std::vector<SUnit> SUnits;
=20
 public:
   VLIWPacketizerList(
@@ -122,32 +118,17 @@
   DFAPacketizer *getResourceTracker() {return ResourceTracker;}
=20
   // addToPacket - Add MI to the current packet.
-  virtual MachineBasicBlock::iterator addToPacket(MachineInstr *MI) {
-    MachineBasicBlock::iterator MII =3D MI;
-    CurrentPacketMIs.push_back(MI);
-    ResourceTracker->reserveResources(MI);
-    return MII;
-  }
+  void addToPacket(MachineInstr *MI);
=20
   // endPacket - End the current packet.
-  void endPacket(MachineBasicBlock *MBB, MachineInstr *MI);
-
-  // initPacketizerState - perform initialization before packetizing
-  // an instruction. This function is supposed to be overrided by
-  // the target dependent packetizer.
-  virtual void initPacketizerState(void) { return; }
+  void endPacket(MachineBasicBlock *MBB, MachineInstr *I);
=20
   // ignorePseudoInstruction - Ignore bundling of pseudo instructions.
-  virtual bool ignorePseudoInstruction(MachineInstr *I,
-                                       MachineBasicBlock *MBB) {
-    return false;
-  }
+  bool ignorePseudoInstruction(MachineInstr *I, MachineBasicBlock *MBB);
=20
-  // isSoloInstruction - return true if instruction MI can not be packetiz=
ed
-  // with any other instruction, which means that MI itself is a packet.
-  virtual bool isSoloInstruction(MachineInstr *MI) {
-    return true;
-  }
+  // isSoloInstruction - return true if instruction I must end previous
+  // packet.
+  bool isSoloInstruction(MachineInstr *I);
=20
   // isLegalToPacketizeTogether - Is it legal to packetize SUI and SUJ
   // together.
@@ -160,7 +141,6 @@
   virtual bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ) {
     return false;
   }
-
 };
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/CodeGen=
/Passes.h
--- a/head/contrib/llvm/include/llvm/CodeGen/Passes.h	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/include/llvm/CodeGen/Passes.h	Wed Jul 25 16:21:35 2=
012 +0300
@@ -56,7 +56,7 @@
=20
 protected:
   TargetMachine *TM;
-  PassManagerBase &PM;
+  PassManagerBase *PM;
   PassConfigImpl *Impl; // Internal data structures
   bool Initialized;     // Flagged after all passes are configured.
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/CodeGen=
/ScheduleDAGInstrs.h
--- a/head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h	Wed Jul 25=
 16:21:35 2012 +0300
@@ -181,6 +181,13 @@
     /// the def-side latency only.
     bool UnitLatencies;
=20
+    /// The standard DAG builder does not normally include terminators as =
DAG
+    /// nodes because it does not create the necessary dependencies to pre=
vent
+    /// reordering. A specialized scheduler can overide
+    /// TargetInstrInfo::isSchedulingBoundary then enable this flag to ind=
icate
+    /// it has taken responsibility for scheduling the terminator correctl=
y.
+    bool CanHandleTerminators;
+
     /// State specific to the current scheduling region.
     /// ------------------------------------------------
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/CodeGen=
/SlotIndexes.h
--- a/head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h	Wed Jul 25 16:21=
:35 2012 +0300
@@ -23,6 +23,7 @@
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineFunctionPass.h"
 #include "llvm/ADT/PointerIntPair.h"
+#include "llvm/ADT/ilist.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/Support/Allocator.h"
@@ -33,8 +34,7 @@
   /// SlotIndexes pass. It should not be used directly. See the
   /// SlotIndex & SlotIndexes classes for the public interface to this
   /// information.
-  class IndexListEntry {
-    IndexListEntry *next, *prev;
+  class IndexListEntry : public ilist_node<IndexListEntry> {
     MachineInstr *mi;
     unsigned index;
=20
@@ -51,31 +51,26 @@
     void setIndex(unsigned index) {
       this->index =3D index;
     }
-   =20
-    IndexListEntry* getNext() { return next; }
-    const IndexListEntry* getNext() const { return next; }
-    void setNext(IndexListEntry *next) {
-      this->next =3D next;
-    }
=20
-    IndexListEntry* getPrev() { return prev; }
-    const IndexListEntry* getPrev() const { return prev; }
-    void setPrev(IndexListEntry *prev) {
-      this->prev =3D prev;
-    }
   };
=20
-  // Specialize PointerLikeTypeTraits for IndexListEntry.
   template <>
-  class PointerLikeTypeTraits<IndexListEntry*> {=20
+  struct ilist_traits<IndexListEntry> : public ilist_default_traits<IndexL=
istEntry> {
+  private:
+    mutable ilist_half_node<IndexListEntry> Sentinel;
   public:
-    static inline void* getAsVoidPointer(IndexListEntry *p) {
-      return p;
+    IndexListEntry *createSentinel() const {
+      return static_cast<IndexListEntry*>(&Sentinel);
     }
-    static inline IndexListEntry* getFromVoidPointer(void *p) {
-      return static_cast<IndexListEntry*>(p);
-    }
-    enum { NumLowBitsAvailable =3D 3 };
+    void destroySentinel(IndexListEntry *) const {}
+
+    IndexListEntry *provideInitialHead() const { return createSentinel(); }
+    IndexListEntry *ensureHead(IndexListEntry*) const { return createSenti=
nel(); }
+    static void noteHead(IndexListEntry*, IndexListEntry*) {}
+    void deleteNode(IndexListEntry *N) {}
+
+  private:
+    void createNode(const IndexListEntry &);
   };
=20
   /// SlotIndex - An opaque wrapper around machine indexes.
@@ -112,13 +107,13 @@
     SlotIndex(IndexListEntry *entry, unsigned slot)
       : lie(entry, slot) {}
=20
-    IndexListEntry& entry() const {
+    IndexListEntry* listEntry() const {
       assert(isValid() && "Attempt to compare reserved index.");
-      return *lie.getPointer();
+      return lie.getPointer();
     }
=20
     int getIndex() const {
-      return entry().getIndex() | getSlot();
+      return listEntry()->getIndex() | getSlot();
     }
=20
     /// Returns the slot for this SlotIndex.
@@ -150,8 +145,7 @@
     SlotIndex() : lie(0, 0) {}
=20
     // Construct a new slot index from the given one, and set the slot.
-    SlotIndex(const SlotIndex &li, Slot s)
-      : lie(&li.entry(), unsigned(s)) {
+    SlotIndex(const SlotIndex &li, Slot s) : lie(li.listEntry(), unsigned(=
s)) {
       assert(lie.getPointer() !=3D 0 &&
              "Attempt to construct index with 0 pointer.");
     }
@@ -179,7 +173,7 @@
     bool operator!=3D(SlotIndex other) const {
       return lie !=3D other.lie;
     }
-  =20
+
     /// Compare two SlotIndex objects. Return true if the first index
     /// is strictly lower than the second.
     bool operator<(SlotIndex other) const {
@@ -211,7 +205,7 @@
     /// isEarlierInstr - Return true if A refers to an instruction earlier=
 than
     /// B. This is equivalent to A < B && !isSameInstr(A, B).
     static bool isEarlierInstr(SlotIndex A, SlotIndex B) {
-      return A.entry().getIndex() < B.entry().getIndex();
+      return A.listEntry()->getIndex() < B.listEntry()->getIndex();
     }
=20
     /// Return the distance from this index to the given one.
@@ -236,25 +230,25 @@
     /// is the one associated with the Slot_Block slot for the instruction
     /// pointed to by this index.
     SlotIndex getBaseIndex() const {
-      return SlotIndex(&entry(), Slot_Block);
+      return SlotIndex(listEntry(), Slot_Block);
     }
=20
     /// Returns the boundary index for associated with this index. The bou=
ndary
     /// index is the one associated with the Slot_Block slot for the instr=
uction
     /// pointed to by this index.
     SlotIndex getBoundaryIndex() const {
-      return SlotIndex(&entry(), Slot_Dead);
+      return SlotIndex(listEntry(), Slot_Dead);
     }
=20
     /// Returns the register use/def slot in the current instruction for a
     /// normal or early-clobber def.
     SlotIndex getRegSlot(bool EC =3D false) const {
-      return SlotIndex(&entry(), EC ? Slot_EarlyClobber : Slot_Register);
+      return SlotIndex(listEntry(), EC ? Slot_EarlyClobber : Slot_Register=
);
     }
=20
     /// Returns the dead def kill slot for the current instruction.
     SlotIndex getDeadSlot() const {
-      return SlotIndex(&entry(), Slot_Dead);
+      return SlotIndex(listEntry(), Slot_Dead);
     }
=20
     /// Returns the next slot in the index list. This could be either the
@@ -266,15 +260,15 @@
     SlotIndex getNextSlot() const {
       Slot s =3D getSlot();
       if (s =3D=3D Slot_Dead) {
-        return SlotIndex(entry().getNext(), Slot_Block);
+        return SlotIndex(listEntry()->getNextNode(), Slot_Block);
       }
-      return SlotIndex(&entry(), s + 1);
+      return SlotIndex(listEntry(), s + 1);
     }
=20
     /// Returns the next index. This is the index corresponding to the this
     /// index's slot, but for the next instruction.
     SlotIndex getNextIndex() const {
-      return SlotIndex(entry().getNext(), getSlot());
+      return SlotIndex(listEntry()->getNextNode(), getSlot());
     }
=20
     /// Returns the previous slot in the index list. This could be either =
the
@@ -286,15 +280,15 @@
     SlotIndex getPrevSlot() const {
       Slot s =3D getSlot();
       if (s =3D=3D Slot_Block) {
-        return SlotIndex(entry().getPrev(), Slot_Dead);
+        return SlotIndex(listEntry()->getPrevNode(), Slot_Dead);
       }
-      return SlotIndex(&entry(), s - 1);
+      return SlotIndex(listEntry(), s - 1);
     }
=20
     /// Returns the previous index. This is the index corresponding to this
     /// index's slot, but for the previous instruction.
     SlotIndex getPrevIndex() const {
-      return SlotIndex(entry().getPrev(), getSlot());
+      return SlotIndex(listEntry()->getPrevNode(), getSlot());
     }
=20
   };
@@ -315,7 +309,7 @@
       return (LHS =3D=3D RHS);
     }
   };
- =20
+
   template <> struct isPodLike<SlotIndex> { static const bool value =3D tr=
ue; };
=20
=20
@@ -346,8 +340,10 @@
   class SlotIndexes : public MachineFunctionPass {
   private:
=20
+    typedef ilist<IndexListEntry> IndexList;
+    IndexList indexList;
+
     MachineFunction *mf;
-    IndexListEntry *indexListHead;
     unsigned functionSize;
=20
     typedef DenseMap<const MachineInstr*, SlotIndex> Mi2IndexMap;
@@ -374,84 +370,18 @@
       return entry;
     }
=20
-    void initList() {
-      assert(indexListHead =3D=3D 0 && "Zero entry non-null at initialisat=
ion.");
-      indexListHead =3D createEntry(0, ~0U);
-      indexListHead->setNext(0);
-      indexListHead->setPrev(indexListHead);
-    }
-
-    void clearList() {
-      indexListHead =3D 0;
-      ileAllocator.Reset();
-    }
-
-    IndexListEntry* getTail() {
-      assert(indexListHead !=3D 0 && "Call to getTail on uninitialized lis=
t.");
-      return indexListHead->getPrev();
-    }
-
-    const IndexListEntry* getTail() const {
-      assert(indexListHead !=3D 0 && "Call to getTail on uninitialized lis=
t.");
-      return indexListHead->getPrev();
-    }
-
-    // Returns true if the index list is empty.
-    bool empty() const { return (indexListHead =3D=3D getTail()); }
-
-    IndexListEntry* front() {
-      assert(!empty() && "front() called on empty index list.");
-      return indexListHead;
-    }
-
-    const IndexListEntry* front() const {
-      assert(!empty() && "front() called on empty index list.");
-      return indexListHead;
-    }
-
-    IndexListEntry* back() {
-      assert(!empty() && "back() called on empty index list.");
-      return getTail()->getPrev();
-    }
-
-    const IndexListEntry* back() const {
-      assert(!empty() && "back() called on empty index list.");
-      return getTail()->getPrev();
-    }
-
-    /// Insert a new entry before itr.
-    void insert(IndexListEntry *itr, IndexListEntry *val) {
-      assert(itr !=3D 0 && "itr should not be null.");
-      IndexListEntry *prev =3D itr->getPrev();
-      val->setNext(itr);
-      val->setPrev(prev);
-     =20
-      if (itr !=3D indexListHead) {
-        prev->setNext(val);
-      }
-      else {
-        indexListHead =3D val;
-      }
-      itr->setPrev(val);
-    }
-
-    /// Push a new entry on to the end of the list.
-    void push_back(IndexListEntry *val) {
-      insert(getTail(), val);
-    }
-
-    /// Renumber locally after inserting newEntry.
-    void renumberIndexes(IndexListEntry *newEntry);
+    /// Renumber locally after inserting curItr.
+    void renumberIndexes(IndexList::iterator curItr);
=20
   public:
     static char ID;
=20
-    SlotIndexes() : MachineFunctionPass(ID), indexListHead(0) {
+    SlotIndexes() : MachineFunctionPass(ID) {
       initializeSlotIndexesPass(*PassRegistry::getPassRegistry());
     }
=20
     virtual void getAnalysisUsage(AnalysisUsage &au) const;
-    virtual void releaseMemory();=20
+    virtual void releaseMemory();
=20
     virtual bool runOnMachineFunction(MachineFunction &fn);
=20
@@ -463,22 +393,21 @@
=20
     /// Returns the zero index for this analysis.
     SlotIndex getZeroIndex() {
-      assert(front()->getIndex() =3D=3D 0 && "First index is not 0?");
-      return SlotIndex(front(), 0);
+      assert(indexList.front().getIndex() =3D=3D 0 && "First index is not =
0?");
+      return SlotIndex(&indexList.front(), 0);
     }
=20
     /// Returns the base index of the last slot in this analysis.
     SlotIndex getLastIndex() {
-      return SlotIndex(back(), 0);
+      return SlotIndex(&indexList.back(), 0);
     }
=20
     /// Returns the distance between the highest and lowest indexes alloca=
ted
     /// so far.
     unsigned getIndexesLength() const {
-      assert(front()->getIndex() =3D=3D 0 &&
+      assert(indexList.front().getIndex() =3D=3D 0 &&
              "Initial index isn't zero?");
-
-      return back()->getIndex();
+      return indexList.back().getIndex();
     }
=20
     /// Returns the number of instructions in the function.
@@ -503,19 +432,15 @@
     /// Returns the instruction for the given index, or null if the given
     /// index has no instruction associated with it.
     MachineInstr* getInstructionFromIndex(SlotIndex index) const {
-      return index.isValid() ? index.entry().getInstr() : 0;
+      return index.isValid() ? index.listEntry()->getInstr() : 0;
     }
=20
     /// Returns the next non-null index.
     SlotIndex getNextNonNullIndex(SlotIndex index) {
-      SlotIndex nextNonNull =3D index.getNextIndex();
-
-      while (&nextNonNull.entry() !=3D getTail() &&
-             getInstructionFromIndex(nextNonNull) =3D=3D 0) {
-        nextNonNull =3D nextNonNull.getNextIndex();
-      }
-
-      return nextNonNull;
+      IndexList::iterator itr(index.listEntry());
+      ++itr;
+      while (itr !=3D indexList.end() && itr->getInstr() =3D=3D 0) { ++itr=
; }
+      return SlotIndex(itr, index.getSlot());
     }
=20
     /// getIndexBefore - Returns the index of the last indexed instruction
@@ -659,31 +584,31 @@
       assert(mi->getParent() !=3D 0 && "Instr must be added to function.");
=20
       // Get the entries where mi should be inserted.
-      IndexListEntry *prevEntry, *nextEntry;
+      IndexList::iterator prevItr, nextItr;
       if (Late) {
         // Insert mi's index immediately before the following instruction.
-        nextEntry =3D &getIndexAfter(mi).entry();
-        prevEntry =3D nextEntry->getPrev();
+        nextItr =3D getIndexAfter(mi).listEntry();
+        prevItr =3D prior(nextItr);
       } else {
         // Insert mi's index immediately after the preceeding instruction.
-        prevEntry =3D &getIndexBefore(mi).entry();
-        nextEntry =3D prevEntry->getNext();
+        prevItr =3D getIndexBefore(mi).listEntry();
+        nextItr =3D llvm::next(prevItr);
       }
=20
       // Get a number for the new instr, or 0 if there's no room currently.
       // In the latter case we'll force a renumber later.
-      unsigned dist =3D ((nextEntry->getIndex() - prevEntry->getIndex())/2=
) & ~3u;
-      unsigned newNumber =3D prevEntry->getIndex() + dist;
+      unsigned dist =3D ((nextItr->getIndex() - prevItr->getIndex())/2) & =
~3u;
+      unsigned newNumber =3D prevItr->getIndex() + dist;
=20
       // Insert a new list entry for mi.
-      IndexListEntry *newEntry =3D createEntry(mi, newNumber);
-      insert(nextEntry, newEntry);
+      IndexList::iterator newItr =3D
+        indexList.insert(nextItr, createEntry(mi, newNumber));
=20
       // Renumber locally if we need to.
       if (dist =3D=3D 0)
-        renumberIndexes(newEntry);
+        renumberIndexes(newItr);
=20
-      SlotIndex newIndex(newEntry, SlotIndex::Slot_Block);
+      SlotIndex newIndex(&*newItr, SlotIndex::Slot_Block);
       mi2iMap.insert(std::make_pair(mi, newIndex));
       return newIndex;
     }
@@ -694,7 +619,7 @@
       // MachineInstr -> index mappings
       Mi2IndexMap::iterator mi2iItr =3D mi2iMap.find(mi);
       if (mi2iItr !=3D mi2iMap.end()) {
-        IndexListEntry *miEntry(&mi2iItr->second.entry());       =20
+        IndexListEntry *miEntry(mi2iItr->second.listEntry());
         assert(miEntry->getInstr() =3D=3D mi && "Instruction indexes broke=
n.");
         // FIXME: Eventually we want to actually delete these indexes.
         miEntry->setInstr(0);
@@ -709,7 +634,7 @@
       if (mi2iItr =3D=3D mi2iMap.end())
         return;
       SlotIndex replaceBaseIndex =3D mi2iItr->second;
-      IndexListEntry *miEntry(&replaceBaseIndex.entry());
+      IndexListEntry *miEntry(replaceBaseIndex.listEntry());
       assert(miEntry->getInstr() =3D=3D mi &&
              "Mismatched instruction in index tables.");
       miEntry->setInstr(newMI);
@@ -726,13 +651,13 @@
       IndexListEntry *nextEntry =3D 0;
=20
       if (nextMBB =3D=3D mbb->getParent()->end()) {
-        nextEntry =3D getTail();
+        nextEntry =3D indexList.end();
       } else {
-        nextEntry =3D &getMBBStartIdx(nextMBB).entry();
+        nextEntry =3D getMBBStartIdx(nextMBB).listEntry();
       }
=20
-      insert(nextEntry, startEntry);
-      insert(nextEntry, stopEntry);
+      indexList.insert(nextEntry, startEntry);
+      indexList.insert(nextEntry, stopEntry);
=20
       SlotIndex startIdx(startEntry, SlotIndex::Slot_Block);
       SlotIndex endIdx(nextEntry, SlotIndex::Slot_Block);
@@ -766,4 +691,4 @@
=20
 }
=20
-#endif // LLVM_CODEGEN_LIVEINDEX_H=20
+#endif // LLVM_CODEGEN_SLOTINDEXES_H
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Intrins=
icsX86.td
--- a/head/contrib/llvm/include/llvm/IntrinsicsX86.td	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/include/llvm/IntrinsicsX86.td	Wed Jul 25 16:21:35 2=
012 +0300
@@ -1091,20 +1091,6 @@
         GCCBuiltin<"__builtin_ia32_vperm2f128_si256">,
         Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
                   llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
-
-  def int_x86_avx_vpermil_pd :
-        Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
-                  llvm_i8_ty], [IntrNoMem]>;
-  def int_x86_avx_vpermil_ps :
-        Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
-                  llvm_i8_ty], [IntrNoMem]>;
-
-  def int_x86_avx_vpermil_pd_256 :
-        Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty,
-                  llvm_i8_ty], [IntrNoMem]>;
-  def int_x86_avx_vpermil_ps_256 :
-        Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty,
-                  llvm_i8_ty], [IntrNoMem]>;
 }
=20
 // Vector blend
@@ -1659,15 +1645,9 @@
   def int_x86_avx2_permd : GCCBuiltin<"__builtin_ia32_permvarsi256">,
               Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
                         [IntrNoMem]>;
-  def int_x86_avx2_permq : GCCBuiltin<"__builtin_ia32_permdi256">,
-              Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_i8_ty],
-                        [IntrNoMem]>;
   def int_x86_avx2_permps : GCCBuiltin<"__builtin_ia32_permvarsf256">,
               Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
                         [IntrNoMem]>;
-  def int_x86_avx2_permpd : GCCBuiltin<"__builtin_ia32_permdf256">,
-              Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i8_ty],
-                        [IntrNoMem]>;
   def int_x86_avx2_vperm2i128 : GCCBuiltin<"__builtin_ia32_permti256">,
               Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
                          llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/LLVMCon=
text.h
--- a/head/contrib/llvm/include/llvm/LLVMContext.h	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/llvm/include/llvm/LLVMContext.h	Wed Jul 25 16:21:35 2012=
 +0300
@@ -42,7 +42,7 @@
     MD_dbg =3D 0,  // "dbg"
     MD_tbaa =3D 1, // "tbaa"
     MD_prof =3D 2,  // "prof"
-    MD_fpaccuracy =3D 3,  // "fpaccuracy"
+    MD_fpmath =3D 3,  // "fpmath"
     MD_range =3D 4 // "range"
   };
  =20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/MC/MCPa=
rser/AsmLexer.h
--- a/head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -16,14 +16,11 @@
=20
 #include "llvm/ADT/StringRef.h"
 #include "llvm/MC/MCParser/MCAsmLexer.h"
-#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/Support/DataTypes.h"
 #include <string>
-#include <cassert>
=20
 namespace llvm {
 class MemoryBuffer;
-class SMLoc;
 class MCAsmInfo;
=20
 /// AsmLexer - Lexer class for assembly files.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/MC/MCPa=
rser/MCAsmLexer.h
--- a/head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -15,8 +15,6 @@
 #include "llvm/Support/SMLoc.h"
=20
 namespace llvm {
-class MCAsmLexer;
-class MCInst;
=20
 /// AsmToken - Target independent representation for an assembler token.
 class AsmToken {
@@ -53,6 +51,7 @@
     Greater, GreaterEqual, GreaterGreater, At
   };
=20
+private:
   TokenKind Kind;
=20
   /// A reference to the entire token contents; this is always a pointer i=
nto
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Object/=
ELF.h
--- a/head/contrib/llvm/include/llvm/Object/ELF.h	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/llvm/include/llvm/Object/ELF.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -33,6 +33,15 @@
 namespace llvm {
 namespace object {
=20
+// Subclasses of ELFObjectFile may need this for template instantiation
+inline std::pair<unsigned char, unsigned char>
+getElfArchType(MemoryBuffer *Object) {
+  if (Object->getBufferSize() < ELF::EI_NIDENT)
+    return std::make_pair((uint8_t)ELF::ELFCLASSNONE,(uint8_t)ELF::ELFDATA=
NONE);
+  return std::make_pair( (uint8_t)Object->getBufferStart()[ELF::EI_CLASS]
+                       , (uint8_t)Object->getBufferStart()[ELF::EI_DATA]);
+}
+
 // Templates to choose Elf_Addr and Elf_Off depending on is64Bits.
 template<support::endianness target_endianness>
 struct ELFDataTypeTypedefHelperCommon {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Operato=
r.h
--- a/head/contrib/llvm/include/llvm/Operator.h	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/llvm/include/llvm/Operator.h	Wed Jul 25 16:21:35 2012 +0=
300
@@ -15,8 +15,9 @@
 #ifndef LLVM_OPERATOR_H
 #define LLVM_OPERATOR_H
=20
+#include "llvm/Constants.h"
 #include "llvm/Instruction.h"
-#include "llvm/Constants.h"
+#include "llvm/Type.h"
=20
 namespace llvm {
=20
@@ -129,14 +130,15 @@
     IsExact =3D (1 << 0)
   };
  =20
+private:
+  ~PossiblyExactOperator(); // do not implement
+
   friend class BinaryOperator;
   friend class ConstantExpr;
   void setIsExact(bool B) {
     SubclassOptionalData =3D (SubclassOptionalData & ~IsExact) | (B * IsEx=
act);
   }
  =20
-private:
-  ~PossiblyExactOperator(); // do not implement
 public:
   /// isExact - Test whether this division is known to be exact, with
   /// zero remainder.
@@ -161,7 +163,28 @@
            (isa<ConstantExpr>(V) && classof(cast<ConstantExpr>(V)));
   }
 };
- =20
+
+/// FPMathOperator - Utility class for floating point operations which can=
 have
+/// information about relaxed accuracy requirements attached to them.
+class FPMathOperator : public Operator {
+private:
+  ~FPMathOperator(); // do not implement
+
+public:
+
+  /// \brief Get the maximum error permitted by this operation in ULPs.  An
+  /// accuracy of 0.0 means that the operation should be performed with the
+  /// default precision.
+  float getFPAccuracy() const;
+
+  static inline bool classof(const FPMathOperator *) { return true; }
+  static inline bool classof(const Instruction *I) {
+    return I->getType()->isFPOrFPVectorTy();
+  }
+  static inline bool classof(const Value *V) {
+    return isa<Instruction>(V) && classof(cast<Instruction>(V));
+  }
+};
=20
  =20
 /// ConcreteOperator - A helper template for defining operators for indivi=
dual
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/FileSystem.h
--- a/head/contrib/llvm/include/llvm/Support/FileSystem.h	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/FileSystem.h	Wed Jul 25 16:21:=
35 2012 +0300
@@ -422,8 +422,8 @@
 /// @results errc::success if result_{fd,path} have been successfully set,
 ///          otherwise a platform specific error_code.
 error_code unique_file(const Twine &model, int &result_fd,
-                             SmallVectorImpl<char> &result_path,
-                             bool makeAbsolute =3D true);
+                       SmallVectorImpl<char> &result_path,
+                       bool makeAbsolute =3D true, unsigned mode =3D 0600);
=20
 /// @brief Canonicalize path.
 ///
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/IRBuilder.h
--- a/head/contrib/llvm/include/llvm/Support/IRBuilder.h	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/IRBuilder.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -17,6 +17,7 @@
=20
 #include "llvm/Instructions.h"
 #include "llvm/BasicBlock.h"
+#include "llvm/LLVMContext.h"
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/Twine.h"
@@ -331,49 +332,63 @@
          typename Inserter =3D IRBuilderDefaultInserter<preserveNames> >
 class IRBuilder : public IRBuilderBase, public Inserter {
   T Folder;
+  MDNode *DefaultFPMathTag;
 public:
-  IRBuilder(LLVMContext &C, const T &F, const Inserter &I =3D Inserter())
-    : IRBuilderBase(C), Inserter(I), Folder(F) {
+  IRBuilder(LLVMContext &C, const T &F, const Inserter &I =3D Inserter(),
+            MDNode *FPMathTag =3D 0)
+    : IRBuilderBase(C), Inserter(I), Folder(F), DefaultFPMathTag(FPMathTag=
) {
   }
=20
-  explicit IRBuilder(LLVMContext &C) : IRBuilderBase(C), Folder() {
+  explicit IRBuilder(LLVMContext &C, MDNode *FPMathTag =3D 0) : IRBuilderB=
ase(C),
+    Folder(), DefaultFPMathTag(FPMathTag) {
   }
=20
-  explicit IRBuilder(BasicBlock *TheBB, const T &F)
-    : IRBuilderBase(TheBB->getContext()), Folder(F) {
+  explicit IRBuilder(BasicBlock *TheBB, const T &F, MDNode *FPMathTag =3D =
0)
+    : IRBuilderBase(TheBB->getContext()), Folder(F),
+      DefaultFPMathTag(FPMathTag) {
     SetInsertPoint(TheBB);
   }
=20
-  explicit IRBuilder(BasicBlock *TheBB)
-    : IRBuilderBase(TheBB->getContext()), Folder() {
+  explicit IRBuilder(BasicBlock *TheBB, MDNode *FPMathTag =3D 0)
+    : IRBuilderBase(TheBB->getContext()), Folder(),
+      DefaultFPMathTag(FPMathTag) {
     SetInsertPoint(TheBB);
   }
=20
-  explicit IRBuilder(Instruction *IP)
-    : IRBuilderBase(IP->getContext()), Folder() {
+  explicit IRBuilder(Instruction *IP, MDNode *FPMathTag =3D 0)
+    : IRBuilderBase(IP->getContext()), Folder(), DefaultFPMathTag(FPMathTa=
g) {
     SetInsertPoint(IP);
     SetCurrentDebugLocation(IP->getDebugLoc());
   }
=20
-  explicit IRBuilder(Use &U)
-    : IRBuilderBase(U->getContext()), Folder() {
+  explicit IRBuilder(Use &U, MDNode *FPMathTag =3D 0)
+    : IRBuilderBase(U->getContext()), Folder(), DefaultFPMathTag(FPMathTag=
) {
     SetInsertPoint(U);
     SetCurrentDebugLocation(cast<Instruction>(U.getUser())->getDebugLoc());
   }
=20
-  IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F)
-    : IRBuilderBase(TheBB->getContext()), Folder(F) {
+  IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F,
+            MDNode *FPMathTag =3D 0)
+    : IRBuilderBase(TheBB->getContext()), Folder(F),
+      DefaultFPMathTag(FPMathTag) {
     SetInsertPoint(TheBB, IP);
   }
=20
-  IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP)
-    : IRBuilderBase(TheBB->getContext()), Folder() {
+  IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, MDNode *FPMathTag =
=3D 0)
+    : IRBuilderBase(TheBB->getContext()), Folder(),
+      DefaultFPMathTag(FPMathTag) {
     SetInsertPoint(TheBB, IP);
   }
=20
   /// getFolder - Get the constant folder being used.
   const T &getFolder() { return Folder; }
=20
+  /// getDefaultFPMathTag - Get the floating point math metadata being use=
d.
+  MDNode *getDefaultFPMathTag() const { return DefaultFPMathTag; }
+
+  /// SetDefaultFPMathTag - Set the floating point math metadata to be use=
d.
+  void SetDefaultFPMathTag(MDNode *FPMathTag) { DefaultFPMathTag =3D FPMat=
hTag; }
+
   /// isNamePreserving - Return true if this builder is configured to actu=
ally
   /// add the requested names to IR created through it.
   bool isNamePreserving() const { return preserveNames; }
@@ -496,6 +511,14 @@
     if (HasNSW) BO->setHasNoSignedWrap();
     return BO;
   }
+
+  Instruction *AddFPMathTag(Instruction *I, MDNode *FPMathTag) const {
+    if (!FPMathTag)
+      FPMathTag =3D DefaultFPMathTag;
+    if (FPMathTag)
+      I->setMetadata(LLVMContext::MD_fpmath, FPMathTag);
+    return I;
+  }
 public:
   Value *CreateAdd(Value *LHS, Value *RHS, const Twine &Name =3D "",
                    bool HasNUW =3D false, bool HasNSW =3D false) {
@@ -511,11 +534,13 @@
   Value *CreateNUWAdd(Value *LHS, Value *RHS, const Twine &Name =3D "") {
     return CreateAdd(LHS, RHS, Name, true, false);
   }
-  Value *CreateFAdd(Value *LHS, Value *RHS, const Twine &Name =3D "") {
+  Value *CreateFAdd(Value *LHS, Value *RHS, const Twine &Name =3D "",
+                    MDNode *FPMathTag =3D 0) {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
       if (Constant *RC =3D dyn_cast<Constant>(RHS))
         return Insert(Folder.CreateFAdd(LC, RC), Name);
-    return Insert(BinaryOperator::CreateFAdd(LHS, RHS), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFAdd(LHS, RHS),
+                               FPMathTag), Name);
   }
   Value *CreateSub(Value *LHS, Value *RHS, const Twine &Name =3D "",
                    bool HasNUW =3D false, bool HasNSW =3D false) {
@@ -531,11 +556,13 @@
   Value *CreateNUWSub(Value *LHS, Value *RHS, const Twine &Name =3D "") {
     return CreateSub(LHS, RHS, Name, true, false);
   }
-  Value *CreateFSub(Value *LHS, Value *RHS, const Twine &Name =3D "") {
+  Value *CreateFSub(Value *LHS, Value *RHS, const Twine &Name =3D "",
+                    MDNode *FPMathTag =3D 0) {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
       if (Constant *RC =3D dyn_cast<Constant>(RHS))
         return Insert(Folder.CreateFSub(LC, RC), Name);
-    return Insert(BinaryOperator::CreateFSub(LHS, RHS), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFSub(LHS, RHS),
+                               FPMathTag), Name);
   }
   Value *CreateMul(Value *LHS, Value *RHS, const Twine &Name =3D "",
                    bool HasNUW =3D false, bool HasNSW =3D false) {
@@ -551,11 +578,13 @@
   Value *CreateNUWMul(Value *LHS, Value *RHS, const Twine &Name =3D "") {
     return CreateMul(LHS, RHS, Name, true, false);
   }
-  Value *CreateFMul(Value *LHS, Value *RHS, const Twine &Name =3D "") {
+  Value *CreateFMul(Value *LHS, Value *RHS, const Twine &Name =3D "",
+                    MDNode *FPMathTag =3D 0) {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
       if (Constant *RC =3D dyn_cast<Constant>(RHS))
         return Insert(Folder.CreateFMul(LC, RC), Name);
-    return Insert(BinaryOperator::CreateFMul(LHS, RHS), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFMul(LHS, RHS),
+                               FPMathTag), Name);
   }
   Value *CreateUDiv(Value *LHS, Value *RHS, const Twine &Name =3D "",
                     bool isExact =3D false) {
@@ -581,11 +610,13 @@
   Value *CreateExactSDiv(Value *LHS, Value *RHS, const Twine &Name =3D "")=
 {
     return CreateSDiv(LHS, RHS, Name, true);
   }
-  Value *CreateFDiv(Value *LHS, Value *RHS, const Twine &Name =3D "") {
+  Value *CreateFDiv(Value *LHS, Value *RHS, const Twine &Name =3D "",
+                    MDNode *FPMathTag =3D 0) {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
       if (Constant *RC =3D dyn_cast<Constant>(RHS))
         return Insert(Folder.CreateFDiv(LC, RC), Name);
-    return Insert(BinaryOperator::CreateFDiv(LHS, RHS), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFDiv(LHS, RHS),
+                               FPMathTag), Name);
   }
   Value *CreateURem(Value *LHS, Value *RHS, const Twine &Name =3D "") {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
@@ -599,11 +630,13 @@
         return Insert(Folder.CreateSRem(LC, RC), Name);
     return Insert(BinaryOperator::CreateSRem(LHS, RHS), Name);
   }
-  Value *CreateFRem(Value *LHS, Value *RHS, const Twine &Name =3D "") {
+  Value *CreateFRem(Value *LHS, Value *RHS, const Twine &Name =3D "",
+                    MDNode *FPMathTag =3D 0) {
     if (Constant *LC =3D dyn_cast<Constant>(LHS))
       if (Constant *RC =3D dyn_cast<Constant>(RHS))
         return Insert(Folder.CreateFRem(LC, RC), Name);
-    return Insert(BinaryOperator::CreateFRem(LHS, RHS), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFRem(LHS, RHS),
+                               FPMathTag), Name);
   }
=20
   Value *CreateShl(Value *LHS, Value *RHS, const Twine &Name =3D "",
@@ -729,10 +762,10 @@
   Value *CreateNUWNeg(Value *V, const Twine &Name =3D "") {
     return CreateNeg(V, Name, true, false);
   }
-  Value *CreateFNeg(Value *V, const Twine &Name =3D "") {
+  Value *CreateFNeg(Value *V, const Twine &Name =3D "", MDNode *FPMathTag =
=3D 0) {
     if (Constant *VC =3D dyn_cast<Constant>(V))
       return Insert(Folder.CreateFNeg(VC), Name);
-    return Insert(BinaryOperator::CreateFNeg(V), Name);
+    return Insert(AddFPMathTag(BinaryOperator::CreateFNeg(V), FPMathTag), =
Name);
   }
   Value *CreateNot(Value *V, const Twine &Name =3D "") {
     if (Constant *VC =3D dyn_cast<Constant>(V))
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/JSONParser.h
--- a/head/contrib/llvm/include/llvm/Support/JSONParser.h	Wed Jul 25 16:20:=
13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,448 +0,0 @@
-//=3D=3D=3D--- JSONParser.h - Simple JSON parser ----------------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  This file implements a JSON parser.
-//
-//  See http://www.json.org/ for an overview.
-//  See http://www.ietf.org/rfc/rfc4627.txt for the full standard.
-//
-//  FIXME: Currently this supports a subset of JSON. Specifically, support
-//  for numbers, booleans and null for values is missing.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_SUPPORT_JSON_PARSER_H
-#define LLVM_SUPPORT_JSON_PARSER_H
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Allocator.h"
-#include "llvm/Support/Casting.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/SourceMgr.h"
-
-namespace llvm {
-
-class JSONContainer;
-class JSONString;
-class JSONValue;
-class JSONKeyValuePair;
-
-/// \brief Base class for a parsable JSON atom.
-///
-/// This class has no semantics other than being a unit of JSON data which=
 can
-/// be parsed out of a JSON document.
-class JSONAtom {
-public:
-  /// \brief Possible types of JSON objects.
-  enum Kind { JK_KeyValuePair, JK_Array, JK_Object, JK_String };
-
-  /// \brief Returns the type of this value.
-  Kind getKind() const { return MyKind; }
-
-  static bool classof(const JSONAtom *Atom) { return true; }
-
-protected:
-  JSONAtom(Kind MyKind) : MyKind(MyKind) {}
-
-private:
-  Kind MyKind;
-};
-
-/// \brief A parser for JSON text.
-///
-/// Use an object of JSONParser to iterate over the values of a JSON text.
-/// All objects are parsed during the iteration, so you can only iterate o=
nce
-/// over the JSON text, but the cost of partial iteration is minimized.
-/// Create a new JSONParser if you want to iterate multiple times.
-class JSONParser {
-public:
-  /// \brief Create a JSONParser for the given input.
-  ///
-  /// Parsing is started via parseRoot(). Access to the object returned fr=
om
-  /// parseRoot() will parse the input lazily.
-  JSONParser(StringRef Input, SourceMgr *SM);
-
-  /// \brief Returns the outermost JSON value (either an array or an objec=
t).
-  ///
-  /// Can return NULL if the input does not start with an array or an obje=
ct.
-  /// The object is not parsed yet - the caller must iterate over the
-  /// returned object to trigger parsing.
-  ///
-  /// A JSONValue can be either a JSONString, JSONObject or JSONArray.
-  JSONValue *parseRoot();
-
-  /// \brief Parses the JSON text and returns whether it is valid JSON.
-  ///
-  /// In case validate() return false, failed() will return true and
-  /// getErrorMessage() will return the parsing error.
-  bool validate();
-
-  /// \brief Returns true if an error occurs during parsing.
-  ///
-  /// If there was an error while parsing an object that was created by
-  /// iterating over the result of 'parseRoot', 'failed' will return true.
-  bool failed() const;
-
-private:
-  /// \brief These methods manage the implementation details of parsing ne=
w JSON
-  /// atoms.
-  /// @{
-  JSONString *parseString();
-  JSONValue *parseValue();
-  JSONKeyValuePair *parseKeyValuePair();
-  /// @}
-
-  /// \brief Helpers to parse the elements out of both forms of containers.
-  /// @{
-  const JSONAtom *parseElement(JSONAtom::Kind ContainerKind);
-  StringRef::iterator parseFirstElement(JSONAtom::Kind ContainerKind,
-                                        char StartChar, char EndChar,
-                                        const JSONAtom *&Element);
-  StringRef::iterator parseNextElement(JSONAtom::Kind ContainerKind,
-                                       char EndChar,
-                                       const JSONAtom *&Element);
-  /// @}
-
-  /// \brief Whitespace parsing.
-  /// @{
-  void nextNonWhitespace();
-  bool isWhitespace();
-  /// @}
-
-  /// \brief These methods are used for error handling.
-  /// {
-  void setExpectedError(StringRef Expected, StringRef Found);
-  void setExpectedError(StringRef Expected, char Found);
-  bool errorIfAtEndOfFile(StringRef Message);
-  bool errorIfNotAt(char C, StringRef Message);
-  /// }
-
-  /// \brief Skips all elements in the given container.
-  bool skipContainer(const JSONContainer &Container);
-
-  /// \brief Skips to the next position behind the given JSON atom.
-  bool skip(const JSONAtom &Atom);
-
-  /// All nodes are allocated by the parser and will be deallocated when t=
he
-  /// parser is destroyed.
-  BumpPtrAllocator ValueAllocator;
-
-  /// \brief The original input to the parser.
-  MemoryBuffer *InputBuffer;
-
-  /// \brief The source manager used for diagnostics and buffer management.
-  SourceMgr *SM;
-
-  /// \brief The current position in the parse stream.
-  StringRef::iterator Position;
-
-  /// \brief The end position for fast EOF checks without introducing
-  /// unnecessary dereferences.
-  StringRef::iterator End;
-
-  /// \brief If true, an error has occurred.
-  bool Failed;
-
-  friend class JSONContainer;
-};
-
-
-/// \brief Base class for JSON value objects.
-///
-/// This object represents an abstract JSON value. It is the root node beh=
ind
-/// the group of JSON entities that can represent top-level values in a JS=
ON
-/// document. It has no API, and is just a placeholder in the type hierarc=
hy of
-/// nodes.
-class JSONValue : public JSONAtom {
-protected:
-  JSONValue(Kind MyKind) : JSONAtom(MyKind) {}
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    switch (Atom->getKind()) {
-      case JK_Array:
-      case JK_Object:
-      case JK_String:
-        return true;
-      case JK_KeyValuePair:
-        return false;
-    }
-    llvm_unreachable("Invalid JSONAtom kind");
-  }
-  static bool classof(const JSONValue *Value) { return true; }
-  ///@}
-};
-
-/// \brief Gives access to the text of a JSON string.
-///
-/// FIXME: Implement a method to return the unescaped text.
-class JSONString : public JSONValue {
-public:
-  /// \brief Returns the underlying parsed text of the string.
-  ///
-  /// This is the unescaped content of the JSON text.
-  /// See http://www.ietf.org/rfc/rfc4627.txt for details.
-  StringRef getRawText() const { return RawText; }
-
-private:
-  JSONString(StringRef RawText) : JSONValue(JK_String), RawText(RawText) {}
-
-  StringRef RawText;
-
-  friend class JSONParser;
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    return Atom->getKind() =3D=3D JK_String;
-  }
-  static bool classof(const JSONString *String) { return true; }
-  ///@}
-};
-
-/// \brief A (key, value) tuple of type (JSONString *, JSONValue *).
-///
-/// Note that JSONKeyValuePair is not a JSONValue, it is a bare JSONAtom.
-/// JSONKeyValuePairs can be elements of a JSONObject, but not of a JSONAr=
ray.
-/// They are not viable as top-level values either.
-class JSONKeyValuePair : public JSONAtom {
-public:
-  const JSONString * const Key;
-  const JSONValue * const Value;
-
-private:
-  JSONKeyValuePair(const JSONString *Key, const JSONValue *Value)
-      : JSONAtom(JK_KeyValuePair), Key(Key), Value(Value) {}
-
-  friend class JSONParser;
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    return Atom->getKind() =3D=3D JK_KeyValuePair;
-  }
-  static bool classof(const JSONKeyValuePair *KeyValuePair) { return true;=
 }
-  ///@}
-};
-
-/// \brief Implementation of JSON containers (arrays and objects).
-///
-/// JSONContainers drive the lazy parsing of JSON arrays and objects via
-/// forward iterators.
-class JSONContainer : public JSONValue {
-private:
-  /// \brief An iterator that parses the underlying container during itera=
tion.
-  ///
-  /// Iterators on the same collection use shared state, so when multiple =
copies
-  /// of an iterator exist, only one is allowed to be used for iteration;
-  /// iterating multiple copies of an iterator of the same collection will=
 lead
-  /// to undefined behavior.
-  class AtomIterator {
-  public:
-    AtomIterator(const AtomIterator &I) : Container(I.Container) {}
-
-    /// \brief Iterator interface.
-    ///@{
-    bool operator=3D=3D(const AtomIterator &I) const {
-      if (isEnd() || I.isEnd())
-        return isEnd() =3D=3D I.isEnd();
-      return Container->Position =3D=3D I.Container->Position;
-    }
-    bool operator!=3D(const AtomIterator &I) const {
-      return !(*this =3D=3D I);
-    }
-    AtomIterator &operator++() {
-      Container->parseNextElement();
-      return *this;
-    }
-    const JSONAtom *operator*() {
-      return Container->Current;
-    }
-    ///@}
-
-  private:
-    /// \brief Create an iterator for which 'isEnd' returns true.
-    AtomIterator() : Container(0) {}
-
-    /// \brief Create an iterator for the given container.
-    AtomIterator(const JSONContainer *Container) : Container(Container) {}
-
-    bool isEnd() const {
-      return Container =3D=3D 0 || Container->Position =3D=3D StringRef::i=
terator();
-    }
-
-    const JSONContainer * const Container;
-
-    friend class JSONContainer;
-  };
-
-protected:
-  /// \brief An iterator for the specified AtomT.
-  ///
-  /// Used for the implementation of iterators for JSONArray and JSONObjec=
t.
-  template <typename AtomT>
-  class IteratorTemplate : public std::iterator<std::forward_iterator_tag,
-                                                const AtomT*> {
-  public:
-    explicit IteratorTemplate(const AtomIterator& AtomI)
-      : AtomI(AtomI) {}
-
-    bool operator=3D=3D(const IteratorTemplate &I) const {
-      return AtomI =3D=3D I.AtomI;
-    }
-    bool operator!=3D(const IteratorTemplate &I) const { return !(*this =
=3D=3D I); }
-
-    IteratorTemplate &operator++() {
-      ++AtomI;
-      return *this;
-    }
-
-    const AtomT *operator*() { return dyn_cast<AtomT>(*AtomI); }
-
-  private:
-    AtomIterator AtomI;
-  };
-
-  JSONContainer(JSONParser *Parser, char StartChar, char EndChar,
-                JSONAtom::Kind ContainerKind)
-    : JSONValue(ContainerKind), Parser(Parser),
-      Position(), Current(0), Started(false),
-      StartChar(StartChar), EndChar(EndChar) {}
-
-  /// \brief Returns a lazy parsing iterator over the container.
-  ///
-  /// As the iterator drives the parse stream, begin() must only be called
-  /// once per container.
-  AtomIterator atom_begin() const {
-    if (Started)
-      report_fatal_error("Cannot parse container twice.");
-    Started =3D true;
-    // Set up the position and current element when we begin iterating ove=
r the
-    // container.
-    Position =3D Parser->parseFirstElement(getKind(), StartChar, EndChar, =
Current);
-    return AtomIterator(this);
-  }
-  AtomIterator atom_end() const {
-    return AtomIterator();
-  }
-
-private:
-  AtomIterator atom_current() const {
-    if (!Started)
-      return atom_begin();
-
-    return AtomIterator(this);
-  }
-
-  /// \brief Parse the next element in the container into the Current elem=
ent.
-  ///
-  /// This routine is called as an iterator into this container walks thro=
ugh
-  /// its elements. It mutates the container's internal current node to po=
int to
-  /// the next atom of the container.
-  void parseNextElement() const {
-    Parser->skip(*Current);
-    Position =3D Parser->parseNextElement(getKind(), EndChar, Current);
-  }
-
-  // For parsing, JSONContainers call back into the JSONParser.
-  JSONParser * const Parser;
-
-  // 'Position', 'Current' and 'Started' store the state of the parse stre=
am
-  // for iterators on the container, they don't change the container's ele=
ments
-  // and are thus marked as mutable.
-  mutable StringRef::iterator Position;
-  mutable const JSONAtom *Current;
-  mutable bool Started;
-
-  const char StartChar;
-  const char EndChar;
-
-  friend class JSONParser;
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    switch (Atom->getKind()) {
-      case JK_Array:
-      case JK_Object:
-        return true;
-      case JK_KeyValuePair:
-      case JK_String:
-        return false;
-    }
-    llvm_unreachable("Invalid JSONAtom kind");
-  }
-  static bool classof(const JSONContainer *Container) { return true; }
-  ///@}
-};
-
-/// \brief A simple JSON array.
-class JSONArray : public JSONContainer {
-public:
-  typedef IteratorTemplate<JSONValue> const_iterator;
-
-  /// \brief Returns a lazy parsing iterator over the container.
-  ///
-  /// As the iterator drives the parse stream, begin() must only be called
-  /// once per container.
-  const_iterator begin() const { return const_iterator(atom_begin()); }
-  const_iterator end() const { return const_iterator(atom_end()); }
-
-private:
-  JSONArray(JSONParser *Parser)
-    : JSONContainer(Parser, '[', ']', JSONAtom::JK_Array) {}
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    return Atom->getKind() =3D=3D JSONAtom::JK_Array;
-  }
-  static bool classof(const JSONArray *Array) { return true; }
-  ///@}
-
-  friend class JSONParser;
-};
-
-/// \brief A JSON object: an iterable list of JSON key-value pairs.
-class JSONObject : public JSONContainer {
-public:
-  typedef IteratorTemplate<JSONKeyValuePair> const_iterator;
-
-  /// \brief Returns a lazy parsing iterator over the container.
-  ///
-  /// As the iterator drives the parse stream, begin() must only be called
-  /// once per container.
-  const_iterator begin() const { return const_iterator(atom_begin()); }
-  const_iterator end() const { return const_iterator(atom_end()); }
-
-private:
-  JSONObject(JSONParser *Parser)
-    : JSONContainer(Parser, '{', '}', JSONAtom::JK_Object) {}
-
-public:
-  /// \brief dyn_cast helpers
-  ///@{
-  static bool classof(const JSONAtom *Atom) {
-    return Atom->getKind() =3D=3D JSONAtom::JK_Object;
-  }
-  static bool classof(const JSONObject *Object) { return true; }
-  ///@}
-
-  friend class JSONParser;
-};
-
-} // end namespace llvm
-
-#endif // LLVM_SUPPORT_JSON_PARSER_H
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/Locale.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/include/llvm/Support/Locale.h	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,17 @@
+#ifndef LLVM_SUPPORT_LOCALE
+#define LLVM_SUPPORT_LOCALE
+
+#include "llvm/ADT/StringRef.h"
+
+namespace llvm {
+namespace sys {
+namespace locale {
+
+int columnWidth(StringRef s);
+bool isPrint(int c);
+
+}
+}
+}
+
+#endif // LLVM_SUPPORT_LOCALE
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/MDBuilder.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/include/llvm/Support/MDBuilder.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,118 @@
+//=3D=3D=3D---- llvm/Support/MDBuilder.h - Builder for LLVM metadata --*- =
C++ -*-=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+//
+// This file defines the MDBuilder class, which is used as a convenient wa=
y to
+// create LLVM metadata with a consistent and simplified interface.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#ifndef LLVM_SUPPORT_MDBUILDER_H
+#define LLVM_SUPPORT_MDBUILDER_H
+
+#include "llvm/Constants.h"
+#include "llvm/DerivedTypes.h"
+#include "llvm/LLVMContext.h"
+#include "llvm/Metadata.h"
+#include "llvm/ADT/APInt.h"
+
+namespace llvm {
+
+  class MDBuilder {
+    LLVMContext &Context;
+
+  public:
+    MDBuilder(LLVMContext &context) : Context(context) {}
+
+    /// \brief Return the given string as metadata.
+    MDString *createString(StringRef Str) {
+      return MDString::get(Context, Str);
+    }
+
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+    // FPMath metadata.
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+
+    /// \brief Return metadata with the given settings.  The special value=
 0.0
+    /// for the Accuracy parameter indicates the default (maximal precisio=
n)
+    /// setting.
+    MDNode *createFPMath(float Accuracy) {
+      if (Accuracy =3D=3D 0.0)
+        return 0;
+      assert(Accuracy > 0.0 && "Invalid fpmath accuracy!");
+      Value *Op =3D ConstantFP::get(Type::getFloatTy(Context), Accuracy);
+      return MDNode::get(Context, Op);
+    }
+
+
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+    // Range metadata.
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+
+    /// \brief Return metadata describing the range [Lo, Hi).
+    MDNode *createRange(const APInt &Lo, const APInt &Hi) {
+      assert(Lo.getBitWidth() =3D=3D Hi.getBitWidth() && "Mismatched bitwi=
dths!");
+      // If the range is everything then it is useless.
+      if (Hi =3D=3D Lo)
+        return 0;
+
+      // Return the range [Lo, Hi).
+      Type *Ty =3D IntegerType::get(Context, Lo.getBitWidth());
+      Value *Range[2] =3D { ConstantInt::get(Ty, Lo), ConstantInt::get(Ty,=
 Hi) };
+      return MDNode::get(Context, Range);
+    }
+
+
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+    // TBAA metadata.
+    //=3D=3D=3D-----------------------------------------------------------=
-------=3D=3D=3D//
+
+    /// \brief Return metadata appropriate for a TBAA root node.  Each ret=
urned
+    /// node is distinct from all other metadata and will never be identif=
ied
+    /// (uniqued) with anything else.
+    MDNode *createAnonymousTBAARoot() {
+      // To ensure uniqueness the root node is self-referential.
+      MDNode *Dummy =3D MDNode::getTemporary(Context, ArrayRef<Value*>());
+      MDNode *Root =3D MDNode::get(Context, Dummy);
+      // At this point we have
+      //   !0 =3D metadata !{}            <- dummy
+      //   !1 =3D metadata !{metadata !0} <- root
+      // Replace the dummy operand with the root node itself and delete th=
e dummy.
+      Root->replaceOperandWith(0, Root);
+      MDNode::deleteTemporary(Dummy);
+      // We now have
+      //   !1 =3D metadata !{metadata !1} <- self-referential root
+      return Root;
+    }
+
+    /// \brief Return metadata appropriate for a TBAA root node with the g=
iven
+    /// name.  This may be identified (uniqued) with other roots with the =
same
+    /// name.
+    MDNode *createTBAARoot(StringRef Name) {
+      return MDNode::get(Context, createString(Name));
+    }
+
+    /// \brief Return metadata for a non-root TBAA node with the given nam=
e,
+    /// parent in the TBAA tree, and value for 'pointsToConstantMemory'.
+    MDNode *createTBAANode(StringRef Name, MDNode *Parent,
+                           bool isConstant =3D false) {
+      if (isConstant) {
+        Constant *Flags =3D ConstantInt::get(Type::getInt64Ty(Context), 1);
+        Value *Ops[3] =3D { createString(Name), Parent, Flags };
+        return MDNode::get(Context, Ops);
+      } else {
+        Value *Ops[2] =3D { createString(Name), Parent };
+        return MDNode::get(Context, Ops);
+      }
+    }
+
+  };
+
+} // end namespace llvm
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/Process.h
--- a/head/contrib/llvm/include/llvm/Support/Process.h	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/Process.h	Wed Jul 25 16:21:35 =
2012 +0300
@@ -136,6 +136,10 @@
       /// Same as OutputColor, but only enables the bold attribute.
       static const char *OutputBold(bool bg);
=20
+      /// This function returns the escape sequence to reverse forground a=
nd
+      /// background colors.
+      static const char *OutputReverse();
+
       /// Resets the terminals colors, or returns an escape sequence to do=
 so.
       static const char *ResetColor();
     /// @}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/SourceMgr.h
--- a/head/contrib/llvm/include/llvm/Support/SourceMgr.h	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/SourceMgr.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -128,8 +128,11 @@
   /// PrintMessage - Emit a message about the specified location with the
   /// specified string.
   ///
+  /// @param ShowColors - Display colored messages if output is a terminal=
 and
+  /// the default error handler is used.
   void PrintMessage(SMLoc Loc, DiagKind Kind, const Twine &Msg,
-                    ArrayRef<SMRange> Ranges =3D ArrayRef<SMRange>()) cons=
t;
+                    ArrayRef<SMRange> Ranges =3D ArrayRef<SMRange>(),
+                    bool ShowColors =3D true) const;
=20
=20
   /// GetMessage - Return an SMDiagnostic at the specified location with t=
he
@@ -188,7 +191,7 @@
   const std::vector<std::pair<unsigned, unsigned> > &getRanges() const {
     return Ranges;
   }
-  void print(const char *ProgName, raw_ostream &S) const;
+  void print(const char *ProgName, raw_ostream &S, bool ShowColors =3D tru=
e) const;
 };
=20
 }  // end llvm namespace
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/YAMLParser.h
--- a/head/contrib/llvm/include/llvm/Support/YAMLParser.h	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/YAMLParser.h	Wed Jul 25 16:21:=
35 2012 +0300
@@ -516,8 +516,11 @@
   document_iterator() : Doc(NullDoc) {}
   document_iterator(OwningPtr<Document> &D) : Doc(D) {}
=20
+  bool operator =3D=3D(const document_iterator &Other) {
+    return Doc =3D=3D Other.Doc;
+  }
   bool operator !=3D(const document_iterator &Other) {
-    return Doc !=3D Other.Doc;
+    return !(*this =3D=3D Other);
   }
=20
   document_iterator operator ++() {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Support=
/raw_ostream.h
--- a/head/contrib/llvm/include/llvm/Support/raw_ostream.h	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Support/raw_ostream.h	Wed Jul 25 16:21=
:35 2012 +0300
@@ -222,6 +222,9 @@
   /// outputting colored text, or before program exit.
   virtual raw_ostream &resetColor() { return *this; }
=20
+  /// Reverses the forground and background colors.
+  virtual raw_ostream &reverseColor() { return *this; }
+
   /// This function determines if this stream is connected to a "tty" or
   /// "console" window. That is, the output would be displayed to the user
   /// rather than being put on a pipe or stored in a file.
@@ -379,6 +382,8 @@
                                    bool bg=3Dfalse);
   virtual raw_ostream &resetColor();
=20
+  virtual raw_ostream &reverseColor();
+
   virtual bool is_displayed() const;
=20
   /// has_error - Return the value of the flag in this raw_fd_ostream indi=
cating
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/TableGe=
n/Error.h
--- a/head/contrib/llvm/include/llvm/TableGen/Error.h	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/include/llvm/TableGen/Error.h	Wed Jul 25 16:21:35 2=
012 +0300
@@ -29,6 +29,11 @@
   const std::string &getMessage() const { return Message; }
 };
=20
+void PrintWarning(SMLoc WarningLoc, const Twine &Msg);
+void PrintWarning(const char *Loc, const Twine &Msg);
+void PrintWarning(const Twine &Msg);
+void PrintWarning(const TGError &Warning);
+
 void PrintError(SMLoc ErrorLoc, const Twine &Msg);
 void PrintError(const char *Loc, const Twine &Msg);
 void PrintError(const Twine &Msg);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/TableGe=
n/Record.h
--- a/head/contrib/llvm/include/llvm/TableGen/Record.h	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/include/llvm/TableGen/Record.h	Wed Jul 25 16:21:35 =
2012 +0300
@@ -454,7 +454,7 @@
   /// without adding quote markers.  This primaruly affects
   /// StringInits where we will not surround the string value with
   /// quotes.
-  virtual std::string getAsUnquotedString() const { return getAsString(); =
} =20
+  virtual std::string getAsUnquotedString() const { return getAsString(); }
=20
   /// dump - Debugging method that may be called through a debugger, just
   /// invokes print on stderr.
@@ -1529,7 +1529,7 @@
=20
   void dump() const;
=20
-  MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :=20
+  MultiClass(const std::string &Name, SMLoc Loc, RecordKeeper &Records) :
     Rec(Name, Loc, Records) {}
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Target/=
TargetLibraryInfo.h
--- a/head/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h	Wed Jul 25 =
16:21:35 2012 +0300
@@ -83,7 +83,7 @@
       /// long double expm1l(long double x);
       expm1l,
       /// float expm1f(float x);
-      expl1f,
+      expm1f,
       /// double fabs(double x);
       fabs,
       /// long double fabsl(long double x);
@@ -159,8 +159,14 @@
       rint,
       /// float rintf(float x);
       rintf,
-      /// long dobule rintl(long double x);
+      /// long double rintl(long double x);
       rintl,
+      /// double round(double x);
+      round,
+      /// float roundf(float x);
+      roundf,
+      /// long double roundl(long double x);
+      roundl,
       /// double sin(double x);
       sin,
       /// long double sinl(long double x);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Target/=
TargetRegisterInfo.h
--- a/head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h	Wed Jul 25=
 16:21:35 2012 +0300
@@ -205,7 +205,7 @@
 /// Each TargetRegisterClass has a per register weight, and weight
 /// limit which must be less than the limits of its pressure sets.
 struct RegClassWeight {
-  unsigned RegWeigt;
+  unsigned RegWeight;
   unsigned WeightLimit;
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Transfo=
rms/Utils/BasicBlockUtils.h
--- a/head/contrib/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -110,7 +110,8 @@
 ///
 BasicBlock *SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum,
                               Pass *P =3D 0, bool MergeIdenticalEdges =3D =
false,
-                              bool DontDeleteUselessPHIs =3D false);
+                              bool DontDeleteUselessPHIs =3D false,
+                              bool SplitLandingPads =3D false);
=20
 inline BasicBlock *SplitCriticalEdge(BasicBlock *BB, succ_iterator SI,
                                      Pass *P =3D 0) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/include/llvm/Transfo=
rms/Vectorize.h
--- a/head/contrib/llvm/include/llvm/Transforms/Vectorize.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/include/llvm/Transforms/Vectorize.h	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -34,6 +34,9 @@
   /// @brief Vectorize floating-point values.
   bool VectorizeFloats;
=20
+  /// @brief Vectorize pointer values.
+  bool VectorizePointers;
+
   /// @brief Vectorize casting (conversion) operations.
   bool VectorizeCasts;
=20
@@ -43,6 +46,12 @@
   /// @brief Vectorize the fused-multiply-add intrinsic.
   bool VectorizeFMA;
=20
+  /// @brief Vectorize select instructions.
+  bool VectorizeSelect;
+
+  /// @brief Vectorize getelementptr instructions.
+  bool VectorizeGEP;
+
   /// @brief Vectorize loads and stores.
   bool VectorizeMemOps;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Analysis/Constan=
tFolding.cpp
--- a/head/contrib/llvm/lib/Analysis/ConstantFolding.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Analysis/ConstantFolding.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -681,6 +681,7 @@
   // This makes it easy to determine if the getelementptr is "inbounds".
   // Also, this helps GlobalOpt do SROA on GlobalVariables.
   Type *Ty =3D Ptr->getType();
+  assert(Ty->isPointerTy() && "Forming regular GEP of non-pointer type");
   SmallVector<Constant*, 32> NewIdxs;
   do {
     if (SequentialType *ATy =3D dyn_cast<SequentialType>(Ty)) {
@@ -711,10 +712,17 @@
       }
       Ty =3D ATy->getElementType();
     } else if (StructType *STy =3D dyn_cast<StructType>(Ty)) {
+      // If we end up with an offset that isn't valid for this struct type=
, we
+      // can't re-form this GEP in a regular form, so bail out. The pointer
+      // operand likely went through casts that are necessary to make the =
GEP
+      // sensible.
+      const StructLayout &SL =3D *TD->getStructLayout(STy);
+      if (Offset.uge(SL.getSizeInBytes()))
+        break;
+
       // Determine which field of the struct the offset points into. The
-      // getZExtValue is at least as safe as the StructLayout API because =
we
-      // know the offset is within the struct at this point.
-      const StructLayout &SL =3D *TD->getStructLayout(STy);
+      // getZExtValue is fine as we've already ensured that the offset is
+      // within the range representable by the StructLayout API.
       unsigned ElIdx =3D SL.getElementContainingOffset(Offset.getZExtValue=
());
       NewIdxs.push_back(ConstantInt::get(Type::getInt32Ty(Ty->getContext()=
),
                                          ElIdx));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Analysis/ScalarE=
volution.cpp
--- a/head/contrib/llvm/lib/Analysis/ScalarEvolution.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Analysis/ScalarEvolution.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -3187,7 +3187,7 @@
=20
   // Add the total offset from all the GEP indices to the base.
   return getAddExpr(BaseS, TotalOffset,
-                    isInBounds ? SCEV::FlagNUW : SCEV::FlagAnyWrap);
+                    isInBounds ? SCEV::FlagNSW : SCEV::FlagAnyWrap);
 }
=20
 /// GetMinTrailingZeros - Determine the minimum number of zero bits that S=
 is
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Analysis/ValueTr=
acking.cpp
--- a/head/contrib/llvm/lib/Analysis/ValueTracking.cpp	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/lib/Analysis/ValueTracking.cpp	Wed Jul 25 16:21:35 =
2012 +0300
@@ -564,7 +564,7 @@
                         Depth+1);
       // If it's known zero, our sign bit is also zero.
       if (LHSKnownZero.isNegative())
-        KnownZero |=3D LHSKnownZero;
+        KnownZero.setBit(BitWidth - 1);
     }
=20
     break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/AsmPrint=
er/DwarfAccelTable.cpp
--- a/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp	Wed Jul =
25 16:21:35 2012 +0300
@@ -36,35 +36,20 @@
   llvm_unreachable("invalid AtomType!");
 }
=20
-// The general case would need to have a less hard coded size for the
-// length of the HeaderData, however, if we're constructing based on a
-// single Atom then we know it will always be: 4 + 4 + 2 + 2.
-DwarfAccelTable::DwarfAccelTable(DwarfAccelTable::Atom atom) :
-  Header(12),
-  HeaderData(atom) {
-}
+// The length of the header data is always going to be 4 + 4 + 4*NumAtoms.
+DwarfAccelTable::DwarfAccelTable(ArrayRef<DwarfAccelTable::Atom> atomList)=
 :
+  Header(8 + (atomList.size() * 4)),
+  HeaderData(atomList),
+  Entries(Allocator) { }
=20
-// The length of the header data is always going to be 4 + 4 + 4*NumAtoms.
-DwarfAccelTable::DwarfAccelTable(std::vector<DwarfAccelTable::Atom> &atomL=
ist) :
-  Header(8 + (atomList.size() * 4)),
-  HeaderData(atomList) {
-}
-
-DwarfAccelTable::~DwarfAccelTable() {
-  for (size_t i =3D 0, e =3D Data.size(); i < e; ++i)
-    delete Data[i];
-  for (StringMap<DataArray>::iterator
-         EI =3D Entries.begin(), EE =3D Entries.end(); EI !=3D EE; ++EI)
-    for (DataArray::iterator DI =3D EI->second.begin(),
-           DE =3D EI->second.end(); DI !=3D DE; ++DI)
-      delete (*DI);
-}
+DwarfAccelTable::~DwarfAccelTable() { }
=20
 void DwarfAccelTable::AddName(StringRef Name, DIE* die, char Flags) {
+  assert(Data.empty() && "Already finalized!");
   // If the string is in the list already then add this die to the list
   // otherwise add a new one.
   DataArray &DIEs =3D Entries[Name];
-  DIEs.push_back(new HashDataContents(die, Flags));
+  DIEs.push_back(new (Allocator) HashDataContents(die, Flags));
 }
=20
 void DwarfAccelTable::ComputeBucketCount(void) {
@@ -85,31 +70,23 @@
   Header.hashes_count =3D num;
 }
=20
-namespace {
-  // DIESorter - comparison predicate that sorts DIEs by their offset.
-  struct DIESorter {
-    bool operator()(const struct DwarfAccelTable::HashDataContents *A,
-                    const struct DwarfAccelTable::HashDataContents *B) con=
st {
-      return A->Die->getOffset() < B->Die->getOffset();
-    }
-  };
+// compareDIEs - comparison predicate that sorts DIEs by their offset.
+static bool compareDIEs(const DwarfAccelTable::HashDataContents *A,
+                        const DwarfAccelTable::HashDataContents *B) {
+  return A->Die->getOffset() < B->Die->getOffset();
 }
=20
 void DwarfAccelTable::FinalizeTable(AsmPrinter *Asm, const char *Prefix) {
   // Create the individual hash data outputs.
   for (StringMap<DataArray>::iterator
          EI =3D Entries.begin(), EE =3D Entries.end(); EI !=3D EE; ++EI) {
-    struct HashData *Entry =3D new HashData((*EI).getKeyData());
=20
     // Unique the entries.
-    std::stable_sort(EI->second.begin(), EI->second.end(), DIESorter());
+    std::stable_sort(EI->second.begin(), EI->second.end(), compareDIEs);
     EI->second.erase(std::unique(EI->second.begin(), EI->second.end()),
                        EI->second.end());
=20
-    for (DataArray::const_iterator DI =3D EI->second.begin(),
-           DE =3D EI->second.end();
-         DI !=3D DE; ++DI)
-      Entry->addData((*DI));
+    HashData *Entry =3D new (Allocator) HashData(EI->getKey(), EI->second);
     Data.push_back(Entry);
   }
=20
@@ -216,7 +193,7 @@
                              D->getStringPool());
       Asm->OutStreamer.AddComment("Num DIEs");
       Asm->EmitInt32((*HI)->Data.size());
-      for (std::vector<struct HashDataContents*>::const_iterator
+      for (ArrayRef<HashDataContents*>::const_iterator
              DI =3D (*HI)->Data.begin(), DE =3D (*HI)->Data.end();
            DI !=3D DE; ++DI) {
         // Emit the DIE offset
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/AsmPrint=
er/DwarfAccelTable.h
--- a/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.h	Wed Jul 25=
 16:21:35 2012 +0300
@@ -15,6 +15,7 @@
 #define CODEGEN_ASMPRINTER_DWARFACCELTABLE_H__
=20
 #include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/ArrayRef.h"
 #include "llvm/MC/MCSymbol.h"
 #include "llvm/Support/Dwarf.h"
 #include "llvm/Support/DataTypes.h"
@@ -164,22 +165,12 @@
=20
  private:
   struct TableHeaderData {
-   =20
     uint32_t die_offset_base;
-    std::vector<Atom> Atoms;
+    SmallVector<Atom, 1> Atoms;
=20
-    TableHeaderData(std::vector<DwarfAccelTable::Atom> &AtomList,
-                    uint32_t offset =3D 0) :
-      die_offset_base(offset) {
-      for (size_t i =3D 0, e =3D AtomList.size(); i !=3D e; ++i)
-        Atoms.push_back(AtomList[i]);
-    }
-   =20
-    TableHeaderData(DwarfAccelTable::Atom Atom, uint32_t offset =3D 0)
-    : die_offset_base(offset) {
-      Atoms.push_back(Atom);
-    }
-   =20
+    TableHeaderData(ArrayRef<Atom> AtomList, uint32_t offset =3D 0)
+      : die_offset_base(offset), Atoms(AtomList.begin(), AtomList.end()) {=
 }
+
 #ifndef NDEBUG
     void print (raw_ostream &O) {
       O << "die_offset_base: " << die_offset_base << "\n";
@@ -221,11 +212,11 @@
     StringRef Str;
     uint32_t HashValue;
     MCSymbol *Sym;
-    std::vector<struct HashDataContents*> Data; // offsets
-    HashData(StringRef S) : Str(S) {
+    ArrayRef<HashDataContents*> Data; // offsets
+    HashData(StringRef S, ArrayRef<HashDataContents*> Data)
+      : Str(S), Data(Data) {
       HashValue =3D DwarfAccelTable::HashDJB(S);
     }
-    void addData(struct HashDataContents *Datum) { Data.push_back(Datum); }
     #ifndef NDEBUG
     void print(raw_ostream &O) {
       O << "Name: " << Str << "\n";
@@ -255,15 +246,18 @@
   void EmitHashes(AsmPrinter *);
   void EmitOffsets(AsmPrinter *, MCSymbol *);
   void EmitData(AsmPrinter *, DwarfDebug *D);
- =20
+
+  // Allocator for HashData and HashDataContents.
+  BumpPtrAllocator Allocator;
+
   // Output Variables
   TableHeader Header;
   TableHeaderData HeaderData;
   std::vector<HashData*> Data;
=20
   // String Data
-  typedef std::vector<struct HashDataContents*> DataArray;
-  typedef StringMap<DataArray> StringEntries;
+  typedef std::vector<HashDataContents*> DataArray;
+  typedef StringMap<DataArray, BumpPtrAllocator&> StringEntries;
   StringEntries Entries;
=20
   // Buckets/Hashes/Offsets
@@ -274,8 +268,7 @@
  =20
   // Public Implementation
  public:
-  DwarfAccelTable(DwarfAccelTable::Atom);
-  DwarfAccelTable(std::vector<DwarfAccelTable::Atom> &);
+  DwarfAccelTable(ArrayRef<DwarfAccelTable::Atom>);
   ~DwarfAccelTable();
   void AddName(StringRef, DIE*, char =3D 0);
   void FinalizeTable(AsmPrinter *, const char *);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/AsmPrint=
er/DwarfCompileUnit.cpp
--- a/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -1032,9 +1032,10 @@
   // Add function template parameters.
   addTemplateParams(*SPDie, SP.getTemplateParams());
=20
-  // Unfortunately this code needs to stay here to work around
-  // a bug in older gdbs that requires the linkage name to resolve
-  // multiple template functions.
+  // Unfortunately this code needs to stay here instead of below the
+  // AT_specification code in order to work around a bug in older
+  // gdbs that requires the linkage name to resolve multiple template
+  // functions.
   StringRef LinkageName =3D SP.getLinkageName();
   if (!LinkageName.empty())
     addString(SPDie, dwarf::DW_AT_MIPS_linkage_name,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/DFAPacke=
tizer.cpp
--- a/head/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp	Wed Jul 25 16:21:35 2=
012 +0300
@@ -23,10 +23,10 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-#include "llvm/CodeGen/ScheduleDAGInstrs.h"
 #include "llvm/CodeGen/DFAPacketizer.h"
 #include "llvm/CodeGen/MachineInstr.h"
 #include "llvm/CodeGen/MachineInstrBundle.h"
+#include "llvm/CodeGen/ScheduleDAGInstrs.h"
 #include "llvm/Target/TargetInstrInfo.h"
 #include "llvm/MC/MCInstrItineraries.h"
 using namespace llvm;
@@ -100,17 +100,17 @@
   reserveResources(&MID);
 }
=20
-namespace llvm {
+namespace {
 // DefaultVLIWScheduler - This class extends ScheduleDAGInstrs and overrid=
es
 // Schedule method to build the dependence graph.
 class DefaultVLIWScheduler : public ScheduleDAGInstrs {
 public:
   DefaultVLIWScheduler(MachineFunction &MF, MachineLoopInfo &MLI,
-                   MachineDominatorTree &MDT, bool IsPostRA);
+                       MachineDominatorTree &MDT, bool IsPostRA);
   // Schedule - Actual scheduling work.
   void schedule();
 };
-}
+} // end anonymous namespace
=20
 DefaultVLIWScheduler::DefaultVLIWScheduler(
   MachineFunction &MF, MachineLoopInfo &MLI, MachineDominatorTree &MDT,
@@ -129,25 +129,49 @@
   bool IsPostRA) : TM(MF.getTarget()), MF(MF)  {
   TII =3D TM.getInstrInfo();
   ResourceTracker =3D TII->CreateTargetScheduleState(&TM, 0);
-  VLIWScheduler =3D new DefaultVLIWScheduler(MF, MLI, MDT, IsPostRA);
+  SchedulerImpl =3D new DefaultVLIWScheduler(MF, MLI, MDT, IsPostRA);
 }
=20
 // VLIWPacketizerList Dtor
 VLIWPacketizerList::~VLIWPacketizerList() {
-  if (VLIWScheduler)
-    delete VLIWScheduler;
+  delete SchedulerImpl;
+  delete ResourceTracker;
+}
=20
-  if (ResourceTracker)
-    delete ResourceTracker;
+// ignorePseudoInstruction - ignore pseudo instructions.
+bool VLIWPacketizerList::ignorePseudoInstruction(MachineInstr *MI,
+                                                 MachineBasicBlock *MBB) {
+  if (MI->isDebugValue())
+    return true;
+
+  if (TII->isSchedulingBoundary(MI, MBB, MF))
+    return true;
+
+  return false;
+}
+
+// isSoloInstruction - return true if instruction I must end previous
+// packet.
+bool VLIWPacketizerList::isSoloInstruction(MachineInstr *I) {
+  if (I->isInlineAsm())
+    return true;
+
+  return false;
+}
+
+// addToPacket - Add I to the current packet and reserve resource.
+void VLIWPacketizerList::addToPacket(MachineInstr *MI) {
+  CurrentPacketMIs.push_back(MI);
+  ResourceTracker->reserveResources(MI);
 }
=20
 // endPacket - End the current packet, bundle packet instructions and reset
 // DFA state.
 void VLIWPacketizerList::endPacket(MachineBasicBlock *MBB,
-                                         MachineInstr *MI) {
+                                         MachineInstr *I) {
   if (CurrentPacketMIs.size() > 1) {
     MachineInstr *MIFirst =3D CurrentPacketMIs.front();
-    finalizeBundle(*MBB, MIFirst, MI);
+    finalizeBundle(*MBB, MIFirst, I);
   }
   CurrentPacketMIs.clear();
   ResourceTracker->clearResources();
@@ -157,36 +181,31 @@
 void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
                                       MachineBasicBlock::iterator BeginItr,
                                       MachineBasicBlock::iterator EndItr) {
-  assert(VLIWScheduler && "VLIW Scheduler is not initialized!");
-  VLIWScheduler->enterRegion(MBB, BeginItr, EndItr, MBB->size());
-  VLIWScheduler->schedule();
-  VLIWScheduler->exitRegion();
+  assert(MBB->end() =3D=3D EndItr && "Bad EndIndex");
=20
-  // Generate MI -> SU map.
-  //std::map <MachineInstr*, SUnit*> MIToSUnit;
-  MIToSUnit.clear();
-  for (unsigned i =3D 0, e =3D VLIWScheduler->SUnits.size(); i !=3D e; ++i=
) {
-    SUnit *SU =3D &VLIWScheduler->SUnits[i];
-    MIToSUnit[SU->getInstr()] =3D SU;
-  }
+  SchedulerImpl->enterRegion(MBB, BeginItr, EndItr, MBB->size());
+
+  // Build the DAG without reordering instructions.
+  SchedulerImpl->schedule();
+
+  // Remember scheduling units.
+  SUnits =3D SchedulerImpl->SUnits;
=20
   // The main packetizer loop.
   for (; BeginItr !=3D EndItr; ++BeginItr) {
     MachineInstr *MI =3D BeginItr;
=20
-    this->initPacketizerState();
+    // Ignore pseudo instructions.
+    if (ignorePseudoInstruction(MI, MBB))
+      continue;
=20
     // End the current packet if needed.
-    if (this->isSoloInstruction(MI)) {
+    if (isSoloInstruction(MI)) {
       endPacket(MBB, MI);
       continue;
     }
=20
-    // Ignore pseudo instructions.
-    if (this->ignorePseudoInstruction(MI, MBB))
-      continue;
-
-    SUnit *SUI =3D MIToSUnit[MI];
+    SUnit *SUI =3D SchedulerImpl->getSUnit(MI);
     assert(SUI && "Missing SUnit Info!");
=20
     // Ask DFA if machine resource is available for MI.
@@ -196,13 +215,13 @@
       for (std::vector<MachineInstr*>::iterator VI =3D CurrentPacketMIs.be=
gin(),
            VE =3D CurrentPacketMIs.end(); VI !=3D VE; ++VI) {
         MachineInstr *MJ =3D *VI;
-        SUnit *SUJ =3D MIToSUnit[MJ];
+        SUnit *SUJ =3D SchedulerImpl->getSUnit(MJ);
         assert(SUJ && "Missing SUnit Info!");
=20
         // Is it legal to packetize SUI and SUJ together.
-        if (!this->isLegalToPacketizeTogether(SUI, SUJ)) {
+        if (!isLegalToPacketizeTogether(SUI, SUJ)) {
           // Allow packetization if dependency can be pruned.
-          if (!this->isLegalToPruneDependencies(SUI, SUJ)) {
+          if (!isLegalToPruneDependencies(SUI, SUJ)) {
             // End the packet if dependency cannot be pruned.
             endPacket(MBB, MI);
             break;
@@ -215,9 +234,11 @@
     }
=20
     // Add MI to the current packet.
-    BeginItr =3D this->addToPacket(MI);
+    addToPacket(MI);
   } // For all instructions in BB.
=20
   // End any packet left behind.
   endPacket(MBB, EndItr);
+
+  SchedulerImpl->exitRegion();
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/LiveInte=
rvalAnalysis.cpp
--- a/head/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -1068,9 +1068,9 @@
=20
 #ifndef NDEBUG
     LIValidator validator;
-    std::for_each(Entering.begin(), Entering.end(), validator);
-    std::for_each(Internal.begin(), Internal.end(), validator);
-    std::for_each(Exiting.begin(), Exiting.end(), validator);
+    validator =3D std::for_each(Entering.begin(), Entering.end(), validato=
r);
+    validator =3D std::for_each(Internal.begin(), Internal.end(), validato=
r);
+    validator =3D std::for_each(Exiting.begin(), Exiting.end(), validator);
     assert(validator.rangesOk() && "moveAllOperandsFrom broke liveness.");
 #endif
=20
@@ -1115,9 +1115,9 @@
=20
 #ifndef NDEBUG
     LIValidator validator;
-    std::for_each(Entering.begin(), Entering.end(), validator);
-    std::for_each(Internal.begin(), Internal.end(), validator);
-    std::for_each(Exiting.begin(), Exiting.end(), validator);
+    validator =3D std::for_each(Entering.begin(), Entering.end(), validato=
r);
+    validator =3D std::for_each(Internal.begin(), Internal.end(), validato=
r);
+    validator =3D std::for_each(Exiting.begin(), Exiting.end(), validator);
     assert(validator.rangesOk() && "moveAllOperandsInto broke liveness.");
 #endif
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/MachineB=
asicBlock.cpp
--- a/head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -392,22 +392,44 @@
         TII->InsertBranch(*this, TBB, 0, Cond, dl);
       }
     } else {
+      // Walk through the successors and find the successor which is not
+      // a landing pad and is not the conditional branch destination (in T=
BB)
+      // as the fallthrough successor.
+      MachineBasicBlock *FallthroughBB =3D 0;
+      for (succ_iterator SI =3D succ_begin(), SE =3D succ_end(); SI !=3D S=
E; ++SI) {
+        if ((*SI)->isLandingPad() || *SI =3D=3D TBB)
+          continue;
+        assert(!FallthroughBB && "Found more than one fallthrough successo=
r.");
+        FallthroughBB =3D *SI;
+      }
+      if (!FallthroughBB && canFallThrough()) {
+        // We fallthrough to the same basic block as the conditional jump
+        // targets. Remove the conditional jump, leaving unconditional
+        // fallthrough.
+        // FIXME: This does not seem like a reasonable pattern to support,=
 but it
+        // has been seen in the wild coming out of degenerate ARM test cas=
es.
+        TII->RemoveBranch(*this);
+
+        // Finally update the unconditional successor to be reached via a =
branch
+        // if it would not be reached by fallthrough.
+        if (!isLayoutSuccessor(TBB))
+          TII->InsertBranch(*this, TBB, 0, Cond, dl);
+        return;
+      }
+
       // The block has a fallthrough conditional branch.
-      MachineBasicBlock *MBBA =3D *succ_begin();
-      MachineBasicBlock *MBBB =3D *llvm::next(succ_begin());
-      if (MBBA =3D=3D TBB) std::swap(MBBB, MBBA);
       if (isLayoutSuccessor(TBB)) {
         if (TII->ReverseBranchCondition(Cond)) {
           // We can't reverse the condition, add an unconditional branch.
           Cond.clear();
-          TII->InsertBranch(*this, MBBA, 0, Cond, dl);
+          TII->InsertBranch(*this, FallthroughBB, 0, Cond, dl);
           return;
         }
         TII->RemoveBranch(*this);
-        TII->InsertBranch(*this, MBBA, 0, Cond, dl);
-      } else if (!isLayoutSuccessor(MBBA)) {
+        TII->InsertBranch(*this, FallthroughBB, 0, Cond, dl);
+      } else if (!isLayoutSuccessor(FallthroughBB)) {
         TII->RemoveBranch(*this);
-        TII->InsertBranch(*this, TBB, MBBA, Cond, dl);
+        TII->InsertBranch(*this, TBB, FallthroughBB, Cond, dl);
       }
     }
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/MachineB=
lockPlacement.cpp
--- a/head/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -102,13 +102,13 @@
   }
=20
   /// \brief Iterator over blocks within the chain.
-  typedef SmallVectorImpl<MachineBasicBlock *>::const_iterator iterator;
+  typedef SmallVectorImpl<MachineBasicBlock *>::iterator iterator;
=20
   /// \brief Beginning of blocks within the chain.
-  iterator begin() const { return Blocks.begin(); }
+  iterator begin() { return Blocks.begin(); }
=20
   /// \brief End of blocks within the chain.
-  iterator end() const { return Blocks.end(); }
+  iterator end() { return Blocks.end(); }
=20
   /// \brief Merge a block chain into this one.
   ///
@@ -211,12 +211,15 @@
   void buildChain(MachineBasicBlock *BB, BlockChain &Chain,
                   SmallVectorImpl<MachineBasicBlock *> &BlockWorkList,
                   const BlockFilterSet *BlockFilter =3D 0);
-  MachineBasicBlock *findBestLoopTop(MachineFunction &F,
-                                     MachineLoop &L,
+  MachineBasicBlock *findBestLoopTop(MachineLoop &L,
                                      const BlockFilterSet &LoopBlockSet);
+  MachineBasicBlock *findBestLoopExit(MachineFunction &F,
+                                      MachineLoop &L,
+                                      const BlockFilterSet &LoopBlockSet);
   void buildLoopChains(MachineFunction &F, MachineLoop &L);
+  void rotateLoop(BlockChain &LoopChain, MachineBasicBlock *ExitingBB,
+                  const BlockFilterSet &LoopBlockSet);
   void buildCFGChains(MachineFunction &F);
-  void AlignLoops(MachineFunction &F);
=20
 public:
   static char ID; // Pass identification, replacement for typeid
@@ -540,13 +543,74 @@
=20
 /// \brief Find the best loop top block for layout.
 ///
+/// Look for a block which is strictly better than the loop header for lay=
ing
+/// out at the top of the loop. This looks for one and only one pattern:
+/// a latch block with no conditional exit. This block will cause a condit=
ional
+/// jump around it or will be the bottom of the loop if we lay it out in p=
lace,
+/// but if it it doesn't end up at the bottom of the loop for any reason,
+/// rotation alone won't fix it. Because such a block will always result i=
n an
+/// unconditional jump (for the backedge) rotating it in front of the loop
+/// header is always profitable.
+MachineBasicBlock *
+MachineBlockPlacement::findBestLoopTop(MachineLoop &L,
+                                       const BlockFilterSet &LoopBlockSet)=
 {
+  // Check that the header hasn't been fused with a preheader block due to
+  // crazy branches. If it has, we need to start with the header at the to=
p to
+  // prevent pulling the preheader into the loop body.
+  BlockChain &HeaderChain =3D *BlockToChain[L.getHeader()];
+  if (!LoopBlockSet.count(*HeaderChain.begin()))
+    return L.getHeader();
+
+  DEBUG(dbgs() << "Finding best loop top for: "
+               << getBlockName(L.getHeader()) << "\n");
+
+  BlockFrequency BestPredFreq;
+  MachineBasicBlock *BestPred =3D 0;
+  for (MachineBasicBlock::pred_iterator PI =3D L.getHeader()->pred_begin(),
+                                        PE =3D L.getHeader()->pred_end();
+       PI !=3D PE; ++PI) {
+    MachineBasicBlock *Pred =3D *PI;
+    if (!LoopBlockSet.count(Pred))
+      continue;
+    DEBUG(dbgs() << "    header pred: " << getBlockName(Pred) << ", "
+                 << Pred->succ_size() << " successors, "
+                 << MBFI->getBlockFreq(Pred) << " freq\n");
+    if (Pred->succ_size() > 1)
+      continue;
+
+    BlockFrequency PredFreq =3D MBFI->getBlockFreq(Pred);
+    if (!BestPred || PredFreq > BestPredFreq ||
+        (!(PredFreq < BestPredFreq) &&
+         Pred->isLayoutSuccessor(L.getHeader()))) {
+      BestPred =3D Pred;
+      BestPredFreq =3D PredFreq;
+    }
+  }
+
+  // If no direct predecessor is fine, just use the loop header.
+  if (!BestPred)
+    return L.getHeader();
+
+  // Walk backwards through any straight line of predecessors.
+  while (BestPred->pred_size() =3D=3D 1 &&
+         (*BestPred->pred_begin())->succ_size() =3D=3D 1 &&
+         *BestPred->pred_begin() !=3D L.getHeader())
+    BestPred =3D *BestPred->pred_begin();
+
+  DEBUG(dbgs() << "    final top: " << getBlockName(BestPred) << "\n");
+  return BestPred;
+}
+
+
+/// \brief Find the best loop exiting block for layout.
+///
 /// This routine implements the logic to analyze the loop looking for the =
best
 /// block to layout at the top of the loop. Typically this is done to maxi=
mize
 /// fallthrough opportunities.
 MachineBasicBlock *
-MachineBlockPlacement::findBestLoopTop(MachineFunction &F,
-                                       MachineLoop &L,
-                                       const BlockFilterSet &LoopBlockSet)=
 {
+MachineBlockPlacement::findBestLoopExit(MachineFunction &F,
+                                        MachineLoop &L,
+                                        const BlockFilterSet &LoopBlockSet=
) {
   // We don't want to layout the loop linearly in all cases. If the loop h=
eader
   // is just a normal basic block in the loop, we want to look for what bl=
ock
   // within the loop is the best one to layout at the top. However, if the=
 loop
@@ -557,11 +621,11 @@
   // header and only rotate if safe.
   BlockChain &HeaderChain =3D *BlockToChain[L.getHeader()];
   if (!LoopBlockSet.count(*HeaderChain.begin()))
-    return L.getHeader();
+    return 0;
=20
   BlockFrequency BestExitEdgeFreq;
+  unsigned BestExitLoopDepth =3D 0;
   MachineBasicBlock *ExitingBB =3D 0;
-  MachineBasicBlock *LoopingBB =3D 0;
   // If there are exits to outer loops, loop rotation can severely limit
   // fallthrough opportunites unless it selects such an exit. Keep a set of
   // blocks where rotating to exit with that block will reach an outer loo=
p.
@@ -584,15 +648,10 @@
     // successor isn't found.
     MachineBasicBlock *OldExitingBB =3D ExitingBB;
     BlockFrequency OldBestExitEdgeFreq =3D BestExitEdgeFreq;
-    // We also compute and store the best looping successor for use in lay=
out.
-    MachineBasicBlock *BestLoopSucc =3D 0;
+    bool HasLoopingSucc =3D false;
     // FIXME: Due to the performance of the probability and weight routine=
s in
-    // the MBPI analysis, we use the internal weights. This is only valid
-    // because it is purely a ranking function, we don't care about anythi=
ng
-    // but the relative values.
-    uint32_t BestLoopSuccWeight =3D 0;
-    // FIXME: We also manually compute the probabilities to avoid quadratic
-    // behavior.
+    // the MBPI analysis, we use the internal weights and manually compute=
 the
+    // probabilities to avoid quadratic behavior.
     uint32_t WeightScale =3D 0;
     uint32_t SumWeight =3D MBPI->getSumForBlock(*I, WeightScale);
     for (MachineBasicBlock::succ_iterator SI =3D (*I)->succ_begin(),
@@ -604,10 +663,8 @@
         continue;
       BlockChain &SuccChain =3D *BlockToChain[*SI];
       // Don't split chains, either this chain or the successor's chain.
-      if (&Chain =3D=3D &SuccChain || *SI !=3D *SuccChain.begin()) {
-        DEBUG(dbgs() << "    " << (LoopBlockSet.count(*SI) ? "looping: "
-                                                           : "exiting: ")
-                     << getBlockName(*I) << " -> "
+      if (&Chain =3D=3D &SuccChain) {
+        DEBUG(dbgs() << "    exiting: " << getBlockName(*I) << " -> "
                      << getBlockName(*SI) << " (chain conflict)\n");
         continue;
       }
@@ -616,60 +673,103 @@
       if (LoopBlockSet.count(*SI)) {
         DEBUG(dbgs() << "    looping: " << getBlockName(*I) << " -> "
                      << getBlockName(*SI) << " (" << SuccWeight << ")\n");
-        if (BestLoopSucc && BestLoopSuccWeight >=3D SuccWeight)
-          continue;
+        HasLoopingSucc =3D true;
+        continue;
+      }
=20
-        BestLoopSucc =3D *SI;
-        BestLoopSuccWeight =3D SuccWeight;
-        continue;
+      unsigned SuccLoopDepth =3D 0;
+      if (MachineLoop *ExitLoop =3D MLI->getLoopFor(*SI)) {
+        SuccLoopDepth =3D ExitLoop->getLoopDepth();
+        if (ExitLoop->contains(&L))
+          BlocksExitingToOuterLoop.insert(*I);
       }
=20
       BranchProbability SuccProb(SuccWeight / WeightScale, SumWeight);
       BlockFrequency ExitEdgeFreq =3D MBFI->getBlockFreq(*I) * SuccProb;
       DEBUG(dbgs() << "    exiting: " << getBlockName(*I) << " -> "
-                   << getBlockName(*SI) << " (" << ExitEdgeFreq << ")\n");
+                   << getBlockName(*SI) << " [L:" << SuccLoopDepth
+                   << "] (" << ExitEdgeFreq << ")\n");
       // Note that we slightly bias this toward an existing layout success=
or to
       // retain incoming order in the absence of better information.
       // FIXME: Should we bias this more strongly? It's pretty weak.
-      if (!ExitingBB || ExitEdgeFreq > BestExitEdgeFreq ||
+      if (!ExitingBB || BestExitLoopDepth < SuccLoopDepth ||
+          ExitEdgeFreq > BestExitEdgeFreq ||
           ((*I)->isLayoutSuccessor(*SI) &&
            !(ExitEdgeFreq < BestExitEdgeFreq))) {
         BestExitEdgeFreq =3D ExitEdgeFreq;
         ExitingBB =3D *I;
       }
-
-      if (MachineLoop *ExitLoop =3D MLI->getLoopFor(*SI))
-        if (ExitLoop->contains(&L))
-          BlocksExitingToOuterLoop.insert(*I);
     }
=20
     // Restore the old exiting state, no viable looping successor was foun=
d.
-    if (!BestLoopSucc) {
+    if (!HasLoopingSucc) {
       ExitingBB =3D OldExitingBB;
       BestExitEdgeFreq =3D OldBestExitEdgeFreq;
       continue;
     }
-
-    // If this was best exiting block thus far, also record the looping bl=
ock.
-    if (ExitingBB =3D=3D *I)
-      LoopingBB =3D BestLoopSucc;
   }
-  // Without a candidate exitting block or with only a single block in the
+  // Without a candidate exiting block or with only a single block in the
   // loop, just use the loop header to layout the loop.
   if (!ExitingBB || L.getNumBlocks() =3D=3D 1)
-    return L.getHeader();
+    return 0;
=20
   // Also, if we have exit blocks which lead to outer loops but didn't sel=
ect
   // one of them as the exiting block we are rotating toward, disable loop
   // rotation altogether.
   if (!BlocksExitingToOuterLoop.empty() &&
       !BlocksExitingToOuterLoop.count(ExitingBB))
-    return L.getHeader();
+    return 0;
=20
-  assert(LoopingBB && "All successors of a loop block are exit blocks!");
   DEBUG(dbgs() << "  Best exiting block: " << getBlockName(ExitingBB) << "=
\n");
-  DEBUG(dbgs() << "  Best top block: " << getBlockName(LoopingBB) << "\n");
-  return LoopingBB;
+  return ExitingBB;
+}
+
+/// \brief Attempt to rotate an exiting block to the bottom of the loop.
+///
+/// Once we have built a chain, try to rotate it to line up the hot exit b=
lock
+/// with fallthrough out of the loop if doing so doesn't introduce unneces=
sary
+/// branches. For example, if the loop has fallthrough into its header and=
 out
+/// of its bottom already, don't rotate it.
+void MachineBlockPlacement::rotateLoop(BlockChain &LoopChain,
+                                       MachineBasicBlock *ExitingBB,
+                                       const BlockFilterSet &LoopBlockSet)=
 {
+  if (!ExitingBB)
+    return;
+
+  MachineBasicBlock *Top =3D *LoopChain.begin();
+  bool ViableTopFallthrough =3D false;
+  for (MachineBasicBlock::pred_iterator PI =3D Top->pred_begin(),
+                                        PE =3D Top->pred_end();
+       PI !=3D PE; ++PI) {
+    BlockChain *PredChain =3D BlockToChain[*PI];
+    if (!LoopBlockSet.count(*PI) &&
+        (!PredChain || *PI =3D=3D *llvm::prior(PredChain->end()))) {
+      ViableTopFallthrough =3D true;
+      break;
+    }
+  }
+
+  // If the header has viable fallthrough, check whether the current loop
+  // bottom is a viable exiting block. If so, bail out as rotating will
+  // introduce an unnecessary branch.
+  if (ViableTopFallthrough) {
+    MachineBasicBlock *Bottom =3D *llvm::prior(LoopChain.end());
+    for (MachineBasicBlock::succ_iterator SI =3D Bottom->succ_begin(),
+                                          SE =3D Bottom->succ_end();
+         SI !=3D SE; ++SI) {
+      BlockChain *SuccChain =3D BlockToChain[*SI];
+      if (!LoopBlockSet.count(*SI) &&
+          (!SuccChain || *SI =3D=3D *SuccChain->begin()))
+        return;
+    }
+  }
+
+  BlockChain::iterator ExitIt =3D std::find(LoopChain.begin(), LoopChain.e=
nd(),
+                                          ExitingBB);
+  if (ExitIt =3D=3D LoopChain.end())
+    return;
+
+  std::rotate(LoopChain.begin(), llvm::next(ExitIt), LoopChain.end());
 }
=20
 /// \brief Forms basic block chains from the natural loop structures.
@@ -688,8 +788,20 @@
   SmallVector<MachineBasicBlock *, 16> BlockWorkList;
   BlockFilterSet LoopBlockSet(L.block_begin(), L.block_end());
=20
-  MachineBasicBlock *LayoutTop =3D findBestLoopTop(F, L, LoopBlockSet);
-  BlockChain &LoopChain =3D *BlockToChain[LayoutTop];
+  // First check to see if there is an obviously preferable top block for =
the
+  // loop. This will default to the header, but may end up as one of the
+  // predecessors to the header if there is one which will result in stric=
tly
+  // fewer branches in the loop body.
+  MachineBasicBlock *LoopTop =3D findBestLoopTop(L, LoopBlockSet);
+
+  // If we selected just the header for the loop top, look for a potential=
ly
+  // profitable exit block in the event that rotating the loop can elimina=
te
+  // branches by placing an exit edge at the bottom.
+  MachineBasicBlock *ExitingBB =3D 0;
+  if (LoopTop =3D=3D L.getHeader())
+    ExitingBB =3D findBestLoopExit(F, L, LoopBlockSet);
+
+  BlockChain &LoopChain =3D *BlockToChain[LoopTop];
=20
   // FIXME: This is a really lame way of walking the chains in the loop: we
   // walk the blocks, and use a set to prevent visiting a particular chain
@@ -721,7 +833,8 @@
       BlockWorkList.push_back(*Chain.begin());
   }
=20
-  buildChain(LayoutTop, LoopChain, BlockWorkList, &LoopBlockSet);
+  buildChain(LoopTop, LoopChain, BlockWorkList, &LoopBlockSet);
+  rotateLoop(LoopChain, ExitingBB, LoopBlockSet);
=20
   DEBUG({
     // Crash at the end so we get all of the debugging output first.
@@ -733,7 +846,8 @@
              << "  Chain header: " << getBlockName(*LoopChain.begin()) << =
"\n";
     }
     for (BlockChain::iterator BCI =3D LoopChain.begin(), BCE =3D LoopChain=
.end();
-         BCI !=3D BCE; ++BCI)
+         BCI !=3D BCE; ++BCI) {
+      dbgs() << "          ... " << getBlockName(*BCI) << "\n";
       if (!LoopBlockSet.erase(*BCI)) {
         // We don't mark the loop as bad here because there are real situa=
tions
         // where this can occur. For example, with an unanalyzable fallthr=
ough
@@ -743,6 +857,7 @@
                << "  Chain header: " << getBlockName(*LoopChain.begin()) <=
< "\n"
                << "  Bad block:    " << getBlockName(*BCI) << "\n";
       }
+    }
=20
     if (!LoopBlockSet.empty()) {
       BadLoop =3D true;
@@ -882,28 +997,33 @@
   MachineBasicBlock *TBB =3D 0, *FBB =3D 0; // For AnalyzeBranch.
   if (!TII->AnalyzeBranch(F.back(), TBB, FBB, Cond))
     F.back().updateTerminator();
-}
=20
-/// \brief Recursive helper to align a loop and any nested loops.
-static void AlignLoop(MachineFunction &F, MachineLoop *L, unsigned Align) {
-  // Recurse through nested loops.
-  for (MachineLoop::iterator I =3D L->begin(), E =3D L->end(); I !=3D E; +=
+I)
-    AlignLoop(F, *I, Align);
-
-  L->getTopBlock()->setAlignment(Align);
-}
-
-/// \brief Align loop headers to target preferred alignments.
-void MachineBlockPlacement::AlignLoops(MachineFunction &F) {
+  // Walk through the backedges of the function now that we have fully lai=
d out
+  // the basic blocks and align the destination of each backedge. We don't=
 rely
+  // on the loop info here so that we can align backedges in unnatural CFG=
s and
+  // backedges that were introduced purely because of the loop rotations d=
one
+  // during this layout pass.
+  // FIXME: This isn't quite right, we shouldn't align backedges that resu=
lt
+  // from blocks being sunken below the exit block for the function.
   if (F.getFunction()->hasFnAttr(Attribute::OptimizeForSize))
     return;
-
   unsigned Align =3D TLI->getPrefLoopAlignment();
   if (!Align)
     return;  // Don't care about loop alignment.
=20
-  for (MachineLoopInfo::iterator I =3D MLI->begin(), E =3D MLI->end(); I !=
=3D E; ++I)
-    AlignLoop(F, *I, Align);
+  SmallPtrSet<MachineBasicBlock *, 16> PreviousBlocks;
+  for (BlockChain::iterator BI =3D FunctionChain.begin(),
+                            BE =3D FunctionChain.end();
+       BI !=3D BE; ++BI) {
+    PreviousBlocks.insert(*BI);
+    // Set alignment on the destination of all the back edges in the new
+    // ordering.
+    for (MachineBasicBlock::succ_iterator SI =3D (*BI)->succ_begin(),
+                                          SE =3D (*BI)->succ_end();
+         SI !=3D SE; ++SI)
+      if (PreviousBlocks.count(*SI))
+        (*SI)->setAlignment(Align);
+  }
 }
=20
 bool MachineBlockPlacement::runOnMachineFunction(MachineFunction &F) {
@@ -919,7 +1039,6 @@
   assert(BlockToChain.empty());
=20
   buildCFGChains(F);
-  AlignLoops(F);
=20
   BlockToChain.clear();
   ChainAllocator.DestroyAll();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Passes.c=
pp
--- a/head/contrib/llvm/lib/CodeGen/Passes.cpp	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/llvm/lib/CodeGen/Passes.cpp	Wed Jul 25 16:21:35 2012 +03=
00
@@ -37,8 +37,9 @@
     cl::desc("Disable tail duplication"));
 static cl::opt<bool> DisableEarlyTailDup("disable-early-taildup", cl::Hidd=
en,
     cl::desc("Disable pre-register allocation tail duplication"));
-static cl::opt<bool> EnableBlockPlacement("enable-block-placement",
-    cl::Hidden, cl::desc("Enable probability-driven block placement"));
+static cl::opt<bool> DisableBlockPlacement("disable-block-placement",
+    cl::Hidden, cl::desc("Disable the probability-driven block placement, =
and "
+                         "re-enable the old code placement pass"));
 static cl::opt<bool> EnableBlockPlacementStats("enable-block-placement-sta=
ts",
     cl::Hidden, cl::desc("Collect probability-driven block placement stats=
"));
 static cl::opt<bool> DisableCodePlace("disable-code-place", cl::Hidden,
@@ -206,7 +207,7 @@
 // Out of line constructor provides default values for pass options and
 // registers all common codegen passes.
 TargetPassConfig::TargetPassConfig(TargetMachine *tm, PassManagerBase &pm)
-  : ImmutablePass(ID), TM(tm), PM(pm), Impl(0), Initialized(false),
+  : ImmutablePass(ID), TM(tm), PM(&pm), Impl(0), Initialized(false),
     DisableVerify(false),
     EnableTailMerge(true) {
=20
@@ -233,7 +234,7 @@
 }
=20
 TargetPassConfig::TargetPassConfig()
-  : ImmutablePass(ID), PM(*(PassManagerBase*)0) {
+  : ImmutablePass(ID), PM(0) {
   llvm_unreachable("TargetPassConfig should not be constructed on-the-fly"=
);
 }
=20
@@ -268,16 +269,16 @@
   Pass *P =3D Pass::createPass(FinalID);
   if (!P)
     llvm_unreachable("Pass ID not registered");
-  PM.add(P);
+  PM->add(P);
   return FinalID;
 }
=20
 void TargetPassConfig::printAndVerify(const char *Banner) const {
   if (TM->shouldPrintMachineCode())
-    PM.add(createMachineFunctionPrinterPass(dbgs(), Banner));
+    PM->add(createMachineFunctionPrinterPass(dbgs(), Banner));
=20
   if (VerifyMachineCode)
-    PM.add(createMachineVerifierPass(Banner));
+    PM->add(createMachineVerifierPass(Banner));
 }
=20
 /// Add common target configurable passes that perform LLVM IR to IR trans=
forms
@@ -287,46 +288,46 @@
   // Add TypeBasedAliasAnalysis before BasicAliasAnalysis so that
   // BasicAliasAnalysis wins if they disagree. This is intended to help
   // support "obvious" type-punning idioms.
-  PM.add(createTypeBasedAliasAnalysisPass());
-  PM.add(createBasicAliasAnalysisPass());
+  PM->add(createTypeBasedAliasAnalysisPass());
+  PM->add(createBasicAliasAnalysisPass());
=20
   // Before running any passes, run the verifier to determine if the input
   // coming from the front-end and/or optimizer is valid.
   if (!DisableVerify)
-    PM.add(createVerifierPass());
+    PM->add(createVerifierPass());
=20
   // Run loop strength reduction before anything else.
   if (getOptLevel() !=3D CodeGenOpt::None && !DisableLSR) {
-    PM.add(createLoopStrengthReducePass(getTargetLowering()));
+    PM->add(createLoopStrengthReducePass(getTargetLowering()));
     if (PrintLSR)
-      PM.add(createPrintFunctionPass("\n\n*** Code after LSR ***\n", &dbgs=
()));
+      PM->add(createPrintFunctionPass("\n\n*** Code after LSR ***\n", &dbg=
s()));
   }
=20
-  PM.add(createGCLoweringPass());
+  PM->add(createGCLoweringPass());
=20
   // Make sure that no unreachable blocks are instruction selected.
-  PM.add(createUnreachableBlockEliminationPass());
+  PM->add(createUnreachableBlockEliminationPass());
 }
=20
 /// Add common passes that perform LLVM IR to IR transforms in preparation=
 for
 /// instruction selection.
 void TargetPassConfig::addISelPrepare() {
   if (getOptLevel() !=3D CodeGenOpt::None && !DisableCGP)
-    PM.add(createCodeGenPreparePass(getTargetLowering()));
+    PM->add(createCodeGenPreparePass(getTargetLowering()));
=20
-  PM.add(createStackProtectorPass(getTargetLowering()));
+  PM->add(createStackProtectorPass(getTargetLowering()));
=20
   addPreISel();
=20
   if (PrintISelInput)
-    PM.add(createPrintFunctionPass("\n\n"
-                                   "*** Final LLVM Code input to ISel ***\=
n",
-                                   &dbgs()));
+    PM->add(createPrintFunctionPass("\n\n"
+                                    "*** Final LLVM Code input to ISel ***=
\n",
+                                    &dbgs()));
=20
   // All passes which modify the LLVM IR are now complete; run the verifier
   // to ensure that the IR is valid.
   if (!DisableVerify)
-    PM.add(createVerifierPass());
+    PM->add(createVerifierPass());
 }
=20
 /// Add the complete set of target-independent postISel code generator pas=
ses.
@@ -404,7 +405,7 @@
   // GC
   addPass(GCMachineCodeAnalysisID);
   if (PrintGCInfo)
-    PM.add(createGCInfoPrinter(dbgs()));
+    PM->add(createGCInfoPrinter(dbgs()));
=20
   // Basic block placement.
   if (getOptLevel() !=3D CodeGenOpt::None)
@@ -521,7 +522,7 @@
   addPass(PHIEliminationID);
   addPass(TwoAddressInstructionPassID);
=20
-  PM.add(RegAllocPass);
+  PM->add(RegAllocPass);
   printAndVerify("After Register Allocation");
 }
=20
@@ -563,7 +564,7 @@
     printAndVerify("After Machine Scheduling");
=20
   // Add the selected register allocation pass.
-  PM.add(RegAllocPass);
+  PM->add(RegAllocPass);
   printAndVerify("After Register Allocation");
=20
   // FinalizeRegAlloc is convenient until MachineInstrBundles is more matu=
re,
@@ -610,10 +611,10 @@
 /// Add standard basic block placement passes.
 void TargetPassConfig::addBlockPlacement() {
   AnalysisID ID =3D &NoPassID;
-  if (EnableBlockPlacement) {
-    // MachineBlockPlacement is an experimental pass which is disabled by
-    // default currently. Eventually it should subsume CodePlacementOpt, so
-    // when enabled, the other is disabled.
+  if (!DisableBlockPlacement) {
+    // MachineBlockPlacement is a new pass which subsumes the functionalit=
y of
+    // CodPlacementOpt. The old code placement pass can be restored by
+    // disabling block placement, but eventually it will be removed.
     ID =3D addPass(MachineBlockPlacementID);
   } else {
     ID =3D addPass(CodePlacementOptID);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Schedule=
DAGInstrs.cpp
--- a/head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -39,8 +39,8 @@
                                      LiveIntervals *lis)
   : ScheduleDAG(mf), MLI(mli), MDT(mdt), MFI(mf.getFrameInfo()),
     InstrItins(mf.getTarget().getInstrItineraryData()), LIS(lis),
-    IsPostRA(IsPostRAFlag), UnitLatencies(false), LoopRegs(MLI, MDT),
-    FirstDbgValue(0) {
+    IsPostRA(IsPostRAFlag), UnitLatencies(false), CanHandleTerminators(fal=
se),
+    LoopRegs(MLI, MDT), FirstDbgValue(0) {
   assert((IsPostRA || LIS) && "PreRA scheduling requires LiveIntervals");
   DbgValues.clear();
   assert(!(IsPostRA && MRI.getNumVirtRegs()) &&
@@ -554,7 +554,7 @@
       continue;
     }
=20
-    assert(!MI->isTerminator() && !MI->isLabel() &&
+    assert((!MI->isTerminator() || CanHandleTerminators) && !MI->isLabel()=
 &&
            "Cannot schedule terminators or labels!");
=20
     SUnit *SU =3D MISUnitMap[MI];
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Selectio=
nDAG/DAGCombiner.cpp
--- a/head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp	Wed Jul 25=
 16:21:35 2012 +0300
@@ -1080,6 +1080,7 @@
=20
   // If the root changed (e.g. it was a dead load, update the root).
   DAG.setRoot(Dummy.getValue());
+  DAG.RemoveDeadNodes();
 }
=20
 SDValue DAGCombiner::visit(SDNode *N) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Selectio=
nDAG/LegalizeVectorOps.cpp
--- a/head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp	Wed =
Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp	Wed =
Jul 25 16:21:35 2012 +0300
@@ -417,7 +417,8 @@
=20
   Op1 =3D DAG.getNode(ISD::AND, DL, VT, Op1, Mask);
   Op2 =3D DAG.getNode(ISD::AND, DL, VT, Op2, NotMask);
-  return DAG.getNode(ISD::OR, DL, VT, Op1, Op2);
+  SDValue Val =3D DAG.getNode(ISD::OR, DL, VT, Op1, Op2);
+  return DAG.getNode(ISD::BITCAST, DL, Op.getValueType(), Val);
 }
=20
 SDValue VectorLegalizer::ExpandUINT_TO_FLOAT(SDValue Op) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Selectio=
nDAG/ScheduleDAGSDNodes.cpp
--- a/head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -131,28 +131,16 @@
   }
 }
=20
-static void AddGlue(SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *D=
AG) {
-  SmallVector<EVT, 4> VTs;
-  SDNode *GlueDestNode =3D Glue.getNode();
-
-  // Don't add glue from a node to itself.
-  if (GlueDestNode =3D=3D N) return;
-
-  // Don't add glue to something which already has glue.
-  if (N->getValueType(N->getNumValues() - 1) =3D=3D MVT::Glue) return;
-
-  for (unsigned I =3D 0, E =3D N->getNumValues(); I !=3D E; ++I)
-    VTs.push_back(N->getValueType(I));
-
-  if (AddGlue)
-    VTs.push_back(MVT::Glue);
-
+// Helper for AddGlue to clone node operands.
+static void CloneNodeWithValues(SDNode *N, SelectionDAG *DAG,
+                                SmallVectorImpl<EVT> &VTs,
+                                SDValue ExtraOper =3D SDValue()) {
   SmallVector<SDValue, 4> Ops;
   for (unsigned I =3D 0, E =3D N->getNumOperands(); I !=3D E; ++I)
     Ops.push_back(N->getOperand(I));
=20
-  if (GlueDestNode)
-    Ops.push_back(Glue);
+  if (ExtraOper.getNode())
+    Ops.push_back(ExtraOper);
=20
   SDVTList VTList =3D DAG->getVTList(&VTs[0], VTs.size());
   MachineSDNode::mmo_iterator Begin =3D 0, End =3D 0;
@@ -171,6 +159,46 @@
     MN->setMemRefs(Begin, End);
 }
=20
+static bool AddGlue(SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *D=
AG) {
+  SmallVector<EVT, 4> VTs;
+  SDNode *GlueDestNode =3D Glue.getNode();
+
+  // Don't add glue from a node to itself.
+  if (GlueDestNode =3D=3D N) return false;
+
+  // Don't add a glue operand to something that already uses glue.
+  if (GlueDestNode &&
+      N->getOperand(N->getNumOperands()-1).getValueType() =3D=3D MVT::Glue=
) {
+    return false;
+  }
+  // Don't add glue to something that already has a glue value.
+  if (N->getValueType(N->getNumValues() - 1) =3D=3D MVT::Glue) return fals=
e;
+
+  for (unsigned I =3D 0, E =3D N->getNumValues(); I !=3D E; ++I)
+    VTs.push_back(N->getValueType(I));
+
+  if (AddGlue)
+    VTs.push_back(MVT::Glue);
+
+  CloneNodeWithValues(N, DAG, VTs, Glue);
+
+  return true;
+}
+
+// Cleanup after unsuccessful AddGlue. Use the standard method of morphing=
 the
+// node even though simply shrinking the value list is sufficient.
+static void RemoveUnusedGlue(SDNode *N, SelectionDAG *DAG) {
+  assert((N->getValueType(N->getNumValues() - 1) =3D=3D MVT::Glue &&
+          !N->hasAnyUseOfValue(N->getNumValues() - 1)) &&
+         "expected an unused glue value");
+
+  SmallVector<EVT, 4> VTs;
+  for (unsigned I =3D 0, E =3D N->getNumValues()-1; I !=3D E; ++I)
+    VTs.push_back(N->getValueType(I));
+
+  CloneNodeWithValues(N, DAG, VTs);
+}
+
 /// ClusterNeighboringLoads - Force nearby loads together by "gluing" them.
 /// This function finds loads of the same base and different offsets. If t=
he
 /// offsets are not far apart (target specific), it add MVT::Glue inputs a=
nd
@@ -238,19 +266,23 @@
   // Cluster loads by adding MVT::Glue outputs and inputs. This also
   // ensure they are scheduled in order of increasing addresses.
   SDNode *Lead =3D Loads[0];
-  AddGlue(Lead, SDValue(0, 0), true, DAG);
-
-  SDValue InGlue =3D SDValue(Lead, Lead->getNumValues() - 1);
+  SDValue InGlue =3D SDValue(0, 0);
+  if (AddGlue(Lead, InGlue, true, DAG))
+    InGlue =3D SDValue(Lead, Lead->getNumValues() - 1);
   for (unsigned I =3D 1, E =3D Loads.size(); I !=3D E; ++I) {
     bool OutGlue =3D I < E - 1;
     SDNode *Load =3D Loads[I];
=20
-    AddGlue(Load, InGlue, OutGlue, DAG);
+    // If AddGlue fails, we could leave an unsused glue value. This should=
 not
+    // cause any
+    if (AddGlue(Load, InGlue, OutGlue, DAG)) {
+      if (OutGlue)
+        InGlue =3D SDValue(Load, Load->getNumValues() - 1);
=20
-    if (OutGlue)
-      InGlue =3D SDValue(Load, Load->getNumValues() - 1);
-
-    ++LoadsClustered;
+      ++LoadsClustered;
+    }
+    else if (!OutGlue && InGlue.getNode())
+      RemoveUnusedGlue(InGlue.getNode(), DAG);
   }
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Selectio=
nDAG/SelectionDAGBuilder.cpp
--- a/head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp	We=
d Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp	We=
d Jul 25 16:21:35 2012 +0300
@@ -5050,7 +5050,7 @@
   }
   case Intrinsic::gcroot:
     if (GFI) {
-      const Value *Alloca =3D I.getArgOperand(0);
+      const Value *Alloca =3D I.getArgOperand(0)->stripPointerCasts();
       const Constant *TypeMap =3D cast<Constant>(I.getArgOperand(1));
=20
       FrameIndexSDNode *FI =3D cast<FrameIndexSDNode>(getValue(Alloca).get=
Node());
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/Selectio=
nDAG/TargetLowering.cpp
--- a/head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -1367,8 +1367,9 @@
     // bits on that side are also known to be set on the other side, turn =
this
     // into an AND, as we know the bits will be cleared.
     //    e.g. (X | C1) ^ C2 --> (X | C1) & ~C2 iff (C1&C2) =3D=3D C2
-    if ((NewMask & (KnownZero|KnownOne)) =3D=3D NewMask) { // all known
-      if ((KnownOne & KnownOne2) =3D=3D KnownOne) {
+    // NB: it is okay if more bits are known than are requested
+    if ((NewMask & (KnownZero|KnownOne)) =3D=3D NewMask) { // all known on=
 one side=20
+      if (KnownOne =3D=3D KnownOne2) { // set bits are the same on both si=
des
         EVT VT =3D Op.getValueType();
         SDValue ANDC =3D TLO.DAG.getConstant(~KnownOne & NewMask, VT);
         return TLO.CombineTo(Op, TLO.DAG.getNode(ISD::AND, dl, VT,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/CodeGen/SlotInde=
xes.cpp
--- a/head/contrib/llvm/lib/CodeGen/SlotIndexes.cpp	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/llvm/lib/CodeGen/SlotIndexes.cpp	Wed Jul 25 16:21:35 201=
2 +0300
@@ -34,7 +34,8 @@
   mi2iMap.clear();
   MBBRanges.clear();
   idx2MBBMap.clear();
-  clearList();
+  indexList.clear();
+  ileAllocator.Reset();
 }
=20
 bool SlotIndexes::runOnMachineFunction(MachineFunction &fn) {
@@ -45,17 +46,15 @@
   // iterator in lock-step (though skipping it over indexes which have
   // null pointers in the instruction field).
   // At each iteration assert that the instruction pointed to in the index
-  // is the same one pointed to by the MI iterator. This=20
+  // is the same one pointed to by the MI iterator. This
=20
   // FIXME: This can be simplified. The mi2iMap_, Idx2MBBMap, etc. should
   // only need to be set up once after the first numbering is computed.
=20
   mf =3D &fn;
-  initList();
=20
   // Check that the list contains only the sentinal.
-  assert(indexListHead->getNext() =3D=3D 0 &&
-         "Index list non-empty at initial numbering?");
+  assert(indexList.empty() && "Index list non-empty at initial numbering?"=
);
   assert(idx2MBBMap.empty() &&
          "Index -> MBB mapping non-empty at initial numbering?");
   assert(MBBRanges.empty() &&
@@ -68,7 +67,7 @@
   MBBRanges.resize(mf->getNumBlockIDs());
   idx2MBBMap.reserve(mf->size());
=20
-  push_back(createEntry(0, index));
+  indexList.push_back(createEntry(0, index));
=20
   // Iterate over the function.
   for (MachineFunction::iterator mbbItr =3D mf->begin(), mbbEnd =3D mf->en=
d();
@@ -76,7 +75,7 @@
     MachineBasicBlock *mbb =3D &*mbbItr;
=20
     // Insert an index for the MBB start.
-    SlotIndex blockStartIndex(back(), SlotIndex::Slot_Block);
+    SlotIndex blockStartIndex(&indexList.back(), SlotIndex::Slot_Block);
=20
     for (MachineBasicBlock::iterator miItr =3D mbb->begin(), miEnd =3D mbb=
->end();
          miItr !=3D miEnd; ++miItr) {
@@ -85,20 +84,20 @@
         continue;
=20
       // Insert a store index for the instr.
-      push_back(createEntry(mi, index +=3D SlotIndex::InstrDist));
+      indexList.push_back(createEntry(mi, index +=3D SlotIndex::InstrDist)=
);
=20
       // Save this base index in the maps.
-      mi2iMap.insert(std::make_pair(mi, SlotIndex(back(),
+      mi2iMap.insert(std::make_pair(mi, SlotIndex(&indexList.back(),
                                                   SlotIndex::Slot_Block)));
-=20
+
       ++functionSize;
     }
=20
     // We insert one blank instructions between basic blocks.
-    push_back(createEntry(0, index +=3D SlotIndex::InstrDist));
+    indexList.push_back(createEntry(0, index +=3D SlotIndex::InstrDist));
=20
     MBBRanges[mbb->getNumber()].first =3D blockStartIndex;
-    MBBRanges[mbb->getNumber()].second =3D SlotIndex(back(),
+    MBBRanges[mbb->getNumber()].second =3D SlotIndex(&indexList.back(),
                                                    SlotIndex::Slot_Block);
     idx2MBBMap.push_back(IdxMBBPair(blockStartIndex, mbb));
   }
@@ -119,38 +118,37 @@
=20
   unsigned index =3D 0;
=20
-  for (IndexListEntry *curEntry =3D front(); curEntry !=3D getTail();
-       curEntry =3D curEntry->getNext()) {
-    curEntry->setIndex(index);
+  for (IndexList::iterator I =3D indexList.begin(), E =3D indexList.end();
+       I !=3D E; ++I) {
+    I->setIndex(index);
     index +=3D SlotIndex::InstrDist;
   }
 }
=20
-// Renumber indexes locally after curEntry was inserted, but failed to get=
 a new
+// Renumber indexes locally after curItr was inserted, but failed to get a=
 new
 // index.
-void SlotIndexes::renumberIndexes(IndexListEntry *curEntry) {
+void SlotIndexes::renumberIndexes(IndexList::iterator curItr) {
   // Number indexes with half the default spacing so we can catch up quick=
ly.
   const unsigned Space =3D SlotIndex::InstrDist/2;
   assert((Space & 3) =3D=3D 0 && "InstrDist must be a multiple of 2*NUM");
=20
-  IndexListEntry *start =3D curEntry->getPrev();
-  unsigned index =3D start->getIndex();
-  IndexListEntry *tail =3D getTail();
+  IndexList::iterator startItr =3D prior(curItr);
+  unsigned index =3D startItr->getIndex();
   do {
-    curEntry->setIndex(index +=3D Space);
-    curEntry =3D curEntry->getNext();
+    curItr->setIndex(index +=3D Space);
+    ++curItr;
     // If the next index is bigger, we have caught up.
-  } while (curEntry !=3D tail && curEntry->getIndex() <=3D index);
+  } while (curItr !=3D indexList.end() && curItr->getIndex() <=3D index);
=20
-  DEBUG(dbgs() << "\n*** Renumbered SlotIndexes " << start->getIndex() << =
'-'
+  DEBUG(dbgs() << "\n*** Renumbered SlotIndexes " << startItr->getIndex() =
<< '-'
                << index << " ***\n");
   ++NumLocalRenum;
 }
=20
=20
 void SlotIndexes::dump() const {
-  for (const IndexListEntry *itr =3D front(); itr !=3D getTail();
-       itr =3D itr->getNext()) {
+  for (IndexList::const_iterator itr =3D indexList.begin();
+       itr !=3D indexList.end(); ++itr) {
     dbgs() << itr->getIndex() << " ";
=20
     if (itr->getInstr() !=3D 0) {
@@ -168,7 +166,7 @@
 // Print a SlotIndex to a raw_ostream.
 void SlotIndex::print(raw_ostream &os) const {
   if (isValid())
-    os << entry().getIndex() << "Berd"[getSlot()];
+    os << listEntry()->getIndex() << "Berd"[getSlot()];
   else
     os << "invalid";
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/GDBRegistrar.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp	We=
d Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,214 @@
+//=3D=3D=3D-- GDBRegistrar.cpp - Registers objects with GDB --------------=
-------=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#include "JITRegistrar.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/MutexGuard.h"
+#include "llvm/Support/Mutex.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/Compiler.h"
+
+using namespace llvm;
+
+// This must be kept in sync with gdb/gdb/jit.h .
+extern "C" {
+
+  typedef enum {
+    JIT_NOACTION =3D 0,
+    JIT_REGISTER_FN,
+    JIT_UNREGISTER_FN
+  } jit_actions_t;
+
+  struct jit_code_entry {
+    struct jit_code_entry *next_entry;
+    struct jit_code_entry *prev_entry;
+    const char *symfile_addr;
+    uint64_t symfile_size;
+  };
+
+  struct jit_descriptor {
+    uint32_t version;
+    // This should be jit_actions_t, but we want to be specific about the
+    // bit-width.
+    uint32_t action_flag;
+    struct jit_code_entry *relevant_entry;
+    struct jit_code_entry *first_entry;
+  };
+
+  // We put information about the JITed function in this global, which the
+  // debugger reads.  Make sure to specify the version statically, because=
 the
+  // debugger checks the version before we can set it during runtime.
+  static struct jit_descriptor __jit_debug_descriptor =3D { 1, 0, 0, 0 };
+
+  // Debuggers puts a breakpoint in this function.
+  LLVM_ATTRIBUTE_NOINLINE void __jit_debug_register_code() { }
+
+}
+
+namespace {
+
+// Buffer for an in-memory object file in executable memory
+typedef llvm::DenseMap< const char*,
+                        std::pair<std::size_t, jit_code_entry*> >
+  RegisteredObjectBufferMap;
+
+/// Global access point for the JIT debugging interface designed for use w=
ith a
+/// singleton toolbox. Handles thread-safe registration and deregistration=
 of
+/// object files that are in executable memory managed by the client of th=
is
+/// class.
+class GDBJITRegistrar : public JITRegistrar {
+  /// A map of in-memory object files that have been registered with the
+  /// JIT interface.
+  RegisteredObjectBufferMap ObjectBufferMap;
+
+public:
+  /// Instantiates the JIT service.
+  GDBJITRegistrar() : ObjectBufferMap() {}
+
+  /// Unregisters each object that was previously registered and releases =
all
+  /// internal resources.
+  virtual ~GDBJITRegistrar();
+
+  /// Creates an entry in the JIT registry for the buffer @p Object,
+  /// which must contain an object file in executable memory with any
+  /// debug information for the debugger.
+  void registerObject(const MemoryBuffer &Object);
+
+  /// Removes the internal registration of @p Object, and
+  /// frees associated resources.
+  /// Returns true if @p Object was found in ObjectBufferMap.
+  bool deregisterObject(const MemoryBuffer &Object);
+
+private:
+  /// Deregister the debug info for the given object file from the debugger
+  /// and delete any temporary copies.  This private method does not remove
+  /// the function from Map so that it can be called while iterating over =
Map.
+  void deregisterObjectInternal(RegisteredObjectBufferMap::iterator I);
+};
+
+/// Lock used to serialize all jit registration events, since they
+/// modify global variables.
+llvm::sys::Mutex JITDebugLock;
+
+/// Acquire the lock and do the registration.
+void NotifyDebugger(jit_code_entry* JITCodeEntry) {
+  llvm::MutexGuard locked(JITDebugLock);
+  __jit_debug_descriptor.action_flag =3D JIT_REGISTER_FN;
+
+  // Insert this entry at the head of the list.
+  JITCodeEntry->prev_entry =3D NULL;
+  jit_code_entry* NextEntry =3D __jit_debug_descriptor.first_entry;
+  JITCodeEntry->next_entry =3D NextEntry;
+  if (NextEntry !=3D NULL) {
+    NextEntry->prev_entry =3D JITCodeEntry;
+  }
+  __jit_debug_descriptor.first_entry =3D JITCodeEntry;
+  __jit_debug_descriptor.relevant_entry =3D JITCodeEntry;
+  __jit_debug_register_code();
+}
+
+GDBJITRegistrar::~GDBJITRegistrar() {
+  // Free all registered object files.
+ for (RegisteredObjectBufferMap::iterator I =3D ObjectBufferMap.begin(), E=
 =3D ObjectBufferMap.end();
+       I !=3D E; ++I) {
+    // Call the private method that doesn't update the map so our iterator
+    // doesn't break.
+    deregisterObjectInternal(I);
+  }
+  ObjectBufferMap.clear();
+}
+
+void GDBJITRegistrar::registerObject(const MemoryBuffer &Object) {
+
+  const char *Buffer =3D Object.getBufferStart();
+  size_t      Size =3D Object.getBufferSize();
+
+  assert(Buffer && "Attempt to register a null object with a debugger.");
+  assert(ObjectBufferMap.find(Buffer) =3D=3D ObjectBufferMap.end() &&
+         "Second attempt to perform debug registration.");
+  jit_code_entry* JITCodeEntry =3D new jit_code_entry();
+
+  if (JITCodeEntry =3D=3D 0) {
+    llvm::report_fatal_error(
+      "Allocation failed when registering a JIT entry!\n");
+  }
+  else {
+    JITCodeEntry->symfile_addr =3D Buffer;
+    JITCodeEntry->symfile_size =3D Size;
+
+    ObjectBufferMap[Buffer] =3D std::make_pair(Size, JITCodeEntry);
+    NotifyDebugger(JITCodeEntry);
+  }
+}
+
+bool GDBJITRegistrar::deregisterObject(const MemoryBuffer& Object) {
+  const char *Buffer =3D Object.getBufferStart();
+  RegisteredObjectBufferMap::iterator I =3D ObjectBufferMap.find(Buffer);
+
+  if (I !=3D ObjectBufferMap.end()) {
+    deregisterObjectInternal(I);
+    ObjectBufferMap.erase(I);
+    return true;
+  }
+  return false;
+}
+
+void GDBJITRegistrar::deregisterObjectInternal(
+    RegisteredObjectBufferMap::iterator I) {
+
+  jit_code_entry*& JITCodeEntry =3D I->second.second;
+
+  // Acquire the lock and do the unregistration.
+  {
+    llvm::MutexGuard locked(JITDebugLock);
+    __jit_debug_descriptor.action_flag =3D JIT_UNREGISTER_FN;
+
+    // Remove the jit_code_entry from the linked list.
+    jit_code_entry* PrevEntry =3D JITCodeEntry->prev_entry;
+    jit_code_entry* NextEntry =3D JITCodeEntry->next_entry;
+
+    if (NextEntry) {
+      NextEntry->prev_entry =3D PrevEntry;
+    }
+    if (PrevEntry) {
+      PrevEntry->next_entry =3D NextEntry;
+    }
+    else {
+      assert(__jit_debug_descriptor.first_entry =3D=3D JITCodeEntry);
+      __jit_debug_descriptor.first_entry =3D NextEntry;
+    }
+
+    // Tell the debugger which entry we removed, and unregister the code.
+    __jit_debug_descriptor.relevant_entry =3D JITCodeEntry;
+    __jit_debug_register_code();
+  }
+
+  delete JITCodeEntry;
+  JITCodeEntry =3D NULL;
+}
+
+} // end namespace
+
+namespace llvm {
+
+JITRegistrar& JITRegistrar::getGDBRegistrar() {
+  static GDBJITRegistrar* sRegistrar =3D NULL;
+  if (sRegistrar =3D=3D NULL) {
+    // The mutex is here so that it won't slow down access once the regist=
rar
+    // is instantiated
+    llvm::MutexGuard locked(JITDebugLock);
+    // Check again to be sure another thread didn't create this while we w=
aited
+    if (sRegistrar =3D=3D NULL) {
+      sRegistrar =3D new GDBJITRegistrar;
+    }
+  }
+  return *sRegistrar;
+}
+
+} // namespace llvm
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/JITRegistrar.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h	Wed =
Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,43 @@
+//=3D=3D=3D-- JITRegistrar.h - Registers objects with a debugger ---------=
-------=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#ifndef LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
+#define LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
+
+#include "llvm/Support/MemoryBuffer.h"
+
+namespace llvm {
+
+/// Global access point for the JIT debugging interface.
+class JITRegistrar {
+public:
+  /// Instantiates the JIT service.
+  JITRegistrar() {}
+
+  /// Unregisters each object that was previously registered and releases =
all
+  /// internal resources.
+  virtual ~JITRegistrar() {}
+
+  /// Creates an entry in the JIT registry for the buffer @p Object,
+  /// which must contain an object file in executable memory with any
+  /// debug information for the debugger.
+  virtual void registerObject(const MemoryBuffer &Object) =3D 0;
+
+  /// Removes the internal registration of @p Object, and
+  /// frees associated resources.
+  /// Returns true if @p Object was previously registered.
+  virtual bool deregisterObject(const MemoryBuffer &Object) =3D 0;
+
+  /// Returns a reference to a GDB JIT registrar singleton
+  static JITRegistrar& getGDBRegistrar();
+};
+
+} // end namespace llvm
+
+#endif // LLVM_EXECUTION_ENGINE_JIT_REGISTRAR_H
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/ObjectImage.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h	Wed J=
ul 25 16:21:35 2012 +0300
@@ -0,0 +1,59 @@
+//=3D=3D=3D---- ObjectImage.h - Format independent executuable object imag=
e -----=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+//
+// This file declares a file format independent ObjectImage class.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#ifndef LLVM_RUNTIMEDYLD_OBJECT_IMAGE_H
+#define LLVM_RUNTIMEDYLD_OBJECT_IMAGE_H
+
+#include "llvm/Object/ObjectFile.h"
+
+namespace llvm {
+
+class ObjectImage {
+  ObjectImage(); // =3D delete
+  ObjectImage(const ObjectImage &other); // =3D delete
+protected:
+  object::ObjectFile *ObjFile;
+
+public:
+  ObjectImage(object::ObjectFile *Obj) { ObjFile =3D Obj; }
+  virtual ~ObjectImage() {}
+
+  virtual object::symbol_iterator begin_symbols() const
+              { return ObjFile->begin_symbols(); }
+  virtual object::symbol_iterator end_symbols() const
+              { return ObjFile->end_symbols(); }
+
+  virtual object::section_iterator begin_sections() const
+              { return ObjFile->begin_sections(); }
+  virtual object::section_iterator end_sections() const
+              { return ObjFile->end_sections(); }
+
+  virtual /* Triple::ArchType */ unsigned getArch() const
+              { return ObjFile->getArch(); }
+
+  // Subclasses can override these methods to update the image with loaded
+  // addresses for sections and common symbols
+  virtual void updateSectionAddress(const object::SectionRef &Sec,
+                                    uint64_t Addr) {}
+  virtual void updateSymbolAddress(const object::SymbolRef &Sym, uint64_t =
Addr)
+              {}
+
+  // Subclasses can override this method to provide JIT debugging support
+  virtual void registerWithDebugger() {}
+  virtual void deregisterWithDebugger() {}
+};
+
+} // end namespace llvm
+
+#endif // LLVM_RUNTIMEDYLD_OBJECT_IMAGE_H
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyld.cpp
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -59,11 +59,17 @@
   llvm_unreachable("Attempting to remap address of unknown section!");
 }
=20
+// Subclasses can implement this method to create specialized image instan=
ces
+// The caller owns the the pointer that is returned.
+ObjectImage *RuntimeDyldImpl::createObjectImage(const MemoryBuffer *InputB=
uffer) {
+  ObjectFile *ObjFile =3D ObjectFile::createObjectFile(const_cast<MemoryBu=
ffer*>
+                                                                 (InputBuf=
fer));
+  ObjectImage *Obj =3D new ObjectImage(ObjFile);
+  return Obj;
+}
+
 bool RuntimeDyldImpl::loadObject(const MemoryBuffer *InputBuffer) {
-  // FIXME: ObjectFile don't modify MemoryBuffer.
-  //        It should use const MemoryBuffer as parameter.
-  OwningPtr<ObjectFile> obj(ObjectFile::createObjectFile(
-                                       const_cast<MemoryBuffer*>(InputBuff=
er)));
+  OwningPtr<ObjectImage> obj(createObjectImage(InputBuffer));
   if (!obj)
     report_fatal_error("Unable to create object image from memory buffer!"=
);
=20
@@ -110,7 +116,8 @@
                                 (uintptr_t)FileOffset;
         uintptr_t SectOffset =3D (uintptr_t)(SymPtr - (const uint8_t*)sDat=
a.begin());
         unsigned SectionID =3D
-          findOrEmitSection(*si,
+          findOrEmitSection(*obj,
+                            *si,
                             SymType =3D=3D object::SymbolRef::ST_Function,
                             LocalSections);
         bool isGlobal =3D flags & SymbolRef::SF_Global;
@@ -128,7 +135,7 @@
=20
   // Allocate common symbols
   if (CommonSize !=3D 0)
-    emitCommonSymbols(CommonSymbols, CommonSize, LocalSymbols);
+    emitCommonSymbols(*obj, CommonSymbols, CommonSize, LocalSymbols);
=20
   // Parse and proccess relocations
   DEBUG(dbgs() << "Parse relocations:\n");
@@ -145,7 +152,7 @@
=20
       // If it's first relocation in this section, find its SectionID
       if (isFirstRelocation) {
-        SectionID =3D findOrEmitSection(*si, true, LocalSections);
+        SectionID =3D findOrEmitSection(*obj, *si, true, LocalSections);
         DEBUG(dbgs() << "\tSectionID: " << SectionID << "\n");
         isFirstRelocation =3D false;
       }
@@ -164,10 +171,14 @@
       processRelocationRef(RI, *obj, LocalSections, LocalSymbols, Stubs);
     }
   }
+
+  handleObjectLoaded(obj.take());
+
   return false;
 }
=20
-unsigned RuntimeDyldImpl::emitCommonSymbols(const CommonSymbolMap &Map,
+unsigned RuntimeDyldImpl::emitCommonSymbols(ObjectImage &Obj,
+                                            const CommonSymbolMap &Map,
                                             uint64_t TotalSize,
                                             LocalSymbolMap &LocalSymbols) {
   // Allocate memory for the section
@@ -191,6 +202,7 @@
     uint64_t Size =3D it->second;
     StringRef Name;
     it->first.getName(Name);
+    Obj.updateSymbolAddress(it->first, (uint64_t)Addr);
     LocalSymbols[Name.data()] =3D SymbolLoc(SectionID, Offset);
     Offset +=3D Size;
     Addr +=3D Size;
@@ -199,7 +211,8 @@
   return SectionID;
 }
=20
-unsigned RuntimeDyldImpl::emitSection(const SectionRef &Section,
+unsigned RuntimeDyldImpl::emitSection(ObjectImage &Obj,
+                                      const SectionRef &Section,
                                       bool IsCode) {
=20
   unsigned StubBufSize =3D 0,
@@ -257,6 +270,7 @@
                  << " StubBufSize: " << StubBufSize
                  << " Allocate: " << Allocate
                  << "\n");
+    Obj.updateSectionAddress(Section, (uint64_t)Addr);
   }
   else {
     // Even if we didn't load the section, we need to record an entry for =
it
@@ -277,7 +291,8 @@
   return SectionID;
 }
=20
-unsigned RuntimeDyldImpl::findOrEmitSection(const SectionRef &Section,
+unsigned RuntimeDyldImpl::findOrEmitSection(ObjectImage &Obj,
+                                            const SectionRef &Section,
                                             bool IsCode,
                                             ObjSectionToIDMap &LocalSectio=
ns) {
=20
@@ -286,7 +301,7 @@
   if (i !=3D LocalSections.end())
     SectionID =3D i->second;
   else {
-    SectionID =3D emitSection(Section, IsCode);
+    SectionID =3D emitSection(Obj, Section, IsCode);
     LocalSections[Section] =3D SectionID;
   }
   return SectionID;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyldELF.cpp
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp	=
Wed Jul 25 16:21:35 2012 +0300
@@ -20,11 +20,176 @@
 #include "llvm/Object/ObjectFile.h"
 #include "llvm/Support/ELF.h"
 #include "llvm/ADT/Triple.h"
+#include "llvm/Object/ELF.h"
+#include "JITRegistrar.h"
 using namespace llvm;
 using namespace llvm::object;
=20
+namespace {
+
+template<support::endianness target_endianness, bool is64Bits>
+class DyldELFObject : public ELFObjectFile<target_endianness, is64Bits> {
+  LLVM_ELF_IMPORT_TYPES(target_endianness, is64Bits)
+
+  typedef Elf_Shdr_Impl<target_endianness, is64Bits> Elf_Shdr;
+  typedef Elf_Sym_Impl<target_endianness, is64Bits> Elf_Sym;
+  typedef Elf_Rel_Impl<target_endianness, is64Bits, false> Elf_Rel;
+  typedef Elf_Rel_Impl<target_endianness, is64Bits, true> Elf_Rela;
+
+  typedef typename ELFObjectFile<target_endianness, is64Bits>::
+    Elf_Ehdr Elf_Ehdr;
+
+  typedef typename ELFDataTypeTypedefHelper<
+          target_endianness, is64Bits>::value_type addr_type;
+
+protected:
+  // This duplicates the 'Data' member in the 'Binary' base class
+  // but it is necessary to workaround a bug in gcc 4.2
+  MemoryBuffer *InputData;
+
+public:
+  DyldELFObject(MemoryBuffer *Object, error_code &ec);
+
+  void updateSectionAddress(const SectionRef &Sec, uint64_t Addr);
+  void updateSymbolAddress(const SymbolRef &Sym, uint64_t Addr);
+
+  const MemoryBuffer& getBuffer() const { return *InputData; }
+
+  // Methods for type inquiry through isa, cast, and dyn_cast
+  static inline bool classof(const Binary *v) {
+    return (isa<ELFObjectFile<target_endianness, is64Bits> >(v)
+            && classof(cast<ELFObjectFile<target_endianness, is64Bits> >(v=
)));
+  }
+  static inline bool classof(
+      const ELFObjectFile<target_endianness, is64Bits> *v) {
+    return v->isDyldType();
+  }
+  static inline bool classof(const DyldELFObject *v) {
+    return true;
+  }
+};
+
+template<support::endianness target_endianness, bool is64Bits>
+class ELFObjectImage : public ObjectImage {
+  protected:
+    DyldELFObject<target_endianness, is64Bits> *DyldObj;
+    bool Registered;
+
+  public:
+    ELFObjectImage(DyldELFObject<target_endianness, is64Bits> *Obj)
+    : ObjectImage(Obj),
+      DyldObj(Obj),
+      Registered(false) {}
+
+    virtual ~ELFObjectImage() {
+      if (Registered)
+        deregisterWithDebugger();
+    }
+
+    // Subclasses can override these methods to update the image with load=
ed
+    // addresses for sections and common symbols
+    virtual void updateSectionAddress(const SectionRef &Sec, uint64_t Addr)
+    {
+      DyldObj->updateSectionAddress(Sec, Addr);
+    }
+
+    virtual void updateSymbolAddress(const SymbolRef &Sym, uint64_t Addr)
+    {
+      DyldObj->updateSymbolAddress(Sym, Addr);
+    }
+
+    virtual void registerWithDebugger()
+    {
+      JITRegistrar::getGDBRegistrar().registerObject(DyldObj->getBuffer());
+      Registered =3D true;
+    }
+    virtual void deregisterWithDebugger()
+    {
+      JITRegistrar::getGDBRegistrar().deregisterObject(DyldObj->getBuffer(=
));
+    }
+};
+
+template<support::endianness target_endianness, bool is64Bits>
+DyldELFObject<target_endianness, is64Bits>::DyldELFObject(MemoryBuffer *Ob=
ject,
+                                                          error_code &ec)
+  : ELFObjectFile<target_endianness, is64Bits>(Object, ec),
+    InputData(Object) {
+  this->isDyldELFObject =3D true;
+}
+
+template<support::endianness target_endianness, bool is64Bits>
+void DyldELFObject<target_endianness, is64Bits>::updateSectionAddress(
+                                                       const SectionRef &S=
ec,
+                                                       uint64_t Addr) {
+  DataRefImpl ShdrRef =3D Sec.getRawDataRefImpl();
+  Elf_Shdr *shdr =3D const_cast<Elf_Shdr*>(
+                          reinterpret_cast<const Elf_Shdr *>(ShdrRef.p));
+
+  // This assumes the address passed in matches the target address bitness
+  // The template-based type cast handles everything else.
+  shdr->sh_addr =3D static_cast<addr_type>(Addr);
+}
+
+template<support::endianness target_endianness, bool is64Bits>
+void DyldELFObject<target_endianness, is64Bits>::updateSymbolAddress(
+                                                       const SymbolRef &Sy=
mRef,
+                                                       uint64_t Addr) {
+
+  Elf_Sym *sym =3D const_cast<Elf_Sym*>(
+                                 ELFObjectFile<target_endianness, is64Bits=
>::
+                                   getSymbol(SymRef.getRawDataRefImpl()));
+
+  // This assumes the address passed in matches the target address bitness
+  // The template-based type cast handles everything else.
+  sym->st_value =3D static_cast<addr_type>(Addr);
+}
+
+} // namespace
+
+
 namespace llvm {
=20
+ObjectImage *RuntimeDyldELF::createObjectImage(
+                                         const MemoryBuffer *ConstInputBuf=
fer) {
+  MemoryBuffer *InputBuffer =3D const_cast<MemoryBuffer*>(ConstInputBuffer=
);
+  std::pair<unsigned char, unsigned char> Ident =3D getElfArchType(InputBu=
ffer);
+  error_code ec;
+
+  if (Ident.first =3D=3D ELF::ELFCLASS32 && Ident.second =3D=3D ELF::ELFDA=
TA2LSB) {
+    DyldELFObject<support::little, false> *Obj =3D
+           new DyldELFObject<support::little, false>(InputBuffer, ec);
+    return new ELFObjectImage<support::little, false>(Obj);
+  }
+  else if (Ident.first =3D=3D ELF::ELFCLASS32 && Ident.second =3D=3D ELF::=
ELFDATA2MSB) {
+    DyldELFObject<support::big, false> *Obj =3D
+           new DyldELFObject<support::big, false>(InputBuffer, ec);
+    return new ELFObjectImage<support::big, false>(Obj);
+  }
+  else if (Ident.first =3D=3D ELF::ELFCLASS64 && Ident.second =3D=3D ELF::=
ELFDATA2MSB) {
+    DyldELFObject<support::big, true> *Obj =3D
+           new DyldELFObject<support::big, true>(InputBuffer, ec);
+    return new ELFObjectImage<support::big, true>(Obj);
+  }
+  else if (Ident.first =3D=3D ELF::ELFCLASS64 && Ident.second =3D=3D ELF::=
ELFDATA2LSB) {
+    DyldELFObject<support::little, true> *Obj =3D
+           new DyldELFObject<support::little, true>(InputBuffer, ec);
+    return new ELFObjectImage<support::little, true>(Obj);
+  }
+  else
+    llvm_unreachable("Unexpected ELF format");
+}
+
+void RuntimeDyldELF::handleObjectLoaded(ObjectImage *Obj)
+{
+  Obj->registerWithDebugger();
+  // Save the loaded object.  It will deregister itself when deleted
+  LoadedObject =3D Obj;
+}
+
+RuntimeDyldELF::~RuntimeDyldELF() {
+  if (LoadedObject)
+    delete LoadedObject;
+}
=20
 void RuntimeDyldELF::resolveX86_64Relocation(uint8_t *LocalAddress,
                                              uint64_t FinalAddress,
@@ -167,7 +332,7 @@
 }
=20
 void RuntimeDyldELF::processRelocationRef(const ObjRelocationInfo &Rel,
-                                          const ObjectFile &Obj,
+                                          ObjectImage &Obj,
                                           ObjSectionToIDMap &ObjSectionToI=
D,
                                           LocalSymbolMap &Symbols,
                                           StubMap &Stubs) {
@@ -206,7 +371,7 @@
           if (si =3D=3D Obj.end_sections())
             llvm_unreachable("Symbol section not found, bad object file fo=
rmat!");
           DEBUG(dbgs() << "\t\tThis is section symbol\n");
-          Value.SectionID =3D findOrEmitSection((*si), true, ObjSectionToI=
D);
+          Value.SectionID =3D findOrEmitSection(Obj, (*si), true, ObjSecti=
onToID);
           Value.Addend =3D Addend;
           break;
         }
@@ -236,7 +401,7 @@
     //  Look up for existing stub.
     StubMap::const_iterator i =3D Stubs.find(Value);
     if (i !=3D Stubs.end()) {
-      resolveRelocation(Target, Section.LoadAddress, (uint64_t)Section.Add=
ress +
+      resolveRelocation(Target, (uint64_t)Target, (uint64_t)Section.Addres=
s +
                         i->second, RelType, 0);
       DEBUG(dbgs() << " Stub function found\n");
     } else {
@@ -247,7 +412,7 @@
                                                    Section.StubOffset);
       AddRelocation(Value, Rel.SectionID,
                     StubTargetAddr - Section.Address, ELF::R_ARM_ABS32);
-      resolveRelocation(Target, Section.LoadAddress, (uint64_t)Section.Add=
ress +
+      resolveRelocation(Target, (uint64_t)Target, (uint64_t)Section.Addres=
s +
                         Section.StubOffset, RelType, 0);
       Section.StubOffset +=3D getMaxStubSize();
     }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyldELF.h
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h	We=
d Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h	We=
d Jul 25 16:21:35 2012 +0300
@@ -22,6 +22,8 @@
 namespace llvm {
 class RuntimeDyldELF : public RuntimeDyldImpl {
 protected:
+  ObjectImage *LoadedObject;
+
   void resolveX86_64Relocation(uint8_t *LocalAddress,
                                uint64_t FinalAddress,
                                uint64_t Value,
@@ -47,12 +49,18 @@
                                  int64_t Addend);
=20
   virtual void processRelocationRef(const ObjRelocationInfo &Rel,
-                                    const ObjectFile &Obj,
+                                    ObjectImage &Obj,
                                     ObjSectionToIDMap &ObjSectionToID,
                                     LocalSymbolMap &Symbols, StubMap &Stub=
s);
=20
+  virtual ObjectImage *createObjectImage(const MemoryBuffer *InputBuffer);
+  virtual void handleObjectLoaded(ObjectImage *Obj);
+
 public:
-  RuntimeDyldELF(RTDyldMemoryManager *mm) : RuntimeDyldImpl(mm) {}
+  RuntimeDyldELF(RTDyldMemoryManager *mm)
+      : RuntimeDyldImpl(mm), LoadedObject(0) {}
+
+  virtual ~RuntimeDyldELF();
=20
   bool isCompatibleFormat(const MemoryBuffer *InputBuffer) const;
 };
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyldImpl.h
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -29,6 +29,7 @@
 #include "llvm/ADT/Triple.h"
 #include <map>
 #include "llvm/Support/Format.h"
+#include "ObjectImage.h"
=20
 using namespace llvm;
 using namespace llvm::object;
@@ -154,7 +155,8 @@
=20
   /// \brief Emits a section containing common symbols.
   /// \return SectionID.
-  unsigned emitCommonSymbols(const CommonSymbolMap &Map,
+  unsigned emitCommonSymbols(ObjectImage &Obj,
+                             const CommonSymbolMap &Map,
                              uint64_t TotalSize,
                              LocalSymbolMap &Symbols);
=20
@@ -162,14 +164,18 @@
   /// \param IsCode if it's true then allocateCodeSection() will be
   ///        used for emmits, else allocateDataSection() will be used.
   /// \return SectionID.
-  unsigned emitSection(const SectionRef &Section, bool IsCode);
+  unsigned emitSection(ObjectImage &Obj,
+                       const SectionRef &Section,
+                       bool IsCode);
=20
   /// \brief Find Section in LocalSections. If the secton is not found - e=
mit
   ///        it and store in LocalSections.
   /// \param IsCode if it's true then allocateCodeSection() will be
   ///        used for emmits, else allocateDataSection() will be used.
   /// \return SectionID.
-  unsigned findOrEmitSection(const SectionRef &Section, bool IsCode,
+  unsigned findOrEmitSection(ObjectImage &Obj,
+                             const SectionRef &Section,
+                             bool IsCode,
                              ObjSectionToIDMap &LocalSections);
=20
   /// \brief If Value.SymbolName is NULL then store relocation to the
@@ -200,11 +206,18 @@
   /// \brief Parses the object file relocation and store it to Relocations
   ///        or SymbolRelocations. Its depend from object file type.
   virtual void processRelocationRef(const ObjRelocationInfo &Rel,
-                                    const ObjectFile &Obj,
+                                    ObjectImage &Obj,
                                     ObjSectionToIDMap &ObjSectionToID,
                                     LocalSymbolMap &Symbols, StubMap &Stub=
s) =3D 0;
=20
   void resolveSymbols();
+  virtual ObjectImage *createObjectImage(const MemoryBuffer *InputBuffer);
+  virtual void handleObjectLoaded(ObjectImage *Obj)
+  {
+    // Subclasses may choose to retain this image if they have a use for it
+    delete Obj;
+  }
+
 public:
   RuntimeDyldImpl(RTDyldMemoryManager *mm) : MemMgr(mm), HasError(false) {}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyldMachO.cpp
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cp=
p	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cp=
p	Wed Jul 25 16:21:35 2012 +0300
@@ -205,7 +205,7 @@
 }
=20
 void RuntimeDyldMachO::processRelocationRef(const ObjRelocationInfo &Rel,
-                                            const ObjectFile &Obj,
+                                            ObjectImage &Obj,
                                             ObjSectionToIDMap &ObjSectionT=
oID,
                                             LocalSymbolMap &Symbols,
                                             StubMap &Stubs) {
@@ -246,7 +246,7 @@
         break;
     }
     assert(si !=3D se && "No section containing relocation!");
-    Value.SectionID =3D findOrEmitSection(*si, true, ObjSectionToID);
+    Value.SectionID =3D findOrEmitSection(Obj, *si, true, ObjSectionToID);
     Value.Addend =3D *(const intptr_t *)Target;
     if (Value.Addend) {
       // The MachO addend is offset from the current section, we need set =
it
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/ExecutionEngine/=
RuntimeDyld/RuntimeDyldMachO.h
--- a/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h	=
Wed Jul 25 16:21:35 2012 +0300
@@ -49,7 +49,7 @@
                             int64_t Addend);
=20
   virtual void processRelocationRef(const ObjRelocationInfo &Rel,
-                                    const ObjectFile &Obj,
+                                    ObjectImage &Obj,
                                     ObjSectionToIDMap &ObjSectionToID,
                                     LocalSymbolMap &Symbols, StubMap &Stub=
s);
=20
@@ -59,7 +59,7 @@
                                  uint64_t Value,
                                  uint32_t Type,
                                  int64_t Addend);
-                                =20
+
   RuntimeDyldMachO(RTDyldMemoryManager *mm) : RuntimeDyldImpl(mm) {}
=20
   bool isCompatibleFormat(const MemoryBuffer *InputBuffer) const;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/MC/MCParser/AsmP=
arser.cpp
--- a/head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp	Wed Jul 25 16:21:35 2=
012 +0300
@@ -1527,11 +1527,11 @@
     }
     Lex();
   }
-  // If there weren't any arguments, erase the token vector so everything
-  // else knows that. Leaving around the vestigal empty token list confuses
-  // things.
-  if (MacroArguments.size() =3D=3D 1 && MacroArguments.back().empty())
-    MacroArguments.clear();
+  // If the last argument didn't end up with any tokens, it's not a real
+  // argument and we should remove it from the list. This happens with eit=
her
+  // a tailing comma or an empty argument list.
+  if (MacroArguments.back().empty())
+    MacroArguments.pop_back();
=20
   // Macro instantiation is lexical, unfortunately. We construct a new buf=
fer
   // to hold the macro body with substitutions.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Object/ELFObject=
File.cpp
--- a/head/contrib/llvm/lib/Object/ELFObjectFile.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/lib/Object/ELFObjectFile.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -17,16 +17,6 @@
=20
 using namespace object;
=20
-namespace {
-  std::pair<unsigned char, unsigned char>
-  getElfArchType(MemoryBuffer *Object) {
-    if (Object->getBufferSize() < ELF::EI_NIDENT)
-      return std::make_pair((uint8_t)ELF::ELFCLASSNONE,(uint8_t)ELF::ELFDA=
TANONE);
-    return std::make_pair( (uint8_t)Object->getBufferStart()[ELF::EI_CLASS]
-                         , (uint8_t)Object->getBufferStart()[ELF::EI_DATA]=
);
-  }
-}
-
 // Creates an in-memory object-file by default: createELFObjectFile(Buffer)
 ObjectFile *ObjectFile::createELFObjectFile(MemoryBuffer *Object) {
   std::pair<unsigned char, unsigned char> Ident =3D getElfArchType(Object);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/JSONPars=
er.cpp
--- a/head/contrib/llvm/lib/Support/JSONParser.cpp	Wed Jul 25 16:20:13 2012=
 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,302 +0,0 @@
-//=3D=3D=3D--- JSONParser.cpp - Simple JSON parser -----------------------=
-------=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  This file implements a JSON parser.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "llvm/Support/JSONParser.h"
-
-#include "llvm/ADT/Twine.h"
-#include "llvm/Support/Casting.h"
-#include "llvm/Support/MemoryBuffer.h"
-
-using namespace llvm;
-
-JSONParser::JSONParser(StringRef Input, SourceMgr *SM)
-  : SM(SM), Failed(false) {
-  InputBuffer =3D MemoryBuffer::getMemBuffer(Input, "JSON");
-  SM->AddNewSourceBuffer(InputBuffer, SMLoc());
-  End =3D InputBuffer->getBuffer().end();
-  Position =3D InputBuffer->getBuffer().begin();
-}
-
-JSONValue *JSONParser::parseRoot() {
-  if (Position !=3D InputBuffer->getBuffer().begin())
-    report_fatal_error("Cannot reuse JSONParser.");
-  if (isWhitespace())
-    nextNonWhitespace();
-  if (errorIfAtEndOfFile("'[' or '{' at start of JSON text"))
-    return 0;
-  switch (*Position) {
-    case '[':
-      return new (ValueAllocator.Allocate<JSONArray>(1)) JSONArray(this);
-    case '{':
-      return new (ValueAllocator.Allocate<JSONObject>(1)) JSONObject(this);
-    default:
-      setExpectedError("'[' or '{' at start of JSON text", *Position);
-      return 0;
-  }
-}
-
-bool JSONParser::validate() {
-  JSONValue *Root =3D parseRoot();
-  if (Root =3D=3D NULL) {
-    return false;
-  }
-  return skip(*Root);
-}
-
-bool JSONParser::skip(const JSONAtom &Atom) {
-  switch(Atom.getKind()) {
-    case JSONAtom::JK_Array:
-    case JSONAtom::JK_Object:
-      return skipContainer(*cast<JSONContainer>(&Atom));
-    case JSONAtom::JK_String:
-      return true;
-    case JSONAtom::JK_KeyValuePair:
-      return skip(*cast<JSONKeyValuePair>(&Atom)->Value);
-  }
-  llvm_unreachable("Impossible enum value.");
-}
-
-// Sets the current error to:
-// "expected <Expected>, but found <Found>".
-void JSONParser::setExpectedError(StringRef Expected, StringRef Found) {
-  SM->PrintMessage(SMLoc::getFromPointer(Position), SourceMgr::DK_Error,
-    "expected " + Expected + ", but found " + Found + ".", ArrayRef<SMRang=
e>());
-  Failed =3D true;
-}
-
-// Sets the current error to:
-// "expected <Expected>, but found <Found>".
-void JSONParser::setExpectedError(StringRef Expected, char Found) {
-  setExpectedError(Expected, ("'" + StringRef(&Found, 1) + "'").str());
-}
-
-// If there is no character available, returns true and sets the current e=
rror
-// to: "expected <Expected>, but found EOF.".
-bool JSONParser::errorIfAtEndOfFile(StringRef Expected) {
-  if (Position =3D=3D End) {
-    setExpectedError(Expected, "EOF");
-    return true;
-  }
-  return false;
-}
-
-// Sets the current error if the current character is not C to:
-// "expected 'C', but got <current character>".
-bool JSONParser::errorIfNotAt(char C, StringRef Message) {
-  if (*Position !=3D C) {
-    std::string Expected =3D
-      ("'" + StringRef(&C, 1) + "' " + Message).str();
-    if (Position =3D=3D End)
-      setExpectedError(Expected, "EOF");
-    else
-      setExpectedError(Expected, *Position);
-    return true;
-  }
-  return false;
-}
-
-// Forbidding inlining improves performance by roughly 20%.
-// FIXME: Remove once llvm optimizes this to the faster version without hi=
nts.
-LLVM_ATTRIBUTE_NOINLINE static bool
-wasEscaped(StringRef::iterator First, StringRef::iterator Position);
-
-// Returns whether a character at 'Position' was escaped with a leading '\=
'.
-// 'First' specifies the position of the first character in the string.
-static bool wasEscaped(StringRef::iterator First,
-                       StringRef::iterator Position) {
-  assert(Position - 1 >=3D First);
-  StringRef::iterator I =3D Position - 1;
-  // We calulate the number of consecutive '\'s before the current position
-  // by iterating backwards through our string.
-  while (I >=3D First && *I =3D=3D '\\') --I;
-  // (Position - 1 - I) now contains the number of '\'s before the current
-  // position. If it is odd, the character at 'Positon' was escaped.
-  return (Position - 1 - I) % 2 =3D=3D 1;
-}
-
-// Parses a JSONString, assuming that the current position is on a quote.
-JSONString *JSONParser::parseString() {
-  assert(Position !=3D End);
-  assert(!isWhitespace());
-  if (errorIfNotAt('"', "at start of string"))
-    return 0;
-  StringRef::iterator First =3D Position + 1;
-
-  // Benchmarking shows that this loop is the hot path of the application =
with
-  // about 2/3rd of the runtime cycles. Since escaped quotes are not the c=
ommon
-  // case, and multiple escaped backslashes before escaped quotes are very=
 rare,
-  // we pessimize this case to achieve a smaller inner loop in the common =
case.
-  // We're doing that by having a quick inner loop that just scans for the=
 next
-  // quote. Once we find the quote we check the last character to see whet=
her
-  // the quote might have been escaped. If the last character is not a '\'=
, we
-  // know the quote was not escaped and have thus found the end of the str=
ing.
-  // If the immediately preceding character was a '\', we have to scan bac=
kwards
-  // to see whether the previous character was actually an escaped backsla=
sh, or
-  // an escape character for the quote. If we find that the current quote =
was
-  // escaped, we continue parsing for the next quote and repeat.
-  // This optimization brings around 30% performance improvements.
-  do {
-    // Step over the current quote.
-    ++Position;
-    // Find the next quote.
-    while (Position !=3D End && *Position !=3D '"')
-      ++Position;
-    if (errorIfAtEndOfFile("'\"' at end of string"))
-      return 0;
-    // Repeat until the previous character was not a '\' or was an escaped
-    // backslash.
-  } while (*(Position - 1) =3D=3D '\\' && wasEscaped(First, Position));
-
-  return new (ValueAllocator.Allocate<JSONString>())
-      JSONString(StringRef(First, Position - First));
-}
-
-
-// Advances the position to the next non-whitespace position.
-void JSONParser::nextNonWhitespace() {
-  do {
-    ++Position;
-  } while (isWhitespace());
-}
-
-// Checks if there is a whitespace character at the current position.
-bool JSONParser::isWhitespace() {
-  return *Position =3D=3D ' ' || *Position =3D=3D '\t' ||
-         *Position =3D=3D '\n' || *Position =3D=3D '\r';
-}
-
-bool JSONParser::failed() const {
-  return Failed;
-}
-
-// Parses a JSONValue, assuming that the current position is at the first
-// character of the value.
-JSONValue *JSONParser::parseValue() {
-  assert(Position !=3D End);
-  assert(!isWhitespace());
-  switch (*Position) {
-    case '[':
-      return new (ValueAllocator.Allocate<JSONArray>(1)) JSONArray(this);
-    case '{':
-      return new (ValueAllocator.Allocate<JSONObject>(1)) JSONObject(this);
-    case '"':
-      return parseString();
-    default:
-      setExpectedError("'[', '{' or '\"' at start of value", *Position);
-      return 0;
-  }
-}
-
-// Parses a JSONKeyValuePair, assuming that the current position is at the=
 first
-// character of the key, value pair.
-JSONKeyValuePair *JSONParser::parseKeyValuePair() {
-  assert(Position !=3D End);
-  assert(!isWhitespace());
-
-  JSONString *Key =3D parseString();
-  if (Key =3D=3D 0)
-    return 0;
-
-  nextNonWhitespace();
-  if (errorIfNotAt(':', "between key and value"))
-    return 0;
-
-  nextNonWhitespace();
-  const JSONValue *Value =3D parseValue();
-  if (Value =3D=3D 0)
-    return 0;
-
-  return new (ValueAllocator.Allocate<JSONKeyValuePair>(1))
-    JSONKeyValuePair(Key, Value);
-}
-
-/// \brief Parses the first element of a JSON array or object, or closes t=
he
-/// array.
-///
-/// The method assumes that the current position is before the first chara=
cter
-/// of the element, with possible white space in between. When successful,=
 it
-/// returns the new position after parsing the element. Otherwise, if ther=
e is
-/// no next value, it returns a default constructed StringRef::iterator.
-StringRef::iterator JSONParser::parseFirstElement(JSONAtom::Kind Container=
Kind,
-                                                  char StartChar, char End=
Char,
-                                                  const JSONAtom *&Element=
) {
-  assert(*Position =3D=3D StartChar);
-  Element =3D 0;
-  nextNonWhitespace();
-  if (errorIfAtEndOfFile("value or end of container at start of container"=
))
-    return StringRef::iterator();
-
-  if (*Position =3D=3D EndChar)
-    return StringRef::iterator();
-
-  Element =3D parseElement(ContainerKind);
-  if (Element =3D=3D 0)
-    return StringRef::iterator();
-
-  return Position;
-}
-
-/// \brief Parses the next element of a JSON array or object, or closes the
-/// array.
-///
-/// The method assumes that the current position is before the ',' which
-/// separates the next element from the current element. When successful, =
it
-/// returns the new position after parsing the element. Otherwise, if ther=
e is
-/// no next value, it returns a default constructed StringRef::iterator.
-StringRef::iterator JSONParser::parseNextElement(JSONAtom::Kind ContainerK=
ind,
-                                                 char EndChar,
-                                                 const JSONAtom *&Element)=
 {
-  Element =3D 0;
-  nextNonWhitespace();
-  if (errorIfAtEndOfFile("',' or end of container for next element"))
-    return 0;
-
-  if (*Position =3D=3D ',') {
-    nextNonWhitespace();
-    if (errorIfAtEndOfFile("element in container"))
-      return StringRef::iterator();
-
-    Element =3D parseElement(ContainerKind);
-    if (Element =3D=3D 0)
-      return StringRef::iterator();
-
-    return Position;
-  } else if (*Position =3D=3D EndChar) {
-      return StringRef::iterator();
-  } else {
-    setExpectedError("',' or end of container for next element", *Position=
);
-    return StringRef::iterator();
-  }
-}
-
-const JSONAtom *JSONParser::parseElement(JSONAtom::Kind ContainerKind) {
-  switch (ContainerKind) {
-    case JSONAtom::JK_Array:
-      return parseValue();
-    case JSONAtom::JK_Object:
-      return parseKeyValuePair();
-    default:
-      llvm_unreachable("Impossible code path");
-  }
-}
-
-bool JSONParser::skipContainer(const JSONContainer &Container) {
-  for (JSONContainer::AtomIterator I =3D Container.atom_current(),
-                                   E =3D Container.atom_end();
-       I !=3D E; ++I) {
-    assert(*I !=3D 0);
-    if (!skip(**I))
-      return false;
-  }
-  return !failed();
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Locale.c=
pp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/Support/Locale.cpp	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,10 @@
+#include "llvm/Support/Locale.h"
+#include "llvm/Config/config.h"
+
+#ifdef __APPLE__
+#include "LocaleXlocale.inc"
+#elif LLVM_ON_WIN32
+#include "LocaleWindows.inc"
+#else
+#include "LocaleGeneric.inc"
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/LocaleGe=
neric.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/Support/LocaleGeneric.inc	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,17 @@
+#include <cwctype>
+
+namespace llvm {
+namespace sys {
+namespace locale {
+
+int columnWidth(StringRef s) {
+    return s.size();
+}
+
+bool isPrint(int c) {
+    return iswprint(c);
+}
+
+}
+}
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/LocaleWi=
ndows.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/Support/LocaleWindows.inc	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,15 @@
+namespace llvm {
+namespace sys {
+namespace locale {
+
+int columnWidth(StringRef s) {
+    return s.size();
+}
+
+bool isPrint(int c) {
+    return ' ' <=3D c && c <=3D '~';
+}
+
+}
+}
+}
\ No newline at end of file
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/LocaleXl=
ocale.inc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/Support/LocaleXlocale.inc	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,61 @@
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/SmallString.h"
+#include "llvm/Support/ManagedStatic.h"
+#include <cassert>
+#include <xlocale.h>
+
+
+namespace {
+  struct locale_holder {
+    locale_holder()
+    : l(newlocale(LC_CTYPE_MASK,"en_US.UTF-8",LC_GLOBAL_LOCALE))
+    {
+      assert(NULL!=3Dl);
+    }
+    ~locale_holder() {
+      freelocale(l);
+    }
+
+    int mbswidth(llvm::SmallString<16> s) const {
+       // this implementation assumes no '\0' in s
+      assert(s.size()=3D=3Dstrlen(s.c_str()));
+
+      size_t size =3D mbstowcs_l(NULL,s.c_str(),0,l);
+      assert(size!=3D(size_t)-1);
+      if (size=3D=3D0)
+        return 0;
+      llvm::SmallVector<wchar_t,200> ws(size);
+      size =3D mbstowcs_l(&ws[0],s.c_str(),ws.size(),l);
+      assert(ws.size()=3D=3Dsize);
+      return wcswidth_l(&ws[0],ws.size(),l);
+    }
+
+    int isprint(int c) const {
+      return iswprint_l(c,l);
+    }
+
+  private:
+
+    locale_t l;
+  };
+
+  llvm::ManagedStatic<locale_holder> l;
+}
+
+namespace llvm {
+namespace sys {
+namespace locale {
+
+int columnWidth(StringRef s) {
+  int width =3D l->mbswidth(s);
+  assert(width>=3D0);
+  return width;
+}
+
+bool isPrint(int c) {
+  return l->isprint(c);
+}
+
+}
+}
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Memory.c=
pp
--- a/head/contrib/llvm/lib/Support/Memory.cpp	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/llvm/lib/Support/Memory.cpp	Wed Jul 25 16:21:35 2012 +03=
00
@@ -16,9 +16,9 @@
 #include "llvm/Support/Valgrind.h"
 #include "llvm/Config/config.h"
=20
-#if defined(__mips__)
-#include <sys/cachectl.h>
-#endif
+//#if defined(__mips__)
+//#include <sys/cachectl.h>
+//#endif
=20
 namespace llvm {
 using namespace sys;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/SmallPtr=
Set.cpp
--- a/head/contrib/llvm/lib/Support/SmallPtrSet.cpp	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/llvm/lib/Support/SmallPtrSet.cpp	Wed Jul 25 16:21:35 201=
2 +0300
@@ -13,6 +13,7 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 #include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/ADT/DenseMapInfo.h"
 #include "llvm/Support/MathExtras.h"
 #include <algorithm>
 #include <cstdlib>
@@ -102,7 +103,7 @@
 }
=20
 const void * const *SmallPtrSetImpl::FindBucketFor(const void *Ptr) const {
-  unsigned Bucket =3D Hash(Ptr);
+  unsigned Bucket =3D DenseMapInfo<void *>::getHashValue(Ptr) & (CurArrayS=
ize-1);
   unsigned ArraySize =3D CurArraySize;
   unsigned ProbeAmt =3D 1;
   const void *const *Array =3D CurArray;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/SourceMg=
r.cpp
--- a/head/contrib/llvm/lib/Support/SourceMgr.cpp	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/llvm/lib/Support/SourceMgr.cpp	Wed Jul 25 16:21:35 2012 =
+0300
@@ -193,7 +193,8 @@
 }
=20
 void SourceMgr::PrintMessage(SMLoc Loc, SourceMgr::DiagKind Kind,
-                             const Twine &Msg, ArrayRef<SMRange> Ranges) c=
onst {
+                             const Twine &Msg, ArrayRef<SMRange> Ranges,
+                             bool ShowColors) const {
   SMDiagnostic Diagnostic =3D GetMessage(Loc, Kind, Msg, Ranges);
  =20
   // Report the message with the diagnostic handler if present.
@@ -208,7 +209,7 @@
   assert(CurBuf !=3D -1 && "Invalid or unspecified location!");
   PrintIncludeStack(getBufferInfo(CurBuf).IncludeLoc, OS);
=20
-  Diagnostic.print(0, OS);
+  Diagnostic.print(0, OS, ShowColors);
 }
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -225,7 +226,14 @@
 }
=20
=20
-void SMDiagnostic::print(const char *ProgName, raw_ostream &S) const {
+void SMDiagnostic::print(const char *ProgName, raw_ostream &S,
+                         bool ShowColors) const {
+  // Display colors only if OS goes to a tty.
+  ShowColors &=3D S.is_displayed();
+
+  if (ShowColors)
+    S.changeColor(raw_ostream::SAVEDCOLOR, true);
+
   if (ProgName && ProgName[0])
     S << ProgName << ": ";
=20
@@ -244,13 +252,33 @@
   }
=20
   switch (Kind) {
-  case SourceMgr::DK_Error: S << "error: "; break;
-  case SourceMgr::DK_Warning: S << "warning: "; break;
-  case SourceMgr::DK_Note: S << "note: "; break;
+  case SourceMgr::DK_Error:
+    if (ShowColors)
+      S.changeColor(raw_ostream::RED, true);
+    S << "error: ";
+    break;
+  case SourceMgr::DK_Warning:
+    if (ShowColors)
+      S.changeColor(raw_ostream::MAGENTA, true);
+    S << "warning: ";
+    break;
+  case SourceMgr::DK_Note:
+    if (ShowColors)
+      S.changeColor(raw_ostream::BLACK, true);
+    S << "note: ";
+    break;
   }
- =20
+
+  if (ShowColors) {
+    S.resetColor();
+    S.changeColor(raw_ostream::SAVEDCOLOR, true);
+  }
+
   S << Message << '\n';
=20
+  if (ShowColors)
+    S.resetColor();
+
   if (LineNo =3D=3D -1 || ColumnNo =3D=3D -1)
     return;
=20
@@ -292,6 +320,9 @@
   }
   S << '\n';
=20
+  if (ShowColors)
+    S.changeColor(raw_ostream::GREEN, true);
+
   // Print out the caret line, matching tabs in the source line.
   for (unsigned i =3D 0, e =3D CaretLine.size(), OutCol =3D 0; i !=3D e; +=
+i) {
     if (i >=3D LineContents.size() || LineContents[i] !=3D '\t') {
@@ -306,6 +337,9 @@
       ++OutCol;
     } while (OutCol & 7);
   }
+
+  if (ShowColors)
+    S.resetColor();
  =20
   S << '\n';
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Unix/Pat=
hV2.inc
--- a/head/contrib/llvm/lib/Support/Unix/PathV2.inc	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/llvm/lib/Support/Unix/PathV2.inc	Wed Jul 25 16:21:35 201=
2 +0300
@@ -346,9 +346,10 @@
   return error_code::success();
 }
=20
+// Since this is most often used for temporary files, mode defaults to 060=
0.
 error_code unique_file(const Twine &model, int &result_fd,
-                             SmallVectorImpl<char> &result_path,
-                             bool makeAbsolute) {
+                       SmallVectorImpl<char> &result_path,
+                       bool makeAbsolute, unsigned mode) {
   SmallString<128> Model;
   model.toVector(Model);
   // Null terminate.
@@ -395,7 +396,7 @@
=20
   // Try to open + create the file.
 rety_open_create:
-  int RandomFD =3D ::open(RandomPath.c_str(), O_RDWR | O_CREAT | O_EXCL, 0=
600);
+  int RandomFD =3D ::open(RandomPath.c_str(), O_RDWR | O_CREAT | O_EXCL, m=
ode);
   if (RandomFD =3D=3D -1) {
     // If the file existed, try again, otherwise, error.
     if (errno =3D=3D errc::file_exists)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Unix/Pro=
cess.inc
--- a/head/contrib/llvm/lib/Support/Unix/Process.inc	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/lib/Support/Unix/Process.inc	Wed Jul 25 16:21:35 20=
12 +0300
@@ -290,6 +290,10 @@
   return "\033[1m";
 }
=20
+const char *Process::OutputReverse() {
+  return "\033[7m";
+}
+
 const char *Process::ResetColor() {
   return "\033[0m";
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Windows/=
PathV2.inc
--- a/head/contrib/llvm/lib/Support/Windows/PathV2.inc	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/lib/Support/Windows/PathV2.inc	Wed Jul 25 16:21:35 =
2012 +0300
@@ -487,9 +487,11 @@
   return error_code::success();
 }
=20
+// FIXME: mode should be used here and default to user r/w only,
+// it currently comes in as a UNIX mode.
 error_code unique_file(const Twine &model, int &result_fd,
-                             SmallVectorImpl<char> &result_path,
-                             bool makeAbsolute) {
+                       SmallVectorImpl<char> &result_path,
+                       bool makeAbsolute, unsigned mode) {
   // Use result_path as temp storage.
   result_path.set_size(0);
   StringRef m =3D model.toStringRef(result_path);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/Windows/=
Process.inc
--- a/head/contrib/llvm/lib/Support/Windows/Process.inc	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/llvm/lib/Support/Windows/Process.inc	Wed Jul 25 16:21:35=
 2012 +0300
@@ -215,6 +215,38 @@
   return 0;
 }
=20
+static WORD GetConsoleTextAttribute(HANDLE hConsoleOutput) {
+  CONSOLE_SCREEN_BUFFER_INFO info;
+  GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
+  return info.wAttributes;
+}
+
+const char *Process::OutputReverse() {
+  const WORD attributes
+   =3D GetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE));
+
+  const WORD foreground_mask =3D FOREGROUND_BLUE | FOREGROUND_GREEN |
+    FOREGROUND_RED | FOREGROUND_INTENSITY;
+  const WORD background_mask =3D BACKGROUND_BLUE | BACKGROUND_GREEN |
+    BACKGROUND_RED | BACKGROUND_INTENSITY;
+  const WORD color_mask =3D foreground_mask | background_mask;
+
+  WORD new_attributes =3D
+    ((attributes & FOREGROUND_BLUE     )?BACKGROUND_BLUE     :0) |
+    ((attributes & FOREGROUND_GREEN    )?BACKGROUND_GREEN    :0) |
+    ((attributes & FOREGROUND_RED      )?BACKGROUND_RED      :0) |
+    ((attributes & FOREGROUND_INTENSITY)?BACKGROUND_INTENSITY:0) |
+    ((attributes & BACKGROUND_BLUE     )?FOREGROUND_BLUE     :0) |
+    ((attributes & BACKGROUND_GREEN    )?FOREGROUND_GREEN    :0) |
+    ((attributes & BACKGROUND_RED      )?FOREGROUND_RED      :0) |
+    ((attributes & BACKGROUND_INTENSITY)?FOREGROUND_INTENSITY:0) |
+    0;
+  new_attributes =3D (attributes & ~color_mask) | (new_attributes & color_=
mask);
+
+  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), new_attributes);
+  return 0;
+}
+
 const char *Process::ResetColor() {
   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), defaultColors()=
);
   return 0;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/YAMLPars=
er.cpp
--- a/head/contrib/llvm/lib/Support/YAMLParser.cpp	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/llvm/lib/Support/YAMLParser.cpp	Wed Jul 25 16:21:35 2012=
 +0300
@@ -1732,7 +1732,7 @@
           if (UnquotedValue.size() < 3)
             // TODO: Report error.
             break;
-          unsigned int UnicodeScalarValue;
+          unsigned int UnicodeScalarValue =3D 0;
           UnquotedValue.substr(1, 2).getAsInteger(16, UnicodeScalarValue);
           encodeUTF8(UnicodeScalarValue, Storage);
           UnquotedValue =3D UnquotedValue.substr(2);
@@ -1742,7 +1742,7 @@
           if (UnquotedValue.size() < 5)
             // TODO: Report error.
             break;
-          unsigned int UnicodeScalarValue;
+          unsigned int UnicodeScalarValue =3D 0;
           UnquotedValue.substr(1, 4).getAsInteger(16, UnicodeScalarValue);
           encodeUTF8(UnicodeScalarValue, Storage);
           UnquotedValue =3D UnquotedValue.substr(4);
@@ -1752,7 +1752,7 @@
           if (UnquotedValue.size() < 9)
             // TODO: Report error.
             break;
-          unsigned int UnicodeScalarValue;
+          unsigned int UnicodeScalarValue =3D 0;
           UnquotedValue.substr(1, 8).getAsInteger(16, UnicodeScalarValue);
           encodeUTF8(UnicodeScalarValue, Storage);
           UnquotedValue =3D UnquotedValue.substr(8);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Support/raw_ostr=
eam.cpp
--- a/head/contrib/llvm/lib/Support/raw_ostream.cpp	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/llvm/lib/Support/raw_ostream.cpp	Wed Jul 25 16:21:35 201=
2 +0300
@@ -633,6 +633,19 @@
   return *this;
 }
=20
+raw_ostream &raw_fd_ostream::reverseColor() {
+  if (sys::Process::ColorNeedsFlush())
+    flush();
+  const char *colorcode =3D sys::Process::OutputReverse();
+  if (colorcode) {
+    size_t len =3D strlen(colorcode);
+    write(colorcode, len);
+    // don't account colors towards output characters
+    pos -=3D len;
+  }
+  return *this;
+}
+
 bool raw_fd_ostream::is_displayed() const {
   return sys::Process::FileDescriptorIsDisplayed(FD);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/TableGen/Error.c=
pp
--- a/head/contrib/llvm/lib/TableGen/Error.cpp	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/llvm/lib/TableGen/Error.cpp	Wed Jul 25 16:21:35 2012 +03=
00
@@ -20,6 +20,22 @@
=20
 SourceMgr SrcMgr;
=20
+void PrintWarning(SMLoc WarningLoc, const Twine &Msg) {
+  SrcMgr.PrintMessage(WarningLoc, SourceMgr::DK_Warning, Msg);
+}
+
+void PrintWarning(const char *Loc, const Twine &Msg) {
+  SrcMgr.PrintMessage(SMLoc::getFromPointer(Loc), SourceMgr::DK_Warning, M=
sg);
+}
+
+void PrintWarning(const Twine &Msg) {
+  errs() << "warning:" << Msg << "\n";
+}
+
+void PrintWarning(const TGError &Warning) {
+  PrintWarning(Warning.getLoc(), Warning.getMessage());
+}
+
 void PrintError(SMLoc ErrorLoc, const Twine &Msg) {
   SrcMgr.PrintMessage(ErrorLoc, SourceMgr::DK_Error, Msg);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/ARMCa=
llingConv.td
--- a/head/contrib/llvm/lib/Target/ARM/ARMCallingConv.td	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/ARMCallingConv.td	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -9,10 +9,6 @@
 // This describes the calling conventions for ARM architecture.
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-/// CCIfSubtarget - Match if the current subtarget has a feature F.
-class CCIfSubtarget<string F, CCAction A>:
-  CCIf<!strconcat("State.getTarget().getSubtarget<ARMSubtarget>().", F), A=
>;
-
 /// CCIfAlign - Match of the original alignment of the arg
 class CCIfAlign<string Align, CCAction A>:
   CCIf<!strconcat("ArgFlags.getOrigAlign() =3D=3D ", Align), A>;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/ARMIn=
strFormats.td
--- a/head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td	Wed Jul 25 16:21:=
35 2012 +0300
@@ -532,6 +532,7 @@
   let Inst{11-4} =3D 0b00001001;
   let Inst{3-0} =3D Rt2;
=20
+  let Unpredictable{11-8} =3D 0b1111;
   let DecoderMethod =3D "DecodeSwap";
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/ARMIn=
strInfo.td
--- a/head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td	Wed Jul 25 16:21:35 =
2012 +0300
@@ -219,8 +219,11 @@
=20
 // Prefer fused MAC for fp mul + add over fp VMLA / VMLS if they are avail=
able.
 // But only select them if more precision in FP computation is allowed.
-def UseFusedMAC      : Predicate<"!TM.Options.NoExcessFPPrecision">;
-def DontUseFusedMAC  : Predicate<"!Subtarget->hasVFP4()">;
+// Do not use them for Darwin platforms.
+def UseFusedMAC      : Predicate<"!TM.Options.NoExcessFPPrecision && "
+                                 "!Subtarget->isTargetDarwin()">;
+def DontUseFusedMAC  : Predicate<"!Subtarget->hasVFP4() || "
+                                 "Subtarget->isTargetDarwin()">;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // ARM Flag Definitions.
@@ -905,6 +908,11 @@
   let DecoderMethod =3D "DecodeCoprocessor";
 }
=20
+def pf_imm : Operand<i32> {
+  let PrintMethod =3D "printPImmediate";
+  let ParserMatchClass =3D CoprocNumAsmOperand;
+}
+
 def CoprocRegAsmOperand : AsmOperandClass {
   let Name =3D "CoprocReg";
   let ParserMethod =3D "parseCoprocRegOperand";
@@ -1184,6 +1192,8 @@
     let Inst{19-16} =3D Rn;
     let Inst{15-12} =3D 0b0000;
     let Inst{11-0} =3D imm;
+
+    let Unpredictable{15-12} =3D 0b1111;
   }
   def rr : AI1<opcod, (outs), (ins GPR:$Rn, GPR:$Rm), DPFrm, iir,
                opc, "\t$Rn, $Rm",
@@ -1197,6 +1207,8 @@
     let Inst{15-12} =3D 0b0000;
     let Inst{11-4} =3D 0b00000000;
     let Inst{3-0} =3D Rm;
+
+    let Unpredictable{15-12} =3D 0b1111;
   }
   def rsi : AI1<opcod, (outs),
                (ins GPR:$Rn, so_reg_imm:$shift), DPSoRegImmFrm, iis,
@@ -1211,11 +1223,13 @@
     let Inst{11-5} =3D shift{11-5};
     let Inst{4} =3D 0;
     let Inst{3-0} =3D shift{3-0};
+
+    let Unpredictable{15-12} =3D 0b1111;
   }
   def rsr : AI1<opcod, (outs),
-               (ins GPR:$Rn, so_reg_reg:$shift), DPSoRegRegFrm, iis,
+               (ins GPRnopc:$Rn, so_reg_reg:$shift), DPSoRegRegFrm, iis,
                opc, "\t$Rn, $shift",
-               [(opnode GPR:$Rn, so_reg_reg:$shift)]> {
+               [(opnode GPRnopc:$Rn, so_reg_reg:$shift)]> {
     bits<4> Rn;
     bits<12> shift;
     let Inst{25} =3D 0;
@@ -1227,6 +1241,8 @@
     let Inst{6-5} =3D shift{6-5};
     let Inst{4} =3D 1;
     let Inst{3-0} =3D shift{3-0};
+
+    let Unpredictable{15-12} =3D 0b1111;
   }
=20
 }
@@ -4103,7 +4119,7 @@
   let Inst{3-0} =3D opt;
 }
=20
-// Pseudo isntruction that combines movs + predicated rsbmi
+// Pseudo instruction that combines movs + predicated rsbmi
 // to implement integer ABS
 let usesCustomInserter =3D 1, Defs =3D [CPSR] in {
 def ABS : ARMPseudoInst<
@@ -4264,9 +4280,9 @@
=20
 // SWP/SWPB are deprecated in V6/V7.
 let mayLoad =3D 1, mayStore =3D 1 in {
-def SWP : AIswp<0, (outs GPR:$Rt), (ins GPR:$Rt2, addr_offset_none:$addr),
+def SWP : AIswp<0, (outs GPRnopc:$Rt), (ins GPRnopc:$Rt2, addr_offset_none=
:$addr),
                 "swp", []>;
-def SWPB: AIswp<1, (outs GPR:$Rt), (ins GPR:$Rt2, addr_offset_none:$addr),
+def SWPB: AIswp<1, (outs GPRnopc:$Rt), (ins GPRnopc:$Rt2, addr_offset_none=
:$addr),
                 "swpb", []>;
 }
=20
@@ -4295,7 +4311,7 @@
   let Inst{23-20} =3D opc1;
 }
=20
-def CDP2 : ABXI<0b1110, (outs), (ins p_imm:$cop, imm0_15:$opc1,
+def CDP2 : ABXI<0b1110, (outs), (ins pf_imm:$cop, imm0_15:$opc1,
                c_imm:$CRd, c_imm:$CRn, c_imm:$CRm, imm0_7:$opc2),
                NoItinerary, "cdp2\t$cop, $opc1, $CRd, $CRn, $CRm, $opc2",
                [(int_arm_cdp2 imm:$cop, imm:$opc1, imm:$CRd, imm:$CRn,
@@ -4574,7 +4590,7 @@
=20
 class MovRRCopro<string opc, bit direction, list<dag> pattern =3D []>
   : ABI<0b1100, (outs), (ins p_imm:$cop, imm0_15:$opc1,
-        GPR:$Rt, GPR:$Rt2, c_imm:$CRm),
+        GPRnopc:$Rt, GPRnopc:$Rt2, c_imm:$CRm),
         NoItinerary, opc, "\t$cop, $opc1, $Rt, $Rt2, $CRm", pattern> {
   let Inst{23-21} =3D 0b010;
   let Inst{20} =3D direction;
@@ -4593,13 +4609,13 @@
 }
=20
 def MCRR : MovRRCopro<"mcrr", 0 /* from ARM core register to coprocessor *=
/,
-                      [(int_arm_mcrr imm:$cop, imm:$opc1, GPR:$Rt, GPR:$Rt=
2,
+                      [(int_arm_mcrr imm:$cop, imm:$opc1, GPRnopc:$Rt, GPR=
nopc:$Rt2,
                                      imm:$CRm)]>;
 def MRRC : MovRRCopro<"mrrc", 1 /* from coprocessor to ARM core register *=
/>;
=20
 class MovRRCopro2<string opc, bit direction, list<dag> pattern =3D []>
   : ABXI<0b1100, (outs), (ins p_imm:$cop, imm0_15:$opc1,
-         GPR:$Rt, GPR:$Rt2, c_imm:$CRm), NoItinerary,
+         GPRnopc:$Rt, GPRnopc:$Rt2, c_imm:$CRm), NoItinerary,
          !strconcat(opc, "\t$cop, $opc1, $Rt, $Rt2, $CRm"), pattern> {
   let Inst{31-28} =3D 0b1111;
   let Inst{23-21} =3D 0b010;
@@ -4616,10 +4632,12 @@
   let Inst{11-8}  =3D cop;
   let Inst{7-4}   =3D opc1;
   let Inst{3-0}   =3D CRm;
+
+  let DecoderMethod =3D "DecodeMRRC2";
 }
=20
 def MCRR2 : MovRRCopro2<"mcrr2", 0 /* from ARM core register to coprocesso=
r */,
-                        [(int_arm_mcrr2 imm:$cop, imm:$opc1, GPR:$Rt, GPR:=
$Rt2,
+                        [(int_arm_mcrr2 imm:$cop, imm:$opc1, GPRnopc:$Rt, =
GPRnopc:$Rt2,
                                         imm:$CRm)]>;
 def MRRC2 : MovRRCopro2<"mrrc2", 1 /* from coprocessor to ARM core registe=
r */>;
=20
@@ -4628,22 +4646,32 @@
 //
=20
 // Move to ARM core register from Special Register
-def MRS : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary,
+def MRS : ABI<0b0001, (outs GPRnopc:$Rd), (ins), NoItinerary,
               "mrs", "\t$Rd, apsr", []> {
   bits<4> Rd;
   let Inst{23-16} =3D 0b00001111;
+  let Unpredictable{19-17} =3D 0b111;
+
   let Inst{15-12} =3D Rd;
-  let Inst{7-4} =3D 0b0000;
-}
-
-def : InstAlias<"mrs${p} $Rd, cpsr", (MRS GPR:$Rd, pred:$p)>, Requires<[Is=
ARM]>;
-
-def MRSsys : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary,
+
+  let Inst{11-0} =3D 0b000000000000;
+  let Unpredictable{11-0} =3D 0b110100001111;
+}
+
+def : InstAlias<"mrs${p} $Rd, cpsr", (MRS GPRnopc:$Rd, pred:$p)>, Requires=
<[IsARM]>;
+
+// The MRSsys instruction is the MRS instruction from the ARM ARM,
+// section B9.3.9, with the R bit set to 1.
+def MRSsys : ABI<0b0001, (outs GPRnopc:$Rd), (ins), NoItinerary,
                  "mrs", "\t$Rd, spsr", []> {
   bits<4> Rd;
   let Inst{23-16} =3D 0b01001111;
+  let Unpredictable{19-16} =3D 0b1111;
+
   let Inst{15-12} =3D Rd;
-  let Inst{7-4} =3D 0b0000;
+
+  let Inst{11-0} =3D 0b000000000000;
+  let Unpredictable{11-0} =3D 0b110100001111;
 }
=20
 // Move from ARM core register to Special Register
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/ARMIn=
strNEON.td
--- a/head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td	Wed Jul 25 16:21:35 =
2012 +0300
@@ -5634,6 +5634,7 @@
=20
 // extload, zextload and sextload for a lengthening load followed by anoth=
er
 // lengthening load, to quadruple the initial length.
+//
 // Lengthen_Double<"4", "i32", "i8", "8", "i16", "4", "i32", qsub_0> =3D
 //     Pat<(v4i32 (extloadvi8 addrmode5:$addr))
 //         (EXTRACT_SUBREG (VMOVLuv4i32=20
@@ -5644,28 +5645,63 @@
 //           qsub_0)>;
 multiclass Lengthen_Double<string DestLanes, string DestTy, string SrcTy,
                            string Insn1Lanes, string Insn1Ty, string Insn2=
Lanes,
-                           string Insn2Ty, SubRegIndex RegType> {
+                           string Insn2Ty> {
+  def _Any : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
+                   (!cast<PatFrag>("extloadv" # SrcTy) addrmode5:$addr)),
+         (!cast<Instruction>("VMOVLuv" # Insn2Lanes # Insn2Ty)
+           (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn1Lanes # In=
sn1Ty)
+             (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
+              ssub_0)), dsub_0))>;
+  def _Z   : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
+                   (!cast<PatFrag>("zextloadv" # SrcTy) addrmode5:$addr)),
+         (!cast<Instruction>("VMOVLuv" # Insn2Lanes # Insn2Ty)
+           (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn1Lanes # In=
sn1Ty)
+             (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
+              ssub_0)), dsub_0))>;
+  def _S   : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
+                   (!cast<PatFrag>("sextloadv" # SrcTy) addrmode5:$addr)),
+         (!cast<Instruction>("VMOVLsv" # Insn2Lanes # Insn2Ty)
+           (EXTRACT_SUBREG (!cast<Instruction>("VMOVLsv" # Insn1Lanes # In=
sn1Ty)
+             (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
+              ssub_0)), dsub_0))>;
+}
+
+// extload, zextload and sextload for a lengthening load followed by anoth=
er
+// lengthening load, to quadruple the initial length, but which ends up on=
ly
+// requiring half the available lanes (a 64-bit outcome instead of a 128-b=
it).
+//
+// Lengthen_HalfDouble<"2", "i32", "i8", "8", "i16", "4", "i32"> =3D
+//     Pat<(v4i32 (extloadvi8 addrmode5:$addr))
+//         (EXTRACT_SUBREG (VMOVLuv4i32=20
+//           (EXTRACT_SUBREG (VMOVLuv8i16 (INSERT_SUBREG (f64 (IMPLICIT_DE=
F)),
+//                                                       (VLDRS addrmode5:=
$addr),
+//                                                       ssub_0)),
+//                           dsub_0)),
+//           dsub_0)>;
+multiclass Lengthen_HalfDouble<string DestLanes, string DestTy, string Src=
Ty,
+                           string Insn1Lanes, string Insn1Ty, string Insn2=
Lanes,
+                           string Insn2Ty> {
   def _Any : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
                    (!cast<PatFrag>("extloadv" # SrcTy) addrmode5:$addr)),
          (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn2Lanes # Insn=
2Ty)
            (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn1Lanes # In=
sn1Ty)
              (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
               ssub_0)), dsub_0)),
-          RegType)>;
+          dsub_0)>;
   def _Z   : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
                    (!cast<PatFrag>("zextloadv" # SrcTy) addrmode5:$addr)),
          (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn2Lanes # Insn=
2Ty)
            (EXTRACT_SUBREG (!cast<Instruction>("VMOVLuv" # Insn1Lanes # In=
sn1Ty)
              (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
               ssub_0)), dsub_0)),
-          RegType)>;
+          dsub_0)>;
   def _S   : Pat<(!cast<ValueType>("v" # DestLanes # DestTy)
                    (!cast<PatFrag>("sextloadv" # SrcTy) addrmode5:$addr)),
          (EXTRACT_SUBREG (!cast<Instruction>("VMOVLsv" # Insn2Lanes # Insn=
2Ty)
            (EXTRACT_SUBREG (!cast<Instruction>("VMOVLsv" # Insn1Lanes # In=
sn1Ty)
              (INSERT_SUBREG (f64 (IMPLICIT_DEF)), (VLDRS addrmode5:$addr),
               ssub_0)), dsub_0)),
-          RegType)>;
+          dsub_0)>;
 }
=20
 defm : Lengthen_Single<"8", "i16", "i8">; // v8i8 -> v8i16
@@ -5676,12 +5712,12 @@
 defm : Lengthen_HalfSingle<"2", "i16", "i8", "8", "i16">; // v2i8 -> v2i16
 defm : Lengthen_HalfSingle<"2", "i32", "i16", "4", "i32">; // v2i16 -> v2i=
32
=20
-// Double lengthening - v4i8 -> v4i16 -> v4i32=20
-defm : Lengthen_Double<"4", "i32", "i8", "8", "i16", "4", "i32", qsub_0>;
+// Double lengthening - v4i8 -> v4i16 -> v4i32
+defm : Lengthen_Double<"4", "i32", "i8", "8", "i16", "4", "i32">;
 // v2i8 -> v2i16 -> v2i32
-defm : Lengthen_Double<"2", "i32", "i8", "8", "i16", "4", "i32", dsub_0>;
+defm : Lengthen_HalfDouble<"2", "i32", "i8", "8", "i16", "4", "i32">;
 // v2i16 -> v2i32 -> v2i64
-defm : Lengthen_Double<"2", "i64", "i16", "4", "i32", "2", "i64", qsub_0>;
+defm : Lengthen_Double<"2", "i64", "i16", "4", "i32", "2", "i64">;
=20
 // Triple lengthening - v2i8 -> v2i16 -> v2i32 -> v2i64
 def : Pat<(v2i64 (extloadvi8 addrmode5:$addr)),
@@ -5951,7 +5987,7 @@
 def : NEONInstAlias<"vshl${p}.u64 $Vdn, $Vm",
                     (VSHLuv2i64 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
=20
-// VSHL (immediate) two-operand aliases.
+// VSHR (immediate) two-operand aliases.
 def : NEONInstAlias<"vshr${p}.s8 $Vdn, $imm",
                     (VSHRsv8i8 DPR:$Vdn, DPR:$Vdn, shr_imm8:$imm, pred:$p)=
>;
 def : NEONInstAlias<"vshr${p}.s16 $Vdn, $imm",
@@ -5988,6 +6024,41 @@
 def : NEONInstAlias<"vshr${p}.u64 $Vdn, $imm",
                     (VSHRuv2i64 QPR:$Vdn, QPR:$Vdn, shr_imm64:$imm, pred:$=
p)>;
=20
+// VRSHL two-operand aliases.
+def : NEONInstAlias<"vrshl${p}.s8 $Vdn, $Vm",
+                    (VRSHLsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s16 $Vdn, $Vm",
+                    (VRSHLsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s32 $Vdn, $Vm",
+                    (VRSHLsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s64 $Vdn, $Vm",
+                    (VRSHLsv1i64 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u8 $Vdn, $Vm",
+                    (VRSHLuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u16 $Vdn, $Vm",
+                    (VRSHLuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u32 $Vdn, $Vm",
+                    (VRSHLuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u64 $Vdn, $Vm",
+                    (VRSHLuv1i64 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vrshl${p}.s8 $Vdn, $Vm",
+                    (VRSHLsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s16 $Vdn, $Vm",
+                    (VRSHLsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s32 $Vdn, $Vm",
+                    (VRSHLsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.s64 $Vdn, $Vm",
+                    (VRSHLsv2i64 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u8 $Vdn, $Vm",
+                    (VRSHLuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u16 $Vdn, $Vm",
+                    (VRSHLuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u32 $Vdn, $Vm",
+                    (VRSHLuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vrshl${p}.u64 $Vdn, $Vm",
+                    (VRSHLuv2i64 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
 // VLD1 single-lane pseudo-instructions. These need special handling for
 // the lane index that an InstAlias can't handle, so we use these instead.
 def VLD1LNdAsm_8 : NEONDataTypeAsmPseudoInst<"vld1${p}", ".8", "$list, $ad=
dr",
@@ -6951,6 +7022,100 @@
 def : NEONInstAlias<"vsli${p}.64 $Vdm, $imm",
                     (VSLIv2i64 QPR:$Vdm, QPR:$Vdm, shr_imm64:$imm, pred:$p=
)>;
=20
+// Two-operand variants for VHSUB.
+    // Signed.
+def : NEONInstAlias<"vhsub${p}.s8 $Vdn, $Vm",
+                    (VHSUBsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.s16 $Vdn, $Vm",
+                    (VHSUBsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.s32 $Vdn, $Vm",
+                    (VHSUBsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vhsub${p}.s8 $Vdn, $Vm",
+                    (VHSUBsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.s16 $Vdn, $Vm",
+                    (VHSUBsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.s32 $Vdn, $Vm",
+                    (VHSUBsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
+    // Unsigned.
+def : NEONInstAlias<"vhsub${p}.u8 $Vdn, $Vm",
+                    (VHSUBuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.u16 $Vdn, $Vm",
+                    (VHSUBuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.u32 $Vdn, $Vm",
+                    (VHSUBuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vhsub${p}.u8 $Vdn, $Vm",
+                    (VHSUBuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.u16 $Vdn, $Vm",
+                    (VHSUBuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhsub${p}.u32 $Vdn, $Vm",
+                    (VHSUBuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
+
+// Two-operand variants for VHADD.
+    // Signed.
+def : NEONInstAlias<"vhadd${p}.s8 $Vdn, $Vm",
+                    (VHADDsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.s16 $Vdn, $Vm",
+                    (VHADDsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.s32 $Vdn, $Vm",
+                    (VHADDsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vhadd${p}.s8 $Vdn, $Vm",
+                    (VHADDsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.s16 $Vdn, $Vm",
+                    (VHADDsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.s32 $Vdn, $Vm",
+                    (VHADDsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
+    // Unsigned.
+def : NEONInstAlias<"vhadd${p}.u8 $Vdn, $Vm",
+                    (VHADDuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.u16 $Vdn, $Vm",
+                    (VHADDuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.u32 $Vdn, $Vm",
+                    (VHADDuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
+
+def : NEONInstAlias<"vhadd${p}.u8 $Vdn, $Vm",
+                    (VHADDuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.u16 $Vdn, $Vm",
+                    (VHADDuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+def : NEONInstAlias<"vhadd${p}.u32 $Vdn, $Vm",
+                    (VHADDuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
+
+// Two-operand variants for VRHADD.
+    // Signed.
+def : NEONInstAlias<"vrhadd${p}.s8 $Vdn, $Rm",
+                    (VRHADDsv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.s16 $Vdn, $Rm",
+                    (VRHADDsv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.s32 $Vdn, $Rm",
+                    (VRHADDsv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+
+def : NEONInstAlias<"vrhadd${p}.s8 $Vdn, $Rm",
+                    (VRHADDsv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.s16 $Vdn, $Rm",
+                    (VRHADDsv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.s32 $Vdn, $Rm",
+                    (VRHADDsv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+
+    // Unsigned.
+def : NEONInstAlias<"vrhadd${p}.u8 $Vdn, $Rm",
+                    (VRHADDuv8i8 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.u16 $Vdn, $Rm",
+                    (VRHADDuv4i16 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.u32 $Vdn, $Rm",
+                    (VRHADDuv2i32 DPR:$Vdn, DPR:$Vdn, DPR:$Rm, pred:$p)>;
+
+def : NEONInstAlias<"vrhadd${p}.u8 $Vdn, $Rm",
+                    (VRHADDuv16i8 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.u16 $Vdn, $Rm",
+                    (VRHADDuv8i16 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+def : NEONInstAlias<"vrhadd${p}.u32 $Vdn, $Rm",
+                    (VRHADDuv4i32 QPR:$Vdn, QPR:$Vdn, QPR:$Rm, pred:$p)>;
+
 // VSWP allows, but does not require, a type suffix.
 defm : NEONDTAnyInstAlias<"vswp${p}", "$Vd, $Vm",
                          (VSWPd DPR:$Vd, DPR:$Vm, pred:$p)>;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/ARMTa=
rgetMachine.cpp
--- a/head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -136,22 +136,22 @@
=20
 bool ARMPassConfig::addPreISel() {
   if (TM->getOptLevel() !=3D CodeGenOpt::None && EnableGlobalMerge)
-    PM.add(createGlobalMergePass(TM->getTargetLowering()));
+    PM->add(createGlobalMergePass(TM->getTargetLowering()));
=20
   return false;
 }
=20
 bool ARMPassConfig::addInstSelector() {
-  PM.add(createARMISelDag(getARMTargetMachine(), getOptLevel()));
+  PM->add(createARMISelDag(getARMTargetMachine(), getOptLevel()));
   return false;
 }
=20
 bool ARMPassConfig::addPreRegAlloc() {
   // FIXME: temporarily disabling load / store optimization pass for Thumb=
1.
   if (getOptLevel() !=3D CodeGenOpt::None && !getARMSubtarget().isThumb1On=
ly())
-    PM.add(createARMLoadStoreOptimizationPass(true));
+    PM->add(createARMLoadStoreOptimizationPass(true));
   if (getOptLevel() !=3D CodeGenOpt::None && getARMSubtarget().isCortexA9(=
))
-    PM.add(createMLxExpansionPass());
+    PM->add(createMLxExpansionPass());
   return true;
 }
=20
@@ -159,23 +159,23 @@
   // FIXME: temporarily disabling load / store optimization pass for Thumb=
1.
   if (getOptLevel() !=3D CodeGenOpt::None) {
     if (!getARMSubtarget().isThumb1Only()) {
-      PM.add(createARMLoadStoreOptimizationPass());
+      PM->add(createARMLoadStoreOptimizationPass());
       printAndVerify("After ARM load / store optimizer");
     }
     if (getARMSubtarget().hasNEON())
-      PM.add(createExecutionDependencyFixPass(&ARM::DPRRegClass));
+      PM->add(createExecutionDependencyFixPass(&ARM::DPRRegClass));
   }
=20
   // Expand some pseudo instructions into multiple instructions to allow
   // proper scheduling.
-  PM.add(createARMExpandPseudoPass());
+  PM->add(createARMExpandPseudoPass());
=20
   if (getOptLevel() !=3D CodeGenOpt::None) {
     if (!getARMSubtarget().isThumb1Only())
       addPass(IfConverterID);
   }
   if (getARMSubtarget().isThumb2())
-    PM.add(createThumb2ITBlockPass());
+    PM->add(createThumb2ITBlockPass());
=20
   return true;
 }
@@ -183,13 +183,13 @@
 bool ARMPassConfig::addPreEmitPass() {
   if (getARMSubtarget().isThumb2()) {
     if (!getARMSubtarget().prefers32BitThumb())
-      PM.add(createThumb2SizeReductionPass());
+      PM->add(createThumb2SizeReductionPass());
=20
     // Constant island pass work on unbundled instructions.
     addPass(UnpackMachineBundlesID);
   }
=20
-  PM.add(createARMConstantIslandPass());
+  PM->add(createARMConstantIslandPass());
=20
   return true;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/AsmPa=
rser/ARMAsmParser.cpp
--- a/head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -82,8 +82,14 @@
   MCAsmParser &getParser() const { return Parser; }
   MCAsmLexer &getLexer() const { return Parser.getLexer(); }
=20
-  void Warning(SMLoc L, const Twine &Msg) { Parser.Warning(L, Msg); }
-  bool Error(SMLoc L, const Twine &Msg) { return Parser.Error(L, Msg); }
+  bool Warning(SMLoc L, const Twine &Msg,
+               ArrayRef<SMRange> Ranges =3D ArrayRef<SMRange>()) {
+    return Parser.Warning(L, Msg, Ranges);
+  }
+  bool Error(SMLoc L, const Twine &Msg,
+             ArrayRef<SMRange> Ranges =3D ArrayRef<SMRange>()) {
+    return Parser.Error(L, Msg, Ranges);
+  }
=20
   int tryParseRegister();
   bool tryParseRegisterWithWriteBack(SmallVectorImpl<MCParsedAsmOperand*> =
&);
@@ -478,6 +484,8 @@
   /// getEndLoc - Get the location of the last token of this operand.
   SMLoc getEndLoc() const { return EndLoc; }
=20
+  SMRange getLocRange() const { return SMRange(StartLoc, EndLoc); }
+
   ARMCC::CondCodes getCondCode() const {
     assert(Kind =3D=3D k_CondCode && "Invalid access!");
     return CC.Val;
@@ -4518,22 +4526,26 @@
   case AsmToken::Dollar:
   case AsmToken::Hash: {
     // #42 -> immediate.
-    // TODO: ":lower16:" and ":upper16:" modifiers after # before immediate
     S =3D Parser.getTok().getLoc();
     Parser.Lex();
-    bool isNegative =3D Parser.getTok().is(AsmToken::Minus);
-    const MCExpr *ImmVal;
-    if (getParser().ParseExpression(ImmVal))
-      return true;
-    const MCConstantExpr *CE =3D dyn_cast<MCConstantExpr>(ImmVal);
-    if (CE) {
-      int32_t Val =3D CE->getValue();
-      if (isNegative && Val =3D=3D 0)
-        ImmVal =3D MCConstantExpr::Create(INT32_MIN, getContext());
+
+    if (Parser.getTok().isNot(AsmToken::Colon)) {
+      bool isNegative =3D Parser.getTok().is(AsmToken::Minus);
+      const MCExpr *ImmVal;
+      if (getParser().ParseExpression(ImmVal))
+        return true;
+      const MCConstantExpr *CE =3D dyn_cast<MCConstantExpr>(ImmVal);
+      if (CE) {
+        int32_t Val =3D CE->getValue();
+        if (isNegative && Val =3D=3D 0)
+          ImmVal =3D MCConstantExpr::Create(INT32_MIN, getContext());
+      }
+      E =3D SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - =
1);
+      Operands.push_back(ARMOperand::CreateImm(ImmVal, S, E));
+      return false;
     }
-    E =3D SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
-    Operands.push_back(ARMOperand::CreateImm(ImmVal, S, E));
-    return false;
+    // w/ a ':' after the '#', it's just like a plain ':'.
+    // FALLTHROUGH
   }
   case AsmToken::Colon: {
     // ":lower16:" and ":upper16:" expression prefixes
@@ -7321,7 +7333,8 @@
     return Error(ErrorLoc, "invalid operand for instruction");
   }
   case Match_MnemonicFail:
-    return Error(IDLoc, "invalid instruction");
+    return Error(IDLoc, "invalid instruction",
+                 ((ARMOperand*)Operands[0])->getLocRange());
   case Match_ConversionFail:
     // The converter function will have already emited a diagnostic.
     return true;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/Disas=
sembler/ARMDisassembler.cpp
--- a/head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -326,6 +326,8 @@
=20
 static DecodeStatus DecodeLDR(MCInst &Inst, unsigned Val,
                                 uint64_t Address, const void *Decoder);
+static DecodeStatus DecodeMRRC2(llvm::MCInst &Inst, unsigned Val,
+                                uint64_t Address, const void *Decoder);
 #include "ARMGenDisassemblerTables.inc"
 #include "ARMGenInstrInfo.inc"
 #include "ARMGenEDInfo.inc"
@@ -2690,7 +2692,6 @@
   unsigned Rm =3D fieldFromInstruction32(Insn, 0, 4);
   unsigned align =3D fieldFromInstruction32(Insn, 4, 1);
   unsigned size =3D 1 << fieldFromInstruction32(Insn, 6, 2);
-  unsigned pred =3D fieldFromInstruction32(Insn, 22, 4);
   align *=3D 2*size;
=20
   switch (Inst.getOpcode()) {
@@ -2721,16 +2722,11 @@
     return MCDisassembler::Fail;
   Inst.addOperand(MCOperand::CreateImm(align));
=20
-  if (Rm =3D=3D 0xD)
-    Inst.addOperand(MCOperand::CreateReg(0));
-  else if (Rm !=3D 0xF) {
+  if (Rm !=3D 0xD && Rm !=3D 0xF) {
     if (!Check(S, DecodeGPRRegisterClass(Inst, Rm, Address, Decoder)))
       return MCDisassembler::Fail;
   }
=20
-  if (!Check(S, DecodePredicateOperand(Inst, pred, Address, Decoder)))
-    return MCDisassembler::Fail;
-
   return S;
 }
=20
@@ -4314,6 +4310,10 @@
     return DecodeCPSInstruction(Inst, Insn, Address, Decoder);
=20
   DecodeStatus S =3D MCDisassembler::Success;
+
+  if (Rt =3D=3D Rn || Rn =3D=3D Rt2)
+    S =3D MCDisassembler::SoftFail;
+
   if (!Check(S, DecodeGPRnopcRegisterClass(Inst, Rt, Address, Decoder)))
     return MCDisassembler::Fail;
   if (!Check(S, DecodeGPRnopcRegisterClass(Inst, Rt2, Address, Decoder)))
@@ -4409,3 +4409,31 @@
   return S;
 }
=20
+static DecodeStatus DecodeMRRC2(llvm::MCInst &Inst, unsigned Val,
+                                uint64_t Address, const void *Decoder) {
+
+  DecodeStatus S =3D MCDisassembler::Success;
+
+  unsigned CRm =3D fieldFromInstruction32(Val, 0, 4);
+  unsigned opc1 =3D fieldFromInstruction32(Val, 4, 4);
+  unsigned cop =3D fieldFromInstruction32(Val, 8, 4);
+  unsigned Rt =3D fieldFromInstruction32(Val, 12, 4);
+  unsigned Rt2 =3D fieldFromInstruction32(Val, 16, 4);
+
+  if ((cop & ~0x1) =3D=3D 0xa)
+    return MCDisassembler::Fail;
+
+  if (Rt =3D=3D Rt2)
+    S =3D MCDisassembler::SoftFail;
+
+  Inst.addOperand(MCOperand::CreateImm(cop));
+  Inst.addOperand(MCOperand::CreateImm(opc1));
+  if (!Check(S, DecodeGPRnopcRegisterClass(Inst, Rt, Address, Decoder)))
+    return MCDisassembler::Fail;
+  if (!Check(S, DecodeGPRnopcRegisterClass(Inst, Rt2, Address, Decoder)))
+    return MCDisassembler::Fail;
+  Inst.addOperand(MCOperand::CreateImm(CRm));
+
+  return S;
+}
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/ARM/InstP=
rinter/ARMInstPrinter.cpp
--- a/head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp	Wed J=
ul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp	Wed J=
ul 25 16:21:35 2012 +0300
@@ -209,12 +209,12 @@
   } else {
     assert(Op.isExpr() && "unknown operand kind in printOperand");
     // If a symbolic branch target was added as a constant expression then=
 print
-    // that address in hex.
+    // that address in hex. And only print 32 unsigned bits for the addres=
s.
     const MCConstantExpr *BranchTarget =3D dyn_cast<MCConstantExpr>(Op.get=
Expr());
     int64_t Address;
     if (BranchTarget && BranchTarget->EvaluateAsAbsolute(Address)) {
       O << "0x";
-      O.write_hex(Address);
+      O.write_hex((uint32_t)Address);
     }
     else {
       // Otherwise, just print the expression.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/CellSPU/S=
PUCallingConv.td
--- a/head/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td	Wed Jul 25 16:=
21:35 2012 +0300
@@ -11,10 +11,6 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-/// CCIfSubtarget - Match if the current subtarget has a feature F.
-class CCIfSubtarget<string F, CCAction A>
- : CCIf<!strconcat("State.getTarget().getSubtarget<PPCSubtarget>().", F), =
A>;
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Return Value Calling Convention
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/CellSPU/S=
PUTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -72,7 +72,7 @@
=20
 bool SPUPassConfig::addInstSelector() {
   // Install an instruction selector.
-  PM.add(createSPUISelDag(getSPUTargetMachine()));
+  PM->add(createSPUISelDag(getSPUTargetMachine()));
   return false;
 }
=20
@@ -85,9 +85,9 @@
     (BuilderFunc)(intptr_t)sys::DynamicLibrary::SearchForAddressOfSymbol(
           "createTCESchedulerPass");
   if (schedulerCreator !=3D NULL)
-      PM.add(schedulerCreator("cellspu"));
+      PM->add(schedulerCreator("cellspu"));
=20
   //align instructions with nops/lnops for dual issue
-  PM.add(createSPUNopFillerPass(getSPUTargetMachine()));
+  PM->add(createSPUNopFillerPass(getSPUTargetMachine()));
   return true;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagon.h
--- a/head/contrib/llvm/lib/Target/Hexagon/Hexagon.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/Hexagon.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -40,7 +40,6 @@
   FunctionPass *createHexagonHardwareLoops();
   FunctionPass *createHexagonPeephole();
   FunctionPass *createHexagonFixupHwLoops();
-  FunctionPass *createHexagonPacketizer();
=20
 /* TODO: object output.
   MCCodeEmitter *createHexagonMCCodeEmitter(const Target &,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonAsmPrinter.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp	Wed Jul 25=
 16:21:35 2012 +0300
@@ -13,11 +13,11 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
+
 #define DEBUG_TYPE "asm-printer"
 #include "Hexagon.h"
 #include "HexagonAsmPrinter.h"
 #include "HexagonMachineFunctionInfo.h"
-#include "HexagonMCInst.h"
 #include "HexagonTargetMachine.h"
 #include "HexagonSubtarget.h"
 #include "InstPrinter/HexagonInstPrinter.h"
@@ -54,7 +54,6 @@
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringExtras.h"
-#include <map>
=20
 using namespace llvm;
=20
@@ -78,7 +77,8 @@
   const MachineOperand &MO =3D MI->getOperand(OpNo);
=20
   switch (MO.getType()) {
-  default: llvm_unreachable("<unknown operand type>");
+  default:
+    assert(0 && "<unknown operand type>");
   case MachineOperand::MO_Register:
     O << HexagonInstPrinter::getRegisterName(MO.getReg());
     return;
@@ -196,45 +196,10 @@
 /// the current output stream.
 ///
 void HexagonAsmPrinter::EmitInstruction(const MachineInstr *MI) {
-  if (MI->isBundle()) {
-    std::vector<const MachineInstr*> BundleMIs;
+  MCInst MCI;
=20
-    const MachineBasicBlock *MBB =3D MI->getParent();
-    MachineBasicBlock::const_instr_iterator MII =3D MI;
-    ++MII;
-    unsigned int IgnoreCount =3D 0;
-    while (MII !=3D MBB->end() && MII->isInsideBundle()) {
-      const MachineInstr *MInst =3D MII;
-      if (MInst->getOpcode() =3D=3D TargetOpcode::DBG_VALUE ||
-          MInst->getOpcode() =3D=3D TargetOpcode::IMPLICIT_DEF) {
-          IgnoreCount++;
-          ++MII;
-          continue;
-      }
-      //BundleMIs.push_back(&*MII);
-      BundleMIs.push_back(MInst);
-      ++MII;
-    }
-    unsigned Size =3D BundleMIs.size();
-    assert((Size+IgnoreCount) =3D=3D MI->getBundleSize() && "Corrupt Bundl=
e!");
-    for (unsigned Index =3D 0; Index < Size; Index++) {
-      HexagonMCInst MCI;
-      MCI.setStartPacket(Index =3D=3D 0);
-      MCI.setEndPacket(Index =3D=3D (Size-1));
-
-      HexagonLowerToMC(BundleMIs[Index], MCI, *this);
-      OutStreamer.EmitInstruction(MCI);
-    }
-  }
-  else {
-    HexagonMCInst MCI;
-    if (MI->getOpcode() =3D=3D Hexagon::ENDLOOP0) {
-      MCI.setStartPacket(true);
-      MCI.setEndPacket(true);
-    }
-    HexagonLowerToMC(MI, MCI, *this);
-    OutStreamer.EmitInstruction(MCI);
-  }
+  HexagonLowerToMC(MI, MCI, *this);
+  OutStreamer.EmitInstruction(MCI);
=20
   return;
 }
@@ -277,17 +242,17 @@
                                        raw_ostream &O) {
   const MachineOperand &MO =3D MI->getOperand(OpNo);
   assert( (MO.getType() =3D=3D MachineOperand::MO_JumpTableIndex) &&
-    "Expecting jump table index");
+	  "Expecting jump table index");
=20
   // Hexagon_TODO: Do we need name mangling?
   O << *GetJTISymbol(MO.getIndex());
 }
=20
 void HexagonAsmPrinter::printConstantPool(const MachineInstr *MI, int OpNo,
-                                       raw_ostream &O) {
+                                          raw_ostream &O) {
   const MachineOperand &MO =3D MI->getOperand(OpNo);
   assert( (MO.getType() =3D=3D MachineOperand::MO_ConstantPoolIndex) &&
-   "Expecting constant pool index");
+          "Expecting constant pool index");
=20
   // Hexagon_TODO: Do we need name mangling?
   O << *GetCPISymbol(MO.getIndex());
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonISelLowering.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp	Wed Jul =
25 16:21:35 2012 +0300
@@ -32,9 +32,11 @@
 #include "llvm/CodeGen/MachineRegisterInfo.h"
 #include "llvm/CodeGen/SelectionDAGISel.h"
 #include "llvm/CodeGen/ValueTypes.h"
+#include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/raw_ostream.h"
+
 using namespace llvm;
=20
 const unsigned Hexagon_MAX_RET_SIZE =3D 64;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrFormats.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -13,26 +13,13 @@
 //                    *** Must match HexagonBaseInfo.h ***
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-class Type<bits<5> t> {
-  bits<5> Value =3D t;
-}
-def TypePSEUDO : Type<0>;
-def TypeALU32  : Type<1>;
-def TypeCR     : Type<2>;
-def TypeJR     : Type<3>;
-def TypeJ      : Type<4>;
-def TypeLD     : Type<5>;
-def TypeST     : Type<6>;
-def TypeSYSTEM : Type<7>;
-def TypeXTYPE  : Type<8>;
-def TypeMARKER : Type<31>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 //                         Intruction Class Declaration +
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 class InstHexagon<dag outs, dag ins, string asmstr, list<dag> pattern,
-                  string cstr, InstrItinClass itin, Type type> : Instructi=
on {
+                  string cstr, InstrItinClass itin> : Instruction {
   field bits<32> Inst;
=20
   let Namespace =3D "Hexagon";
@@ -44,15 +31,11 @@
   let Constraints =3D cstr;
   let Itinerary   =3D itin;
=20
-  // *** Must match HexagonBaseInfo.h ***
-  Type HexagonType =3D type;
-  let TSFlags{4-0} =3D HexagonType.Value;
-  bits<1> isHexagonSolo =3D 0;
-  let TSFlags{5} =3D isHexagonSolo;
+  // *** The code below must match HexagonBaseInfo.h ***
=20
   // Predicated instructions.
   bits<1> isPredicated =3D 0;
-  let TSFlags{6} =3D isPredicated;
+  let TSFlags{1} =3D isPredicated;
=20
   // *** The code above must match HexagonBaseInfo.h ***
 }
@@ -64,40 +47,28 @@
 // LD Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class LDInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", LD, TypeLD> {
+  : InstHexagon<outs, ins, asmstr, pattern, "", LD> {
   bits<5> rd;
   bits<5> rs;
   bits<13> imm13;
-  let mayLoad =3D 1;
 }
=20
 // LD Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class LDInstPost<dag outs, dag ins, string asmstr, list<dag> pattern,
                  string cstr>
-  : InstHexagon<outs, ins, asmstr, pattern, cstr, LD, TypeLD> {
+  : InstHexagon<outs, ins, asmstr, pattern, cstr,  LD> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
   bits<13> imm13;
-  let mayLoad =3D 1;
 }
=20
 // ST Instruction Class in V2/V3 can take SLOT0 only.
 // ST Instruction Class in V4    can take SLOT0 & SLOT1.
 // Definition of the instruction class CHANGED from V2/V3 to V4.
 class STInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", ST, TypeST> {
-  bits<5> rd;
-  bits<5> rs;
-  bits<13> imm13;
-  let mayStore =3D 1;
-}
-
-// SYSTEM Instruction Class in V4 can take SLOT0 only
-// In V2/V3 we used ST for this but in v4 ST can take SLOT0 or SLOT1.
-class SYSInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", SYS, TypeSYSTEM> {
+  : InstHexagon<outs, ins, asmstr, pattern, "",  ST> {
   bits<5> rd;
   bits<5> rs;
   bits<13> imm13;
@@ -108,18 +79,17 @@
 // Definition of the instruction class CHANGED from V2/V3 to V4.
 class STInstPost<dag outs, dag ins, string asmstr, list<dag> pattern,
                  string cstr>
-  : InstHexagon<outs, ins, asmstr, pattern, cstr, ST, TypeST> {
+  : InstHexagon<outs, ins, asmstr, pattern, cstr,  ST> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
   bits<13> imm13;
-  let mayStore =3D 1;
 }
=20
 // ALU32 Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class ALU32Type<dag outs, dag ins, string asmstr, list<dag> pattern>
-   : InstHexagon<outs, ins, asmstr, pattern, "", ALU32, TypeALU32> {
+   : InstHexagon<outs, ins, asmstr, pattern, "",  ALU32> {
   bits<5>  rd;
   bits<5>  rs;
   bits<5>  rt;
@@ -132,17 +102,7 @@
 // Definition of the instruction class NOT CHANGED.
 // Name of the Instruction Class changed from ALU64 to XTYPE from V2/V3 to=
 V4.
 class ALU64Type<dag outs, dag ins, string asmstr, list<dag> pattern>
-   : InstHexagon<outs, ins, asmstr, pattern, "", ALU64, TypeXTYPE> {
-  bits<5>  rd;
-  bits<5>  rs;
-  bits<5>  rt;
-  bits<16> imm16;
-  bits<16> imm16_2;
-}
-
-class ALU64_acc<dag outs, dag ins, string asmstr, list<dag> pattern,
-   string cstr>
-   : InstHexagon<outs, ins, asmstr, pattern, cstr, ALU64, TypeXTYPE> {
+   : InstHexagon<outs, ins, asmstr, pattern, "",  ALU64> {
   bits<5>  rd;
   bits<5>  rs;
   bits<5>  rt;
@@ -155,7 +115,7 @@
 // Definition of the instruction class NOT CHANGED.
 // Name of the Instruction Class changed from M to XTYPE from V2/V3 to V4.
 class MInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", M, TypeXTYPE> {
+  : InstHexagon<outs, ins, asmstr, pattern, "",  M> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
@@ -166,8 +126,8 @@
 // Definition of the instruction class NOT CHANGED.
 // Name of the Instruction Class changed from M to XTYPE from V2/V3 to V4.
 class MInst_acc<dag outs, dag ins, string asmstr, list<dag> pattern,
-		string cstr>
-    : InstHexagon<outs, ins, asmstr, pattern, cstr, M, TypeXTYPE> {
+                string cstr>
+    : InstHexagon<outs, ins, asmstr, pattern, cstr,  M> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
@@ -178,7 +138,9 @@
 // Definition of the instruction class NOT CHANGED.
 // Name of the Instruction Class changed from S to XTYPE from V2/V3 to V4.
 class SInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", S, TypeXTYPE> {
+//: InstHexagon<outs, ins, asmstr, pattern, cstr, !if(V4T, XTYPE_V4, M)> {
+  : InstHexagon<outs, ins, asmstr, pattern, "",  S> {
+//  : InstHexagon<outs, ins, asmstr, pattern, "", S> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
@@ -189,8 +151,8 @@
 // Definition of the instruction class NOT CHANGED.
 // Name of the Instruction Class changed from S to XTYPE from V2/V3 to V4.
 class SInst_acc<dag outs, dag ins, string asmstr, list<dag> pattern,
-		string cstr>
-  : InstHexagon<outs, ins, asmstr, pattern, cstr, S, TypeXTYPE> {
+                string cstr>
+  : InstHexagon<outs, ins, asmstr, pattern, cstr,  S> {
 //  : InstHexagon<outs, ins, asmstr, pattern, cstr,  S> {
 //  : InstHexagon<outs, ins, asmstr, pattern, cstr, !if(V4T, XTYPE_V4, S)>=
 {
   bits<5> rd;
@@ -201,14 +163,14 @@
 // J Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class JType<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", J, TypeJ> {
+  : InstHexagon<outs, ins, asmstr, pattern, "",  J> {
   bits<16> imm16;
 }
=20
 // JR Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class JRType<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", JR, TypeJR> {
+  : InstHexagon<outs, ins, asmstr, pattern, "", JR> {
   bits<5>  rs;
   bits<5>  pu; // Predicate register
 }
@@ -216,22 +178,15 @@
 // CR Instruction Class in V2/V3/V4.
 // Definition of the instruction class NOT CHANGED.
 class CRInst<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", CR, TypeCR> {
+  : InstHexagon<outs, ins, asmstr, pattern, "", CR> {
   bits<5> rs;
   bits<10> imm10;
 }
=20
-class Marker<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", MARKER, TypeMARKER> {
-  let isCodeGenOnly =3D 1;
-  let isPseudo =3D 1;
-}
=20
 class Pseudo<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", PSEUDO, TypePSEUDO> {
-  let isCodeGenOnly =3D 1;
-  let isPseudo =3D 1;
-}
+ : InstHexagon<outs, ins, asmstr, pattern, "", PSEUDO>;
+
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 //                         Intruction Classes Definitions -
@@ -267,11 +222,6 @@
    : ALU64Type<outs, ins, asmstr, pattern> {
 }
=20
-class ALU64_ri<dag outs, dag ins, string asmstr, list<dag> pattern>
-   : ALU64Type<outs, ins, asmstr, pattern> {
-  let rt{0-4} =3D 0;
-}
-
 // J Type Instructions.
 class JInst<dag outs, dag ins, string asmstr, list<dag> pattern>
   : JType<outs, ins, asmstr, pattern> {
@@ -287,14 +237,12 @@
 class STInstPI<dag outs, dag ins, string asmstr, list<dag> pattern, string=
 cstr>
   : STInstPost<outs, ins, asmstr, pattern, cstr> {
   let rt{0-4} =3D 0;
-  let mayStore =3D 1;
 }
=20
 // Post increment LD Instruction.
 class LDInstPI<dag outs, dag ins, string asmstr, list<dag> pattern, string=
 cstr>
   : LDInstPost<outs, ins, asmstr, pattern, cstr> {
   let rt{0-4} =3D 0;
-  let mayLoad =3D 1;
 }
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrFormatsV4.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.td	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.td	Wed Jul=
 25 16:21:35 2012 +0300
@@ -11,25 +11,11 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-//------------------------------------------------------------------------=
----//
-//                         Hexagon Intruction Flags +
-//
-//                        *** Must match BaseInfo.h ***
-//------------------------------------------------------------------------=
----//
-
-def TypeMEMOP  : Type<9>;
-def TypeNV     : Type<10>;
-def TypePREFIX : Type<30>;
-
-//------------------------------------------------------------------------=
----//
-//                         Intruction Classes Definitions +
-//------------------------------------------------------------------------=
----//
-
 //
 // NV type instructions.
 //
 class NVInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", NV_V4, TypeNV> {
+  : InstHexagon<outs, ins, asmstr, pattern, "", NV_V4> {
   bits<5> rd;
   bits<5> rs;
   bits<13> imm13;
@@ -38,7 +24,7 @@
 // Definition of Post increment new value store.
 class NVInstPost_V4<dag outs, dag ins, string asmstr, list<dag> pattern,
                     string cstr>
-  : InstHexagon<outs, ins, asmstr, pattern, cstr, NV_V4, TypeNV> {
+  : InstHexagon<outs, ins, asmstr, pattern, cstr, NV_V4> {
   bits<5> rd;
   bits<5> rs;
   bits<5> rt;
@@ -53,15 +39,8 @@
 }
=20
 class MEMInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", MEM_V4, TypeMEMOP> {
+  : InstHexagon<outs, ins, asmstr, pattern, "",  MEM_V4> {
   bits<5> rd;
   bits<5> rs;
   bits<6> imm6;
 }
-
-class Immext<dag outs, dag ins, string asmstr, list<dag> pattern>
-  : InstHexagon<outs, ins, asmstr, pattern, "", PREFIX, TypePREFIX> {
-  let isCodeGenOnly =3D 1;
-
-  bits<26> imm26;
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrInfo.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -11,10 +11,10 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
+#include "Hexagon.h"
 #include "HexagonInstrInfo.h"
 #include "HexagonRegisterInfo.h"
 #include "HexagonSubtarget.h"
-#include "Hexagon.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/CodeGen/DFAPacketizer.h"
@@ -466,865 +466,7 @@
   return NewReg;
 }
=20
-bool HexagonInstrInfo::isExtendable(const MachineInstr *MI) const {
-  switch(MI->getOpcode()) {
-    // JMP_EQri
-    case Hexagon::JMP_EQriPt_nv_V4:
-    case Hexagon::JMP_EQriPnt_nv_V4:
-    case Hexagon::JMP_EQriNotPt_nv_V4:
-    case Hexagon::JMP_EQriNotPnt_nv_V4:
=20
-    // JMP_EQri - with -1
-    case Hexagon::JMP_EQriPtneg_nv_V4:
-    case Hexagon::JMP_EQriPntneg_nv_V4:
-    case Hexagon::JMP_EQriNotPtneg_nv_V4:
-    case Hexagon::JMP_EQriNotPntneg_nv_V4:
-
-    // JMP_EQrr
-    case Hexagon::JMP_EQrrPt_nv_V4:
-    case Hexagon::JMP_EQrrPnt_nv_V4:
-    case Hexagon::JMP_EQrrNotPt_nv_V4:
-    case Hexagon::JMP_EQrrNotPnt_nv_V4:
-
-    // JMP_GTri
-    case Hexagon::JMP_GTriPt_nv_V4:
-    case Hexagon::JMP_GTriPnt_nv_V4:
-    case Hexagon::JMP_GTriNotPt_nv_V4:
-    case Hexagon::JMP_GTriNotPnt_nv_V4:
-
-    // JMP_GTri - with -1
-    case Hexagon::JMP_GTriPtneg_nv_V4:
-    case Hexagon::JMP_GTriPntneg_nv_V4:
-    case Hexagon::JMP_GTriNotPtneg_nv_V4:
-    case Hexagon::JMP_GTriNotPntneg_nv_V4:
-
-    // JMP_GTrr
-    case Hexagon::JMP_GTrrPt_nv_V4:
-    case Hexagon::JMP_GTrrPnt_nv_V4:
-    case Hexagon::JMP_GTrrNotPt_nv_V4:
-    case Hexagon::JMP_GTrrNotPnt_nv_V4:
-
-    // JMP_GTrrdn
-    case Hexagon::JMP_GTrrdnPt_nv_V4:
-    case Hexagon::JMP_GTrrdnPnt_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPt_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPnt_nv_V4:
-
-    // JMP_GTUri
-    case Hexagon::JMP_GTUriPt_nv_V4:
-    case Hexagon::JMP_GTUriPnt_nv_V4:
-    case Hexagon::JMP_GTUriNotPt_nv_V4:
-    case Hexagon::JMP_GTUriNotPnt_nv_V4:
-
-    // JMP_GTUrr
-    case Hexagon::JMP_GTUrrPt_nv_V4:
-    case Hexagon::JMP_GTUrrPnt_nv_V4:
-    case Hexagon::JMP_GTUrrNotPt_nv_V4:
-    case Hexagon::JMP_GTUrrNotPnt_nv_V4:
-
-    // JMP_GTUrrdn
-    case Hexagon::JMP_GTUrrdnPt_nv_V4:
-    case Hexagon::JMP_GTUrrdnPnt_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPt_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPnt_nv_V4:
-      return true;
-
-    // TFR_FI
-    case Hexagon::TFR_FI:
-      return true;
-
-
-    default:
-      return false;
-  }
-  return  false;
-}
-
-bool HexagonInstrInfo::isExtended(const MachineInstr *MI) const {
-  switch(MI->getOpcode()) {
-    // JMP_EQri
-    case Hexagon::JMP_EQriPt_ie_nv_V4:
-    case Hexagon::JMP_EQriPnt_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPt_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPnt_ie_nv_V4:
-
-    // JMP_EQri - with -1
-    case Hexagon::JMP_EQriPtneg_ie_nv_V4:
-    case Hexagon::JMP_EQriPntneg_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPtneg_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPntneg_ie_nv_V4:
-
-    // JMP_EQrr
-    case Hexagon::JMP_EQrrPt_ie_nv_V4:
-    case Hexagon::JMP_EQrrPnt_ie_nv_V4:
-    case Hexagon::JMP_EQrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_EQrrNotPnt_ie_nv_V4:
-
-    // JMP_GTri
-    case Hexagon::JMP_GTriPt_ie_nv_V4:
-    case Hexagon::JMP_GTriPnt_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPnt_ie_nv_V4:
-
-    // JMP_GTri - with -1
-    case Hexagon::JMP_GTriPtneg_ie_nv_V4:
-    case Hexagon::JMP_GTriPntneg_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPtneg_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPntneg_ie_nv_V4:
-
-    // JMP_GTrr
-    case Hexagon::JMP_GTrrPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrPnt_ie_nv_V4:
-    case Hexagon::JMP_GTrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrNotPnt_ie_nv_V4:
-
-    // JMP_GTrrdn
-    case Hexagon::JMP_GTrrdnPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnPnt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPnt_ie_nv_V4:
-
-    // JMP_GTUri
-    case Hexagon::JMP_GTUriPt_ie_nv_V4:
-    case Hexagon::JMP_GTUriPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUriNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUriNotPnt_ie_nv_V4:
-
-    // JMP_GTUrr
-    case Hexagon::JMP_GTUrrPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrNotPnt_ie_nv_V4:
-
-    // JMP_GTUrrdn
-    case Hexagon::JMP_GTUrrdnPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPnt_ie_nv_V4:
-
-    // V4 absolute set addressing.
-    case Hexagon::LDrid_abs_setimm_V4:
-    case Hexagon::LDriw_abs_setimm_V4:
-    case Hexagon::LDrih_abs_setimm_V4:
-    case Hexagon::LDrib_abs_setimm_V4:
-    case Hexagon::LDriuh_abs_setimm_V4:
-    case Hexagon::LDriub_abs_setimm_V4:
-
-    case Hexagon::STrid_abs_setimm_V4:
-    case Hexagon::STrib_abs_setimm_V4:
-    case Hexagon::STrih_abs_setimm_V4:
-    case Hexagon::STriw_abs_setimm_V4:
-
-    // V4 global address load.
-    case Hexagon::LDrid_GP_cPt_V4 :
-    case Hexagon::LDrid_GP_cNotPt_V4 :
-    case Hexagon::LDrid_GP_cdnPt_V4 :
-    case Hexagon::LDrid_GP_cdnNotPt_V4 :
-    case Hexagon::LDrib_GP_cPt_V4 :
-    case Hexagon::LDrib_GP_cNotPt_V4 :
-    case Hexagon::LDrib_GP_cdnPt_V4 :
-    case Hexagon::LDrib_GP_cdnNotPt_V4 :
-    case Hexagon::LDriub_GP_cPt_V4 :
-    case Hexagon::LDriub_GP_cNotPt_V4 :
-    case Hexagon::LDriub_GP_cdnPt_V4 :
-    case Hexagon::LDriub_GP_cdnNotPt_V4 :
-    case Hexagon::LDrih_GP_cPt_V4 :
-    case Hexagon::LDrih_GP_cNotPt_V4 :
-    case Hexagon::LDrih_GP_cdnPt_V4 :
-    case Hexagon::LDrih_GP_cdnNotPt_V4 :
-    case Hexagon::LDriuh_GP_cPt_V4 :
-    case Hexagon::LDriuh_GP_cNotPt_V4 :
-    case Hexagon::LDriuh_GP_cdnPt_V4 :
-    case Hexagon::LDriuh_GP_cdnNotPt_V4 :
-    case Hexagon::LDriw_GP_cPt_V4 :
-    case Hexagon::LDriw_GP_cNotPt_V4 :
-    case Hexagon::LDriw_GP_cdnPt_V4 :
-    case Hexagon::LDriw_GP_cdnNotPt_V4 :
-    case Hexagon::LDd_GP_cPt_V4 :
-    case Hexagon::LDd_GP_cNotPt_V4 :
-    case Hexagon::LDd_GP_cdnPt_V4 :
-    case Hexagon::LDd_GP_cdnNotPt_V4 :
-    case Hexagon::LDb_GP_cPt_V4 :
-    case Hexagon::LDb_GP_cNotPt_V4 :
-    case Hexagon::LDb_GP_cdnPt_V4 :
-    case Hexagon::LDb_GP_cdnNotPt_V4 :
-    case Hexagon::LDub_GP_cPt_V4 :
-    case Hexagon::LDub_GP_cNotPt_V4 :
-    case Hexagon::LDub_GP_cdnPt_V4 :
-    case Hexagon::LDub_GP_cdnNotPt_V4 :
-    case Hexagon::LDh_GP_cPt_V4 :
-    case Hexagon::LDh_GP_cNotPt_V4 :
-    case Hexagon::LDh_GP_cdnPt_V4 :
-    case Hexagon::LDh_GP_cdnNotPt_V4 :
-    case Hexagon::LDuh_GP_cPt_V4 :
-    case Hexagon::LDuh_GP_cNotPt_V4 :
-    case Hexagon::LDuh_GP_cdnPt_V4 :
-    case Hexagon::LDuh_GP_cdnNotPt_V4 :
-    case Hexagon::LDw_GP_cPt_V4 :
-    case Hexagon::LDw_GP_cNotPt_V4 :
-    case Hexagon::LDw_GP_cdnPt_V4 :
-    case Hexagon::LDw_GP_cdnNotPt_V4 :
-
-    // V4 global address store.
-    case Hexagon::STrid_GP_cPt_V4 :
-    case Hexagon::STrid_GP_cNotPt_V4 :
-    case Hexagon::STrid_GP_cdnPt_V4 :
-    case Hexagon::STrid_GP_cdnNotPt_V4 :
-    case Hexagon::STrib_GP_cPt_V4 :
-    case Hexagon::STrib_GP_cNotPt_V4 :
-    case Hexagon::STrib_GP_cdnPt_V4 :
-    case Hexagon::STrib_GP_cdnNotPt_V4 :
-    case Hexagon::STrih_GP_cPt_V4 :
-    case Hexagon::STrih_GP_cNotPt_V4 :
-    case Hexagon::STrih_GP_cdnPt_V4 :
-    case Hexagon::STrih_GP_cdnNotPt_V4 :
-    case Hexagon::STriw_GP_cPt_V4 :
-    case Hexagon::STriw_GP_cNotPt_V4 :
-    case Hexagon::STriw_GP_cdnPt_V4 :
-    case Hexagon::STriw_GP_cdnNotPt_V4 :
-    case Hexagon::STd_GP_cPt_V4 :
-    case Hexagon::STd_GP_cNotPt_V4 :
-    case Hexagon::STd_GP_cdnPt_V4 :
-    case Hexagon::STd_GP_cdnNotPt_V4 :
-    case Hexagon::STb_GP_cPt_V4 :
-    case Hexagon::STb_GP_cNotPt_V4 :
-    case Hexagon::STb_GP_cdnPt_V4 :
-    case Hexagon::STb_GP_cdnNotPt_V4 :
-    case Hexagon::STh_GP_cPt_V4 :
-    case Hexagon::STh_GP_cNotPt_V4 :
-    case Hexagon::STh_GP_cdnPt_V4 :
-    case Hexagon::STh_GP_cdnNotPt_V4 :
-    case Hexagon::STw_GP_cPt_V4 :
-    case Hexagon::STw_GP_cNotPt_V4 :
-    case Hexagon::STw_GP_cdnPt_V4 :
-    case Hexagon::STw_GP_cdnNotPt_V4 :
-
-    // V4 predicated global address new value store.
-    case Hexagon::STrib_GP_cPt_nv_V4 :
-    case Hexagon::STrib_GP_cNotPt_nv_V4 :
-    case Hexagon::STrib_GP_cdnPt_nv_V4 :
-    case Hexagon::STrib_GP_cdnNotPt_nv_V4 :
-    case Hexagon::STrih_GP_cPt_nv_V4 :
-    case Hexagon::STrih_GP_cNotPt_nv_V4 :
-    case Hexagon::STrih_GP_cdnPt_nv_V4 :
-    case Hexagon::STrih_GP_cdnNotPt_nv_V4 :
-    case Hexagon::STriw_GP_cPt_nv_V4 :
-    case Hexagon::STriw_GP_cNotPt_nv_V4 :
-    case Hexagon::STriw_GP_cdnPt_nv_V4 :
-    case Hexagon::STriw_GP_cdnNotPt_nv_V4 :
-    case Hexagon::STb_GP_cPt_nv_V4 :
-    case Hexagon::STb_GP_cNotPt_nv_V4 :
-    case Hexagon::STb_GP_cdnPt_nv_V4 :
-    case Hexagon::STb_GP_cdnNotPt_nv_V4 :
-    case Hexagon::STh_GP_cPt_nv_V4 :
-    case Hexagon::STh_GP_cNotPt_nv_V4 :
-    case Hexagon::STh_GP_cdnPt_nv_V4 :
-    case Hexagon::STh_GP_cdnNotPt_nv_V4 :
-    case Hexagon::STw_GP_cPt_nv_V4 :
-    case Hexagon::STw_GP_cNotPt_nv_V4 :
-    case Hexagon::STw_GP_cdnPt_nv_V4 :
-    case Hexagon::STw_GP_cdnNotPt_nv_V4 :
-
-    // TFR_FI
-    case Hexagon::TFR_FI_immext_V4:
-      return true;
-
-    default:
-      return false;
-  }
-  return  false;
-}
-
-bool HexagonInstrInfo::isNewValueJump(const MachineInstr *MI) const {
-  switch (MI->getOpcode()) {
-    // JMP_EQri
-    case Hexagon::JMP_EQriPt_nv_V4:
-    case Hexagon::JMP_EQriPnt_nv_V4:
-    case Hexagon::JMP_EQriNotPt_nv_V4:
-    case Hexagon::JMP_EQriNotPnt_nv_V4:
-    case Hexagon::JMP_EQriPt_ie_nv_V4:
-    case Hexagon::JMP_EQriPnt_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPt_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPnt_ie_nv_V4:
-
-    // JMP_EQri - with -1
-    case Hexagon::JMP_EQriPtneg_nv_V4:
-    case Hexagon::JMP_EQriPntneg_nv_V4:
-    case Hexagon::JMP_EQriNotPtneg_nv_V4:
-    case Hexagon::JMP_EQriNotPntneg_nv_V4:
-    case Hexagon::JMP_EQriPtneg_ie_nv_V4:
-    case Hexagon::JMP_EQriPntneg_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPtneg_ie_nv_V4:
-    case Hexagon::JMP_EQriNotPntneg_ie_nv_V4:
-
-    // JMP_EQrr
-    case Hexagon::JMP_EQrrPt_nv_V4:
-    case Hexagon::JMP_EQrrPnt_nv_V4:
-    case Hexagon::JMP_EQrrNotPt_nv_V4:
-    case Hexagon::JMP_EQrrNotPnt_nv_V4:
-    case Hexagon::JMP_EQrrPt_ie_nv_V4:
-    case Hexagon::JMP_EQrrPnt_ie_nv_V4:
-    case Hexagon::JMP_EQrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_EQrrNotPnt_ie_nv_V4:
-
-    // JMP_GTri
-    case Hexagon::JMP_GTriPt_nv_V4:
-    case Hexagon::JMP_GTriPnt_nv_V4:
-    case Hexagon::JMP_GTriNotPt_nv_V4:
-    case Hexagon::JMP_GTriNotPnt_nv_V4:
-    case Hexagon::JMP_GTriPt_ie_nv_V4:
-    case Hexagon::JMP_GTriPnt_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPnt_ie_nv_V4:
-
-    // JMP_GTri - with -1
-    case Hexagon::JMP_GTriPtneg_nv_V4:
-    case Hexagon::JMP_GTriPntneg_nv_V4:
-    case Hexagon::JMP_GTriNotPtneg_nv_V4:
-    case Hexagon::JMP_GTriNotPntneg_nv_V4:
-    case Hexagon::JMP_GTriPtneg_ie_nv_V4:
-    case Hexagon::JMP_GTriPntneg_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPtneg_ie_nv_V4:
-    case Hexagon::JMP_GTriNotPntneg_ie_nv_V4:
-
-    // JMP_GTrr
-    case Hexagon::JMP_GTrrPt_nv_V4:
-    case Hexagon::JMP_GTrrPnt_nv_V4:
-    case Hexagon::JMP_GTrrNotPt_nv_V4:
-    case Hexagon::JMP_GTrrNotPnt_nv_V4:
-    case Hexagon::JMP_GTrrPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrPnt_ie_nv_V4:
-    case Hexagon::JMP_GTrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrNotPnt_ie_nv_V4:
-
-    // JMP_GTrrdn
-    case Hexagon::JMP_GTrrdnPt_nv_V4:
-    case Hexagon::JMP_GTrrdnPnt_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPt_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPnt_nv_V4:
-    case Hexagon::JMP_GTrrdnPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnPnt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTrrdnNotPnt_ie_nv_V4:
-
-    // JMP_GTUri
-    case Hexagon::JMP_GTUriPt_nv_V4:
-    case Hexagon::JMP_GTUriPnt_nv_V4:
-    case Hexagon::JMP_GTUriNotPt_nv_V4:
-    case Hexagon::JMP_GTUriNotPnt_nv_V4:
-    case Hexagon::JMP_GTUriPt_ie_nv_V4:
-    case Hexagon::JMP_GTUriPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUriNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUriNotPnt_ie_nv_V4:
-
-    // JMP_GTUrr
-    case Hexagon::JMP_GTUrrPt_nv_V4:
-    case Hexagon::JMP_GTUrrPnt_nv_V4:
-    case Hexagon::JMP_GTUrrNotPt_nv_V4:
-    case Hexagon::JMP_GTUrrNotPnt_nv_V4:
-    case Hexagon::JMP_GTUrrPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrNotPnt_ie_nv_V4:
-
-    // JMP_GTUrrdn
-    case Hexagon::JMP_GTUrrdnPt_nv_V4:
-    case Hexagon::JMP_GTUrrdnPnt_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPt_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPnt_nv_V4:
-    case Hexagon::JMP_GTUrrdnPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnPnt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPt_ie_nv_V4:
-    case Hexagon::JMP_GTUrrdnNotPnt_ie_nv_V4:
-      return true;
-
-    default:
-      return false;
-  }
-  return false;
-}
-
-unsigned HexagonInstrInfo::getImmExtForm(const MachineInstr* MI) const {
-  switch(MI->getOpcode()) {
-  default: llvm_unreachable("Unknown type of instruction");
-
-  // JMP_EQri
-  case Hexagon::JMP_EQriPt_nv_V4:
-    return Hexagon::JMP_EQriPt_ie_nv_V4;
-  case Hexagon::JMP_EQriNotPt_nv_V4:
-    return Hexagon::JMP_EQriNotPt_ie_nv_V4;
-  case Hexagon::JMP_EQriPnt_nv_V4:
-    return Hexagon::JMP_EQriPnt_ie_nv_V4;
-  case Hexagon::JMP_EQriNotPnt_nv_V4:
-    return Hexagon::JMP_EQriNotPnt_ie_nv_V4;
-
-  // JMP_EQri -- with -1
-  case Hexagon::JMP_EQriPtneg_nv_V4:
-    return Hexagon::JMP_EQriPtneg_ie_nv_V4;
-  case Hexagon::JMP_EQriNotPtneg_nv_V4:
-    return Hexagon::JMP_EQriNotPtneg_ie_nv_V4;
-  case Hexagon::JMP_EQriPntneg_nv_V4:
-    return Hexagon::JMP_EQriPntneg_ie_nv_V4;
-  case Hexagon::JMP_EQriNotPntneg_nv_V4:
-    return Hexagon::JMP_EQriNotPntneg_ie_nv_V4;
-
-  // JMP_EQrr
-  case Hexagon::JMP_EQrrPt_nv_V4:
-    return Hexagon::JMP_EQrrPt_ie_nv_V4;
-  case Hexagon::JMP_EQrrNotPt_nv_V4:
-    return Hexagon::JMP_EQrrNotPt_ie_nv_V4;
-  case Hexagon::JMP_EQrrPnt_nv_V4:
-    return Hexagon::JMP_EQrrPnt_ie_nv_V4;
-  case Hexagon::JMP_EQrrNotPnt_nv_V4:
-    return Hexagon::JMP_EQrrNotPnt_ie_nv_V4;
-
-  // JMP_GTri
-  case Hexagon::JMP_GTriPt_nv_V4:
-    return Hexagon::JMP_GTriPt_ie_nv_V4;
-  case Hexagon::JMP_GTriNotPt_nv_V4:
-    return Hexagon::JMP_GTriNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTriPnt_nv_V4:
-    return Hexagon::JMP_GTriPnt_ie_nv_V4;
-  case Hexagon::JMP_GTriNotPnt_nv_V4:
-    return Hexagon::JMP_GTriNotPnt_ie_nv_V4;
-
-  // JMP_GTri -- with -1
-  case Hexagon::JMP_GTriPtneg_nv_V4:
-    return Hexagon::JMP_GTriPtneg_ie_nv_V4;
-  case Hexagon::JMP_GTriNotPtneg_nv_V4:
-    return Hexagon::JMP_GTriNotPtneg_ie_nv_V4;
-  case Hexagon::JMP_GTriPntneg_nv_V4:
-    return Hexagon::JMP_GTriPntneg_ie_nv_V4;
-  case Hexagon::JMP_GTriNotPntneg_nv_V4:
-    return Hexagon::JMP_GTriNotPntneg_ie_nv_V4;
-
-  // JMP_GTrr
-  case Hexagon::JMP_GTrrPt_nv_V4:
-    return Hexagon::JMP_GTrrPt_ie_nv_V4;
-  case Hexagon::JMP_GTrrNotPt_nv_V4:
-    return Hexagon::JMP_GTrrNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTrrPnt_nv_V4:
-    return Hexagon::JMP_GTrrPnt_ie_nv_V4;
-  case Hexagon::JMP_GTrrNotPnt_nv_V4:
-    return Hexagon::JMP_GTrrNotPnt_ie_nv_V4;
-
-  // JMP_GTrrdn
-  case Hexagon::JMP_GTrrdnPt_nv_V4:
-    return Hexagon::JMP_GTrrdnPt_ie_nv_V4;
-  case Hexagon::JMP_GTrrdnNotPt_nv_V4:
-    return Hexagon::JMP_GTrrdnNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTrrdnPnt_nv_V4:
-    return Hexagon::JMP_GTrrdnPnt_ie_nv_V4;
-  case Hexagon::JMP_GTrrdnNotPnt_nv_V4:
-    return Hexagon::JMP_GTrrdnNotPnt_ie_nv_V4;
-
-  // JMP_GTUri
-  case Hexagon::JMP_GTUriPt_nv_V4:
-    return Hexagon::JMP_GTUriPt_ie_nv_V4;
-  case Hexagon::JMP_GTUriNotPt_nv_V4:
-    return Hexagon::JMP_GTUriNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTUriPnt_nv_V4:
-    return Hexagon::JMP_GTUriPnt_ie_nv_V4;
-  case Hexagon::JMP_GTUriNotPnt_nv_V4:
-    return Hexagon::JMP_GTUriNotPnt_ie_nv_V4;
-
-  // JMP_GTUrr
-  case Hexagon::JMP_GTUrrPt_nv_V4:
-    return Hexagon::JMP_GTUrrPt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrNotPt_nv_V4:
-    return Hexagon::JMP_GTUrrNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrPnt_nv_V4:
-    return Hexagon::JMP_GTUrrPnt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrNotPnt_nv_V4:
-    return Hexagon::JMP_GTUrrNotPnt_ie_nv_V4;
-
-  // JMP_GTUrrdn
-  case Hexagon::JMP_GTUrrdnPt_nv_V4:
-    return Hexagon::JMP_GTUrrdnPt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrdnNotPt_nv_V4:
-    return Hexagon::JMP_GTUrrdnNotPt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrdnPnt_nv_V4:
-    return Hexagon::JMP_GTUrrdnPnt_ie_nv_V4;
-  case Hexagon::JMP_GTUrrdnNotPnt_nv_V4:
-    return Hexagon::JMP_GTUrrdnNotPnt_ie_nv_V4;
-
-  case Hexagon::TFR_FI:
-      return Hexagon::TFR_FI_immext_V4;
-
-  case Hexagon::MEMw_ADDSUBi_indexed_MEM_V4 :
-  case Hexagon::MEMw_ADDi_indexed_MEM_V4 :
-  case Hexagon::MEMw_SUBi_indexed_MEM_V4 :
-  case Hexagon::MEMw_ADDr_indexed_MEM_V4 :
-  case Hexagon::MEMw_SUBr_indexed_MEM_V4 :
-  case Hexagon::MEMw_ANDr_indexed_MEM_V4 :
-  case Hexagon::MEMw_ORr_indexed_MEM_V4 :
-  case Hexagon::MEMw_ADDSUBi_MEM_V4 :
-  case Hexagon::MEMw_ADDi_MEM_V4 :
-  case Hexagon::MEMw_SUBi_MEM_V4 :
-  case Hexagon::MEMw_ADDr_MEM_V4 :
-  case Hexagon::MEMw_SUBr_MEM_V4 :
-  case Hexagon::MEMw_ANDr_MEM_V4 :
-  case Hexagon::MEMw_ORr_MEM_V4 :
-  case Hexagon::MEMh_ADDSUBi_indexed_MEM_V4 :
-  case Hexagon::MEMh_ADDi_indexed_MEM_V4 :
-  case Hexagon::MEMh_SUBi_indexed_MEM_V4 :
-  case Hexagon::MEMh_ADDr_indexed_MEM_V4 :
-  case Hexagon::MEMh_SUBr_indexed_MEM_V4 :
-  case Hexagon::MEMh_ANDr_indexed_MEM_V4 :
-  case Hexagon::MEMh_ORr_indexed_MEM_V4 :
-  case Hexagon::MEMh_ADDSUBi_MEM_V4 :
-  case Hexagon::MEMh_ADDi_MEM_V4 :
-  case Hexagon::MEMh_SUBi_MEM_V4 :
-  case Hexagon::MEMh_ADDr_MEM_V4 :
-  case Hexagon::MEMh_SUBr_MEM_V4 :
-  case Hexagon::MEMh_ANDr_MEM_V4 :
-  case Hexagon::MEMh_ORr_MEM_V4 :
-  case Hexagon::MEMb_ADDSUBi_indexed_MEM_V4 :
-  case Hexagon::MEMb_ADDi_indexed_MEM_V4 :
-  case Hexagon::MEMb_SUBi_indexed_MEM_V4 :
-  case Hexagon::MEMb_ADDr_indexed_MEM_V4 :
-  case Hexagon::MEMb_SUBr_indexed_MEM_V4 :
-  case Hexagon::MEMb_ANDr_indexed_MEM_V4 :
-  case Hexagon::MEMb_ORr_indexed_MEM_V4 :
-  case Hexagon::MEMb_ADDSUBi_MEM_V4 :
-  case Hexagon::MEMb_ADDi_MEM_V4 :
-  case Hexagon::MEMb_SUBi_MEM_V4 :
-  case Hexagon::MEMb_ADDr_MEM_V4 :
-  case Hexagon::MEMb_SUBr_MEM_V4 :
-  case Hexagon::MEMb_ANDr_MEM_V4 :
-  case Hexagon::MEMb_ORr_MEM_V4 :
-    llvm_unreachable("Needs implementing");
-  }
-}
-
-unsigned HexagonInstrInfo::getNormalBranchForm(const MachineInstr* MI) con=
st {
-  switch(MI->getOpcode()) {
-  default: llvm_unreachable("Unknown type of jump instruction");
-
-  // JMP_EQri
-  case Hexagon::JMP_EQriPt_ie_nv_V4:
-    return Hexagon::JMP_EQriPt_nv_V4;
-  case Hexagon::JMP_EQriNotPt_ie_nv_V4:
-    return Hexagon::JMP_EQriNotPt_nv_V4;
-  case Hexagon::JMP_EQriPnt_ie_nv_V4:
-    return Hexagon::JMP_EQriPnt_nv_V4;
-  case Hexagon::JMP_EQriNotPnt_ie_nv_V4:
-    return Hexagon::JMP_EQriNotPnt_nv_V4;
-
-  // JMP_EQri -- with -1
-  case Hexagon::JMP_EQriPtneg_ie_nv_V4:
-    return Hexagon::JMP_EQriPtneg_nv_V4;
-  case Hexagon::JMP_EQriNotPtneg_ie_nv_V4:
-    return Hexagon::JMP_EQriNotPtneg_nv_V4;
-  case Hexagon::JMP_EQriPntneg_ie_nv_V4:
-    return Hexagon::JMP_EQriPntneg_nv_V4;
-  case Hexagon::JMP_EQriNotPntneg_ie_nv_V4:
-    return Hexagon::JMP_EQriNotPntneg_nv_V4;
-
-  // JMP_EQrr
-  case Hexagon::JMP_EQrrPt_ie_nv_V4:
-    return Hexagon::JMP_EQrrPt_nv_V4;
-  case Hexagon::JMP_EQrrNotPt_ie_nv_V4:
-    return Hexagon::JMP_EQrrNotPt_nv_V4;
-  case Hexagon::JMP_EQrrPnt_ie_nv_V4:
-    return Hexagon::JMP_EQrrPnt_nv_V4;
-  case Hexagon::JMP_EQrrNotPnt_ie_nv_V4:
-    return Hexagon::JMP_EQrrNotPnt_nv_V4;
-
-  // JMP_GTri
-  case Hexagon::JMP_GTriPt_ie_nv_V4:
-    return Hexagon::JMP_GTriPt_nv_V4;
-  case Hexagon::JMP_GTriNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTriNotPt_nv_V4;
-  case Hexagon::JMP_GTriPnt_ie_nv_V4:
-    return Hexagon::JMP_GTriPnt_nv_V4;
-  case Hexagon::JMP_GTriNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTriNotPnt_nv_V4;
-
-  // JMP_GTri -- with -1
-  case Hexagon::JMP_GTriPtneg_ie_nv_V4:
-    return Hexagon::JMP_GTriPtneg_nv_V4;
-  case Hexagon::JMP_GTriNotPtneg_ie_nv_V4:
-    return Hexagon::JMP_GTriNotPtneg_nv_V4;
-  case Hexagon::JMP_GTriPntneg_ie_nv_V4:
-    return Hexagon::JMP_GTriPntneg_nv_V4;
-  case Hexagon::JMP_GTriNotPntneg_ie_nv_V4:
-    return Hexagon::JMP_GTriNotPntneg_nv_V4;
-
-  // JMP_GTrr
-  case Hexagon::JMP_GTrrPt_ie_nv_V4:
-    return Hexagon::JMP_GTrrPt_nv_V4;
-  case Hexagon::JMP_GTrrNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTrrNotPt_nv_V4;
-  case Hexagon::JMP_GTrrPnt_ie_nv_V4:
-    return Hexagon::JMP_GTrrPnt_nv_V4;
-  case Hexagon::JMP_GTrrNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTrrNotPnt_nv_V4;
-
-  // JMP_GTrrdn
-  case Hexagon::JMP_GTrrdnPt_ie_nv_V4:
-    return Hexagon::JMP_GTrrdnPt_nv_V4;
-  case Hexagon::JMP_GTrrdnNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTrrdnNotPt_nv_V4;
-  case Hexagon::JMP_GTrrdnPnt_ie_nv_V4:
-    return Hexagon::JMP_GTrrdnPnt_nv_V4;
-  case Hexagon::JMP_GTrrdnNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTrrdnNotPnt_nv_V4;
-
-  // JMP_GTUri
-  case Hexagon::JMP_GTUriPt_ie_nv_V4:
-    return Hexagon::JMP_GTUriPt_nv_V4;
-  case Hexagon::JMP_GTUriNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTUriNotPt_nv_V4;
-  case Hexagon::JMP_GTUriPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUriPnt_nv_V4;
-  case Hexagon::JMP_GTUriNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUriNotPnt_nv_V4;
-
-  // JMP_GTUrr
-  case Hexagon::JMP_GTUrrPt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrPt_nv_V4;
-  case Hexagon::JMP_GTUrrNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrNotPt_nv_V4;
-  case Hexagon::JMP_GTUrrPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrPnt_nv_V4;
-  case Hexagon::JMP_GTUrrNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrNotPnt_nv_V4;
-
-  // JMP_GTUrrdn
-  case Hexagon::JMP_GTUrrdnPt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrdnPt_nv_V4;
-  case Hexagon::JMP_GTUrrdnNotPt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrdnNotPt_nv_V4;
-  case Hexagon::JMP_GTUrrdnPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrdnPnt_nv_V4;
-  case Hexagon::JMP_GTUrrdnNotPnt_ie_nv_V4:
-    return Hexagon::JMP_GTUrrdnNotPnt_nv_V4;
-  }
-}
-
-
-bool HexagonInstrInfo::isNewValueStore(const MachineInstr *MI) const {
-  switch (MI->getOpcode()) {
-
-    // Store Byte
-    case Hexagon::STrib_nv_V4:
-    case Hexagon::STrib_indexed_nv_V4:
-    case Hexagon::STrib_indexed_shl_nv_V4:
-    case Hexagon::STrib_shl_nv_V4:
-    case Hexagon::STrib_GP_nv_V4:
-    case Hexagon::STb_GP_nv_V4:
-    case Hexagon::POST_STbri_nv_V4:
-    case Hexagon::STrib_cPt_nv_V4:
-    case Hexagon::STrib_cdnPt_nv_V4:
-    case Hexagon::STrib_cNotPt_nv_V4:
-    case Hexagon::STrib_cdnNotPt_nv_V4:
-    case Hexagon::STrib_indexed_cPt_nv_V4:
-    case Hexagon::STrib_indexed_cdnPt_nv_V4:
-    case Hexagon::STrib_indexed_cNotPt_nv_V4:
-    case Hexagon::STrib_indexed_cdnNotPt_nv_V4:
-    case Hexagon::STrib_indexed_shl_cPt_nv_V4:
-    case Hexagon::STrib_indexed_shl_cdnPt_nv_V4:
-    case Hexagon::STrib_indexed_shl_cNotPt_nv_V4:
-    case Hexagon::STrib_indexed_shl_cdnNotPt_nv_V4:
-    case Hexagon::POST_STbri_cPt_nv_V4:
-    case Hexagon::POST_STbri_cdnPt_nv_V4:
-    case Hexagon::POST_STbri_cNotPt_nv_V4:
-    case Hexagon::POST_STbri_cdnNotPt_nv_V4:
-    case Hexagon::STb_GP_cPt_nv_V4:
-    case Hexagon::STb_GP_cNotPt_nv_V4:
-    case Hexagon::STb_GP_cdnPt_nv_V4:
-    case Hexagon::STb_GP_cdnNotPt_nv_V4:
-    case Hexagon::STrib_GP_cPt_nv_V4:
-    case Hexagon::STrib_GP_cNotPt_nv_V4:
-    case Hexagon::STrib_GP_cdnPt_nv_V4:
-    case Hexagon::STrib_GP_cdnNotPt_nv_V4:
-    case Hexagon::STrib_abs_nv_V4:
-    case Hexagon::STrib_abs_cPt_nv_V4:
-    case Hexagon::STrib_abs_cdnPt_nv_V4:
-    case Hexagon::STrib_abs_cNotPt_nv_V4:
-    case Hexagon::STrib_abs_cdnNotPt_nv_V4:
-    case Hexagon::STrib_imm_abs_nv_V4:
-    case Hexagon::STrib_imm_abs_cPt_nv_V4:
-    case Hexagon::STrib_imm_abs_cdnPt_nv_V4:
-    case Hexagon::STrib_imm_abs_cNotPt_nv_V4:
-    case Hexagon::STrib_imm_abs_cdnNotPt_nv_V4:
-
-    // Store Halfword
-    case Hexagon::STrih_nv_V4:
-    case Hexagon::STrih_indexed_nv_V4:
-    case Hexagon::STrih_indexed_shl_nv_V4:
-    case Hexagon::STrih_shl_nv_V4:
-    case Hexagon::STrih_GP_nv_V4:
-    case Hexagon::STh_GP_nv_V4:
-    case Hexagon::POST_SThri_nv_V4:
-    case Hexagon::STrih_cPt_nv_V4:
-    case Hexagon::STrih_cdnPt_nv_V4:
-    case Hexagon::STrih_cNotPt_nv_V4:
-    case Hexagon::STrih_cdnNotPt_nv_V4:
-    case Hexagon::STrih_indexed_cPt_nv_V4:
-    case Hexagon::STrih_indexed_cdnPt_nv_V4:
-    case Hexagon::STrih_indexed_cNotPt_nv_V4:
-    case Hexagon::STrih_indexed_cdnNotPt_nv_V4:
-    case Hexagon::STrih_indexed_shl_cPt_nv_V4:
-    case Hexagon::STrih_indexed_shl_cdnPt_nv_V4:
-    case Hexagon::STrih_indexed_shl_cNotPt_nv_V4:
-    case Hexagon::STrih_indexed_shl_cdnNotPt_nv_V4:
-    case Hexagon::POST_SThri_cPt_nv_V4:
-    case Hexagon::POST_SThri_cdnPt_nv_V4:
-    case Hexagon::POST_SThri_cNotPt_nv_V4:
-    case Hexagon::POST_SThri_cdnNotPt_nv_V4:
-    case Hexagon::STh_GP_cPt_nv_V4:
-    case Hexagon::STh_GP_cNotPt_nv_V4:
-    case Hexagon::STh_GP_cdnPt_nv_V4:
-    case Hexagon::STh_GP_cdnNotPt_nv_V4:
-    case Hexagon::STrih_GP_cPt_nv_V4:
-    case Hexagon::STrih_GP_cNotPt_nv_V4:
-    case Hexagon::STrih_GP_cdnPt_nv_V4:
-    case Hexagon::STrih_GP_cdnNotPt_nv_V4:
-    case Hexagon::STrih_abs_nv_V4:
-    case Hexagon::STrih_abs_cPt_nv_V4:
-    case Hexagon::STrih_abs_cdnPt_nv_V4:
-    case Hexagon::STrih_abs_cNotPt_nv_V4:
-    case Hexagon::STrih_abs_cdnNotPt_nv_V4:
-    case Hexagon::STrih_imm_abs_nv_V4:
-    case Hexagon::STrih_imm_abs_cPt_nv_V4:
-    case Hexagon::STrih_imm_abs_cdnPt_nv_V4:
-    case Hexagon::STrih_imm_abs_cNotPt_nv_V4:
-    case Hexagon::STrih_imm_abs_cdnNotPt_nv_V4:
-
-    // Store Word
-    case Hexagon::STriw_nv_V4:
-    case Hexagon::STriw_indexed_nv_V4:
-    case Hexagon::STriw_indexed_shl_nv_V4:
-    case Hexagon::STriw_shl_nv_V4:
-    case Hexagon::STriw_GP_nv_V4:
-    case Hexagon::STw_GP_nv_V4:
-    case Hexagon::POST_STwri_nv_V4:
-    case Hexagon::STriw_cPt_nv_V4:
-    case Hexagon::STriw_cdnPt_nv_V4:
-    case Hexagon::STriw_cNotPt_nv_V4:
-    case Hexagon::STriw_cdnNotPt_nv_V4:
-    case Hexagon::STriw_indexed_cPt_nv_V4:
-    case Hexagon::STriw_indexed_cdnPt_nv_V4:
-    case Hexagon::STriw_indexed_cNotPt_nv_V4:
-    case Hexagon::STriw_indexed_cdnNotPt_nv_V4:
-    case Hexagon::STriw_indexed_shl_cPt_nv_V4:
-    case Hexagon::STriw_indexed_shl_cdnPt_nv_V4:
-    case Hexagon::STriw_indexed_shl_cNotPt_nv_V4:
-    case Hexagon::STriw_indexed_shl_cdnNotPt_nv_V4:
-    case Hexagon::POST_STwri_cPt_nv_V4:
-    case Hexagon::POST_STwri_cdnPt_nv_V4:
-    case Hexagon::POST_STwri_cNotPt_nv_V4:
-    case Hexagon::POST_STwri_cdnNotPt_nv_V4:
-    case Hexagon::STw_GP_cPt_nv_V4:
-    case Hexagon::STw_GP_cNotPt_nv_V4:
-    case Hexagon::STw_GP_cdnPt_nv_V4:
-    case Hexagon::STw_GP_cdnNotPt_nv_V4:
-    case Hexagon::STriw_GP_cPt_nv_V4:
-    case Hexagon::STriw_GP_cNotPt_nv_V4:
-    case Hexagon::STriw_GP_cdnPt_nv_V4:
-    case Hexagon::STriw_GP_cdnNotPt_nv_V4:
-    case Hexagon::STriw_abs_nv_V4:
-    case Hexagon::STriw_abs_cPt_nv_V4:
-    case Hexagon::STriw_abs_cdnPt_nv_V4:
-    case Hexagon::STriw_abs_cNotPt_nv_V4:
-    case Hexagon::STriw_abs_cdnNotPt_nv_V4:
-    case Hexagon::STriw_imm_abs_nv_V4:
-    case Hexagon::STriw_imm_abs_cPt_nv_V4:
-    case Hexagon::STriw_imm_abs_cdnPt_nv_V4:
-    case Hexagon::STriw_imm_abs_cNotPt_nv_V4:
-    case Hexagon::STriw_imm_abs_cdnNotPt_nv_V4:
-      return true;
-
-    default:
-      return false;
-  }
-  return false;
-}
-
-bool HexagonInstrInfo::isPostIncrement (const MachineInstr* MI) const {
-  switch (MI->getOpcode())
-  {
-    // Load Byte
-    case Hexagon::POST_LDrib:
-    case Hexagon::POST_LDrib_cPt:
-    case Hexagon::POST_LDrib_cNotPt:
-    case Hexagon::POST_LDrib_cdnPt_V4:
-    case Hexagon::POST_LDrib_cdnNotPt_V4:
-
-    // Load unsigned byte
-    case Hexagon::POST_LDriub:
-    case Hexagon::POST_LDriub_cPt:
-    case Hexagon::POST_LDriub_cNotPt:
-    case Hexagon::POST_LDriub_cdnPt_V4:
-    case Hexagon::POST_LDriub_cdnNotPt_V4:
-
-    // Load halfword
-    case Hexagon::POST_LDrih:
-    case Hexagon::POST_LDrih_cPt:
-    case Hexagon::POST_LDrih_cNotPt:
-    case Hexagon::POST_LDrih_cdnPt_V4:
-    case Hexagon::POST_LDrih_cdnNotPt_V4:
-
-    // Load unsigned halfword
-    case Hexagon::POST_LDriuh:
-    case Hexagon::POST_LDriuh_cPt:
-    case Hexagon::POST_LDriuh_cNotPt:
-    case Hexagon::POST_LDriuh_cdnPt_V4:
-    case Hexagon::POST_LDriuh_cdnNotPt_V4:
-
-    // Load word
-    case Hexagon::POST_LDriw:
-    case Hexagon::POST_LDriw_cPt:
-    case Hexagon::POST_LDriw_cNotPt:
-    case Hexagon::POST_LDriw_cdnPt_V4:
-    case Hexagon::POST_LDriw_cdnNotPt_V4:
-
-    // Load double word
-    case Hexagon::POST_LDrid:
-    case Hexagon::POST_LDrid_cPt:
-    case Hexagon::POST_LDrid_cNotPt:
-    case Hexagon::POST_LDrid_cdnPt_V4:
-    case Hexagon::POST_LDrid_cdnNotPt_V4:
-
-    // Store byte
-    case Hexagon::POST_STbri:
-    case Hexagon::POST_STbri_cPt:
-    case Hexagon::POST_STbri_cNotPt:
-    case Hexagon::POST_STbri_cdnPt_V4:
-    case Hexagon::POST_STbri_cdnNotPt_V4:
-
-    // Store halfword
-    case Hexagon::POST_SThri:
-    case Hexagon::POST_SThri_cPt:
-    case Hexagon::POST_SThri_cNotPt:
-    case Hexagon::POST_SThri_cdnPt_V4:
-    case Hexagon::POST_SThri_cdnNotPt_V4:
-
-    // Store word
-    case Hexagon::POST_STwri:
-    case Hexagon::POST_STwri_cPt:
-    case Hexagon::POST_STwri_cNotPt:
-    case Hexagon::POST_STwri_cdnPt_V4:
-    case Hexagon::POST_STwri_cdnNotPt_V4:
-
-    // Store double word
-    case Hexagon::POST_STdri:
-    case Hexagon::POST_STdri_cPt:
-    case Hexagon::POST_STdri_cNotPt:
-    case Hexagon::POST_STdri_cdnPt_V4:
-    case Hexagon::POST_STdri_cdnNotPt_V4:
-      return true;
-
-    default:
-      return false;
-  }
-}
-
-bool HexagonInstrInfo::isSaveCalleeSavedRegsCall(const MachineInstr *MI) c=
onst {
-  return MI->getOpcode() =3D=3D Hexagon::SAVE_REGISTERS_CALL_V4;
-}
=20
 bool HexagonInstrInfo::isPredicable(MachineInstr *MI) const {
   bool isPred =3D MI->getDesc().isPredicable();
@@ -2445,24 +1587,6 @@
   return false;
 }
=20
-bool HexagonInstrInfo::
-isConditionalTransfer (const MachineInstr *MI) const {
-  switch (MI->getOpcode()) {
-    case Hexagon::TFR_cPt:
-    case Hexagon::TFR_cNotPt:
-    case Hexagon::TFRI_cPt:
-    case Hexagon::TFRI_cNotPt:
-    case Hexagon::TFR_cdnPt:
-    case Hexagon::TFR_cdnNotPt:
-    case Hexagon::TFRI_cdnPt:
-    case Hexagon::TFRI_cdnNotPt:
-      return true;
-
-    default:
-      return false;
-  }
-  return false;
-}
=20
 bool HexagonInstrInfo::isConditionalALU32 (const MachineInstr* MI) const {
   const HexagonRegisterInfo& QRI =3D getRegisterInfo();
@@ -2502,6 +1626,7 @@
   }
 }
=20
+
 bool HexagonInstrInfo::
 isConditionalLoad (const MachineInstr* MI) const {
   const HexagonRegisterInfo& QRI =3D getRegisterInfo();
@@ -2575,136 +1700,6 @@
   }
 }
=20
-// Returns true if an instruction is a conditional store.
-//
-// Note: It doesn't include conditional new-value stores as they can't be
-// converted to .new predicate.
-//
-//               p.new NV store [ if(p0.new)memw(R0+#0)=3DR2.new ]
-//                ^           ^
-//               /             \ (not OK. it will cause new-value store to=
 be
-//              /               X conditional on p0.new while R2 producer =
is
-//             /                 \ on p0)
-//            /                   \.
-//     p.new store                 p.old NV store
-// [if(p0.new)memw(R0+#0)=3DR2]    [if(p0)memw(R0+#0)=3DR2.new]
-//            ^                  ^
-//             \                /
-//              \              /
-//               \            /
-//                 p.old store
-//             [if (p0)memw(R0+#0)=3DR2]
-//
-// The above diagram shows the steps involoved in the conversion of a pred=
icated
-// store instruction to its .new predicated new-value form.
-//
-// The following set of instructions further explains the scenario where
-// conditional new-value store becomes invalid when promoted to .new predi=
cate
-// form.
-//
-// { 1) if (p0) r0 =3D add(r1, r2)
-//   2) p0 =3D cmp.eq(r3, #0) }
-//
-//   3) if (p0) memb(r1+#0) =3D r0  --> this instruction can't be grouped =
with
-// the first two instructions because in instr 1, r0 is conditional on old=
 value
-// of p0 but its use in instr 3 is conditional on p0 modified by instr 2 w=
hich
-// is not valid for new-value stores.
-bool HexagonInstrInfo::
-isConditionalStore (const MachineInstr* MI) const {
-  const HexagonRegisterInfo& QRI =3D getRegisterInfo();
-  switch (MI->getOpcode())
-  {
-    case Hexagon::STrib_imm_cPt_V4 :
-    case Hexagon::STrib_imm_cNotPt_V4 :
-    case Hexagon::STrib_indexed_shl_cPt_V4 :
-    case Hexagon::STrib_indexed_shl_cNotPt_V4 :
-    case Hexagon::STrib_cPt :
-    case Hexagon::STrib_cNotPt :
-    case Hexagon::POST_STbri_cPt :
-    case Hexagon::POST_STbri_cNotPt :
-    case Hexagon::STrid_indexed_cPt :
-    case Hexagon::STrid_indexed_cNotPt :
-    case Hexagon::STrid_indexed_shl_cPt_V4 :
-    case Hexagon::POST_STdri_cPt :
-    case Hexagon::POST_STdri_cNotPt :
-    case Hexagon::STrih_cPt :
-    case Hexagon::STrih_cNotPt :
-    case Hexagon::STrih_indexed_cPt :
-    case Hexagon::STrih_indexed_cNotPt :
-    case Hexagon::STrih_imm_cPt_V4 :
-    case Hexagon::STrih_imm_cNotPt_V4 :
-    case Hexagon::STrih_indexed_shl_cPt_V4 :
-    case Hexagon::STrih_indexed_shl_cNotPt_V4 :
-    case Hexagon::POST_SThri_cPt :
-    case Hexagon::POST_SThri_cNotPt :
-    case Hexagon::STriw_cPt :
-    case Hexagon::STriw_cNotPt :
-    case Hexagon::STriw_indexed_cPt :
-    case Hexagon::STriw_indexed_cNotPt :
-    case Hexagon::STriw_imm_cPt_V4 :
-    case Hexagon::STriw_imm_cNotPt_V4 :
-    case Hexagon::STriw_indexed_shl_cPt_V4 :
-    case Hexagon::STriw_indexed_shl_cNotPt_V4 :
-    case Hexagon::POST_STwri_cPt :
-    case Hexagon::POST_STwri_cNotPt :
-      return QRI.Subtarget.hasV4TOps();
-
-    // V4 global address store before promoting to dot new.
-    case Hexagon::STrid_GP_cPt_V4 :
-    case Hexagon::STrid_GP_cNotPt_V4 :
-    case Hexagon::STrib_GP_cPt_V4 :
-    case Hexagon::STrib_GP_cNotPt_V4 :
-    case Hexagon::STrih_GP_cPt_V4 :
-    case Hexagon::STrih_GP_cNotPt_V4 :
-    case Hexagon::STriw_GP_cPt_V4 :
-    case Hexagon::STriw_GP_cNotPt_V4 :
-    case Hexagon::STd_GP_cPt_V4 :
-    case Hexagon::STd_GP_cNotPt_V4 :
-    case Hexagon::STb_GP_cPt_V4 :
-    case Hexagon::STb_GP_cNotPt_V4 :
-    case Hexagon::STh_GP_cPt_V4 :
-    case Hexagon::STh_GP_cNotPt_V4 :
-    case Hexagon::STw_GP_cPt_V4 :
-    case Hexagon::STw_GP_cNotPt_V4 :
-      return QRI.Subtarget.hasV4TOps();
-
-    // Predicated new value stores (i.e. if (p0) memw(..)=3Dr0.new) are ex=
cluded
-    // from the "Conditional Store" list. Because a predicated new value s=
tore
-    // would NOT be promoted to a double dot new store. See diagram below:
-    // This function returns yes for those stores that are predicated but =
not
-    // yet promoted to predicate dot new instructions.
-    //
-    //                          +---------------------+
-    //                    /-----| if (p0) memw(..)=3Dr0 |---------\~
-    //                   ||     +---------------------+         ||
-    //          promote  ||       /\       /\                   ||  promote
-    //                   ||      /||\     /||\                  ||
-    //                  \||/    demote     ||                  \||/
-    //                   \/       ||       ||                   \/
-    //       +-------------------------+   ||   +-------------------------+
-    //       | if (p0.new) memw(..)=3Dr0 |   ||   | if (p0) memw(..)=3Dr0.=
new |
-    //       +-------------------------+   ||   +-------------------------+
-    //                        ||           ||         ||
-    //                        ||         demote      \||/
-    //                      promote        ||         \/ NOT possible
-    //                        ||           ||         /\~
-    //                       \||/          ||        /||\~
-    //                        \/           ||         ||
-    //                      +-----------------------------+
-    //                      | if (p0.new) memw(..)=3Dr0.new |
-    //                      +-----------------------------+
-    //                           Double Dot New Store
-    //
-
-    default:
-      return false;
-
-  }
-  return false;
-}
-
-
-
 DFAPacketizer *HexagonInstrInfo::
 CreateTargetScheduleState(const TargetMachine *TM,
                            const ScheduleDAG *DAG) const {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrInfo.h
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -160,20 +160,10 @@
   bool isS8_Immediate(const int value) const;
   bool isS6_Immediate(const int value) const;
=20
-  bool isSaveCalleeSavedRegsCall(const MachineInstr* MI) const;
-  bool isConditionalTransfer(const MachineInstr* MI) const;
   bool isConditionalALU32 (const MachineInstr* MI) const;
   bool isConditionalLoad (const MachineInstr* MI) const;
-  bool isConditionalStore(const MachineInstr* MI) const;
   bool isDeallocRet(const MachineInstr *MI) const;
   unsigned getInvertedPredicatedOpcode(const int Opc) const;
-  bool isExtendable(const MachineInstr* MI) const;
-  bool isExtended(const MachineInstr* MI) const;
-  bool isPostIncrement(const MachineInstr* MI) const;
-  bool isNewValueStore(const MachineInstr* MI) const;
-  bool isNewValueJump(const MachineInstr* MI) const;
-  unsigned getImmExtForm(const MachineInstr* MI) const;
-  unsigned getNormalBranchForm(const MachineInstr* MI) const;
=20
 private:
   int getMatchingCondBranchOpcode(int Opc, bool sense) const;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrInfo.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.td	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.td	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -3046,7 +3046,3 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 include "HexagonInstrInfoV4.td"
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// V4 Instructions -
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrInfoV3.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV3.td	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV3.td	Wed Jul 25=
 16:21:35 2012 +0300
@@ -41,11 +41,10 @@
  }
=20
=20
-// Jump to address from register
 // if(p?.new) jumpr:t r?
 let isReturn =3D 1, isTerminator =3D 1, isBarrier =3D 1,
   Defs =3D [PC], Uses =3D [R31] in {
-  def JMPR_cdnPt_V3: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
+  def JMPR_cPnewt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
                        "if ($src1.new) jumpr:t $src2",
                        []>, Requires<[HasV3T]>;
 }
@@ -53,7 +52,7 @@
 // if (!p?.new) jumpr:t r?
 let isReturn =3D 1, isTerminator =3D 1, isBarrier =3D 1,
   Defs =3D [PC], Uses =3D [R31] in {
-  def JMPR_cdnNotPt_V3: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
+  def JMPR_cNotPnewt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
                        "if (!$src1.new) jumpr:t $src2",
                        []>, Requires<[HasV3T]>;
 }
@@ -62,7 +61,7 @@
 // if(p?.new) jumpr:nt r?
 let isReturn =3D 1, isTerminator =3D 1, isBarrier =3D 1,
   Defs =3D [PC], Uses =3D [R31] in {
-  def JMPR_cdnPnt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
+  def JMPR_cPnewNt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
                        "if ($src1.new) jumpr:nt $src2",
                        []>, Requires<[HasV3T]>;
 }
@@ -70,7 +69,7 @@
 // if (!p?.new) jumpr:nt r?
 let isReturn =3D 1, isTerminator =3D 1, isBarrier =3D 1,
   Defs =3D [PC], Uses =3D [R31] in {
-  def JMPR_cdnNotPnt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
+  def JMPR_cNotPnewNt: JRInst<(outs), (ins PredRegs:$src1, IntRegs:$src2),
                        "if (!$src1.new) jumpr:nt $src2",
                        []>, Requires<[HasV3T]>;
 }
@@ -87,22 +86,20 @@
 def MAXw_dd : ALU64_rr<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1,
                                                     DoubleRegs:$src2),
               "$dst =3D max($src2, $src1)",
-              [(set (i64 DoubleRegs:$dst),
-                    (i64 (select (i1 (setlt (i64 DoubleRegs:$src2),
-                                            (i64 DoubleRegs:$src1))),
-                                 (i64 DoubleRegs:$src1),
-                                 (i64 DoubleRegs:$src2))))]>,
+              [(set DoubleRegs:$dst, (select (i1 (setlt DoubleRegs:$src2,
+                                                        DoubleRegs:$src1)),
+                                             DoubleRegs:$src1,
+                                             DoubleRegs:$src2))]>,
 Requires<[HasV3T]>;
=20
 let AddedComplexity =3D 200 in
 def MINw_dd : ALU64_rr<(outs DoubleRegs:$dst), (ins DoubleRegs:$src1,
                                                     DoubleRegs:$src2),
               "$dst =3D min($src2, $src1)",
-              [(set (i64 DoubleRegs:$dst),
-                    (i64 (select (i1 (setgt (i64 DoubleRegs:$src2),
-                                            (i64 DoubleRegs:$src1))),
-                                 (i64 DoubleRegs:$src1),
-                                 (i64 DoubleRegs:$src2))))]>,
+              [(set DoubleRegs:$dst, (select (i1 (setgt DoubleRegs:$src2,
+                                                        DoubleRegs:$src1)),
+                                             DoubleRegs:$src1,
+                                             DoubleRegs:$src2))]>,
 Requires<[HasV3T]>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -112,25 +109,25 @@
=20
=20
=20
-//def : Pat <(brcond (i1 (seteq (i32 IntRegs:$src1), 0)), bb:$offset),
-//      (JMP_RegEzt (i32 IntRegs:$src1), bb:$offset)>, Requires<[HasV3T]>;
+//def : Pat <(brcond (i1 (seteq IntRegs:$src1, 0)), bb:$offset),
+//      (JMP_RegEzt IntRegs:$src1, bb:$offset)>, Requires<[HasV3T]>;
=20
-//def : Pat <(brcond (i1 (setne (i32 IntRegs:$src1), 0)), bb:$offset),
-//      (JMP_RegNzt (i32 IntRegs:$src1), bb:$offset)>, Requires<[HasV3T]>;
+//def : Pat <(brcond (i1 (setne IntRegs:$src1, 0)), bb:$offset),
+//      (JMP_RegNzt IntRegs:$src1, bb:$offset)>, Requires<[HasV3T]>;
=20
-//def : Pat <(brcond (i1 (setle (i32 IntRegs:$src1), 0)), bb:$offset),
-//      (JMP_RegLezt (i32 IntRegs:$src1), bb:$offset)>, Requires<[HasV3T]>;
+//def : Pat <(brcond (i1 (setle IntRegs:$src1, 0)), bb:$offset),
+//      (JMP_RegLezt IntRegs:$src1, bb:$offset)>, Requires<[HasV3T]>;
=20
-//def : Pat <(brcond (i1 (setge (i32 IntRegs:$src1), 0)), bb:$offset),
-//      (JMP_RegGezt (i32 IntRegs:$src1), bb:$offset)>, Requires<[HasV3T]>;
+//def : Pat <(brcond (i1 (setge IntRegs:$src1, 0)), bb:$offset),
+//      (JMP_RegGezt IntRegs:$src1, bb:$offset)>, Requires<[HasV3T]>;
=20
-//def : Pat <(brcond (i1 (setgt (i32 IntRegs:$src1), -1)), bb:$offset),
-//      (JMP_RegGezt (i32 IntRegs:$src1), bb:$offset)>, Requires<[HasV3T]>;
+//def : Pat <(brcond (i1 (setgt IntRegs:$src1, -1)), bb:$offset),
+//      (JMP_RegGezt IntRegs:$src1, bb:$offset)>, Requires<[HasV3T]>;
=20
=20
 // Map call instruction
-def : Pat<(call (i32 IntRegs:$dst)),
-      (CALLRv3 (i32 IntRegs:$dst))>, Requires<[HasV3T]>;
+def : Pat<(call IntRegs:$dst),
+      (CALLRv3 IntRegs:$dst)>, Requires<[HasV3T]>;
 def : Pat<(call tglobaladdr:$dst),
       (CALLv3 tglobaladdr:$dst)>, Requires<[HasV3T]>;
 def : Pat<(call texternalsym:$dst),
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonInstrInfoV4.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td	Wed Jul 25=
 16:21:35 2012 +0300
@@ -11,11 +11,6 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-def IMMEXT : Immext<(outs), (ins),
-                    "##immext //should never emit this",
-                    []>,
-                    Requires<[HasV4T]>;
-
 // Hexagon V4 Architecture spec defines 8 instruction classes:
 // LD ST ALU32 XTYPE J JR MEMOP NV CR SYSTEM(system is not implemented in =
the
 // compiler)
@@ -255,151 +250,23 @@
             []>,
             Requires<[HasV4T]>;
=20
-// Generate frame index addresses.
-let neverHasSideEffects =3D 1, isReMaterializable =3D 1 in
-def TFR_FI_immext_V4 : ALU32_ri<(outs IntRegs:$dst),
-            (ins IntRegs:$src1, s32Imm:$offset),
-            "$dst =3D add($src1, ##$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // ALU32 -
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
=20
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// ALU32/PERM +
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-// Combine
-// Rdd=3Dcombine(Rs, #s8)
-let neverHasSideEffects =3D 1 in
-def COMBINE_ri_V4 : ALU32_ri<(outs DoubleRegs:$dst),
-            (ins IntRegs:$src1, s8Imm:$src2),
-            "$dst =3D combine($src1, #$src2)",
-            []>,
-            Requires<[HasV4T]>;
-// Rdd=3Dcombine(#s8, Rs)
-let neverHasSideEffects =3D 1 in
-def COMBINE_ir_V4 : ALU32_ir<(outs DoubleRegs:$dst),
-            (ins s8Imm:$src1, IntRegs:$src2),
-            "$dst =3D combine(#$src1, $src2)",
-            []>,
-            Requires<[HasV4T]>;
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// ALU32/PERM +
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // LD +
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// These absolute set addressing mode instructions accept immediate as
-// an operand. We have duplicated these patterns to take global address.
-
-let neverHasSideEffects =3D 1 in
-def LDrid_abs_setimm_V4 : LDInst<(outs DoubleRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memd($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemb(Re=3D#U6)
-let neverHasSideEffects =3D 1 in
-def LDrib_abs_setimm_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memb($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemh(Re=3D#U6)
-let neverHasSideEffects =3D 1 in
-def LDrih_abs_setimm_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memh($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemub(Re=3D#U6)
-let neverHasSideEffects =3D 1 in
-def LDriub_abs_setimm_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memub($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemuh(Re=3D#U6)
-let neverHasSideEffects =3D 1 in
-def LDriuh_abs_setimm_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memuh($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemw(Re=3D#U6)
-let neverHasSideEffects =3D 1 in
-def LDriw_abs_setimm_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins u6Imm:$addr),
-            "$dst1 =3D memw($dst2=3D#$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Following patterns are defined for absolute set addressing mode
-// instruction which take global address as operand.
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrid_abs_set_V4 : LDInst<(outs DoubleRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memd($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemb(Re=3D#U6)
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrib_abs_set_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memb($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemh(Re=3D#U6)
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrih_abs_set_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memh($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemub(Re=3D#U6)
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriub_abs_set_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memub($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemuh(Re=3D#U6)
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriuh_abs_set_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memuh($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Rd=3Dmemw(Re=3D#U6)
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriw_abs_set_V4 : LDInst<(outs IntRegs:$dst1, IntRegs:$dst2),
-            (ins globaladdress:$addr),
-            "$dst1 =3D memw($dst2=3D##$addr)",
-            []>,
-            Requires<[HasV4T]>;
-
-// Load doubleword.
-//
-// Make sure that in post increment load, the first operand is always the =
post
-// increment operand.
-//
+///
+/// Make sure that in post increment load, the first operand is always the=
 post
+/// increment operand.
+///
+//// Load doubleword.
+// Rdd=3Dmemd(Re=3D#U6)
+
 // Rdd=3Dmemd(Rs+Rt<<#u2)
 // Special case pattern for indexed load without offset which is easier to
 // match. AddedComplexity of this pattern should be lower than base+offset=
 load
@@ -409,19 +276,17 @@
 def LDrid_indexed_V4 : LDInst<(outs DoubleRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemd($src1+$src2<<#0)",
-                    [(set (i64 DoubleRegs:$dst),
-                          (i64 (load (add (i32 IntRegs:$src1),
-                                          (i32 IntRegs:$src2)))))]>,
+                    [(set DoubleRegs:$dst, (load (add IntRegs:$src1,
+                                                      IntRegs:$src2)))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDrid_indexed_shl_V4 : LDInst<(outs DoubleRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemd($src1+$src2<<#$offset)",
-                    [(set (i64 DoubleRegs:$dst),
-                          (i64 (load (add (i32 IntRegs:$src1),
-                                          (shl (i32 IntRegs:$src2),
-                                               u2ImmPred:$offset)))))]>,
+                    [(set DoubleRegs:$dst, (load (add IntRegs:$src1,
+                                                 (shl IntRegs:$src2,
+                                                      u2ImmPred:$offset)))=
)]>,
                     Requires<[HasV4T]>;
=20
 //// Load doubleword conditionally.
@@ -497,62 +362,60 @@
 // Rdd=3Dmemd(Rt<<#u2+#U6)
=20
 //// Load byte.
+// Rd=3Dmemb(Re=3D#U6)
+
 // Rd=3Dmemb(Rs+Rt<<#u2)
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDrib_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemb($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (sextloadi8 (add (i32 IntRegs:$src1),
-                                                (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (sextloadi8 (add IntRegs:$src1,
+                                                         IntRegs:$src2)))]=
>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDriub_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemub($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (zextloadi8 (add (i32 IntRegs:$src1),
-                                                (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (zextloadi8 (add IntRegs:$src1,
+                                                         IntRegs:$src2)))]=
>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDriub_ae_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemub($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (extloadi8 (add (i32 IntRegs:$src1),
-                                               (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (extloadi8 (add IntRegs:$src1,
+                                                        IntRegs:$src2)))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDrib_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemb($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (sextloadi8 (add (i32 IntRegs:$src1),
-                                                (shl (i32 IntRegs:$src2),
-                                                     u2ImmPred:$offset))))=
)]>,
+                    [(set IntRegs:$dst,
+                          (sextloadi8 (add IntRegs:$src1,
+                                           (shl IntRegs:$src2,
+                                                u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDriub_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemub($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (zextloadi8 (add (i32 IntRegs:$src1),
-                                                (shl (i32 IntRegs:$src2),
-                                                     u2ImmPred:$offset))))=
)]>,
+                    [(set IntRegs:$dst,
+                          (zextloadi8 (add IntRegs:$src1,
+                                           (shl IntRegs:$src2,
+                                                u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDriub_ae_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemub($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (extloadi8 (add (i32 IntRegs:$src1),
-                                               (shl (i32 IntRegs:$src2),
-                                                    u2ImmPred:$offset)))))=
]>,
+                    [(set IntRegs:$dst, (extloadi8 (add IntRegs:$src1,
+                                                   (shl IntRegs:$src2,
+                                                        u2ImmPred:$offset)=
)))]>,
                     Requires<[HasV4T]>;
=20
 //// Load byte conditionally.
@@ -698,32 +561,31 @@
 // Rd=3Dmemb(Rt<<#u2+#U6)
=20
 //// Load halfword
+// Rd=3Dmemh(Re=3D#U6)
+
 // Rd=3Dmemh(Rs+Rt<<#u2)
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDrih_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemh($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (sextloadi16 (add (i32 IntRegs:$src1),
-                                                 (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (sextloadi16 (add IntRegs:$src1,
+                                                          IntRegs:$src2)))=
]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDriuh_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemuh($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (zextloadi16 (add (i32 IntRegs:$src1),
-                                                 (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (zextloadi16 (add IntRegs:$src1,
+                                                          IntRegs:$src2)))=
]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def LDriuh_ae_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemuh($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (extloadi16 (add (i32 IntRegs:$src1),
-                                                (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (extloadi16 (add IntRegs:$src1,
+                                                         IntRegs:$src2)))]=
>,
                     Requires<[HasV4T]>;
=20
 // Rd=3Dmemh(Rs+Rt<<#u2)
@@ -731,30 +593,30 @@
 def LDrih_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemh($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (sextloadi16 (add (i32 IntRegs:$src1),
-                                                 (shl (i32 IntRegs:$src2),
-                                                      u2ImmPred:$offset)))=
))]>,
+                    [(set IntRegs:$dst,
+                          (sextloadi16 (add IntRegs:$src1,
+                                            (shl IntRegs:$src2,
+                                                 u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDriuh_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemuh($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (zextloadi16 (add (i32 IntRegs:$src1),
-                                                 (shl (i32 IntRegs:$src2),
-                                                      u2ImmPred:$offset)))=
))]>,
+                    [(set IntRegs:$dst,
+                          (zextloadi16 (add IntRegs:$src1,
+                                            (shl IntRegs:$src2,
+                                                 u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 let AddedComplexity =3D 40, isPredicable =3D 1 in
 def LDriuh_ae_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemuh($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (extloadi16 (add (i32 IntRegs:$src1),
-                                                (shl (i32 IntRegs:$src2),
-                                                     u2ImmPred:$offset))))=
)]>,
+                    [(set IntRegs:$dst,
+                          (extloadi16 (add IntRegs:$src1,
+                                           (shl IntRegs:$src2,
+                                                u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 //// Load halfword conditionally.
@@ -900,14 +762,6 @@
 // Rd=3Dmemh(Rt<<#u2+#U6)
=20
 //// Load word.
-// Load predicate: Fix for bug 5279.
-let mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriw_pred_V4 : LDInst<(outs PredRegs:$dst),
-            (ins MEMri:$addr),
-            "Error; should not emit",
-            []>,
-            Requires<[HasV4T]>;
-
 // Rd=3Dmemw(Re=3D#U6)
=20
 // Rd=3Dmemw(Rs+Rt<<#u2)
@@ -915,9 +769,8 @@
 def LDriw_indexed_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2),
                     "$dst=3Dmemw($src1+$src2<<#0)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (load (add (i32 IntRegs:$src1),
-                                          (i32 IntRegs:$src2)))))]>,
+                    [(set IntRegs:$dst, (load (add IntRegs:$src1,
+                                                   IntRegs:$src2)))]>,
                     Requires<[HasV4T]>;
=20
 // Rd=3Dmemw(Rs+Rt<<#u2)
@@ -925,10 +778,9 @@
 def LDriw_indexed_shl_V4 : LDInst<(outs IntRegs:$dst),
                     (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$offset),
                     "$dst=3Dmemw($src1+$src2<<#$offset)",
-                    [(set (i32 IntRegs:$dst),
-                          (i32 (load (add (i32 IntRegs:$src1),
-                                          (shl (i32 IntRegs:$src2),
-                                               u2ImmPred:$offset)))))]>,
+                    [(set IntRegs:$dst, (load (add IntRegs:$src1,
+                                              (shl IntRegs:$src2,
+                                                   u2ImmPred:$offset))))]>,
                     Requires<[HasV4T]>;
=20
 //// Load word conditionally.
@@ -1103,633 +955,6 @@
             "$src2 =3D $dst2">,
             Requires<[HasV4T]>;
=20
-/// Load from global offset
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrid_GP_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemd(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrid_GP_cPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemd(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrid_GP_cNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemd(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrid_GP_cdnPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemd(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrid_GP_cdnNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemd(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrib_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemb(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrib_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemb(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrib_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemb(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrib_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemb(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrib_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemb(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriub_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemub(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriub_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemub(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriub_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemub(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriub_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemub(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriub_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemub(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDrih_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemh(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrih_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrih_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrih_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDrih_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriuh_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemuh(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriuh_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemuh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriuh_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemuh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriuh_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemuh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriuh_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemuh(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDriw_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global, u16Imm:$offset),
-            "$dst=3Dmemw(#$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriw_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1) $dst=3Dmemw(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriw_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1) $dst=3Dmemw(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriw_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if ($src1.new) $dst=3Dmemw(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDriw_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset),
-            "if (!$src1.new) $dst=3Dmemw(##$global+$offset)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDd_GP_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemd(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rtt=3Dmemd(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDd_GP_cPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemd(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rtt=3Dmemd(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDd_GP_cNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemd(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rtt=3Dmemd(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDd_GP_cdnPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemd(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rtt=3Dmemd(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDd_GP_cdnNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemd(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDb_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemb(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemb(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDb_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemb(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemb(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDb_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemb(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemb(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDb_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemb(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemb(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDb_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemb(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDub_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemub(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemub(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDub_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemub(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rt=3Dmemub(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDub_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemub(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemub(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDub_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemub(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rt=3Dmemub(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDub_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemub(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDh_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemh(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDh_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDh_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDh_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDh_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDuh_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemuh(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemuh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDuh_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemuh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemuh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDuh_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemuh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemuh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDuh_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemuh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) Rt=3Dmemuh(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDuh_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemuh(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayLoad =3D 1, neverHasSideEffects =3D 1 in
-def LDw_GP_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$global),
-            "$dst=3Dmemw(#$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemw(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDw_GP_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1) $dst=3Dmemw(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rt=3Dmemw(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDw_GP_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1) $dst=3Dmemw(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) Rt=3Dmemw(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDw_GP_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if ($src1.new) $dst=3Dmemw(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-// if (!Pv) Rt=3Dmemw(##global)
-let mayLoad =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def LDw_GP_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$global),
-            "if (!$src1.new) $dst=3Dmemw(##$global)",
-            []>,
-            Requires<[HasV4T]>;
-
-
-
-def : Pat <(atomic_load_64 (HexagonCONST32_GP tglobaladdr:$global)),
-           (i64 (LDd_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_32 (HexagonCONST32_GP tglobaladdr:$global)),
-           (i32 (LDw_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_16 (HexagonCONST32_GP tglobaladdr:$global)),
-           (i32 (LDuh_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_8 (HexagonCONST32_GP tglobaladdr:$global)),
-           (i32 (LDub_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memw(#foo + 0)
-let AddedComplexity =3D 100 in
-def : Pat <(i64 (load (HexagonCONST32_GP tglobaladdr:$global))),
-           (i64 (LDd_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from Pd =3D load(globaladdress) -> Rd =3D memb(globaladdress), Pd =
=3D Rd
-let AddedComplexity =3D 100 in
-def : Pat <(i1 (load (HexagonCONST32_GP tglobaladdr:$global))),
-           (i1 (TFR_PdRs (i32 (LDb_GP_V4 tglobaladdr:$global))))>,
-           Requires<[HasV4T]>;
-
-// When the Interprocedural Global Variable optimizer realizes that a cert=
ain
-// global variable takes only two constant values, it shrinks the global to
-// a boolean. Catch those loads here in the following 3 patterns.
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (extloadi1 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDb_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (sextloadi1 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDb_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memb(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (extloadi8 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDb_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memb(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (sextloadi8 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDb_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (zextloadi1 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDub_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memub(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (zextloadi8 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDub_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memh(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (extloadi16 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDh_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memh(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (sextloadi16 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDh_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memuh(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (zextloadi16 (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDuh_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress) -> memw(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (load (HexagonCONST32_GP tglobaladdr:$global))),
-           (i32 (LDw_GP_V4 tglobaladdr:$global))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_64 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset)),
-           (i64 (LDrid_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_32 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset)),
-           (i32 (LDriw_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_16 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset)),
-           (i32 (LDriuh_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-            Requires<[HasV4T]>;
-
-def : Pat <(atomic_load_8 (add (HexagonCONST32_GP tglobaladdr:$global),
-                               u16ImmPred:$offset)),
-           (i32 (LDriub_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memd(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i64 (load (add (HexagonCONST32_GP tglobaladdr:$global),
-                           u16ImmPred:$offset))),
-           (i64 (LDrid_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memb(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (extloadi8 (add (HexagonCONST32_GP tglobaladdr:$global),
-                           u16ImmPred:$offset))),
-           (i32 (LDrib_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memb(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (sextloadi8 (add (HexagonCONST32_GP tglobaladdr:$global),
-                            u16ImmPred:$offset))),
-           (i32 (LDrib_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memub(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (zextloadi8 (add (HexagonCONST32_GP tglobaladdr:$global),
-                            u16ImmPred:$offset))),
-           (i32 (LDriub_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memuh(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (extloadi16 (add (HexagonCONST32_GP tglobaladdr:$global),
-                            u16ImmPred:$offset))),
-           (i32 (LDrih_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memh(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (sextloadi16 (add (HexagonCONST32_GP tglobaladdr:$global),
-                             u16ImmPred:$offset))),
-           (i32 (LDrih_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-           Requires<[HasV4T]>;
-
-
-// Map from load(globaladdress + x) -> memuh(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (zextloadi16 (add (HexagonCONST32_GP tglobaladdr:$global),
-                             u16ImmPred:$offset))),
-           (i32 (LDriuh_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-            Requires<[HasV4T]>;
-
-// Map from load(globaladdress + x) -> memw(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat <(i32 (load (add (HexagonCONST32_GP tglobaladdr:$global),
-                      u16ImmPred:$offset))),
-           (i32 (LDriw_GP_V4 tglobaladdr:$global, u16ImmPred:$offset))>,
-            Requires<[HasV4T]>;
-
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // LD -
@@ -1746,70 +971,18 @@
 ///    last operand.
 ///
=20
+// Store doubleword.
 // memd(Re=3D#U6)=3DRtt
-def STrid_abs_setimm_V4 : STInst<(outs IntRegs:$dst1),
-            (ins DoubleRegs:$src1, u6Imm:$src2),
-            "memd($dst1=3D#$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memb(Re=3D#U6)=3DRs
-def STrib_abs_setimm_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, u6Imm:$src2),
-            "memb($dst1=3D#$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memh(Re=3D#U6)=3DRs
-def STrih_abs_setimm_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, u6Imm:$src2),
-            "memh($dst1=3D#$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memw(Re=3D#U6)=3DRs
-def STriw_abs_setimm_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, u6Imm:$src2),
-            "memw($dst1=3D#$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memd(Re=3D#U6)=3DRtt
-def STrid_abs_set_V4 : STInst<(outs IntRegs:$dst1),
-            (ins DoubleRegs:$src1, globaladdress:$src2),
-            "memd($dst1=3D##$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memb(Re=3D#U6)=3DRs
-def STrib_abs_set_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, globaladdress:$src2),
-            "memb($dst1=3D##$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memh(Re=3D#U6)=3DRs
-def STrih_abs_set_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, globaladdress:$src2),
-            "memh($dst1=3D##$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
-// memw(Re=3D#U6)=3DRs
-def STriw_abs_set_V4 : STInst<(outs IntRegs:$dst1),
-            (ins IntRegs:$src1, globaladdress:$src2),
-            "memw($dst1=3D##$src2) =3D $src1",
-            []>,
-            Requires<[HasV4T]>;
-
+// TODO: needs to be implemented
+
+// memd(Rs+#s11:3)=3DRtt
 // memd(Rs+Ru<<#u2)=3DRtt
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def STrid_indexed_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$src3, DoubleRegs:$sr=
c4),
             "memd($src1+$src2<<#$src3) =3D $src4",
-            [(store (i64 DoubleRegs:$src4),
-                    (add (i32 IntRegs:$src1),
-                         (shl (i32 IntRegs:$src2), u2ImmPred:$src3)))]>,
+            [(store DoubleRegs:$src4, (add IntRegs:$src1,
+                                      (shl IntRegs:$src2, u2ImmPred:$src3)=
))]>,
             Requires<[HasV4T]>;
=20
 // memd(Ru<<#u2+#U6)=3DRtt
@@ -1817,9 +990,9 @@
 def STrid_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, u2Imm:$src2, u6Imm:$src3, DoubleRegs:$src4=
),
             "memd($src1<<#$src2+#$src3) =3D $src4",
-            [(store (i64 DoubleRegs:$src4),
-                    (add (shl (i32 IntRegs:$src1), u2ImmPred:$src2),
-                         u6ImmPred:$src3))]>,
+            [(store DoubleRegs:$src4, (shl IntRegs:$src1,
+                                      (add u2ImmPred:$src2,
+                                           u6ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // memd(Rx++#s4:3)=3DRtt
@@ -1836,8 +1009,7 @@
 // if ([!]Pv[.new]) memd(Rs+#u6:3)=3DRtt
 // if (Pv) memd(Rs+#u6:3)=3DRtt
 // if (Pv.new) memd(Rs+#u6:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, DoubleRegs:$src2),
             "if ($src1.new) memd($addr) =3D $src2",
@@ -1846,8 +1018,7 @@
=20
 // if (!Pv) memd(Rs+#u6:3)=3DRtt
 // if (!Pv.new) memd(Rs+#u6:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, DoubleRegs:$src2),
             "if (!$src1.new) memd($addr) =3D $src2",
@@ -1856,8 +1027,7 @@
=20
 // if (Pv) memd(Rs+#u6:3)=3DRtt
 // if (Pv.new) memd(Rs+#u6:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_3Imm:$src3,
                  DoubleRegs:$src4),
@@ -1867,8 +1037,7 @@
=20
 // if (!Pv) memd(Rs+#u6:3)=3DRtt
 // if (!Pv.new) memd(Rs+#u6:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_3Imm:$src3,
                  DoubleRegs:$src4),
@@ -1878,8 +1047,7 @@
=20
 // if ([!]Pv[.new]) memd(Rs+Ru<<#u2)=3DRtt
 // if (Pv) memd(Rs+Ru<<#u2)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_shl_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  DoubleRegs:$src5),
@@ -1888,17 +1056,15 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memd(Rs+Ru<<#u2)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_shl_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  DoubleRegs:$src5),
-            "if ($src1.new) memd($src2+$src3<<#$src4) =3D $src5",
+            "if ($src1) memd($src2+$src3<<#$src4) =3D $src5",
             []>,
             Requires<[HasV4T]>;
 // if (!Pv) memd(Rs+Ru<<#u2)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_shl_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  DoubleRegs:$src5),
@@ -1906,8 +1072,7 @@
             []>,
             Requires<[HasV4T]>;
 // if (!Pv.new) memd(Rs+Ru<<#u2)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrid_indexed_shl_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  DoubleRegs:$src5),
@@ -1918,8 +1083,7 @@
 // if ([!]Pv[.new]) memd(Rx++#s4:3)=3DRtt
 // if (Pv) memd(Rx++#s4:3)=3DRtt
 // if (Pv.new) memd(Rx++#s4:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def POST_STdri_cdnPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, DoubleRegs:$src2, IntRegs:$src3,
                  s4_3Imm:$offset),
@@ -1930,8 +1094,7 @@
=20
 // if (!Pv) memd(Rx++#s4:3)=3DRtt
 // if (!Pv.new) memd(Rx++#s4:3)=3DRtt
-let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let AddedComplexity =3D 10, mayStore =3D 1, neverHasSideEffects =3D 1 in
 def POST_STdri_cdnNotPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, DoubleRegs:$src2, IntRegs:$src3,
                  s4_3Imm:$offset),
@@ -1942,12 +1105,15 @@
=20
=20
 // Store byte.
+// memb(Re=3D#U6)=3DRt
+// TODO: needs to be implemented.
+// memb(Rs+#s11:0)=3DRt
 // memb(Rs+#u6:0)=3D#S8
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def STrib_imm_V4 : STInst<(outs),
             (ins IntRegs:$src1, u6_0Imm:$src2, s8Imm:$src3),
             "memb($src1+#$src2) =3D #$src3",
-            [(truncstorei8 s8ImmPred:$src3, (add (i32 IntRegs:$src1),
+            [(truncstorei8 s8ImmPred:$src3, (add IntRegs:$src1,
                                                  u6_0ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
@@ -1956,10 +1122,9 @@
 def STrib_indexed_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$src3, IntRegs:$src4),
             "memb($src1+$src2<<#$src3) =3D $src4",
-            [(truncstorei8 (i32 IntRegs:$src4),
-                           (add (i32 IntRegs:$src1),
-                                (shl (i32 IntRegs:$src2),
-                                          u2ImmPred:$src3)))]>,
+            [(truncstorei8 IntRegs:$src4, (add IntRegs:$src1,
+                                          (shl IntRegs:$src2,
+                                               u2ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // memb(Ru<<#u2+#U6)=3DRt
@@ -1967,9 +1132,9 @@
 def STrib_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, u2Imm:$src2, u6Imm:$src3, IntRegs:$src4),
             "memb($src1<<#$src2+#$src3) =3D $src4",
-            [(truncstorei8 (i32 IntRegs:$src4),
-                           (add (shl (i32 IntRegs:$src1), u2ImmPred:$src2),
-                                u6ImmPred:$src3))]>,
+            [(truncstorei8 IntRegs:$src4, (shl IntRegs:$src1,
+                                          (add u2ImmPred:$src2,
+                                               u6ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // memb(Rx++#s4:0:circ(Mu))=3DRt
@@ -1983,8 +1148,7 @@
 // if ([!]Pv[.new]) memb(#u6)=3DRt
 // if ([!]Pv[.new]) memb(Rs+#u6:0)=3D#S6
 // if (Pv) memb(Rs+#u6:0)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_imm_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, s6Imm:$src4=
),
             "if ($src1) memb($src2+#$src3) =3D #$src4",
@@ -1992,8 +1156,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rs+#u6:0)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_imm_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, s6Imm:$src4=
),
             "if ($src1.new) memb($src2+#$src3) =3D #$src4",
@@ -2001,8 +1164,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rs+#u6:0)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_imm_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, s6Imm:$src4=
),
             "if (!$src1) memb($src2+#$src3) =3D #$src4",
@@ -2010,8 +1172,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+#u6:0)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_imm_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, s6Imm:$src4=
),
             "if (!$src1.new) memb($src2+#$src3) =3D #$src4",
@@ -2021,8 +1182,7 @@
 // if ([!]Pv[.new]) memb(Rs+#u6:0)=3DRt
 // if (Pv) memb(Rs+#u6:0)=3DRt
 // if (Pv.new) memb(Rs+#u6:0)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memb($addr) =3D $src2",
@@ -2031,8 +1191,7 @@
=20
 // if (!Pv) memb(Rs+#u6:0)=3DRt
 // if (!Pv.new) memb(Rs+#u6:0)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memb($addr) =3D $src2",
@@ -2042,8 +1201,7 @@
 // if (Pv) memb(Rs+#u6:0)=3DRt
 // if (!Pv) memb(Rs+#u6:0)=3DRt
 // if (Pv.new) memb(Rs+#u6:0)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memb($src2+#$src3) =3D $src4",
@@ -2051,8 +1209,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+#u6:0)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memb($src2+#$src3) =3D $src4",
@@ -2061,8 +1218,7 @@
=20
 // if ([!]Pv[.new]) memb(Rs+Ru<<#u2)=3DRt
 // if (Pv) memb(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2071,8 +1227,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2081,8 +1236,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2091,8 +1245,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2103,8 +1256,7 @@
 // if ([!]Pv[.new]) memb(Rx++#s4:0)=3DRt
 // if (Pv) memb(Rx++#s4:0)=3DRt
 // if (Pv.new) memb(Rx++#s4:0)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cdnPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if ($src1.new) memb($src3++#$offset) =3D $src2",
@@ -2113,8 +1265,7 @@
=20
 // if (!Pv) memb(Rx++#s4:0)=3DRt
 // if (!Pv.new) memb(Rx++#s4:0)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cdnNotPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if (!$src1.new) memb($src3++#$offset) =3D $src2",
@@ -2123,15 +1274,20 @@
=20
=20
 // Store halfword.
+// memh(Re=3D#U6)=3DRt.H
 // TODO: needs to be implemented
-// memh(Re=3D#U6)=3DRt.H
+
+// memh(Re=3D#U6)=3DRt
+// TODO: needs to be implemented
+
 // memh(Rs+#s11:1)=3DRt.H
+// memh(Rs+#s11:1)=3DRt
 // memh(Rs+#u6:1)=3D#S8
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def STrih_imm_V4 : STInst<(outs),
             (ins IntRegs:$src1, u6_1Imm:$src2, s8Imm:$src3),
             "memh($src1+#$src2) =3D #$src3",
-            [(truncstorei16 s8ImmPred:$src3, (add (i32 IntRegs:$src1),
+            [(truncstorei16 s8ImmPred:$src3, (add IntRegs:$src1,
                                                   u6_1ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
@@ -2143,10 +1299,9 @@
 def STrih_indexed_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$src3, IntRegs:$src4),
             "memh($src1+$src2<<#$src3) =3D $src4",
-            [(truncstorei16 (i32 IntRegs:$src4),
-                            (add (i32 IntRegs:$src1),
-                                 (shl (i32 IntRegs:$src2),
-                                      u2ImmPred:$src3)))]>,
+            [(truncstorei16 IntRegs:$src4, (add IntRegs:$src1,
+                                          (shl IntRegs:$src2,
+                                               u2ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // memh(Ru<<#u2+#U6)=3DRt.H
@@ -2155,9 +1310,9 @@
 def STrih_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, u2Imm:$src2, u6Imm:$src3, IntRegs:$src4),
             "memh($src1<<#$src2+#$src3) =3D $src4",
-            [(truncstorei16 (i32 IntRegs:$src4),
-                            (add (shl (i32 IntRegs:$src1), u2ImmPred:$src2=
),
-                                 u6ImmPred:$src3))]>,
+            [(truncstorei16 IntRegs:$src4, (shl IntRegs:$src1,
+                                          (add u2ImmPred:$src2,
+                                               u6ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // memh(Rx++#s4:1:circ(Mu))=3DRt.H
@@ -2168,14 +1323,17 @@
 // memh(Rx++Mu)=3DRt
 // memh(Rx++Mu:brev)=3DRt.H
 // memh(Rx++Mu:brev)=3DRt
+// memh(gp+#u16:1)=3DRt.H
 // memh(gp+#u16:1)=3DRt
+
+
+// Store halfword conditionally.
 // if ([!]Pv[.new]) memh(#u6)=3DRt.H
 // if ([!]Pv[.new]) memh(#u6)=3DRt
=20
 // if ([!]Pv[.new]) memh(Rs+#u6:1)=3D#S6
 // if (Pv) memh(Rs+#u6:1)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_imm_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, s6Imm:$src4=
),
             "if ($src1) memh($src2+#$src3) =3D #$src4",
@@ -2183,8 +1341,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+#u6:1)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_imm_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, s6Imm:$src4=
),
             "if ($src1.new) memh($src2+#$src3) =3D #$src4",
@@ -2192,8 +1349,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rs+#u6:1)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_imm_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, s6Imm:$src4=
),
             "if (!$src1) memh($src2+#$src3) =3D #$src4",
@@ -2201,8 +1357,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+#u6:1)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_imm_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, s6Imm:$src4=
),
             "if (!$src1.new) memh($src2+#$src3) =3D #$src4",
@@ -2215,8 +1370,7 @@
 // if ([!]Pv[.new]) memh(Rs+#u6:1)=3DRt
 // if (Pv) memh(Rs+#u6:1)=3DRt
 // if (Pv.new) memh(Rs+#u6:1)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memh($addr) =3D $src2",
@@ -2225,8 +1379,7 @@
=20
 // if (!Pv) memh(Rs+#u6:1)=3DRt
 // if (!Pv.new) memh(Rs+#u6:1)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memh($addr) =3D $src2",
@@ -2234,8 +1387,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+#u6:1)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memh($src2+#$src3) =3D $src4",
@@ -2243,8 +1395,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+#u6:1)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memh($src2+#$src3) =3D $src4",
@@ -2254,8 +1405,7 @@
 // if ([!]Pv[.new]) memh(Rs+Ru<<#u2)=3DRt.H
 // if ([!]Pv[.new]) memh(Rs+Ru<<#u2)=3DRt
 // if (Pv) memh(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2264,8 +1414,6 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
 def STrih_indexed_shl_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2274,8 +1422,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2284,8 +1431,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2299,8 +1445,7 @@
 // if ([!]Pv[.new]) memh(Rx++#s4:1)=3DRt
 // if (Pv) memh(Rx++#s4:1)=3DRt
 // if (Pv.new) memh(Rx++#s4:1)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cdnPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if ($src1.new) memh($src3++#$offset) =3D $src2",
@@ -2309,8 +1454,7 @@
=20
 // if (!Pv) memh(Rx++#s4:1)=3DRt
 // if (!Pv.new) memh(Rx++#s4:1)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cdnNotPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if (!$src1.new) memh($src3++#$offset) =3D $src2",
@@ -2322,22 +1466,13 @@
 // memw(Re=3D#U6)=3DRt
 // TODO: Needs to be implemented.
=20
-// Store predicate:
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_pred_V4 : STInst<(outs),
-            (ins MEMri:$addr, PredRegs:$src1),
-            "Error; should not emit",
-            []>,
-            Requires<[HasV4T]>;
-
-
+// memw(Rs+#s11:2)=3DRt
 // memw(Rs+#u6:2)=3D#S8
 let AddedComplexity =3D 10, isPredicable =3D 1 in
 def STriw_imm_V4 : STInst<(outs),
             (ins IntRegs:$src1, u6_2Imm:$src2, s8Imm:$src3),
             "memw($src1+#$src2) =3D #$src3",
-            [(store s8ImmPred:$src3, (add (i32 IntRegs:$src1),
-                                          u6_2ImmPred:$src2))]>,
+            [(store s8ImmPred:$src3, (add IntRegs:$src1, u6_2ImmPred:$src2=
))]>,
             Requires<[HasV4T]>;
=20
 // memw(Rs+Ru<<#u2)=3DRt
@@ -2345,9 +1480,8 @@
 def STriw_indexed_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, IntRegs:$src2, u2Imm:$src3, IntRegs:$src4),
             "memw($src1+$src2<<#$src3) =3D $src4",
-            [(store (i32 IntRegs:$src4), (add (i32 IntRegs:$src1),
-                                    (shl (i32 IntRegs:$src2),
-                                         u2ImmPred:$src3)))]>,
+            [(store IntRegs:$src4, (add IntRegs:$src1,
+                                    (shl IntRegs:$src2, u2ImmPred:$src3)))=
]>,
             Requires<[HasV4T]>;
=20
 // memw(Ru<<#u2+#U6)=3DRt
@@ -2355,9 +1489,8 @@
 def STriw_shl_V4 : STInst<(outs),
             (ins IntRegs:$src1, u2Imm:$src2, u6Imm:$src3, IntRegs:$src4),
             "memw($src1<<#$src2+#$src3) =3D $src4",
-            [(store (i32 IntRegs:$src4),
-                    (add (shl (i32 IntRegs:$src1), u2ImmPred:$src2),
-                              u6ImmPred:$src3))]>,
+            [(store IntRegs:$src4, (shl IntRegs:$src1,
+                                   (add u2ImmPred:$src2, u6ImmPred:$src3))=
)]>,
             Requires<[HasV4T]>;
=20
 // memw(Rx++#s4:2)=3DRt
@@ -2369,11 +1502,12 @@
=20
=20
 // Store word conditionally.
+// if ([!]Pv[.new]) memw(#u6)=3DRt
+// TODO: Needs to be implemented.
=20
 // if ([!]Pv[.new]) memw(Rs+#u6:2)=3D#S6
 // if (Pv) memw(Rs+#u6:2)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_imm_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, s6Imm:$src4=
),
             "if ($src1) memw($src2+#$src3) =3D #$src4",
@@ -2381,8 +1515,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rs+#u6:2)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_imm_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, s6Imm:$src4=
),
             "if ($src1.new) memw($src2+#$src3) =3D #$src4",
@@ -2390,8 +1523,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rs+#u6:2)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_imm_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, s6Imm:$src4=
),
             "if (!$src1) memw($src2+#$src3) =3D #$src4",
@@ -2399,8 +1531,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+#u6:2)=3D#S6
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_imm_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, s6Imm:$src4=
),
             "if (!$src1.new) memw($src2+#$src3) =3D #$src4",
@@ -2410,8 +1541,7 @@
 // if ([!]Pv[.new]) memw(Rs+#u6:2)=3DRt
 // if (Pv) memw(Rs+#u6:2)=3DRt
 // if (Pv.new) memw(Rs+#u6:2)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memw($addr) =3D $src2",
@@ -2420,8 +1550,7 @@
=20
 // if (!Pv) memw(Rs+#u6:2)=3DRt
 // if (!Pv.new) memw(Rs+#u6:2)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memw($addr) =3D $src2",
@@ -2431,8 +1560,7 @@
 // if (Pv) memw(Rs+#u6:2)=3DRt
 // if (!Pv) memw(Rs+#u6:2)=3DRt
 // if (Pv.new) memw(Rs+#u6:2)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memw($src2+#$src3) =3D $src4",
@@ -2440,8 +1568,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+#u6:2)=3DRt
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memw($src2+#$src3) =3D $src4",
@@ -2450,8 +1577,7 @@
=20
 // if ([!]Pv[.new]) memw(Rs+Ru<<#u2)=3DRt
 // if (Pv) memw(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2460,8 +1586,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cdnPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2470,8 +1595,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2480,8 +1604,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+Ru<<#u2)=3DRt
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cdnNotPt_V4 : STInst<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -2492,8 +1615,7 @@
 // if ([!]Pv[.new]) memw(Rx++#s4:2)=3DRt
 // if (Pv) memw(Rx++#s4:2)=3DRt
 // if (Pv.new) memw(Rx++#s4:2)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cdnPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if ($src1.new) memw($src3++#$offset) =3D $src2",
@@ -2502,8 +1624,7 @@
=20
 // if (!Pv) memw(Rx++#s4:2)=3DRt
 // if (!Pv.new) memw(Rx++#s4:2)=3DRt
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cdnNotPt_V4 : STInstPI<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if (!$src1.new) memw($src3++#$offset) =3D $src2",
@@ -2511,439 +1632,6 @@
             Requires<[HasV4T]>;
=20
=20
-/// store to global address
-
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrid_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, u16Imm:$offset, DoubleRegs:$src),
-            "memd(#$global+$offset) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrid_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        DoubleRegs:$src2),
-            "if ($src1) memd(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrid_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        DoubleRegs:$src2),
-            "if (!$src1) memd(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrid_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        DoubleRegs:$src2),
-            "if ($src1.new) memd(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrid_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        DoubleRegs:$src2),
-            "if (!$src1.new) memd(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrib_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, u16Imm:$offset, IntRegs:$src),
-            "memb(#$global+$offset) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrib_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memb(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrib_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memb(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrib_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memb(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrib_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memb(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrih_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, u16Imm:$offset, IntRegs:$src),
-            "memh(#$global+$offset) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrih_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memh(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrih_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memh(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrih_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memh(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STrih_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memh(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, u16Imm:$offset, IntRegs:$src),
-            "memw(#$global+$offset) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STriw_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memw(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STriw_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memw(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STriw_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memw(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STriw_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memw(##$global+$offset) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-// memd(#global)=3DRtt
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STd_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, DoubleRegs:$src),
-            "memd(#$global) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memd(##global) =3D Rtt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STd_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, DoubleRegs:$src2),
-            "if ($src1) memd(##$global) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memd(##global) =3D Rtt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STd_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, DoubleRegs:$src2),
-            "if (!$src1) memd(##$global) =3D $src2",
-            []>,
-              Requires<[HasV4T]>;
-
-// if (Pv) memd(##global) =3D Rtt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STd_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, DoubleRegs:$src2),
-            "if ($src1.new) memd(##$global) =3D $src2",
-            []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memd(##global) =3D Rtt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STd_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, DoubleRegs:$src2),
-            "if (!$src1.new) memd(##$global) =3D $src2",
-            []>,
-            Requires<[HasV4T]>;
-
-// memb(#global)=3DRt
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memb(#$global) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STb_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memb(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STb_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memb(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STb_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memb(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STb_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memb(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// memh(#global)=3DRt
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memh(#$global) =3D $src",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STh_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memh(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STh_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memh(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STh_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memh(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STh_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memh(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// memw(#global)=3DRt
-let isPredicable =3D 1, mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_V4 : STInst<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memw(#$global) =3D $src",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STw_GP_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memw(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STw_GP_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memw(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STw_GP_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memw(##$global) =3D $src2",
-              []>,
-              Requires<[HasV4T]>;
-
-// if (!Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def STw_GP_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memw(##$global) =3D $src2",
-            []>,
-              Requires<[HasV4T]>;
-
-// 64 bit atomic store
-def : Pat <(atomic_store_64 (HexagonCONST32_GP tglobaladdr:$global),
-                            (i64 DoubleRegs:$src1)),
-           (STd_GP_V4 tglobaladdr:$global, (i64 DoubleRegs:$src1))>,
-           Requires<[HasV4T]>;
-
-// Map from store(globaladdress) -> memd(#foo)
-let AddedComplexity =3D 100 in
-def : Pat <(store (i64 DoubleRegs:$src1), (HexagonCONST32_GP tglobaladdr:$=
global)),
-           (STd_GP_V4 tglobaladdr:$global, (i64 DoubleRegs:$src1))>,
-           Requires<[HasV4T]>;
-
-// 8 bit atomic store
-def : Pat < (atomic_store_8 (HexagonCONST32_GP tglobaladdr:$global),
-                            (i32 IntRegs:$src1)),
-            (STb_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-              Requires<[HasV4T]>;
-
-// Map from store(globaladdress) -> memb(#foo)
-let AddedComplexity =3D 100 in
-def : Pat<(truncstorei8 (i32 IntRegs:$src1),
-          (HexagonCONST32_GP tglobaladdr:$global)),
-          (STb_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from "i1 =3D constant<-1>; memw(CONST32(#foo)) =3D i1"
-//       to "r0 =3D 1; memw(#foo) =3D r0"
-let AddedComplexity =3D 100 in
-def : Pat<(store (i1 -1), (HexagonCONST32_GP tglobaladdr:$global)),
-          (STb_GP_V4 tglobaladdr:$global, (TFRI 1))>,
-          Requires<[HasV4T]>;
-
-def : Pat<(atomic_store_16 (HexagonCONST32_GP tglobaladdr:$global),
-                           (i32 IntRegs:$src1)),
-          (STh_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress) -> memh(#foo)
-let AddedComplexity =3D 100 in
-def : Pat<(truncstorei16 (i32 IntRegs:$src1),
-                         (HexagonCONST32_GP tglobaladdr:$global)),
-          (STh_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-// 32 bit atomic store
-def : Pat<(atomic_store_32 (HexagonCONST32_GP tglobaladdr:$global),
-                           (i32 IntRegs:$src1)),
-          (STw_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress) -> memw(#foo)
-let AddedComplexity =3D 100 in
-def : Pat<(store (i32 IntRegs:$src1), (HexagonCONST32_GP tglobaladdr:$glob=
al)),
-          (STw_GP_V4 tglobaladdr:$global, (i32 IntRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-def : Pat<(atomic_store_64 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset),
-                           (i64 DoubleRegs:$src1)),
-          (STrid_GP_V4 tglobaladdr:$global, u16ImmPred:$offset,
-                                            (i64 DoubleRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-def : Pat<(atomic_store_32 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset),
-                           (i32 IntRegs:$src1)),
-          (STriw_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-def : Pat<(atomic_store_16 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset),
-                           (i32 IntRegs:$src1)),
-          (STrih_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-def : Pat<(atomic_store_8 (add (HexagonCONST32_GP tglobaladdr:$global),
-                               u16ImmPred:$offset),
-                          (i32 IntRegs:$src1)),
-          (STrib_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress + x) -> memd(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat<(store (i64 DoubleRegs:$src1), (add (HexagonCONST32_GP tglobalad=
dr:$global),
-                                        u16ImmPred:$offset)),
-          (STrid_GP_V4 tglobaladdr:$global, u16ImmPred:$offset,
-                                            (i64 DoubleRegs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress + x) -> memb(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat<(truncstorei8 (i32 IntRegs:$src1),
-                        (add (HexagonCONST32_GP tglobaladdr:$global),
-                             u16ImmPred:$offset)),
-          (STrib_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress + x) -> memh(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat<(truncstorei16 (i32 IntRegs:$src1),
-                         (add (HexagonCONST32_GP tglobaladdr:$global),
-                              u16ImmPred:$offset)),
-          (STrih_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-// Map from store(globaladdress + x) -> memw(#foo + x)
-let AddedComplexity =3D 100 in
-def : Pat<(store (i32 IntRegs:$src1),
-                 (add (HexagonCONST32_GP tglobaladdr:$global),
-                                u16ImmPred:$offset)),
-          (STriw_GP_V4 tglobaladdr:$global, u16ImmPred:$offset, (i32 IntRe=
gs:$src1))>,
-          Requires<[HasV4T]>;
-
-
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D
 // ST -
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D
@@ -3008,19 +1696,11 @@
             []>,
             Requires<[HasV4T]>;
=20
-// memb(#global)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_nv_V4 : NVInst_V4<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memb(#$global) =3D $src.new",
-            []>,
-            Requires<[HasV4T]>;
=20
 // Store new-value byte conditionally.
 // if ([!]Pv[.new]) memb(#u6)=3DNt.new
 // if (Pv) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1) memb($addr) =3D $src2.new",
@@ -3028,8 +1708,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memb($addr) =3D $src2.new",
@@ -3037,8 +1716,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1) memb($addr) =3D $src2.new",
@@ -3046,8 +1724,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memb($addr) =3D $src2.new",
@@ -3055,8 +1732,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1) memb($src2+#$src3) =3D $src4.new",
@@ -3064,8 +1740,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memb($src2+#$src3) =3D $src4.new",
@@ -3073,8 +1748,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1) memb($src2+#$src3) =3D $src4.new",
@@ -3082,8 +1756,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+#u6:0)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrib_indexed_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_0Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memb($src2+#$src3) =3D $src4.new",
@@ -3093,8 +1766,7 @@
=20
 // if ([!]Pv[.new]) memb(Rs+Ru<<#u2)=3DNt.new
 // if (Pv) memb(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3103,8 +1775,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3113,8 +1784,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3123,8 +1793,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrib_indexed_shl_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3134,8 +1803,7 @@
=20
 // if ([!]Pv[.new]) memb(Rx++#s4:0)=3DNt.new
 // if (Pv) memb(Rx++#s4:0)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if ($src1) memb($src3++#$offset) =3D $src2.new",
@@ -3143,8 +1811,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memb(Rx++#s4:0)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cdnPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if ($src1.new) memb($src3++#$offset) =3D $src2.new",
@@ -3152,8 +1819,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memb(Rx++#s4:0)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if (!$src1) memb($src3++#$offset) =3D $src2.new",
@@ -3161,8 +1827,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memb(Rx++#s4:0)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STbri_cdnNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_0Imm:$of=
fset),
             "if (!$src1.new) memb($src3++#$offset) =3D $src2.new",
@@ -3224,14 +1889,6 @@
             []>,
             Requires<[HasV4T]>;
=20
-// memh(#global)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_nv_V4 : NVInst_V4<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memh(#$global) =3D $src.new",
-            []>,
-            Requires<[HasV4T]>;
-
=20
 // Store new-value halfword conditionally.
=20
@@ -3239,8 +1896,7 @@
=20
 // if ([!]Pv[.new]) memh(Rs+#u6:1)=3DNt.new
 // if (Pv) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1) memh($addr) =3D $src2.new",
@@ -3248,8 +1904,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memh($addr) =3D $src2.new",
@@ -3257,8 +1912,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1) memh($addr) =3D $src2.new",
@@ -3266,8 +1920,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memh($addr) =3D $src2.new",
@@ -3275,8 +1928,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1) memh($src2+#$src3) =3D $src4.new",
@@ -3284,8 +1936,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memh($src2+#$src3) =3D $src4.new",
@@ -3293,8 +1944,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1) memh($src2+#$src3) =3D $src4.new",
@@ -3302,8 +1952,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+#u6:1)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STrih_indexed_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_1Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memh($src2+#$src3) =3D $src4.new",
@@ -3312,8 +1961,7 @@
=20
 // if ([!]Pv[.new]) memh(Rs+Ru<<#u2)=3DNt.new
 // if (Pv) memh(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3322,8 +1970,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3332,8 +1979,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3342,8 +1988,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STrih_indexed_shl_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3353,8 +1998,7 @@
=20
 // if ([!]Pv[]) memh(Rx++#s4:1)=3DNt.new
 // if (Pv) memh(Rx++#s4:1)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if ($src1) memh($src3++#$offset) =3D $src2.new",
@@ -3362,8 +2006,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memh(Rx++#s4:1)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cdnPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if ($src1.new) memh($src3++#$offset) =3D $src2.new",
@@ -3371,8 +2014,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memh(Rx++#s4:1)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if (!$src1) memh($src3++#$offset) =3D $src2.new",
@@ -3380,8 +2022,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memh(Rx++#s4:1)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_SThri_cdnNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_1Imm:$of=
fset),
             "if (!$src1.new) memh($src3++#$offset) =3D $src2.new",
@@ -3444,12 +2085,6 @@
             []>,
             Requires<[HasV4T]>;
=20
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_nv_V4 : NVInst_V4<(outs),
-            (ins globaladdress:$global, IntRegs:$src),
-            "memw(#$global) =3D $src.new",
-            []>,
-            Requires<[HasV4T]>;
=20
 // Store new-value word conditionally.
=20
@@ -3457,8 +2092,7 @@
=20
 // if ([!]Pv[.new]) memw(Rs+#u6:2)=3DNt.new
 // if (Pv) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1) memw($addr) =3D $src2.new",
@@ -3466,8 +2100,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if ($src1.new) memw($addr) =3D $src2.new",
@@ -3475,8 +2108,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1) memw($addr) =3D $src2.new",
@@ -3484,8 +2116,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, MEMri:$addr, IntRegs:$src2),
             "if (!$src1.new) memw($addr) =3D $src2.new",
@@ -3493,8 +2124,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1) memw($src2+#$src3) =3D $src4.new",
@@ -3502,8 +2132,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if ($src1.new) memw($src2+#$src3) =3D $src4.new",
@@ -3511,8 +2140,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1) memw($src2+#$src3) =3D $src4.new",
@@ -3520,8 +2148,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+#u6:2)=3DNt.new
-let mayStore =3D 1, neverHasSideEffects =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, neverHasSideEffects =3D 1 in
 def STriw_indexed_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, u6_2Imm:$src3, IntRegs:$sr=
c4),
             "if (!$src1.new) memw($src2+#$src3) =3D $src4.new",
@@ -3531,8 +2158,7 @@
=20
 // if ([!]Pv[.new]) memw(Rs+Ru<<#u2)=3DNt.new
 // if (Pv) memw(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3541,8 +2167,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cdnPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3551,8 +2176,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3561,8 +2185,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rs+Ru<<#u2)=3DNt.new
-let mayStore =3D 1, AddedComplexity =3D 10,
-    isPredicated =3D 1 in
+let mayStore =3D 1, AddedComplexity =3D 10 in
 def STriw_indexed_shl_cdnNotPt_nv_V4 : NVInst_V4<(outs),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, u2Imm:$src4,
                  IntRegs:$src5),
@@ -3572,8 +2195,7 @@
=20
 // if ([!]Pv[.new]) memw(Rx++#s4:2)=3DNt.new
 // if (Pv) memw(Rx++#s4:2)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if ($src1) memw($src3++#$offset) =3D $src2.new",
@@ -3581,8 +2203,7 @@
             Requires<[HasV4T]>;
=20
 // if (Pv.new) memw(Rx++#s4:2)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cdnPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if ($src1.new) memw($src3++#$offset) =3D $src2.new",
@@ -3590,8 +2211,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv) memw(Rx++#s4:2)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if (!$src1) memw($src3++#$offset) =3D $src2.new",
@@ -3599,8 +2219,7 @@
             Requires<[HasV4T]>;
=20
 // if (!Pv.new) memw(Rx++#s4:2)=3DNt.new
-let mayStore =3D 1, hasCtrlDep =3D 1,
-    isPredicated =3D 1 in
+let mayStore =3D 1, hasCtrlDep =3D 1 in
 def POST_STwri_cdnNotPt_nv_V4 : NVInstPI_V4<(outs IntRegs:$dst),
             (ins PredRegs:$src1, IntRegs:$src2, IntRegs:$src3, s4_2Imm:$of=
fset),
             "if (!$src1.new) memw($src3++#$offset) =3D $src2.new",
@@ -3608,199 +2227,6 @@
             Requires<[HasV4T]>;
=20
=20
-
-// if (Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memb(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memb(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memb(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memb(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STb_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memb(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memh(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memh(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memh(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memh(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STh_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memh(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1) memw(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1) memw(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if ($src1.new) memw(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-// if (!Pv) memw(##global) =3D Rt
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STw_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, IntRegs:$src2),
-            "if (!$src1.new) memw(##$global) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrib_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memb(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrib_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memb(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrib_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memb(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrib_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memb(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrih_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memh(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrih_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memh(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrih_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memh(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STrih_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memh(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_GP_cPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1) memw(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_GP_cNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1) memw(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_GP_cdnPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if ($src1.new) memw(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
-let mayStore =3D 1, neverHasSideEffects =3D 1 in
-def STriw_GP_cdnNotPt_nv_V4 : NVInst_V4<(outs),
-            (ins PredRegs:$src1, globaladdress:$global, u16Imm:$offset,
-                                                        IntRegs:$src2),
-            "if (!$src1.new) memw(##$global+$offset) =3D $src2.new",
-            []>,
-            Requires<[HasV4T]>;
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // NV/ST -
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -3990,18 +2416,16 @@
 def ADDr_ADDri_V4 : MInst<(outs IntRegs:$dst),
           (ins IntRegs:$src1, IntRegs:$src2, s6Imm:$src3),
           "$dst =3D add($src1, add($src2, #$src3))",
-          [(set (i32 IntRegs:$dst),
-           (add (i32 IntRegs:$src1), (add (i32 IntRegs:$src2),
-                                          s6ImmPred:$src3)))]>,
+          [(set IntRegs:$dst,
+           (add IntRegs:$src1, (add IntRegs:$src2, s6ImmPred:$src3)))]>,
           Requires<[HasV4T]>;
=20
 //  Rd=3Dadd(Rs,sub(#s6,Ru))
 def ADDr_SUBri_V4 : MInst<(outs IntRegs:$dst),
           (ins IntRegs:$src1, s6Imm:$src2, IntRegs:$src3),
           "$dst =3D add($src1, sub(#$src2, $src3))",
-          [(set (i32 IntRegs:$dst),
-           (add (i32 IntRegs:$src1), (sub s6ImmPred:$src2,
-                                          (i32 IntRegs:$src3))))]>,
+          [(set IntRegs:$dst,
+           (add IntRegs:$src1, (sub s6ImmPred:$src2, IntRegs:$src3)))]>,
           Requires<[HasV4T]>;
=20
 // Generates the same instruction as ADDr_SUBri_V4 but matches different
@@ -4010,9 +2434,8 @@
 def ADDri_SUBr_V4 : MInst<(outs IntRegs:$dst),
           (ins IntRegs:$src1, s6Imm:$src2, IntRegs:$src3),
           "$dst =3D add($src1, sub(#$src2, $src3))",
-          [(set (i32 IntRegs:$dst),
-                (sub (add (i32 IntRegs:$src1), s6ImmPred:$src2),
-                     (i32 IntRegs:$src3)))]>,
+          [(set IntRegs:$dst,
+           (sub (add IntRegs:$src1, s6ImmPred:$src2), IntRegs:$src3))]>,
           Requires<[HasV4T]>;
=20
=20
@@ -4028,16 +2451,16 @@
 def ANDd_NOTd_V4 : MInst<(outs DoubleRegs:$dst),
           (ins DoubleRegs:$src1, DoubleRegs:$src2),
           "$dst =3D and($src1, ~$src2)",
-          [(set (i64 DoubleRegs:$dst), (and (i64 DoubleRegs:$src1),
-                                      (not (i64 DoubleRegs:$src2))))]>,
+          [(set DoubleRegs:$dst, (and DoubleRegs:$src1,
+                                      (not DoubleRegs:$src2)))]>,
           Requires<[HasV4T]>;
=20
 //  Rdd=3Dor(Rtt,~Rss)
 def ORd_NOTd_V4 : MInst<(outs DoubleRegs:$dst),
           (ins DoubleRegs:$src1, DoubleRegs:$src2),
           "$dst =3D or($src1, ~$src2)",
-          [(set (i64 DoubleRegs:$dst),
-           (or (i64 DoubleRegs:$src1), (not (i64 DoubleRegs:$src2))))]>,
+          [(set DoubleRegs:$dst,
+           (or DoubleRegs:$src1, (not DoubleRegs:$src2)))]>,
           Requires<[HasV4T]>;
=20
=20
@@ -4046,9 +2469,8 @@
 def XORd_XORdd: MInst_acc<(outs DoubleRegs:$dst),
           (ins DoubleRegs:$src1, DoubleRegs:$src2, DoubleRegs:$src3),
           "$dst ^=3D xor($src2, $src3)",
-          [(set (i64 DoubleRegs:$dst),
-           (xor (i64 DoubleRegs:$src1), (xor (i64 DoubleRegs:$src2),
-                                             (i64 DoubleRegs:$src3))))],
+          [(set DoubleRegs:$dst,
+           (xor DoubleRegs:$src1, (xor DoubleRegs:$src2, DoubleRegs:$src3)=
))],
           "$src1 =3D $dst">,
           Requires<[HasV4T]>;
=20
@@ -4058,9 +2480,8 @@
 def ORr_ANDri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, s10Imm:$src3),
             "$dst =3D or($src1, and($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (or (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                s10ImmPred:$src3)))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (and IntRegs:$src2, s10ImmPred:$src3)))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4069,9 +2490,8 @@
 def ANDr_ANDrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst &=3D and($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (and (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                 (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (and IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4079,9 +2499,8 @@
 def ORr_ANDrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst |=3D and($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (or (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (and IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4089,9 +2508,8 @@
 def XORr_ANDrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst ^=3D and($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-             (xor (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                            (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (xor IntRegs:$src1, (and IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4100,9 +2518,8 @@
 def ANDr_ANDr_NOTr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst &=3D and($src2, ~$src3)",
-            [(set (i32 IntRegs:$dst),
-                  (and (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                 (not (i32 IntRegs:$src3))=
)))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (and IntRegs:$src2, (not IntRegs:$src3)))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4110,9 +2527,8 @@
 def ORr_ANDr_NOTr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst |=3D and($src2, ~$src3)",
-            [(set (i32 IntRegs:$dst),
-             (or (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                           (not (i32 IntRegs:$src3)))))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (and IntRegs:$src2, (not IntRegs:$src3))))=
],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4120,9 +2536,8 @@
 def XORr_ANDr_NOTr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst ^=3D and($src2, ~$src3)",
-            [(set (i32 IntRegs:$dst),
-             (xor (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                            (not (i32 IntRegs:$src3)))))],
+            [(set IntRegs:$dst,
+             (xor IntRegs:$src1, (and IntRegs:$src2, (not IntRegs:$src3)))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4131,9 +2546,8 @@
 def ANDr_ORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst &=3D or($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (and (i32 IntRegs:$src1), (or (i32 IntRegs:$src2),
-                                                (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (or IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4141,9 +2555,8 @@
 def ORr_ORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst |=3D or($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (or (i32 IntRegs:$src1), (or (i32 IntRegs:$src2),
-                                               (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (or IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4151,9 +2564,8 @@
 def XORr_ORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst ^=3D or($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-             (xor (i32 IntRegs:$src1), (or (i32 IntRegs:$src2),
-                                           (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (xor IntRegs:$src1, (or IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4162,9 +2574,8 @@
 def ANDr_XORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst &=3D xor($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (and (i32 IntRegs:$src1), (xor (i32 IntRegs:$src2),
-                                                 (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (xor IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4172,9 +2583,8 @@
 def ORr_XORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst |=3D xor($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-                  (and (i32 IntRegs:$src1), (xor (i32 IntRegs:$src2),
-                                                 (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (xor IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4182,9 +2592,8 @@
 def XORr_XORrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, IntRegs:$src3),
             "$dst ^=3D xor($src2, $src3)",
-            [(set (i32 IntRegs:$dst),
-             (and (i32 IntRegs:$src1), (xor (i32 IntRegs:$src2),
-                                            (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (and IntRegs:$src1, (xor IntRegs:$src2, IntRegs:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4192,9 +2601,8 @@
 def ORr_ANDri2_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, s10Imm:$src3),
             "$dst |=3D and($src2, #$src3)",
-            [(set (i32 IntRegs:$dst),
-                  (or (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                s10ImmPred:$src3)))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (and IntRegs:$src2, s10ImmPred:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4202,9 +2610,8 @@
 def ORr_ORri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs: $src2, s10Imm:$src3),
             "$dst |=3D or($src2, #$src3)",
-            [(set (i32 IntRegs:$dst),
-                  (or (i32 IntRegs:$src1), (and (i32 IntRegs:$src2),
-                                                s10ImmPred:$src3)))],
+            [(set IntRegs:$dst,
+             (or IntRegs:$src1, (and IntRegs:$src2, s10ImmPred:$src3)))],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4256,9 +2663,8 @@
 def ADDi_MPYri_V4 : MInst<(outs IntRegs:$dst),
             (ins u6Imm:$src1, IntRegs:$src2, u6Imm:$src3),
             "$dst =3D add(#$src1, mpyi($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (add (mul (i32 IntRegs:$src2), u6ImmPred:$src3),
-                       u6ImmPred:$src1))]>,
+            [(set IntRegs:$dst,
+             (add (mul IntRegs:$src2, u6ImmPred:$src3), u6ImmPred:$src1))]=
>,
             Requires<[HasV4T]>;
=20
 // Rd=3Dadd(#u6,mpyi(Rs,Rt))
@@ -4266,36 +2672,32 @@
 def ADDi_MPYrr_V4 : MInst<(outs IntRegs:$dst),
             (ins u6Imm:$src1, IntRegs:$src2, IntRegs:$src3),
             "$dst =3D add(#$src1, mpyi($src2, $src3))",
-            [(set (i32 IntRegs:$dst),
-                  (add (mul (i32 IntRegs:$src2), (i32 IntRegs:$src3)),
-                       u6ImmPred:$src1))]>,
+            [(set IntRegs:$dst,
+             (add (mul IntRegs:$src2, IntRegs:$src3), u6ImmPred:$src1))]>,
             Requires<[HasV4T]>;
=20
 // Rd=3Dadd(Ru,mpyi(#u6:2,Rs))
 def ADDr_MPYir_V4 : MInst<(outs IntRegs:$dst),
             (ins IntRegs:$src1, u6Imm:$src2, IntRegs:$src3),
             "$dst =3D add($src1, mpyi(#$src2, $src3))",
-            [(set (i32 IntRegs:$dst),
-             (add (i32 IntRegs:$src1), (mul (i32 IntRegs:$src3),
-                                            u6_2ImmPred:$src2)))]>,
+            [(set IntRegs:$dst,
+             (add IntRegs:$src1, (mul IntRegs:$src3, u6_2ImmPred:$src2)))]=
>,
             Requires<[HasV4T]>;
=20
 // Rd=3Dadd(Ru,mpyi(Rs,#u6))
 def ADDr_MPYri_V4 : MInst<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2, u6Imm:$src3),
             "$dst =3D add($src1, mpyi($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (add (i32 IntRegs:$src1), (mul (i32 IntRegs:$src2),
-                                                 u6ImmPred:$src3)))]>,
+            [(set IntRegs:$dst,
+             (add IntRegs:$src1, (mul IntRegs:$src2, u6ImmPred:$src3)))]>,
             Requires<[HasV4T]>;
=20
 // Rx=3Dadd(Ru,mpyi(Rx,Rs))
 def ADDr_MPYrr_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2, IntRegs:$src3),
             "$dst =3D add($src1, mpyi($src2, $src3))",
-            [(set (i32 IntRegs:$dst),
-             (add (i32 IntRegs:$src1), (mul (i32 IntRegs:$src2),
-                                            (i32 IntRegs:$src3))))],
+            [(set IntRegs:$dst,
+             (add IntRegs:$src1, (mul IntRegs:$src2, IntRegs:$src3)))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4343,9 +2745,8 @@
 def ADDi_ASLri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D add(#$src1, asl($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (add (shl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+              (add (shl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))=
],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4353,9 +2754,8 @@
 def ADDi_LSRri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D add(#$src1, lsr($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (add (srl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (add (srl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4363,9 +2763,8 @@
 def SUBi_ASLri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D sub(#$src1, asl($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (sub (shl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (sub (shl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4373,9 +2772,8 @@
 def SUBi_LSRri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D sub(#$src1, lsr($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (sub (srl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (sub (srl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4385,9 +2783,8 @@
 def ANDi_ASLri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D and(#$src1, asl($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (and (shl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (and (shl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4395,31 +2792,26 @@
 def ANDi_LSRri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D and(#$src1, lsr($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (and (srl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                       u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (and (srl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
 //Rx=3Dor(#u8,asl(Rx,#U5))
-let AddedComplexity =3D 30 in
 def ORi_ASLri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D or(#$src1, asl($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (or (shl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                      u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (or (shl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
 //Rx=3Dor(#u8,lsr(Rx,#U5))
-let AddedComplexity =3D 30 in
 def ORi_LSRri_V4 : MInst_acc<(outs IntRegs:$dst),
             (ins u8Imm:$src1, IntRegs:$src2, u5Imm:$src3),
             "$dst =3D or(#$src1, lsr($src2, #$src3))",
-            [(set (i32 IntRegs:$dst),
-                  (or (srl (i32 IntRegs:$src2), u5ImmPred:$src3),
-                      u8ImmPred:$src1))],
+            [(set IntRegs:$dst,
+             (or (srl IntRegs:$src2, u5ImmPred:$src3), u8ImmPred:$src1))],
             "$src2 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4428,8 +2820,7 @@
 //Rd=3Dlsl(#s6,Rt)
 def LSLi_V4 : MInst<(outs IntRegs:$dst), (ins s6Imm:$src1, IntRegs:$src2),
             "$dst =3D lsl(#$src1, $src2)",
-            [(set (i32 IntRegs:$dst), (shl s6ImmPred:$src1,
-                                           (i32 IntRegs:$src2)))]>,
+            [(set IntRegs:$dst, (shl s6ImmPred:$src1, IntRegs:$src2))]>,
             Requires<[HasV4T]>;
=20
=20
@@ -4438,9 +2829,8 @@
 def ASLd_rr_xor_V4 : MInst_acc<(outs DoubleRegs:$dst),
             (ins DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3),
             "$dst ^=3D asl($src2, $src3)",
-            [(set (i64 DoubleRegs:$dst),
-                  (xor (i64 DoubleRegs:$src1), (shl (i64 DoubleRegs:$src2),
-                                                    (i32 IntRegs:$src3))))=
],
+            [(set DoubleRegs:$dst,
+             (xor DoubleRegs:$src1, (shl DoubleRegs:$src2, IntRegs:$src3))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4448,9 +2838,8 @@
 def ASRd_rr_xor_V4 : MInst_acc<(outs DoubleRegs:$dst),
             (ins DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3),
             "$dst ^=3D asr($src2, $src3)",
-            [(set (i64 DoubleRegs:$dst),
-                  (xor (i64 DoubleRegs:$src1), (sra (i64 DoubleRegs:$src2),
-                                                    (i32 IntRegs:$src3))))=
],
+            [(set DoubleRegs:$dst,
+             (xor DoubleRegs:$src1, (sra DoubleRegs:$src2, IntRegs:$src3))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4458,9 +2847,8 @@
 def LSLd_rr_xor_V4 : MInst_acc<(outs DoubleRegs:$dst),
             (ins DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3),
             "$dst ^=3D lsl($src2, $src3)",
-            [(set (i64 DoubleRegs:$dst), (xor (i64 DoubleRegs:$src1),
-                                              (shl (i64 DoubleRegs:$src2),
-                                                   (i32 IntRegs:$src3))))],
+            [(set DoubleRegs:$dst,
+             (xor DoubleRegs:$src1, (shl DoubleRegs:$src2, IntRegs:$src3))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4468,9 +2856,8 @@
 def LSRd_rr_xor_V4 : MInst_acc<(outs DoubleRegs:$dst),
             (ins DoubleRegs:$src1, DoubleRegs:$src2, IntRegs:$src3),
             "$dst ^=3D lsr($src2, $src3)",
-            [(set (i64 DoubleRegs:$dst),
-                  (xor (i64 DoubleRegs:$src1), (srl (i64 DoubleRegs:$src2),
-                                                    (i32 IntRegs:$src3))))=
],
+            [(set DoubleRegs:$dst,
+             (xor DoubleRegs:$src1, (srl DoubleRegs:$src2, IntRegs:$src3))=
)],
             "$src1 =3D $dst">,
             Requires<[HasV4T]>;
=20
@@ -4516,16 +2903,16 @@
 def MEMw_ADDSUBi_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, m6Imm:$addend),
             "Error; should not emit",
-            [(store (add (load (add (i32 IntRegs:$base), u6_2ImmPred:$offs=
et)),
-                         m6ImmPred:$addend),
-                    (add (i32 IntRegs:$base), u6_2ImmPred:$offset))]>,
+            [(store (add (load (add IntRegs:$base, u6_2ImmPred:$offset)),
+m6ImmPred:$addend),
+                    (add IntRegs:$base, u6_2ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memw(Rs+#u6:2) +=3D #U5
 let AddedComplexity =3D 30 in
 def MEMw_ADDi_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, u5Imm:$addend),
-            "memw($base+#$offset) +=3D #$addend",
+            "memw($base+#$offset) +=3D $addend",
             []>,
             Requires<[HasV4T, UseMEMOP]>;
=20
@@ -4533,7 +2920,7 @@
 let AddedComplexity =3D 30 in
 def MEMw_SUBi_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, u5Imm:$subend),
-            "memw($base+#$offset) -=3D #$subend",
+            "memw($base+#$offset) -=3D $subend",
             []>,
             Requires<[HasV4T, UseMEMOP]>;
=20
@@ -4542,9 +2929,9 @@
 def MEMw_ADDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, IntRegs:$addend),
             "memw($base+#$offset) +=3D $addend",
-            [(store (add (load (add (i32 IntRegs:$base), u6_2ImmPred:$offs=
et)),
-                         (i32 IntRegs:$addend)),
-                    (add (i32 IntRegs:$base), u6_2ImmPred:$offset))]>,
+            [(store (add (load (add IntRegs:$base, u6_2ImmPred:$offset)),
+IntRegs:$addend),
+                    (add IntRegs:$base, u6_2ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memw(Rs+#u6:2) -=3D Rt
@@ -4552,19 +2939,19 @@
 def MEMw_SUBr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, IntRegs:$subend),
             "memw($base+#$offset) -=3D $subend",
-            [(store (sub (load (add (i32 IntRegs:$base), u6_2ImmPred:$offs=
et)),
-                         (i32 IntRegs:$subend)),
-                    (add (i32 IntRegs:$base), u6_2ImmPred:$offset))]>,
+            [(store (sub (load (add IntRegs:$base, u6_2ImmPred:$offset)),
+IntRegs:$subend),
+                    (add IntRegs:$base, u6_2ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memw(Rs+#u6:2) &=3D Rt
 let AddedComplexity =3D 30 in
 def MEMw_ANDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, IntRegs:$andend),
-            "memw($base+#$offset) &=3D $andend",
-            [(store (and (load (add (i32 IntRegs:$base), u6_2ImmPred:$offs=
et)),
-                         (i32 IntRegs:$andend)),
-                    (add (i32 IntRegs:$base), u6_2ImmPred:$offset))]>,
+            "memw($base+#$offset) +=3D $andend",
+            [(store (and (load (add IntRegs:$base, u6_2ImmPred:$offset)),
+IntRegs:$andend),
+                    (add IntRegs:$base, u6_2ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memw(Rs+#u6:2) |=3D Rt
@@ -4572,9 +2959,9 @@
 def MEMw_ORr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_2Imm:$offset, IntRegs:$orend),
             "memw($base+#$offset) |=3D $orend",
-            [(store (or (load (add (i32 IntRegs:$base), u6_2ImmPred:$offse=
t)),
-                        (i32 IntRegs:$orend)),
-                    (add (i32 IntRegs:$base), u6_2ImmPred:$offset))]>,
+            [(store (or (load (add IntRegs:$base, u6_2ImmPred:$offset)),
+                        IntRegs:$orend),
+                    (add IntRegs:$base, u6_2ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // MEMw_ADDSUBi_V4:
@@ -4609,7 +2996,7 @@
 def MEMw_ADDr_MEM_V4 : MEMInst_V4<(outs),
             (ins MEMri:$addr, IntRegs:$addend),
             "memw($addr) +=3D $addend",
-            [(store (add (load ADDRriU6_2:$addr), (i32 IntRegs:$addend)),
+            [(store (add (load ADDRriU6_2:$addr), IntRegs:$addend),
                     ADDRriU6_2:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
@@ -4618,7 +3005,7 @@
 def MEMw_SUBr_MEM_V4 : MEMInst_V4<(outs),
             (ins MEMri:$addr, IntRegs:$subend),
             "memw($addr) -=3D $subend",
-            [(store (sub (load ADDRriU6_2:$addr), (i32 IntRegs:$subend)),
+            [(store (sub (load ADDRriU6_2:$addr), IntRegs:$subend),
                     ADDRriU6_2:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
@@ -4627,7 +3014,7 @@
 def MEMw_ANDr_MEM_V4 : MEMInst_V4<(outs),
             (ins MEMri:$addr, IntRegs:$andend),
             "memw($addr) &=3D $andend",
-            [(store (and (load ADDRriU6_2:$addr), (i32 IntRegs:$andend)),
+            [(store (and (load ADDRriU6_2:$addr), IntRegs:$andend),
                     ADDRriU6_2:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
@@ -4636,8 +3023,8 @@
 def MEMw_ORr_MEM_V4 : MEMInst_V4<(outs),
             (ins MEMri:$addr, IntRegs:$orend),
             "memw($addr) |=3D $orend",
-            [(store (or (load ADDRriU6_2:$addr), (i32 IntRegs:$orend)),
-                    ADDRriU6_2:$addr)]>,
+            [(store (or (load ADDRriU6_2:$addr), IntRegs:$orend),
+ADDRriU6_2:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -4673,10 +3060,10 @@
 def MEMh_ADDSUBi_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_1Imm:$offset, m6Imm:$addend),
             "Error; should not emit",
-            [(truncstorei16 (add (sextloadi16 (add (i32 IntRegs:$base),
+            [(truncstorei16 (add (sextloadi16 (add IntRegs:$base,
                                                    u6_1ImmPred:$offset)),
                                  m6ImmPred:$addend),
-                            (add (i32 IntRegs:$base), u6_1ImmPred:$offset)=
)]>,
+                            (add IntRegs:$base, u6_1ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) +=3D #U5
@@ -4700,10 +3087,10 @@
 def MEMh_ADDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_1Imm:$offset, IntRegs:$addend),
             "memh($base+#$offset) +=3D $addend",
-            [(truncstorei16 (add (sextloadi16 (add (i32 IntRegs:$base),
+            [(truncstorei16 (add (sextloadi16 (add IntRegs:$base,
                                                    u6_1ImmPred:$offset)),
-                                 (i32 IntRegs:$addend)),
-                            (add (i32 IntRegs:$base), u6_1ImmPred:$offset)=
)]>,
+                                 IntRegs:$addend),
+                            (add IntRegs:$base, u6_1ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) -=3D Rt
@@ -4711,10 +3098,10 @@
 def MEMh_SUBr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_1Imm:$offset, IntRegs:$subend),
             "memh($base+#$offset) -=3D $subend",
-            [(truncstorei16 (sub (sextloadi16 (add (i32 IntRegs:$base),
+            [(truncstorei16 (sub (sextloadi16 (add IntRegs:$base,
                                                    u6_1ImmPred:$offset)),
-                                 (i32 IntRegs:$subend)),
-                            (add (i32 IntRegs:$base), u6_1ImmPred:$offset)=
)]>,
+                                 IntRegs:$subend),
+                            (add IntRegs:$base, u6_1ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) &=3D Rt
@@ -4722,10 +3109,10 @@
 def MEMh_ANDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_1Imm:$offset, IntRegs:$andend),
             "memh($base+#$offset) +=3D $andend",
-            [(truncstorei16 (and (sextloadi16 (add (i32 IntRegs:$base),
+            [(truncstorei16 (and (sextloadi16 (add IntRegs:$base,
                                                    u6_1ImmPred:$offset)),
-                                 (i32 IntRegs:$andend)),
-                            (add (i32 IntRegs:$base), u6_1ImmPred:$offset)=
)]>,
+                                 IntRegs:$andend),
+                            (add IntRegs:$base, u6_1ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) |=3D Rt
@@ -4733,10 +3120,10 @@
 def MEMh_ORr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_1Imm:$offset, IntRegs:$orend),
             "memh($base+#$offset) |=3D $orend",
-            [(truncstorei16 (or (sextloadi16 (add (i32 IntRegs:$base),
+            [(truncstorei16 (or (sextloadi16 (add IntRegs:$base,
                                               u6_1ImmPred:$offset)),
-                             (i32 IntRegs:$orend)),
-                            (add (i32 IntRegs:$base), u6_1ImmPred:$offset)=
)]>,
+                             IntRegs:$orend),
+                            (add IntRegs:$base, u6_1ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // MEMh_ADDSUBi_V4:
@@ -4772,7 +3159,7 @@
             (ins MEMri:$addr, IntRegs:$addend),
             "memh($addr) +=3D $addend",
             [(truncstorei16 (add (sextloadi16 ADDRriU6_1:$addr),
-                                 (i32 IntRegs:$addend)), ADDRriU6_1:$addr)=
]>,
+                                 IntRegs:$addend), ADDRriU6_1:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) -=3D Rt
@@ -4781,7 +3168,7 @@
             (ins MEMri:$addr, IntRegs:$subend),
             "memh($addr) -=3D $subend",
             [(truncstorei16 (sub (sextloadi16 ADDRriU6_1:$addr),
-                                 (i32 IntRegs:$subend)), ADDRriU6_1:$addr)=
]>,
+                                 IntRegs:$subend), ADDRriU6_1:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) &=3D Rt
@@ -4790,7 +3177,7 @@
             (ins MEMri:$addr, IntRegs:$andend),
             "memh($addr) &=3D $andend",
             [(truncstorei16 (and (sextloadi16 ADDRriU6_1:$addr),
-                                 (i32 IntRegs:$andend)), ADDRriU6_1:$addr)=
]>,
+                                 IntRegs:$andend), ADDRriU6_1:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memh(Rs+#u6:1) |=3D Rt
@@ -4799,7 +3186,7 @@
             (ins MEMri:$addr, IntRegs:$orend),
             "memh($addr) |=3D $orend",
             [(truncstorei16 (or (sextloadi16 ADDRriU6_1:$addr),
-                                (i32 IntRegs:$orend)), ADDRriU6_1:$addr)]>,
+                                IntRegs:$orend), ADDRriU6_1:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
=20
@@ -4836,10 +3223,10 @@
 def MEMb_ADDSUBi_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_0Imm:$offset, m6Imm:$addend),
             "Error; should not emit",
-            [(truncstorei8 (add (sextloadi8 (add (i32 IntRegs:$base),
+            [(truncstorei8 (add (sextloadi8 (add IntRegs:$base,
                                                  u6_0ImmPred:$offset)),
                                 m6ImmPred:$addend),
-                           (add (i32 IntRegs:$base), u6_0ImmPred:$offset))=
]>,
+                           (add IntRegs:$base, u6_0ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) +=3D #U5
@@ -4863,10 +3250,10 @@
 def MEMb_ADDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_0Imm:$offset, IntRegs:$addend),
             "memb($base+#$offset) +=3D $addend",
-            [(truncstorei8 (add (sextloadi8 (add (i32 IntRegs:$base),
+            [(truncstorei8 (add (sextloadi8 (add IntRegs:$base,
                                                  u6_0ImmPred:$offset)),
-                                (i32 IntRegs:$addend)),
-                           (add (i32 IntRegs:$base), u6_0ImmPred:$offset))=
]>,
+                                IntRegs:$addend),
+                           (add IntRegs:$base, u6_0ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) -=3D Rt
@@ -4874,10 +3261,10 @@
 def MEMb_SUBr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_0Imm:$offset, IntRegs:$subend),
             "memb($base+#$offset) -=3D $subend",
-            [(truncstorei8 (sub (sextloadi8 (add (i32 IntRegs:$base),
+            [(truncstorei8 (sub (sextloadi8 (add IntRegs:$base,
                                                  u6_0ImmPred:$offset)),
-                                (i32 IntRegs:$subend)),
-                           (add (i32 IntRegs:$base), u6_0ImmPred:$offset))=
]>,
+                                IntRegs:$subend),
+                           (add IntRegs:$base, u6_0ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) &=3D Rt
@@ -4885,10 +3272,10 @@
 def MEMb_ANDr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_0Imm:$offset, IntRegs:$andend),
             "memb($base+#$offset) +=3D $andend",
-            [(truncstorei8 (and (sextloadi8 (add (i32 IntRegs:$base),
+            [(truncstorei8 (and (sextloadi8 (add IntRegs:$base,
                                                  u6_0ImmPred:$offset)),
-                                (i32 IntRegs:$andend)),
-                           (add (i32 IntRegs:$base), u6_0ImmPred:$offset))=
]>,
+                                IntRegs:$andend),
+                           (add IntRegs:$base, u6_0ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) |=3D Rt
@@ -4896,10 +3283,10 @@
 def MEMb_ORr_indexed_MEM_V4 : MEMInst_V4<(outs),
             (ins IntRegs:$base, u6_0Imm:$offset, IntRegs:$orend),
             "memb($base+#$offset) |=3D $orend",
-            [(truncstorei8 (or (sextloadi8 (add (i32 IntRegs:$base),
+            [(truncstorei8 (or (sextloadi8 (add IntRegs:$base,
                                                 u6_0ImmPred:$offset)),
-                               (i32 IntRegs:$orend)),
-                           (add (i32 IntRegs:$base), u6_0ImmPred:$offset))=
]>,
+                                IntRegs:$orend),
+                           (add IntRegs:$base, u6_0ImmPred:$offset))]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // MEMb_ADDSUBi_V4:
@@ -4935,7 +3322,7 @@
             (ins MEMri:$addr, IntRegs:$addend),
             "memb($addr) +=3D $addend",
             [(truncstorei8 (add (sextloadi8 ADDRriU6_0:$addr),
-                                (i32 IntRegs:$addend)), ADDRriU6_0:$addr)]=
>,
+                                IntRegs:$addend), ADDRriU6_0:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) -=3D Rt
@@ -4944,7 +3331,7 @@
             (ins MEMri:$addr, IntRegs:$subend),
             "memb($addr) -=3D $subend",
             [(truncstorei8 (sub (sextloadi8 ADDRriU6_0:$addr),
-                                (i32 IntRegs:$subend)), ADDRriU6_0:$addr)]=
>,
+                                IntRegs:$subend), ADDRriU6_0:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) &=3D Rt
@@ -4953,7 +3340,7 @@
             (ins MEMri:$addr, IntRegs:$andend),
             "memb($addr) &=3D $andend",
             [(truncstorei8 (and (sextloadi8 ADDRriU6_0:$addr),
-                                (i32 IntRegs:$andend)), ADDRriU6_0:$addr)]=
>,
+                                IntRegs:$andend), ADDRriU6_0:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
 // memb(Rs+#u6:0) |=3D Rt
@@ -4962,7 +3349,7 @@
             (ins MEMri:$addr, IntRegs:$orend),
             "memb($addr) |=3D $orend",
             [(truncstorei8 (or (sextloadi8 ADDRriU6_0:$addr),
-                               (i32 IntRegs:$orend)), ADDRriU6_0:$addr)]>,
+                                IntRegs:$orend), ADDRriU6_0:$addr)]>,
             Requires<[HasV4T, UseMEMOP]>;
=20
=20
@@ -4977,16 +3364,13 @@
 // The implemented patterns are: EQ/GT/GTU.
 // Missing patterns are: GE/GEU/LT/LTU/LE/LEU.
=20
-// Following instruction is not being extended as it results into the
-// incorrect code for negative numbers.
 // Pd=3Dcmpb.eq(Rs,#u8)
-
 let isCompare =3D 1 in
 def CMPbEQri_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, u8Imm:$src2),
             "$dst =3D cmpb.eq($src1, #$src2)",
-            [(set (i1 PredRegs:$dst),
-                  (seteq (and (i32 IntRegs:$src1), 255), u8ImmPred:$src2))=
]>,
+            [(set PredRegs:$dst, (seteq (and IntRegs:$src1, 255),
+                                        u8ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
 // Pd=3Dcmpb.eq(Rs,Rt)
@@ -4994,9 +3378,10 @@
 def CMPbEQrr_ubub_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmpb.eq($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (seteq (and (xor (i32 IntRegs:$src1),
-                                   (i32 IntRegs:$src2)), 255), 0))]>,
+            [(set PredRegs:$dst, (seteq (and (xor IntRegs:$src1,
+                                                  IntRegs:$src2),
+                                             255),
+                                        0))]>,
             Requires<[HasV4T]>;
=20
 // Pd=3Dcmpb.eq(Rs,Rt)
@@ -5004,31 +3389,26 @@
 def CMPbEQrr_sbsb_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmpb.eq($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (seteq (shl (i32 IntRegs:$src1), (i32 24)),
-                         (shl (i32 IntRegs:$src2), (i32 24))))]>,
+            [(set PredRegs:$dst, (seteq (shl IntRegs:$src1, (i32 24)),
+                                        (shl IntRegs:$src2, (i32 24))))]>,
             Requires<[HasV4T]>;
=20
-/* Incorrect Pattern -- immediate should be right shifted before being
-used in the cmpb.gt instruction.
 // Pd=3Dcmpb.gt(Rs,#s8)
 let isCompare =3D 1 in
 def CMPbGTri_V4 : MInst<(outs PredRegs:$dst),
-            (ins IntRegs:$src1, s8Imm:$src2),
+            (ins IntRegs:$src1, s32Imm:$src2),
             "$dst =3D cmpb.gt($src1, #$src2)",
-            [(set (i1 PredRegs:$dst), (setgt (shl (i32 IntRegs:$src1), (i3=
2 24)),
-                                             s8ImmPred:$src2))]>,
+            [(set PredRegs:$dst, (setgt (shl IntRegs:$src1, (i32 24)),
+                                        s32_24ImmPred:$src2))]>,
             Requires<[HasV4T]>;
-*/
=20
 // Pd=3Dcmpb.gt(Rs,Rt)
 let isCompare =3D 1 in
 def CMPbGTrr_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmpb.gt($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (setgt (shl (i32 IntRegs:$src1), (i32 24)),
-                         (shl (i32 IntRegs:$src2), (i32 24))))]>,
+            [(set PredRegs:$dst, (setgt (shl IntRegs:$src1, (i32 24)),
+                                        (shl IntRegs:$src2, (i32 24))))]>,
             Requires<[HasV4T]>;
=20
 // Pd=3Dcmpb.gtu(Rs,#u7)
@@ -5036,8 +3416,8 @@
 def CMPbGTUri_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, u7Imm:$src2),
             "$dst =3D cmpb.gtu($src1, #$src2)",
-            [(set (i1 PredRegs:$dst), (setugt (and (i32 IntRegs:$src1), 25=
5),
-                                              u7ImmPred:$src2))]>,
+            [(set PredRegs:$dst, (setugt (and IntRegs:$src1, 255),
+                                         u7ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
 // Pd=3Dcmpb.gtu(Rs,Rt)
@@ -5045,21 +3425,18 @@
 def CMPbGTUrr_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmpb.gtu($src1, $src2)",
-            [(set (i1 PredRegs:$dst), (setugt (and (i32 IntRegs:$src1), 25=
5),
-                                              (and (i32 IntRegs:$src2), 25=
5)))]>,
+            [(set PredRegs:$dst, (setugt (and IntRegs:$src1, 255),
+                                         (and IntRegs:$src2, 255)))]>,
             Requires<[HasV4T]>;
=20
-// Following instruction is not being extended as it results into the inco=
rrect
-// code for negative numbers.
-
 // Signed half compare(.eq) ri.
 // Pd=3Dcmph.eq(Rs,#s8)
 let isCompare =3D 1 in
 def CMPhEQri_V4 : MInst<(outs PredRegs:$dst),
-            (ins IntRegs:$src1, s8Imm:$src2),
+            (ins IntRegs:$src1, u16Imm:$src2),
             "$dst =3D cmph.eq($src1, #$src2)",
-            [(set (i1 PredRegs:$dst), (seteq (and (i32 IntRegs:$src1), 655=
35),
-                                             s8ImmPred:$src2))]>,
+            [(set PredRegs:$dst, (seteq (and IntRegs:$src1, 65535),
+                                        u16_s8ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
 // Signed half compare(.eq) rr.
@@ -5072,9 +3449,10 @@
 def CMPhEQrr_xor_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmph.eq($src1, $src2)",
-            [(set (i1 PredRegs:$dst), (seteq (and (xor (i32 IntRegs:$src1),
-                                                       (i32 IntRegs:$src2)=
),
-                                                  65535), 0))]>,
+            [(set PredRegs:$dst, (seteq (and (xor IntRegs:$src1,
+                                                  IntRegs:$src2),
+                                             65535),
+                                        0))]>,
             Requires<[HasV4T]>;
=20
 // Signed half compare(.eq) rr.
@@ -5087,25 +3465,19 @@
 def CMPhEQrr_shl_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmph.eq($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (seteq (shl (i32 IntRegs:$src1), (i32 16)),
-                         (shl (i32 IntRegs:$src2), (i32 16))))]>,
+            [(set PredRegs:$dst, (seteq (shl IntRegs:$src1, (i32 16)),
+                                        (shl IntRegs:$src2, (i32 16))))]>,
             Requires<[HasV4T]>;
=20
-/* Incorrect Pattern -- immediate should be right shifted before being
-used in the cmph.gt instruction.
 // Signed half compare(.gt) ri.
 // Pd=3Dcmph.gt(Rs,#s8)
-
 let isCompare =3D 1 in
 def CMPhGTri_V4 : MInst<(outs PredRegs:$dst),
-            (ins IntRegs:$src1, s8Imm:$src2),
+            (ins IntRegs:$src1, s32Imm:$src2),
             "$dst =3D cmph.gt($src1, #$src2)",
-            [(set (i1 PredRegs:$dst),
-                  (setgt (shl (i32 IntRegs:$src1), (i32 16)),
-                         s8ImmPred:$src2))]>,
+            [(set PredRegs:$dst, (setgt (shl IntRegs:$src1, (i32 16)),
+                                        s32_16s8ImmPred:$src2))]>,
             Requires<[HasV4T]>;
-*/
=20
 // Signed half compare(.gt) rr.
 // Pd=3Dcmph.gt(Rs,Rt)
@@ -5113,9 +3485,8 @@
 def CMPhGTrr_shl_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmph.gt($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (setgt (shl (i32 IntRegs:$src1), (i32 16)),
-                         (shl (i32 IntRegs:$src2), (i32 16))))]>,
+            [(set PredRegs:$dst, (setgt (shl IntRegs:$src1, (i32 16)),
+                                        (shl IntRegs:$src2, (i32 16))))]>,
             Requires<[HasV4T]>;
=20
 // Unsigned half compare rr (.gtu).
@@ -5124,9 +3495,8 @@
 def CMPhGTUrr_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, IntRegs:$src2),
             "$dst =3D cmph.gtu($src1, $src2)",
-            [(set (i1 PredRegs:$dst),
-                  (setugt (and (i32 IntRegs:$src1), 65535),
-                          (and (i32 IntRegs:$src2), 65535)))]>,
+            [(set PredRegs:$dst, (setugt (and IntRegs:$src1, 65535),
+                                         (and IntRegs:$src2, 65535)))]>,
             Requires<[HasV4T]>;
=20
 // Unsigned half compare ri (.gtu).
@@ -5135,8 +3505,8 @@
 def CMPhGTUri_V4 : MInst<(outs PredRegs:$dst),
             (ins IntRegs:$src1, u7Imm:$src2),
             "$dst =3D cmph.gtu($src1, #$src2)",
-            [(set (i1 PredRegs:$dst), (setugt (and (i32 IntRegs:$src1), 65=
535),
-                                              u7ImmPred:$src2))]>,
+            [(set PredRegs:$dst, (setugt (and IntRegs:$src1, 65535),
+                                         u7ImmPred:$src2))]>,
             Requires<[HasV4T]>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -5153,37 +3523,9 @@
             Requires<[HasV4T]>;
 }
=20
-// Restore registers and dealloc return function call.
-let isCall =3D 1, isBarrier =3D 1, isReturn =3D 1, isTerminator =3D 1,
-  Defs =3D [R29, R30, R31, PC] in {
-  def RESTORE_DEALLOC_RET_JMP_V4 : JInst<(outs), (ins calltarget:$dst, var=
iable_ops),
-             "jump $dst // Restore_and_dealloc_return",
-             []>,
-             Requires<[HasV4T]>;
-}
-
-// Restore registers and dealloc frame before a tail call.
-let isCall =3D 1, isBarrier =3D 1,
-  Defs =3D [R29, R30, R31, PC] in {
-  def RESTORE_DEALLOC_BEFORE_TAILCALL_V4 : JInst<(outs), (ins calltarget:$=
dst, variable_ops),
-             "call $dst // Restore_and_dealloc_before_tailcall",
-             []>,
-             Requires<[HasV4T]>;
-}
-
-// Save registers function call.
-let isCall =3D 1, isBarrier =3D 1,
-  Uses =3D [R29, R31] in {
-  def SAVE_REGISTERS_CALL_V4 : JInst<(outs), (ins calltarget:$dst, variabl=
e_ops),
-             "call $dst // Save_calle_saved_registers",
-             []>,
-             Requires<[HasV4T]>;
-}
-
 //    if (Ps) dealloc_return
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cPt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1, i32imm:$=
amt1),
             "if ($src1) dealloc_return",
             []>,
@@ -5192,8 +3534,7 @@
=20
 //    if (!Ps) dealloc_return
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cNotPt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1,
                                                      i32imm:$amt1),
             "if (!$src1) dealloc_return",
@@ -5203,8 +3544,7 @@
=20
 //    if (Ps.new) dealloc_return:nt
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cdnPnt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1,
                                                      i32imm:$amt1),
             "if ($src1.new) dealloc_return:nt",
@@ -5214,8 +3554,7 @@
=20
 //    if (!Ps.new) dealloc_return:nt
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cNotdnPnt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1,
                                                         i32imm:$amt1),
             "if (!$src1.new) dealloc_return:nt",
@@ -5225,8 +3564,7 @@
=20
 //    if (Ps.new) dealloc_return:t
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cdnPt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1,
                                                     i32imm:$amt1),
             "if ($src1.new) dealloc_return:t",
@@ -5236,511 +3574,10 @@
=20
 //    if (!Ps.new) dealloc_return:nt
 let isReturn =3D 1, isTerminator =3D 1,
-    Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects=
 =3D 1,
-    isPredicated =3D 1 in {
+  Defs =3D [R29, R30, R31, PC], Uses =3D [R29, R31], neverHasSideEffects =
=3D 1 in {
   def DEALLOC_RET_cNotdnPt_V4 : NVInst_V4<(outs), (ins PredRegs:$src1,
                                                        i32imm:$amt1),
             "if (!$src1.new) dealloc_return:t",
             []>,
             Requires<[HasV4T]>;
 }
-
-
-// Load/Store with absolute addressing mode
-// memw(#u6)=3DRt
-
-multiclass ST_abs<string OpcStr> {
-  let isPredicable =3D 1 in
-  def _abs_V4 : STInst<(outs),
-            (ins globaladdress:$absaddr, IntRegs:$src),
-            !strconcat(OpcStr, "(##$absaddr) =3D $src"),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if ($src1)", !strconcat(OpcStr, "(##$absaddr) =3D =
$src2")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if (!$src1)", !strconcat(OpcStr, "(##$absaddr) =3D=
 $src2")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if ($src1.new)", !strconcat(OpcStr, "(##$absaddr) =
=3D $src2")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if (!$src1.new)", !strconcat(OpcStr, "(##$absaddr)=
 =3D $src2")),
-            []>,
-            Requires<[HasV4T]>;
-
-  def _abs_nv_V4 : STInst<(outs),
-            (ins globaladdress:$absaddr, IntRegs:$src),
-            !strconcat(OpcStr, "(##$absaddr) =3D $src.new"),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if ($src1)", !strconcat(OpcStr, "(##$absaddr) =3D =
$src2.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if (!$src1)", !strconcat(OpcStr, "(##$absaddr) =3D=
 $src2.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if ($src1.new)", !strconcat(OpcStr, "(##$absaddr) =
=3D $src2.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, globaladdress:$absaddr, IntRegs:$src2),
-            !strconcat("if (!$src1.new)", !strconcat(OpcStr, "(##$absaddr)=
 =3D $src2.new")),
-            []>,
-            Requires<[HasV4T]>;
-}
-
-let AddedComplexity =3D 30, isPredicable =3D 1 in
-def STrid_abs_V4 : STInst<(outs),
-          (ins globaladdress:$absaddr, DoubleRegs:$src),
-           "memd(##$absaddr) =3D $src",
-          [(store (i64 DoubleRegs:$src), (HexagonCONST32 tglobaladdr:$absa=
ddr))]>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def STrid_abs_cPt_V4 : STInst<(outs),
-          (ins PredRegs:$src1, globaladdress:$absaddr, DoubleRegs:$src2),
-          "if ($src1) memd(##$absaddr) =3D $src2",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def STrid_abs_cNotPt_V4 : STInst<(outs),
-          (ins PredRegs:$src1, globaladdress:$absaddr, DoubleRegs:$src2),
-          "if (!$src1) memd(##$absaddr) =3D $src2",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def STrid_abs_cdnPt_V4 : STInst<(outs),
-          (ins PredRegs:$src1, globaladdress:$absaddr, DoubleRegs:$src2),
-          "if ($src1.new) memd(##$absaddr) =3D $src2",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def STrid_abs_cdnNotPt_V4 : STInst<(outs),
-          (ins PredRegs:$src1, globaladdress:$absaddr, DoubleRegs:$src2),
-          "if (!$src1.new) memd(##$absaddr) =3D $src2",
-          []>,
-          Requires<[HasV4T]>;
-
-defm STrib : ST_abs<"memb">;
-defm STrih : ST_abs<"memh">;
-defm STriw : ST_abs<"memw">;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(truncstorei8 (i32 IntRegs:$src1), (HexagonCONST32 tglobaladdr:$=
absaddr)),
-          (STrib_abs_V4 tglobaladdr: $absaddr, IntRegs: $src1)>;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(truncstorei16 (i32 IntRegs:$src1), (HexagonCONST32 tglobaladdr:=
$absaddr)),
-          (STrih_abs_V4 tglobaladdr: $absaddr, IntRegs: $src1)>;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(store (i32 IntRegs:$src1), (HexagonCONST32 tglobaladdr:$absaddr=
)),
-          (STriw_abs_V4 tglobaladdr: $absaddr, IntRegs: $src1)>;
-
-
-multiclass LD_abs<string OpcStr> {
-  let isPredicable =3D 1 in
-  def _abs_V4 : LDInst<(outs IntRegs:$dst),
-            (ins globaladdress:$absaddr),
-            !strconcat("$dst =3D ", !strconcat(OpcStr, "(##$absaddr)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$absaddr),
-            !strconcat("if ($src1) $dst =3D ", !strconcat(OpcStr, "(##$abs=
addr)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$absaddr),
-            !strconcat("if (!$src1) $dst =3D ", !strconcat(OpcStr, "(##$ab=
saddr)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$absaddr),
-            !strconcat("if ($src1.new) $dst =3D ", !strconcat(OpcStr, "(##=
$absaddr)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, globaladdress:$absaddr),
-            !strconcat("if (!$src1.new) $dst =3D ", !strconcat(OpcStr, "(#=
#$absaddr)")),
-            []>,
-            Requires<[HasV4T]>;
-}
-
-let AddedComplexity =3D 30 in
-def LDrid_abs_V4 : LDInst<(outs DoubleRegs:$dst),
-          (ins globaladdress:$absaddr),
-          "$dst =3D memd(##$absaddr)",
-          [(set (i64 DoubleRegs:$dst), (load (HexagonCONST32 tglobaladdr:$=
absaddr)))]>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def LDrid_abs_cPt_V4 : LDInst<(outs DoubleRegs:$dst),
-          (ins PredRegs:$src1, globaladdress:$absaddr),
-          "if ($src1) $dst =3D memd(##$absaddr)",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def LDrid_abs_cNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-          (ins PredRegs:$src1, globaladdress:$absaddr),
-          "if (!$src1) $dst =3D memd(##$absaddr)",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def LDrid_abs_cdnPt_V4 : LDInst<(outs DoubleRegs:$dst),
-          (ins PredRegs:$src1, globaladdress:$absaddr),
-          "if ($src1.new) $dst =3D memd(##$absaddr)",
-          []>,
-          Requires<[HasV4T]>;
-
-let AddedComplexity =3D 30, isPredicated =3D 1 in
-def LDrid_abs_cdnNotPt_V4 : LDInst<(outs DoubleRegs:$dst),
-          (ins PredRegs:$src1, globaladdress:$absaddr),
-          "if (!$src1.new) $dst =3D memd(##$absaddr)",
-          []>,
-          Requires<[HasV4T]>;
-
-defm LDrib : LD_abs<"memb">;
-defm LDriub : LD_abs<"memub">;
-defm LDrih : LD_abs<"memh">;
-defm LDriuh : LD_abs<"memuh">;
-defm LDriw : LD_abs<"memw">;
-
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(i32 (load (HexagonCONST32 tglobaladdr:$absaddr))),
-          (LDriw_abs_V4 tglobaladdr: $absaddr)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (sextloadi8 (HexagonCONST32 tglobaladdr:$absaddr))),
-          (LDrib_abs_V4 tglobaladdr:$absaddr)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (zextloadi8 (HexagonCONST32 tglobaladdr:$absaddr))),
-          (LDriub_abs_V4 tglobaladdr:$absaddr)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (sextloadi16 (HexagonCONST32 tglobaladdr:$absaddr))),
-          (LDrih_abs_V4 tglobaladdr:$absaddr)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (zextloadi16 (HexagonCONST32 tglobaladdr:$absaddr))),
-          (LDriuh_abs_V4 tglobaladdr:$absaddr)>;
-
-// Transfer global address into a register
-let AddedComplexity=3D50, isMoveImm =3D 1, isReMaterializable =3D 1 in
-def TFRI_V4 : ALU32_ri<(outs IntRegs:$dst), (ins globaladdress:$src1),
-           "$dst =3D ##$src1",
-           [(set IntRegs:$dst, (HexagonCONST32 tglobaladdr:$src1))]>,
-           Requires<[HasV4T]>;
-
-let AddedComplexity=3D50, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def TFRI_cPt_V4 : ALU32_ri<(outs IntRegs:$dst),
-                           (ins PredRegs:$src1, globaladdress:$src2),
-           "if($src1) $dst =3D ##$src2",
-           []>,
-           Requires<[HasV4T]>;
-
-let AddedComplexity=3D50, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def TFRI_cNotPt_V4 : ALU32_ri<(outs IntRegs:$dst),
-                              (ins PredRegs:$src1, globaladdress:$src2),
-           "if(!$src1) $dst =3D ##$src2",
-           []>,
-           Requires<[HasV4T]>;
-
-let AddedComplexity=3D50, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def TFRI_cdnPt_V4 : ALU32_ri<(outs IntRegs:$dst),
-                             (ins PredRegs:$src1, globaladdress:$src2),
-           "if($src1.new) $dst =3D ##$src2",
-           []>,
-           Requires<[HasV4T]>;
-
-let AddedComplexity=3D50, neverHasSideEffects =3D 1, isPredicated =3D 1 in
-def TFRI_cdnNotPt_V4 : ALU32_ri<(outs IntRegs:$dst),
-                                (ins PredRegs:$src1, globaladdress:$src2),
-           "if(!$src1.new) $dst =3D ##$src2",
-           []>,
-           Requires<[HasV4T]>;
-
-let AddedComplexity =3D 50, Predicates =3D [HasV4T] in
-def : Pat<(HexagonCONST32_GP tglobaladdr:$src1),
-           (TFRI_V4 tglobaladdr:$src1)>;
-
-
-// Load - Indirect with long offset: These instructions take global address
-// as an operand
-let AddedComplexity =3D 10 in
-def LDrid_ind_lo_V4 : LDInst<(outs DoubleRegs:$dst),
-            (ins IntRegs:$src1, u2Imm:$src2, globaladdress:$offset),
-            "$dst=3Dmemd($src1<<#$src2+##$offset)",
-            [(set (i64 DoubleRegs:$dst),
-                  (load (add (shl IntRegs:$src1, u2ImmPred:$src2),
-                        (HexagonCONST32 tglobaladdr:$offset))))]>,
-            Requires<[HasV4T]>;
-
-let AddedComplexity =3D 10 in
-multiclass LD_indirect_lo<string OpcStr, PatFrag OpNode> {
-  def _lo_V4 : LDInst<(outs IntRegs:$dst),
-            (ins IntRegs:$src1, u2Imm:$src2, globaladdress:$offset),
-            !strconcat("$dst =3D ", !strconcat(OpcStr, "($src1<<#$src2+##$=
offset)")),
-            [(set IntRegs:$dst,
-                  (i32 (OpNode (add (shl IntRegs:$src1, u2ImmPred:$src2),
-                          (HexagonCONST32 tglobaladdr:$offset)))))]>,
-            Requires<[HasV4T]>;
-}
-
-defm LDrib_ind : LD_indirect_lo<"memb", sextloadi8>;
-defm LDriub_ind : LD_indirect_lo<"memub", zextloadi8>;
-defm LDrih_ind : LD_indirect_lo<"memh", sextloadi16>;
-defm LDriuh_ind : LD_indirect_lo<"memuh", zextloadi16>;
-defm LDriw_ind : LD_indirect_lo<"memw", load>;
-
-// Store - Indirect with long offset: These instructions take global addre=
ss
-// as an operand
-let AddedComplexity =3D 10 in
-def STrid_ind_lo_V4 : STInst<(outs),
-            (ins IntRegs:$src1, u2Imm:$src2, globaladdress:$src3,
-                 DoubleRegs:$src4),
-            "memd($src1<<#$src2+#$src3) =3D $src4",
-            [(store (i64 DoubleRegs:$src4),
-                 (add (shl IntRegs:$src1, u2ImmPred:$src2),
-                      (HexagonCONST32 tglobaladdr:$src3)))]>,
-             Requires<[HasV4T]>;
-
-let AddedComplexity =3D 10 in
-multiclass ST_indirect_lo<string OpcStr, PatFrag OpNode> {
-  def _lo_V4 : STInst<(outs),
-            (ins IntRegs:$src1, u2Imm:$src2, globaladdress:$src3,
-                 IntRegs:$src4),
-            !strconcat(OpcStr, "($src1<<#$src2+##$src3) =3D $src4"),
-            [(OpNode (i32 IntRegs:$src4),
-                 (add (shl IntRegs:$src1, u2ImmPred:$src2),
-                      (HexagonCONST32 tglobaladdr:$src3)))]>,
-             Requires<[HasV4T]>;
-}
-
-defm STrib_ind : ST_indirect_lo<"memb", truncstorei8>;
-defm STrih_ind : ST_indirect_lo<"memh", truncstorei16>;
-defm STriw_ind : ST_indirect_lo<"memw", store>;
-
-// Store - absolute addressing mode: These instruction take constant
-// value as the extended operand
-multiclass ST_absimm<string OpcStr> {
-  let isPredicable =3D 1 in
-  def _abs_V4 : STInst<(outs),
-            (ins u6Imm:$src1, IntRegs:$src2),
-            !strconcat(OpcStr, "(#$src1) =3D $src2"),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if ($src1)", !strconcat(OpcStr, "(#$src2) =3D $src=
3")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if (!$src1)", !strconcat(OpcStr, "(#$src2) =3D $sr=
c3")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if ($src1.new)", !strconcat(OpcStr, "(#$src2) =3D =
$src3")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if (!$src1.new)", !strconcat(OpcStr, "(#$src2) =3D=
 $src3")),
-            []>,
-            Requires<[HasV4T]>;
-
-  def _abs_nv_V4 : STInst<(outs),
-            (ins u6Imm:$src1, IntRegs:$src2),
-            !strconcat(OpcStr, "(#$src1) =3D $src2.new"),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if ($src1)", !strconcat(OpcStr, "(#$src2) =3D $src=
3.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if (!$src1)", !strconcat(OpcStr, "(#$src2) =3D $sr=
c3.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if ($src1.new)", !strconcat(OpcStr, "(#$src2) =3D =
$src3.new")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_nv_V4 : STInst<(outs),
-            (ins PredRegs:$src1, u6Imm:$src2, IntRegs:$src3),
-            !strconcat("if (!$src1.new)", !strconcat(OpcStr, "(#$src2) =3D=
 $src3.new")),
-            []>,
-            Requires<[HasV4T]>;
-}
-
-defm STrib_imm : ST_absimm<"memb">;
-defm STrih_imm : ST_absimm<"memh">;
-defm STriw_imm : ST_absimm<"memw">;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(truncstorei8 (i32 IntRegs:$src1), u6ImmPred:$src2),
-          (STrib_imm_abs_V4 u6ImmPred:$src2, IntRegs: $src1)>;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(truncstorei16 (i32 IntRegs:$src1), u6ImmPred:$src2),
-          (STrih_imm_abs_V4 u6ImmPred:$src2, IntRegs: $src1)>;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(store (i32 IntRegs:$src1), u6ImmPred:$src2),
-          (STriw_imm_abs_V4 u6ImmPred:$src2, IntRegs: $src1)>;
-
-
-// Load - absolute addressing mode: These instruction take constant
-// value as the extended operand
-
-multiclass LD_absimm<string OpcStr> {
-  let isPredicable =3D 1 in
-  def _abs_V4 : LDInst<(outs IntRegs:$dst),
-            (ins u6Imm:$src),
-            !strconcat("$dst =3D ", !strconcat(OpcStr, "(#$src)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, u6Imm:$src2),
-            !strconcat("if ($src1) $dst =3D ", !strconcat(OpcStr, "(#$src2=
)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, u6Imm:$src2),
-            !strconcat("if (!$src1) $dst =3D ", !strconcat(OpcStr, "(#$src=
2)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, u6Imm:$src2),
-            !strconcat("if ($src1.new) $dst =3D ", !strconcat(OpcStr, "(#$=
src2)")),
-            []>,
-            Requires<[HasV4T]>;
-
-  let isPredicated =3D 1 in
-  def _abs_cdnNotPt_V4 : LDInst<(outs IntRegs:$dst),
-            (ins PredRegs:$src1, u6Imm:$src2),
-            !strconcat("if (!$src1.new) $dst =3D ", !strconcat(OpcStr, "(#=
$src2)")),
-            []>,
-            Requires<[HasV4T]>;
-}
-
-defm LDrib_imm : LD_absimm<"memb">;
-defm LDriub_imm : LD_absimm<"memub">;
-defm LDrih_imm : LD_absimm<"memh">;
-defm LDriuh_imm : LD_absimm<"memuh">;
-defm LDriw_imm : LD_absimm<"memw">;
-
-let Predicates =3D [HasV4T], AddedComplexity  =3D 30 in
-def : Pat<(i32 (load u6ImmPred:$src)),
-          (LDriw_imm_abs_V4 u6ImmPred:$src)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (sextloadi8 u6ImmPred:$src)),
-          (LDrib_imm_abs_V4 u6ImmPred:$src)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (zextloadi8 u6ImmPred:$src)),
-          (LDriub_imm_abs_V4 u6ImmPred:$src)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (sextloadi16 u6ImmPred:$src)),
-          (LDrih_imm_abs_V4 u6ImmPred:$src)>;
-
-let Predicates =3D [HasV4T], AddedComplexity=3D30 in
-def : Pat<(i32 (zextloadi16 u6ImmPred:$src)),
-          (LDriuh_imm_abs_V4 u6ImmPred:$src)>;
-
-
-// Indexed store double word - global address.
-// memw(Rs+#u6:2)=3D#S8
-let AddedComplexity =3D 10 in
-def STriw_offset_ext_V4 : STInst<(outs),
-            (ins IntRegs:$src1, u6_2Imm:$src2, globaladdress:$src3),
-            "memw($src1+#$src2) =3D ##$src3",
-            [(store (HexagonCONST32 tglobaladdr:$src3),
-                    (add IntRegs:$src1, u6_2ImmPred:$src2))]>,
-            Requires<[HasV4T]>;
-
-
-// Indexed store double word - global address.
-// memw(Rs+#u6:2)=3D#S8
-let AddedComplexity =3D 10 in
-def STrih_offset_ext_V4 : STInst<(outs),
-            (ins IntRegs:$src1, u6_1Imm:$src2, globaladdress:$src3),
-            "memh($src1+#$src2) =3D ##$src3",
-            [(truncstorei16 (HexagonCONST32 tglobaladdr:$src3),
-                    (add IntRegs:$src1, u6_1ImmPred:$src2))]>,
-            Requires<[HasV4T]>;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonMCInst.h
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonMCInst.h	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-//=3D=3D=3D- HexagonMCInst.h - Hexagon sub-class of MCInst ---------------=
-------=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This class extends MCInst to allow some VLIW annotation.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef HEXAGONMCINST_H
-#define HEXAGONMCINST_H
-
-#include "llvm/MC/MCInst.h"
-#include "llvm/CodeGen/MachineInstr.h"
-
-namespace llvm {
-  class HexagonMCInst: public MCInst {
-    // Packet start and end markers
-    unsigned startPacket: 1, endPacket: 1;
-    const MachineInstr *MachineI;
-  public:
-    explicit HexagonMCInst(): MCInst(),
-                              startPacket(0), endPacket(0) {}
-
-    const MachineInstr* getMI() const { return MachineI; };
-
-    void setMI(const MachineInstr *MI) { MachineI =3D MI; };
-
-    bool isStartPacket() const { return (startPacket); };
-    bool isEndPacket() const { return (endPacket); };
-
-    void setStartPacket(bool yes) { startPacket =3D yes; };
-    void setEndPacket(bool yes) { endPacket =3D yes; };
-  };
-}
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonMCInstLower.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -49,7 +49,7 @@
     switch (MO.getType()) {
     default:
       MI->dump();
-      llvm_unreachable("unknown operand type");
+      assert(0 && "unknown operand type");
     case MachineOperand::MO_Register:
       // Ignore all implicit register operands.
       if (MO.isImplicit()) continue;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonSchedule.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td	Wed Jul 25 16=
:21:35 2012 +0300
@@ -13,6 +13,7 @@
 def MUNIT     : FuncUnit;
 def SUNIT     : FuncUnit;
=20
+
 // Itinerary classes
 def ALU32     : InstrItinClass;
 def ALU64     : InstrItinClass;
@@ -23,25 +24,23 @@
 def M         : InstrItinClass;
 def ST        : InstrItinClass;
 def S         : InstrItinClass;
-def SYS       : InstrItinClass;
-def MARKER    : InstrItinClass;
 def PSEUDO    : InstrItinClass;
=20
+
 def HexagonItineraries :
-      ProcessorItineraries<[LUNIT, LSUNIT, MUNIT, SUNIT], [], [
-        InstrItinData<ALU32  , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT=
]>]>,
-        InstrItinData<ALU64  , [InstrStage<1, [MUNIT, SUNIT]>]>,
-        InstrItinData<CR     , [InstrStage<1, [SUNIT]>]>,
-        InstrItinData<J      , [InstrStage<1, [SUNIT, MUNIT]>]>,
-        InstrItinData<JR     , [InstrStage<1, [MUNIT]>]>,
-        InstrItinData<LD     , [InstrStage<1, [LUNIT, LSUNIT]>]>,
-        InstrItinData<M      , [InstrStage<1, [MUNIT, SUNIT]>]>,
-        InstrItinData<ST     , [InstrStage<1, [LSUNIT]>]>,
-        InstrItinData<S      , [InstrStage<1, [SUNIT, MUNIT]>]>,
-        InstrItinData<SYS    , [InstrStage<1, [LSUNIT]>]>,
-        InstrItinData<MARKER , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT=
]>]>,
-        InstrItinData<PSEUDO , [InstrStage<1, [LUNIT, LSUNIT, MUNIT, SUNIT=
]>]>
-      ]>;
+ ProcessorItineraries<[LUNIT, LSUNIT, MUNIT, SUNIT], [], [
+  InstrItinData<ALU32      , [InstrStage<1,  [LUNIT, LSUNIT, MUNIT, SUNIT]=
>]>,
+  InstrItinData<ALU64      , [InstrStage<1,  [MUNIT, SUNIT]>]>,
+  InstrItinData<CR         , [InstrStage<1,  [SUNIT]>]>,
+  InstrItinData<J          , [InstrStage<1,  [SUNIT, MUNIT]>]>,
+  InstrItinData<JR         , [InstrStage<1,  [MUNIT]>]>,
+  InstrItinData<LD         , [InstrStage<1,  [LUNIT, LSUNIT]>]>,
+  InstrItinData<M          , [InstrStage<1,  [MUNIT, SUNIT]>]>,
+  InstrItinData<ST         , [InstrStage<1,  [LSUNIT]>]>,
+  InstrItinData<S          , [InstrStage<1,  [SUNIT, MUNIT]>]>,
+  InstrItinData<PSEUDO     , [InstrStage<1,  [LUNIT, LSUNIT, MUNIT, SUNIT]=
>]>
+]>;
+
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // V4 Machine Info +
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonScheduleV4.td
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td	Wed Jul 25 =
16:21:35 2012 +0300
@@ -23,6 +23,7 @@
 //    | SLOT3     |  XTYPE          ALU32     J         CR           |
 //    |=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|
=20
+
 // Functional Units.
 def SLOT0       : FuncUnit;
 def SLOT1       : FuncUnit;
@@ -33,26 +34,22 @@
 def NV_V4       : InstrItinClass;
 def MEM_V4      : InstrItinClass;
 // ALU64/M/S Instruction classes of V2 are collectively knownn as XTYPE in=
 V4.
-def PREFIX      : InstrItinClass;
=20
-def HexagonItinerariesV4 :
-      ProcessorItineraries<[SLOT0, SLOT1, SLOT2, SLOT3], [], [
-        InstrItinData<ALU32  , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]=
>]>,
-        InstrItinData<ALU64  , [InstrStage<1, [SLOT2, SLOT3]>]>,
-        InstrItinData<CR     , [InstrStage<1, [SLOT3]>]>,
-        InstrItinData<J      , [InstrStage<1, [SLOT2, SLOT3]>]>,
-        InstrItinData<JR     , [InstrStage<1, [SLOT2]>]>,
-        InstrItinData<LD     , [InstrStage<1, [SLOT0, SLOT1]>]>,
-        InstrItinData<M      , [InstrStage<1, [SLOT2, SLOT3]>]>,
-        InstrItinData<ST     , [InstrStage<1, [SLOT0, SLOT1]>]>,
-        InstrItinData<S      , [InstrStage<1, [SLOT2, SLOT3]>]>,
-        InstrItinData<SYS    , [InstrStage<1, [SLOT0]>]>,
-        InstrItinData<NV_V4  , [InstrStage<1, [SLOT0]>]>,
-        InstrItinData<MEM_V4 , [InstrStage<1, [SLOT0]>]>,
-        InstrItinData<MARKER , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]=
>]>,
-        InstrItinData<PREFIX , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]=
>]>,
-        InstrItinData<PSEUDO , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]=
>]>
-      ]>;
+def HexagonItinerariesV4 : ProcessorItineraries<
+                    [SLOT0, SLOT1, SLOT2, SLOT3], [], [
+  InstrItinData<LD            , [InstrStage<1,  [SLOT0, SLOT1]>]>,
+  InstrItinData<ST            , [InstrStage<1,  [SLOT0, SLOT1]>]>,
+  InstrItinData<ALU32         , [InstrStage<1,  [SLOT0, SLOT1, SLOT2, SLOT=
3]>]>,
+  InstrItinData<NV_V4         , [InstrStage<1,  [SLOT0]>]>,
+  InstrItinData<MEM_V4        , [InstrStage<1,  [SLOT0]>]>,
+  InstrItinData<J             , [InstrStage<1,  [SLOT2, SLOT3]>]>,
+  InstrItinData<JR            , [InstrStage<1,  [SLOT2]>]>,
+  InstrItinData<CR            , [InstrStage<1,  [SLOT3]>]>,
+  InstrItinData<PSEUDO        , [InstrStage<1,  [SLOT0, SLOT1, SLOT2, SLOT=
3]>]>,
+  InstrItinData<ALU64         , [InstrStage<1,  [SLOT2, SLOT3]>]>,
+  InstrItinData<M             , [InstrStage<1,  [SLOT2, SLOT3]>]>,
+  InstrItinData<S             , [InstrStage<1,  [SLOT2, SLOT3]>]>
+]>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Hexagon V4 Resource Definitions -
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -100,23 +100,23 @@
 }
=20
 bool HexagonPassConfig::addInstSelector() {
-  PM.add(createHexagonRemoveExtendOps(getHexagonTargetMachine()));
-  PM.add(createHexagonISelDag(getHexagonTargetMachine()));
-  PM.add(createHexagonPeephole());
+  PM->add(createHexagonRemoveExtendOps(getHexagonTargetMachine()));
+  PM->add(createHexagonISelDag(getHexagonTargetMachine()));
+  PM->add(createHexagonPeephole());
   return false;
 }
=20
=20
 bool HexagonPassConfig::addPreRegAlloc() {
   if (!DisableHardwareLoops) {
-    PM.add(createHexagonHardwareLoops());
+    PM->add(createHexagonHardwareLoops());
   }
=20
   return false;
 }
=20
 bool HexagonPassConfig::addPostRegAlloc() {
-  PM.add(createHexagonCFGOptimizer(getHexagonTargetMachine()));
+  PM->add(createHexagonCFGOptimizer(getHexagonTargetMachine()));
   return true;
 }
=20
@@ -129,17 +129,14 @@
 bool HexagonPassConfig::addPreEmitPass() {
=20
   if (!DisableHardwareLoops) {
-    PM.add(createHexagonFixupHwLoops());
+    PM->add(createHexagonFixupHwLoops());
   }
=20
   // Expand Spill code for predicate registers.
-  PM.add(createHexagonExpandPredSpillCode(getHexagonTargetMachine()));
+  PM->add(createHexagonExpandPredSpillCode(getHexagonTargetMachine()));
=20
   // Split up TFRcondsets into conditional transfers.
-  PM.add(createHexagonSplitTFRCondSets(getHexagonTargetMachine()));
-
-  // Create Packets.
-  PM.add(createHexagonPacketizer());
+  PM->add(createHexagonSplitTFRCondSets(getHexagonTargetMachine()));
=20
   return false;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/H=
exagonVLIWPacketizer.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp	Wed Ju=
l 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3642 +0,0 @@
-//=3D=3D=3D----- HexagonPacketizer.cpp - vliw packetizer -----------------=
----=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This implements a simple VLIW packetizer using DFA. The packetizer work=
s on
-// machine basic blocks. For each instruction I in BB, the packetizer cons=
ults
-// the DFA to see if machine resources are available to execute I. If so, =
the
-// packetizer checks if I depends on any instruction J in the current pack=
et.
-// If no dependency is found, I is added to current packet and machine res=
ource
-// is marked as taken. If any dependency is found, a target API call is ma=
de to
-// prune the dependence.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-#define DEBUG_TYPE "packets"
-#include "llvm/CodeGen/DFAPacketizer.h"
-#include "llvm/CodeGen/Passes.h"
-#include "llvm/CodeGen/MachineDominators.h"
-#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/CodeGen/MachineLoopInfo.h"
-#include "llvm/CodeGen/ScheduleDAG.h"
-#include "llvm/CodeGen/ScheduleDAGInstrs.h"
-#include "llvm/CodeGen/LatencyPriorityQueue.h"
-#include "llvm/CodeGen/SchedulerRegistry.h"
-#include "llvm/CodeGen/MachineFrameInfo.h"
-#include "llvm/CodeGen/MachineInstrBuilder.h"
-#include "llvm/CodeGen/MachineRegisterInfo.h"
-#include "llvm/CodeGen/MachineFunctionAnalysis.h"
-#include "llvm/CodeGen/ScheduleHazardRecognizer.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetInstrInfo.h"
-#include "llvm/Target/TargetRegisterInfo.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Support/MathExtras.h"
-#include "llvm/MC/MCInstrItineraries.h"
-#include "llvm/Support/Compiler.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Debug.h"
-#include "Hexagon.h"
-#include "HexagonTargetMachine.h"
-#include "HexagonRegisterInfo.h"
-#include "HexagonSubtarget.h"
-#include "HexagonMachineFunctionInfo.h"
-
-#include <map>
-
-using namespace llvm;
-
-namespace {
-  class HexagonPacketizer : public MachineFunctionPass {
-
-  public:
-    static char ID;
-    HexagonPacketizer() : MachineFunctionPass(ID) {}
-
-    void getAnalysisUsage(AnalysisUsage &AU) const {
-      AU.setPreservesCFG();
-      AU.addRequired<MachineDominatorTree>();
-      AU.addPreserved<MachineDominatorTree>();
-      AU.addRequired<MachineLoopInfo>();
-      AU.addPreserved<MachineLoopInfo>();
-      MachineFunctionPass::getAnalysisUsage(AU);
-    }
-
-    const char *getPassName() const {
-      return "Hexagon Packetizer";
-    }
-
-    bool runOnMachineFunction(MachineFunction &Fn);
-  };
-  char HexagonPacketizer::ID =3D 0;
-
-  class HexagonPacketizerList : public VLIWPacketizerList {
-
-  private:
-
-    // Has the instruction been promoted to a dot-new instruction.
-    bool PromotedToDotNew;
-
-    // Has the instruction been glued to allocframe.
-    bool GlueAllocframeStore;
-
-    // Has the feeder instruction been glued to new value jump.
-    bool GlueToNewValueJump;
-
-    // Check if there is a dependence between some instruction already in =
this
-    // packet and this instruction.
-    bool Dependence;
-
-    // Only check for dependence if there are resources available to
-    // schedule this instruction.
-    bool FoundSequentialDependence;
-
-  public:
-    // Ctor.
-    HexagonPacketizerList(MachineFunction &MF, MachineLoopInfo &MLI,
-                          MachineDominatorTree &MDT);
-
-    // initPacketizerState - initialize some internal flags.
-    void initPacketizerState();
-
-    // ignorePseudoInstruction - Ignore bundling of pseudo instructions.
-    bool ignorePseudoInstruction(MachineInstr *MI, MachineBasicBlock *MBB);
-
-    // isSoloInstruction - return true if instruction MI can not be packet=
ized
-    // with any other instruction, which means that MI itself is a packet.
-    bool isSoloInstruction(MachineInstr *MI);
-
-    // isLegalToPacketizeTogether - Is it legal to packetize SUI and SUJ
-    // together.
-    bool isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ);
-
-    // isLegalToPruneDependencies - Is it legal to prune dependece between=
 SUI
-    // and SUJ.
-    bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ);
-
-    MachineBasicBlock::iterator addToPacket(MachineInstr *MI);
-  private:
-    bool IsCallDependent(MachineInstr* MI, SDep::Kind DepType, unsigned De=
pReg);
-    bool PromoteToDotNew(MachineInstr* MI, SDep::Kind DepType,
-                    MachineBasicBlock::iterator &MII,
-                    const TargetRegisterClass* RC);
-    bool CanPromoteToDotNew(MachineInstr* MI, SUnit* PacketSU,
-                    unsigned DepReg,
-                    std::map <MachineInstr*, SUnit*> MIToSUnit,
-                    MachineBasicBlock::iterator &MII,
-                    const TargetRegisterClass* RC);
-    bool CanPromoteToNewValue(MachineInstr* MI, SUnit* PacketSU,
-                    unsigned DepReg,
-                    std::map <MachineInstr*, SUnit*> MIToSUnit,
-                    MachineBasicBlock::iterator &MII);
-    bool CanPromoteToNewValueStore(MachineInstr* MI, MachineInstr* PacketM=
I,
-                    unsigned DepReg,
-                    std::map <MachineInstr*, SUnit*> MIToSUnit);
-    bool DemoteToDotOld(MachineInstr* MI);
-    bool ArePredicatesComplements(MachineInstr* MI1, MachineInstr* MI2,
-                    std::map <MachineInstr*, SUnit*> MIToSUnit);
-    bool RestrictingDepExistInPacket(MachineInstr*,
-                    unsigned, std::map <MachineInstr*, SUnit*>);
-    bool isNewifiable(MachineInstr* MI);
-    bool isCondInst(MachineInstr* MI);
-    bool IsNewifyStore (MachineInstr* MI);
-    bool tryAllocateResourcesForConstExt(MachineInstr* MI);
-    bool canReserveResourcesForConstExt(MachineInstr *MI);
-    void reserveResourcesForConstExt(MachineInstr* MI);
-    bool isNewValueInst(MachineInstr* MI);
-    bool isDotNewInst(MachineInstr* MI);
-  };
-}
-
-// HexagonPacketizerList Ctor.
-HexagonPacketizerList::HexagonPacketizerList(
-  MachineFunction &MF, MachineLoopInfo &MLI,MachineDominatorTree &MDT)
-  : VLIWPacketizerList(MF, MLI, MDT, true){
-}
-
-bool HexagonPacketizer::runOnMachineFunction(MachineFunction &Fn) {
-  const TargetInstrInfo *TII =3D Fn.getTarget().getInstrInfo();
-  MachineLoopInfo &MLI =3D getAnalysis<MachineLoopInfo>();
-  MachineDominatorTree &MDT =3D getAnalysis<MachineDominatorTree>();
-
-  // Instantiate the packetizer.
-  HexagonPacketizerList Packetizer(Fn, MLI, MDT);
-
-  // DFA state table should not be empty.
-  assert(Packetizer.getResourceTracker() && "Empty DFA table!");
-
-  //
-  // Loop over all basic blocks and remove KILL pseudo-instructions
-  // These instructions confuse the dependence analysis. Consider:
-  // D0 =3D ...   (Insn 0)
-  // R0 =3D KILL R0, D0 (Insn 1)
-  // R0 =3D ... (Insn 2)
-  // Here, Insn 1 will result in the dependence graph not emitting an outp=
ut
-  // dependence between Insn 0 and Insn 2. This can lead to incorrect
-  // packetization
-  //
-  for (MachineFunction::iterator MBB =3D Fn.begin(), MBBe =3D Fn.end();
-       MBB !=3D MBBe; ++MBB) {
-    MachineBasicBlock::iterator End =3D MBB->end();
-    MachineBasicBlock::iterator MI =3D MBB->begin();
-    while (MI !=3D End) {
-      if (MI->isKill()) {
-        MachineBasicBlock::iterator DeleteMI =3D MI;
-        ++MI;
-        MBB->erase(DeleteMI);
-        End =3D MBB->end();
-        continue;
-      }
-      ++MI;
-    }
-  }
-
-  // Loop over all of the basic blocks.
-  for (MachineFunction::iterator MBB =3D Fn.begin(), MBBe =3D Fn.end();
-       MBB !=3D MBBe; ++MBB) {
-    // Find scheduling regions and schedule / packetize each region.
-    unsigned RemainingCount =3D MBB->size();
-    for(MachineBasicBlock::iterator RegionEnd =3D MBB->end();
-        RegionEnd !=3D MBB->begin();) {
-      // The next region starts above the previous region. Look backward i=
n the
-      // instruction stream until we find the nearest boundary.
-      MachineBasicBlock::iterator I =3D RegionEnd;
-      for(;I !=3D MBB->begin(); --I, --RemainingCount) {
-        if (TII->isSchedulingBoundary(llvm::prior(I), MBB, Fn))
-          break;
-      }
-      I =3D MBB->begin();
-
-      // Skip empty scheduling regions.
-      if (I =3D=3D RegionEnd) {
-        RegionEnd =3D llvm::prior(RegionEnd);
-        --RemainingCount;
-        continue;
-      }
-      // Skip regions with one instruction.
-      if (I =3D=3D llvm::prior(RegionEnd)) {
-        RegionEnd =3D llvm::prior(RegionEnd);
-        continue;
-      }
-
-      Packetizer.PacketizeMIs(MBB, I, RegionEnd);
-      RegionEnd =3D I;
-    }
-  }
-
-  return true;
-}
-
-
-static bool IsIndirectCall(MachineInstr* MI) {
-  return ((MI->getOpcode() =3D=3D Hexagon::CALLR) ||
-          (MI->getOpcode() =3D=3D Hexagon::CALLRv3));
-}
-
-// Reserve resources for constant extender. Trigure an assertion if
-// reservation fail.
-void HexagonPacketizerList::reserveResourcesForConstExt(MachineInstr* MI) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  MachineInstr *PseudoMI =3D MI->getParent()->getParent()->CreateMachineIn=
str(
-                                  QII->get(Hexagon::IMMEXT), MI->getDebugL=
oc());
-
-  if (ResourceTracker->canReserveResources(PseudoMI)) {
-    ResourceTracker->reserveResources(PseudoMI);
-    MI->getParent()->getParent()->DeleteMachineInstr(PseudoMI);
-  } else {
-    MI->getParent()->getParent()->DeleteMachineInstr(PseudoMI);
-    llvm_unreachable("can not reserve resources for constant extender.");
-  }
-  return;
-}
-
-bool HexagonPacketizerList::canReserveResourcesForConstExt(MachineInstr *M=
I) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  assert(QII->isExtended(MI) &&
-         "Should only be called for constant extended instructions");
-  MachineFunction *MF =3D MI->getParent()->getParent();
-  MachineInstr *PseudoMI =3D MF->CreateMachineInstr(QII->get(Hexagon::IMME=
XT),
-                                                  MI->getDebugLoc());
-  bool CanReserve =3D ResourceTracker->canReserveResources(PseudoMI);
-  MF->DeleteMachineInstr(PseudoMI);
-  return CanReserve;
-}
-
-// Allocate resources (i.e. 4 bytes) for constant extender. If succeed, re=
turn
-// true, otherwise, return false.
-bool HexagonPacketizerList::tryAllocateResourcesForConstExt(MachineInstr* =
MI) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  MachineInstr *PseudoMI =3D MI->getParent()->getParent()->CreateMachineIn=
str(
-                                  QII->get(Hexagon::IMMEXT), MI->getDebugL=
oc());
-
-  if (ResourceTracker->canReserveResources(PseudoMI)) {
-    ResourceTracker->reserveResources(PseudoMI);
-    MI->getParent()->getParent()->DeleteMachineInstr(PseudoMI);
-    return true;
-  } else {
-    MI->getParent()->getParent()->DeleteMachineInstr(PseudoMI);
-    return false;
-  }
-}
-
-
-bool HexagonPacketizerList::IsCallDependent(MachineInstr* MI,
-                                          SDep::Kind DepType,
-                                          unsigned DepReg) {
-
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  const HexagonRegisterInfo* QRI =3D (const HexagonRegisterInfo *) TM.getR=
egisterInfo();
-
-  // Check for lr dependence
-  if (DepReg =3D=3D QRI->getRARegister()) {
-    return true;
-  }
-
-  if (QII->isDeallocRet(MI)) {
-    if (DepReg =3D=3D QRI->getFrameRegister() ||
-        DepReg =3D=3D QRI->getStackRegister())
-      return true;
-  }
-
-  // Check if this is a predicate dependence
-  const TargetRegisterClass* RC =3D QRI->getMinimalPhysRegClass(DepReg);
-  if (RC =3D=3D Hexagon::PredRegsRegisterClass) {
-    return true;
-  }
-
-  //
-  // Lastly check for an operand used in an indirect call
-  // If we had an attribute for checking if an instruction is an indirect =
call,
-  // then we could have avoided this relatively brittle implementation of
-  // IsIndirectCall()
-  //
-  // Assumes that the first operand of the CALLr is the function address
-  //
-  if (IsIndirectCall(MI) && (DepType =3D=3D SDep::Data)) {
-    MachineOperand MO =3D MI->getOperand(0);
-    if (MO.isReg() && MO.isUse() && (MO.getReg() =3D=3D DepReg)) {
-      return true;
-    }
-  }
-
-  return false;
-}
-
-static bool IsRegDependence(const SDep::Kind DepType) {
-  return (DepType =3D=3D SDep::Data || DepType =3D=3D SDep::Anti ||
-          DepType =3D=3D SDep::Output);
-}
-
-static bool IsDirectJump(MachineInstr* MI) {
-  return (MI->getOpcode() =3D=3D Hexagon::JMP);
-}
-
-static bool IsSchedBarrier(MachineInstr* MI) {
-  switch (MI->getOpcode()) {
-  case Hexagon::BARRIER:
-    return true;
-  }
-  return false;
-}
-
-static bool IsControlFlow(MachineInstr* MI) {
-  return (MI->getDesc().isTerminator() || MI->getDesc().isCall());
-}
-
-bool HexagonPacketizerList::isNewValueInst(MachineInstr* MI) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  if (QII->isNewValueJump(MI))
-    return true;
-
-  if (QII->isNewValueStore(MI))
-    return true;
-
-  return false;
-}
-
-// Function returns true if an instruction can be promoted to the new-value
-// store. It will always return false for v2 and v3.
-// It lists all the conditional and unconditional stores that can be promo=
ted
-// to the new-value stores.
-
-bool HexagonPacketizerList::IsNewifyStore (MachineInstr* MI) {
-  const HexagonRegisterInfo* QRI =3D (const HexagonRegisterInfo *) TM.getR=
egisterInfo();
-  switch (MI->getOpcode())
-  {
-    // store byte
-    case Hexagon::STrib:
-    case Hexagon::STrib_indexed:
-    case Hexagon::STrib_indexed_shl_V4:
-    case Hexagon::STrib_shl_V4:
-    case Hexagon::STrib_GP_V4:
-    case Hexagon::STb_GP_V4:
-    case Hexagon::POST_STbri:
-    case Hexagon::STrib_cPt:
-    case Hexagon::STrib_cdnPt_V4:
-    case Hexagon::STrib_cNotPt:
-    case Hexagon::STrib_cdnNotPt_V4:
-    case Hexagon::STrib_indexed_cPt:
-    case Hexagon::STrib_indexed_cdnPt_V4:
-    case Hexagon::STrib_indexed_cNotPt:
-    case Hexagon::STrib_indexed_cdnNotPt_V4:
-    case Hexagon::STrib_indexed_shl_cPt_V4:
-    case Hexagon::STrib_indexed_shl_cdnPt_V4:
-    case Hexagon::STrib_indexed_shl_cNotPt_V4:
-    case Hexagon::STrib_indexed_shl_cdnNotPt_V4:
-    case Hexagon::POST_STbri_cPt:
-    case Hexagon::POST_STbri_cdnPt_V4:
-    case Hexagon::POST_STbri_cNotPt:
-    case Hexagon::POST_STbri_cdnNotPt_V4:
-    case Hexagon::STb_GP_cPt_V4:
-    case Hexagon::STb_GP_cNotPt_V4:
-    case Hexagon::STb_GP_cdnPt_V4:
-    case Hexagon::STb_GP_cdnNotPt_V4:
-    case Hexagon::STrib_GP_cPt_V4:
-    case Hexagon::STrib_GP_cNotPt_V4:
-    case Hexagon::STrib_GP_cdnPt_V4:
-    case Hexagon::STrib_GP_cdnNotPt_V4:
-
-    // store halfword
-    case Hexagon::STrih:
-    case Hexagon::STrih_indexed:
-    case Hexagon::STrih_indexed_shl_V4:
-    case Hexagon::STrih_shl_V4:
-    case Hexagon::STrih_GP_V4:
-    case Hexagon::STh_GP_V4:
-    case Hexagon::POST_SThri:
-    case Hexagon::STrih_cPt:
-    case Hexagon::STrih_cdnPt_V4:
-    case Hexagon::STrih_cNotPt:
-    case Hexagon::STrih_cdnNotPt_V4:
-    case Hexagon::STrih_indexed_cPt:
-    case Hexagon::STrih_indexed_cdnPt_V4:
-    case Hexagon::STrih_indexed_cNotPt:
-    case Hexagon::STrih_indexed_cdnNotPt_V4:
-    case Hexagon::STrih_indexed_shl_cPt_V4:
-    case Hexagon::STrih_indexed_shl_cdnPt_V4:
-    case Hexagon::STrih_indexed_shl_cNotPt_V4:
-    case Hexagon::STrih_indexed_shl_cdnNotPt_V4:
-    case Hexagon::POST_SThri_cPt:
-    case Hexagon::POST_SThri_cdnPt_V4:
-    case Hexagon::POST_SThri_cNotPt:
-    case Hexagon::POST_SThri_cdnNotPt_V4:
-    case Hexagon::STh_GP_cPt_V4:
-    case Hexagon::STh_GP_cNotPt_V4:
-    case Hexagon::STh_GP_cdnPt_V4:
-    case Hexagon::STh_GP_cdnNotPt_V4:
-    case Hexagon::STrih_GP_cPt_V4:
-    case Hexagon::STrih_GP_cNotPt_V4:
-    case Hexagon::STrih_GP_cdnPt_V4:
-    case Hexagon::STrih_GP_cdnNotPt_V4:
-
-    // store word
-    case Hexagon::STriw:
-    case Hexagon::STriw_indexed:
-    case Hexagon::STriw_indexed_shl_V4:
-    case Hexagon::STriw_shl_V4:
-    case Hexagon::STriw_GP_V4:
-    case Hexagon::STw_GP_V4:
-    case Hexagon::POST_STwri:
-    case Hexagon::STriw_cPt:
-    case Hexagon::STriw_cdnPt_V4:
-    case Hexagon::STriw_cNotPt:
-    case Hexagon::STriw_cdnNotPt_V4:
-    case Hexagon::STriw_indexed_cPt:
-    case Hexagon::STriw_indexed_cdnPt_V4:
-    case Hexagon::STriw_indexed_cNotPt:
-    case Hexagon::STriw_indexed_cdnNotPt_V4:
-    case Hexagon::STriw_indexed_shl_cPt_V4:
-    case Hexagon::STriw_indexed_shl_cdnPt_V4:
-    case Hexagon::STriw_indexed_shl_cNotPt_V4:
-    case Hexagon::STriw_indexed_shl_cdnNotPt_V4:
-    case Hexagon::POST_STwri_cPt:
-    case Hexagon::POST_STwri_cdnPt_V4:
-    case Hexagon::POST_STwri_cNotPt:
-    case Hexagon::POST_STwri_cdnNotPt_V4:
-    case Hexagon::STw_GP_cPt_V4:
-    case Hexagon::STw_GP_cNotPt_V4:
-    case Hexagon::STw_GP_cdnPt_V4:
-    case Hexagon::STw_GP_cdnNotPt_V4:
-    case Hexagon::STriw_GP_cPt_V4:
-    case Hexagon::STriw_GP_cNotPt_V4:
-    case Hexagon::STriw_GP_cdnPt_V4:
-    case Hexagon::STriw_GP_cdnNotPt_V4:
-        return QRI->Subtarget.hasV4TOps();
-  }
-  return false;
-}
-
-static bool IsLoopN(MachineInstr *MI) {
-  return (MI->getOpcode() =3D=3D Hexagon::LOOP0_i ||
-          MI->getOpcode() =3D=3D Hexagon::LOOP0_r);
-}
-
-/// DoesModifyCalleeSavedReg - Returns true if the instruction modifies a
-/// callee-saved register.
-static bool DoesModifyCalleeSavedReg(MachineInstr *MI,
-                                     const TargetRegisterInfo *TRI) {
-  for (const uint16_t *CSR =3D TRI->getCalleeSavedRegs(); *CSR; ++CSR) {
-    unsigned CalleeSavedReg =3D *CSR;
-    if (MI->modifiesRegister(CalleeSavedReg, TRI))
-      return true;
-  }
-  return false;
-}
-
-// Return the new value instruction for a given store.
-static int GetDotNewOp(const int opc) {
-  switch (opc) {
-  default: llvm_unreachable("Unknown .new type");
-
-  // store new value byte
-  case Hexagon::STrib:
-    return Hexagon::STrib_nv_V4;
-
-  case Hexagon::STrib_indexed:
-    return Hexagon::STrib_indexed_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_V4:
-    return Hexagon::STrib_indexed_shl_nv_V4;
-
-  case Hexagon::STrib_shl_V4:
-    return Hexagon::STrib_shl_nv_V4;
-
-  case Hexagon::STrib_GP_V4:
-    return Hexagon::STrib_GP_nv_V4;
-
-  case Hexagon::STb_GP_V4:
-    return Hexagon::STb_GP_nv_V4;
-
-  case Hexagon::POST_STbri:
-    return Hexagon::POST_STbri_nv_V4;
-
-  case Hexagon::STrib_cPt:
-    return Hexagon::STrib_cPt_nv_V4;
-
-  case Hexagon::STrib_cdnPt_V4:
-    return Hexagon::STrib_cdnPt_nv_V4;
-
-  case Hexagon::STrib_cNotPt:
-    return Hexagon::STrib_cNotPt_nv_V4;
-
-  case Hexagon::STrib_cdnNotPt_V4:
-    return Hexagon::STrib_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_cPt:
-    return Hexagon::STrib_indexed_cPt_nv_V4;
-
-  case Hexagon::STrib_indexed_cdnPt_V4:
-    return Hexagon::STrib_indexed_cdnPt_nv_V4;
-
-  case Hexagon::STrib_indexed_cNotPt:
-    return Hexagon::STrib_indexed_cNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_cdnNotPt_V4:
-    return Hexagon::STrib_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_cPt_V4:
-    return Hexagon::STrib_indexed_shl_cPt_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_cdnPt_V4:
-    return Hexagon::STrib_indexed_shl_cdnPt_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_cNotPt_V4:
-    return Hexagon::STrib_indexed_shl_cNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_cdnNotPt_V4:
-    return Hexagon::STrib_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_STbri_cPt:
-    return Hexagon::POST_STbri_cPt_nv_V4;
-
-  case Hexagon::POST_STbri_cdnPt_V4:
-    return Hexagon::POST_STbri_cdnPt_nv_V4;
-
-  case Hexagon::POST_STbri_cNotPt:
-    return Hexagon::POST_STbri_cNotPt_nv_V4;
-
-  case Hexagon::POST_STbri_cdnNotPt_V4:
-    return Hexagon::POST_STbri_cdnNotPt_nv_V4;
-
-  case Hexagon::STb_GP_cPt_V4:
-    return Hexagon::STb_GP_cPt_nv_V4;
-
-  case Hexagon::STb_GP_cNotPt_V4:
-    return Hexagon::STb_GP_cNotPt_nv_V4;
-
-  case Hexagon::STb_GP_cdnPt_V4:
-    return Hexagon::STb_GP_cdnPt_nv_V4;
-
-  case Hexagon::STb_GP_cdnNotPt_V4:
-    return Hexagon::STb_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_GP_cPt_V4:
-    return Hexagon::STrib_GP_cPt_nv_V4;
-
-  case Hexagon::STrib_GP_cNotPt_V4:
-    return Hexagon::STrib_GP_cNotPt_nv_V4;
-
-  case Hexagon::STrib_GP_cdnPt_V4:
-    return Hexagon::STrib_GP_cdnPt_nv_V4;
-
-  case Hexagon::STrib_GP_cdnNotPt_V4:
-    return Hexagon::STrib_GP_cdnNotPt_nv_V4;
-
-  // store new value halfword
-  case Hexagon::STrih:
-    return Hexagon::STrih_nv_V4;
-
-  case Hexagon::STrih_indexed:
-    return Hexagon::STrih_indexed_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_V4:
-    return Hexagon::STrih_indexed_shl_nv_V4;
-
-  case Hexagon::STrih_shl_V4:
-    return Hexagon::STrih_shl_nv_V4;
-
-  case Hexagon::STrih_GP_V4:
-    return Hexagon::STrih_GP_nv_V4;
-
-  case Hexagon::STh_GP_V4:
-    return Hexagon::STh_GP_nv_V4;
-
-  case Hexagon::POST_SThri:
-    return Hexagon::POST_SThri_nv_V4;
-
-  case Hexagon::STrih_cPt:
-    return Hexagon::STrih_cPt_nv_V4;
-
-  case Hexagon::STrih_cdnPt_V4:
-    return Hexagon::STrih_cdnPt_nv_V4;
-
-  case Hexagon::STrih_cNotPt:
-    return Hexagon::STrih_cNotPt_nv_V4;
-
-  case Hexagon::STrih_cdnNotPt_V4:
-    return Hexagon::STrih_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_cPt:
-    return Hexagon::STrih_indexed_cPt_nv_V4;
-
-  case Hexagon::STrih_indexed_cdnPt_V4:
-    return Hexagon::STrih_indexed_cdnPt_nv_V4;
-
-  case Hexagon::STrih_indexed_cNotPt:
-    return Hexagon::STrih_indexed_cNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_cdnNotPt_V4:
-    return Hexagon::STrih_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_cPt_V4:
-    return Hexagon::STrih_indexed_shl_cPt_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_cdnPt_V4:
-    return Hexagon::STrih_indexed_shl_cdnPt_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_cNotPt_V4:
-    return Hexagon::STrih_indexed_shl_cNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_cdnNotPt_V4:
-    return Hexagon::STrih_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_SThri_cPt:
-    return Hexagon::POST_SThri_cPt_nv_V4;
-
-  case Hexagon::POST_SThri_cdnPt_V4:
-    return Hexagon::POST_SThri_cdnPt_nv_V4;
-
-  case Hexagon::POST_SThri_cNotPt:
-    return Hexagon::POST_SThri_cNotPt_nv_V4;
-
-  case Hexagon::POST_SThri_cdnNotPt_V4:
-    return Hexagon::POST_SThri_cdnNotPt_nv_V4;
-
-  case Hexagon::STh_GP_cPt_V4:
-    return Hexagon::STh_GP_cPt_nv_V4;
-
-  case Hexagon::STh_GP_cNotPt_V4:
-    return Hexagon::STh_GP_cNotPt_nv_V4;
-
-  case Hexagon::STh_GP_cdnPt_V4:
-    return Hexagon::STh_GP_cdnPt_nv_V4;
-
-  case Hexagon::STh_GP_cdnNotPt_V4:
-    return Hexagon::STh_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_GP_cPt_V4:
-    return Hexagon::STrih_GP_cPt_nv_V4;
-
-  case Hexagon::STrih_GP_cNotPt_V4:
-    return Hexagon::STrih_GP_cNotPt_nv_V4;
-
-  case Hexagon::STrih_GP_cdnPt_V4:
-    return Hexagon::STrih_GP_cdnPt_nv_V4;
-
-  case Hexagon::STrih_GP_cdnNotPt_V4:
-    return Hexagon::STrih_GP_cdnNotPt_nv_V4;
-
-  // store new value word
-  case Hexagon::STriw:
-    return Hexagon::STriw_nv_V4;
-
-  case Hexagon::STriw_indexed:
-    return Hexagon::STriw_indexed_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_V4:
-    return Hexagon::STriw_indexed_shl_nv_V4;
-
-  case Hexagon::STriw_shl_V4:
-    return Hexagon::STriw_shl_nv_V4;
-
-  case Hexagon::STriw_GP_V4:
-    return Hexagon::STriw_GP_nv_V4;
-
-  case Hexagon::STw_GP_V4:
-    return Hexagon::STw_GP_nv_V4;
-
-  case Hexagon::POST_STwri:
-    return Hexagon::POST_STwri_nv_V4;
-
-  case Hexagon::STriw_cPt:
-    return Hexagon::STriw_cPt_nv_V4;
-
-  case Hexagon::STriw_cdnPt_V4:
-    return Hexagon::STriw_cdnPt_nv_V4;
-
-  case Hexagon::STriw_cNotPt:
-    return Hexagon::STriw_cNotPt_nv_V4;
-
-  case Hexagon::STriw_cdnNotPt_V4:
-    return Hexagon::STriw_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_cPt:
-    return Hexagon::STriw_indexed_cPt_nv_V4;
-
-  case Hexagon::STriw_indexed_cdnPt_V4:
-    return Hexagon::STriw_indexed_cdnPt_nv_V4;
-
-  case Hexagon::STriw_indexed_cNotPt:
-    return Hexagon::STriw_indexed_cNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_cdnNotPt_V4:
-    return Hexagon::STriw_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_cPt_V4:
-    return Hexagon::STriw_indexed_shl_cPt_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_cdnPt_V4:
-    return Hexagon::STriw_indexed_shl_cdnPt_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_cNotPt_V4:
-    return Hexagon::STriw_indexed_shl_cNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_cdnNotPt_V4:
-    return Hexagon::STriw_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_STwri_cPt:
-    return Hexagon::POST_STwri_cPt_nv_V4;
-
-  case Hexagon::POST_STwri_cdnPt_V4:
-    return Hexagon::POST_STwri_cdnPt_nv_V4;
-
-  case Hexagon::POST_STwri_cNotPt:
-    return Hexagon::POST_STwri_cNotPt_nv_V4;
-
-  case Hexagon::POST_STwri_cdnNotPt_V4:
-    return Hexagon::POST_STwri_cdnNotPt_nv_V4;
-
-  case Hexagon::STw_GP_cPt_V4:
-    return Hexagon::STw_GP_cPt_nv_V4;
-
-  case Hexagon::STw_GP_cNotPt_V4:
-    return Hexagon::STw_GP_cNotPt_nv_V4;
-
-  case Hexagon::STw_GP_cdnPt_V4:
-    return Hexagon::STw_GP_cdnPt_nv_V4;
-
-  case Hexagon::STw_GP_cdnNotPt_V4:
-    return Hexagon::STw_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_GP_cPt_V4:
-    return Hexagon::STriw_GP_cPt_nv_V4;
-
-  case Hexagon::STriw_GP_cNotPt_V4:
-    return Hexagon::STriw_GP_cNotPt_nv_V4;
-
-  case Hexagon::STriw_GP_cdnPt_V4:
-    return Hexagon::STriw_GP_cdnPt_nv_V4;
-
-  case Hexagon::STriw_GP_cdnNotPt_V4:
-    return Hexagon::STriw_GP_cdnNotPt_nv_V4;
-  }
-}
-
-// Return .new predicate version for an instruction
-static int GetDotNewPredOp(const int opc) {
-  switch (opc) {
-  default: llvm_unreachable("Unknown .new type");
-
-  // Conditional stores
-  // Store byte conditionally
-  case Hexagon::STrib_cPt :
-    return Hexagon::STrib_cdnPt_V4;
-
-  case Hexagon::STrib_cNotPt :
-    return Hexagon::STrib_cdnNotPt_V4;
-
-  case Hexagon::STrib_indexed_cPt :
-    return Hexagon::STrib_indexed_cdnPt_V4;
-
-  case Hexagon::STrib_indexed_cNotPt :
-    return Hexagon::STrib_indexed_cdnNotPt_V4;
-
-  case Hexagon::STrib_imm_cPt_V4 :
-    return Hexagon::STrib_imm_cdnPt_V4;
-
-  case Hexagon::STrib_imm_cNotPt_V4 :
-    return Hexagon::STrib_imm_cdnNotPt_V4;
-
-  case Hexagon::POST_STbri_cPt :
-    return Hexagon::POST_STbri_cdnPt_V4;
-
-  case Hexagon::POST_STbri_cNotPt :
-    return Hexagon::POST_STbri_cdnNotPt_V4;
-
-  case Hexagon::STrib_indexed_shl_cPt_V4 :
-    return Hexagon::STrib_indexed_shl_cdnPt_V4;
-
-  case Hexagon::STrib_indexed_shl_cNotPt_V4 :
-    return Hexagon::STrib_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::STb_GP_cPt_V4 :
-    return Hexagon::STb_GP_cdnPt_V4;
-
-  case Hexagon::STb_GP_cNotPt_V4 :
-    return Hexagon::STb_GP_cdnNotPt_V4;
-
-  case Hexagon::STrib_GP_cPt_V4 :
-    return Hexagon::STrib_GP_cdnPt_V4;
-
-  case Hexagon::STrib_GP_cNotPt_V4 :
-    return Hexagon::STrib_GP_cdnNotPt_V4;
-
-  // Store doubleword conditionally
-  case Hexagon::STrid_cPt :
-    return Hexagon::STrid_cdnPt_V4;
-
-  case Hexagon::STrid_cNotPt :
-    return Hexagon::STrid_cdnNotPt_V4;
-
-  case Hexagon::STrid_indexed_cPt :
-    return Hexagon::STrid_indexed_cdnPt_V4;
-
-  case Hexagon::STrid_indexed_cNotPt :
-    return Hexagon::STrid_indexed_cdnNotPt_V4;
-
-  case Hexagon::STrid_indexed_shl_cPt_V4 :
-    return Hexagon::STrid_indexed_shl_cdnPt_V4;
-
-  case Hexagon::STrid_indexed_shl_cNotPt_V4 :
-    return Hexagon::STrid_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::POST_STdri_cPt :
-    return Hexagon::POST_STdri_cdnPt_V4;
-
-  case Hexagon::POST_STdri_cNotPt :
-    return Hexagon::POST_STdri_cdnNotPt_V4;
-
-  case Hexagon::STd_GP_cPt_V4 :
-    return Hexagon::STd_GP_cdnPt_V4;
-
-  case Hexagon::STd_GP_cNotPt_V4 :
-    return Hexagon::STd_GP_cdnNotPt_V4;
-
-  case Hexagon::STrid_GP_cPt_V4 :
-    return Hexagon::STrid_GP_cdnPt_V4;
-
-  case Hexagon::STrid_GP_cNotPt_V4 :
-    return Hexagon::STrid_GP_cdnNotPt_V4;
-
-  // Store halfword conditionally
-  case Hexagon::STrih_cPt :
-    return Hexagon::STrih_cdnPt_V4;
-
-  case Hexagon::STrih_cNotPt :
-    return Hexagon::STrih_cdnNotPt_V4;
-
-  case Hexagon::STrih_indexed_cPt :
-    return Hexagon::STrih_indexed_cdnPt_V4;
-
-  case Hexagon::STrih_indexed_cNotPt :
-    return Hexagon::STrih_indexed_cdnNotPt_V4;
-
-  case Hexagon::STrih_imm_cPt_V4 :
-    return Hexagon::STrih_imm_cdnPt_V4;
-
-  case Hexagon::STrih_imm_cNotPt_V4 :
-    return Hexagon::STrih_imm_cdnNotPt_V4;
-
-  case Hexagon::STrih_indexed_shl_cPt_V4 :
-    return Hexagon::STrih_indexed_shl_cdnPt_V4;
-
-  case Hexagon::STrih_indexed_shl_cNotPt_V4 :
-    return Hexagon::STrih_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::POST_SThri_cPt :
-    return Hexagon::POST_SThri_cdnPt_V4;
-
-  case Hexagon::POST_SThri_cNotPt :
-    return Hexagon::POST_SThri_cdnNotPt_V4;
-
-  case Hexagon::STh_GP_cPt_V4 :
-    return Hexagon::STh_GP_cdnPt_V4;
-
-  case Hexagon::STh_GP_cNotPt_V4 :
-    return Hexagon::STh_GP_cdnNotPt_V4;
-
-  case Hexagon::STrih_GP_cPt_V4 :
-    return Hexagon::STrih_GP_cdnPt_V4;
-
-  case Hexagon::STrih_GP_cNotPt_V4 :
-    return Hexagon::STrih_GP_cdnNotPt_V4;
-
-  // Store word conditionally
-  case Hexagon::STriw_cPt :
-    return Hexagon::STriw_cdnPt_V4;
-
-  case Hexagon::STriw_cNotPt :
-    return Hexagon::STriw_cdnNotPt_V4;
-
-  case Hexagon::STriw_indexed_cPt :
-    return Hexagon::STriw_indexed_cdnPt_V4;
-
-  case Hexagon::STriw_indexed_cNotPt :
-    return Hexagon::STriw_indexed_cdnNotPt_V4;
-
-  case Hexagon::STriw_imm_cPt_V4 :
-    return Hexagon::STriw_imm_cdnPt_V4;
-
-  case Hexagon::STriw_imm_cNotPt_V4 :
-    return Hexagon::STriw_imm_cdnNotPt_V4;
-
-  case Hexagon::STriw_indexed_shl_cPt_V4 :
-    return Hexagon::STriw_indexed_shl_cdnPt_V4;
-
-  case Hexagon::STriw_indexed_shl_cNotPt_V4 :
-    return Hexagon::STriw_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::POST_STwri_cPt :
-    return Hexagon::POST_STwri_cdnPt_V4;
-
-  case Hexagon::POST_STwri_cNotPt :
-    return Hexagon::POST_STwri_cdnNotPt_V4;
-
-  case Hexagon::STw_GP_cPt_V4 :
-    return Hexagon::STw_GP_cdnPt_V4;
-
-  case Hexagon::STw_GP_cNotPt_V4 :
-    return Hexagon::STw_GP_cdnNotPt_V4;
-
-  case Hexagon::STriw_GP_cPt_V4 :
-    return Hexagon::STriw_GP_cdnPt_V4;
-
-  case Hexagon::STriw_GP_cNotPt_V4 :
-    return Hexagon::STriw_GP_cdnNotPt_V4;
-
-  // Condtional Jumps
-  case Hexagon::JMP_c:
-    return Hexagon::JMP_cdnPt;
-
-  case Hexagon::JMP_cNot:
-    return Hexagon::JMP_cdnNotPt;
-
-  case Hexagon::JMPR_cPt:
-    return Hexagon::JMPR_cdnPt_V3;
-
-  case Hexagon::JMPR_cNotPt:
-    return Hexagon::JMPR_cdnNotPt_V3;
-
-  // Conditional Transfers
-  case Hexagon::TFR_cPt:
-    return Hexagon::TFR_cdnPt;
-
-  case Hexagon::TFR_cNotPt:
-    return Hexagon::TFR_cdnNotPt;
-
-  case Hexagon::TFRI_cPt:
-    return Hexagon::TFRI_cdnPt;
-
-  case Hexagon::TFRI_cNotPt:
-    return Hexagon::TFRI_cdnNotPt;
-
-  // Load double word
-  case Hexagon::LDrid_cPt :
-    return Hexagon::LDrid_cdnPt;
-
-  case Hexagon::LDrid_cNotPt :
-    return Hexagon::LDrid_cdnNotPt;
-
-  case Hexagon::LDrid_indexed_cPt :
-    return Hexagon::LDrid_indexed_cdnPt;
-
-  case Hexagon::LDrid_indexed_cNotPt :
-    return Hexagon::LDrid_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDrid_cPt :
-    return Hexagon::POST_LDrid_cdnPt_V4;
-
-  case Hexagon::POST_LDrid_cNotPt :
-    return Hexagon::POST_LDrid_cdnNotPt_V4;
-
-  // Load word
-  case Hexagon::LDriw_cPt :
-    return Hexagon::LDriw_cdnPt;
-
-  case Hexagon::LDriw_cNotPt :
-    return Hexagon::LDriw_cdnNotPt;
-
-  case Hexagon::LDriw_indexed_cPt :
-    return Hexagon::LDriw_indexed_cdnPt;
-
-  case Hexagon::LDriw_indexed_cNotPt :
-    return Hexagon::LDriw_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDriw_cPt :
-    return Hexagon::POST_LDriw_cdnPt_V4;
-
-  case Hexagon::POST_LDriw_cNotPt :
-    return Hexagon::POST_LDriw_cdnNotPt_V4;
-
-  // Load halfword
-  case Hexagon::LDrih_cPt :
-    return Hexagon::LDrih_cdnPt;
-
-  case Hexagon::LDrih_cNotPt :
-    return Hexagon::LDrih_cdnNotPt;
-
-  case Hexagon::LDrih_indexed_cPt :
-    return Hexagon::LDrih_indexed_cdnPt;
-
-  case Hexagon::LDrih_indexed_cNotPt :
-    return Hexagon::LDrih_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDrih_cPt :
-    return Hexagon::POST_LDrih_cdnPt_V4;
-
-  case Hexagon::POST_LDrih_cNotPt :
-    return Hexagon::POST_LDrih_cdnNotPt_V4;
-
-  // Load byte
-  case Hexagon::LDrib_cPt :
-    return Hexagon::LDrib_cdnPt;
-
-  case Hexagon::LDrib_cNotPt :
-    return Hexagon::LDrib_cdnNotPt;
-
-  case Hexagon::LDrib_indexed_cPt :
-    return Hexagon::LDrib_indexed_cdnPt;
-
-  case Hexagon::LDrib_indexed_cNotPt :
-    return Hexagon::LDrib_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDrib_cPt :
-    return Hexagon::POST_LDrib_cdnPt_V4;
-
-  case Hexagon::POST_LDrib_cNotPt :
-    return Hexagon::POST_LDrib_cdnNotPt_V4;
-
-  // Load unsigned halfword
-  case Hexagon::LDriuh_cPt :
-    return Hexagon::LDriuh_cdnPt;
-
-  case Hexagon::LDriuh_cNotPt :
-    return Hexagon::LDriuh_cdnNotPt;
-
-  case Hexagon::LDriuh_indexed_cPt :
-    return Hexagon::LDriuh_indexed_cdnPt;
-
-  case Hexagon::LDriuh_indexed_cNotPt :
-    return Hexagon::LDriuh_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDriuh_cPt :
-    return Hexagon::POST_LDriuh_cdnPt_V4;
-
-  case Hexagon::POST_LDriuh_cNotPt :
-    return Hexagon::POST_LDriuh_cdnNotPt_V4;
-
-  // Load unsigned byte
-  case Hexagon::LDriub_cPt :
-    return Hexagon::LDriub_cdnPt;
-
-  case Hexagon::LDriub_cNotPt :
-    return Hexagon::LDriub_cdnNotPt;
-
-  case Hexagon::LDriub_indexed_cPt :
-    return Hexagon::LDriub_indexed_cdnPt;
-
-  case Hexagon::LDriub_indexed_cNotPt :
-    return Hexagon::LDriub_indexed_cdnNotPt;
-
-  case Hexagon::POST_LDriub_cPt :
-    return Hexagon::POST_LDriub_cdnPt_V4;
-
-  case Hexagon::POST_LDriub_cNotPt :
-    return Hexagon::POST_LDriub_cdnNotPt_V4;
-
-  // V4 indexed+scaled load
-
-  case Hexagon::LDrid_indexed_cPt_V4 :
-    return Hexagon::LDrid_indexed_cdnPt_V4;
-
-  case Hexagon::LDrid_indexed_cNotPt_V4 :
-    return Hexagon::LDrid_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDrid_indexed_shl_cPt_V4 :
-    return Hexagon::LDrid_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDrid_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDrid_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::LDrib_indexed_cPt_V4 :
-    return Hexagon::LDrib_indexed_cdnPt_V4;
-
-  case Hexagon::LDrib_indexed_cNotPt_V4 :
-    return Hexagon::LDrib_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDrib_indexed_shl_cPt_V4 :
-    return Hexagon::LDrib_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDrib_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDrib_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::LDriub_indexed_cPt_V4 :
-    return Hexagon::LDriub_indexed_cdnPt_V4;
-
-  case Hexagon::LDriub_indexed_cNotPt_V4 :
-    return Hexagon::LDriub_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDriub_indexed_shl_cPt_V4 :
-    return Hexagon::LDriub_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDriub_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDriub_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::LDrih_indexed_cPt_V4 :
-    return Hexagon::LDrih_indexed_cdnPt_V4;
-
-  case Hexagon::LDrih_indexed_cNotPt_V4 :
-    return Hexagon::LDrih_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDrih_indexed_shl_cPt_V4 :
-    return Hexagon::LDrih_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDrih_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDrih_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::LDriuh_indexed_cPt_V4 :
-    return Hexagon::LDriuh_indexed_cdnPt_V4;
-
-  case Hexagon::LDriuh_indexed_cNotPt_V4 :
-    return Hexagon::LDriuh_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDriuh_indexed_shl_cPt_V4 :
-    return Hexagon::LDriuh_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDriuh_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDriuh_indexed_shl_cdnNotPt_V4;
-
-  case Hexagon::LDriw_indexed_cPt_V4 :
-    return Hexagon::LDriw_indexed_cdnPt_V4;
-
-  case Hexagon::LDriw_indexed_cNotPt_V4 :
-    return Hexagon::LDriw_indexed_cdnNotPt_V4;
-
-  case Hexagon::LDriw_indexed_shl_cPt_V4 :
-    return Hexagon::LDriw_indexed_shl_cdnPt_V4;
-
-  case Hexagon::LDriw_indexed_shl_cNotPt_V4 :
-    return Hexagon::LDriw_indexed_shl_cdnNotPt_V4;
-
-  // V4 global address load
-
-  case Hexagon::LDd_GP_cPt_V4:
-    return Hexagon::LDd_GP_cdnPt_V4;
-
-  case Hexagon::LDd_GP_cNotPt_V4:
-    return Hexagon::LDd_GP_cdnNotPt_V4;
-
-  case Hexagon::LDb_GP_cPt_V4:
-    return Hexagon::LDb_GP_cdnPt_V4;
-
-  case Hexagon::LDb_GP_cNotPt_V4:
-    return Hexagon::LDb_GP_cdnNotPt_V4;
-
-  case Hexagon::LDub_GP_cPt_V4:
-    return Hexagon::LDub_GP_cdnPt_V4;
-
-  case Hexagon::LDub_GP_cNotPt_V4:
-    return Hexagon::LDub_GP_cdnNotPt_V4;
-
-  case Hexagon::LDh_GP_cPt_V4:
-    return Hexagon::LDh_GP_cdnPt_V4;
-
-  case Hexagon::LDh_GP_cNotPt_V4:
-    return Hexagon::LDh_GP_cdnNotPt_V4;
-
-  case Hexagon::LDuh_GP_cPt_V4:
-    return Hexagon::LDuh_GP_cdnPt_V4;
-
-  case Hexagon::LDuh_GP_cNotPt_V4:
-    return Hexagon::LDuh_GP_cdnNotPt_V4;
-
-  case Hexagon::LDw_GP_cPt_V4:
-    return Hexagon::LDw_GP_cdnPt_V4;
-
-  case Hexagon::LDw_GP_cNotPt_V4:
-    return Hexagon::LDw_GP_cdnNotPt_V4;
-
-  case Hexagon::LDrid_GP_cPt_V4:
-    return Hexagon::LDrid_GP_cdnPt_V4;
-
-  case Hexagon::LDrid_GP_cNotPt_V4:
-    return Hexagon::LDrid_GP_cdnNotPt_V4;
-
-  case Hexagon::LDrib_GP_cPt_V4:
-    return Hexagon::LDrib_GP_cdnPt_V4;
-
-  case Hexagon::LDrib_GP_cNotPt_V4:
-    return Hexagon::LDrib_GP_cdnNotPt_V4;
-
-  case Hexagon::LDriub_GP_cPt_V4:
-    return Hexagon::LDriub_GP_cdnPt_V4;
-
-  case Hexagon::LDriub_GP_cNotPt_V4:
-    return Hexagon::LDriub_GP_cdnNotPt_V4;
-
-  case Hexagon::LDrih_GP_cPt_V4:
-    return Hexagon::LDrih_GP_cdnPt_V4;
-
-  case Hexagon::LDrih_GP_cNotPt_V4:
-    return Hexagon::LDrih_GP_cdnNotPt_V4;
-
-  case Hexagon::LDriuh_GP_cPt_V4:
-    return Hexagon::LDriuh_GP_cdnPt_V4;
-
-  case Hexagon::LDriuh_GP_cNotPt_V4:
-    return Hexagon::LDriuh_GP_cdnNotPt_V4;
-
-  case Hexagon::LDriw_GP_cPt_V4:
-    return Hexagon::LDriw_GP_cdnPt_V4;
-
-  case Hexagon::LDriw_GP_cNotPt_V4:
-    return Hexagon::LDriw_GP_cdnNotPt_V4;
-
-  // Conditional store new-value byte
-  case Hexagon::STrib_cPt_nv_V4 :
-    return Hexagon::STrib_cdnPt_nv_V4;
-  case Hexagon::STrib_cNotPt_nv_V4 :
-    return Hexagon::STrib_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_cPt_nv_V4 :
-    return Hexagon::STrib_indexed_cdnPt_nv_V4;
-  case Hexagon::STrib_indexed_cNotPt_nv_V4 :
-    return Hexagon::STrib_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_indexed_shl_cPt_nv_V4 :
-    return Hexagon::STrib_indexed_shl_cdnPt_nv_V4;
-  case Hexagon::STrib_indexed_shl_cNotPt_nv_V4 :
-    return Hexagon::STrib_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_STbri_cPt_nv_V4 :
-    return Hexagon::POST_STbri_cdnPt_nv_V4;
-  case Hexagon::POST_STbri_cNotPt_nv_V4 :
-    return Hexagon::POST_STbri_cdnNotPt_nv_V4;
-
-  case Hexagon::STb_GP_cPt_nv_V4 :
-    return Hexagon::STb_GP_cdnPt_nv_V4;
-
-  case Hexagon::STb_GP_cNotPt_nv_V4 :
-    return Hexagon::STb_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STrib_GP_cPt_nv_V4 :
-    return Hexagon::STrib_GP_cdnPt_nv_V4;
-
-  case Hexagon::STrib_GP_cNotPt_nv_V4 :
-    return Hexagon::STrib_GP_cdnNotPt_nv_V4;
-
-  // Conditional store new-value halfword
-  case Hexagon::STrih_cPt_nv_V4 :
-    return Hexagon::STrih_cdnPt_nv_V4;
-  case Hexagon::STrih_cNotPt_nv_V4 :
-    return Hexagon::STrih_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_cPt_nv_V4 :
-    return Hexagon::STrih_indexed_cdnPt_nv_V4;
-  case Hexagon::STrih_indexed_cNotPt_nv_V4 :
-    return Hexagon::STrih_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_indexed_shl_cPt_nv_V4 :
-    return Hexagon::STrih_indexed_shl_cdnPt_nv_V4;
-  case Hexagon::STrih_indexed_shl_cNotPt_nv_V4 :
-    return Hexagon::STrih_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_SThri_cPt_nv_V4 :
-    return Hexagon::POST_SThri_cdnPt_nv_V4;
-  case Hexagon::POST_SThri_cNotPt_nv_V4 :
-    return Hexagon::POST_SThri_cdnNotPt_nv_V4;
-
-  case Hexagon::STh_GP_cPt_nv_V4 :
-    return Hexagon::STh_GP_cdnPt_nv_V4;
-
-  case Hexagon::STh_GP_cNotPt_nv_V4 :
-    return Hexagon::STh_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STrih_GP_cPt_nv_V4 :
-    return Hexagon::STrih_GP_cdnPt_nv_V4;
-
-  case Hexagon::STrih_GP_cNotPt_nv_V4 :
-    return Hexagon::STrih_GP_cdnNotPt_nv_V4;
-
-  // Conditional store new-value word
-  case Hexagon::STriw_cPt_nv_V4 :
-    return  Hexagon::STriw_cdnPt_nv_V4;
-  case Hexagon::STriw_cNotPt_nv_V4 :
-    return Hexagon::STriw_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_cPt_nv_V4 :
-    return Hexagon::STriw_indexed_cdnPt_nv_V4;
-  case Hexagon::STriw_indexed_cNotPt_nv_V4 :
-    return Hexagon::STriw_indexed_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_indexed_shl_cPt_nv_V4 :
-    return Hexagon::STriw_indexed_shl_cdnPt_nv_V4;
-  case Hexagon::STriw_indexed_shl_cNotPt_nv_V4 :
-    return Hexagon::STriw_indexed_shl_cdnNotPt_nv_V4;
-
-  case Hexagon::POST_STwri_cPt_nv_V4 :
-    return Hexagon::POST_STwri_cdnPt_nv_V4;
-  case Hexagon::POST_STwri_cNotPt_nv_V4:
-    return Hexagon::POST_STwri_cdnNotPt_nv_V4;
-
-  case Hexagon::STw_GP_cPt_nv_V4 :
-    return Hexagon::STw_GP_cdnPt_nv_V4;
-
-  case Hexagon::STw_GP_cNotPt_nv_V4 :
-    return Hexagon::STw_GP_cdnNotPt_nv_V4;
-
-  case Hexagon::STriw_GP_cPt_nv_V4 :
-    return Hexagon::STriw_GP_cdnPt_nv_V4;
-
-  case Hexagon::STriw_GP_cNotPt_nv_V4 :
-    return Hexagon::STriw_GP_cdnNotPt_nv_V4;
-
-  // Conditional add
-  case Hexagon::ADD_ri_cPt :
-    return Hexagon::ADD_ri_cdnPt;
-  case Hexagon::ADD_ri_cNotPt :
-    return Hexagon::ADD_ri_cdnNotPt;
-
-  case Hexagon::ADD_rr_cPt :
-    return Hexagon::ADD_rr_cdnPt;
-  case Hexagon::ADD_rr_cNotPt :
-    return Hexagon::ADD_rr_cdnNotPt;
-
-  // Conditional logical Operations
-  case Hexagon::XOR_rr_cPt :
-    return Hexagon::XOR_rr_cdnPt;
-  case Hexagon::XOR_rr_cNotPt :
-    return Hexagon::XOR_rr_cdnNotPt;
-
-  case Hexagon::AND_rr_cPt :
-    return Hexagon::AND_rr_cdnPt;
-  case Hexagon::AND_rr_cNotPt :
-    return Hexagon::AND_rr_cdnNotPt;
-
-  case Hexagon::OR_rr_cPt :
-    return Hexagon::OR_rr_cdnPt;
-  case Hexagon::OR_rr_cNotPt :
-    return Hexagon::OR_rr_cdnNotPt;
-
-  // Conditional Subtract
-  case Hexagon::SUB_rr_cPt :
-    return Hexagon::SUB_rr_cdnPt;
-  case Hexagon::SUB_rr_cNotPt :
-    return Hexagon::SUB_rr_cdnNotPt;
-
-  // Conditional combine
-  case Hexagon::COMBINE_rr_cPt :
-    return Hexagon::COMBINE_rr_cdnPt;
-  case Hexagon::COMBINE_rr_cNotPt :
-    return Hexagon::COMBINE_rr_cdnNotPt;
-
-  case Hexagon::ASLH_cPt_V4 :
-    return Hexagon::ASLH_cdnPt_V4;
-  case Hexagon::ASLH_cNotPt_V4 :
-    return Hexagon::ASLH_cdnNotPt_V4;
-
-  case Hexagon::ASRH_cPt_V4 :
-    return Hexagon::ASRH_cdnPt_V4;
-  case Hexagon::ASRH_cNotPt_V4 :
-    return Hexagon::ASRH_cdnNotPt_V4;
-
-  case Hexagon::SXTB_cPt_V4 :
-    return Hexagon::SXTB_cdnPt_V4;
-  case Hexagon::SXTB_cNotPt_V4 :
-    return Hexagon::SXTB_cdnNotPt_V4;
-
-  case Hexagon::SXTH_cPt_V4 :
-    return Hexagon::SXTH_cdnPt_V4;
-  case Hexagon::SXTH_cNotPt_V4 :
-    return Hexagon::SXTH_cdnNotPt_V4;
-
-  case Hexagon::ZXTB_cPt_V4 :
-    return Hexagon::ZXTB_cdnPt_V4;
-  case Hexagon::ZXTB_cNotPt_V4 :
-    return Hexagon::ZXTB_cdnNotPt_V4;
-
-  case Hexagon::ZXTH_cPt_V4 :
-    return Hexagon::ZXTH_cdnPt_V4;
-  case Hexagon::ZXTH_cNotPt_V4 :
-    return Hexagon::ZXTH_cdnNotPt_V4;
-  }
-}
-
-// Returns true if an instruction can be promoted to .new predicate
-// or new-value store.
-bool HexagonPacketizerList::isNewifiable(MachineInstr* MI) {
-  if ( isCondInst(MI) || IsNewifyStore(MI))
-    return true;
-  else
-    return false;
-}
-
-bool HexagonPacketizerList::isCondInst (MachineInstr* MI) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  const MCInstrDesc& TID =3D MI->getDesc();
-                                    // bug 5670: until that is fixed,
-                                    // this portion is disabled.
-  if (   TID.isConditionalBranch()  // && !IsRegisterJump(MI)) ||
-      || QII->isConditionalTransfer(MI)
-      || QII->isConditionalALU32(MI)
-      || QII->isConditionalLoad(MI)
-      || QII->isConditionalStore(MI)) {
-    return true;
-  }
-  return false;
-}
-
-
-// Promote an instructiont to its .new form.
-// At this time, we have already made a call to CanPromoteToDotNew
-// and made sure that it can *indeed* be promoted.
-bool HexagonPacketizerList::PromoteToDotNew(MachineInstr* MI,
-                        SDep::Kind DepType, MachineBasicBlock::iterator &M=
II,
-                        const TargetRegisterClass* RC) {
-
-  assert (DepType =3D=3D SDep::Data);
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-
-  int NewOpcode;
-  if (RC =3D=3D Hexagon::PredRegsRegisterClass)
-    NewOpcode =3D GetDotNewPredOp(MI->getOpcode());
-  else
-    NewOpcode =3D GetDotNewOp(MI->getOpcode());
-  MI->setDesc(QII->get(NewOpcode));
-
-  return true;
-}
-
-// Returns the most basic instruction for the .new predicated instructions=
 and
-// new-value stores.
-// For example, all of the following instructions will be converted back t=
o the
-// same instruction:
-// 1) if (p0.new) memw(R0+#0) =3D R1.new  --->
-// 2) if (p0) memw(R0+#0)=3D R1.new      -------> if (p0) memw(R0+#0) =3D =
R1
-// 3) if (p0.new) memw(R0+#0) =3D R1      --->
-//
-// To understand the translation of instruction 1 to its original form, co=
nsider
-// a packet with 3 instructions.
-// { p0 =3D cmp.eq(R0,R1)
-//   if (p0.new) R2 =3D add(R3, R4)
-//   R5 =3D add (R3, R1)
-//   }
-// if (p0) memw(R5+#0) =3D R2 <--- trying to include it in the previous pa=
cket
-//
-// This instruction can be part of the previous packet only if both p0 and=
 R2
-// are promoted to .new values. This promotion happens in steps, first
-// predicate register is promoted to .new and in the next iteration R2 is
-// promoted. Therefore, in case of dependence check failure (due to R5) du=
ring
-// next iteration, it should be converted back to its most basic form.
-
-static int GetDotOldOp(const int opc) {
-  switch (opc) {
-  default: llvm_unreachable("Unknown .old type");
-
-  case Hexagon::TFR_cdnPt:
-    return Hexagon::TFR_cPt;
-
-  case Hexagon::TFR_cdnNotPt:
-    return Hexagon::TFR_cNotPt;
-
-  case Hexagon::TFRI_cdnPt:
-    return Hexagon::TFRI_cPt;
-
-  case Hexagon::TFRI_cdnNotPt:
-    return Hexagon::TFRI_cNotPt;
-
-  case Hexagon::JMP_cdnPt:
-    return Hexagon::JMP_c;
-
-  case Hexagon::JMP_cdnNotPt:
-    return Hexagon::JMP_cNot;
-
-  case Hexagon::JMPR_cdnPt_V3:
-    return Hexagon::JMPR_cPt;
-
-  case Hexagon::JMPR_cdnNotPt_V3:
-    return Hexagon::JMPR_cNotPt;
-
-  // Load double word
-
-  case Hexagon::LDrid_cdnPt :
-    return Hexagon::LDrid_cPt;
-
-  case Hexagon::LDrid_cdnNotPt :
-    return Hexagon::LDrid_cNotPt;
-
-  case Hexagon::LDrid_indexed_cdnPt :
-    return Hexagon::LDrid_indexed_cPt;
-
-  case Hexagon::LDrid_indexed_cdnNotPt :
-    return Hexagon::LDrid_indexed_cNotPt;
-
-  case Hexagon::POST_LDrid_cdnPt_V4 :
-    return Hexagon::POST_LDrid_cPt;
-
-  case Hexagon::POST_LDrid_cdnNotPt_V4 :
-    return Hexagon::POST_LDrid_cNotPt;
-
-  // Load word
-
-  case Hexagon::LDriw_cdnPt :
-    return Hexagon::LDriw_cPt;
-
-  case Hexagon::LDriw_cdnNotPt :
-    return Hexagon::LDriw_cNotPt;
-
-  case Hexagon::LDriw_indexed_cdnPt :
-    return Hexagon::LDriw_indexed_cPt;
-
-  case Hexagon::LDriw_indexed_cdnNotPt :
-    return Hexagon::LDriw_indexed_cNotPt;
-
-  case Hexagon::POST_LDriw_cdnPt_V4 :
-    return Hexagon::POST_LDriw_cPt;
-
-  case Hexagon::POST_LDriw_cdnNotPt_V4 :
-    return Hexagon::POST_LDriw_cNotPt;
-
-  // Load half
-
-  case Hexagon::LDrih_cdnPt :
-    return Hexagon::LDrih_cPt;
-
-  case Hexagon::LDrih_cdnNotPt :
-    return Hexagon::LDrih_cNotPt;
-
-  case Hexagon::LDrih_indexed_cdnPt :
-    return Hexagon::LDrih_indexed_cPt;
-
-  case Hexagon::LDrih_indexed_cdnNotPt :
-    return Hexagon::LDrih_indexed_cNotPt;
-
-  case Hexagon::POST_LDrih_cdnPt_V4 :
-    return Hexagon::POST_LDrih_cPt;
-
-  case Hexagon::POST_LDrih_cdnNotPt_V4 :
-    return Hexagon::POST_LDrih_cNotPt;
-
-  // Load byte
-
-  case Hexagon::LDrib_cdnPt :
-    return Hexagon::LDrib_cPt;
-
-  case Hexagon::LDrib_cdnNotPt :
-    return Hexagon::LDrib_cNotPt;
-
-  case Hexagon::LDrib_indexed_cdnPt :
-    return Hexagon::LDrib_indexed_cPt;
-
-  case Hexagon::LDrib_indexed_cdnNotPt :
-    return Hexagon::LDrib_indexed_cNotPt;
-
-  case Hexagon::POST_LDrib_cdnPt_V4 :
-    return Hexagon::POST_LDrib_cPt;
-
-  case Hexagon::POST_LDrib_cdnNotPt_V4 :
-    return Hexagon::POST_LDrib_cNotPt;
-
-  // Load unsigned half
-
-  case Hexagon::LDriuh_cdnPt :
-    return Hexagon::LDriuh_cPt;
-
-  case Hexagon::LDriuh_cdnNotPt :
-    return Hexagon::LDriuh_cNotPt;
-
-  case Hexagon::LDriuh_indexed_cdnPt :
-    return Hexagon::LDriuh_indexed_cPt;
-
-  case Hexagon::LDriuh_indexed_cdnNotPt :
-    return Hexagon::LDriuh_indexed_cNotPt;
-
-  case Hexagon::POST_LDriuh_cdnPt_V4 :
-    return Hexagon::POST_LDriuh_cPt;
-
-  case Hexagon::POST_LDriuh_cdnNotPt_V4 :
-    return Hexagon::POST_LDriuh_cNotPt;
-
-  // Load unsigned byte
-  case Hexagon::LDriub_cdnPt :
-    return Hexagon::LDriub_cPt;
-
-  case Hexagon::LDriub_cdnNotPt :
-    return Hexagon::LDriub_cNotPt;
-
-  case Hexagon::LDriub_indexed_cdnPt :
-    return Hexagon::LDriub_indexed_cPt;
-
-  case Hexagon::LDriub_indexed_cdnNotPt :
-    return Hexagon::LDriub_indexed_cNotPt;
-
-  case Hexagon::POST_LDriub_cdnPt_V4 :
-    return Hexagon::POST_LDriub_cPt;
-
-  case Hexagon::POST_LDriub_cdnNotPt_V4 :
-    return Hexagon::POST_LDriub_cNotPt;
-
-  // V4 indexed+scaled Load
-
-  case Hexagon::LDrid_indexed_cdnPt_V4 :
-    return Hexagon::LDrid_indexed_cPt_V4;
-
-  case Hexagon::LDrid_indexed_cdnNotPt_V4 :
-    return Hexagon::LDrid_indexed_cNotPt_V4;
-
-  case Hexagon::LDrid_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDrid_indexed_shl_cPt_V4;
-
-  case Hexagon::LDrid_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDrid_indexed_shl_cNotPt_V4;
-
-  case Hexagon::LDrib_indexed_cdnPt_V4 :
-    return Hexagon::LDrib_indexed_cPt_V4;
-
-  case Hexagon::LDrib_indexed_cdnNotPt_V4 :
-    return Hexagon::LDrib_indexed_cNotPt_V4;
-
-  case Hexagon::LDrib_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDrib_indexed_shl_cPt_V4;
-
-  case Hexagon::LDrib_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDrib_indexed_shl_cNotPt_V4;
-
-  case Hexagon::LDriub_indexed_cdnPt_V4 :
-    return Hexagon::LDriub_indexed_cPt_V4;
-
-  case Hexagon::LDriub_indexed_cdnNotPt_V4 :
-    return Hexagon::LDriub_indexed_cNotPt_V4;
-
-  case Hexagon::LDriub_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDriub_indexed_shl_cPt_V4;
-
-  case Hexagon::LDriub_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDriub_indexed_shl_cNotPt_V4;
-
-  case Hexagon::LDrih_indexed_cdnPt_V4 :
-    return Hexagon::LDrih_indexed_cPt_V4;
-
-  case Hexagon::LDrih_indexed_cdnNotPt_V4 :
-    return Hexagon::LDrih_indexed_cNotPt_V4;
-
-  case Hexagon::LDrih_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDrih_indexed_shl_cPt_V4;
-
-  case Hexagon::LDrih_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDrih_indexed_shl_cNotPt_V4;
-
-  case Hexagon::LDriuh_indexed_cdnPt_V4 :
-    return Hexagon::LDriuh_indexed_cPt_V4;
-
-  case Hexagon::LDriuh_indexed_cdnNotPt_V4 :
-    return Hexagon::LDriuh_indexed_cNotPt_V4;
-
-  case Hexagon::LDriuh_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDriuh_indexed_shl_cPt_V4;
-
-  case Hexagon::LDriuh_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDriuh_indexed_shl_cNotPt_V4;
-
-  case Hexagon::LDriw_indexed_cdnPt_V4 :
-    return Hexagon::LDriw_indexed_cPt_V4;
-
-  case Hexagon::LDriw_indexed_cdnNotPt_V4 :
-    return Hexagon::LDriw_indexed_cNotPt_V4;
-
-  case Hexagon::LDriw_indexed_shl_cdnPt_V4 :
-    return Hexagon::LDriw_indexed_shl_cPt_V4;
-
-  case Hexagon::LDriw_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::LDriw_indexed_shl_cNotPt_V4;
-
-  // V4 global address load
-
-  case Hexagon::LDd_GP_cdnPt_V4:
-    return Hexagon::LDd_GP_cPt_V4;
-
-  case Hexagon::LDd_GP_cdnNotPt_V4:
-    return Hexagon::LDd_GP_cNotPt_V4;
-
-  case Hexagon::LDb_GP_cdnPt_V4:
-    return Hexagon::LDb_GP_cPt_V4;
-
-  case Hexagon::LDb_GP_cdnNotPt_V4:
-    return Hexagon::LDb_GP_cNotPt_V4;
-
-  case Hexagon::LDub_GP_cdnPt_V4:
-    return Hexagon::LDub_GP_cPt_V4;
-
-  case Hexagon::LDub_GP_cdnNotPt_V4:
-    return Hexagon::LDub_GP_cNotPt_V4;
-
-  case Hexagon::LDh_GP_cdnPt_V4:
-    return Hexagon::LDh_GP_cPt_V4;
-
-  case Hexagon::LDh_GP_cdnNotPt_V4:
-    return Hexagon::LDh_GP_cNotPt_V4;
-
-  case Hexagon::LDuh_GP_cdnPt_V4:
-    return Hexagon::LDuh_GP_cPt_V4;
-
-  case Hexagon::LDuh_GP_cdnNotPt_V4:
-    return Hexagon::LDuh_GP_cNotPt_V4;
-
-  case Hexagon::LDw_GP_cdnPt_V4:
-    return Hexagon::LDw_GP_cPt_V4;
-
-  case Hexagon::LDw_GP_cdnNotPt_V4:
-    return Hexagon::LDw_GP_cNotPt_V4;
-
-  case Hexagon::LDrid_GP_cdnPt_V4:
-    return Hexagon::LDrid_GP_cPt_V4;
-
-  case Hexagon::LDrid_GP_cdnNotPt_V4:
-    return Hexagon::LDrid_GP_cNotPt_V4;
-
-  case Hexagon::LDrib_GP_cdnPt_V4:
-    return Hexagon::LDrib_GP_cPt_V4;
-
-  case Hexagon::LDrib_GP_cdnNotPt_V4:
-    return Hexagon::LDrib_GP_cNotPt_V4;
-
-  case Hexagon::LDriub_GP_cdnPt_V4:
-    return Hexagon::LDriub_GP_cPt_V4;
-
-  case Hexagon::LDriub_GP_cdnNotPt_V4:
-    return Hexagon::LDriub_GP_cNotPt_V4;
-
-  case Hexagon::LDrih_GP_cdnPt_V4:
-    return Hexagon::LDrih_GP_cPt_V4;
-
-  case Hexagon::LDrih_GP_cdnNotPt_V4:
-    return Hexagon::LDrih_GP_cNotPt_V4;
-
-  case Hexagon::LDriuh_GP_cdnPt_V4:
-    return Hexagon::LDriuh_GP_cPt_V4;
-
-  case Hexagon::LDriuh_GP_cdnNotPt_V4:
-    return Hexagon::LDriuh_GP_cNotPt_V4;
-
-  case Hexagon::LDriw_GP_cdnPt_V4:
-    return Hexagon::LDriw_GP_cPt_V4;
-
-  case Hexagon::LDriw_GP_cdnNotPt_V4:
-    return Hexagon::LDriw_GP_cNotPt_V4;
-
-  // Conditional add
-
-  case Hexagon::ADD_ri_cdnPt :
-    return Hexagon::ADD_ri_cPt;
-  case Hexagon::ADD_ri_cdnNotPt :
-    return Hexagon::ADD_ri_cNotPt;
-
-  case Hexagon::ADD_rr_cdnPt :
-    return Hexagon::ADD_rr_cPt;
-  case Hexagon::ADD_rr_cdnNotPt:
-    return Hexagon::ADD_rr_cNotPt;
-
-  // Conditional logical Operations
-
-  case Hexagon::XOR_rr_cdnPt :
-    return Hexagon::XOR_rr_cPt;
-  case Hexagon::XOR_rr_cdnNotPt :
-    return Hexagon::XOR_rr_cNotPt;
-
-  case Hexagon::AND_rr_cdnPt :
-    return Hexagon::AND_rr_cPt;
-  case Hexagon::AND_rr_cdnNotPt :
-    return Hexagon::AND_rr_cNotPt;
-
-  case Hexagon::OR_rr_cdnPt :
-    return Hexagon::OR_rr_cPt;
-  case Hexagon::OR_rr_cdnNotPt :
-    return Hexagon::OR_rr_cNotPt;
-
-  // Conditional Subtract
-
-  case Hexagon::SUB_rr_cdnPt :
-    return Hexagon::SUB_rr_cPt;
-  case Hexagon::SUB_rr_cdnNotPt :
-    return Hexagon::SUB_rr_cNotPt;
-
-  // Conditional combine
-
-  case Hexagon::COMBINE_rr_cdnPt :
-    return Hexagon::COMBINE_rr_cPt;
-  case Hexagon::COMBINE_rr_cdnNotPt :
-    return Hexagon::COMBINE_rr_cNotPt;
-
-// Conditional shift operations
-
-  case Hexagon::ASLH_cdnPt_V4 :
-    return Hexagon::ASLH_cPt_V4;
-  case Hexagon::ASLH_cdnNotPt_V4 :
-    return Hexagon::ASLH_cNotPt_V4;
-
-  case Hexagon::ASRH_cdnPt_V4 :
-    return Hexagon::ASRH_cPt_V4;
-  case Hexagon::ASRH_cdnNotPt_V4 :
-    return Hexagon::ASRH_cNotPt_V4;
-
-  case Hexagon::SXTB_cdnPt_V4 :
-    return Hexagon::SXTB_cPt_V4;
-  case Hexagon::SXTB_cdnNotPt_V4 :
-    return Hexagon::SXTB_cNotPt_V4;
-
-  case Hexagon::SXTH_cdnPt_V4 :
-    return Hexagon::SXTH_cPt_V4;
-  case Hexagon::SXTH_cdnNotPt_V4 :
-    return Hexagon::SXTH_cNotPt_V4;
-
-  case Hexagon::ZXTB_cdnPt_V4 :
-    return Hexagon::ZXTB_cPt_V4;
-  case Hexagon::ZXTB_cdnNotPt_V4 :
-    return Hexagon::ZXTB_cNotPt_V4;
-
-  case Hexagon::ZXTH_cdnPt_V4 :
-    return Hexagon::ZXTH_cPt_V4;
-  case Hexagon::ZXTH_cdnNotPt_V4 :
-    return Hexagon::ZXTH_cNotPt_V4;
-
-  // Store byte
-
-  case Hexagon::STrib_imm_cdnPt_V4 :
-    return Hexagon::STrib_imm_cPt_V4;
-
-  case Hexagon::STrib_imm_cdnNotPt_V4 :
-    return Hexagon::STrib_imm_cNotPt_V4;
-
-  case Hexagon::STrib_cdnPt_nv_V4 :
-  case Hexagon::STrib_cPt_nv_V4 :
-  case Hexagon::STrib_cdnPt_V4 :
-    return Hexagon::STrib_cPt;
-
-  case Hexagon::STrib_cdnNotPt_nv_V4 :
-  case Hexagon::STrib_cNotPt_nv_V4 :
-  case Hexagon::STrib_cdnNotPt_V4 :
-    return Hexagon::STrib_cNotPt;
-
-  case Hexagon::STrib_indexed_cdnPt_V4 :
-  case Hexagon::STrib_indexed_cPt_nv_V4 :
-  case Hexagon::STrib_indexed_cdnPt_nv_V4 :
-    return Hexagon::STrib_indexed_cPt;
-
-  case Hexagon::STrib_indexed_cdnNotPt_V4 :
-  case Hexagon::STrib_indexed_cNotPt_nv_V4 :
-  case Hexagon::STrib_indexed_cdnNotPt_nv_V4 :
-    return Hexagon::STrib_indexed_cNotPt;
-
-  case Hexagon::STrib_indexed_shl_cdnPt_nv_V4:
-  case Hexagon::STrib_indexed_shl_cPt_nv_V4 :
-  case Hexagon::STrib_indexed_shl_cdnPt_V4 :
-    return Hexagon::STrib_indexed_shl_cPt_V4;
-
-  case Hexagon::STrib_indexed_shl_cdnNotPt_nv_V4:
-  case Hexagon::STrib_indexed_shl_cNotPt_nv_V4 :
-  case Hexagon::STrib_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::STrib_indexed_shl_cNotPt_V4;
-
-  case Hexagon::POST_STbri_cdnPt_nv_V4 :
-  case Hexagon::POST_STbri_cPt_nv_V4 :
-  case Hexagon::POST_STbri_cdnPt_V4 :
-    return Hexagon::POST_STbri_cPt;
-
-  case Hexagon::POST_STbri_cdnNotPt_nv_V4 :
-  case Hexagon::POST_STbri_cNotPt_nv_V4:
-  case Hexagon::POST_STbri_cdnNotPt_V4 :
-    return Hexagon::POST_STbri_cNotPt;
-
-  case Hexagon::STb_GP_cdnPt_nv_V4:
-  case Hexagon::STb_GP_cdnPt_V4:
-  case Hexagon::STb_GP_cPt_nv_V4:
-    return Hexagon::STb_GP_cPt_V4;
-
-  case Hexagon::STb_GP_cdnNotPt_nv_V4:
-  case Hexagon::STb_GP_cdnNotPt_V4:
-  case Hexagon::STb_GP_cNotPt_nv_V4:
-    return Hexagon::STb_GP_cNotPt_V4;
-
-  case Hexagon::STrib_GP_cdnPt_nv_V4:
-  case Hexagon::STrib_GP_cdnPt_V4:
-  case Hexagon::STrib_GP_cPt_nv_V4:
-    return Hexagon::STrib_GP_cPt_V4;
-
-  case Hexagon::STrib_GP_cdnNotPt_nv_V4:
-  case Hexagon::STrib_GP_cdnNotPt_V4:
-  case Hexagon::STrib_GP_cNotPt_nv_V4:
-    return Hexagon::STrib_GP_cNotPt_V4;
-
-  // Store new-value byte - unconditional
-  case Hexagon::STrib_nv_V4:
-    return Hexagon::STrib;
-
-  case Hexagon::STrib_indexed_nv_V4:
-    return Hexagon::STrib_indexed;
-
-  case Hexagon::STrib_indexed_shl_nv_V4:
-    return Hexagon::STrib_indexed_shl_V4;
-
-  case Hexagon::STrib_shl_nv_V4:
-    return Hexagon::STrib_shl_V4;
-
-  case Hexagon::STrib_GP_nv_V4:
-    return Hexagon::STrib_GP_V4;
-
-  case Hexagon::STb_GP_nv_V4:
-    return Hexagon::STb_GP_V4;
-
-  case Hexagon::POST_STbri_nv_V4:
-    return Hexagon::POST_STbri;
-
-  // Store halfword
-  case Hexagon::STrih_imm_cdnPt_V4 :
-    return Hexagon::STrih_imm_cPt_V4;
-
-  case Hexagon::STrih_imm_cdnNotPt_V4 :
-    return Hexagon::STrih_imm_cNotPt_V4;
-
-  case Hexagon::STrih_cdnPt_nv_V4 :
-  case Hexagon::STrih_cPt_nv_V4 :
-  case Hexagon::STrih_cdnPt_V4 :
-    return Hexagon::STrih_cPt;
-
-  case Hexagon::STrih_cdnNotPt_nv_V4 :
-  case Hexagon::STrih_cNotPt_nv_V4 :
-  case Hexagon::STrih_cdnNotPt_V4 :
-    return Hexagon::STrih_cNotPt;
-
-  case Hexagon::STrih_indexed_cdnPt_nv_V4:
-  case Hexagon::STrih_indexed_cPt_nv_V4 :
-  case Hexagon::STrih_indexed_cdnPt_V4 :
-    return Hexagon::STrih_indexed_cPt;
-
-  case Hexagon::STrih_indexed_cdnNotPt_nv_V4:
-  case Hexagon::STrih_indexed_cNotPt_nv_V4 :
-  case Hexagon::STrih_indexed_cdnNotPt_V4 :
-    return Hexagon::STrih_indexed_cNotPt;
-
-  case Hexagon::STrih_indexed_shl_cdnPt_nv_V4 :
-  case Hexagon::STrih_indexed_shl_cPt_nv_V4 :
-  case Hexagon::STrih_indexed_shl_cdnPt_V4 :
-    return Hexagon::STrih_indexed_shl_cPt_V4;
-
-  case Hexagon::STrih_indexed_shl_cdnNotPt_nv_V4 :
-  case Hexagon::STrih_indexed_shl_cNotPt_nv_V4 :
-  case Hexagon::STrih_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::STrih_indexed_shl_cNotPt_V4;
-
-  case Hexagon::POST_SThri_cdnPt_nv_V4 :
-  case Hexagon::POST_SThri_cPt_nv_V4 :
-  case Hexagon::POST_SThri_cdnPt_V4 :
-    return Hexagon::POST_SThri_cPt;
-
-  case Hexagon::POST_SThri_cdnNotPt_nv_V4 :
-  case Hexagon::POST_SThri_cNotPt_nv_V4 :
-  case Hexagon::POST_SThri_cdnNotPt_V4 :
-    return Hexagon::POST_SThri_cNotPt;
-
-  case Hexagon::STh_GP_cdnPt_nv_V4:
-  case Hexagon::STh_GP_cdnPt_V4:
-  case Hexagon::STh_GP_cPt_nv_V4:
-    return Hexagon::STh_GP_cPt_V4;
-
-  case Hexagon::STh_GP_cdnNotPt_nv_V4:
-  case Hexagon::STh_GP_cdnNotPt_V4:
-  case Hexagon::STh_GP_cNotPt_nv_V4:
-    return Hexagon::STh_GP_cNotPt_V4;
-
-  case Hexagon::STrih_GP_cdnPt_nv_V4:
-  case Hexagon::STrih_GP_cdnPt_V4:
-  case Hexagon::STrih_GP_cPt_nv_V4:
-    return Hexagon::STrih_GP_cPt_V4;
-
-  case Hexagon::STrih_GP_cdnNotPt_nv_V4:
-  case Hexagon::STrih_GP_cdnNotPt_V4:
-  case Hexagon::STrih_GP_cNotPt_nv_V4:
-    return Hexagon::STrih_GP_cNotPt_V4;
-
-  // Store new-value halfword - unconditional
-
-  case Hexagon::STrih_nv_V4:
-    return Hexagon::STrih;
-
-  case Hexagon::STrih_indexed_nv_V4:
-    return Hexagon::STrih_indexed;
-
-  case Hexagon::STrih_indexed_shl_nv_V4:
-    return Hexagon::STrih_indexed_shl_V4;
-
-  case Hexagon::STrih_shl_nv_V4:
-    return Hexagon::STrih_shl_V4;
-
-  case Hexagon::STrih_GP_nv_V4:
-    return Hexagon::STrih_GP_V4;
-
-  case Hexagon::STh_GP_nv_V4:
-    return Hexagon::STh_GP_V4;
-
-  case Hexagon::POST_SThri_nv_V4:
-    return Hexagon::POST_SThri;
-
-   // Store word
-
-   case Hexagon::STriw_imm_cdnPt_V4 :
-    return Hexagon::STriw_imm_cPt_V4;
-
-  case Hexagon::STriw_imm_cdnNotPt_V4 :
-    return Hexagon::STriw_imm_cNotPt_V4;
-
-  case Hexagon::STriw_cdnPt_nv_V4 :
-  case Hexagon::STriw_cPt_nv_V4 :
-  case Hexagon::STriw_cdnPt_V4 :
-    return Hexagon::STriw_cPt;
-
-  case Hexagon::STriw_cdnNotPt_nv_V4 :
-  case Hexagon::STriw_cNotPt_nv_V4 :
-  case Hexagon::STriw_cdnNotPt_V4 :
-    return Hexagon::STriw_cNotPt;
-
-  case Hexagon::STriw_indexed_cdnPt_nv_V4 :
-  case Hexagon::STriw_indexed_cPt_nv_V4 :
-  case Hexagon::STriw_indexed_cdnPt_V4 :
-    return Hexagon::STriw_indexed_cPt;
-
-  case Hexagon::STriw_indexed_cdnNotPt_nv_V4 :
-  case Hexagon::STriw_indexed_cNotPt_nv_V4 :
-  case Hexagon::STriw_indexed_cdnNotPt_V4 :
-    return Hexagon::STriw_indexed_cNotPt;
-
-  case Hexagon::STriw_indexed_shl_cdnPt_nv_V4 :
-  case Hexagon::STriw_indexed_shl_cPt_nv_V4 :
-  case Hexagon::STriw_indexed_shl_cdnPt_V4 :
-    return Hexagon::STriw_indexed_shl_cPt_V4;
-
-  case Hexagon::STriw_indexed_shl_cdnNotPt_nv_V4 :
-  case Hexagon::STriw_indexed_shl_cNotPt_nv_V4 :
-  case Hexagon::STriw_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::STriw_indexed_shl_cNotPt_V4;
-
-  case Hexagon::POST_STwri_cdnPt_nv_V4 :
-  case Hexagon::POST_STwri_cPt_nv_V4 :
-  case Hexagon::POST_STwri_cdnPt_V4 :
-    return Hexagon::POST_STwri_cPt;
-
-  case Hexagon::POST_STwri_cdnNotPt_nv_V4 :
-  case Hexagon::POST_STwri_cNotPt_nv_V4 :
-  case Hexagon::POST_STwri_cdnNotPt_V4 :
-    return Hexagon::POST_STwri_cNotPt;
-
-  case Hexagon::STw_GP_cdnPt_nv_V4:
-  case Hexagon::STw_GP_cdnPt_V4:
-  case Hexagon::STw_GP_cPt_nv_V4:
-    return Hexagon::STw_GP_cPt_V4;
-
-  case Hexagon::STw_GP_cdnNotPt_nv_V4:
-  case Hexagon::STw_GP_cdnNotPt_V4:
-  case Hexagon::STw_GP_cNotPt_nv_V4:
-    return Hexagon::STw_GP_cNotPt_V4;
-
-  case Hexagon::STriw_GP_cdnPt_nv_V4:
-  case Hexagon::STriw_GP_cdnPt_V4:
-  case Hexagon::STriw_GP_cPt_nv_V4:
-    return Hexagon::STriw_GP_cPt_V4;
-
-  case Hexagon::STriw_GP_cdnNotPt_nv_V4:
-  case Hexagon::STriw_GP_cdnNotPt_V4:
-  case Hexagon::STriw_GP_cNotPt_nv_V4:
-    return Hexagon::STriw_GP_cNotPt_V4;
-
-  // Store new-value word - unconditional
-
-  case Hexagon::STriw_nv_V4:
-    return Hexagon::STriw;
-
-  case Hexagon::STriw_indexed_nv_V4:
-    return Hexagon::STriw_indexed;
-
-  case Hexagon::STriw_indexed_shl_nv_V4:
-    return Hexagon::STriw_indexed_shl_V4;
-
-  case Hexagon::STriw_shl_nv_V4:
-    return Hexagon::STriw_shl_V4;
-
-  case Hexagon::STriw_GP_nv_V4:
-    return Hexagon::STriw_GP_V4;
-
-  case Hexagon::STw_GP_nv_V4:
-    return Hexagon::STw_GP_V4;
-
-  case Hexagon::POST_STwri_nv_V4:
-    return Hexagon::POST_STwri;
-
- // Store doubleword
-
-  case Hexagon::STrid_cdnPt_V4 :
-    return Hexagon::STrid_cPt;
-
-  case Hexagon::STrid_cdnNotPt_V4 :
-    return Hexagon::STrid_cNotPt;
-
-  case Hexagon::STrid_indexed_cdnPt_V4 :
-    return Hexagon::STrid_indexed_cPt;
-
-  case Hexagon::STrid_indexed_cdnNotPt_V4 :
-    return Hexagon::STrid_indexed_cNotPt;
-
-  case Hexagon::STrid_indexed_shl_cdnPt_V4 :
-    return Hexagon::STrid_indexed_shl_cPt_V4;
-
-  case Hexagon::STrid_indexed_shl_cdnNotPt_V4 :
-    return Hexagon::STrid_indexed_shl_cNotPt_V4;
-
-  case Hexagon::POST_STdri_cdnPt_V4 :
-    return Hexagon::POST_STdri_cPt;
-
-  case Hexagon::POST_STdri_cdnNotPt_V4 :
-    return Hexagon::POST_STdri_cNotPt;
-
-  case Hexagon::STd_GP_cdnPt_V4 :
-    return Hexagon::STd_GP_cPt_V4;
-
-  case Hexagon::STd_GP_cdnNotPt_V4 :
-    return Hexagon::STd_GP_cNotPt_V4;
-
-  case Hexagon::STrid_GP_cdnPt_V4 :
-    return Hexagon::STrid_GP_cPt_V4;
-
-  case Hexagon::STrid_GP_cdnNotPt_V4 :
-    return Hexagon::STrid_GP_cNotPt_V4;
-  }
-}
-
-bool HexagonPacketizerList::DemoteToDotOld(MachineInstr* MI) {
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  int NewOpcode =3D GetDotOldOp(MI->getOpcode());
-  MI->setDesc(QII->get(NewOpcode));
-  return true;
-}
-
-// Returns true if an instruction is predicated on p0 and false if it's
-// predicated on !p0.
-
-static bool GetPredicateSense(MachineInstr* MI,
-                              const HexagonInstrInfo *QII) {
-
-  switch (MI->getOpcode()) {
-  case Hexagon::TFR_cPt:
-  case Hexagon::TFR_cdnPt:
-  case Hexagon::TFRI_cPt:
-  case Hexagon::TFRI_cdnPt:
-  case Hexagon::STrib_cPt :
-  case Hexagon::STrib_cdnPt_V4 :
-  case Hexagon::STrib_indexed_cPt :
-  case Hexagon::STrib_indexed_cdnPt_V4 :
-  case Hexagon::STrib_indexed_shl_cPt_V4 :
-  case Hexagon::STrib_indexed_shl_cdnPt_V4 :
-  case Hexagon::POST_STbri_cPt :
-  case Hexagon::POST_STbri_cdnPt_V4 :
-  case Hexagon::STrih_cPt :
-  case Hexagon::STrih_cdnPt_V4 :
-  case Hexagon::STrih_indexed_cPt :
-  case Hexagon::STrih_indexed_cdnPt_V4 :
-  case Hexagon::STrih_indexed_shl_cPt_V4 :
-  case Hexagon::STrih_indexed_shl_cdnPt_V4 :
-  case Hexagon::POST_SThri_cPt :
-  case Hexagon::POST_SThri_cdnPt_V4 :
-  case Hexagon::STriw_cPt :
-  case Hexagon::STriw_cdnPt_V4 :
-  case Hexagon::STriw_indexed_cPt :
-  case Hexagon::STriw_indexed_cdnPt_V4 :
-  case Hexagon::STriw_indexed_shl_cPt_V4 :
-  case Hexagon::STriw_indexed_shl_cdnPt_V4 :
-  case Hexagon::POST_STwri_cPt :
-  case Hexagon::POST_STwri_cdnPt_V4 :
-  case Hexagon::STrib_imm_cPt_V4 :
-  case Hexagon::STrib_imm_cdnPt_V4 :
-  case Hexagon::STrid_cPt :
-  case Hexagon::STrid_cdnPt_V4 :
-  case Hexagon::STrid_indexed_cPt :
-  case Hexagon::STrid_indexed_cdnPt_V4 :
-  case Hexagon::STrid_indexed_shl_cPt_V4 :
-  case Hexagon::STrid_indexed_shl_cdnPt_V4 :
-  case Hexagon::POST_STdri_cPt :
-  case Hexagon::POST_STdri_cdnPt_V4 :
-  case Hexagon::STrih_imm_cPt_V4 :
-  case Hexagon::STrih_imm_cdnPt_V4 :
-  case Hexagon::STriw_imm_cPt_V4 :
-  case Hexagon::STriw_imm_cdnPt_V4 :
-  case Hexagon::JMP_cdnPt :
-  case Hexagon::LDrid_cPt :
-  case Hexagon::LDrid_cdnPt :
-  case Hexagon::LDrid_indexed_cPt :
-  case Hexagon::LDrid_indexed_cdnPt :
-  case Hexagon::POST_LDrid_cPt :
-  case Hexagon::POST_LDrid_cdnPt_V4 :
-  case Hexagon::LDriw_cPt :
-  case Hexagon::LDriw_cdnPt :
-  case Hexagon::LDriw_indexed_cPt :
-  case Hexagon::LDriw_indexed_cdnPt :
-  case Hexagon::POST_LDriw_cPt :
-  case Hexagon::POST_LDriw_cdnPt_V4 :
-  case Hexagon::LDrih_cPt :
-  case Hexagon::LDrih_cdnPt :
-  case Hexagon::LDrih_indexed_cPt :
-  case Hexagon::LDrih_indexed_cdnPt :
-  case Hexagon::POST_LDrih_cPt :
-  case Hexagon::POST_LDrih_cdnPt_V4 :
-  case Hexagon::LDrib_cPt :
-  case Hexagon::LDrib_cdnPt :
-  case Hexagon::LDrib_indexed_cPt :
-  case Hexagon::LDrib_indexed_cdnPt :
-  case Hexagon::POST_LDrib_cPt :
-  case Hexagon::POST_LDrib_cdnPt_V4 :
-  case Hexagon::LDriuh_cPt :
-  case Hexagon::LDriuh_cdnPt :
-  case Hexagon::LDriuh_indexed_cPt :
-  case Hexagon::LDriuh_indexed_cdnPt :
-  case Hexagon::POST_LDriuh_cPt :
-  case Hexagon::POST_LDriuh_cdnPt_V4 :
-  case Hexagon::LDriub_cPt :
-  case Hexagon::LDriub_cdnPt :
-  case Hexagon::LDriub_indexed_cPt :
-  case Hexagon::LDriub_indexed_cdnPt :
-  case Hexagon::POST_LDriub_cPt :
-  case Hexagon::POST_LDriub_cdnPt_V4 :
-  case Hexagon::LDrid_indexed_cPt_V4 :
-  case Hexagon::LDrid_indexed_cdnPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDrib_indexed_cPt_V4 :
-  case Hexagon::LDrib_indexed_cdnPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriub_indexed_cPt_V4 :
-  case Hexagon::LDriub_indexed_cdnPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDrih_indexed_cPt_V4 :
-  case Hexagon::LDrih_indexed_cdnPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriuh_indexed_cPt_V4 :
-  case Hexagon::LDriuh_indexed_cdnPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriw_indexed_cPt_V4 :
-  case Hexagon::LDriw_indexed_cdnPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cdnPt_V4 :
-  case Hexagon::ADD_ri_cPt :
-  case Hexagon::ADD_ri_cdnPt :
-  case Hexagon::ADD_rr_cPt :
-  case Hexagon::ADD_rr_cdnPt :
-  case Hexagon::XOR_rr_cPt :
-  case Hexagon::XOR_rr_cdnPt :
-  case Hexagon::AND_rr_cPt :
-  case Hexagon::AND_rr_cdnPt :
-  case Hexagon::OR_rr_cPt :
-  case Hexagon::OR_rr_cdnPt :
-  case Hexagon::SUB_rr_cPt :
-  case Hexagon::SUB_rr_cdnPt :
-  case Hexagon::COMBINE_rr_cPt :
-  case Hexagon::COMBINE_rr_cdnPt :
-  case Hexagon::ASLH_cPt_V4 :
-  case Hexagon::ASLH_cdnPt_V4 :
-  case Hexagon::ASRH_cPt_V4 :
-  case Hexagon::ASRH_cdnPt_V4 :
-  case Hexagon::SXTB_cPt_V4 :
-  case Hexagon::SXTB_cdnPt_V4 :
-  case Hexagon::SXTH_cPt_V4 :
-  case Hexagon::SXTH_cdnPt_V4 :
-  case Hexagon::ZXTB_cPt_V4 :
-  case Hexagon::ZXTB_cdnPt_V4 :
-  case Hexagon::ZXTH_cPt_V4 :
-  case Hexagon::ZXTH_cdnPt_V4 :
-  case Hexagon::LDrid_GP_cPt_V4 :
-  case Hexagon::LDrib_GP_cPt_V4 :
-  case Hexagon::LDriub_GP_cPt_V4 :
-  case Hexagon::LDrih_GP_cPt_V4 :
-  case Hexagon::LDriuh_GP_cPt_V4 :
-  case Hexagon::LDriw_GP_cPt_V4 :
-  case Hexagon::LDd_GP_cPt_V4 :
-  case Hexagon::LDb_GP_cPt_V4 :
-  case Hexagon::LDub_GP_cPt_V4 :
-  case Hexagon::LDh_GP_cPt_V4 :
-  case Hexagon::LDuh_GP_cPt_V4 :
-  case Hexagon::LDw_GP_cPt_V4 :
-  case Hexagon::STrid_GP_cPt_V4 :
-  case Hexagon::STrib_GP_cPt_V4 :
-  case Hexagon::STrih_GP_cPt_V4 :
-  case Hexagon::STriw_GP_cPt_V4 :
-  case Hexagon::STd_GP_cPt_V4 :
-  case Hexagon::STb_GP_cPt_V4 :
-  case Hexagon::STh_GP_cPt_V4 :
-  case Hexagon::STw_GP_cPt_V4 :
-  case Hexagon::LDrid_GP_cdnPt_V4 :
-  case Hexagon::LDrib_GP_cdnPt_V4 :
-  case Hexagon::LDriub_GP_cdnPt_V4 :
-  case Hexagon::LDrih_GP_cdnPt_V4 :
-  case Hexagon::LDriuh_GP_cdnPt_V4 :
-  case Hexagon::LDriw_GP_cdnPt_V4 :
-  case Hexagon::LDd_GP_cdnPt_V4 :
-  case Hexagon::LDb_GP_cdnPt_V4 :
-  case Hexagon::LDub_GP_cdnPt_V4 :
-  case Hexagon::LDh_GP_cdnPt_V4 :
-  case Hexagon::LDuh_GP_cdnPt_V4 :
-  case Hexagon::LDw_GP_cdnPt_V4 :
-  case Hexagon::STrid_GP_cdnPt_V4 :
-  case Hexagon::STrib_GP_cdnPt_V4 :
-  case Hexagon::STrih_GP_cdnPt_V4 :
-  case Hexagon::STriw_GP_cdnPt_V4 :
-  case Hexagon::STd_GP_cdnPt_V4 :
-  case Hexagon::STb_GP_cdnPt_V4 :
-  case Hexagon::STh_GP_cdnPt_V4 :
-  case Hexagon::STw_GP_cdnPt_V4 :
-    return true;
-
-  case Hexagon::TFR_cNotPt:
-  case Hexagon::TFR_cdnNotPt:
-  case Hexagon::TFRI_cNotPt:
-  case Hexagon::TFRI_cdnNotPt:
-  case Hexagon::STrib_cNotPt :
-  case Hexagon::STrib_cdnNotPt_V4 :
-  case Hexagon::STrib_indexed_cNotPt :
-  case Hexagon::STrib_indexed_cdnNotPt_V4 :
-  case Hexagon::STrib_indexed_shl_cNotPt_V4 :
-  case Hexagon::STrib_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_STbri_cNotPt :
-  case Hexagon::POST_STbri_cdnNotPt_V4 :
-  case Hexagon::STrih_cNotPt :
-  case Hexagon::STrih_cdnNotPt_V4 :
-  case Hexagon::STrih_indexed_cNotPt :
-  case Hexagon::STrih_indexed_cdnNotPt_V4 :
-  case Hexagon::STrih_indexed_shl_cNotPt_V4 :
-  case Hexagon::STrih_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_SThri_cNotPt :
-  case Hexagon::POST_SThri_cdnNotPt_V4 :
-  case Hexagon::STriw_cNotPt :
-  case Hexagon::STriw_cdnNotPt_V4 :
-  case Hexagon::STriw_indexed_cNotPt :
-  case Hexagon::STriw_indexed_cdnNotPt_V4 :
-  case Hexagon::STriw_indexed_shl_cNotPt_V4 :
-  case Hexagon::STriw_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_STwri_cNotPt :
-  case Hexagon::POST_STwri_cdnNotPt_V4 :
-  case Hexagon::STrib_imm_cNotPt_V4 :
-  case Hexagon::STrib_imm_cdnNotPt_V4 :
-  case Hexagon::STrid_cNotPt :
-  case Hexagon::STrid_cdnNotPt_V4 :
-  case Hexagon::STrid_indexed_cdnNotPt_V4 :
-  case Hexagon::STrid_indexed_cNotPt :
-  case Hexagon::STrid_indexed_shl_cNotPt_V4 :
-  case Hexagon::STrid_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_STdri_cNotPt :
-  case Hexagon::POST_STdri_cdnNotPt_V4 :
-  case Hexagon::STrih_imm_cNotPt_V4 :
-  case Hexagon::STrih_imm_cdnNotPt_V4 :
-  case Hexagon::STriw_imm_cNotPt_V4 :
-  case Hexagon::STriw_imm_cdnNotPt_V4 :
-  case Hexagon::JMP_cdnNotPt :
-  case Hexagon::LDrid_cNotPt :
-  case Hexagon::LDrid_cdnNotPt :
-  case Hexagon::LDrid_indexed_cNotPt :
-  case Hexagon::LDrid_indexed_cdnNotPt :
-  case Hexagon::POST_LDrid_cNotPt :
-  case Hexagon::POST_LDrid_cdnNotPt_V4 :
-  case Hexagon::LDriw_cNotPt :
-  case Hexagon::LDriw_cdnNotPt :
-  case Hexagon::LDriw_indexed_cNotPt :
-  case Hexagon::LDriw_indexed_cdnNotPt :
-  case Hexagon::POST_LDriw_cNotPt :
-  case Hexagon::POST_LDriw_cdnNotPt_V4 :
-  case Hexagon::LDrih_cNotPt :
-  case Hexagon::LDrih_cdnNotPt :
-  case Hexagon::LDrih_indexed_cNotPt :
-  case Hexagon::LDrih_indexed_cdnNotPt :
-  case Hexagon::POST_LDrih_cNotPt :
-  case Hexagon::POST_LDrih_cdnNotPt_V4 :
-  case Hexagon::LDrib_cNotPt :
-  case Hexagon::LDrib_cdnNotPt :
-  case Hexagon::LDrib_indexed_cNotPt :
-  case Hexagon::LDrib_indexed_cdnNotPt :
-  case Hexagon::POST_LDrib_cNotPt :
-  case Hexagon::POST_LDrib_cdnNotPt_V4 :
-  case Hexagon::LDriuh_cNotPt :
-  case Hexagon::LDriuh_cdnNotPt :
-  case Hexagon::LDriuh_indexed_cNotPt :
-  case Hexagon::LDriuh_indexed_cdnNotPt :
-  case Hexagon::POST_LDriuh_cNotPt :
-  case Hexagon::POST_LDriuh_cdnNotPt_V4 :
-  case Hexagon::LDriub_cNotPt :
-  case Hexagon::LDriub_cdnNotPt :
-  case Hexagon::LDriub_indexed_cNotPt :
-  case Hexagon::LDriub_indexed_cdnNotPt :
-  case Hexagon::POST_LDriub_cNotPt :
-  case Hexagon::POST_LDriub_cdnNotPt_V4 :
-  case Hexagon::LDrid_indexed_cNotPt_V4 :
-  case Hexagon::LDrid_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDrib_indexed_cNotPt_V4 :
-  case Hexagon::LDrib_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriub_indexed_cNotPt_V4 :
-  case Hexagon::LDriub_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDrih_indexed_cNotPt_V4 :
-  case Hexagon::LDrih_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriuh_indexed_cNotPt_V4 :
-  case Hexagon::LDriuh_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriw_indexed_cNotPt_V4 :
-  case Hexagon::LDriw_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cNotPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::ADD_ri_cNotPt :
-  case Hexagon::ADD_ri_cdnNotPt :
-  case Hexagon::ADD_rr_cNotPt :
-  case Hexagon::ADD_rr_cdnNotPt :
-  case Hexagon::XOR_rr_cNotPt :
-  case Hexagon::XOR_rr_cdnNotPt :
-  case Hexagon::AND_rr_cNotPt :
-  case Hexagon::AND_rr_cdnNotPt :
-  case Hexagon::OR_rr_cNotPt :
-  case Hexagon::OR_rr_cdnNotPt :
-  case Hexagon::SUB_rr_cNotPt :
-  case Hexagon::SUB_rr_cdnNotPt :
-  case Hexagon::COMBINE_rr_cNotPt :
-  case Hexagon::COMBINE_rr_cdnNotPt :
-  case Hexagon::ASLH_cNotPt_V4 :
-  case Hexagon::ASLH_cdnNotPt_V4 :
-  case Hexagon::ASRH_cNotPt_V4 :
-  case Hexagon::ASRH_cdnNotPt_V4 :
-  case Hexagon::SXTB_cNotPt_V4 :
-  case Hexagon::SXTB_cdnNotPt_V4 :
-  case Hexagon::SXTH_cNotPt_V4 :
-  case Hexagon::SXTH_cdnNotPt_V4 :
-  case Hexagon::ZXTB_cNotPt_V4 :
-  case Hexagon::ZXTB_cdnNotPt_V4 :
-  case Hexagon::ZXTH_cNotPt_V4 :
-  case Hexagon::ZXTH_cdnNotPt_V4 :
-
-  case Hexagon::LDrid_GP_cNotPt_V4 :
-  case Hexagon::LDrib_GP_cNotPt_V4 :
-  case Hexagon::LDriub_GP_cNotPt_V4 :
-  case Hexagon::LDrih_GP_cNotPt_V4 :
-  case Hexagon::LDriuh_GP_cNotPt_V4 :
-  case Hexagon::LDriw_GP_cNotPt_V4 :
-  case Hexagon::LDd_GP_cNotPt_V4 :
-  case Hexagon::LDb_GP_cNotPt_V4 :
-  case Hexagon::LDub_GP_cNotPt_V4 :
-  case Hexagon::LDh_GP_cNotPt_V4 :
-  case Hexagon::LDuh_GP_cNotPt_V4 :
-  case Hexagon::LDw_GP_cNotPt_V4 :
-  case Hexagon::STrid_GP_cNotPt_V4 :
-  case Hexagon::STrib_GP_cNotPt_V4 :
-  case Hexagon::STrih_GP_cNotPt_V4 :
-  case Hexagon::STriw_GP_cNotPt_V4 :
-  case Hexagon::STd_GP_cNotPt_V4 :
-  case Hexagon::STb_GP_cNotPt_V4 :
-  case Hexagon::STh_GP_cNotPt_V4 :
-  case Hexagon::STw_GP_cNotPt_V4 :
-  case Hexagon::LDrid_GP_cdnNotPt_V4 :
-  case Hexagon::LDrib_GP_cdnNotPt_V4 :
-  case Hexagon::LDriub_GP_cdnNotPt_V4 :
-  case Hexagon::LDrih_GP_cdnNotPt_V4 :
-  case Hexagon::LDriuh_GP_cdnNotPt_V4 :
-  case Hexagon::LDriw_GP_cdnNotPt_V4 :
-  case Hexagon::LDd_GP_cdnNotPt_V4 :
-  case Hexagon::LDb_GP_cdnNotPt_V4 :
-  case Hexagon::LDub_GP_cdnNotPt_V4 :
-  case Hexagon::LDh_GP_cdnNotPt_V4 :
-  case Hexagon::LDuh_GP_cdnNotPt_V4 :
-  case Hexagon::LDw_GP_cdnNotPt_V4 :
-  case Hexagon::STrid_GP_cdnNotPt_V4 :
-  case Hexagon::STrib_GP_cdnNotPt_V4 :
-  case Hexagon::STrih_GP_cdnNotPt_V4 :
-  case Hexagon::STriw_GP_cdnNotPt_V4 :
-  case Hexagon::STd_GP_cdnNotPt_V4 :
-  case Hexagon::STb_GP_cdnNotPt_V4 :
-  case Hexagon::STh_GP_cdnNotPt_V4 :
-  case Hexagon::STw_GP_cdnNotPt_V4 :
-    return false;
-
-  default:
-    assert (false && "Unknown predicate sense of the instruction");
-  }
-  // return *some value* to avoid compiler warning
-  return false;
-}
-
-bool HexagonPacketizerList::isDotNewInst(MachineInstr* MI) {
-  if (isNewValueInst(MI))
-    return true;
-
-  switch (MI->getOpcode()) {
-  case Hexagon::TFR_cdnNotPt:
-  case Hexagon::TFR_cdnPt:
-  case Hexagon::TFRI_cdnNotPt:
-  case Hexagon::TFRI_cdnPt:
-  case Hexagon::LDrid_cdnPt :
-  case Hexagon::LDrid_cdnNotPt :
-  case Hexagon::LDrid_indexed_cdnPt :
-  case Hexagon::LDrid_indexed_cdnNotPt :
-  case Hexagon::POST_LDrid_cdnPt_V4 :
-  case Hexagon::POST_LDrid_cdnNotPt_V4 :
-  case Hexagon::LDriw_cdnPt :
-  case Hexagon::LDriw_cdnNotPt :
-  case Hexagon::LDriw_indexed_cdnPt :
-  case Hexagon::LDriw_indexed_cdnNotPt :
-  case Hexagon::POST_LDriw_cdnPt_V4 :
-  case Hexagon::POST_LDriw_cdnNotPt_V4 :
-  case Hexagon::LDrih_cdnPt :
-  case Hexagon::LDrih_cdnNotPt :
-  case Hexagon::LDrih_indexed_cdnPt :
-  case Hexagon::LDrih_indexed_cdnNotPt :
-  case Hexagon::POST_LDrih_cdnPt_V4 :
-  case Hexagon::POST_LDrih_cdnNotPt_V4 :
-  case Hexagon::LDrib_cdnPt :
-  case Hexagon::LDrib_cdnNotPt :
-  case Hexagon::LDrib_indexed_cdnPt :
-  case Hexagon::LDrib_indexed_cdnNotPt :
-  case Hexagon::POST_LDrib_cdnPt_V4 :
-  case Hexagon::POST_LDrib_cdnNotPt_V4 :
-  case Hexagon::LDriuh_cdnPt :
-  case Hexagon::LDriuh_cdnNotPt :
-  case Hexagon::LDriuh_indexed_cdnPt :
-  case Hexagon::LDriuh_indexed_cdnNotPt :
-  case Hexagon::POST_LDriuh_cdnPt_V4 :
-  case Hexagon::POST_LDriuh_cdnNotPt_V4 :
-  case Hexagon::LDriub_cdnPt :
-  case Hexagon::LDriub_cdnNotPt :
-  case Hexagon::LDriub_indexed_cdnPt :
-  case Hexagon::LDriub_indexed_cdnNotPt :
-  case Hexagon::POST_LDriub_cdnPt_V4 :
-  case Hexagon::POST_LDriub_cdnNotPt_V4 :
-
-  case Hexagon::LDrid_indexed_cdnPt_V4 :
-  case Hexagon::LDrid_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDrid_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDrib_indexed_cdnPt_V4 :
-  case Hexagon::LDrib_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDrib_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriub_indexed_cdnPt_V4 :
-  case Hexagon::LDriub_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriub_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDrih_indexed_cdnPt_V4 :
-  case Hexagon::LDrih_indexed_cdnNotPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDrih_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriuh_indexed_cdnPt_V4 :
-  case Hexagon::LDriuh_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriuh_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::LDriw_indexed_cdnPt_V4 :
-  case Hexagon::LDriw_indexed_cdnNotPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cdnPt_V4 :
-  case Hexagon::LDriw_indexed_shl_cdnNotPt_V4 :
-
-// Coditional add
-  case Hexagon::ADD_ri_cdnPt:
-  case Hexagon::ADD_ri_cdnNotPt:
-  case Hexagon::ADD_rr_cdnPt:
-  case Hexagon::ADD_rr_cdnNotPt:
-
-  // Conditional logical operations
-  case Hexagon::XOR_rr_cdnPt :
-  case Hexagon::XOR_rr_cdnNotPt :
-  case Hexagon::AND_rr_cdnPt :
-  case Hexagon::AND_rr_cdnNotPt :
-  case Hexagon::OR_rr_cdnPt :
-  case Hexagon::OR_rr_cdnNotPt :
-
-  // Conditonal subtract
-  case Hexagon::SUB_rr_cdnPt :
-  case Hexagon::SUB_rr_cdnNotPt :
-
-  // Conditional combine
-  case Hexagon::COMBINE_rr_cdnPt :
-  case Hexagon::COMBINE_rr_cdnNotPt :
-
-  // Conditional shift operations
-  case Hexagon::ASLH_cdnPt_V4:
-  case Hexagon::ASLH_cdnNotPt_V4:
-  case Hexagon::ASRH_cdnPt_V4:
-  case Hexagon::ASRH_cdnNotPt_V4:
-  case Hexagon::SXTB_cdnPt_V4:
-  case Hexagon::SXTB_cdnNotPt_V4:
-  case Hexagon::SXTH_cdnPt_V4:
-  case Hexagon::SXTH_cdnNotPt_V4:
-  case Hexagon::ZXTB_cdnPt_V4:
-  case Hexagon::ZXTB_cdnNotPt_V4:
-  case Hexagon::ZXTH_cdnPt_V4:
-  case Hexagon::ZXTH_cdnNotPt_V4:
-
-  // Conditional stores
-  case Hexagon::STrib_imm_cdnPt_V4 :
-  case Hexagon::STrib_imm_cdnNotPt_V4 :
-  case Hexagon::STrib_cdnPt_V4 :
-  case Hexagon::STrib_cdnNotPt_V4 :
-  case Hexagon::STrib_indexed_cdnPt_V4 :
-  case Hexagon::STrib_indexed_cdnNotPt_V4 :
-  case Hexagon::POST_STbri_cdnPt_V4 :
-  case Hexagon::POST_STbri_cdnNotPt_V4 :
-  case Hexagon::STrib_indexed_shl_cdnPt_V4 :
-  case Hexagon::STrib_indexed_shl_cdnNotPt_V4 :
-
-  // Store doubleword conditionally
-  case Hexagon::STrid_indexed_cdnPt_V4 :
-  case Hexagon::STrid_indexed_cdnNotPt_V4 :
-  case Hexagon::STrid_indexed_shl_cdnPt_V4 :
-  case Hexagon::STrid_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_STdri_cdnPt_V4 :
-  case Hexagon::POST_STdri_cdnNotPt_V4 :
-
-  // Store halfword conditionally
-  case Hexagon::STrih_cdnPt_V4 :
-  case Hexagon::STrih_cdnNotPt_V4 :
-  case Hexagon::STrih_indexed_cdnPt_V4 :
-  case Hexagon::STrih_indexed_cdnNotPt_V4 :
-  case Hexagon::STrih_imm_cdnPt_V4 :
-  case Hexagon::STrih_imm_cdnNotPt_V4 :
-  case Hexagon::STrih_indexed_shl_cdnPt_V4 :
-  case Hexagon::STrih_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_SThri_cdnPt_V4 :
-  case Hexagon::POST_SThri_cdnNotPt_V4 :
-
-  // Store word conditionally
-  case Hexagon::STriw_cdnPt_V4 :
-  case Hexagon::STriw_cdnNotPt_V4 :
-  case Hexagon::STriw_indexed_cdnPt_V4 :
-  case Hexagon::STriw_indexed_cdnNotPt_V4 :
-  case Hexagon::STriw_imm_cdnPt_V4 :
-  case Hexagon::STriw_imm_cdnNotPt_V4 :
-  case Hexagon::STriw_indexed_shl_cdnPt_V4 :
-  case Hexagon::STriw_indexed_shl_cdnNotPt_V4 :
-  case Hexagon::POST_STwri_cdnPt_V4 :
-  case Hexagon::POST_STwri_cdnNotPt_V4 :
-
-  case Hexagon::LDd_GP_cdnPt_V4:
-  case Hexagon::LDd_GP_cdnNotPt_V4:
-  case Hexagon::LDb_GP_cdnPt_V4:
-  case Hexagon::LDb_GP_cdnNotPt_V4:
-  case Hexagon::LDub_GP_cdnPt_V4:
-  case Hexagon::LDub_GP_cdnNotPt_V4:
-  case Hexagon::LDh_GP_cdnPt_V4:
-  case Hexagon::LDh_GP_cdnNotPt_V4:
-  case Hexagon::LDuh_GP_cdnPt_V4:
-  case Hexagon::LDuh_GP_cdnNotPt_V4:
-  case Hexagon::LDw_GP_cdnPt_V4:
-  case Hexagon::LDw_GP_cdnNotPt_V4:
-  case Hexagon::LDrid_GP_cdnPt_V4:
-  case Hexagon::LDrid_GP_cdnNotPt_V4:
-  case Hexagon::LDrib_GP_cdnPt_V4:
-  case Hexagon::LDrib_GP_cdnNotPt_V4:
-  case Hexagon::LDriub_GP_cdnPt_V4:
-  case Hexagon::LDriub_GP_cdnNotPt_V4:
-  case Hexagon::LDrih_GP_cdnPt_V4:
-  case Hexagon::LDrih_GP_cdnNotPt_V4:
-  case Hexagon::LDriuh_GP_cdnPt_V4:
-  case Hexagon::LDriuh_GP_cdnNotPt_V4:
-  case Hexagon::LDriw_GP_cdnPt_V4:
-  case Hexagon::LDriw_GP_cdnNotPt_V4:
-
-  case Hexagon::STrid_GP_cdnPt_V4:
-  case Hexagon::STrid_GP_cdnNotPt_V4:
-  case Hexagon::STrib_GP_cdnPt_V4:
-  case Hexagon::STrib_GP_cdnNotPt_V4:
-  case Hexagon::STrih_GP_cdnPt_V4:
-  case Hexagon::STrih_GP_cdnNotPt_V4:
-  case Hexagon::STriw_GP_cdnPt_V4:
-  case Hexagon::STriw_GP_cdnNotPt_V4:
-  case Hexagon::STd_GP_cdnPt_V4:
-  case Hexagon::STd_GP_cdnNotPt_V4:
-  case Hexagon::STb_GP_cdnPt_V4:
-  case Hexagon::STb_GP_cdnNotPt_V4:
-  case Hexagon::STh_GP_cdnPt_V4:
-  case Hexagon::STh_GP_cdnNotPt_V4:
-  case Hexagon::STw_GP_cdnPt_V4:
-  case Hexagon::STw_GP_cdnNotPt_V4:
-
-    return true;
-  }
-  return false;
-}
-
-static MachineOperand& GetPostIncrementOperand(MachineInstr *MI,
-                                               const HexagonInstrInfo *QII=
) {
-  assert(QII->isPostIncrement(MI) && "Not a post increment operation.");
-#ifndef NDEBUG
-  // Post Increment means duplicates. Use dense map to find duplicates in =
the
-  // list. Caution: Densemap initializes with the minimum of 64 buckets,
-  // whereas there are at most 5 operands in the post increment.
-  DenseMap<unsigned,  unsigned> DefRegsSet;
-  for(unsigned opNum =3D 0; opNum < MI->getNumOperands(); opNum++)
-    if (MI->getOperand(opNum).isReg() &&
-        MI->getOperand(opNum).isDef()) {
-      DefRegsSet[MI->getOperand(opNum).getReg()] =3D 1;
-    }
-
-  for(unsigned opNum =3D 0; opNum < MI->getNumOperands(); opNum++)
-    if (MI->getOperand(opNum).isReg() &&
-        MI->getOperand(opNum).isUse()) {
-      if (DefRegsSet[MI->getOperand(opNum).getReg()]) {
-        return MI->getOperand(opNum);
-      }
-    }
-#else
-  if (MI->getDesc().mayLoad()) {
-    // The 2nd operand is always the post increment operand in load.
-    assert(MI->getOperand(1).isReg() &&
-                "Post increment operand has be to a register.");
-    return (MI->getOperand(1));
-  }
-  if (MI->getDesc().mayStore()) {
-    // The 1st operand is always the post increment operand in store.
-    assert(MI->getOperand(0).isReg() &&
-                "Post increment operand has be to a register.");
-    return (MI->getOperand(0));
-  }
-#endif
-  // we should never come here.
-  llvm_unreachable("mayLoad or mayStore not set for Post Increment operati=
on");
-}
-
-// get the value being stored
-static MachineOperand& GetStoreValueOperand(MachineInstr *MI) {
-  // value being stored is always the last operand.
-  return (MI->getOperand(MI->getNumOperands()-1));
-}
-
-// can be new value store?
-// Following restrictions are to be respected in convert a store into
-// a new value store.
-// 1. If an instruction uses auto-increment, its address register cannot
-//    be a new-value register. Arch Spec 5.4.2.1
-// 2. If an instruction uses absolute-set addressing mode,
-//    its address register cannot be a new-value register.
-//    Arch Spec 5.4.2.1.TODO: This is not enabled as
-//    as absolute-set address mode patters are not implemented.
-// 3. If an instruction produces a 64-bit result, its registers cannot be =
used
-//    as new-value registers. Arch Spec 5.4.2.2.
-// 4. If the instruction that sets a new-value register is conditional, th=
en
-//    the instruction that uses the new-value register must also be condit=
ional,
-//    and both must always have their predicates evaluate identically.
-//    Arch Spec 5.4.2.3.
-// 5. There is an implied restriction of a packet can not have another sto=
re,
-//    if there is a  new value store in the packet. Corollary, if there is
-//    already a store in a packet, there can not be a new value store.
-//    Arch Spec: 3.4.4.2
-bool HexagonPacketizerList::CanPromoteToNewValueStore( MachineInstr *MI,
-                MachineInstr *PacketMI, unsigned DepReg,
-                std::map <MachineInstr*, SUnit*> MIToSUnit)
-{
-  // Make sure we are looking at the store
-  if (!IsNewifyStore(MI))
-    return false;
-
-  // Make sure there is dependency and can be new value'ed
-  if (GetStoreValueOperand(MI).isReg() &&
-      GetStoreValueOperand(MI).getReg() !=3D DepReg)
-    return false;
-
-  const HexagonRegisterInfo* QRI =3D (const HexagonRegisterInfo *) TM.getR=
egisterInfo();
-  const MCInstrDesc& MCID =3D PacketMI->getDesc();
-  // first operand is always the result
-
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  const TargetRegisterClass* PacketRC =3D QII->getRegClass(MCID, 0, QRI);
-
-  // if there is already an store in the packet, no can do new value store
-  // Arch Spec 3.4.4.2.
-  for (std::vector<MachineInstr*>::iterator VI =3D CurrentPacketMIs.begin(=
),
-         VE =3D CurrentPacketMIs.end();
-       (VI !=3D VE); ++VI) {
-    SUnit* PacketSU =3D MIToSUnit[*VI];
-    if (PacketSU->getInstr()->getDesc().mayStore() ||
-        // if we have mayStore =3D 1 set on ALLOCFRAME and DEALLOCFRAME,
-        // then we don't need this
-        PacketSU->getInstr()->getOpcode() =3D=3D Hexagon::ALLOCFRAME ||
-        PacketSU->getInstr()->getOpcode() =3D=3D Hexagon::DEALLOCFRAME)
-      return false;
-  }
-
-  if (PacketRC =3D=3D Hexagon::DoubleRegsRegisterClass) {
-    // new value store constraint: double regs can not feed into new value=
 store
-    // arch spec section: 5.4.2.2
-    return false;
-  }
-
-  // Make sure it's NOT the post increment register that we are going to
-  // new value.
-  if (QII->isPostIncrement(MI) &&
-      MI->getDesc().mayStore() &&
-      GetPostIncrementOperand(MI, QII).getReg() =3D=3D DepReg) {
-    return false;
-  }
-
-  if (QII->isPostIncrement(PacketMI) &&
-      PacketMI->getDesc().mayLoad() &&
-      GetPostIncrementOperand(PacketMI, QII).getReg() =3D=3D DepReg) {
-    // if source is post_inc, or absolute-set addressing,
-    // it can not feed into new value store
-    //  r3 =3D memw(r2++#4)
-    //  memw(r30 + #-1404) =3D r2.new -> can not be new value store
-    // arch spec section: 5.4.2.1
-    return false;
-  }
-
-  // If the source that feeds the store is predicated, new value store mus=
t also be
-  // also predicated.
-  if (QII->isPredicated(PacketMI)) {
-    if (!QII->isPredicated(MI))
-      return false;
-
-    // Check to make sure that they both will have their predicates
-    // evaluate identically
-    unsigned predRegNumSrc;
-    unsigned predRegNumDst;
-    const TargetRegisterClass* predRegClass;
-
-    // Get predicate register used in the source instruction
-    for(unsigned opNum =3D 0; opNum < PacketMI->getNumOperands(); opNum++)=
 {
-      if ( PacketMI->getOperand(opNum).isReg())
-      predRegNumSrc =3D PacketMI->getOperand(opNum).getReg();
-      predRegClass =3D QRI->getMinimalPhysRegClass(predRegNumSrc);
-      if (predRegClass =3D=3D Hexagon::PredRegsRegisterClass) {
-        break;
-      }
-    }
-    assert ((predRegClass =3D=3D Hexagon::PredRegsRegisterClass ) &&
-        ("predicate register not found in a predicated PacketMI instructio=
n"));
-
-    // Get predicate register used in new-value store instruction
-    for(unsigned opNum =3D 0; opNum < MI->getNumOperands(); opNum++) {
-      if ( MI->getOperand(opNum).isReg())
-      predRegNumDst =3D MI->getOperand(opNum).getReg();
-      predRegClass =3D QRI->getMinimalPhysRegClass(predRegNumDst);
-      if (predRegClass =3D=3D Hexagon::PredRegsRegisterClass) {
-        break;
-      }
-    }
-    assert ((predRegClass =3D=3D Hexagon::PredRegsRegisterClass ) &&
-            ("predicate register not found in a predicated MI instruction"=
));
-
-    // New-value register producer and user (store) need to satisfy these
-    // constraints:
-    // 1) Both instructions should be predicated on the same register.
-    // 2) If producer of the new-value register is .new predicated then st=
ore
-    // should also be .new predicated and if producer is not .new predicat=
ed
-    // then store should not be .new predicated.
-    // 3) Both new-value register producer and user should have same predi=
cate
-    // sense, i.e, either both should be negated or both should be none ne=
gated.
-
-    if (( predRegNumDst !=3D predRegNumSrc) ||
-          isDotNewInst(PacketMI) !=3D isDotNewInst(MI)  ||
-          GetPredicateSense(MI, QII) !=3D GetPredicateSense(PacketMI, QII)=
) {
-      return false;
-    }
-  }
-
-  // Make sure that other than the new-value register no other store instr=
uction
-  // register has been modified in the same packet. Predicate registers ca=
n be
-  // modified by they should not be modified between the producer and the =
store
-  // instruction as it will make them both conditional on different values.
-  // We already know this to be true for all the instructions before and
-  // including PacketMI. Howerver, we need to perform the check for the
-  // remaining instructions in the packet.
-
-  std::vector<MachineInstr*>::iterator VI;
-  std::vector<MachineInstr*>::iterator VE;
-  unsigned StartCheck =3D 0;
-
-  for (VI=3DCurrentPacketMIs.begin(), VE =3D CurrentPacketMIs.end();
-      (VI !=3D VE); ++VI) {
-    SUnit* TempSU =3D MIToSUnit[*VI];
-    MachineInstr* TempMI =3D TempSU->getInstr();
-
-    // Following condition is true for all the instructions until PacketMI=
 is
-    // reached (StartCheck is set to 0 before the for loop).
-    // StartCheck flag is 1 for all the instructions after PacketMI.
-    if (TempMI !=3D PacketMI && !StartCheck) // start processing only after
-      continue;                            // encountering PacketMI
-
-    StartCheck =3D 1;
-    if (TempMI =3D=3D PacketMI) // We don't want to check PacketMI for dep=
endence
-      continue;
-
-    for(unsigned opNum =3D 0; opNum < MI->getNumOperands(); opNum++) {
-      if (MI->getOperand(opNum).isReg() &&
-          TempSU->getInstr()->modifiesRegister(MI->getOperand(opNum).getRe=
g(), QRI))
-        return false;
-    }
-  }
-
-  // Make sure that for non POST_INC stores:
-  // 1. The only use of reg is DepReg and no other registers.
-  //    This handles V4 base+index registers.
-  //    The following store can not be dot new.
-  //    Eg.   r0 =3D add(r0, #3)a
-  //          memw(r1+r0<<#2) =3D r0
-  if (!QII->isPostIncrement(MI) &&
-      GetStoreValueOperand(MI).isReg() &&
-      GetStoreValueOperand(MI).getReg() =3D=3D DepReg) {
-    for(unsigned opNum =3D 0; opNum < MI->getNumOperands()-1; opNum++) {
-      if (MI->getOperand(opNum).isReg() &&
-          MI->getOperand(opNum).getReg() =3D=3D DepReg) {
-        return false;
-      }
-    }
-    // 2. If data definition is because of implicit definition of the regi=
ster,
-    //    do not newify the store. Eg.
-    //    %R9<def> =3D ZXTH %R12, %D6<imp-use>, %R12<imp-def>
-    //    STrih_indexed %R8, 2, %R12<kill>; mem:ST2[%scevgep343]
-    for(unsigned opNum =3D 0; opNum < PacketMI->getNumOperands(); opNum++)=
 {
-      if (PacketMI->getOperand(opNum).isReg() &&
-          PacketMI->getOperand(opNum).getReg() =3D=3D DepReg &&
-          PacketMI->getOperand(opNum).isDef() &&
-          PacketMI->getOperand(opNum).isImplicit()) {
-        return false;
-      }
-    }
-  }
-
-  // Can be dot new store.
-  return true;
-}
-
-// can this MI to promoted to either
-// new value store or new value jump
-bool HexagonPacketizerList::CanPromoteToNewValue( MachineInstr *MI,
-                SUnit *PacketSU, unsigned DepReg,
-                std::map <MachineInstr*, SUnit*> MIToSUnit,
-                MachineBasicBlock::iterator &MII)
-{
-
-  const HexagonRegisterInfo* QRI =3D (const HexagonRegisterInfo *) TM.getR=
egisterInfo();
-  if (!QRI->Subtarget.hasV4TOps() ||
-      !IsNewifyStore(MI))
-    return false;
-
-  MachineInstr *PacketMI =3D PacketSU->getInstr();
-
-  // Check to see the store can be new value'ed.
-  if (CanPromoteToNewValueStore(MI, PacketMI, DepReg, MIToSUnit))
-    return true;
-
-  // Check to see the compare/jump can be new value'ed.
-  // This is done as a pass on its own. Don't need to check it here.
-  return false;
-}
-
-// Check to see if an instruction can be dot new
-// There are three kinds.
-// 1. dot new on predicate - V2/V3/V4
-// 2. dot new on stores NV/ST - V4
-// 3. dot new on jump NV/J - V4 -- This is generated in a pass.
-bool HexagonPacketizerList::CanPromoteToDotNew( MachineInstr *MI,
-                              SUnit *PacketSU, unsigned DepReg,
-                              std::map <MachineInstr*, SUnit*> MIToSUnit,
-                              MachineBasicBlock::iterator &MII,
-                              const TargetRegisterClass* RC )
-{
-  // already a dot new instruction
-  if (isDotNewInst(MI) && !IsNewifyStore(MI))
-    return false;
-
-  if (!isNewifiable(MI))
-    return false;
-
-  // predicate .new
-  if (RC =3D=3D Hexagon::PredRegsRegisterClass && isCondInst(MI))
-      return true;
-  else if (RC !=3D Hexagon::PredRegsRegisterClass &&
-      !IsNewifyStore(MI)) // MI is not a new-value store
-    return false;
-  else {
-    // Create a dot new machine instruction to see if resources can be
-    // allocated. If not, bail out now.
-    const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-    int NewOpcode =3D GetDotNewOp(MI->getOpcode());
-    const MCInstrDesc &desc =3D QII->get(NewOpcode);
-    DebugLoc dl;
-    MachineInstr *NewMI =3D MI->getParent()->getParent()->CreateMachineIns=
tr(desc, dl);
-    bool ResourcesAvailable =3D ResourceTracker->canReserveResources(NewMI=
);
-    MI->getParent()->getParent()->DeleteMachineInstr(NewMI);
-
-    if (!ResourcesAvailable)
-      return false;
-
-    // new value store only
-    // new new value jump generated as a passes
-    if (!CanPromoteToNewValue(MI, PacketSU, DepReg, MIToSUnit, MII)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-// Go through the packet instructions and search for anti dependency
-// between them and DepReg from MI
-// Consider this case:
-// Trying to add
-// a) %R1<def> =3D TFRI_cdNotPt %P3, 2
-// to this packet:
-// {
-//   b) %P0<def> =3D OR_pp %P3<kill>, %P0<kill>
-//   c) %P3<def> =3D TFR_PdRs %R23
-//   d) %R1<def> =3D TFRI_cdnPt %P3, 4
-//  }
-// The P3 from a) and d) will be complements after
-// a)'s P3 is converted to .new form
-// Anti Dep between c) and b) is irrelevant for this case
-bool HexagonPacketizerList::RestrictingDepExistInPacket (MachineInstr* MI,
-      unsigned DepReg,
-      std::map <MachineInstr*, SUnit*> MIToSUnit) {
-
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  SUnit* PacketSUDep =3D MIToSUnit[MI];
-
-  for (std::vector<MachineInstr*>::iterator VIN =3D CurrentPacketMIs.begin=
(),
-       VEN =3D CurrentPacketMIs.end(); (VIN !=3D VEN); ++VIN) {
-
-    // We only care for dependencies to predicated instructions
-    if(!QII->isPredicated(*VIN)) continue;
-
-    // Scheduling Unit for current insn in the packet
-    SUnit* PacketSU =3D MIToSUnit[*VIN];
-
-    // Look at dependencies between current members of the packet
-    // and predicate defining instruction MI.
-    // Make sure that dependency is on the exact register
-    // we care about.
-    if (PacketSU->isSucc(PacketSUDep)) {
-      for (unsigned i =3D 0; i < PacketSU->Succs.size(); ++i) {
-        if ((PacketSU->Succs[i].getSUnit() =3D=3D PacketSUDep) &&
-            (PacketSU->Succs[i].getKind() =3D=3D SDep::Anti) &&
-            (PacketSU->Succs[i].getReg() =3D=3D DepReg)) {
-          return true;
-        }
-      }
-    }
-  }
-
-  return false;
-}
-
-
-// Given two predicated instructions, this function detects whether
-// the predicates are complements
-bool HexagonPacketizerList::ArePredicatesComplements (MachineInstr* MI1,
-     MachineInstr* MI2, std::map <MachineInstr*, SUnit*> MIToSUnit) {
-
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-  // Currently can only reason about conditional transfers
-  if (!QII->isConditionalTransfer(MI1) || !QII->isConditionalTransfer(MI2)=
) {
-    return false;
-  }
-
-  // Scheduling unit for candidate
-  SUnit* SU =3D MIToSUnit[MI1];
-
-  // One corner case deals with the following scenario:
-  // Trying to add
-  // a) %R24<def> =3D TFR_cPt %P0, %R25
-  // to this packet:
-  //
-  // {
-  //   b) %R25<def> =3D TFR_cNotPt %P0, %R24
-  //   c) %P0<def> =3D CMPEQri %R26, 1
-  // }
-  //
-  // On general check a) and b) are complements, but
-  // presence of c) will convert a) to .new form, and
-  // then it is not a complement
-  // We attempt to detect it by analyzing  existing
-  // dependencies in the packet
-
-  // Analyze relationships between all existing members of the packet.
-  // Look for Anti dependecy on the same predicate reg
-  // as used in the candidate
-  for (std::vector<MachineInstr*>::iterator VIN =3D CurrentPacketMIs.begin=
(),
-       VEN =3D CurrentPacketMIs.end(); (VIN !=3D VEN); ++VIN) {
-
-    // Scheduling Unit for current insn in the packet
-    SUnit* PacketSU =3D MIToSUnit[*VIN];
-
-    // If this instruction in the packet is succeeded by the candidate...
-    if (PacketSU->isSucc(SU)) {
-      for (unsigned i =3D 0; i < PacketSU->Succs.size(); ++i) {
-        // The corner case exist when there is true data
-        // dependency between candidate and one of current
-        // packet members, this dep is on predicate reg, and
-        // there already exist anti dep on the same pred in
-        // the packet.
-        if (PacketSU->Succs[i].getSUnit() =3D=3D SU &&
-            Hexagon::PredRegsRegisterClass->contains(
-              PacketSU->Succs[i].getReg()) &&
-            PacketSU->Succs[i].getKind() =3D=3D SDep::Data &&
-            // Here I know that *VIN is predicate setting instruction
-            // with true data dep to candidate on the register
-            // we care about - c) in the above example.
-            // Now I need to see if there is an anti dependency
-            // from c) to any other instruction in the
-            // same packet on the pred reg of interest
-            RestrictingDepExistInPacket(*VIN,PacketSU->Succs[i].getReg(),
-                                        MIToSUnit)) {
-           return false;
-        }
-      }
-    }
-  }
-
-  // If the above case does not apply, check regular
-  // complement condition.
-  // Check that the predicate register is the same and
-  // that the predicate sense is different
-  // We also need to differentiate .old vs. .new:
-  // !p0 is not complimentary to p0.new
-  return ((MI1->getOperand(1).getReg() =3D=3D MI2->getOperand(1).getReg())=
 &&
-          (GetPredicateSense(MI1, QII) !=3D GetPredicateSense(MI2, QII)) &&
-          (isDotNewInst(MI1) =3D=3D isDotNewInst(MI2)));
-}
-
-// initPacketizerState - Initialize packetizer flags
-void HexagonPacketizerList::initPacketizerState() {
-
-  Dependence =3D false;
-  PromotedToDotNew =3D false;
-  GlueToNewValueJump =3D false;
-  GlueAllocframeStore =3D false;
-  FoundSequentialDependence =3D false;
-
-  return;
-}
-
-// ignorePseudoInstruction - Ignore bundling of pseudo instructions.
-bool HexagonPacketizerList::ignorePseudoInstruction(MachineInstr *MI,
-                                                    MachineBasicBlock *MBB=
) {
-  if (MI->isDebugValue())
-    return true;
-
-  // We must print out inline assembly
-  if (MI->isInlineAsm())
-    return false;
-
-  // We check if MI has any functional units mapped to it.
-  // If it doesn't, we ignore the instruction.
-  const MCInstrDesc& TID =3D MI->getDesc();
-  unsigned SchedClass =3D TID.getSchedClass();
-  const InstrStage* IS =3D ResourceTracker->getInstrItins()->beginStage(Sc=
hedClass);
-  unsigned FuncUnits =3D IS->getUnits();
-  return !FuncUnits;
-}
-
-// isSoloInstruction: - Returns true for instructions that must be
-// scheduled in their own packet.
-bool HexagonPacketizerList::isSoloInstruction(MachineInstr *MI) {
-
-  if (MI->isInlineAsm())
-    return true;
-
-  if (MI->isEHLabel())
-    return true;
-
-  // From Hexagon V4 Programmer's Reference Manual 3.4.4 Grouping constrai=
nts:
-  // trap, pause, barrier, icinva, isync, and syncht are solo instructions.
-  // They must not be grouped with other instructions in a packet.
-  if (IsSchedBarrier(MI))
-    return true;
-
-  return false;
-}
-
-// isLegalToPacketizeTogether:
-// SUI is the current instruction that is out side of the current packet.
-// SUJ is the current instruction inside the current packet against which =
that
-// SUI will be packetized.
-bool HexagonPacketizerList::isLegalToPacketizeTogether(SUnit *SUI, SUnit *=
SUJ) {
-  MachineInstr *I =3D SUI->getInstr();
-  MachineInstr *J =3D SUJ->getInstr();
-  assert(I && J && "Unable to packetize null instruction!");
-
-  const MCInstrDesc &MCIDI =3D I->getDesc();
-  const MCInstrDesc &MCIDJ =3D J->getDesc();
-
-  MachineBasicBlock::iterator II =3D I;
-
-  const unsigned FrameSize =3D MF.getFrameInfo()->getStackSize();
-  const HexagonRegisterInfo* QRI =3D (const HexagonRegisterInfo *) TM.getR=
egisterInfo();
-  const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-
-  // Inline asm cannot go in the packet.
-  if (I->getOpcode() =3D=3D Hexagon::INLINEASM)
-    llvm_unreachable("Should not meet inline asm here!");
-
-  if (isSoloInstruction(I))
-    llvm_unreachable("Should not meet solo instr here!");
-
-  // A save callee-save register function call can only be in a packet
-  // with instructions that don't write to the callee-save registers.
-  if ((QII->isSaveCalleeSavedRegsCall(I) &&
-       DoesModifyCalleeSavedReg(J, QRI)) ||
-      (QII->isSaveCalleeSavedRegsCall(J) &&
-       DoesModifyCalleeSavedReg(I, QRI))) {
-    Dependence =3D true;
-    return false;
-  }
-
-  // Two control flow instructions cannot go in the same packet.
-  if (IsControlFlow(I) && IsControlFlow(J)) {
-    Dependence =3D true;
-    return false;
-  }
-
-  // A LoopN instruction cannot appear in the same packet as a jump or cal=
l.
-  if (IsLoopN(I) && (   IsDirectJump(J)
-                     || MCIDJ.isCall()
-                     || QII->isDeallocRet(J))) {
-    Dependence =3D true;
-    return false;
-  }
-  if (IsLoopN(J) && (   IsDirectJump(I)
-                     || MCIDI.isCall()
-                     || QII->isDeallocRet(I))) {
-    Dependence =3D true;
-    return false;
-  }
-
-  // dealloc_return cannot appear in the same packet as a conditional or
-  // unconditional jump.
-  if (QII->isDeallocRet(I) && (   MCIDJ.isBranch()
-                               || MCIDJ.isCall()
-                               || MCIDJ.isBarrier())) {
-    Dependence =3D true;
-    return false;
-  }
-
-
-  // V4 allows dual store. But does not allow second store, if the
-  // first store is not in SLOT0. New value store, new value jump,
-  // dealloc_return and memop always take SLOT0.
-  // Arch spec 3.4.4.2
-  if (QRI->Subtarget.hasV4TOps()) {
-
-    if (MCIDI.mayStore() && MCIDJ.mayStore() && isNewValueInst(J)) {
-      Dependence =3D true;
-      return false;
-    }
-
-    if (   (QII->isMemOp(J) && MCIDI.mayStore())
-        || (MCIDJ.mayStore() && QII->isMemOp(I))
-        || (QII->isMemOp(J) && QII->isMemOp(I))) {
-      Dependence =3D true;
-      return false;
-    }
-
-    //if dealloc_return
-    if (MCIDJ.mayStore() && QII->isDeallocRet(I)){
-      Dependence =3D true;
-      return false;
-    }
-
-    // If an instruction feeds new value jump, glue it.
-    MachineBasicBlock::iterator NextMII =3D I;
-    ++NextMII;
-    MachineInstr *NextMI =3D NextMII;
-
-    if (QII->isNewValueJump(NextMI)) {
-
-      bool secondRegMatch =3D false;
-      bool maintainNewValueJump =3D false;
-
-      if (NextMI->getOperand(1).isReg() &&
-          I->getOperand(0).getReg() =3D=3D NextMI->getOperand(1).getReg())=
 {
-        secondRegMatch =3D true;
-        maintainNewValueJump =3D true;
-      }
-
-      if (!secondRegMatch &&
-           I->getOperand(0).getReg() =3D=3D NextMI->getOperand(0).getReg()=
) {
-        maintainNewValueJump =3D true;
-      }
-
-      for (std::vector<MachineInstr*>::iterator
-            VI =3D CurrentPacketMIs.begin(),
-             VE =3D CurrentPacketMIs.end();
-           (VI !=3D VE && maintainNewValueJump); ++VI) {
-        SUnit* PacketSU =3D MIToSUnit[*VI];
-
-        // NVJ can not be part of the dual jump - Arch Spec: section 7.8
-        if (PacketSU->getInstr()->getDesc().isCall()) {
-          Dependence =3D true;
-          break;
-        }
-        // Validate
-        // 1. Packet does not have a store in it.
-        // 2. If the first operand of the nvj is newified, and the second
-        //    operand is also a reg, it (second reg) is not defined in
-        //    the same packet.
-        // 3. If the second operand of the nvj is newified, (which means
-        //    first operand is also a reg), first reg is not defined in
-        //    the same packet.
-        if (PacketSU->getInstr()->getDesc().mayStore()               ||
-            PacketSU->getInstr()->getOpcode() =3D=3D Hexagon::ALLOCFRAME ||
-            // Check #2.
-            (!secondRegMatch && NextMI->getOperand(1).isReg() &&
-             PacketSU->getInstr()->modifiesRegister(
-                               NextMI->getOperand(1).getReg(), QRI)) ||
-            // Check #3.
-            (secondRegMatch &&
-             PacketSU->getInstr()->modifiesRegister(
-                               NextMI->getOperand(0).getReg(), QRI))) {
-          Dependence =3D true;
-          break;
-        }
-      }
-      if (!Dependence)
-        GlueToNewValueJump =3D true;
-      else
-        return false;
-    }
-  }
-
-  if (SUJ->isSucc(SUI)) {
-    for (unsigned i =3D 0;
-         (i < SUJ->Succs.size()) && !FoundSequentialDependence;
-         ++i) {
-
-      if (SUJ->Succs[i].getSUnit() !=3D SUI) {
-        continue;
-      }
-
-      SDep::Kind DepType =3D SUJ->Succs[i].getKind();
-
-      // For direct calls:
-      // Ignore register dependences for call instructions for
-      // packetization purposes except for those due to r31 and
-      // predicate registers.
-      //
-      // For indirect calls:
-      // Same as direct calls + check for true dependences to the register
-      // used in the indirect call.
-      //
-      // We completely ignore Order dependences for call instructions
-      //
-      // For returns:
-      // Ignore register dependences for return instructions like jumpr,
-      // dealloc return unless we have dependencies on the explicit uses
-      // of the registers used by jumpr (like r31) or dealloc return
-      // (like r29 or r30).
-      //
-      // TODO: Currently, jumpr is handling only return of r31. So, the
-      // following logic (specificaly IsCallDependent) is working fine.
-      // We need to enable jumpr for register other than r31 and then,
-      // we need to rework the last part, where it handles indirect call
-      // of that (IsCallDependent) function. Bug 6216 is opened for this.
-      //
-      unsigned DepReg;
-      const TargetRegisterClass* RC;
-      if (DepType =3D=3D SDep::Data) {
-        DepReg =3D SUJ->Succs[i].getReg();
-        RC =3D QRI->getMinimalPhysRegClass(DepReg);
-      }
-      if ((MCIDI.isCall() || MCIDI.isReturn()) &&
-          (!IsRegDependence(DepType) ||
-            !IsCallDependent(I, DepType, SUJ->Succs[i].getReg()))) {
-        /* do nothing */
-      }
-
-      // For instructions that can be promoted to dot-new, try to promote.
-      else if ((DepType =3D=3D SDep::Data) &&
-               CanPromoteToDotNew(I, SUJ, DepReg, MIToSUnit, II, RC) &&
-               PromoteToDotNew(I, DepType, II, RC)) {
-        PromotedToDotNew =3D true;
-        /* do nothing */
-      }
-
-      else if ((DepType =3D=3D SDep::Data) &&
-               (QII->isNewValueJump(I))) {
-        /* do nothing */
-      }
-
-      // For predicated instructions, if the predicates are complements
-      // then there can be no dependence.
-      else if (QII->isPredicated(I) &&
-               QII->isPredicated(J) &&
-          ArePredicatesComplements(I, J, MIToSUnit)) {
-        /* do nothing */
-
-      }
-      else if (IsDirectJump(I) &&
-               !MCIDJ.isBranch() &&
-               !MCIDJ.isCall() &&
-               (DepType =3D=3D SDep::Order)) {
-        // Ignore Order dependences between unconditional direct branches
-        // and non-control-flow instructions
-        /* do nothing */
-      }
-      else if (MCIDI.isConditionalBranch() && (DepType !=3D SDep::Data) &&
-               (DepType !=3D SDep::Output)) {
-        // Ignore all dependences for jumps except for true and output
-        // dependences
-        /* do nothing */
-      }
-
-      // Ignore output dependences due to superregs. We can
-      // write to two different subregisters of R1:0 for instance
-      // in the same cycle
-      //
-
-      //
-      // Let the
-      // If neither I nor J defines DepReg, then this is a
-      // superfluous output dependence. The dependence must be of the
-      // form:
-      //  R0 =3D ...
-      //  R1 =3D ...
-      // and there is an output dependence between the two instructions
-      // with
-      // DepReg =3D D0
-      // We want to ignore these dependences.
-      // Ideally, the dependence constructor should annotate such
-      // dependences. We can then avoid this relatively expensive check.
-      //
-      else if (DepType =3D=3D SDep::Output) {
-        // DepReg is the register that's responsible for the dependence.
-        unsigned DepReg =3D SUJ->Succs[i].getReg();
-
-        // Check if I and J really defines DepReg.
-        if (I->definesRegister(DepReg) ||
-            J->definesRegister(DepReg)) {
-          FoundSequentialDependence =3D true;
-          break;
-        }
-      }
-
-      // We ignore Order dependences for
-      // 1. Two loads unless they are volatile.
-      // 2. Two stores in V4 unless they are volatile.
-      else if ((DepType =3D=3D SDep::Order) &&
-               !I->hasVolatileMemoryRef() &&
-               !J->hasVolatileMemoryRef()) {
-        if (QRI->Subtarget.hasV4TOps() &&
-            // hexagonv4 allows dual store.
-            MCIDI.mayStore() && MCIDJ.mayStore()) {
-          /* do nothing */
-        }
-        // store followed by store-- not OK on V2
-        // store followed by load -- not OK on all (OK if addresses
-        // are not aliased)
-        // load followed by store -- OK on all
-        // load followed by load  -- OK on all
-        else if ( !MCIDJ.mayStore()) {
-          /* do nothing */
-        }
-        else {
-          FoundSequentialDependence =3D true;
-          break;
-        }
-      }
-
-      // For V4, special case ALLOCFRAME. Even though there is dependency
-      // between ALLOCAFRAME and subsequent store, allow it to be
-      // packetized in a same packet. This implies that the store is using
-      // caller's SP. Hense, offset needs to be updated accordingly.
-      else if (DepType =3D=3D SDep::Data
-               && QRI->Subtarget.hasV4TOps()
-               && J->getOpcode() =3D=3D Hexagon::ALLOCFRAME
-               && (I->getOpcode() =3D=3D Hexagon::STrid
-                   || I->getOpcode() =3D=3D Hexagon::STriw
-                   || I->getOpcode() =3D=3D Hexagon::STrib)
-               && I->getOperand(0).getReg() =3D=3D QRI->getStackRegister()
-               && QII->isValidOffset(I->getOpcode(),
-                                     I->getOperand(1).getImm() -
-                                     (FrameSize + HEXAGON_LRFP_SIZE)))
-      {
-        GlueAllocframeStore =3D true;
-        // Since this store is to be glued with allocframe in the same
-        // packet, it will use SP of the previous stack frame, i.e
-        // caller's SP. Therefore, we need to recalculate offset according
-        // to this change.
-        I->getOperand(1).setImm(I->getOperand(1).getImm() -
-                                        (FrameSize + HEXAGON_LRFP_SIZE));
-      }
-
-      //
-      // Skip over anti-dependences. Two instructions that are
-      // anti-dependent can share a packet
-      //
-      else if (DepType !=3D SDep::Anti) {
-        FoundSequentialDependence =3D true;
-        break;
-      }
-    }
-
-    if (FoundSequentialDependence) {
-      Dependence =3D true;
-      return false;
-    }
-  }
-
-  return true;
-}
-
-// isLegalToPruneDependencies
-bool HexagonPacketizerList::isLegalToPruneDependencies(SUnit *SUI, SUnit *=
SUJ) {
-  MachineInstr *I =3D SUI->getInstr();
-  assert(I && SUJ->getInstr() && "Unable to packetize null instruction!");
-
-  const unsigned FrameSize =3D MF.getFrameInfo()->getStackSize();
-
-  if (Dependence) {
-
-    // Check if the instruction was promoted to a dot-new. If so, demote it
-    // back into a dot-old.
-    if (PromotedToDotNew) {
-      DemoteToDotOld(I);
-    }
-
-    // Check if the instruction (must be a store) was glued with an Allocf=
rame
-    // instruction. If so, restore its offset to its original value, i.e. =
use
-    // curent SP instead of caller's SP.
-    if (GlueAllocframeStore) {
-      I->getOperand(1).setImm(I->getOperand(1).getImm() +
-                                             FrameSize + HEXAGON_LRFP_SIZE=
);
-    }
-
-    return false;
-  }
-  return true;
-}
-
-MachineBasicBlock::iterator HexagonPacketizerList::addToPacket(MachineInst=
r *MI) {
-
-    MachineBasicBlock::iterator MII =3D MI;
-    MachineBasicBlock *MBB =3D MI->getParent();
-
-    const HexagonInstrInfo *QII =3D (const HexagonInstrInfo *) TII;
-
-    if (GlueToNewValueJump) {
-
-      ++MII;
-      MachineInstr *nvjMI =3D MII;
-      assert(ResourceTracker->canReserveResources(MI));
-      ResourceTracker->reserveResources(MI);
-      if (QII->isExtended(MI) &&
-          !tryAllocateResourcesForConstExt(MI)) {
-        endPacket(MBB, MI);
-        ResourceTracker->reserveResources(MI);
-        assert(canReserveResourcesForConstExt(MI) &&
-               "Ensure that there is a slot");
-        reserveResourcesForConstExt(MI);
-        // Reserve resources for new value jump constant extender.
-        assert(canReserveResourcesForConstExt(MI) &&
-               "Ensure that there is a slot");
-        reserveResourcesForConstExt(nvjMI);
-        assert(ResourceTracker->canReserveResources(nvjMI) &&
-               "Ensure that there is a slot");
-
-      } else if (   // Extended instruction takes two slots in the packet.
-        // Try reserve and allocate 4-byte in the current packet first.
-        (QII->isExtended(nvjMI)
-            && (!tryAllocateResourcesForConstExt(nvjMI)
-                || !ResourceTracker->canReserveResources(nvjMI)))
-        || // For non-extended instruction, no need to allocate extra 4 by=
tes.
-        (!QII->isExtended(nvjMI) && !ResourceTracker->canReserveResources(=
nvjMI)))
-      {
-        endPacket(MBB, MI);
-        // A new and empty packet starts.
-        // We are sure that the resources requirements can be satisfied.
-        // Therefore, do not need to call "canReserveResources" anymore.
-        ResourceTracker->reserveResources(MI);
-        if (QII->isExtended(nvjMI))
-          reserveResourcesForConstExt(nvjMI);
-      }
-      // Here, we are sure that "reserveResources" would succeed.
-      ResourceTracker->reserveResources(nvjMI);
-      CurrentPacketMIs.push_back(MI);
-      CurrentPacketMIs.push_back(nvjMI);
-    } else {
-      if (   QII->isExtended(MI)
-          && (   !tryAllocateResourcesForConstExt(MI)
-              || !ResourceTracker->canReserveResources(MI)))
-      {
-        endPacket(MBB, MI);
-        // Check if the instruction was promoted to a dot-new. If so, demo=
te it
-        // back into a dot-old
-        if (PromotedToDotNew) {
-          DemoteToDotOld(MI);
-        }
-        reserveResourcesForConstExt(MI);
-      }
-      // In case that "MI" is not an extended insn,
-      // the resource availability has already been checked.
-      ResourceTracker->reserveResources(MI);
-      CurrentPacketMIs.push_back(MI);
-    }
-    return MII;
-}
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//                         Public Constructor Functions
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-FunctionPass *llvm::createHexagonPacketizer() {
-  return new HexagonPacketizer();
-}
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/I=
nstPrinter/HexagonInstPrinter.cpp
--- a/head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.c=
pp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.c=
pp	Wed Jul 25 16:21:35 2012 +0300
@@ -15,7 +15,6 @@
 #include "Hexagon.h"
 #include "HexagonAsmPrinter.h"
 #include "HexagonInstPrinter.h"
-#include "HexagonMCInst.h"
 #include "llvm/MC/MCInst.h"
 #include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCExpr.h"
@@ -38,50 +37,20 @@
=20
 void HexagonInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
                                    StringRef Annot) {
-  printInst((const HexagonMCInst*)(MI), O, Annot);
-}
-
-void HexagonInstPrinter::printInst(const HexagonMCInst *MI, raw_ostream &O,
-                                   StringRef Annot) {
   const char packetPadding[] =3D "      ";
   const char startPacket =3D '{',
              endPacket =3D '}';
   // TODO: add outer HW loop when it's supported too.
   if (MI->getOpcode() =3D=3D Hexagon::ENDLOOP0) {
-    // Ending a harware loop is different from ending an regular packet.
-    assert(MI->isEndPacket() && "Loop end must also end the packet");
+    MCInst Nop;
=20
-    if (MI->isStartPacket()) {
-      // There must be a packet to end a loop.
-      // FIXME: when shuffling is always run, this shouldn't be needed.
-      HexagonMCInst Nop;
-      StringRef NoAnnot;
-
-      Nop.setOpcode (Hexagon::NOP);
-      Nop.setStartPacket (MI->isStartPacket());
-      printInst (&Nop, O, NoAnnot);
-    }
-
-    // Close the packet.
-    if (MI->isEndPacket())
-      O << packetPadding << endPacket;
-
-    printInstruction(MI, O);
-  }
-  else {
-    // Prefix the insn opening the packet.
-    if (MI->isStartPacket())
-      O << packetPadding << startPacket << '\n';
-
-    printInstruction(MI, O);
-
-    // Suffix the insn closing the packet.
-    if (MI->isEndPacket())
-      // Suffix the packet in a new line always, since the GNU assembler h=
as
-      // issues with a closing brace on the same line as CONST{32,64}.
-      O << '\n' << packetPadding << endPacket;
+    O << packetPadding << startPacket << '\n';
+    Nop.setOpcode(Hexagon::NOP);
+    printInstruction(&Nop, O);
+    O << packetPadding << endPacket;
   }
=20
+  printInstruction(MI, O);
   printAnnotation(O, Annot);
 }
=20
@@ -100,18 +69,18 @@
   }
 }
=20
-void HexagonInstPrinter::printImmOperand(const MCInst *MI, unsigned OpNo,
-                                         raw_ostream &O) const {
+void HexagonInstPrinter::printImmOperand
+  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {
   O << MI->getOperand(OpNo).getImm();
 }
=20
 void HexagonInstPrinter::printExtOperand(const MCInst *MI, unsigned OpNo,
-                                         raw_ostream &O) const {
+                                                raw_ostream &O) const {
   O << MI->getOperand(OpNo).getImm();
 }
=20
-void HexagonInstPrinter::printUnsignedImmOperand(const MCInst *MI, unsigne=
d OpNo,
-                                                 raw_ostream &O) const {
+void HexagonInstPrinter::printUnsignedImmOperand
+  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {
   O << MI->getOperand(OpNo).getImm();
 }
=20
@@ -120,13 +89,13 @@
   O << -MI->getOperand(OpNo).getImm();
 }
=20
-void HexagonInstPrinter::printNOneImmOperand(const MCInst *MI, unsigned Op=
No,
-                                             raw_ostream &O) const {
+void HexagonInstPrinter::printNOneImmOperand
+  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {
   O << -1;
 }
=20
-void HexagonInstPrinter::printMEMriOperand(const MCInst *MI, unsigned OpNo,
-                                           raw_ostream &O) const {
+void HexagonInstPrinter::printMEMriOperand
+  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {
   const MCOperand& MO0 =3D MI->getOperand(OpNo);
   const MCOperand& MO1 =3D MI->getOperand(OpNo + 1);
=20
@@ -134,8 +103,8 @@
   O << " + #" << MO1.getImm();
 }
=20
-void HexagonInstPrinter::printFrameIndexOperand(const MCInst *MI, unsigned=
 OpNo,
-                                                raw_ostream &O) const {
+void HexagonInstPrinter::printFrameIndexOperand
+  (const MCInst *MI, unsigned OpNo, raw_ostream &O) const {
   const MCOperand& MO0 =3D MI->getOperand(OpNo);
   const MCOperand& MO1 =3D MI->getOperand(OpNo + 1);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/I=
nstPrinter/HexagonInstPrinter.h
--- a/head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.h=
	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.h=
	Wed Jul 25 16:21:35 2012 +0300
@@ -14,7 +14,6 @@
 #ifndef HEXAGONINSTPRINTER_H
 #define HEXAGONINSTPRINTER_H
=20
-#include "HexagonMCInst.h"
 #include "llvm/MC/MCInstPrinter.h"
=20
 namespace llvm {
@@ -26,7 +25,6 @@
       : MCInstPrinter(MAI, MII, MRI) {}
=20
     virtual void printInst(const MCInst *MI, raw_ostream &O, StringRef Ann=
ot);
-    void printInst(const HexagonMCInst *MI, raw_ostream &O, StringRef Anno=
t);
     virtual StringRef getOpcodeName(unsigned Opcode) const;
     void printInstruction(const MCInst *MI, raw_ostream &O);
     StringRef getRegName(unsigned RegNo) const;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Hexagon/M=
CTargetDesc/HexagonBaseInfo.h
--- a/head/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -23,41 +23,14 @@
 /// instruction info tracks.
 ///
 namespace HexagonII {
+
   // *** The code below must match HexagonInstrFormat*.td *** //
=20
-  // Insn types.
-  // *** Must match HexagonInstrFormat*.td ***
-  enum Type {
-    TypePSEUDO =3D 0,
-    TypeALU32  =3D 1,
-    TypeCR     =3D 2,
-    TypeJR     =3D 3,
-    TypeJ      =3D 4,
-    TypeLD     =3D 5,
-    TypeST     =3D 6,
-    TypeSYSTEM =3D 7,
-    TypeXTYPE  =3D 8,
-    TypeMEMOP  =3D 9,
-    TypeNV     =3D 10,
-    TypePREFIX =3D 30, // Such as extenders.
-    TypeMARKER =3D 31  // Such as end of a HW loop.
-  };
-
-
-
   // MCInstrDesc TSFlags
-  // *** Must match HexagonInstrFormat*.td ***
   enum {
-    // This 5-bit field describes the insn type.
-    TypePos  =3D 0,
-    TypeMask =3D 0x1f,
-
-    // Solo instructions.
-    SoloPos  =3D 5,
-    SoloMask =3D 0x1,
=20
     // Predicated instructions.
-    PredicatedPos  =3D 6,
+    PredicatedPos  =3D 1,
     PredicatedMask =3D 0x1
   };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/MBlaze/MB=
lazeCallingConv.td
--- a/head/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -9,10 +9,6 @@
 // This describes the calling conventions for MBlaze architecture.
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-/// CCIfSubtarget - Match if the current subtarget has a feature F.
-class CCIfSubtarget<string F, CCAction A>:
-  CCIf<!strconcat("State.getTarget().getSubtarget<MBlazeSubtarget>().", F)=
, A>;
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // MBlaze ABI Calling Convention
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/MBlaze/MB=
lazeTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -68,7 +68,7 @@
 // Install an instruction selector pass using
 // the ISelDag to gen MBlaze code.
 bool MBlazePassConfig::addInstSelector() {
-  PM.add(createMBlazeISelDag(getMBlazeTargetMachine()));
+  PM->add(createMBlazeISelDag(getMBlazeTargetMachine()));
   return false;
 }
=20
@@ -76,6 +76,6 @@
 // machine code is emitted. return true if -print-machineinstrs should
 // print out the code after the passes.
 bool MBlazePassConfig::addPreEmitPass() {
-  PM.add(createMBlazeDelaySlotFillerPass(getMBlazeTargetMachine()));
+  PM->add(createMBlazeDelaySlotFillerPass(getMBlazeTargetMachine()));
   return true;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/MSP430/MS=
P430TargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -60,12 +60,12 @@
=20
 bool MSP430PassConfig::addInstSelector() {
   // Install an instruction selector.
-  PM.add(createMSP430ISelDag(getMSP430TargetMachine(), getOptLevel()));
+  PM->add(createMSP430ISelDag(getMSP430TargetMachine(), getOptLevel()));
   return false;
 }
=20
 bool MSP430PassConfig::addPreEmitPass() {
   // Must run branch selection immediately preceding the asm printer.
-  PM.add(createMSP430BranchSelectionPass());
+  PM->add(createMSP430BranchSelectionPass());
   return false;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Disa=
ssembler/MipsDisassembler.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp	W=
ed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,552 @@
+//=3D=3D=3D- MipsDisassembler.cpp - Disassembler for Mips -------------*- =
C++ -*-=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+//
+// This file is part of the Mips Disassembler.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#include "Mips.h"
+#include "MipsSubtarget.h"
+#include "llvm/MC/EDInstInfo.h"
+#include "llvm/MC/MCDisassembler.h"
+#include "llvm/Support/MemoryObject.h"
+#include "llvm/Support/TargetRegistry.h"
+#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/MC/MCInst.h"
+#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/Support/MathExtras.h"
+
+
+#include "MipsGenEDInfo.inc"
+
+using namespace llvm;
+
+typedef MCDisassembler::DecodeStatus DecodeStatus;
+
+/// MipsDisassembler - a disasembler class for Mips32.
+class MipsDisassembler : public MCDisassembler {
+public:
+  /// Constructor     - Initializes the disassembler.
+  ///
+  MipsDisassembler(const MCSubtargetInfo &STI, bool bigEndian) :
+    MCDisassembler(STI), isBigEndian(bigEndian) {
+  }
+
+  ~MipsDisassembler() {
+  }
+
+  /// getInstruction - See MCDisassembler.
+  DecodeStatus getInstruction(MCInst &instr,
+                              uint64_t &size,
+                              const MemoryObject &region,
+                              uint64_t address,
+                              raw_ostream &vStream,
+                              raw_ostream &cStream) const;
+
+  /// getEDInfo - See MCDisassembler.
+  const EDInstInfo *getEDInfo() const;
+
+private:
+  bool isBigEndian;
+};
+
+
+/// Mips64Disassembler - a disasembler class for Mips64.
+class Mips64Disassembler : public MCDisassembler {
+public:
+  /// Constructor     - Initializes the disassembler.
+  ///
+  Mips64Disassembler(const MCSubtargetInfo &STI, bool bigEndian) :
+    MCDisassembler(STI), isBigEndian(bigEndian) {
+  }
+
+  ~Mips64Disassembler() {
+  }
+
+  /// getInstruction - See MCDisassembler.
+  DecodeStatus getInstruction(MCInst &instr,
+                              uint64_t &size,
+                              const MemoryObject &region,
+                              uint64_t address,
+                              raw_ostream &vStream,
+                              raw_ostream &cStream) const;
+
+  /// getEDInfo - See MCDisassembler.
+  const EDInstInfo *getEDInfo() const;
+
+private:
+  bool isBigEndian;
+};
+
+const EDInstInfo *MipsDisassembler::getEDInfo() const {
+  return instInfoMips;
+}
+
+const EDInstInfo *Mips64Disassembler::getEDInfo() const {
+  return instInfoMips;
+}
+
+// Decoder tables for Mips register
+static const unsigned CPURegsTable[] =3D {
+  Mips::ZERO, Mips::AT, Mips::V0, Mips::V1,
+  Mips::A0, Mips::A1, Mips::A2, Mips::A3,
+  Mips::T0, Mips::T1, Mips::T2, Mips::T3,
+  Mips::T4, Mips::T5, Mips::T6, Mips::T7,
+  Mips::S0, Mips::S1, Mips::S2, Mips::S3,
+  Mips::S4, Mips::S5, Mips::S6, Mips::S7,
+  Mips::T8, Mips::T9, Mips::K0, Mips::K1,
+  Mips::GP, Mips::SP, Mips::FP, Mips::RA
+};
+
+static const unsigned FGR32RegsTable[] =3D {
+  Mips::F0, Mips::F1, Mips::F2, Mips::F3,
+  Mips::F4, Mips::F5, Mips::F6, Mips::F7,
+  Mips::F8, Mips::F9, Mips::F10, Mips::F11,
+  Mips::F12, Mips::F13, Mips::F14, Mips::F15,
+  Mips::F16, Mips::F17, Mips::F18, Mips::F18,
+  Mips::F20, Mips::F21, Mips::F22, Mips::F23,
+  Mips::F24, Mips::F25, Mips::F26, Mips::F27,
+  Mips::F28, Mips::F29, Mips::F30, Mips::F31
+};
+
+static const unsigned CPU64RegsTable[] =3D {
+  Mips::ZERO_64, Mips::AT_64, Mips::V0_64, Mips::V1_64,
+  Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64,
+  Mips::T0_64, Mips::T1_64, Mips::T2_64, Mips::T3_64,
+  Mips::T4_64, Mips::T5_64, Mips::T6_64, Mips::T7_64,
+  Mips::S0_64, Mips::S1_64, Mips::S2_64, Mips::S3_64,
+  Mips::S4_64, Mips::S5_64, Mips::S6_64, Mips::S7_64,
+  Mips::T8_64, Mips::T9_64, Mips::K0_64, Mips::K1_64,
+  Mips::GP_64, Mips::SP_64, Mips::FP_64, Mips::RA_64
+};
+
+static const unsigned FGR64RegsTable[] =3D {
+  Mips::D0_64,  Mips::D1_64,  Mips::D2_64,  Mips::D3_64,
+  Mips::D4_64,  Mips::D5_64,  Mips::D6_64,  Mips::D7_64,
+  Mips::D8_64,  Mips::D9_64,  Mips::D10_64, Mips::D11_64,
+  Mips::D12_64, Mips::D13_64, Mips::D14_64, Mips::D15_64,
+  Mips::D16_64, Mips::D17_64, Mips::D18_64, Mips::D19_64,
+  Mips::D20_64, Mips::D21_64, Mips::D22_64, Mips::D23_64,
+  Mips::D24_64, Mips::D25_64, Mips::D26_64, Mips::D27_64,
+  Mips::D28_64, Mips::D29_64, Mips::D30_64, Mips::D31_64
+};
+
+static const unsigned AFGR64RegsTable[] =3D {
+  Mips::D0,  Mips::D1,  Mips::D2,  Mips::D3,
+  Mips::D4,  Mips::D5,  Mips::D6,  Mips::D7,
+  Mips::D8,  Mips::D9,  Mips::D10, Mips::D11,
+  Mips::D12, Mips::D13, Mips::D14, Mips::D15
+};
+
+// Forward declare these because the autogenerated code will reference the=
m.
+// Definitions are further down.
+static DecodeStatus DecodeCPU64RegsRegisterClass(MCInst &Inst,
+                                                 unsigned RegNo,
+                                                 uint64_t Address,
+                                                 const void *Decoder);
+
+static DecodeStatus DecodeCPURegsRegisterClass(MCInst &Inst,
+                                               unsigned RegNo,
+                                               uint64_t Address,
+                                               const void *Decoder);
+
+static DecodeStatus DecodeFGR64RegisterClass(MCInst &Inst,
+                                             unsigned RegNo,
+                                             uint64_t Address,
+                                             const void *Decoder);
+
+static DecodeStatus DecodeFGR32RegisterClass(MCInst &Inst,
+                                             unsigned RegNo,
+                                             uint64_t Address,
+                                             const void *Decoder);
+
+static DecodeStatus DecodeCCRRegisterClass(MCInst &Inst,
+                                           unsigned RegNo,
+                                           uint64_t Address,
+                                           const void *Decoder);
+
+static DecodeStatus DecodeHWRegsRegisterClass(MCInst &Inst,
+                                              unsigned Insn,
+                                              uint64_t Address,
+                                              const void *Decoder);
+
+static DecodeStatus DecodeAFGR64RegisterClass(MCInst &Inst,
+                                              unsigned RegNo,
+                                              uint64_t Address,
+                                              const void *Decoder);
+
+static DecodeStatus DecodeHWRegs64RegisterClass(MCInst &Inst,
+                                                unsigned Insn,
+                                                uint64_t Address,
+                                                const void *Decoder);
+
+static DecodeStatus DecodeBranchTarget(MCInst &Inst,
+                                       unsigned Offset,
+                                       uint64_t Address,
+                                       const void *Decoder);
+
+static DecodeStatus DecodeBC1(MCInst &Inst,
+                              unsigned Insn,
+                              uint64_t Address,
+                              const void *Decoder);
+
+
+static DecodeStatus DecodeJumpTarget(MCInst &Inst,
+                                     unsigned Insn,
+                                     uint64_t Address,
+                                     const void *Decoder);
+
+static DecodeStatus DecodeMem(MCInst &Inst,
+                              unsigned Insn,
+                              uint64_t Address,
+                              const void *Decoder);
+
+static DecodeStatus DecodeFMem(MCInst &Inst, unsigned Insn,
+                               uint64_t Address,
+                               const void *Decoder);
+
+static DecodeStatus DecodeSimm16(MCInst &Inst,
+                                 unsigned Insn,
+                                 uint64_t Address,
+                                 const void *Decoder);
+
+static DecodeStatus DecodeCondCode(MCInst &Inst,
+                                   unsigned Insn,
+                                   uint64_t Address,
+                                   const void *Decoder);
+
+static DecodeStatus DecodeInsSize(MCInst &Inst,
+                                  unsigned Insn,
+                                  uint64_t Address,
+                                  const void *Decoder);
+
+static DecodeStatus DecodeExtSize(MCInst &Inst,
+                                  unsigned Insn,
+                                  uint64_t Address,
+                                  const void *Decoder);
+
+namespace llvm {
+extern Target TheMipselTarget, TheMipsTarget, TheMips64Target,
+              TheMips64elTarget;
+}
+
+static MCDisassembler *createMipsDisassembler(
+                       const Target &T,
+                       const MCSubtargetInfo &STI) {
+  return new MipsDisassembler(STI,true);
+}
+
+static MCDisassembler *createMipselDisassembler(
+                       const Target &T,
+                       const MCSubtargetInfo &STI) {
+  return new MipsDisassembler(STI,false);
+}
+
+static MCDisassembler *createMips64Disassembler(
+                       const Target &T,
+                       const MCSubtargetInfo &STI) {
+  return new Mips64Disassembler(STI,true);
+}
+
+static MCDisassembler *createMips64elDisassembler(
+                       const Target &T,
+                       const MCSubtargetInfo &STI) {
+  return new Mips64Disassembler(STI, false);
+}
+
+extern "C" void LLVMInitializeMipsDisassembler() {
+  // Register the disassembler.
+  TargetRegistry::RegisterMCDisassembler(TheMipsTarget,
+                                         createMipsDisassembler);
+  TargetRegistry::RegisterMCDisassembler(TheMipselTarget,
+                                         createMipselDisassembler);
+  TargetRegistry::RegisterMCDisassembler(TheMips64Target,
+                                         createMips64Disassembler);
+  TargetRegistry::RegisterMCDisassembler(TheMips64elTarget,
+                                         createMips64elDisassembler);
+}
+
+
+#include "MipsGenDisassemblerTables.inc"
+
+  /// readInstruction - read four bytes from the MemoryObject
+  /// and return 32 bit word sorted according to the given endianess
+static DecodeStatus readInstruction32(const MemoryObject &region,
+                                      uint64_t address,
+                                      uint64_t &size,
+                                      uint32_t &insn,
+                                      bool isBigEndian) {
+  uint8_t Bytes[4];
+
+  // We want to read exactly 4 Bytes of data.
+  if (region.readBytes(address, 4, (uint8_t*)Bytes, NULL) =3D=3D -1) {
+    size =3D 0;
+    return MCDisassembler::Fail;
+  }
+
+  if (isBigEndian) {
+    // Encoded as a big-endian 32-bit word in the stream.
+    insn =3D (Bytes[3] <<  0) |
+           (Bytes[2] <<  8) |
+           (Bytes[1] << 16) |
+           (Bytes[0] << 24);
+  }
+  else {
+    // Encoded as a small-endian 32-bit word in the stream.
+    insn =3D (Bytes[0] <<  0) |
+           (Bytes[1] <<  8) |
+           (Bytes[2] << 16) |
+           (Bytes[3] << 24);
+  }
+
+  return MCDisassembler::Success;
+}
+
+DecodeStatus
+MipsDisassembler::getInstruction(MCInst &instr,
+                                 uint64_t &Size,
+                                 const MemoryObject &Region,
+                                 uint64_t Address,
+                                 raw_ostream &vStream,
+                                 raw_ostream &cStream) const {
+  uint32_t Insn;
+
+  DecodeStatus Result =3D readInstruction32(Region, Address, Size,
+                                          Insn, isBigEndian);
+  if (Result =3D=3D MCDisassembler::Fail)
+    return MCDisassembler::Fail;
+
+  // Calling the auto-generated decoder function.
+  Result =3D decodeMipsInstruction32(instr, Insn, Address, this, STI);
+  if (Result !=3D MCDisassembler::Fail) {
+    Size =3D 4;
+    return Result;
+  }
+
+  return MCDisassembler::Fail;
+}
+
+DecodeStatus
+Mips64Disassembler::getInstruction(MCInst &instr,
+                                   uint64_t &Size,
+                                   const MemoryObject &Region,
+                                   uint64_t Address,
+                                   raw_ostream &vStream,
+                                   raw_ostream &cStream) const {
+  uint32_t Insn;
+
+  DecodeStatus Result =3D readInstruction32(Region, Address, Size,
+                                          Insn, isBigEndian);
+  if (Result =3D=3D MCDisassembler::Fail)
+    return MCDisassembler::Fail;
+
+  // Calling the auto-generated decoder function.
+  Result =3D decodeMips64Instruction32(instr, Insn, Address, this, STI);
+  if (Result !=3D MCDisassembler::Fail) {
+    Size =3D 4;
+    return Result;
+  }
+  // If we fail to decode in Mips64 decoder space we can try in Mips32
+  Result =3D decodeMipsInstruction32(instr, Insn, Address, this, STI);
+  if (Result !=3D MCDisassembler::Fail) {
+    Size =3D 4;
+    return Result;
+  }
+
+  return MCDisassembler::Fail;
+}
+
+static DecodeStatus DecodeCPU64RegsRegisterClass(MCInst &Inst,
+                                                 unsigned RegNo,
+                                                 uint64_t Address,
+                                                 const void *Decoder) {
+
+  if (RegNo > 31)
+    return MCDisassembler::Fail;
+
+  Inst.addOperand(MCOperand::CreateReg(CPU64RegsTable[RegNo]));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeCPURegsRegisterClass(MCInst &Inst,
+                                               unsigned RegNo,
+                                               uint64_t Address,
+                                               const void *Decoder) {
+  if (RegNo > 31)
+    return MCDisassembler::Fail;
+
+  Inst.addOperand(MCOperand::CreateReg(CPURegsTable[RegNo]));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeFGR64RegisterClass(MCInst &Inst,
+                                             unsigned RegNo,
+                                             uint64_t Address,
+                                             const void *Decoder) {
+  if (RegNo > 31)
+    return MCDisassembler::Fail;
+
+  Inst.addOperand(MCOperand::CreateReg(FGR64RegsTable[RegNo]));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeFGR32RegisterClass(MCInst &Inst,
+                                             unsigned RegNo,
+                                             uint64_t Address,
+                                             const void *Decoder) {
+  if (RegNo > 31)
+    return MCDisassembler::Fail;
+
+  Inst.addOperand(MCOperand::CreateReg(FGR32RegsTable[RegNo]));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeCCRRegisterClass(MCInst &Inst,
+                                           unsigned RegNo,
+                                           uint64_t Address,
+                                           const void *Decoder) {
+  Inst.addOperand(MCOperand::CreateReg(RegNo));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeMem(MCInst &Inst,
+                              unsigned Insn,
+                              uint64_t Address,
+                              const void *Decoder) {
+  int Offset =3D SignExtend32<16>(Insn & 0xffff);
+  int Reg =3D (int)fieldFromInstruction32(Insn, 16, 5);
+  int Base =3D (int)fieldFromInstruction32(Insn, 21, 5);
+
+  if(Inst.getOpcode() =3D=3D Mips::SC){
+    Inst.addOperand(MCOperand::CreateReg(CPURegsTable[Reg]));
+  }
+
+  Inst.addOperand(MCOperand::CreateReg(CPURegsTable[Reg]));
+  Inst.addOperand(MCOperand::CreateReg(CPURegsTable[Base]));
+  Inst.addOperand(MCOperand::CreateImm(Offset));
+
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeFMem(MCInst &Inst,
+                               unsigned Insn,
+                               uint64_t Address,
+                               const void *Decoder) {
+  int Offset =3D SignExtend32<16>(Insn & 0xffff);
+  int Reg =3D (int)fieldFromInstruction32(Insn, 16, 5);
+  int Base =3D (int)fieldFromInstruction32(Insn, 21, 5);
+
+  Inst.addOperand(MCOperand::CreateReg(FGR64RegsTable[Reg]));
+  Inst.addOperand(MCOperand::CreateReg(CPURegsTable[Base]));
+  Inst.addOperand(MCOperand::CreateImm(Offset));
+
+  return MCDisassembler::Success;
+}
+
+
+static DecodeStatus DecodeHWRegsRegisterClass(MCInst &Inst,
+                                              unsigned RegNo,
+                                              uint64_t Address,
+                                              const void *Decoder) {
+  // Currently only hardware register 29 is supported.
+  if (RegNo !=3D 29)
+    return  MCDisassembler::Fail;
+  Inst.addOperand(MCOperand::CreateReg(Mips::HWR29));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeCondCode(MCInst &Inst,
+                                   unsigned Insn,
+                                   uint64_t Address,
+                                   const void *Decoder) {
+  int CondCode =3D Insn & 0xf;
+  Inst.addOperand(MCOperand::CreateImm(CondCode));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeAFGR64RegisterClass(MCInst &Inst,
+                                              unsigned RegNo,
+                                              uint64_t Address,
+                                              const void *Decoder) {
+  if (RegNo > 31)
+    return MCDisassembler::Fail;
+
+  Inst.addOperand(MCOperand::CreateReg(AFGR64RegsTable[RegNo]));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeHWRegs64RegisterClass(MCInst &Inst,
+                                                unsigned RegNo,
+                                                uint64_t Address,
+                                                const void *Decoder) {
+  //Currently only hardware register 29 is supported
+  if (RegNo !=3D 29)
+    return  MCDisassembler::Fail;
+  Inst.addOperand(MCOperand::CreateReg(Mips::HWR29));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeBranchTarget(MCInst &Inst,
+                                       unsigned Offset,
+                                       uint64_t Address,
+                                       const void *Decoder) {
+  unsigned BranchOffset =3D Offset & 0xffff;
+  BranchOffset =3D SignExtend32<18>(BranchOffset << 2) + 4;
+  Inst.addOperand(MCOperand::CreateImm(BranchOffset));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeBC1(MCInst &Inst,
+                              unsigned Insn,
+                              uint64_t Address,
+                              const void *Decoder) {
+  unsigned BranchOffset =3D Insn & 0xffff;
+  BranchOffset =3D SignExtend32<18>(BranchOffset << 2) + 4;
+  Inst.addOperand(MCOperand::CreateImm(BranchOffset));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeJumpTarget(MCInst &Inst,
+                                     unsigned Insn,
+                                     uint64_t Address,
+                                     const void *Decoder) {
+
+  unsigned JumpOffset =3D fieldFromInstruction32(Insn, 0, 26) << 2;
+  Inst.addOperand(MCOperand::CreateImm(JumpOffset));
+  return MCDisassembler::Success;
+}
+
+
+static DecodeStatus DecodeSimm16(MCInst &Inst,
+                                 unsigned Insn,
+                                 uint64_t Address,
+                                 const void *Decoder) {
+  Inst.addOperand(MCOperand::CreateImm(SignExtend32<16>(Insn)));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeInsSize(MCInst &Inst,
+                                  unsigned Insn,
+                                  uint64_t Address,
+                                  const void *Decoder) {
+  // First we need to grab the pos(lsb) from MCInst.
+  int Pos =3D Inst.getOperand(2).getImm();
+  int Size =3D (int) Insn - Pos + 1;
+  Inst.addOperand(MCOperand::CreateImm(SignExtend32<16>(Size)));
+  return MCDisassembler::Success;
+}
+
+static DecodeStatus DecodeExtSize(MCInst &Inst,
+                                  unsigned Insn,
+                                  uint64_t Address,
+                                  const void *Decoder) {
+  int Size =3D (int) Insn  + 1;
+  Inst.addOperand(MCOperand::CreateImm(SignExtend32<16>(Size)));
+  return MCDisassembler::Success;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/MCTa=
rgetDesc/MipsAsmBackend.cpp
--- a/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -12,7 +12,6 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 //
=20
-#include "MipsBaseInfo.h"
 #include "MipsFixupKinds.h"
 #include "MCTargetDesc/MipsMCTargetDesc.h"
 #include "llvm/MC/MCAsmBackend.h"
@@ -85,9 +84,8 @@
                   uint64_t Value) const {
     MCFixupKind Kind =3D Fixup.getKind();
     Value =3D adjustFixupValue((unsigned)Kind, Value);
-    int64_t SymOffset =3D MipsGetSymAndOffset(Fixup).second;
=20
-    if (!Value && !SymOffset)
+    if (!Value)
       return; // Doesn't change encoding.
=20
     // Where do we start in the object
@@ -118,7 +116,7 @@
     }
=20
     uint64_t Mask =3D ((uint64_t)(-1) >> (64 - getFixupKindInfo(Kind).Targ=
etSize));
-    CurVal |=3D (Value + SymOffset) & Mask;
+    CurVal |=3D Value & Mask;
=20
     // Write out the fixed up bytes back to the code/data bits.
     for (unsigned i =3D 0; i !=3D NumBytes; ++i) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/MCTa=
rgetDesc/MipsMCCodeEmitter.cpp
--- a/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp	=
Wed Jul 25 16:21:35 2012 +0300
@@ -194,7 +194,7 @@
=20
   assert (Kind =3D=3D MCExpr::SymbolRef);
    =20
-  Mips::Fixups FixupKind;
+  Mips::Fixups FixupKind =3D Mips::Fixups(0);
=20
   switch(cast<MCSymbolRefExpr>(Expr)->getKind()) {
   case MCSymbolRefExpr::VK_Mips_GPREL:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/MCTa=
rgetDesc/MipsMCTargetDesc.cpp
--- a/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp	W=
ed Jul 25 16:21:35 2012 +0300
@@ -34,6 +34,38 @@
=20
 using namespace llvm;
=20
+static std::string ParseMipsTriple(StringRef TT, StringRef CPU) {
+  std::string MipsArchFeature;
+  size_t DashPosition =3D 0;
+  StringRef TheTriple;
+
+  // Let's see if there is a dash, like mips-unknown-linux.
+  DashPosition =3D TT.find('-');
+
+  if (DashPosition =3D=3D StringRef::npos) {
+    // No dash, we check the string size.
+    TheTriple =3D TT.substr(0);
+  } else {
+    // We are only interested in substring before dash.
+    TheTriple =3D TT.substr(0,DashPosition);
+  }
+
+  if (TheTriple =3D=3D "mips" || TheTriple =3D=3D "mipsel") {
+    if (CPU.empty() || CPU =3D=3D "mips32") {
+      MipsArchFeature =3D "+mips32";
+    } else if (CPU =3D=3D "mips32r2") {
+      MipsArchFeature =3D "+mips32r2";
+    }
+  } else {
+      if (CPU.empty() || CPU =3D=3D "mips64") {
+        MipsArchFeature =3D "+mips64";
+      } else if (CPU =3D=3D "mips64r2") {
+        MipsArchFeature =3D "+mips64r2";
+      }
+  }
+  return MipsArchFeature;
+}
+
 static MCInstrInfo *createMipsMCInstrInfo() {
   MCInstrInfo *X =3D new MCInstrInfo();
   InitMipsMCInstrInfo(X);
@@ -48,8 +80,15 @@
=20
 static MCSubtargetInfo *createMipsMCSubtargetInfo(StringRef TT, StringRef =
CPU,
                                                   StringRef FS) {
+  std::string ArchFS =3D ParseMipsTriple(TT,CPU);
+  if (!FS.empty()) {
+    if (!ArchFS.empty())
+      ArchFS =3D ArchFS + "," + FS.str();
+    else
+      ArchFS =3D FS;
+  }
   MCSubtargetInfo *X =3D new MCSubtargetInfo();
-  InitMipsMCSubtargetInfo(X, TT, CPU, FS);
+  InitMipsMCSubtargetInfo(X, TT, CPU, ArchFS);
   return X;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
64InstrInfo.td
--- a/head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td	Wed Jul 25 16:21=
:35 2012 +0300
@@ -36,6 +36,7 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Shifts
 // 64-bit shift instructions.
+let DecoderNamespace =3D "Mips64" in {
 class shift_rotate_imm64<bits<6> func, bits<5> isRotate, string instr_asm,
                          SDNode OpNode>:
   shift_rotate_imm<func, isRotate, instr_asm, OpNode, immZExt6, shamt,
@@ -49,16 +50,21 @@
=20
 multiclass Atomic2Ops64<PatFrag Op, string Opstr> {
   def #NAME# : Atomic2Ops<Op, Opstr, CPU64Regs, CPURegs>, Requires<[NotN64=
]>;
-  def _P8    : Atomic2Ops<Op, Opstr, CPU64Regs, CPU64Regs>, Requires<[IsN6=
4]>;
+  def _P8    : Atomic2Ops<Op, Opstr, CPU64Regs, CPU64Regs>, Requires<[IsN6=
4]> {
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 multiclass AtomicCmpSwap64<PatFrag Op, string Width>  {
   def #NAME# : AtomicCmpSwap<Op, Width, CPU64Regs, CPURegs>, Requires<[Not=
N64]>;
   def _P8    : AtomicCmpSwap<Op, Width, CPU64Regs, CPU64Regs>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let isCodeGenOnly =3D 1;
+  }
 }
-
-let usesCustomInserter =3D 1, Predicates =3D [HasMips64] in {
+}
+let usesCustomInserter =3D 1, Predicates =3D [HasMips64],
+  DecoderNamespace =3D "Mips64" in {
   defm ATOMIC_LOAD_ADD_I64  : Atomic2Ops64<atomic_load_add_64, "load_add_6=
4">;
   defm ATOMIC_LOAD_SUB_I64  : Atomic2Ops64<atomic_load_sub_64, "load_sub_6=
4">;
   defm ATOMIC_LOAD_AND_I64  : Atomic2Ops64<atomic_load_and_64, "load_and_6=
4">;
@@ -72,7 +78,7 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Instruction definition
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
+let DecoderNamespace =3D "Mips64" in {
 /// Arithmetic Instructions (ALU Immediate)
 def DADDiu   : ArithLogicI<0x19, "daddiu", add, simm16_64, immSExt16,
                            CPU64Regs>;
@@ -97,16 +103,17 @@
 def DSLL     : shift_rotate_imm64<0x38, 0x00, "dsll", shl>;
 def DSRL     : shift_rotate_imm64<0x3a, 0x00, "dsrl", srl>;
 def DSRA     : shift_rotate_imm64<0x3b, 0x00, "dsra", sra>;
-def DSLLV    : shift_rotate_reg<0x24, 0x00, "dsllv", shl, CPU64Regs>;
-def DSRLV    : shift_rotate_reg<0x26, 0x00, "dsrlv", srl, CPU64Regs>;
-def DSRAV    : shift_rotate_reg<0x27, 0x00, "dsrav", sra, CPU64Regs>;
-
+def DSLLV    : shift_rotate_reg<0x14, 0x00, "dsllv", shl, CPU64Regs>;
+def DSRLV    : shift_rotate_reg<0x16, 0x00, "dsrlv", srl, CPU64Regs>;
+def DSRAV    : shift_rotate_reg<0x17, 0x00, "dsrav", sra, CPU64Regs>;
+}
 // Rotate Instructions
-let Predicates =3D [HasMips64r2] in {
+let Predicates =3D [HasMips64r2], DecoderNamespace =3D "Mips64" in {
   def DROTR    : shift_rotate_imm64<0x3a, 0x01, "drotr", rotr>;
   def DROTRV   : shift_rotate_reg<0x16, 0x01, "drotrv", rotr, CPU64Regs>;
 }
=20
+let DecoderNamespace =3D "Mips64" in {
 /// Load and Store Instructions
 ///  aligned
 defm LB64    : LoadM64<0x20, "lb",  sextloadi8>;
@@ -132,9 +139,13 @@
=20
 /// Load-linked, Store-conditional
 def LLD    : LLBase<0x34, "lld", CPU64Regs, mem>, Requires<[NotN64]>;
-def LLD_P8 : LLBase<0x34, "lld", CPU64Regs, mem64>, Requires<[IsN64]>;
+def LLD_P8 : LLBase<0x34, "lld", CPU64Regs, mem64>, Requires<[IsN64]> {
+  let isCodeGenOnly =3D 1;
+}
 def SCD    : SCBase<0x3c, "scd", CPU64Regs, mem>, Requires<[NotN64]>;
-def SCD_P8 : SCBase<0x3c, "scd", CPU64Regs, mem64>, Requires<[IsN64]>;
+def SCD_P8 : SCBase<0x3c, "scd", CPU64Regs, mem64>, Requires<[IsN64]> {
+  let isCodeGenOnly =3D 1;
+}
=20
 /// Jump and Branch Instructions
 def JR64   : JumpFR<0x00, 0x08, "jr", CPU64Regs>;
@@ -142,11 +153,13 @@
 def BNE64  : CBranch<0x05, "bne", setne, CPU64Regs>;
 def BGEZ64 : CBranchZero<0x01, 1, "bgez", setge, CPU64Regs>;
 def BGTZ64 : CBranchZero<0x07, 0, "bgtz", setgt, CPU64Regs>;
-def BLEZ64 : CBranchZero<0x07, 0, "blez", setle, CPU64Regs>;
+def BLEZ64 : CBranchZero<0x06, 0, "blez", setle, CPU64Regs>;
 def BLTZ64 : CBranchZero<0x01, 0, "bltz", setlt, CPU64Regs>;
-
+}
+let DecoderNamespace =3D "Mips64" in
 def JALR64 : JumpLinkReg<0x00, 0x09, "jalr", CPU64Regs>;
=20
+let DecoderNamespace =3D "Mips64" in {
 /// Multiply and Divide Instructions.
 def DMULT    : Mult64<0x1c, "dmult", IIImul>;
 def DMULTu   : Mult64<0x1d, "dmultu", IIImul>;
@@ -171,11 +184,13 @@
 def DSHD : SubwordSwap<0x24, 0x5, "dshd", CPU64Regs>;
=20
 def LEA_ADDiu64 : EffectiveAddress<"daddiu\t$rt, $addr", CPU64Regs, mem_ea=
_64>;
-
-let Uses =3D [SP_64] in
+}
+let Uses =3D [SP_64], DecoderNamespace =3D "Mips64" in
 def DynAlloc64 : EffectiveAddress<"daddiu\t$rt, $addr", CPU64Regs, mem_ea_=
64>,
-                 Requires<[IsN64]>;
-
+                 Requires<[IsN64]> {
+  let isCodeGenOnly =3D 1;
+}
+let DecoderNamespace =3D "Mips64" in {
 def RDHWR64 : ReadHardware<CPU64Regs, HWRegs64>;
=20
 def DEXT : ExtBase<3, "dext", CPU64Regs>;
@@ -183,12 +198,12 @@
=20
 def DSLL64_32 : FR<0x3c, 0x00, (outs CPU64Regs:$rd), (ins CPURegs:$rt),
                    "dsll\t$rd, $rt, 32", [], IIAlu>;
-
 def SLL64_32 : FR<0x0, 0x00, (outs CPU64Regs:$rd), (ins CPURegs:$rt),
                   "sll\t$rd, $rt, 0", [], IIAlu>;
+let isCodeGenOnly =3D 1 in
 def SLL64_64 : FR<0x0, 0x00, (outs CPU64Regs:$rd), (ins CPU64Regs:$rt),
                   "sll\t$rd, $rt, 0", [], IIAlu>;
-
+}
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 //  Arbitrary patterns that map to one or more instructions
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
CondMov.td
--- a/head/contrib/llvm/lib/Target/Mips/MipsCondMov.td	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsCondMov.td	Wed Jul 25 16:21:35 =
2012 +0300
@@ -95,45 +95,65 @@
=20
 // Instantiation of instructions.
 def MOVZ_I_I     : CondMovIntInt<CPURegs, CPURegs, 0x0a, "movz">;
-let Predicates =3D [HasMips64] in {
+let Predicates =3D [HasMips64],DecoderNamespace =3D "Mips64" in {
   def MOVZ_I_I64   : CondMovIntInt<CPURegs, CPU64Regs, 0x0a, "movz">;
-  def MOVZ_I64_I   : CondMovIntInt<CPU64Regs, CPURegs, 0x0a, "movz">;
-  def MOVZ_I64_I64 : CondMovIntInt<CPU64Regs, CPU64Regs, 0x0a, "movz">;
+  def MOVZ_I64_I   : CondMovIntInt<CPU64Regs, CPURegs, 0x0a, "movz"> {
+    let isCodeGenOnly =3D 1;
+  }
+  def MOVZ_I64_I64 : CondMovIntInt<CPU64Regs, CPU64Regs, 0x0a, "movz"> {
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 def MOVN_I_I     : CondMovIntInt<CPURegs, CPURegs, 0x0b, "movn">;
-let Predicates =3D [HasMips64] in {
+let Predicates =3D [HasMips64],DecoderNamespace =3D "Mips64" in {
   def MOVN_I_I64   : CondMovIntInt<CPURegs, CPU64Regs, 0x0b, "movn">;
-  def MOVN_I64_I   : CondMovIntInt<CPU64Regs, CPURegs, 0x0b, "movn">;
-  def MOVN_I64_I64 : CondMovIntInt<CPU64Regs, CPU64Regs, 0x0b, "movn">;
+  def MOVN_I64_I   : CondMovIntInt<CPU64Regs, CPURegs, 0x0b, "movn"> {
+    let isCodeGenOnly =3D 1;
+  }
+  def MOVN_I64_I64 : CondMovIntInt<CPU64Regs, CPU64Regs, 0x0b, "movn"> {
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 def MOVZ_I_S   : CondMovIntFP<CPURegs, FGR32, 16, 18, "movz.s">;
 def MOVZ_I64_S : CondMovIntFP<CPU64Regs, FGR32, 16, 18, "movz.s">,
-                 Requires<[HasMips64]>;
+                 Requires<[HasMips64]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 def MOVN_I_S   : CondMovIntFP<CPURegs, FGR32, 16, 19, "movn.s">;
 def MOVN_I64_S : CondMovIntFP<CPU64Regs, FGR32, 16, 19, "movn.s">,
-                 Requires<[HasMips64]>;
+                 Requires<[HasMips64]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 let Predicates =3D [NotFP64bit] in {
   def MOVZ_I_D32   : CondMovIntFP<CPURegs, AFGR64, 17, 18, "movz.d">;
   def MOVN_I_D32   : CondMovIntFP<CPURegs, AFGR64, 17, 19, "movn.d">;
 }
-let Predicates =3D [IsFP64bit] in {
+let Predicates =3D [IsFP64bit],DecoderNamespace =3D "Mips64" in {
   def MOVZ_I_D64   : CondMovIntFP<CPURegs, FGR64, 17, 18, "movz.d">;
-  def MOVZ_I64_D64 : CondMovIntFP<CPU64Regs, FGR64, 17, 18, "movz.d">;
+  def MOVZ_I64_D64 : CondMovIntFP<CPU64Regs, FGR64, 17, 18, "movz.d"> {
+    let isCodeGenOnly =3D 1;
+  }
   def MOVN_I_D64   : CondMovIntFP<CPURegs, FGR64, 17, 19, "movn.d">;
-  def MOVN_I64_D64 : CondMovIntFP<CPU64Regs, FGR64, 17, 19, "movn.d">;
+  def MOVN_I64_D64 : CondMovIntFP<CPU64Regs, FGR64, 17, 19, "movn.d"> {
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 def MOVT_I   : CondMovFPInt<CPURegs, MipsCMovFP_T, 1, "movt">;
 def MOVT_I64 : CondMovFPInt<CPU64Regs, MipsCMovFP_T, 1, "movt">,
-               Requires<[HasMips64]>;
+               Requires<[HasMips64]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 def MOVF_I   : CondMovFPInt<CPURegs, MipsCMovFP_F, 0, "movf">;
 def MOVF_I64 : CondMovFPInt<CPU64Regs, MipsCMovFP_F, 0, "movf">,
-               Requires<[HasMips64]>;
+               Requires<[HasMips64]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 def MOVT_S : CondMovFPFP<FGR32, MipsCMovFP_T, 16, 1, "movt.s">;
 def MOVF_S : CondMovFPFP<FGR32, MipsCMovFP_F, 16, 0, "movf.s">;
@@ -142,7 +162,7 @@
   def MOVT_D32 : CondMovFPFP<AFGR64, MipsCMovFP_T, 17, 1, "movt.d">;
   def MOVF_D32 : CondMovFPFP<AFGR64, MipsCMovFP_F, 17, 0, "movf.d">;
 }
-let Predicates =3D [IsFP64bit] in {
+let Predicates =3D [IsFP64bit], DecoderNamespace =3D "Mips64" in {
   def MOVT_D64 : CondMovFPFP<FGR64, MipsCMovFP_T, 17, 1, "movt.d">;
   def MOVF_D64 : CondMovFPFP<FGR64, MipsCMovFP_F, 17, 0, "movf.d">;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
ISelLowering.cpp
--- a/head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -34,6 +34,8 @@
 #include "llvm/CodeGen/ValueTypes.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/raw_ostream.h"
+
 using namespace llvm;
=20
 // If I is a shifted mask, set the size (Size) and the first bit of the
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
InstrFPU.td
--- a/head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td	Wed Jul 25 16:21:35=
 2012 +0300
@@ -47,17 +47,17 @@
                                    SDT_MipsExtractElementF64>;
=20
 // Operand for printing out a condition code.
-let PrintMethod =3D "printFCCOperand" in
+let PrintMethod =3D "printFCCOperand", DecoderMethod =3D "DecodeCondCode" =
in
   def condcode : Operand<i32>;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Feature predicates.
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-def IsFP64bit        : Predicate<"Subtarget.isFP64bit()">;
-def NotFP64bit       : Predicate<"!Subtarget.isFP64bit()">;
-def IsSingleFloat    : Predicate<"Subtarget.isSingleFloat()">;
-def IsNotSingleFloat : Predicate<"!Subtarget.isSingleFloat()">;
+def IsFP64bit        : Predicate<"Subtarget.isFP64bit()">, AssemblerPredic=
ate<"FeatureFP64Bit">;
+def NotFP64bit       : Predicate<"!Subtarget.isFP64bit()">, AssemblerPredi=
cate<"!FeatureFP64Bit">;
+def IsSingleFloat    : Predicate<"Subtarget.isSingleFloat()">, AssemblerPr=
edicate<"FeatureSingleFloat">;
+def IsNotSingleFloat : Predicate<"!Subtarget.isSingleFloat()">, AssemblerP=
redicate<"!FeatureSingleFloat">;
=20
 // FP immediate patterns.
 def fpimm0 : PatLeaf<(fpimm), [{
@@ -83,6 +83,7 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 // FP load.
+let DecoderMethod =3D "DecodeFMem" in {
 class FPLoad<bits<6> op, string opstr, RegisterClass RC, Operand MemOpnd>:
   FMem<op, (outs RC:$ft), (ins MemOpnd:$addr),
       !strconcat(opstr, "\t$ft, $addr"), [(set RC:$ft, (load_a addr:$addr)=
)],
@@ -93,7 +94,7 @@
   FMem<op, (outs), (ins RC:$ft, MemOpnd:$addr),
       !strconcat(opstr, "\t$ft, $addr"), [(store_a RC:$ft, addr:$addr)],
       IIStore>;
-
+}
 // FP indexed load.
 class FPIdxLoad<bits<6> funct, string opstr, RegisterClass DRC,
                 RegisterClass PRC, PatFrag FOp>:
@@ -118,11 +119,13 @@
   def _D32 : FFR1<funct, 17, opstr, "w.d", FGR32, AFGR64>,
              Requires<[NotFP64bit]>;
   def _D64 : FFR1<funct, 17, opstr, "w.d", FGR32, FGR64>,
-             Requires<[IsFP64bit]>;
+             Requires<[IsFP64bit]> {
+    let DecoderNamespace =3D "Mips64";
+  }
 }
=20
 // Instructions that convert an FP value to 64-bit fixed point.
-let Predicates =3D [IsFP64bit] in
+let Predicates =3D [IsFP64bit], DecoderNamespace =3D "Mips64" in
 multiclass FFR1_L_M<bits<6> funct, string opstr> {
   def _S   : FFR1<funct, 16, opstr, "l.s", FGR64, FGR32>;
   def _D64 : FFR1<funct, 17, opstr, "l.d", FGR64, FGR64>;
@@ -134,7 +137,9 @@
   def _D32 : FFR1P<funct, 17, opstr, "d", AFGR64, AFGR64, OpNode>,
              Requires<[NotFP64bit]>;
   def _D64 : FFR1P<funct, 17, opstr, "d", FGR64, FGR64, OpNode>,
-             Requires<[IsFP64bit]>;
+             Requires<[IsFP64bit]> {
+    let DecoderNamespace =3D "Mips64";
+  }
 }
=20
 multiclass FFR2P_M<bits<6> funct, string opstr, SDNode OpNode, bit isComm =
=3D 0> {
@@ -143,9 +148,11 @@
   def _D32 : FFR2P<funct, 17, opstr, "d", AFGR64, OpNode>,
              Requires<[NotFP64bit]>;
   def _D64 : FFR2P<funct, 17, opstr, "d", FGR64, OpNode>,
-             Requires<[IsFP64bit]>;
+             Requires<[IsFP64bit]> {
+    let DecoderNamespace =3D "Mips64";
   }
 }
+}
=20
 // FP madd/msub/nmadd/nmsub instruction classes.
 class FMADDSUB<bits<3> funct, bits<3> fmt, string opstr, string fmtstr,
@@ -172,9 +179,11 @@
 defm FLOOR_W : FFR1_W_M<0xf, "floor">;
 defm FLOOR_L : FFR1_L_M<0xb, "floor">;
 defm CVT_W   : FFR1_W_M<0x24, "cvt">;
-defm CVT_L   : FFR1_L_M<0x25, "cvt">;
+//defm CVT_L   : FFR1_L_M<0x25, "cvt">;
=20
 def CVT_S_W : FFR1<0x20, 20, "cvt", "s.w", FGR32, FGR32>;
+def CVT_L_S : FFR1<0x25, 16, "cvt", "l.s", FGR64, FGR32>;
+def CVT_L_D64: FFR1<0x25, 17, "cvt", "l.d", FGR64, FGR64>;
=20
 let Predicates =3D [NotFP64bit] in {
   def CVT_S_D32 : FFR1<0x20, 17, "cvt", "s.d", FGR32, AFGR64>;
@@ -182,7 +191,7 @@
   def CVT_D32_S : FFR1<0x21, 16, "cvt", "d.s", AFGR64, FGR32>;
 }
=20
-let Predicates =3D [IsFP64bit] in {
+let Predicates =3D [IsFP64bit], DecoderNamespace =3D "Mips64" in {
  def CVT_S_D64 : FFR1<0x20, 17, "cvt", "s.d", FGR32, FGR64>;
  def CVT_S_L   : FFR1<0x20, 21, "cvt", "s.l", FGR32, FGR64>;
  def CVT_D64_W : FFR1<0x21, 20, "cvt", "d.w", FGR64, FGR32>;
@@ -235,14 +244,20 @@
 def FMOV_D32 : FFR1<0x6, 17, "mov", "d", AFGR64, AFGR64>,
                Requires<[NotFP64bit]>;
 def FMOV_D64 : FFR1<0x6, 17, "mov", "d", FGR64, FGR64>,
-               Requires<[IsFP64bit]>;
+               Requires<[IsFP64bit]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 /// Floating Point Memory Instructions
-let Predicates =3D [IsN64] in {
+let Predicates =3D [IsN64], DecoderNamespace =3D "Mips64" in {
   def LWC1_P8   : FPLoad<0x31, "lwc1", FGR32, mem64>;
   def SWC1_P8   : FPStore<0x39, "swc1", FGR32, mem64>;
-  def LDC164_P8 : FPLoad<0x35, "ldc1", FGR64, mem64>;
-  def SDC164_P8 : FPStore<0x3d, "sdc1", FGR64, mem64>;
+  def LDC164_P8 : FPLoad<0x35, "ldc1", FGR64, mem64> {
+    let isCodeGenOnly =3D1;
+  }
+  def SDC164_P8 : FPStore<0x3d, "sdc1", FGR64, mem64> {
+    let isCodeGenOnly =3D1;
+  }
 }
=20
 let Predicates =3D [NotN64] in {
@@ -250,7 +265,7 @@
   def SWC1   : FPStore<0x39, "swc1", FGR32, mem>;
 }
=20
-let Predicates =3D [NotN64, HasMips64] in {
+let Predicates =3D [NotN64, HasMips64], DecoderNamespace =3D "Mips64" in {
   def LDC164 : FPLoad<0x35, "ldc1", FGR64, mem>;
   def SDC164 : FPStore<0x3d, "sdc1", FGR64, mem>;
 }
@@ -273,13 +288,13 @@
   def SDXC1 : FPIdxStore<0x9, "sdxc1", AFGR64, CPURegs, store_a>;
 }
=20
-let Predicates =3D [HasMips64, NotN64] in {
+let Predicates =3D [HasMips64, NotN64], DecoderNamespace=3D"Mips64" in {
   def LDXC164 : FPIdxLoad<0x1, "ldxc1", FGR64, CPURegs, load_a>;
   def SDXC164 : FPIdxStore<0x9, "sdxc1", FGR64, CPURegs, store_a>;
 }
=20
 // n64
-let Predicates =3D [IsN64] in {
+let Predicates =3D [IsN64], isCodeGenOnly=3D1 in {
   def LWXC1_P8   : FPIdxLoad<0x0, "lwxc1", FGR32, CPU64Regs, load_a>;
   def LUXC1_P8   : FPIdxLoad<0x5, "luxc1", FGR32, CPU64Regs, load_u>;
   def LDXC164_P8 : FPIdxLoad<0x1, "ldxc1", FGR64, CPU64Regs, load_a>;
@@ -314,12 +329,12 @@
   def NMSUB_D32 : FNMADDSUB<0x7, 1, "nmsub", "d", fsub, AFGR64>;
 }
=20
-let Predicates =3D [HasMips32r2, IsFP64bit] in {
+let Predicates =3D [HasMips32r2, IsFP64bit], isCodeGenOnly=3D1 in {
   def MADD_D64 : FMADDSUB<0x4, 1, "madd", "d", fadd, FGR64>;
   def MSUB_D64 : FMADDSUB<0x5, 1, "msub", "d", fsub, FGR64>;
 }
=20
-let Predicates =3D [HasMips32r2, IsFP64bit, NoNaNsFPMath] in {
+let Predicates =3D [HasMips32r2, IsFP64bit, NoNaNsFPMath], isCodeGenOnly=
=3D1 in {
   def NMADD_D64 : FNMADDSUB<0x6, 1, "nmadd", "d", fadd, FGR64>;
   def NMSUB_D64 : FNMADDSUB<0x7, 1, "nmsub", "d", fsub, FGR64>;
 }
@@ -342,9 +357,10 @@
   let Inst{16} =3D tf;
 }
=20
+let DecoderMethod =3D "DecodeBC1" in {
 def BC1F  : FBRANCH<0, 0, MIPS_BRANCH_F,  "bc1f">;
 def BC1T  : FBRANCH<0, 1, MIPS_BRANCH_T,  "bc1t">;
-
+}
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Floating Point Flag Conditions
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -376,7 +392,9 @@
 let Defs=3D[FCR31] in {
   def FCMP_S32 : FCMP<0x10, FGR32, "s">;
   def FCMP_D32 : FCMP<0x11, AFGR64, "d">, Requires<[NotFP64bit]>;
-  def FCMP_D64 : FCMP<0x11, FGR64, "d">, Requires<[IsFP64bit]>;
+  def FCMP_D64 : FCMP<0x11, FGR64, "d">, Requires<[IsFP64bit]> {
+    let DecoderNamespace =3D "Mips64";
+  }
 }
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
@@ -438,13 +456,13 @@
=20
 // Patterns for unaligned floating point loads and stores.
 let Predicates =3D [HasMips32r2Or64, NotN64] in {
-  def : Pat<(f32 (load_u CPURegs:$addr)), (LUXC1 CPURegs:$addr, ZERO)>;=20
+  def : Pat<(f32 (load_u CPURegs:$addr)), (LUXC1 CPURegs:$addr, ZERO)>;
   def : Pat<(store_u FGR32:$src, CPURegs:$addr),
             (SUXC1 FGR32:$src, CPURegs:$addr, ZERO)>;
 }
=20
 let Predicates =3D [IsN64] in {
-  def : Pat<(f32 (load_u CPU64Regs:$addr)), (LUXC1_P8 CPU64Regs:$addr, ZER=
O_64)>;=20
+  def : Pat<(f32 (load_u CPU64Regs:$addr)), (LUXC1_P8 CPU64Regs:$addr, ZER=
O_64)>;
   def : Pat<(store_u FGR32:$src, CPU64Regs:$addr),
             (SUXC1_P8 FGR32:$src, CPU64Regs:$addr, ZERO_64)>;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
InstrFormats.td
--- a/head/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -45,6 +45,8 @@
=20
   let Namespace =3D "Mips";
=20
+  let Size =3D 4;
+
   bits<6> Opcode =3D 0;
=20
   // Top 6 bits are the 'opcode' field
@@ -64,6 +66,10 @@
=20
   // TSFlags layout should be kept in sync with MipsInstrInfo.h.
   let TSFlags{3-0}   =3D FormBits;
+
+  let DecoderNamespace =3D "Mips";
+
+  field bits<32> SoftFail =3D 0;
 }
=20
 // Mips Pseudo Instructions Format
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
InstrInfo.td
--- a/head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -121,21 +121,36 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Mips Instruction Predicate Definitions.
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-def HasSEInReg  : Predicate<"Subtarget.hasSEInReg()">;
-def HasBitCount : Predicate<"Subtarget.hasBitCount()">;
-def HasSwap     : Predicate<"Subtarget.hasSwap()">;
-def HasCondMov  : Predicate<"Subtarget.hasCondMov()">;
-def HasMips32    : Predicate<"Subtarget.hasMips32()">;
-def HasMips32r2  : Predicate<"Subtarget.hasMips32r2()">;
-def HasMips64    : Predicate<"Subtarget.hasMips64()">;
-def HasMips32r2Or64 : Predicate<"Subtarget.hasMips32r2Or64()">;
-def NotMips64    : Predicate<"!Subtarget.hasMips64()">;
-def HasMips64r2  : Predicate<"Subtarget.hasMips64r2()">;
-def IsN64       : Predicate<"Subtarget.isABI_N64()">;
-def NotN64      : Predicate<"!Subtarget.isABI_N64()">;
-def RelocStatic : Predicate<"TM.getRelocationModel() =3D=3D Reloc::Static"=
>;
-def RelocPIC    : Predicate<"TM.getRelocationModel() =3D=3D Reloc::PIC_">;
-def NoNaNsFPMath : Predicate<"TM.Options.NoNaNsFPMath">;
+def HasSEInReg  :     Predicate<"Subtarget.hasSEInReg()">,
+                      AssemblerPredicate<"FeatureSEInReg">;
+def HasBitCount :     Predicate<"Subtarget.hasBitCount()">,
+                      AssemblerPredicate<"FeatureBitCount">;
+def HasSwap     :     Predicate<"Subtarget.hasSwap()">,
+                      AssemblerPredicate<"FeatureSwap">;
+def HasCondMov  :     Predicate<"Subtarget.hasCondMov()">,
+                      AssemblerPredicate<"FeatureCondMov">;
+def HasMips32    :    Predicate<"Subtarget.hasMips32()">,
+                      AssemblerPredicate<"FeatureMips32">;
+def HasMips32r2  :    Predicate<"Subtarget.hasMips32r2()">,
+                      AssemblerPredicate<"FeatureMips32r2">;
+def HasMips64    :    Predicate<"Subtarget.hasMips64()">,
+                      AssemblerPredicate<"FeatureMips64">;
+def HasMips32r2Or64 : Predicate<"Subtarget.hasMips32r2Or64()">,
+                      AssemblerPredicate<"FeatureMips32r2,FeatureMips64">;
+def NotMips64    :    Predicate<"!Subtarget.hasMips64()">,
+                      AssemblerPredicate<"!FeatureMips64">;
+def HasMips64r2  :    Predicate<"Subtarget.hasMips64r2()">,
+                      AssemblerPredicate<"FeatureMips64r2">;
+def IsN64       :     Predicate<"Subtarget.isABI_N64()">,
+                      AssemblerPredicate<"FeatureN64">;
+def NotN64      :     Predicate<"!Subtarget.isABI_N64()">,
+                      AssemblerPredicate<"!FeatureN64">;
+def RelocStatic :     Predicate<"TM.getRelocationModel() =3D=3D Reloc::Sta=
tic">,
+                      AssemblerPredicate<"FeatureMips32">;
+def RelocPIC    :     Predicate<"TM.getRelocationModel() =3D=3D Reloc::PIC=
_">,
+                      AssemblerPredicate<"FeatureMips32">;
+def NoNaNsFPMath :    Predicate<"TM.Options.NoNaNsFPMath">,
+                      AssemblerPredicate<"FeatureMips32">;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Mips Operand, Complex Patterns and Transformations Definitions.
@@ -148,12 +163,15 @@
 def brtarget    : Operand<OtherVT> {
   let EncoderMethod =3D "getBranchTargetOpValue";
   let OperandType =3D "OPERAND_PCREL";
+  let DecoderMethod =3D "DecodeBranchTarget";
 }
 def calltarget  : Operand<iPTR> {
   let EncoderMethod =3D "getJumpTargetOpValue";
 }
 def calltarget64: Operand<i64>;
-def simm16      : Operand<i32>;
+def simm16      : Operand<i32> {
+  let DecoderMethod=3D "DecodeSimm16";
+}
 def simm16_64   : Operand<i64>;
 def shamt       : Operand<i32>;
=20
@@ -189,11 +207,13 @@
 // size operand of ext instruction
 def size_ext : Operand<i32> {
   let EncoderMethod =3D "getSizeExtEncoding";
+  let DecoderMethod =3D "DecodeExtSize";
 }
=20
 // size operand of ins instruction
 def size_ins : Operand<i32> {
   let EncoderMethod =3D "getSizeInsEncoding";
+  let DecoderMethod =3D "DecodeInsSize";
 }
=20
 // Transformation Function - get the lower 16 bits.
@@ -295,6 +315,7 @@
      [(set RC:$rd, (OpNode RC:$rs, RC:$rt))], itin> {
   let shamt =3D 0;
   let isCommutable =3D isComm;
+  let isReMaterializable =3D 1;
 }
=20
 class ArithOverflowR<bits<6> op, bits<6> func, string instr_asm,
@@ -310,7 +331,9 @@
                   Operand Od, PatLeaf imm_type, RegisterClass RC> :
   FI<op, (outs RC:$rt), (ins RC:$rs, Od:$imm16),
      !strconcat(instr_asm, "\t$rt, $rs, $imm16"),
-     [(set RC:$rt, (OpNode RC:$rs, imm_type:$imm16))], IIAlu>;
+     [(set RC:$rt, (OpNode RC:$rs, imm_type:$imm16))], IIAlu> {
+  let isReMaterializable =3D 1;
+}
=20
 class ArithOverflowI<bits<6> op, string instr_asm, SDNode OpNode,
                      Operand Od, PatLeaf imm_type, RegisterClass RC> :
@@ -366,6 +389,7 @@
      !strconcat(instr_asm, "\t$rt, $imm16"), [], IIAlu> {
   let rs =3D 0;
   let neverHasSideEffects =3D 1;
+  let isReMaterializable =3D 1;
 }
=20
 class FMem<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern,
@@ -373,6 +397,7 @@
   bits<21> addr;
   let Inst{25-21} =3D addr{20-16};
   let Inst{15-0}  =3D addr{15-0};
+  let DecoderMethod =3D "DecodeMem";
 }
=20
 // Memory Load/Store
@@ -407,7 +432,10 @@
   def #NAME# : LoadM<op, instr_asm, OpNode, CPURegs, mem, Pseudo>,
                Requires<[NotN64]>;
   def _P8    : LoadM<op, instr_asm, OpNode, CPURegs, mem64, Pseudo>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 // 64-bit load.
@@ -416,7 +444,10 @@
   def #NAME# : LoadM<op, instr_asm, OpNode, CPU64Regs, mem, Pseudo>,
                Requires<[NotN64]>;
   def _P8    : LoadM<op, instr_asm, OpNode, CPU64Regs, mem64, Pseudo>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 // 32-bit load.
@@ -424,7 +455,10 @@
   def #NAME# : LoadUnAlign<op, CPURegs, mem>,
                Requires<[NotN64]>;
   def _P8    : LoadUnAlign<op, CPURegs, mem64>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
 // 32-bit store.
 multiclass StoreM32<bits<6> op, string instr_asm, PatFrag OpNode,
@@ -432,7 +466,10 @@
   def #NAME# : StoreM<op, instr_asm, OpNode, CPURegs, mem, Pseudo>,
                Requires<[NotN64]>;
   def _P8    : StoreM<op, instr_asm, OpNode, CPURegs, mem64, Pseudo>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 // 64-bit store.
@@ -441,7 +478,10 @@
   def #NAME# : StoreM<op, instr_asm, OpNode, CPU64Regs, mem, Pseudo>,
                Requires<[NotN64]>;
   def _P8    : StoreM<op, instr_asm, OpNode, CPU64Regs, mem64, Pseudo>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 // 32-bit store.
@@ -449,7 +489,10 @@
   def #NAME# : StoreUnAlign<op, CPURegs, mem>,
                Requires<[NotN64]>;
   def _P8    : StoreUnAlign<op, CPURegs, mem64>,
-               Requires<[IsN64]>;
+               Requires<[IsN64]> {
+    let DecoderNamespace =3D "Mips64";
+    let isCodeGenOnly =3D 1;
+  }
 }
=20
 // Conditional Branch
@@ -499,6 +542,7 @@
   let isBarrier=3D1;
   let hasDelaySlot =3D 1;
   let Predicates =3D [RelocStatic];
+  let DecoderMethod =3D "DecodeJumpTarget";
 }
=20
 // Unconditional branch
@@ -529,7 +573,9 @@
   class JumpLink<bits<6> op, string instr_asm>:
     FJ<op, (outs), (ins calltarget:$target, variable_ops),
        !strconcat(instr_asm, "\t$target"), [(MipsJmpLink imm:$target)],
-       IIBranch>;
+       IIBranch> {
+       let DecoderMethod =3D "DecodeJumpTarget";
+       }
=20
   class JumpLinkReg<bits<6> op, bits<6> func, string instr_asm,
                     RegisterClass RC>:
@@ -685,7 +731,9 @@
=20
 multiclass Atomic2Ops32<PatFrag Op, string Opstr> {
   def #NAME# : Atomic2Ops<Op, Opstr, CPURegs, CPURegs>, Requires<[NotN64]>;
-  def _P8    : Atomic2Ops<Op, Opstr, CPURegs, CPU64Regs>, Requires<[IsN64]=
>;
+  def _P8    : Atomic2Ops<Op, Opstr, CPURegs, CPU64Regs>, Requires<[IsN64]=
> {
+    let DecoderNamespace =3D "Mips64";
+  }
 }
=20
 // Atomic Compare & Swap.
@@ -697,7 +745,9 @@
=20
 multiclass AtomicCmpSwap32<PatFrag Op, string Width>  {
   def #NAME# : AtomicCmpSwap<Op, Width, CPURegs, CPURegs>, Requires<[NotN6=
4]>;
-  def _P8    : AtomicCmpSwap<Op, Width, CPURegs, CPU64Regs>, Requires<[IsN=
64]>;
+  def _P8    : AtomicCmpSwap<Op, Width, CPURegs, CPU64Regs>, Requires<[IsN=
64]> {
+    let DecoderNamespace =3D "Mips64";
+  }
 }
=20
 class LLBase<bits<6> Opc, string opstring, RegisterClass RC, Operand Mem> :
@@ -868,9 +918,14 @@
=20
 /// Load-linked, Store-conditional
 def LL    : LLBase<0x30, "ll", CPURegs, mem>, Requires<[NotN64]>;
-def LL_P8 : LLBase<0x30, "ll", CPURegs, mem64>, Requires<[IsN64]>;
+def LL_P8 : LLBase<0x30, "ll", CPURegs, mem64>, Requires<[IsN64]> {
+  let DecoderNamespace =3D "Mips64";
+}
+
 def SC    : SCBase<0x38, "sc", CPURegs, mem>, Requires<[NotN64]>;
-def SC_P8 : SCBase<0x38, "sc", CPURegs, mem64>, Requires<[IsN64]>;
+def SC_P8 : SCBase<0x38, "sc", CPURegs, mem64>, Requires<[IsN64]> {
+  let DecoderNamespace =3D "Mips64";
+}
=20
 /// Jump and Branch Instructions
 def J       : JumpFJ<0x02, "j">;
@@ -888,7 +943,7 @@
 def BGEZAL  : BranchLink<"bgezal", 0x11, CPURegs>;
 def BLTZAL  : BranchLink<"bltzal", 0x10, CPURegs>;
=20
-let isReturn=3D1, isTerminator=3D1, hasDelaySlot=3D1,
+let isReturn=3D1, isTerminator=3D1, hasDelaySlot=3D1, isCodeGenOnly=3D1,
     isBarrier=3D1, hasCtrlDep=3D1, rd=3D0, rt=3D0, shamt=3D0 in
   def RET : FR <0x00, 0x08, (outs), (ins CPURegs:$target),
                 "jr\t$target", [(MipsRet CPURegs:$target)], IIBranch>;
@@ -923,13 +978,17 @@
 // instructions. The same not happens for stack address copies, so an
 // add op with mem ComplexPattern is used and the stack address copy
 // can be matched. It's similar to Sparc LEA_ADDRi
-def LEA_ADDiu : EffectiveAddress<"addiu\t$rt, $addr", CPURegs, mem_ea>;
+def LEA_ADDiu : EffectiveAddress<"addiu\t$rt, $addr", CPURegs, mem_ea> {
+  let isCodeGenOnly =3D 1;
+}
=20
 // DynAlloc node points to dynamically allocated stack space.
 // $sp is added to the list of implicitly used registers to prevent dead c=
ode
 // elimination from removing instructions that modify $sp.
 let Uses =3D [SP] in
-def DynAlloc : EffectiveAddress<"addiu\t$rt, $addr", CPURegs, mem_ea>;
+def DynAlloc : EffectiveAddress<"addiu\t$rt, $addr", CPURegs, mem_ea> {
+  let isCodeGenOnly =3D 1;
+}
=20
 // MADD*/MSUB*
 def MADD  : MArithR<0, "madd", MipsMAdd, 1>;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Mips/Mips=
TargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -117,18 +117,16 @@
=20
 // Install an instruction selector pass using
 // the ISelDag to gen Mips code.
-bool MipsPassConfig::addInstSelector()
-{
-  PM.add(createMipsISelDag(getMipsTargetMachine()));
+bool MipsPassConfig::addInstSelector() {
+  PM->add(createMipsISelDag(getMipsTargetMachine()));
   return false;
 }
=20
 // Implemented by targets that want to run passes immediately before
 // machine code is emitted. return true if -print-machineinstrs should
 // print out the code after the passes.
-bool MipsPassConfig::addPreEmitPass()
-{
-  PM.add(createMipsDelaySlotFillerPass(getMipsTargetMachine()));
+bool MipsPassConfig::addPreEmitPass() {
+  PM->add(createMipsDelaySlotFillerPass(getMipsTargetMachine()));
   return true;
 }
=20
@@ -136,12 +134,12 @@
   // Do not restore $gp if target is Mips64.
   // In N32/64, $gp is a callee-saved register.
   if (!getMipsSubtarget().hasMips64())
-    PM.add(createMipsEmitGPRestorePass(getMipsTargetMachine()));
+    PM->add(createMipsEmitGPRestorePass(getMipsTargetMachine()));
   return true;
 }
=20
 bool MipsPassConfig::addPreSched2() {
-  PM.add(createMipsExpandPseudoPass(getMipsTargetMachine()));
+  PM->add(createMipsExpandPseudoPass(getMipsTargetMachine()));
   return true;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/PTX/PTXTa=
rgetMachine.cpp
--- a/head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -130,7 +130,7 @@
 }
=20
 bool PTXPassConfig::addInstSelector() {
-  PM.add(createPTXISelDag(getPTXTargetMachine(), getOptLevel()));
+  PM->add(createPTXISelDag(getPTXTargetMachine(), getOptLevel()));
   return false;
 }
=20
@@ -145,7 +145,7 @@
=20
 bool PTXPassConfig::addPostRegAlloc() {
   // PTXMFInfoExtract must after register allocation!
-  //PM.add(createPTXMFInfoExtract(getPTXTargetMachine()));
+  //PM->add(createPTXMFInfoExtract(getPTXTargetMachine()));
   return false;
 }
=20
@@ -159,7 +159,7 @@
 }
=20
 bool PTXPassConfig::addPreEmitPass() {
-  PM.add(createPTXMFInfoExtract(getPTXTargetMachine(), getOptLevel()));
-  PM.add(createPTXFPRoundingModePass(getPTXTargetMachine(), getOptLevel())=
);
+  PM->add(createPTXMFInfoExtract(getPTXTargetMachine(), getOptLevel()));
+  PM->add(createPTXFPRoundingModePass(getPTXTargetMachine(), getOptLevel()=
));
   return true;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/PowerPC/P=
PCCallingConv.td
--- a/head/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td	Wed Jul 25 16:=
21:35 2012 +0300
@@ -12,10 +12,6 @@
 //
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
-/// CCIfSubtarget - Match if the current subtarget has a feature F.
-class CCIfSubtarget<string F, CCAction A>
- : CCIf<!strconcat("State.getTarget().getSubtarget<PPCSubtarget>().", F), =
A>;
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Return Value Calling Convention
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/PowerPC/P=
PCTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -98,13 +98,13 @@
=20
 bool PPCPassConfig::addInstSelector() {
   // Install an instruction selector.
-  PM.add(createPPCISelDag(getPPCTargetMachine()));
+  PM->add(createPPCISelDag(getPPCTargetMachine()));
   return false;
 }
=20
 bool PPCPassConfig::addPreEmitPass() {
   // Must run branch selection immediately preceding the asm printer.
-  PM.add(createPPCBranchSelectionPass());
+  PM->add(createPPCBranchSelectionPass());
   return false;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/Sparc/Spa=
rcTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -59,7 +59,7 @@
 }
=20
 bool SparcPassConfig::addInstSelector() {
-  PM.add(createSparcISelDag(getSparcTargetMachine()));
+  PM->add(createSparcISelDag(getSparcTargetMachine()));
   return false;
 }
=20
@@ -67,8 +67,8 @@
 /// passes immediately before machine code is emitted.  This should return
 /// true if -print-machineinstrs should print out the code after the passe=
s.
 bool SparcPassConfig::addPreEmitPass(){
-  PM.add(createSparcFPMoverPass(getSparcTargetMachine()));
-  PM.add(createSparcDelaySlotFillerPass(getSparcTargetMachine()));
+  PM->add(createSparcFPMoverPass(getSparcTargetMachine()));
+  PM->add(createSparcDelaySlotFillerPass(getSparcTargetMachine()));
   return true;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/TargetLib=
raryInfo.cpp
--- a/head/contrib/llvm/lib/Target/TargetLibraryInfo.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Target/TargetLibraryInfo.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -56,7 +56,7 @@
     "exp2f",
     "expm1",
     "expm1l",
-    "expl1f",
+    "expm1f",
     "fabs",
     "fabsl",
     "fabsf",
@@ -95,6 +95,9 @@
     "rint",
     "rintf",
     "rintl",
+    "round",
+    "roundf",
+    "roundl",
     "sin",
     "sinl",
     "sinf",
@@ -155,6 +158,81 @@
     TLI.setUnavailable(LibFunc::siprintf);
     TLI.setUnavailable(LibFunc::fiprintf);
   }
+
+  if (T.getOS() =3D=3D Triple::Win32) {
+    // Win32 does not support long double
+    TLI.setUnavailable(LibFunc::acosl);
+    TLI.setUnavailable(LibFunc::asinl);
+    TLI.setUnavailable(LibFunc::atanl);
+    TLI.setUnavailable(LibFunc::atan2l);
+    TLI.setUnavailable(LibFunc::ceill);
+    TLI.setUnavailable(LibFunc::copysignl);
+    TLI.setUnavailable(LibFunc::cosl);
+    TLI.setUnavailable(LibFunc::coshl);
+    TLI.setUnavailable(LibFunc::expl);
+    TLI.setUnavailable(LibFunc::fabsf); // Win32 and Win64 both lack fabsf
+    TLI.setUnavailable(LibFunc::fabsl);
+    TLI.setUnavailable(LibFunc::floorl);
+    TLI.setUnavailable(LibFunc::fmodl);
+    TLI.setUnavailable(LibFunc::logl);
+    TLI.setUnavailable(LibFunc::powl);
+    TLI.setUnavailable(LibFunc::sinl);
+    TLI.setUnavailable(LibFunc::sinhl);
+    TLI.setUnavailable(LibFunc::sqrtl);
+    TLI.setUnavailable(LibFunc::tanl);
+    TLI.setUnavailable(LibFunc::tanhl);
+
+    // Win32 only has C89 math
+    TLI.setUnavailable(LibFunc::exp2);
+    TLI.setUnavailable(LibFunc::exp2f);
+    TLI.setUnavailable(LibFunc::exp2l);
+    TLI.setUnavailable(LibFunc::expm1);
+    TLI.setUnavailable(LibFunc::expm1f);
+    TLI.setUnavailable(LibFunc::expm1l);
+    TLI.setUnavailable(LibFunc::log2);
+    TLI.setUnavailable(LibFunc::log2f);
+    TLI.setUnavailable(LibFunc::log2l);
+    TLI.setUnavailable(LibFunc::log1p);
+    TLI.setUnavailable(LibFunc::log1pf);
+    TLI.setUnavailable(LibFunc::log1pl);
+    TLI.setUnavailable(LibFunc::nearbyint);
+    TLI.setUnavailable(LibFunc::nearbyintf);
+    TLI.setUnavailable(LibFunc::nearbyintl);
+    TLI.setUnavailable(LibFunc::rint);
+    TLI.setUnavailable(LibFunc::rintf);
+    TLI.setUnavailable(LibFunc::rintl);
+    TLI.setUnavailable(LibFunc::round);
+    TLI.setUnavailable(LibFunc::roundf);
+    TLI.setUnavailable(LibFunc::roundl);
+    TLI.setUnavailable(LibFunc::trunc);
+    TLI.setUnavailable(LibFunc::truncf);
+    TLI.setUnavailable(LibFunc::truncl);
+
+    // Win32 provides some C99 math with mangled names
+    TLI.setAvailableWithName(LibFunc::copysign, "_copysign");
+
+    if (T.getArch() =3D=3D Triple::x86) {
+      // Win32 on x86 implements single-precision math functions as macros
+      TLI.setUnavailable(LibFunc::acosf);
+      TLI.setUnavailable(LibFunc::asinf);
+      TLI.setUnavailable(LibFunc::atanf);
+      TLI.setUnavailable(LibFunc::atan2f);
+      TLI.setUnavailable(LibFunc::ceilf);
+      TLI.setUnavailable(LibFunc::copysignf);
+      TLI.setUnavailable(LibFunc::cosf);
+      TLI.setUnavailable(LibFunc::coshf);
+      TLI.setUnavailable(LibFunc::expf);
+      TLI.setUnavailable(LibFunc::floorf);
+      TLI.setUnavailable(LibFunc::fmodf);
+      TLI.setUnavailable(LibFunc::logf);
+      TLI.setUnavailable(LibFunc::powf);
+      TLI.setUnavailable(LibFunc::sinf);
+      TLI.setUnavailable(LibFunc::sinhf);
+      TLI.setUnavailable(LibFunc::sqrtf);
+      TLI.setUnavailable(LibFunc::tanf);
+      TLI.setUnavailable(LibFunc::tanhf);
+    }
+  }
 }
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/Utils=
/X86ShuffleDecode.cpp
--- a/head/contrib/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -169,6 +169,9 @@
=20
 void DecodeVPERM2X128Mask(EVT VT, unsigned Imm,
                           SmallVectorImpl<int> &ShuffleMask) {
+  if (Imm & 0x88)
+    return; // Not a shuffle
+
   unsigned HalfSize =3D VT.getVectorNumElements()/2;
   unsigned FstHalfBegin =3D (Imm & 0x3) * HalfSize;
   unsigned SndHalfBegin =3D ((Imm >> 4) & 0x3) * HalfSize;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86IS=
elLowering.cpp
--- a/head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -2935,6 +2935,7 @@
   case X86ISD::PSHUFHW:
   case X86ISD::PSHUFLW:
   case X86ISD::VPERMILP:
+  case X86ISD::VPERMI:
     return DAG.getNode(Opc, dl, VT, V1, DAG.getConstant(TargetMask, MVT::i=
8));
   }
 }
@@ -3976,6 +3977,27 @@
   return Index / NumElemsPerChunk;
 }
=20
+/// getShuffleCLImmediate - Return the appropriate immediate to shuffle
+/// the specified VECTOR_SHUFFLE mask with VPERMQ and VPERMPD instructions.
+/// Handles 256-bit.
+static unsigned getShuffleCLImmediate(ShuffleVectorSDNode *N) {
+  EVT VT =3D N->getValueType(0);
+
+  unsigned NumElts =3D VT.getVectorNumElements();
+
+  assert((VT.is256BitVector() && NumElts =3D=3D 4) &&
+         "Unsupported vector type for VPERMQ/VPERMPD");
+
+  unsigned Mask =3D 0;
+  for (unsigned i =3D 0; i !=3D NumElts; ++i) {
+    int Elt =3D N->getMaskElt(i);
+    if (Elt < 0)
+      continue;
+    Mask |=3D Elt << (i*2);
+  }
+
+  return Mask;
+}
 /// isZeroNode - Returns true if Elt is a constant zero or a floating point
 /// constant +0.0.
 bool X86::isZeroNode(SDValue Elt) {
@@ -4408,6 +4430,7 @@
   case X86ISD::VPERM2X128:
     ImmN =3D N->getOperand(N->getNumOperands()-1);
     DecodeVPERM2X128Mask(VT, cast<ConstantSDNode>(ImmN)->getZExtValue(), M=
ask);
+    if (Mask.empty()) return false;
     break;
   case X86ISD::MOVDDUP:
   case X86ISD::MOVLHPD:
@@ -6628,6 +6651,23 @@
   if (BlendOp.getNode())
     return BlendOp;
=20
+  if (V2IsUndef && HasAVX2 && (VT =3D=3D MVT::v8i32 || VT =3D=3D MVT::v8f3=
2)) {
+    SmallVector<SDValue, 8> permclMask;
+    for (unsigned i =3D 0; i !=3D 8; ++i) {
+      permclMask.push_back(DAG.getConstant((M[i]>=3D0) ? M[i] : 0, MVT::i3=
2));
+    }
+    SDValue Mask =3D DAG.getNode(ISD::BUILD_VECTOR, dl, MVT::v8i32,
+                               &permclMask[0], 8);
+    // Bitcast is for VPERMPS since mask is v8i32 but node takes v8f32
+    return DAG.getNode(X86ISD::VPERMV, dl, VT,
+                       DAG.getNode(ISD::BITCAST, dl, VT, Mask), V1);
+  }
+
+  if (V2IsUndef && HasAVX2 && (VT =3D=3D MVT::v4i64 || VT =3D=3D MVT::v4f6=
4))
+    return getTargetShuffleNode(X86ISD::VPERMI, dl, VT, V1,
+                                getShuffleCLImmediate(SVOp), DAG);
+
+
   //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
   // Since no target specific shuffle was selected for this generic one,
   // lower it into other known shuffles. FIXME: this isn't true yet, but
@@ -9552,12 +9592,12 @@
   case Intrinsic::x86_avx2_vperm2i128:
     return DAG.getNode(X86ISD::VPERM2X128, dl, Op.getValueType(),
                        Op.getOperand(1), Op.getOperand(2), Op.getOperand(3=
));
-  case Intrinsic::x86_avx_vpermil_ps:
-  case Intrinsic::x86_avx_vpermil_pd:
-  case Intrinsic::x86_avx_vpermil_ps_256:
-  case Intrinsic::x86_avx_vpermil_pd_256:
-    return DAG.getNode(X86ISD::VPERMILP, dl, Op.getValueType(),
-                       Op.getOperand(1), Op.getOperand(2));
+  case Intrinsic::x86_avx2_permd:
+  case Intrinsic::x86_avx2_permps:
+    // Operands intentionally swapped. Mask is last operand to intrinsic,
+    // but second operand for node/intruction.
+    return DAG.getNode(X86ISD::VPERMV, dl, Op.getValueType(),
+                       Op.getOperand(2), Op.getOperand(1));
=20
   // ptest and testp intrinsics. The intrinsic these come from are designe=
d to
   // return an integer value, not just an instruction so lower it to the p=
test
@@ -11141,6 +11181,8 @@
   case X86ISD::VBROADCAST:         return "X86ISD::VBROADCAST";
   case X86ISD::VPERMILP:           return "X86ISD::VPERMILP";
   case X86ISD::VPERM2X128:         return "X86ISD::VPERM2X128";
+  case X86ISD::VPERMV:             return "X86ISD::VPERMV";
+  case X86ISD::VPERMI:             return "X86ISD::VPERMI";
   case X86ISD::PMULUDQ:            return "X86ISD::PMULUDQ";
   case X86ISD::VASTART_SAVE_XMM_REGS: return "X86ISD::VASTART_SAVE_XMM_REG=
S";
   case X86ISD::VAARG_64:           return "X86ISD::VAARG_64";
@@ -11298,14 +11340,15 @@
                                                        unsigned notOpc,
                                                        unsigned EAXreg,
                                                  const TargetRegisterClass=
 *RC,
-                                                       bool invSrc) const {
+                                                       bool Invert) const {
   // For the atomic bitwise operator, we generate
   //   thisMBB:
   //   newMBB:
   //     ld  t1 =3D [bitinstr.addr]
   //     op  t2 =3D t1, [bitinstr.val]
+  //     not t3 =3D t2  (if Invert)
   //     mov EAX =3D t1
-  //     lcs dest =3D [bitinstr.addr], t2  [EAX is implicit]
+  //     lcs dest =3D [bitinstr.addr], t3  [EAX is implicit]
   //     bz  newMBB
   //     fallthrough -->nextMBB
   const TargetInstrInfo *TII =3D getTargetMachine().getInstrInfo();
@@ -11353,13 +11396,6 @@
   for (int i=3D0; i <=3D lastAddrIndx; ++i)
     (*MIB).addOperand(*argOpers[i]);
=20
-  unsigned tt =3D F->getRegInfo().createVirtualRegister(RC);
-  if (invSrc) {
-    MIB =3D BuildMI(newMBB, dl, TII->get(notOpc), tt).addReg(t1);
-  }
-  else
-    tt =3D t1;
-
   unsigned t2 =3D F->getRegInfo().createVirtualRegister(RC);
   assert((argOpers[valArgIndx]->isReg() ||
           argOpers[valArgIndx]->isImm()) &&
@@ -11368,16 +11404,23 @@
     MIB =3D BuildMI(newMBB, dl, TII->get(regOpc), t2);
   else
     MIB =3D BuildMI(newMBB, dl, TII->get(immOpc), t2);
-  MIB.addReg(tt);
+  MIB.addReg(t1);
   (*MIB).addOperand(*argOpers[valArgIndx]);
=20
+  unsigned t3 =3D F->getRegInfo().createVirtualRegister(RC);
+  if (Invert) {
+    MIB =3D BuildMI(newMBB, dl, TII->get(notOpc), t3).addReg(t2);
+  }
+  else
+    t3 =3D t2;
+
   MIB =3D BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), EAXreg);
   MIB.addReg(t1);
=20
   MIB =3D BuildMI(newMBB, dl, TII->get(CXchgOpc));
   for (int i=3D0; i <=3D lastAddrIndx; ++i)
     (*MIB).addOperand(*argOpers[i]);
-  MIB.addReg(t2);
+  MIB.addReg(t3);
   assert(bInstr->hasOneMemOperand() && "Unexpected number of memoperand");
   (*MIB).setMemRefs(bInstr->memoperands_begin(),
                     bInstr->memoperands_end());
@@ -11400,7 +11443,7 @@
                                                        unsigned regOpcH,
                                                        unsigned immOpcL,
                                                        unsigned immOpcH,
-                                                       bool invSrc) const {
+                                                       bool Invert) const {
   // For the atomic bitwise operator, we generate
   //   thisMBB (instructions are in pairs, except cmpxchg8b)
   //     ld t1,t2 =3D [bitinstr.addr]
@@ -11408,6 +11451,7 @@
   //     out1, out2 =3D phi (thisMBB, t1/t2) (newMBB, t3/t4)
   //     op  t5, t6 <- out1, out2, [bitinstr.val]
   //      (for SWAP, substitute:  mov t5, t6 <- [bitinstr.val])
+  //     neg t7, t8 < t5, t6  (if Invert)
   //     mov ECX, EBX <- t5, t6
   //     mov EAX, EDX <- t1, t2
   //     cmpxchg8b [bitinstr.addr]  [EAX, EDX, EBX, ECX implicit]
@@ -11491,16 +11535,9 @@
     .addReg(t2).addMBB(thisMBB).addReg(t4).addMBB(newMBB);
=20
   // The subsequent operations should be using the destination registers of
-  //the PHI instructions.
-  if (invSrc) {
-    t1 =3D F->getRegInfo().createVirtualRegister(RC);
-    t2 =3D F->getRegInfo().createVirtualRegister(RC);
-    MIB =3D BuildMI(newMBB, dl, TII->get(NotOpc), t1).addReg(dest1Oper.get=
Reg());
-    MIB =3D BuildMI(newMBB, dl, TII->get(NotOpc), t2).addReg(dest2Oper.get=
Reg());
-  } else {
-    t1 =3D dest1Oper.getReg();
-    t2 =3D dest2Oper.getReg();
-  }
+  // the PHI instructions.
+  t1 =3D dest1Oper.getReg();
+  t2 =3D dest2Oper.getReg();
=20
   int valArgIndx =3D lastAddrIndx + 1;
   assert((argOpers[valArgIndx]->isReg() ||
@@ -11527,15 +11564,26 @@
     MIB.addReg(t2);
   (*MIB).addOperand(*argOpers[valArgIndx + 1]);
=20
+  unsigned t7, t8;
+  if (Invert) {
+    t7 =3D F->getRegInfo().createVirtualRegister(RC);
+    t8 =3D F->getRegInfo().createVirtualRegister(RC);
+    MIB =3D BuildMI(newMBB, dl, TII->get(NotOpc), t7).addReg(t5);
+    MIB =3D BuildMI(newMBB, dl, TII->get(NotOpc), t8).addReg(t6);
+  } else {
+    t7 =3D t5;
+    t8 =3D t6;
+  }
+
   MIB =3D BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), X86::EAX);
   MIB.addReg(t1);
   MIB =3D BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), X86::EDX);
   MIB.addReg(t2);
=20
   MIB =3D BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), X86::EBX);
-  MIB.addReg(t5);
+  MIB.addReg(t7);
   MIB =3D BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), X86::ECX);
-  MIB.addReg(t6);
+  MIB.addReg(t8);
=20
   MIB =3D BuildMI(newMBB, dl, TII->get(X86::LCMPXCHG8B));
   for (int i=3D0; i <=3D lastAddrIndx; ++i)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86IS=
elLowering.h
--- a/head/contrib/llvm/lib/Target/X86/X86ISelLowering.h	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86ISelLowering.h	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -285,6 +285,8 @@
       UNPCKL,
       UNPCKH,
       VPERMILP,
+      VPERMV,
+      VPERMI,
       VPERM2X128,
       VBROADCAST,
=20
@@ -855,7 +857,7 @@
                                                     unsigned notOpc,
                                                     unsigned EAXreg,
                                               const TargetRegisterClass *R=
C,
-                                                    bool invSrc =3D false)=
 const;
+                                                    bool Invert =3D false)=
 const;
=20
     MachineBasicBlock *EmitAtomicBit6432WithCustomInserter(
                                                     MachineInstr *BInstr,
@@ -864,7 +866,7 @@
                                                     unsigned regOpcH,
                                                     unsigned immOpcL,
                                                     unsigned immOpcH,
-                                                    bool invSrc =3D false)=
 const;
+                                                    bool Invert =3D false)=
 const;
=20
     /// Utility function to emit atomic min and max.  It takes the min/max
     /// instruction to expand, the associated basic block, and the associa=
ted
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86In=
strFragmentsSIMD.td
--- a/head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td	Wed Jul 25 =
16:21:35 2012 +0300
@@ -155,6 +155,8 @@
 def X86Unpckh : SDNode<"X86ISD::UNPCKH", SDTShuff2Op>;
=20
 def X86VPermilp  : SDNode<"X86ISD::VPERMILP", SDTShuff2OpI>;
+def X86VPermv    : SDNode<"X86ISD::VPERMV",   SDTShuff2Op>;
+def X86VPermi    : SDNode<"X86ISD::VPERMI",   SDTShuff2OpI>;
=20
 def X86VPerm2x128 : SDNode<"X86ISD::VPERM2X128", SDTShuff3OpI>;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86In=
strInfo.cpp
--- a/head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp	Wed Jul 25 16:21:35=
 2012 +0300
@@ -1049,9 +1049,9 @@
     { X86::VPCMPGTWYrr,       X86::VPCMPGTWYrm,        TB_ALIGN_32 },
     { X86::VPERM2I128rr,      X86::VPERM2I128rm,       TB_ALIGN_32 },
     { X86::VPERMDYrr,         X86::VPERMDYrm,          TB_ALIGN_32 },
-    { X86::VPERMPDYrr,        X86::VPERMPDYrm,         TB_ALIGN_32 },
+    { X86::VPERMPDYri,        X86::VPERMPDYmi,         TB_ALIGN_32 },
     { X86::VPERMPSYrr,        X86::VPERMPSYrm,         TB_ALIGN_32 },
-    { X86::VPERMQYrr,         X86::VPERMQYrm,          TB_ALIGN_32 },
+    { X86::VPERMQYri,         X86::VPERMQYmi,          TB_ALIGN_32 },
     { X86::VPHADDDYrr,        X86::VPHADDDYrm,         TB_ALIGN_32 },
     { X86::VPHADDSWrr256,     X86::VPHADDSWrm256,      TB_ALIGN_32 },
     { X86::VPHADDWYrr,        X86::VPHADDWYrm,         TB_ALIGN_32 },
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86In=
strSSE.td
--- a/head/contrib/llvm/lib/Target/X86/X86InstrSSE.td	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86InstrSSE.td	Wed Jul 25 16:21:35 2=
012 +0300
@@ -6742,6 +6742,16 @@
   def : Pat<(v4f64 (X86Blendpd (v4f64 VR256:$src1), (v4f64 VR256:$src2),
                                (imm:$mask))),
             (VBLENDPDYrri VR256:$src2, VR256:$src1, imm:$mask)>;
+
+  def : Pat<(v8i16 (X86Blendpw (v8i16 VR128:$src1), (v8i16 VR128:$src2),
+                               (imm:$mask))),
+            (VPBLENDWrri VR128:$src2, VR128:$src1, imm:$mask)>;
+  def : Pat<(v4f32 (X86Blendps (v4f32 VR128:$src1), (v4f32 VR128:$src2),
+                               (imm:$mask))),
+            (VBLENDPSrri VR128:$src2, VR128:$src1, imm:$mask)>;
+  def : Pat<(v2f64 (X86Blendpd (v2f64 VR128:$src1), (v2f64 VR128:$src2),
+                               (imm:$mask))),
+            (VBLENDPDrri VR128:$src2, VR128:$src1, imm:$mask)>;
 }
=20
 let Predicates =3D [HasAVX2] in {
@@ -6802,13 +6812,13 @@
=20
   def : Pat<(v8i16 (X86Blendpw (v8i16 VR128:$src1), (v8i16 VR128:$src2),
                                (imm:$mask))),
-            (VPBLENDWrri VR128:$src2, VR128:$src1, imm:$mask)>;
+            (PBLENDWrri VR128:$src2, VR128:$src1, imm:$mask)>;
   def : Pat<(v4f32 (X86Blendps (v4f32 VR128:$src1), (v4f32 VR128:$src2),
                                (imm:$mask))),
-            (VBLENDPSrri VR128:$src2, VR128:$src1, imm:$mask)>;
+            (BLENDPSrri VR128:$src2, VR128:$src1, imm:$mask)>;
   def : Pat<(v2f64 (X86Blendpd (v2f64 VR128:$src1), (v2f64 VR128:$src2),
                                (imm:$mask))),
-            (VBLENDPDrri VR128:$src2, VR128:$src1, imm:$mask)>;
+            (BLENDPDrri VR128:$src2, VR128:$src1, imm:$mask)>;
=20
 }
=20
@@ -7725,45 +7735,47 @@
 //
=20
 multiclass avx2_perm<bits<8> opc, string OpcodeStr, PatFrag mem_frag,
-                     Intrinsic Int> {
+                     ValueType OpVT> {
   def Yrr : AVX28I<opc, MRMSrcReg, (outs VR256:$dst),
                    (ins VR256:$src1, VR256:$src2),
                    !strconcat(OpcodeStr,
                        "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
-                   [(set VR256:$dst, (Int VR256:$src1, VR256:$src2))]>, VE=
X_4V;
+                   [(set VR256:$dst,
+                     (OpVT (X86VPermv VR256:$src1, VR256:$src2)))]>, VEX_4=
V;
   def Yrm : AVX28I<opc, MRMSrcMem, (outs VR256:$dst),
                    (ins VR256:$src1, i256mem:$src2),
                    !strconcat(OpcodeStr,
                        "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
-                   [(set VR256:$dst, (Int VR256:$src1,
-                                      (bitconvert (mem_frag addr:$src2))))=
]>,
+                   [(set VR256:$dst,
+                     (OpVT (X86VPermv VR256:$src1,
+                            (bitconvert (mem_frag addr:$src2)))))]>,
                    VEX_4V;
 }
=20
-defm VPERMD : avx2_perm<0x36, "vpermd", memopv4i64, int_x86_avx2_permd>;
+defm VPERMD : avx2_perm<0x36, "vpermd", memopv4i64, v8i32>;
 let ExeDomain =3D SSEPackedSingle in
-defm VPERMPS : avx2_perm<0x16, "vpermps", memopv8f32, int_x86_avx2_permps>;
+defm VPERMPS : avx2_perm<0x16, "vpermps", memopv8f32, v8f32>;
=20
 multiclass avx2_perm_imm<bits<8> opc, string OpcodeStr, PatFrag mem_frag,
-                         Intrinsic Int> {
-  def Yrr : AVX2AIi8<opc, MRMSrcReg, (outs VR256:$dst),
+                         ValueType OpVT> {
+  def Yri : AVX2AIi8<opc, MRMSrcReg, (outs VR256:$dst),
                      (ins VR256:$src1, i8imm:$src2),
                      !strconcat(OpcodeStr,
                          "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
-                     [(set VR256:$dst, (Int VR256:$src1, imm:$src2))]>, VE=
X;
-  def Yrm : AVX2AIi8<opc, MRMSrcMem, (outs VR256:$dst),
+                     [(set VR256:$dst,
+                       (OpVT (X86VPermi VR256:$src1, (i8 imm:$src2))))]>, =
VEX;
+  def Ymi : AVX2AIi8<opc, MRMSrcMem, (outs VR256:$dst),
                      (ins i256mem:$src1, i8imm:$src2),
                      !strconcat(OpcodeStr,
                          "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
-                     [(set VR256:$dst, (Int (mem_frag addr:$src1), imm:$sr=
c2))]>,
-                     VEX;
-}
-
-defm VPERMQ : avx2_perm_imm<0x00, "vpermq", memopv4i64, int_x86_avx2_permq=
>,
-                            VEX_W;
+                     [(set VR256:$dst,
+                       (OpVT (X86VPermi (mem_frag addr:$src1),
+                              (i8 imm:$src2))))]>, VEX;
+}
+
+defm VPERMQ : avx2_perm_imm<0x00, "vpermq", memopv4i64, v4i64>, VEX_W;
 let ExeDomain =3D SSEPackedDouble in
-defm VPERMPD : avx2_perm_imm<0x01, "vpermpd", memopv4f64, int_x86_avx2_per=
mpd>,
-                             VEX_W;
+defm VPERMPD : avx2_perm_imm<0x01, "vpermpd", memopv4f64, v4f64>, VEX_W;
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // VPERM2I128 - Permute Floating-Point Values in 128-bit chunks
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86Su=
btarget.cpp
--- a/head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp	Wed Jul 25 16:21:35=
 2012 +0300
@@ -424,7 +424,9 @@
            CodeGenOpt::Level OptLevel,
            TargetSubtargetInfo::AntiDepBreakMode& Mode,
            RegClassVector& CriticalPathRCs) const {
-  Mode =3D TargetSubtargetInfo::ANTIDEP_CRITICAL;
+  //TODO: change back to ANTIDEP_CRITICAL when the
+  // X86 subtarget properly sets up post RA liveness.
+  Mode =3D TargetSubtargetInfo::ANTIDEP_NONE;
   CriticalPathRCs.clear();
   return PostRAScheduler && OptLevel >=3D CodeGenOpt::Default;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/X86/X86Ta=
rgetMachine.cpp
--- a/head/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -145,34 +145,34 @@
=20
 bool X86PassConfig::addInstSelector() {
   // Install an instruction selector.
-  PM.add(createX86ISelDag(getX86TargetMachine(), getOptLevel()));
+  PM->add(createX86ISelDag(getX86TargetMachine(), getOptLevel()));
=20
   // For 32-bit, prepend instructions to set the "global base reg" for PIC.
   if (!getX86Subtarget().is64Bit())
-    PM.add(createGlobalBaseRegPass());
+    PM->add(createGlobalBaseRegPass());
=20
   return false;
 }
=20
 bool X86PassConfig::addPreRegAlloc() {
-  PM.add(createX86MaxStackAlignmentHeuristicPass());
+  PM->add(createX86MaxStackAlignmentHeuristicPass());
   return false;  // -print-machineinstr shouldn't print after this.
 }
=20
 bool X86PassConfig::addPostRegAlloc() {
-  PM.add(createX86FloatingPointStackifierPass());
+  PM->add(createX86FloatingPointStackifierPass());
   return true;  // -print-machineinstr should print after this.
 }
=20
 bool X86PassConfig::addPreEmitPass() {
   bool ShouldPrint =3D false;
   if (getOptLevel() !=3D CodeGenOpt::None && getX86Subtarget().hasSSE2()) {
-    PM.add(createExecutionDependencyFixPass(&X86::VR128RegClass));
+    PM->add(createExecutionDependencyFixPass(&X86::VR128RegClass));
     ShouldPrint =3D true;
   }
=20
   if (getX86Subtarget().hasAVX() && UseVZeroUpper) {
-    PM.add(createX86IssueVZeroUpperPass());
+    PM->add(createX86IssueVZeroUpperPass());
     ShouldPrint =3D true;
   }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Target/XCore/XCo=
reTargetMachine.cpp
--- a/head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -55,7 +55,7 @@
 }
=20
 bool XCorePassConfig::addInstSelector() {
-  PM.add(createXCoreISelDag(getXCoreTargetMachine(), getOptLevel()));
+  PM->add(createXCoreISelDag(getXCoreTargetMachine(), getOptLevel()));
   return false;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/IPO/I=
nternalize.cpp
--- a/head/contrib/llvm/lib/Transforms/IPO/Internalize.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/IPO/Internalize.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -123,6 +123,8 @@
   bool Changed =3D false;
=20
   // Never internalize functions which code-gen might insert.
+  // FIXME: We should probably add this (and the __stack_chk_guard) via so=
me
+  // type of call-back in CodeGen.
   ExternalNames.insert("__stack_chk_fail");
=20
   // Mark all functions not in the api as internal.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/IPO/P=
assManagerBuilder.cpp
--- a/head/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -35,6 +35,11 @@
 static cl::opt<bool>
 RunVectorization("vectorize", cl::desc("Run vectorization passes"));
=20
+static cl::opt<bool>
+UseGVNAfterVectorization("use-gvn-after-vectorization",
+  cl::init(false), cl::Hidden,
+  cl::desc("Run GVN instead of Early CSE after vectorization passes"));
+
 PassManagerBuilder::PassManagerBuilder() {
     OptLevel =3D 2;
     SizeLevel =3D 0;
@@ -182,8 +187,10 @@
   if (Vectorize) {
     MPM.add(createBBVectorizePass());
     MPM.add(createInstructionCombiningPass());
-    if (OptLevel > 1)
-      MPM.add(createGVNPass());                 // Remove redundancies
+    if (OptLevel > 1 && UseGVNAfterVectorization)
+      MPM.add(createGVNPass());                   // Remove redundancies
+    else
+      MPM.add(createEarlyCSEPass());              // Catch trivial redunda=
ncies
   }
=20
   MPM.add(createAggressiveDCEPass());         // Delete dead instructions
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Scala=
r/LoopStrengthReduce.cpp
--- a/head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -77,6 +77,12 @@
 #include <algorithm>
 using namespace llvm;
=20
+/// MaxIVUsers is an arbitrary threshold that provides an early opportunit=
iy for
+/// bail out. This threshold is far beyond the number of users that LSR can
+/// conceivably solve, so it should not affect generated code, but catches=
 the
+/// worst cases before LSR burns too much compile time and stack space.
+static const unsigned MaxIVUsers =3D 200;
+
 // Temporary flag to cleanup congruent phis after LSR phi expansion.
 // It's currently disabled until we can determine whether it's truly usefu=
l or
 // not. The flag should be removed after the v3.0 release.
@@ -4102,7 +4108,7 @@
       // Attempt to find an insert position in the middle of the block,
       // instead of at the end, so that it can be used for other expansion=
s.
       if (IDom =3D=3D Inst->getParent() &&
-          (!BetterPos || DT.dominates(BetterPos, Inst)))
+          (!BetterPos || !DT.dominates(Inst, BetterPos)))
         BetterPos =3D llvm::next(BasicBlock::iterator(Inst));
     }
     if (!AllDominate)
@@ -4519,6 +4525,17 @@
   // If there's no interesting work to be done, bail early.
   if (IU.empty()) return;
=20
+  // If there's too much analysis to be done, bail early. We won't be able=
 to
+  // model the problem anyway.
+  unsigned NumUsers =3D 0;
+  for (IVUsers::const_iterator UI =3D IU.begin(), E =3D IU.end(); UI !=3D =
E; ++UI) {
+    if (++NumUsers > MaxIVUsers) {
+      DEBUG(dbgs() << "LSR skipping loop, too many IV Users in " << *L
+            << "\n");
+      return;
+    }
+  }
+
 #ifndef NDEBUG
   // All dominating loops must have preheaders, or SCEVExpander may not be=
 able
   // to materialize an AddRecExpr whose Start is an outer AddRecExpr.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Scala=
r/LoopUnswitch.cpp
--- a/head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -624,11 +624,10 @@
 /// LoopCond =3D=3D Val to simplify the loop.  If we decide that this is p=
rofitable,
 /// unswitch the loop, reprocess the pieces, then return true.
 bool LoopUnswitch::UnswitchIfProfitable(Value *LoopCond, Constant *Val) {
-
   Function *F =3D loopHeader->getParent();
-
   Constant *CondVal =3D 0;
   BasicBlock *ExitBlock =3D 0;
+
   if (IsTrivialUnswitchCondition(LoopCond, &CondVal, &ExitBlock)) {
     // If the condition is trivial, always unswitch. There is no code grow=
th
     // for this case.
@@ -688,8 +687,8 @@
=20
   // If either edge is critical, split it. This helps preserve LoopSimplify
   // form for enclosing loops.
-  SplitCriticalEdge(BI, 0, this);
-  SplitCriticalEdge(BI, 1, this);
+  SplitCriticalEdge(BI, 0, this, false, false, true);
+  SplitCriticalEdge(BI, 1, this, false, false, true);
 }
=20
 /// UnswitchTrivialCondition - Given a loop that has a trivial unswitchable
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Scala=
r/ObjCARC.cpp
--- a/head/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -162,6 +162,7 @@
     IC_MoveWeak,            ///< objc_moveWeak (derived)
     IC_CopyWeak,            ///< objc_copyWeak (derived)
     IC_DestroyWeak,         ///< objc_destroyWeak (derived)
+    IC_StoreStrong,         ///< objc_storeStrong (derived)
     IC_CallOrUser,          ///< could call objc_release and/or "use" poin=
ters
     IC_Call,                ///< could call objc_release
     IC_User,                ///< could "use" a pointer
@@ -262,6 +263,7 @@
               return StringSwitch<InstructionClass>(F->getName())
                      .Case("objc_storeWeak",             IC_StoreWeak)
                      .Case("objc_initWeak",              IC_InitWeak)
+                     .Case("objc_storeStrong",           IC_StoreStrong)
                      .Default(IC_CallOrUser);
             // Second argument is i8**.
             if (PointerType *Pte1 =3D dyn_cast<PointerType>(ETy1))
@@ -618,22 +620,35 @@
       const User *UUser =3D *UI;
       // Special - Use by a call (callee or argument) is not considered
       // to be an escape.
-      if (isa<CallInst>(UUser) || isa<InvokeInst>(UUser))
-        continue;
-      // Use by an instruction which copies the value is an escape if the
-      // result is an escape.
-      if (isa<BitCastInst>(UUser) || isa<GetElementPtrInst>(UUser) ||
-          isa<PHINode>(UUser) || isa<SelectInst>(UUser)) {
-        Worklist.push_back(UUser);
+      switch (GetBasicInstructionClass(UUser)) {
+      case IC_StoreWeak:
+      case IC_InitWeak:
+      case IC_StoreStrong:
+      case IC_Autorelease:
+      case IC_AutoreleaseRV:
+        // These special functions make copies of their pointer arguments.
+        return true;
+      case IC_User:
+      case IC_None:
+        // Use by an instruction which copies the value is an escape if the
+        // result is an escape.
+        if (isa<BitCastInst>(UUser) || isa<GetElementPtrInst>(UUser) ||
+            isa<PHINode>(UUser) || isa<SelectInst>(UUser)) {
+          Worklist.push_back(UUser);
+          continue;
+        }
+        // Use by a load is not an escape.
+        if (isa<LoadInst>(UUser))
+          continue;
+        // Use by a store is not an escape if the use is the address.
+        if (const StoreInst *SI =3D dyn_cast<StoreInst>(UUser))
+          if (V !=3D SI->getValueOperand())
+            continue;
+        break;
+      default:
+        // Regular calls and other stuff are not considered escapes.
         continue;
       }
-      // Use by a load is not an escape.
-      if (isa<LoadInst>(UUser))
-        continue;
-      // Use by a store is not an escape if the use is the address.
-      if (const StoreInst *SI =3D dyn_cast<StoreInst>(UUser))
-        if (V !=3D SI->getValueOperand())
-          continue;
       // Otherwise, conservatively assume an escape.
       return true;
     }
@@ -883,7 +898,7 @@
       // These calls return their argument verbatim, as a low-level
       // optimization. However, this makes high-level optimizations
       // harder. Undo any uses of this optimization that the front-end
-      // emitted here. We'll redo them in a later pass.
+      // emitted here. We'll redo them in the contract pass.
       Changed =3D true;
       Inst->replaceAllUsesWith(cast<CallInst>(Inst)->getArgOperand(0));
       break;
@@ -997,7 +1012,11 @@
     return false;
=20
   // Find the llvm.global_ctors variable, as the first step in
-  // identifying the global constructors.
+  // identifying the global constructors. In theory, unnecessary autorelea=
se
+  // pools could occur anywhere, but in practice it's pretty rare. Global
+  // ctors are a place where autorelease pools get inserted automatically,
+  // so it's pretty common for them to be unnecessary, and it's pretty
+  // profitable to eliminate them.
   GlobalVariable *GV =3D M.getGlobalVariable("llvm.global_ctors");
   if (!GV)
     return false;
@@ -2263,6 +2282,7 @@
     case IC_DestroyWeak: {
       CallInst *CI =3D cast<CallInst>(Inst);
       if (isNullOrUndef(CI->getArgOperand(0))) {
+        Changed =3D true;
         Type *Ty =3D CI->getArgOperand(0)->getType();
         new StoreInst(UndefValue::get(cast<PointerType>(Ty)->getElementTyp=
e()),
                       Constant::getNullValue(Ty),
@@ -2278,6 +2298,7 @@
       CallInst *CI =3D cast<CallInst>(Inst);
       if (isNullOrUndef(CI->getArgOperand(0)) ||
           isNullOrUndef(CI->getArgOperand(1))) {
+        Changed =3D true;
         Type *Ty =3D CI->getArgOperand(0)->getType();
         new StoreInst(UndefValue::get(cast<PointerType>(Ty)->getElementTyp=
e()),
                       Constant::getNullValue(Ty),
@@ -3165,6 +3186,8 @@
   }
 }
=20
+/// PerformCodePlacement - Identify pairings between the retains and relea=
ses,
+/// and delete and/or move them.
 bool
 ObjCARCOpt::PerformCodePlacement(DenseMap<const BasicBlock *, BBState>
                                    &BBStates,
@@ -3178,6 +3201,7 @@
   SmallVector<Instruction *, 4> NewReleases;
   SmallVector<Instruction *, 8> DeadInsts;
=20
+  // Visit each retain.
   for (MapVector<Value *, RRInfo>::const_iterator I =3D Retains.begin(),
        E =3D Retains.end(); I !=3D E; ++I) {
     Value *V =3D I->first;
@@ -3651,6 +3675,7 @@
   if (!EnableARCOpts)
     return false;
=20
+  // If nothing in the Module uses ARC, don't do anything.
   Run =3D ModuleHasARC(M);
   if (!Run)
     return false;
@@ -3985,6 +4010,7 @@
 }
=20
 bool ObjCARCContract::doInitialization(Module &M) {
+  // If nothing in the Module uses ARC, don't do anything.
   Run =3D ModuleHasARC(M);
   if (!Run)
     return false;
@@ -4060,6 +4086,7 @@
       --BBI;
       while (isNoopInstruction(BBI)) --BBI;
       if (&*BBI =3D=3D GetObjCArg(Inst)) {
+        Changed =3D true;
         InlineAsm *IA =3D
           InlineAsm::get(FunctionType::get(Type::getVoidTy(Inst->getContex=
t()),
                                            /*isVarArg=3D*/false),
@@ -4109,6 +4136,13 @@
         Use &U =3D UI.getUse();
         unsigned OperandNo =3D UI.getOperandNo();
         ++UI; // Increment UI now, because we may unlink its element.
+
+        // If the call's return value dominates a use of the call's argume=
nt
+        // value, rewrite the use to use the return value. We check for
+        // reachability here because an unreachable call is considered to
+        // trivially dominate itself, which would lead us to rewriting its
+        // argument in terms of its return value, which would lead to
+        // infinite loops in GetObjCArg.
         if (DT->isReachableFromEntry(U) &&
             DT->dominates(Inst, U)) {
           Changed =3D true;
@@ -4123,6 +4157,9 @@
             if (Replacement->getType() !=3D UseTy)
               Replacement =3D new BitCastInst(Replacement, UseTy, "",
                                             &BB->back());
+            // While we're here, rewrite all edges for this PHI, rather
+            // than just one use at a time, to minimize the number of
+            // bitcasts we emit.
             for (unsigned i =3D 0, e =3D PHI->getNumIncomingValues();
                  i !=3D e; ++i)
               if (PHI->getIncomingBlock(i) =3D=3D BB) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Scala=
r/Reassociate.cpp
--- a/head/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -559,7 +559,8 @@
=20
 /// EmitAddTreeOfValues - Emit a tree of add instructions, summing Ops tog=
ether
 /// and returning the result.  Insert the tree before I.
-static Value *EmitAddTreeOfValues(Instruction *I, SmallVectorImpl<Value*> =
&Ops){
+static Value *EmitAddTreeOfValues(Instruction *I,
+                                  SmallVectorImpl<WeakVH> &Ops){
   if (Ops.size() =3D=3D 1) return Ops.back();
  =20
   Value *V1 =3D Ops.back();
@@ -833,7 +834,7 @@
     // from an expression will drop a use of maxocc, and this can cause=20
     // RemoveFactorFromExpression on successive values to behave different=
ly.
     Instruction *DummyInst =3D BinaryOperator::CreateAdd(MaxOccVal, MaxOcc=
Val);
-    SmallVector<Value*, 4> NewMulOps;
+    SmallVector<WeakVH, 4> NewMulOps;
     for (unsigned i =3D 0; i !=3D Ops.size(); ++i) {
       // Only try to remove factors from expressions we're allowed to.
       BinaryOperator *BOp =3D dyn_cast<BinaryOperator>(Ops[i].Op);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Scala=
r/SimplifyLibCalls.cpp
--- a/head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp	Wed Jul =
25 16:21:35 2012 +0300
@@ -1583,21 +1583,16 @@
   Optimizations["llvm.exp2.f64"] =3D &Exp2;
   Optimizations["llvm.exp2.f32"] =3D &Exp2;
=20
-#ifdef HAVE_FLOORF
-  Optimizations["floor"] =3D &UnaryDoubleFP;
-#endif
-#ifdef HAVE_CEILF
-  Optimizations["ceil"] =3D &UnaryDoubleFP;
-#endif
-#ifdef HAVE_ROUNDF
-  Optimizations["round"] =3D &UnaryDoubleFP;
-#endif
-#ifdef HAVE_RINTF
-  Optimizations["rint"] =3D &UnaryDoubleFP;
-#endif
-#ifdef HAVE_NEARBYINTF
-  Optimizations["nearbyint"] =3D &UnaryDoubleFP;
-#endif
+  if (TLI->has(LibFunc::floor) && TLI->has(LibFunc::floorf))
+    Optimizations["floor"] =3D &UnaryDoubleFP;
+  if (TLI->has(LibFunc::ceil) && TLI->has(LibFunc::ceilf))
+    Optimizations["ceil"] =3D &UnaryDoubleFP;
+  if (TLI->has(LibFunc::round) && TLI->has(LibFunc::roundf))
+    Optimizations["round"] =3D &UnaryDoubleFP;
+  if (TLI->has(LibFunc::rint) && TLI->has(LibFunc::rintf))
+    Optimizations["rint"] =3D &UnaryDoubleFP;
+  if (TLI->has(LibFunc::nearbyint) && TLI->has(LibFunc::nearbyintf))
+    Optimizations["nearbyint"] =3D &UnaryDoubleFP;
=20
   // Integer Optimizations
   Optimizations["ffs"] =3D &FFS;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Utils=
/BreakCriticalEdges.cpp
--- a/head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -117,33 +117,38 @@
   return false;
 }
=20
-/// CreatePHIsForSplitLoopExit - When a loop exit edge is split, LCSSA form
+/// createPHIsForSplitLoopExit - When a loop exit edge is split, LCSSA form
 /// may require new PHIs in the new exit block. This function inserts the
-/// new PHIs, as needed.  Preds is a list of preds inside the loop, SplitBB
+/// new PHIs, as needed. Preds is a list of preds inside the loop, SplitBB
 /// is the new loop exit block, and DestBB is the old loop exit, now the
 /// successor of SplitBB.
-static void CreatePHIsForSplitLoopExit(SmallVectorImpl<BasicBlock *> &Pred=
s,
+static void createPHIsForSplitLoopExit(SmallVectorImpl<BasicBlock *> &Pred=
s,
                                        BasicBlock *SplitBB,
                                        BasicBlock *DestBB) {
   // SplitBB shouldn't have anything non-trivial in it yet.
-  assert(SplitBB->getFirstNonPHI() =3D=3D SplitBB->getTerminator() &&
-         "SplitBB has non-PHI nodes!");
+  assert((SplitBB->getFirstNonPHI() =3D=3D SplitBB->getTerminator() ||
+          SplitBB->isLandingPad()) && "SplitBB has non-PHI nodes!");
=20
-  // For each PHI in the destination block...
+  // For each PHI in the destination block.
   for (BasicBlock::iterator I =3D DestBB->begin();
        PHINode *PN =3D dyn_cast<PHINode>(I); ++I) {
     unsigned Idx =3D PN->getBasicBlockIndex(SplitBB);
     Value *V =3D PN->getIncomingValue(Idx);
+
     // If the input is a PHI which already satisfies LCSSA, don't create
     // a new one.
     if (const PHINode *VP =3D dyn_cast<PHINode>(V))
       if (VP->getParent() =3D=3D SplitBB)
         continue;
+
     // Otherwise a new PHI is needed. Create one and populate it.
-    PHINode *NewPN =3D PHINode::Create(PN->getType(), Preds.size(), "split=
",
-                                     SplitBB->getTerminator());
+    PHINode *NewPN =3D
+      PHINode::Create(PN->getType(), Preds.size(), "split",
+                      SplitBB->isLandingPad() ?
+                      SplitBB->begin() : SplitBB->getTerminator());
     for (unsigned i =3D 0, e =3D Preds.size(); i !=3D e; ++i)
       NewPN->addIncoming(V, Preds[i]);
+
     // Update the original PHI.
     PN->setIncomingValue(Idx, NewPN);
   }
@@ -168,7 +173,8 @@
 ///
 BasicBlock *llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum,
                                     Pass *P, bool MergeIdenticalEdges,
-                                    bool DontDeleteUselessPhis) {
+                                    bool DontDeleteUselessPhis,
+                                    bool SplitLandingPads) {
   if (!isCriticalEdge(TI, SuccNum, MergeIdenticalEdges)) return 0;
=20
   assert(!isa<IndirectBrInst>(TI) &&
@@ -338,7 +344,7 @@
         if (P->mustPreserveAnalysisID(LCSSAID)) {
           SmallVector<BasicBlock *, 1> OrigPred;
           OrigPred.push_back(TIBB);
-          CreatePHIsForSplitLoopExit(OrigPred, NewBB, DestBB);
+          createPHIsForSplitLoopExit(OrigPred, NewBB, DestBB);
         }
=20
         // For each unique exit block...
@@ -371,10 +377,19 @@
           // getUniqueExitBlocks above because that depends on LoopSimplify
           // form, which we're in the process of restoring!
           if (!Preds.empty() && HasPredOutsideOfLoop) {
-            BasicBlock *NewExitBB =3D
-              SplitBlockPredecessors(Exit, Preds, "split", P);
-            if (P->mustPreserveAnalysisID(LCSSAID))
-              CreatePHIsForSplitLoopExit(Preds, NewExitBB, Exit);
+            if (!Exit->isLandingPad()) {
+              BasicBlock *NewExitBB =3D
+                SplitBlockPredecessors(Exit, Preds, "split", P);
+              if (P->mustPreserveAnalysisID(LCSSAID))
+                createPHIsForSplitLoopExit(Preds, NewExitBB, Exit);
+            } else if (SplitLandingPads) {
+              SmallVector<BasicBlock*, 8> NewBBs;
+              SplitLandingPadPredecessors(Exit, Preds,
+                                          ".split1", ".split2",
+                                          P, NewBBs);
+              if (P->mustPreserveAnalysisID(LCSSAID))
+                createPHIsForSplitLoopExit(Preds, NewBBs[0], Exit);
+            }
           }
         }
       }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/Transforms/Vecto=
rize/BBVectorize.cpp
--- a/head/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp	Wed Jul 25=
 16:21:35 2012 +0300
@@ -84,6 +84,10 @@
   cl::desc("Don't try to vectorize floating-point values"));
=20
 static cl::opt<bool>
+NoPointers("bb-vectorize-no-pointers", cl::init(false), cl::Hidden,
+  cl::desc("Don't try to vectorize pointer values"));
+
+static cl::opt<bool>
 NoCasts("bb-vectorize-no-casts", cl::init(false), cl::Hidden,
   cl::desc("Don't try to vectorize casting (conversion) operations"));
=20
@@ -96,6 +100,14 @@
   cl::desc("Don't try to vectorize the fused-multiply-add intrinsic"));
=20
 static cl::opt<bool>
+NoSelect("bb-vectorize-no-select", cl::init(false), cl::Hidden,
+  cl::desc("Don't try to vectorize select instructions"));
+
+static cl::opt<bool>
+NoGEP("bb-vectorize-no-gep", cl::init(false), cl::Hidden,
+  cl::desc("Don't try to vectorize getelementptr instructions"));
+
+static cl::opt<bool>
 NoMemOps("bb-vectorize-no-mem-ops", cl::init(false), cl::Hidden,
   cl::desc("Don't try to vectorize loads and stores"));
=20
@@ -546,11 +558,21 @@
         return false;
=20
       Type *SrcTy =3D C->getSrcTy();
-      if (!SrcTy->isSingleValueType() || SrcTy->isPointerTy())
+      if (!SrcTy->isSingleValueType())
         return false;
=20
       Type *DestTy =3D C->getDestTy();
-      if (!DestTy->isSingleValueType() || DestTy->isPointerTy())
+      if (!DestTy->isSingleValueType())
+        return false;
+    } else if (isa<SelectInst>(I)) {
+      if (!Config.VectorizeSelect)
+        return false;
+    } else if (GetElementPtrInst *G =3D dyn_cast<GetElementPtrInst>(I)) {
+      if (!Config.VectorizeGEP)
+        return false;
+
+      // Currently, vector GEPs exist only with one index.
+      if (G->getNumIndices() !=3D 1)
         return false;
     } else if (!(I->isBinaryOp() || isa<ShuffleVectorInst>(I) ||
         isa<ExtractElementInst>(I) || isa<InsertElementInst>(I))) {
@@ -590,6 +612,11 @@
         && (T1->isFPOrFPVectorTy() || T2->isFPOrFPVectorTy()))
       return false;
=20
+    if ((!Config.VectorizePointers || TD =3D=3D 0) &&
+        (T1->getScalarType()->isPointerTy() ||
+         T2->getScalarType()->isPointerTy()))
+      return false;
+
     if (T1->getPrimitiveSizeInBits() > Config.VectorBits/2 ||
         T2->getPrimitiveSizeInBits() > Config.VectorBits/2)
       return false;
@@ -828,16 +855,33 @@
                       std::vector<Value *> &PairableInsts,
                       std::multimap<ValuePair, ValuePair> &ConnectedPairs,
                       ValuePair P) {
+    StoreInst *SI, *SJ;
+
     // For each possible pairing for this variable, look at the uses of
     // the first value...
     for (Value::use_iterator I =3D P.first->use_begin(),
          E =3D P.first->use_end(); I !=3D E; ++I) {
+      if (isa<LoadInst>(*I)) {
+        // A pair cannot be connected to a load because the load only take=
s one
+        // operand (the address) and it is a scalar even after vectorizati=
on.
+        continue;
+      } else if ((SI =3D dyn_cast<StoreInst>(*I)) &&
+                 P.first =3D=3D SI->getPointerOperand()) {
+        // Similarly, a pair cannot be connected to a store through its
+        // pointer operand.
+        continue;
+      }
+
       VPIteratorPair IPairRange =3D CandidatePairs.equal_range(*I);
=20
       // For each use of the first variable, look for uses of the second
       // variable...
       for (Value::use_iterator J =3D P.second->use_begin(),
            E2 =3D P.second->use_end(); J !=3D E2; ++J) {
+        if ((SJ =3D dyn_cast<StoreInst>(*J)) &&
+            P.second =3D=3D SJ->getPointerOperand())
+          continue;
+
         VPIteratorPair JPairRange =3D CandidatePairs.equal_range(*J);
=20
         // Look for <I, J>:
@@ -853,6 +897,10 @@
       // Look for cases where just the first value in the pair is used by
       // both members of another pair (splatting).
       for (Value::use_iterator J =3D P.first->use_begin(); J !=3D E; ++J) {
+        if ((SJ =3D dyn_cast<StoreInst>(*J)) &&
+            P.first =3D=3D SJ->getPointerOperand())
+          continue;
+
         if (isSecondInIteratorPair<Value*>(*J, IPairRange))
           ConnectedPairs.insert(VPPair(P, ValuePair(*I, *J)));
       }
@@ -863,9 +911,19 @@
     // both members of another pair (splatting).
     for (Value::use_iterator I =3D P.second->use_begin(),
          E =3D P.second->use_end(); I !=3D E; ++I) {
+      if (isa<LoadInst>(*I))
+        continue;
+      else if ((SI =3D dyn_cast<StoreInst>(*I)) &&
+               P.second =3D=3D SI->getPointerOperand())
+        continue;
+
       VPIteratorPair IPairRange =3D CandidatePairs.equal_range(*I);
=20
       for (Value::use_iterator J =3D P.second->use_begin(); J !=3D E; ++J)=
 {
+        if ((SJ =3D dyn_cast<StoreInst>(*J)) &&
+            P.second =3D=3D SJ->getPointerOperand())
+          continue;
+
         if (isSecondInIteratorPair<Value*>(*J, IPairRange))
           ConnectedPairs.insert(VPPair(P, ValuePair(*I, *J)));
       }
@@ -1891,9 +1949,12 @@
   VectorBits =3D ::VectorBits;
   VectorizeInts =3D !::NoInts;
   VectorizeFloats =3D !::NoFloats;
+  VectorizePointers =3D !::NoPointers;
   VectorizeCasts =3D !::NoCasts;
   VectorizeMath =3D !::NoMath;
   VectorizeFMA =3D !::NoFMA;
+  VectorizeSelect =3D !::NoSelect;
+  VectorizeGEP =3D !::NoGEP;
   VectorizeMemOps =3D !::NoMemOps;
   AlignedOnly =3D ::AlignedOnly;
   ReqChainDepth=3D ::ReqChainDepth;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/VMCore/AutoUpgra=
de.cpp
--- a/head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp	Wed Jul 25 16:21:35 2012=
 +0300
@@ -18,9 +18,6 @@
 #include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
 #include "llvm/IntrinsicInst.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/CallSite.h"
 #include "llvm/Support/CFG.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -59,7 +56,8 @@
     if (Name.startswith("x86.sse2.pcmpeq.") ||
         Name.startswith("x86.sse2.pcmpgt.") ||
         Name.startswith("x86.avx2.pcmpeq.") ||
-        Name.startswith("x86.avx2.pcmpgt.")) {
+        Name.startswith("x86.avx2.pcmpgt.") ||
+        Name.startswith("x86.avx.vpermil.")) {
       NewFn =3D 0;
       return true;
     }
@@ -121,7 +119,42 @@
       // need to sign extend since icmp returns vector of i1
       Rep =3D Builder.CreateSExt(Rep, CI->getType(), "");
     } else {
-      llvm_unreachable("Unknown function for CallInst upgrade.");
+      bool PD128 =3D false, PD256 =3D false, PS128 =3D false, PS256 =3D fa=
lse;
+      if (Name.startswith("llvm.x86.avx.vpermil.pd.256"))
+        PD256 =3D true;
+      else if (Name.startswith("llvm.x86.avx.vpermil.pd"))
+        PD128 =3D true;
+      else if (Name.startswith("llvm.x86.avx.vpermil.ps.256"))
+        PS256 =3D true;
+      else if (Name.startswith("llvm.x86.avx.vpermil.ps"))
+        PS128 =3D true;
+
+      if (PD256 || PD128 || PS256 || PS128) {
+        Value *Op0 =3D CI->getArgOperand(0);
+        unsigned Imm =3D cast<ConstantInt>(CI->getArgOperand(1))->getZExtV=
alue();
+        SmallVector<Constant*, 8> Idxs;
+
+        if (PD128)
+          for (unsigned i =3D 0; i !=3D 2; ++i)
+            Idxs.push_back(Builder.getInt32((Imm >> i) & 0x1));
+        else if (PD256)
+          for (unsigned l =3D 0; l !=3D 4; l+=3D2)
+            for (unsigned i =3D 0; i !=3D 2; ++i)
+              Idxs.push_back(Builder.getInt32(((Imm >> (l+i)) & 0x1) + l));
+        else if (PS128)
+          for (unsigned i =3D 0; i !=3D 4; ++i)
+            Idxs.push_back(Builder.getInt32((Imm >> (2 * i)) & 0x3));
+        else if (PS256)
+          for (unsigned l =3D 0; l !=3D 8; l+=3D4)
+            for (unsigned i =3D 0; i !=3D 4; ++i)
+              Idxs.push_back(Builder.getInt32(((Imm >> (2 * i)) & 0x3) + l=
));
+        else
+          llvm_unreachable("Unexpected function");
+
+        Rep =3D Builder.CreateShuffleVector(Op0, Op0, ConstantVector::get(=
Idxs));
+      } else {
+        llvm_unreachable("Unknown function for CallInst upgrade.");
+      }
     }
=20
     CI->replaceAllUsesWith(Rep);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/VMCore/Instructi=
ons.cpp
--- a/head/contrib/llvm/lib/VMCore/Instructions.cpp	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/llvm/lib/VMCore/Instructions.cpp	Wed Jul 25 16:21:35 201=
2 +0300
@@ -2003,6 +2003,23 @@
 }
=20
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+//                             FPMathOperator Class
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+/// getFPAccuracy - Get the maximum error permitted by this operation in U=
LPs.
+/// An accuracy of 0.0 means that the operation should be performed with t=
he
+/// default precision.
+float FPMathOperator::getFPAccuracy() const {
+  const MDNode *MD =3D
+    cast<Instruction>(this)->getMetadata(LLVMContext::MD_fpmath);
+  if (!MD)
+    return 0.0;
+  ConstantFP *Accuracy =3D cast<ConstantFP>(MD->getOperand(0));
+  return Accuracy->getValueAPF().convertToFloat();
+}
+
+
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 //                                CastInst Class
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/VMCore/LLVMConte=
xt.cpp
--- a/head/contrib/llvm/lib/VMCore/LLVMContext.cpp	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/llvm/lib/VMCore/LLVMContext.cpp	Wed Jul 25 16:21:35 2012=
 +0300
@@ -44,9 +44,9 @@
   unsigned ProfID =3D getMDKindID("prof");
   assert(ProfID =3D=3D MD_prof && "prof kind id drifted"); (void)ProfID;
=20
-  // Create the 'fpaccuracy' metadata kind.
-  unsigned FPAccuracyID =3D getMDKindID("fpaccuracy");
-  assert(FPAccuracyID =3D=3D MD_fpaccuracy && "fpaccuracy kind id drifted"=
);
+  // Create the 'fpmath' metadata kind.
+  unsigned FPAccuracyID =3D getMDKindID("fpmath");
+  assert(FPAccuracyID =3D=3D MD_fpmath && "fpmath kind id drifted");
   (void)FPAccuracyID;
=20
   // Create the 'range' metadata kind.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/VMCore/Module.cpp
--- a/head/contrib/llvm/lib/VMCore/Module.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/lib/VMCore/Module.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -434,7 +434,7 @@
 //
=20
=20
-// dropAllReferences() - This function causes all the subelementss to "let=
 go"
+// dropAllReferences() - This function causes all the subelements to "let =
go"
 // of all references that they are maintaining.  This allows one to 'delet=
e' a
 // whole module at a time, even though there may be circular references...=
 first
 // all references are dropped, and all use counts go to zero.  Then everyt=
hing
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/lib/VMCore/Verifier.=
cpp
--- a/head/contrib/llvm/lib/VMCore/Verifier.cpp	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/llvm/lib/VMCore/Verifier.cpp	Wed Jul 25 16:21:35 2012 +0=
300
@@ -1653,16 +1653,18 @@
     }
   }
=20
-  if (MDNode *MD =3D I.getMetadata(LLVMContext::MD_fpaccuracy)) {
+  if (MDNode *MD =3D I.getMetadata(LLVMContext::MD_fpmath)) {
     Assert1(I.getType()->isFPOrFPVectorTy(),
-            "fpaccuracy requires a floating point result!", &I);
-    Assert1(MD->getNumOperands() =3D=3D 1, "fpaccuracy takes one operand!"=
, &I);
-    ConstantFP *Op =3D dyn_cast_or_null<ConstantFP>(MD->getOperand(0));
-    Assert1(Op, "fpaccuracy ULPs not a floating point number!", &I);
-    APFloat ULPs =3D Op->getValueAPF();
-    Assert1(ULPs.isNormal() || ULPs.isZero(),
-            "fpaccuracy ULPs not a normal number!", &I);
-    Assert1(!ULPs.isNegative(), "fpaccuracy ULPs is negative!", &I);
+            "fpmath requires a floating point result!", &I);
+    Assert1(MD->getNumOperands() =3D=3D 1, "fpmath takes one operand!", &I=
);
+    Value *Op0 =3D MD->getOperand(0);
+    if (ConstantFP *CFP0 =3D dyn_cast_or_null<ConstantFP>(Op0)) {
+      APFloat Accuracy =3D CFP0->getValueAPF();
+      Assert1(Accuracy.isNormal() && !Accuracy.isNegative(),
+              "fpmath accuracy not a positive number!", &I);
+    } else {
+      Assert1(false, "invalid fpmath accuracy!", &I);
+    }
   }
=20
   MDNode *MD =3D I.getMetadata(LLVMContext::MD_range);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/bugpoint/ToolR=
unner.cpp
--- a/head/contrib/llvm/tools/bugpoint/ToolRunner.cpp	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/tools/bugpoint/ToolRunner.cpp	Wed Jul 25 16:21:35 2=
012 +0300
@@ -128,7 +128,7 @@
       ErrorFile.close();
     }
=20
-    errs() << OS;
+    errs() << OS.str();
   }
=20
   return ReturnCode;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/Decl.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/Decl.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/Decl.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -242,11 +242,7 @@
     bool visibilityExplicit() const { return explicit_; }
=20
     void setLinkage(Linkage L) { linkage_ =3D L; }
-    void setVisibility(Visibility V) { visibility_ =3D V; }
     void setVisibility(Visibility V, bool E) { visibility_ =3D V; explicit=
_ =3D E; }
-    void setVisibility(LinkageInfo Other) {
-      setVisibility(Other.visibility(), Other.visibilityExplicit());
-    }
=20
     void mergeLinkage(Linkage L) {
       setLinkage(minLinkage(linkage(), L));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/DeclBase.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h	Wed Jul 25=
 16:21:35 2012 +0300
@@ -861,7 +861,6 @@
   void dumpXML(raw_ostream &OS) const;
=20
 private:
-  const Attr *getAttrsImpl() const;
   void setAttrsImpl(const AttrVec& Attrs, ASTContext &Ctx);
   void setDeclContextsImpl(DeclContext *SemaDC, DeclContext *LexicalDC,
                            ASTContext &Ctx);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/DeclLookups.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/DeclLookups.h	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/DeclLookups.h	Wed Jul=
 25 16:21:35 2012 +0300
@@ -67,6 +67,8 @@
=20
 DeclContext::all_lookups_iterator DeclContext::lookups_begin() const {
   DeclContext *Primary =3D const_cast<DeclContext*>(this)->getPrimaryConte=
xt();
+  if (hasExternalVisibleStorage())
+    getParentASTContext().getExternalSource()->completeVisibleDeclsMap(Pri=
mary);
   if (StoredDeclsMap *Map =3D Primary->buildLookup())
     return all_lookups_iterator(Map->begin(), Map->end());
   return all_lookups_iterator();
@@ -74,6 +76,8 @@
=20
 DeclContext::all_lookups_iterator DeclContext::lookups_end() const {
   DeclContext *Primary =3D const_cast<DeclContext*>(this)->getPrimaryConte=
xt();
+  if (hasExternalVisibleStorage())
+    getParentASTContext().getExternalSource()->completeVisibleDeclsMap(Pri=
mary);
   if (StoredDeclsMap *Map =3D Primary->buildLookup())
     return all_lookups_iterator(Map->end(), Map->end());
   return all_lookups_iterator();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/Expr.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/Expr.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/Expr.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -581,16 +581,6 @@
   /// member expression.
   static QualType findBoundMemberType(const Expr *expr);
=20
-  /// \brief Result type of CanThrow().
-  enum CanThrowResult {
-    CT_Cannot,
-    CT_Dependent,
-    CT_Can
-  };
-  /// \brief Test if this expression, if evaluated, might throw, according=
 to
-  ///        the rules of C++ [expr.unary.noexcept].
-  CanThrowResult CanThrow(ASTContext &C) const;
-
   /// IgnoreImpCasts - Skip past any implicit casts which might
   /// surround this expression.  Only skips ImplicitCastExprs.
   Expr *IgnoreImpCasts() LLVM_READONLY;
@@ -3608,6 +3598,10 @@
     return LBraceLoc.isValid() && RBraceLoc.isValid();
   }
=20
+  // Is this an initializer for an array of characters, initialized by a s=
tring
+  // literal or an @encode?
+  bool isStringLiteralInit() const;
+
   SourceLocation getLBraceLoc() const { return LBraceLoc; }
   void setLBraceLoc(SourceLocation Loc) { LBraceLoc =3D Loc; }
   SourceLocation getRBraceLoc() const { return RBraceLoc; }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/ExternalASTSource.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -126,6 +126,12 @@
   virtual DeclContextLookupResult
   FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Na=
me);
=20
+  /// \brief Ensures that the table of all visible declarations inside this
+  /// context is up to date.
+  ///
+  /// The default implementation of this functino is a no-op.
+  virtual void completeVisibleDeclsMap(const DeclContext *DC);
+
   /// \brief Finds all declarations lexically contained within the given
   /// DeclContext, after applying an optional filter predicate.
   ///
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/RecursiveASTVisitor.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h=
	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h=
	Wed Jul 25 16:21:35 2012 +0300
@@ -1870,6 +1870,7 @@
 DEF_TRAVERSE_STMT(IfStmt, { })
 DEF_TRAVERSE_STMT(IndirectGotoStmt, { })
 DEF_TRAVERSE_STMT(LabelStmt, { })
+DEF_TRAVERSE_STMT(AttributedStmt, { })
 DEF_TRAVERSE_STMT(NullStmt, { })
 DEF_TRAVERSE_STMT(ObjCAtCatchStmt, { })
 DEF_TRAVERSE_STMT(ObjCAtFinallyStmt, { })
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/Stmt.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -20,6 +20,7 @@
 #include "clang/AST/StmtIterator.h"
 #include "clang/AST/DeclGroup.h"
 #include "clang/AST/ASTContext.h"
+#include "clang/AST/Attr.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/raw_ostream.h"
@@ -794,6 +795,47 @@
 };
=20
=20
+/// \brief Represents an attribute applied to a statement.
+///
+/// Represents an attribute applied to a statement. For example:
+///   [[omp::for(...)]] for (...) { ... }
+///
+class AttributedStmt : public Stmt {
+  Stmt *SubStmt;
+  SourceLocation AttrLoc;
+  AttrVec Attrs;
+  // TODO: It can be done as Attr *Attrs[1]; and variable size array as in
+  // StringLiteral
+
+  friend class ASTStmtReader;
+
+public:
+  AttributedStmt(SourceLocation loc, const AttrVec &attrs, Stmt *substmt)
+    : Stmt(AttributedStmtClass), SubStmt(substmt), AttrLoc(loc), Attrs(att=
rs) {
+  }
+
+  // \brief Build an empty attributed statement.
+  explicit AttributedStmt(EmptyShell Empty)
+    : Stmt(AttributedStmtClass, Empty) {
+  }
+
+  SourceLocation getAttrLoc() const { return AttrLoc; }
+  const AttrVec &getAttrs() const { return Attrs; }
+  Stmt *getSubStmt() { return SubStmt; }
+  const Stmt *getSubStmt() const { return SubStmt; }
+
+  SourceRange getSourceRange() const LLVM_READONLY {
+    return SourceRange(AttrLoc, SubStmt->getLocEnd());
+  }
+  child_range children() { return child_range(&SubStmt, &SubStmt + 1); }
+
+  static bool classof(const Stmt *T) {
+    return T->getStmtClass() =3D=3D AttributedStmtClass;
+  }
+  static bool classof(const AttributedStmt *) { return true; }
+};
+
+
 /// IfStmt - This represents an if/then/else.
 ///
 class IfStmt : public Stmt {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/Type.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/Type.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/Type.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -79,6 +79,7 @@
   class CXXRecordDecl;
   class EnumDecl;
   class FieldDecl;
+  class FunctionDecl;
   class ObjCInterfaceDecl;
   class ObjCProtocolDecl;
   class ObjCMethodDecl;
@@ -2700,7 +2701,9 @@
     ExtProtoInfo() :
       Variadic(false), HasTrailingReturn(false), TypeQuals(0),
       ExceptionSpecType(EST_None), RefQualifier(RQ_None),
-      NumExceptions(0), Exceptions(0), NoexceptExpr(0), ConsumedArguments(=
0) {}
+      NumExceptions(0), Exceptions(0), NoexceptExpr(0),
+      ExceptionSpecDecl(0), ExceptionSpecTemplate(0),
+      ConsumedArguments(0) {}
=20
     FunctionType::ExtInfo ExtInfo;
     bool Variadic : 1;
@@ -2711,6 +2714,8 @@
     unsigned NumExceptions;
     const QualType *Exceptions;
     Expr *NoexceptExpr;
+    FunctionDecl *ExceptionSpecDecl;
+    FunctionDecl *ExceptionSpecTemplate;
     const bool *ConsumedArguments;
   };
=20
@@ -2756,6 +2761,11 @@
   // NoexceptExpr - Instead of Exceptions, there may be a single Expr* poi=
nting
   // to the expression in the noexcept() specifier.
=20
+  // ExceptionSpecDecl, ExceptionSpecTemplate - Instead of Exceptions, the=
re may
+  // be a pair of FunctionDecl* pointing to the function which should be u=
sed to
+  // instantiate this function type's exception specification, and the fun=
ction
+  // from which it should be instantiated.
+
   // ConsumedArgs - A variable size array, following Exceptions
   // and of length NumArgs, holding flags indicating which arguments
   // are consumed.  This only appears if HasAnyConsumedArgs is true.
@@ -2795,6 +2805,9 @@
       EPI.Exceptions =3D exception_begin();
     } else if (EPI.ExceptionSpecType =3D=3D EST_ComputedNoexcept) {
       EPI.NoexceptExpr =3D getNoexceptExpr();
+    } else if (EPI.ExceptionSpecType =3D=3D EST_Uninstantiated) {
+      EPI.ExceptionSpecDecl =3D getExceptionSpecDecl();
+      EPI.ExceptionSpecTemplate =3D getExceptionSpecTemplate();
     }
     if (hasAnyConsumedArgs())
       EPI.ConsumedArguments =3D getConsumedArgsBuffer();
@@ -2838,9 +2851,26 @@
     // NoexceptExpr sits where the arguments end.
     return *reinterpret_cast<Expr *const *>(arg_type_end());
   }
+  /// \brief If this function type has an uninstantiated exception
+  /// specification, this is the function whose exception specification
+  /// is represented by this type.
+  FunctionDecl *getExceptionSpecDecl() const {
+    if (getExceptionSpecType() !=3D EST_Uninstantiated)
+      return 0;
+    return reinterpret_cast<FunctionDecl * const *>(arg_type_end())[0];
+  }
+  /// \brief If this function type has an uninstantiated exception
+  /// specification, this is the function whose exception specification
+  /// should be instantiated to find the exception specification for
+  /// this type.
+  FunctionDecl *getExceptionSpecTemplate() const {
+    if (getExceptionSpecType() !=3D EST_Uninstantiated)
+      return 0;
+    return reinterpret_cast<FunctionDecl * const *>(arg_type_end())[1];
+  }
   bool isNothrow(ASTContext &Ctx) const {
     ExceptionSpecificationType EST =3D getExceptionSpecType();
-    assert(EST !=3D EST_Delayed);
+    assert(EST !=3D EST_Delayed && EST !=3D EST_Uninstantiated);
     if (EST =3D=3D EST_DynamicNone || EST =3D=3D EST_BasicNoexcept)
       return true;
     if (EST !=3D EST_ComputedNoexcept)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/AST/VTableBuilder.h
--- a/head/contrib/llvm/tools/clang/include/clang/AST/VTableBuilder.h	Wed J=
ul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/AST/VTableBuilder.h	Wed J=
ul 25 16:21:35 2012 +0300
@@ -205,11 +205,11 @@
   typedef llvm::DenseMap<BaseSubobject, uint64_t> AddressPointsMapTy;
 private:
   uint64_t NumVTableComponents;
-  VTableComponent *VTableComponents;
+  llvm::OwningArrayPtr<VTableComponent> VTableComponents;
=20
   /// VTableThunks - Contains thunks needed by vtables.
   uint64_t NumVTableThunks;
-  VTableThunkTy *VTableThunks;
+  llvm::OwningArrayPtr<VTableThunkTy> VTableThunks;
=20
   /// Address points - Address points for all vtables.
   AddressPointsMapTy AddressPoints;
@@ -227,11 +227,11 @@
   }
=20
   vtable_component_iterator vtable_component_begin() const {
-   return VTableComponents;
+   return VTableComponents.get();
   }
=20
   vtable_component_iterator vtable_component_end() const {
-   return VTableComponents+NumVTableComponents;
+   return VTableComponents.get()+NumVTableComponents;
   }
=20
   uint64_t getNumVTableThunks() const {
@@ -239,11 +239,11 @@
   }
=20
   vtable_thunk_iterator vtable_thunk_begin() const {
-   return VTableThunks;
+   return VTableThunks.get();
   }
=20
   vtable_thunk_iterator vtable_thunk_end() const {
-   return VTableThunks+NumVTableThunks;
+   return VTableThunks.get()+NumVTableThunks;
   }
=20
   uint64_t getAddressPoint(BaseSubobject Base) const {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Analysis/ProgramPoint.h
--- a/head/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -129,7 +129,7 @@
   static bool classof(const ProgramPoint*) { return true; }
=20
   bool operator=3D=3D(const ProgramPoint & RHS) const {
-    return Data1 =3D=3D Data1 &&
+    return Data1 =3D=3D RHS.Data1 &&
            Data2 =3D=3D RHS.Data2 &&
            L =3D=3D RHS.L &&
            Tag =3D=3D RHS.Tag;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/BuiltinsX86.def
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -412,6 +412,9 @@
 BUILTIN(__builtin_ia32_cvttpd2dq256, "V4iV4d", "")
 BUILTIN(__builtin_ia32_cvtpd2dq256, "V4iV4d", "")
 BUILTIN(__builtin_ia32_cvttps2dq256, "V8iV8f", "")
+BUILTIN(__builtin_ia32_vperm2f128_pd256, "V4dV4dV4dIc", "")
+BUILTIN(__builtin_ia32_vperm2f128_ps256, "V8fV8fV8fIc", "")
+BUILTIN(__builtin_ia32_vperm2f128_si256, "V8iV8iV8iIc", "")
 BUILTIN(__builtin_ia32_vinsertf128_pd256, "V4dV4dV2dIc", "")
 BUILTIN(__builtin_ia32_vinsertf128_ps256, "V8fV8fV4fIc", "")
 BUILTIN(__builtin_ia32_vinsertf128_si256, "V8iV8iV4iIc", "")
@@ -560,9 +563,8 @@
 BUILTIN(__builtin_ia32_pbroadcastd128, "V4iV4i", "")
 BUILTIN(__builtin_ia32_pbroadcastq128, "V2LLiV2LLi", "")
 BUILTIN(__builtin_ia32_permvarsi256, "V8iV8iV8i", "")
-BUILTIN(__builtin_ia32_permdf256, "V4dV4dIc", "")
 BUILTIN(__builtin_ia32_permvarsf256, "V8fV8fV8f", "")
-BUILTIN(__builtin_ia32_permdi256, "V4LLiV4LLiIc", "")
+BUILTIN(__builtin_ia32_permti256, "V4LLiV4LLiV4LLiIc", "")
 BUILTIN(__builtin_ia32_extract128i256, "V2LLiV4LLiIc", "")
 BUILTIN(__builtin_ia32_insert128i256, "V4LLiV4LLiV2LLiIc", "")
 BUILTIN(__builtin_ia32_maskloadd256, "V8iV8iC*V8i", "")
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/ConvertUTF.h
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/ConvertUTF.h	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/ConvertUTF.h	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -151,9 +151,9 @@
 ConversionResult ConvertUTF32toUTF16 (
   const UTF32** sourceStart, const UTF32* sourceEnd,
   UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
+#endif
=20
 Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);
-#endif
=20
 Boolean isLegalUTF8String(const UTF8 *source, const UTF8 *sourceEnd);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/DelayedCleanupPool.h
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/DelayedCleanupPool.=
h	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-//=3D=3D=3D DelayedCleanupPool.h - Delayed Clean-up Pool Implementation *-=
 C++ -*=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This file defines a facility to delay calling cleanup methods until spe=
cific
-// points.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_BASIC_DELAYEDCLEANUPPOOL_H
-#define LLVM_CLANG_BASIC_DELAYEDCLEANUPPOOL_H
-
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallVector.h"
-
-namespace clang {
-
-/// \brief Gathers pairs of pointer-to-object/pointer-to-cleanup-function
-/// allowing the cleanup functions to get called (with the pointer as para=
meter)
-/// at specific points.
-///
-/// The use case is to simplify clean-up of certain resources that, while =
their
-/// lifetime is well-known and restricted, cleaning them up manually is ea=
sy to
-/// miss and cause a leak.
-///
-/// The same pointer can be added multiple times; its clean-up function wi=
ll
-/// only be called once.
-class DelayedCleanupPool {
-public:
-  typedef void (*CleanupFn)(void *ptr);
-
-  /// \brief Adds a pointer and its associated cleanup function to be call=
ed
-  /// at a later point.
-  ///
-  /// \returns false if the pointer is already added, true otherwise.
-  bool delayCleanup(void *ptr, CleanupFn fn) {
-    assert(ptr && "Expected valid pointer to object");
-    assert(fn && "Expected valid pointer to function");
-
-    CleanupFn &mapFn =3D Ptrs[ptr];
-    assert((!mapFn || mapFn =3D=3D fn) &&
-           "Adding a pointer with different cleanup function!");
-
-    if (!mapFn) {
-      mapFn =3D fn;
-      Cleanups.push_back(std::make_pair(ptr, fn));
-      return true;
-    }
-
-    return false;
-  }
-
-  template <typename T>
-  bool delayDelete(T *ptr) {
-    return delayCleanup(ptr, cleanupWithDelete<T>);
-  }
-
-  template <typename T, void (T::*Fn)()>
-  bool delayMemberFunc(T *ptr) {
-    return delayCleanup(ptr, cleanupWithMemberFunc<T, Fn>);
-  }
-
-  void doCleanup() {
-    for (SmallVector<std::pair<void *, CleanupFn>, 8>::reverse_iterator
-           I =3D Cleanups.rbegin(), E =3D Cleanups.rend(); I !=3D E; ++I)
-      I->second(I->first);
-    Cleanups.clear();
-    Ptrs.clear();
-  }
-
-  ~DelayedCleanupPool() {
-    doCleanup();
-  }
-
-private:
-  llvm::DenseMap<void *, CleanupFn> Ptrs;
-  SmallVector<std::pair<void *, CleanupFn>, 8> Cleanups;
-
-  template <typename T>
-  static void cleanupWithDelete(void *ptr) {
-    delete static_cast<T *>(ptr);
-  }
-
-  template <typename T, void (T::*Fn)()>
-  static void cleanupWithMemberFunc(void *ptr) {
-    (static_cast<T *>(ptr)->*Fn)();
-  }
-};
-
-/// \brief RAII object for triggering a cleanup of a DelayedCleanupPool.
-class DelayedCleanupPoint {
-  DelayedCleanupPool &Pool;
-
-public:
-  DelayedCleanupPoint(DelayedCleanupPool &pool) : Pool(pool) { }
-
-  ~DelayedCleanupPoint() {
-    Pool.doCleanup();
-  }
-};
-
-} // end namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/DiagnosticSemaKinds.td
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds=
.td	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds=
.td	Wed Jul 25 16:21:35 2012 +0300
@@ -231,9 +231,13 @@
   "using declaration can not refer to namespace">;
 def err_using_decl_constructor : Error<
   "using declaration can not refer to a constructor">;
-def warn_cxx98_compat_using_decl_constructor : Warning<
-  "inherited constructors are incompatible with C++98">,
-  InGroup<CXX98Compat>, DefaultIgnore;
+def err_using_decl_constructor_unsupported : Error<
+  "inheriting constructors are not supported">;
+// FIXME: Replace the above error with this warning if support for
+//        inheriting constructors is implemented.
+//def warn_cxx98_compat_using_decl_constructor : Warning<
+//  "inheriting constructors are incompatible with C++98">,
+//  InGroup<CXX98Compat>, DefaultIgnore;
 def err_using_decl_destructor : Error<
   "using declaration can not refer to a destructor">;
 def err_using_decl_template_id : Error<
@@ -1547,9 +1551,6 @@
   "using %0 with a literal is redundant">, InGroup<ObjCRedundantLiteralUse=
>;
 }
=20
-def warn_bool_for_boolean_literal : Warning<
-  "BOOL of type %0 is non-intergal and unsuitable for a "
-  "boolean literal - ignored">, InGroup<DiagGroup<"numeric-literals">>;
 def err_only_annotate_after_access_spec : Error<
   "access specifier can only have annotation attributes">;
 def err_attribute_section_invalid_for_target : Error<
@@ -1563,6 +1564,9 @@
 def warn_attribute_ignored : Warning<"%0 attribute ignored">;
 def warn_unknown_attribute_ignored : Warning<
   "unknown attribute %0 ignored">, InGroup<UnknownAttributes>;
+def warn_attribute_invalid_on_stmt : Warning<
+  "attribute %0 cannot be specified on a statement">,
+  InGroup<IgnoredAttributes>;
 def warn_declspec_attribute_ignored : Warning<
   "attribute %0 is ignored, place it after \"%select{class|struct|union|en=
um}1\" to apply attribute to type declaration">, InGroup<IgnoredAttributes>;
 def warn_attribute_precede_definition : Warning<
@@ -2583,6 +2587,8 @@
   "in instantiation of enumeration %q0 requested here">;
 def note_template_type_alias_instantiation_here : Note<
   "in instantiation of template type alias %0 requested here">;
+def note_template_exception_spec_instantiation_here : Note<
+  "in instantiation of exception specification for %0 requested here">;
  =20
 def note_default_arg_instantiation_here : Note<
   "in instantiation of default argument for '%0' required here">;
@@ -3798,6 +3804,9 @@
=20
 def err_invalid_this_use : Error<
   "invalid use of 'this' outside of a non-static member function">;
+def err_this_static_member_func : Error<
+  "'this' cannot be%select{| implicitly}0 used in a static member function=
 "
+  "declaration">;
 def err_invalid_member_use_in_static_method : Error<
   "invalid use of member %0 in static member function">;
 def err_invalid_qualified_function_type : Error<
@@ -3907,7 +3916,7 @@
 def err_nogetter_property_compound_assignment : Error<
   "a getter method is needed to perform a compound assignment on a propert=
y">;
 def err_nogetter_property_incdec : Error<
-  "no getter method %1 for %select{increment|decrement} of property">;
+  "no getter method %1 for %select{increment|decrement}0 of property">;
 def error_no_subobject_property_setting : Error<
   "expression is not assignable">;
 def err_qualified_objc_access : Error<
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/ExceptionSpecificationType.h
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificat=
ionType.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificat=
ionType.h	Wed Jul 25 16:21:35 2012 +0300
@@ -16,7 +16,7 @@
=20
 namespace clang {
=20
-/// \brief The various types of exception specifications that exist in C++=
0x.
+/// \brief The various types of exception specifications that exist in C++=
11.
 enum ExceptionSpecificationType {
   EST_None,             ///< no exception specification
   EST_DynamicNone,      ///< throw()
@@ -24,7 +24,8 @@
   EST_MSAny,            ///< Microsoft throw(...) extension
   EST_BasicNoexcept,    ///< noexcept
   EST_ComputedNoexcept, ///< noexcept(expression)
-  EST_Delayed           ///< not known yet
+  EST_Delayed,          ///< not known yet
+  EST_Uninstantiated    ///< not instantiated yet
 };
=20
 inline bool isDynamicExceptionSpec(ExceptionSpecificationType ESpecType) {
@@ -35,6 +36,19 @@
   return ESpecType =3D=3D EST_BasicNoexcept || ESpecType =3D=3D EST_Comput=
edNoexcept;
 }
=20
+/// \brief Possible results from evaluation of a noexcept expression.
+enum CanThrowResult {
+  CT_Cannot,
+  CT_Dependent,
+  CT_Can
+};
+
+inline CanThrowResult mergeCanThrow(CanThrowResult CT1, CanThrowResult CT2=
) {
+  // CanThrowResult constants are ordered so that the maximum is the corre=
ct
+  // merge result.
+  return CT1 > CT2 ? CT1 : CT2;
+}
+
 } // end namespace clang
=20
 #endif // LLVM_CLANG_BASIC_EXCEPTIONSPECIFICATIONTYPE_H
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/OnDiskHashTable.h
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h	W=
ed Jul 25 16:21:35 2012 +0300
@@ -132,7 +132,7 @@
   class Bucket {
   public:
     io::Offset off;
-    Item*  head;
+    Item* head;
     unsigned length;
=20
     Bucket() {}
@@ -201,6 +201,7 @@
=20
       // Write out the number of items in the bucket.
       Emit16(out, B.length);
+      assert(B.length !=3D 0  && "Bucket has a head but zero length?");
=20
       // Write out the entries in the bucket.
       for (Item *I =3D B.head; I ; I =3D I->next) {
@@ -398,31 +399,30 @@
   }
   key_iterator key_end() { return key_iterator(); }
=20
-  /// \brief Iterates over all the entries in the table, returning
-  /// a key/data pair.
-  class item_iterator {
+  /// \brief Iterates over all the entries in the table, returning the dat=
a.
+  class data_iterator {
     const unsigned char* Ptr;
     unsigned NumItemsInBucketLeft;
     unsigned NumEntriesLeft;
     Info *InfoObj;
   public:
-    typedef std::pair<external_key_type, data_type> value_type;
+    typedef data_type value_type;
=20
-    item_iterator(const unsigned char* const Ptr, unsigned NumEntries,
+    data_iterator(const unsigned char* const Ptr, unsigned NumEntries,
                   Info *InfoObj)
       : Ptr(Ptr), NumItemsInBucketLeft(0), NumEntriesLeft(NumEntries),
         InfoObj(InfoObj) { }
-    item_iterator()
+    data_iterator()
       : Ptr(0), NumItemsInBucketLeft(0), NumEntriesLeft(0), InfoObj(0) { }
=20
-    bool operator=3D=3D(const item_iterator& X) const {
+    bool operator=3D=3D(const data_iterator& X) const {
       return X.NumEntriesLeft =3D=3D NumEntriesLeft;
     }
-    bool operator!=3D(const item_iterator& X) const {
+    bool operator!=3D(const data_iterator& X) const {
       return X.NumEntriesLeft !=3D NumEntriesLeft;
     }
=20
-    item_iterator& operator++() {  // Preincrement
+    data_iterator& operator++() {  // Preincrement
       if (!NumItemsInBucketLeft) {
         // 'Items' starts with a 16-bit unsigned integer representing the
         // number of items in this bucket.
@@ -438,8 +438,8 @@
       --NumEntriesLeft;
       return *this;
     }
-    item_iterator operator++(int) {  // Postincrement
-      item_iterator tmp =3D *this; ++*this; return tmp;
+    data_iterator operator++(int) {  // Postincrement
+      data_iterator tmp =3D *this; ++*this; return tmp;
     }
=20
     value_type operator*() const {
@@ -454,15 +454,14 @@
       // Read the key.
       const internal_key_type& Key =3D
         InfoObj->ReadKey(LocalPtr, L.first);
-      return std::make_pair(InfoObj->GetExternalKey(Key),
-                          InfoObj->ReadData(Key, LocalPtr + L.first, L.sec=
ond));
+      return InfoObj->ReadData(Key, LocalPtr + L.first, L.second);
     }
   };
=20
-  item_iterator item_begin() {
-    return item_iterator(Base + 4, getNumEntries(), &InfoObj);
+  data_iterator data_begin() {
+    return data_iterator(Base + 4, getNumEntries(), &InfoObj);
   }
-  item_iterator item_end() { return item_iterator(); }
+  data_iterator data_end() { return data_iterator(); }
=20
   Info &getInfoObj() { return InfoObj; }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/StmtNodes.td
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -12,6 +12,7 @@
 def NullStmt : Stmt;
 def CompoundStmt : Stmt;
 def LabelStmt : Stmt;
+def AttributedStmt : Stmt;
 def IfStmt : Stmt;
 def SwitchStmt : Stmt;
 def WhileStmt : Stmt;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Basic/TargetInfo.h
--- a/head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -132,6 +132,11 @@
   IntType SizeType, IntMaxType, UIntMaxType, PtrDiffType, IntPtrType, WCha=
rType,
           WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType;
=20
+  /// Flag whether the Objective-C built-in boolean type should be signed =
char.
+  /// Otherwise, when this flag is not set, the normal built-in boolean ty=
pe is
+  /// used.
+  unsigned UseSignedCharForObjCBool : 1;
+
   /// Control whether the alignment of bit-field types is respected when l=
aying
   /// out structures. If true, then the alignment of the bit-field type wi=
ll be
   /// used to (a) impact the alignment of the containing structure, and (b)
@@ -299,6 +304,16 @@
     return MCountName;
   }
=20
+  /// useSignedCharForObjCBool - Check if the Objective-C built-in boolean
+  /// type should be signed char.  Otherwise, if this returns false, the
+  /// normal built-in boolean type should also be used for Objective-C.
+  bool useSignedCharForObjCBool() const {
+    return UseSignedCharForObjCBool;
+  }
+  void noSignedCharForObjCBool() {
+    UseSignedCharForObjCBool =3D false;
+  }
+
   /// useBitFieldTypeAlignment() - Check whether the alignment of bit-fiel=
d=20
   /// types is respected when laying out structures.
   bool useBitFieldTypeAlignment() const {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Driver/CC1Options.td
--- a/head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td	Wed =
Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td	Wed =
Jul 25 16:21:35 2012 +0300
@@ -428,9 +428,6 @@
   HelpText<"Build ASTs and view them with GraphViz">;
 def print_decl_contexts : Flag<"-print-decl-contexts">,
   HelpText<"Print DeclContexts and their Decls">;
-def pubnames_dump : Flag<"-pubnames-dump">,=20
-  HelpText<"Print all of the public (global) names in the source, e.g., th=
e "
-           "names of all global declarations and macros">;
 def emit_module : Flag<"-emit-module">,
   HelpText<"Generate pre-compiled module file from a module map">;
 def emit_pth : Flag<"-emit-pth">,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Driver/Compilation.h
--- a/head/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h	Wed =
Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h	Wed =
Jul 25 16:21:35 2012 +0300
@@ -92,6 +92,9 @@
     return FailureResultFiles;
   }
=20
+  /// Returns the sysroot path.
+  StringRef getSysRoot() const;
+
   /// getArgsForToolChain - Return the derived argument list for the
   /// tool chain \arg TC (or the default tool chain, if TC is not
   /// specified).
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Frontend/ASTUnit.h
--- a/head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -14,7 +14,6 @@
 #ifndef LLVM_CLANG_FRONTEND_ASTUNIT_H
 #define LLVM_CLANG_FRONTEND_ASTUNIT_H
=20
-#include "clang/Index/ASTLocation.h"
 #include "clang/Serialization/ASTBitCodes.h"
 #include "clang/Sema/Sema.h"
 #include "clang/Sema/CodeCompleteConsumer.h"
@@ -57,8 +56,6 @@
 class TargetInfo;
 class ASTFrontendAction;
=20
-using namespace idx;
- =20
 /// \brief Utility class for loading a ASTContext from an AST file.
 ///
 class ASTUnit : public ModuleLoader {
@@ -134,9 +131,6 @@
   /// The name of the original source file used to generate this ASTUnit.
   std::string OriginalSourceFile;
=20
-  // Critical optimization when using clang_getCursor().
-  ASTLocation LastLoc;
-
   /// \brief The set of diagnostics produced when creating the preamble.
   SmallVector<StoredDiagnostic, 4> PreambleDiagnostics;
=20
@@ -474,10 +468,6 @@
   bool getOwnsRemappedFileBuffers() const { return OwnsRemappedFileBuffers=
; }
   void setOwnsRemappedFileBuffers(bool val) { OwnsRemappedFileBuffers =3D =
val; }
=20
-  void setLastASTLocation(ASTLocation ALoc) { LastLoc =3D ALoc; }
-  ASTLocation getLastASTLocation() const { return LastLoc; }
-
-
   StringRef getMainFileName() const;
=20
   typedef std::vector<Decl *>::iterator top_level_iterator;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Frontend/FrontendActions.h
--- a/head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.=
h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.=
h	Wed Jul 25 16:21:35 2012 +0300
@@ -173,15 +173,6 @@
   virtual bool usesPreprocessorOnly() const { return true; }
 };
  =20
-class PubnamesDumpAction : public ASTFrontendAction {
-protected:
-  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
-                                         StringRef InFile);
- =20
-public:
-  virtual bool hasCodeCompletionSupport() const { return false; }
-};
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Preprocessor Actions
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Frontend/FrontendOptions.h
--- a/head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.=
h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.=
h	Wed Jul 25 16:21:35 2012 +0300
@@ -42,7 +42,6 @@
     PrintDeclContext,       ///< Print DeclContext and their Decls.
     PrintPreamble,          ///< Print the "preamble" of the input file
     PrintPreprocessedInput, ///< -E mode.
-    PubnamesDump,           ///< Print all of the "public" names in the so=
urce.
     RewriteMacros,          ///< Expand macros but not #includes.
     RewriteObjC,            ///< ObjC->C Rewriter.
     RewriteTest,            ///< Rewriter playground
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Frontend/TextDiagnostic.h
--- a/head/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h=
	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h=
	Wed Jul 25 16:21:35 2012 +0300
@@ -18,6 +18,8 @@
=20
 #include "clang/Frontend/DiagnosticRenderer.h"
=20
+struct SourceColumnMap;
+
 namespace clang {
=20
 /// \brief Class to encapsulate the logic for formatting and printing a te=
xtual
@@ -103,15 +105,16 @@
                            SmallVectorImpl<CharSourceRange>& Ranges,
                            ArrayRef<FixItHint> Hints);
=20
+  void emitSnippet(StringRef SourceLine);
+
   void highlightRange(const CharSourceRange &R,
                       unsigned LineNo, FileID FID,
-                      const std::string &SourceLine,
+                      const SourceColumnMap &map,
                       std::string &CaretLine);
+
   std::string buildFixItInsertionLine(unsigned LineNo,
-                                      const char *LineStart,
-                                      const char *LineEnd,
+                                      const SourceColumnMap &map,
                                       ArrayRef<FixItHint> Hints);
-  void expandTabs(std::string &SourceLine, std::string &CaretLine);
   void emitParseableFixits(ArrayRef<FixItHint> Hints);
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/ASTLocation.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/ASTLocation.h	Wed J=
ul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-//=3D=3D=3D--- ASTLocation.h - A <Decl, Stmt> pair --------------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  ASTLocation is Decl or a Stmt and its immediate Decl parent.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_ASTLOCATION_H
-#define LLVM_CLANG_INDEX_ASTLOCATION_H
-
-#include "clang/AST/TypeLoc.h"
-#include "llvm/ADT/PointerIntPair.h"
-#include "llvm/Support/Compiler.h"
-
-namespace clang {
-  class Decl;
-  class Stmt;
-  class NamedDecl;
-
-namespace idx {
-  class TranslationUnit;
-
-/// \brief Represents a Decl or a Stmt and its immediate Decl parent. It's
-/// immutable.
-///
-/// ASTLocation is intended to be used as a "pointer" into the AST. It is =
either
-/// just a Decl, or a Stmt and its Decl parent. Since a single Stmt is dev=
oid
-/// of context, its parent Decl provides all the additional missing inform=
ation
-/// like the declaration context, ASTContext, etc.
-///
-class ASTLocation {
-public:
-  enum NodeKind {
-    N_Decl, N_NamedRef, N_Stmt, N_Type
-  };
-
-  struct NamedRef {
-    NamedDecl *ND;
-    SourceLocation Loc;
-
-    NamedRef() : ND(0) { }
-    NamedRef(NamedDecl *nd, SourceLocation loc) : ND(nd), Loc(loc) { }
-  };
-
-private:
-  llvm::PointerIntPair<Decl *, 2, NodeKind> ParentDecl;
-
-  union {
-    Decl *D;
-    Stmt *Stm;
-    struct {
-      NamedDecl *ND;
-      unsigned RawLoc;
-    } NDRef;
-    struct {
-      void *TyPtr;
-      void *Data;
-    } Ty;
-  };
-
-public:
-  ASTLocation() { }
-
-  explicit ASTLocation(const Decl *d)
-    : ParentDecl(const_cast<Decl*>(d), N_Decl), D(const_cast<Decl*>(d)) { }
-
-  ASTLocation(const Decl *parentDecl, const Stmt *stm)
-    : ParentDecl(const_cast<Decl*>(parentDecl), N_Stmt),
-      Stm(const_cast<Stmt*>(stm)) {
-    if (!stm) ParentDecl.setPointer(0);
-  }
-
-  ASTLocation(const Decl *parentDecl, NamedDecl *ndRef, SourceLocation loc)
-    : ParentDecl(const_cast<Decl*>(parentDecl), N_NamedRef) {
-    if (ndRef) {
-      NDRef.ND =3D ndRef;
-      NDRef.RawLoc =3D loc.getRawEncoding();
-    } else
-      ParentDecl.setPointer(0);
-  }
-
-  ASTLocation(const Decl *parentDecl, TypeLoc tyLoc)
-    : ParentDecl(const_cast<Decl*>(parentDecl), N_Type) {
-    if (tyLoc) {
-      Ty.TyPtr =3D tyLoc.getType().getAsOpaquePtr();
-      Ty.Data =3D tyLoc.getOpaqueData();
-    } else
-      ParentDecl.setPointer(0);
-  }
-
-  bool isValid() const { return ParentDecl.getPointer() !=3D 0; }
-  bool isInvalid() const { return !isValid(); }
-
-  NodeKind getKind() const {
-    assert(isValid());
-    return (NodeKind)ParentDecl.getInt();
-  }
-
-  Decl *getParentDecl() const { return ParentDecl.getPointer(); }
-
-  Decl *AsDecl() const {
-    assert(getKind() =3D=3D N_Decl);
-    return D;
-  }
-  Stmt *AsStmt() const {
-    assert(getKind() =3D=3D N_Stmt);
-    return Stm;
-  }
-  NamedRef AsNamedRef() const {
-    assert(getKind() =3D=3D N_NamedRef);
-    return NamedRef(NDRef.ND, SourceLocation::getFromRawEncoding(NDRef.Raw=
Loc));
-  }
-  TypeLoc AsTypeLoc() const {
-    assert(getKind() =3D=3D N_Type);
-    return TypeLoc(QualType::getFromOpaquePtr(Ty.TyPtr), Ty.Data);
-  }
-
-  Decl *dyn_AsDecl() const { return isValid() && getKind() =3D=3D N_Decl ?=
 D : 0; }
-  Stmt *dyn_AsStmt() const {
-    return isValid() && getKind() =3D=3D N_Stmt ? Stm : 0;
-  }
-  NamedRef dyn_AsNamedRef() const {
-    return getKind() =3D=3D N_Type ? AsNamedRef() : NamedRef();
-  }
-  TypeLoc dyn_AsTypeLoc() const {
-    return getKind() =3D=3D N_Type ? AsTypeLoc() : TypeLoc();
-  }
-
-  bool isDecl() const { return isValid() && getKind() =3D=3D N_Decl; }
-  bool isStmt() const { return isValid() && getKind() =3D=3D N_Stmt; }
-  bool isNamedRef() const { return isValid() && getKind() =3D=3D N_NamedRe=
f; }
-  bool isType() const { return isValid() && getKind() =3D=3D N_Type; }
-
-  /// \brief Returns the declaration that this ASTLocation references.
-  ///
-  /// If this points to a Decl, that Decl is returned.
-  /// If this points to an Expr that references a Decl, that Decl is retur=
ned,
-  /// otherwise it returns NULL.
-  Decl *getReferencedDecl();
-  const Decl *getReferencedDecl() const {
-    return const_cast<ASTLocation*>(this)->getReferencedDecl();
-  }
-
-  SourceRange getSourceRange() const LLVM_READONLY;
-
-  void print(raw_ostream &OS) const;
-};
-
-/// \brief Like ASTLocation but also contains the TranslationUnit that the
-/// ASTLocation originated from.
-class TULocation : public ASTLocation {
-  TranslationUnit *TU;
-
-public:
-  TULocation(TranslationUnit *tu, ASTLocation astLoc)
-    : ASTLocation(astLoc), TU(tu) {
-    assert(tu && "Passed null translation unit");
-  }
-
-  TranslationUnit *getTU() const { return TU; }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/Analyzer.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/Analyzer.h	Wed Jul =
25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-//=3D=3D=3D--- Analyzer.h - Analysis for indexing information ---------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This file declares the Analyzer interface.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_ANALYZER_H
-#define LLVM_CLANG_INDEX_ANALYZER_H
-
-namespace clang {
-  class Decl;
-  class ObjCMessageExpr;
-
-namespace idx {
-  class Program;
-  class IndexProvider;
-  class TULocationHandler;
-
-/// \brief Provides indexing information, like finding all references of an
-/// Entity across translation units.
-class Analyzer {
-  Program &Prog;
-  IndexProvider &Idxer;
-
-  Analyzer(const Analyzer&); // do not implement
-  Analyzer &operator=3D(const Analyzer &); // do not implement
-
-public:
-  explicit Analyzer(Program &prog, IndexProvider &idxer)
-    : Prog(prog), Idxer(idxer) { }
-
-  /// \brief Find all TULocations for declarations of the given Decl and p=
ass
-  /// them to Handler.
-  void FindDeclarations(Decl *D, TULocationHandler &Handler);
-
-  /// \brief Find all TULocations for references of the given Decl and pass
-  /// them to Handler.
-  void FindReferences(Decl *D, TULocationHandler &Handler);
-
-  /// \brief Find methods that may respond to the given message and pass t=
hem
-  /// to Handler.
-  void FindObjCMethods(ObjCMessageExpr *MsgE, TULocationHandler &Handler);
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/DeclReferenceMap.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/DeclReferenceMap.h	=
Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-//=3D=3D=3D--- DeclReferenceMap.h - Map Decls to their references -----*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  DeclReferenceMap creates a mapping from Decls to the ASTLocations that
-//  reference them.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_DECLREFERENCEMAP_H
-#define LLVM_CLANG_INDEX_DECLREFERENCEMAP_H
-
-#include "clang/Index/ASTLocation.h"
-#include "clang/Index/STLExtras.h"
-#include <map>
-
-namespace clang {
-  class ASTContext;
-  class NamedDecl;
-
-namespace idx {
-
-/// \brief Maps NamedDecls with the ASTLocations that reference them.
-///
-/// References are mapped and retrieved using the canonical decls.
-class DeclReferenceMap {
-public:
-  explicit DeclReferenceMap(ASTContext &Ctx);
-
-  typedef std::multimap<NamedDecl*, ASTLocation> MapTy;
-  typedef pair_value_iterator<MapTy::iterator> astlocation_iterator;
-
-  astlocation_iterator refs_begin(NamedDecl *D) const;
-  astlocation_iterator refs_end(NamedDecl *D) const;
-  bool refs_empty(NamedDecl *D) const;
-
-private:
-  mutable MapTy Map;
-};
-
-} // end idx namespace
-
-} // end clang namespace
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/Entity.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/Entity.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-//=3D=3D=3D--- Entity.h - Cross-translation-unit "token" for decls ----*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Entity is a ASTContext-independent way to refer to declarations that a=
re
-//  visible across translation units.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_ENTITY_H
-#define LLVM_CLANG_INDEX_ENTITY_H
-
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/PointerUnion.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/StringRef.h"
-#include <string>
-
-namespace clang {
-  class ASTContext;
-  class Decl;
-
-namespace idx {
-  class Program;
-  class EntityImpl;
-
-/// \brief A ASTContext-independent way to refer to declarations.
-///
-/// Entity is basically the link for declarations that are semantically th=
e same
-/// in multiple ASTContexts. A client will convert a Decl into an Entity a=
nd
-/// later use that Entity to find the "same" Decl into another ASTContext.
-/// Declarations that are semantically the same and visible across transla=
tion
-/// units will be associated with the same Entity.
-///
-/// An Entity may also refer to declarations that cannot be visible across
-/// translation units, e.g. static functions with the same name in multiple
-/// translation units will be associated with different Entities.
-///
-/// Entities can be checked for equality but note that the same Program ob=
ject
-/// should be used when getting Entities.
-///
-class Entity {
-  /// \brief Stores the Decl directly if it is not visible outside of its =
own
-  /// translation unit, otherwise it stores the associated EntityImpl.
-  llvm::PointerUnion<Decl *, EntityImpl *> Val;
-
-  explicit Entity(Decl *D);
-  explicit Entity(EntityImpl *impl) : Val(impl) { }
-  friend class EntityGetter;
-
-public:
-  Entity() { }
-
-  /// \brief Find the Decl that can be referred to by this entity.
-  Decl *getDecl(ASTContext &AST) const;
-
-  /// \brief If this Entity represents a declaration that is internal to i=
ts
-  /// translation unit, getInternalDecl() returns it.
-  Decl *getInternalDecl() const {
-    assert(isInternalToTU() && "This Entity is not internal!");
-    return Val.get<Decl *>();
-  }
-
-  /// \brief Get a printable name for debugging purpose.
-  std::string getPrintableName() const;
-
-  /// \brief Get an Entity associated with the given Decl.
-  /// \returns invalid Entity if an Entity cannot refer to this Decl.
-  static Entity get(Decl *D, Program &Prog);
-
-  /// \brief Get an Entity associated with a name in the global namespace.
-  static Entity get(StringRef Name, Program &Prog);
-
-  /// \brief true if the Entity is not visible outside the trasnlation uni=
t.
-  bool isInternalToTU() const {
-    assert(isValid() && "This Entity is not valid!");
-    return Val.is<Decl *>();
-  }
-
-  bool isValid() const { return !Val.isNull(); }
-  bool isInvalid() const { return !isValid(); }
-
-  void *getAsOpaquePtr() const { return Val.getOpaqueValue(); }
-  static Entity getFromOpaquePtr(void *Ptr) {
-    Entity Ent;
-    Ent.Val =3D llvm::PointerUnion<Decl *, EntityImpl *>::getFromOpaqueVal=
ue(Ptr);
-    return Ent;
-  }
-
-  friend bool operator=3D=3D(const Entity &LHS, const Entity &RHS) {
-    return LHS.getAsOpaquePtr() =3D=3D RHS.getAsOpaquePtr();
-  }
-
-  // For use in a std::map.
-  friend bool operator < (const Entity &LHS, const Entity &RHS) {
-    return LHS.getAsOpaquePtr() < RHS.getAsOpaquePtr();
-  }
-
-  // For use in DenseMap/DenseSet.
-  static Entity getEmptyMarker() {
-    Entity Ent;
-    Ent.Val =3D
-      llvm::PointerUnion<Decl *, EntityImpl *>::getFromOpaqueValue((void*)=
-1);
-    return Ent;
-  }
-  static Entity getTombstoneMarker() {
-    Entity Ent;
-    Ent.Val =3D
-      llvm::PointerUnion<Decl *, EntityImpl *>::getFromOpaqueValue((void*)=
-2);
-    return Ent;
-  }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-namespace llvm {
-/// Define DenseMapInfo so that Entities can be used as keys in DenseMap a=
nd
-/// DenseSets.
-template<>
-struct DenseMapInfo<clang::idx::Entity> {
-  static inline clang::idx::Entity getEmptyKey() {
-    return clang::idx::Entity::getEmptyMarker();
-  }
-
-  static inline clang::idx::Entity getTombstoneKey() {
-    return clang::idx::Entity::getTombstoneMarker();
-  }
-
-  static unsigned getHashValue(clang::idx::Entity);
-
-  static inline bool
-  isEqual(clang::idx::Entity LHS, clang::idx::Entity RHS) {
-    return LHS =3D=3D RHS;
-  }
-};
- =20
-template <>
-struct isPodLike<clang::idx::Entity> { static const bool value =3D true; };
-
-}  // end namespace llvm
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/GlobalCallGraph.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/GlobalCallGraph.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-//=3D=3D GlobalCallGraph.h - Call graph building --------------------*- C+=
+ -*--=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  This file defined the CallGraph and CallGraphNode classes.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_CALLGRAPH
-#define LLVM_CLANG_INDEX_CALLGRAPH
-
-#include "clang/Index/ASTLocation.h"
-#include "clang/Index/Entity.h"
-#include "clang/Index/Program.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/GraphTraits.h"
-#include "llvm/ADT/STLExtras.h"
-#include <vector>
-#include <map>
-
-using namespace clang;
-
-namespace clang {
-namespace idx {
-
-class CallGraphNode {
-  Entity F;
-  typedef std::pair<ASTLocation, CallGraphNode*> CallRecord;
-  std::vector<CallRecord> CalledFunctions;
-
-public:
-  CallGraphNode(Entity f) : F(f) {}
-
-  typedef std::vector<CallRecord>::iterator iterator;
-  typedef std::vector<CallRecord>::const_iterator const_iterator;
-
-  iterator begin() { return CalledFunctions.begin(); }
-  iterator end()   { return CalledFunctions.end(); }
-  const_iterator begin() const { return CalledFunctions.begin(); }
-  const_iterator end()   const { return CalledFunctions.end();   }
-
-  void addCallee(ASTLocation L, CallGraphNode *Node) {
-    CalledFunctions.push_back(std::make_pair(L, Node));
-  }
-
-  bool hasCallee() const { return begin() !=3D end(); }
-
-  std::string getName() const { return F.getPrintableName(); }
-
-  Decl *getDecl(ASTContext &Ctx) const { return F.getDecl(Ctx); }
-};
-
-class CallGraph {
-  /// Program manages all Entities.
-  Program &Prog;
-
-  typedef std::map<Entity, CallGraphNode *> FunctionMapTy;
-
-  /// FunctionMap owns all CallGraphNodes.
-  FunctionMapTy FunctionMap;
-
-  /// CallerCtx maps a caller to its ASTContext.
-  llvm::DenseMap<CallGraphNode *, ASTContext *> CallerCtx;
-
-  /// Root node is the 'main' function or 0.
-  CallGraphNode *Root;
-
-  /// ExternalCallingNode has edges to all external functions.
-  CallGraphNode *ExternalCallingNode;
-
-public:
-  CallGraph(Program &P);
-  ~CallGraph();
-
-  typedef FunctionMapTy::iterator iterator;
-  typedef FunctionMapTy::const_iterator const_iterator;
-
-  iterator begin() { return FunctionMap.begin(); }
-  iterator end()   { return FunctionMap.end();   }
-  const_iterator begin() const { return FunctionMap.begin(); }
-  const_iterator end()   const { return FunctionMap.end();   }
-
-  CallGraphNode *getRoot() { return Root; }
-
-  CallGraphNode *getExternalCallingNode() { return ExternalCallingNode; }
-
-  void addTU(ASTContext &AST);
-
-  Program &getProgram() { return Prog; }
-
-  CallGraphNode *getOrInsertFunction(idx::Entity F);
-
-  Decl *getDecl(CallGraphNode *Node);
-
-  void print(raw_ostream &os);
-  void dump();
-
-  void ViewCallGraph() const;
-};
-
-}} // end clang idx namespace
-
-namespace llvm {
-
-template <> struct GraphTraits<clang::idx::CallGraph> {
-  typedef clang::idx::CallGraph GraphType;
-  typedef clang::idx::CallGraphNode NodeType;
-
-  typedef std::pair<clang::idx::ASTLocation, NodeType*> CGNPairTy;
-  typedef std::pointer_to_unary_function<CGNPairTy, NodeType*> CGNDerefFun;
-
-  typedef mapped_iterator<NodeType::iterator, CGNDerefFun> ChildIteratorTy=
pe;
-
-  static NodeType *getEntryNode(GraphType *CG) {
-    return CG->getExternalCallingNode();
-  }
-
-  static ChildIteratorType child_begin(NodeType *N) {
-    return map_iterator(N->begin(), CGNDerefFun(CGNDeref));
-  }
-  static ChildIteratorType child_end(NodeType *N) {
-    return map_iterator(N->end(), CGNDerefFun(CGNDeref));
-  }
-
-  typedef std::pair<clang::idx::Entity, NodeType*> PairTy;
-  typedef std::pointer_to_unary_function<PairTy, NodeType*> DerefFun;
-
-  typedef mapped_iterator<GraphType::const_iterator, DerefFun> nodes_itera=
tor;
-
-  static nodes_iterator nodes_begin(const GraphType &CG) {
-    return map_iterator(CG.begin(), DerefFun(CGDeref));
-  }
-  static nodes_iterator nodes_end(const GraphType &CG) {
-    return map_iterator(CG.end(), DerefFun(CGDeref));
-  }
-
-  static NodeType *CGNDeref(CGNPairTy P) { return P.second; }
-
-  static NodeType *CGDeref(PairTy P) { return P.second; }
-};
-
-} // end llvm namespace
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/GlobalSelector.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/GlobalSelector.h	We=
d Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-//=3D=3D=3D--- GlobalSelector.h - Cross-translation-unit "token" for selec=
tors --=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  GlobalSelector is a ASTContext-independent way to refer to selectors.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_GLOBALSELECTOR_H
-#define LLVM_CLANG_INDEX_GLOBALSELECTOR_H
-
-#include "llvm/ADT/DenseMap.h"
-#include <string>
-
-namespace clang {
-  class ASTContext;
-  class Selector;
-
-namespace idx {
-  class Program;
-
-/// \brief A ASTContext-independent way to refer to selectors.
-class GlobalSelector {
-  void *Val;
-
-  explicit GlobalSelector(void *val) : Val(val) { }
-
-public:
-  GlobalSelector() : Val(0) { }
-
-  /// \brief Get the ASTContext-specific selector.
-  Selector getSelector(ASTContext &AST) const;
-
-  bool isValid() const { return Val !=3D 0; }
-  bool isInvalid() const { return !isValid(); }
-
-  /// \brief Get a printable name for debugging purpose.
-  std::string getPrintableName() const;
-
-  /// \brief Get a GlobalSelector for the ASTContext-specific selector.
-  static GlobalSelector get(Selector Sel, Program &Prog);
-
-  void *getAsOpaquePtr() const { return Val; }
-
-  static GlobalSelector getFromOpaquePtr(void *Ptr) {
-    return GlobalSelector(Ptr);
-  }
-
-  friend bool operator=3D=3D(const GlobalSelector &LHS, const GlobalSelect=
or &RHS) {
-    return LHS.getAsOpaquePtr() =3D=3D RHS.getAsOpaquePtr();
-  }
-
-  // For use in a std::map.
-  friend bool operator< (const GlobalSelector &LHS, const GlobalSelector &=
RHS) {
-    return LHS.getAsOpaquePtr() < RHS.getAsOpaquePtr();
-  }
-
-  // For use in DenseMap/DenseSet.
-  static GlobalSelector getEmptyMarker() { return GlobalSelector((void*)-1=
); }
-  static GlobalSelector getTombstoneMarker() {
-    return GlobalSelector((void*)-2);
-  }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-namespace llvm {
-/// Define DenseMapInfo so that GlobalSelectors can be used as keys in Den=
seMap
-/// and DenseSets.
-template<>
-struct DenseMapInfo<clang::idx::GlobalSelector> {
-  static inline clang::idx::GlobalSelector getEmptyKey() {
-    return clang::idx::GlobalSelector::getEmptyMarker();
-  }
-
-  static inline clang::idx::GlobalSelector getTombstoneKey() {
-    return clang::idx::GlobalSelector::getTombstoneMarker();
-  }
-
-  static unsigned getHashValue(clang::idx::GlobalSelector);
-
-  static inline bool
-  isEqual(clang::idx::GlobalSelector LHS, clang::idx::GlobalSelector RHS) {
-    return LHS =3D=3D RHS;
-  }
-};
- =20
-template <>
-struct isPodLike<clang::idx::GlobalSelector> { static const bool value =3D=
 true;};
-
-}  // end namespace llvm
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/Handlers.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/Handlers.h	Wed Jul =
25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-//=3D=3D=3D--- Handlers.h - Interfaces for receiving information ------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Abstract interfaces for receiving information.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_HANDLERS_H
-#define LLVM_CLANG_INDEX_HANDLERS_H
-
-#include "clang/Basic/LLVM.h"
-#include "llvm/ADT/SmallVector.h"
-
-namespace clang {
-
-namespace idx {
-  class Entity;
-  class TranslationUnit;
-  class TULocation;
-
-/// \brief Abstract interface for receiving Entities.
-class EntityHandler {
-public:
-  typedef Entity receiving_type;
-
-  virtual ~EntityHandler();
-  virtual void Handle(Entity Ent) =3D 0;
-};
-
-/// \brief Abstract interface for receiving TranslationUnits.
-class TranslationUnitHandler {
-public:
-  typedef TranslationUnit* receiving_type;
-
-  virtual ~TranslationUnitHandler();
-  virtual void Handle(TranslationUnit *TU) =3D 0;
-};
-
-/// \brief Abstract interface for receiving TULocations.
-class TULocationHandler {
-public:
-  typedef TULocation receiving_type;
-
-  virtual ~TULocationHandler();
-  virtual void Handle(TULocation TULoc) =3D 0;
-};
-
-/// \brief Helper for the Handler classes. Stores the objects into a vecto=
r.
-/// example:
-/// @code
-/// Storing<TranslationUnitHandler> TURes;
-/// IndexProvider.GetTranslationUnitsFor(Entity, TURes);
-/// for (Storing<TranslationUnitHandler>::iterator
-///   I =3D TURes.begin(), E =3D TURes.end(); I !=3D E; ++I) { ....
-/// @endcode
-template <typename handler_type>
-class Storing : public handler_type {
-  typedef typename handler_type::receiving_type receiving_type;
-  typedef SmallVector<receiving_type, 8> StoreTy;
-  StoreTy Store;
-
-public:
-  virtual void Handle(receiving_type Obj) {
-    Store.push_back(Obj);
-  }
-
-  typedef typename StoreTy::const_iterator iterator;
-  iterator begin() const { return Store.begin(); }
-  iterator end() const { return Store.end(); }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/IndexProvider.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/IndexProvider.h	Wed=
 Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-//=3D=3D=3D--- IndexProvider.h - Maps information to translation units -*-=
 C++ -*-=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Maps information to TranslationUnits.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_INDEXPROVIDER_H
-#define LLVM_CLANG_INDEX_INDEXPROVIDER_H
-
-namespace clang {
-
-namespace idx {
-  class Entity;
-  class TranslationUnitHandler;
-  class GlobalSelector;
-
-/// \brief Maps information to TranslationUnits.
-class IndexProvider {
-public:
-  virtual ~IndexProvider();
-  virtual void GetTranslationUnitsFor(Entity Ent,
-                                      TranslationUnitHandler &Handler) =3D=
 0;
-  virtual void GetTranslationUnitsFor(GlobalSelector Sel,
-                                      TranslationUnitHandler &Handler) =3D=
 0;
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/Indexer.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/Indexer.h	Wed Jul 2=
5 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-//=3D=3D=3D--- Indexer.h - IndexProvider implementation ---------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  IndexProvider implementation.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_INDEXER_H
-#define LLVM_CLANG_INDEX_INDEXER_H
-
-#include "clang/Index/IndexProvider.h"
-#include "clang/Index/Entity.h"
-#include "clang/Index/GlobalSelector.h"
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/DenseMap.h"
-#include <map>
-
-namespace clang {
-  class ASTContext;
-  class FunctionDecl;
-
-namespace idx {
-  class Program;
-  class TranslationUnit;
-
-/// \brief Maps information to TranslationUnits.
-class Indexer : public IndexProvider {
-public:
-  typedef llvm::SmallPtrSet<TranslationUnit *, 4> TUSetTy;
-  typedef llvm::DenseMap<ASTContext *, TranslationUnit *> CtxTUMapTy;
-  typedef std::map<Entity, TUSetTy> MapTy;
-  typedef std::map<GlobalSelector, TUSetTy> SelMapTy;
-  typedef std::map<Entity, std::pair<FunctionDecl*,TranslationUnit*> > Def=
MapTy;
-
-  explicit Indexer(Program &prog) :
-    Prog(prog) { }
-
-  Program &getProgram() const { return Prog; }
-
-  /// \brief Find all Entities and map them to the given translation unit.
-  void IndexAST(TranslationUnit *TU);
-
-  virtual void GetTranslationUnitsFor(Entity Ent,
-                                      TranslationUnitHandler &Handler);
-  virtual void GetTranslationUnitsFor(GlobalSelector Sel,
-                                      TranslationUnitHandler &Handler);
-
-  std::pair<FunctionDecl*, TranslationUnit*> getDefinitionFor(Entity Ent);
-
-private:
-  Program &Prog;
-
-  MapTy Map;
-  // Map a function Entity to the its definition.
-  DefMapTy DefMap;
-
-  CtxTUMapTy CtxTUMap;
-  SelMapTy SelMap;
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/Program.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/Program.h	Wed Jul 2=
5 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-//=3D=3D=3D--- Program.h - Cross-translation unit information ---------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This file declares the idx::Program interface.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_PROGRAM_H
-#define LLVM_CLANG_INDEX_PROGRAM_H
-
-namespace clang {
-  class ASTContext;
-
-namespace idx {
-  class EntityHandler;
-
-/// \brief Top level object that owns and maintains information
-/// that is common across translation units.
-class Program {
-  void *Impl;
-
-  Program(const Program&); // do not implement
-  Program &operator=3D(const Program &); // do not implement
-  friend class Entity;
-  friend class GlobalSelector;
-
-public:
-  Program();
-  ~Program();
-
-  /// \brief Traverses the AST and passes all the entities to the Handler.
-  void FindEntities(ASTContext &Ctx, EntityHandler &Handler);
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/STLExtras.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/STLExtras.h	Wed Jul=
 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-//=3D=3D=3D--- STLExtras.h - Helper STL related templates -------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Helper templates for using with the STL.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_STLEXTRAS_H
-#define LLVM_CLANG_INDEX_STLEXTRAS_H
-
-namespace clang {
-
-namespace idx {
-
-/// \brief Wraps an iterator whose value_type is a pair, and provides
-/// pair's second object as the value.
-template <typename iter_type>
-class pair_value_iterator {
-  iter_type I;
-
-public:
-  typedef typename iter_type::value_type::second_type value_type;
-  typedef value_type& reference;
-  typedef value_type* pointer;
-  typedef typename iter_type::iterator_category iterator_category;
-  typedef typename iter_type::difference_type   difference_type;
-
-  pair_value_iterator() { }
-  pair_value_iterator(iter_type i) : I(i) { }
-
-  reference operator*() const { return I->second; }
-  pointer operator->() const { return &I->second; }
-
-  pair_value_iterator& operator++() {
-    ++I;
-    return *this;
-  }
-
-  pair_value_iterator operator++(int) {
-    pair_value_iterator tmp(*this);
-    ++(*this);
-    return tmp;
-  }
-
-  friend bool operator=3D=3D(pair_value_iterator L, pair_value_iterator R)=
 {
-    return L.I =3D=3D R.I;
-  }
-  friend bool operator!=3D(pair_value_iterator L, pair_value_iterator R) {
-    return L.I !=3D R.I;
-  }
-};
-
-} // end idx namespace
-
-} // end clang namespace
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/SelectorMap.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/SelectorMap.h	Wed J=
ul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-//=3D=3D=3D--- SelectorMap.h - Maps selectors to methods and messages -*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  SelectorMap creates a mapping from selectors to ObjC method declaratio=
ns
-//  and ObjC message expressions.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_SELECTORMAP_H
-#define LLVM_CLANG_INDEX_SELECTORMAP_H
-
-#include "clang/Index/ASTLocation.h"
-#include "clang/Index/STLExtras.h"
-#include "clang/Basic/IdentifierTable.h"
-#include <map>
-
-namespace clang {
-  class ASTContext;
-  class ObjCMethodDecl;
-
-namespace idx {
-
-/// \brief Maps NamedDecls with the ASTLocations that reference them.
-///
-/// References are mapped and retrieved using the canonical decls.
-class SelectorMap {
-public:
-  explicit SelectorMap(ASTContext &Ctx);
-
-  typedef std::multimap<Selector, ObjCMethodDecl *> SelMethMapTy;
-  typedef std::multimap<Selector, ASTLocation> SelRefMapTy;
-
-  typedef pair_value_iterator<SelMethMapTy::iterator> method_iterator;
-  typedef pair_value_iterator<SelRefMapTy::iterator> astlocation_iterator;
-
-  method_iterator methods_begin(Selector Sel) const;
-  method_iterator methods_end(Selector Sel) const;
-
-  astlocation_iterator refs_begin(Selector Sel) const;
-  astlocation_iterator refs_end(Selector Sel) const;
-
-private:
-  mutable SelMethMapTy SelMethMap;
-  mutable SelRefMapTy SelRefMap;
-};
-
-} // end idx namespace
-
-} // end clang namespace
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Index/TranslationUnit.h
--- a/head/contrib/llvm/tools/clang/include/clang/Index/TranslationUnit.h	W=
ed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-//=3D=3D=3D--- TranslationUnit.h - Interface for a translation unit ---*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Abstract interface for a translation unit.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_TRANSLATIONUNIT_H
-#define LLVM_CLANG_INDEX_TRANSLATIONUNIT_H
-
-namespace clang {
-  class ASTContext;
-  class DiagnosticsEngine;
-  class Preprocessor;
-
-namespace idx {
-  class DeclReferenceMap;
-  class SelectorMap;
-
-/// \brief Abstract interface for a translation unit.
-class TranslationUnit {
-public:
-  virtual ~TranslationUnit();
-  virtual ASTContext &getASTContext() =3D 0;
-  virtual Preprocessor &getPreprocessor() =3D 0;
-  virtual DiagnosticsEngine &getDiagnostic() =3D 0;
-  virtual DeclReferenceMap &getDeclReferenceMap() =3D 0;
-  virtual SelectorMap &getSelectorMap() =3D 0;
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Parse/Parser.h
--- a/head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h	Wed Jul 25=
 16:21:35 2012 +0300
@@ -15,7 +15,6 @@
 #define LLVM_CLANG_PARSE_PARSER_H
=20
 #include "clang/Basic/Specifiers.h"
-#include "clang/Basic/DelayedCleanupPool.h"
 #include "clang/Lex/Preprocessor.h"
 #include "clang/Lex/CodeCompletionHandler.h"
 #include "clang/Sema/Sema.h"
@@ -192,9 +191,9 @@
   /// Factory object for creating AttributeList objects.
   AttributeFactory AttrFactory;
=20
-  /// \brief Gathers and cleans up objects when parsing of a top-level
-  /// declaration is finished.
-  DelayedCleanupPool TopLevelDeclCleanupPool;
+  /// \brief Gathers and cleans up TemplateIdAnnotations when parsing of a
+  /// top-level declaration is finished.
+  SmallVector<TemplateIdAnnotation *, 16> TemplateIds;
=20
   IdentifierInfo *getSEHExceptKeyword();
=20
@@ -568,9 +567,7 @@
                                 const char *&PrevSpec, unsigned &DiagID,
                                 bool &isInvalid);
=20
-  /// \brief Get the TemplateIdAnnotation from the token and put it in the
-  /// cleanup pool so that it gets destroyed when parsing the current top =
level
-  /// declaration is finished.
+  /// \brief Get the TemplateIdAnnotation from the token.
   TemplateIdAnnotation *takeTemplateIdAnnotation(const Token &tok);
=20
   /// TentativeParsingAction - An object that is used as a kind of "tentat=
ive
@@ -587,11 +584,15 @@
   class TentativeParsingAction {
     Parser &P;
     Token PrevTok;
+    unsigned short PrevParenCount, PrevBracketCount, PrevBraceCount;
     bool isActive;
=20
   public:
     explicit TentativeParsingAction(Parser& p) : P(p) {
       PrevTok =3D P.Tok;
+      PrevParenCount =3D P.ParenCount;
+      PrevBracketCount =3D P.BracketCount;
+      PrevBraceCount =3D P.BraceCount;
       P.PP.EnableBacktrackAtThisPos();
       isActive =3D true;
     }
@@ -604,6 +605,9 @@
       assert(isActive && "Parsing action was finished!");
       P.PP.Backtrack();
       P.Tok =3D PrevTok;
+      P.ParenCount =3D PrevParenCount;
+      P.BracketCount =3D PrevBracketCount;
+      P.BraceCount =3D PrevBraceCount;
       isActive =3D false;
     }
     ~TentativeParsingAction() {
@@ -858,7 +862,7 @@
   /// argument (C++ [class.mem]p2).
   struct LateParsedMethodDeclaration : public LateParsedDeclaration {
     explicit LateParsedMethodDeclaration(Parser *P, Decl *M)
-      : Self(P), Method(M), TemplateScope(false) { }
+      : Self(P), Method(M), TemplateScope(false), ExceptionSpecTokens(0) {=
 }
=20
     virtual void ParseLexedMethodDeclarations();
=20
@@ -878,6 +882,10 @@
     /// method will be stored so that they can be reintroduced into
     /// scope at the appropriate times.
     SmallVector<LateParsedDefaultArgument, 8> DefaultArgs;
+ =20
+    /// \brief The set of tokens that make up an exception-specification t=
hat
+    /// has not yet been parsed.
+    CachedTokens *ExceptionSpecTokens;
   };
=20
   /// LateParsedMemberInitializer - An initializer for a non-static class =
data
@@ -1420,7 +1428,7 @@
   // C++ 15: C++ Throw Expression
   ExprResult ParseThrowExpression();
=20
-  ExceptionSpecificationType MaybeParseExceptionSpecification(
+  ExceptionSpecificationType tryParseExceptionSpecification(
                     SourceRange &SpecificationRange,
                     SmallVectorImpl<ParsedType> &DynamicExceptions,
                     SmallVectorImpl<SourceRange> &DynamicExceptionRanges,
@@ -1517,42 +1525,40 @@
   //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
   // C99 6.8: Statements and Blocks.
=20
-  StmtResult ParseStatement(SourceLocation *TrailingElseLoc =3D NULL) {
+  StmtResult ParseStatement(SourceLocation *TrailingElseLoc =3D 0) {
     StmtVector Stmts(Actions);
     return ParseStatementOrDeclaration(Stmts, true, TrailingElseLoc);
   }
-  StmtResult ParseStatementOrDeclaration(StmtVector& Stmts,
+  StmtResult ParseStatementOrDeclaration(StmtVector &Stmts,
                                          bool OnlyStatement,
-                                        SourceLocation *TrailingElseLoc =
=3D NULL);
-  StmtResult ParseExprStatement(ParsedAttributes &Attrs);
-  StmtResult ParseLabeledStatement(ParsedAttributes &Attr);
-  StmtResult ParseCaseStatement(ParsedAttributes &Attr,
-                                bool MissingCase =3D false,
+                                         SourceLocation *TrailingElseLoc =
=3D 0);
+  StmtResult ParseStatementOrDeclarationAfterAttributes(
+                                         StmtVector &Stmts,
+                                         bool OnlyStatement,
+                                         SourceLocation *TrailingElseLoc,
+                                         ParsedAttributesWithRange &Attrs);
+  StmtResult ParseExprStatement();
+  StmtResult ParseLabeledStatement(ParsedAttributesWithRange &attrs);
+  StmtResult ParseCaseStatement(bool MissingCase =3D false,
                                 ExprResult Expr =3D ExprResult());
-  StmtResult ParseDefaultStatement(ParsedAttributes &Attr);
-  StmtResult ParseCompoundStatement(ParsedAttributes &Attr,
-                                    bool isStmtExpr =3D false);
-  StmtResult ParseCompoundStatement(ParsedAttributes &Attr,
-                                    bool isStmtExpr,
+  StmtResult ParseDefaultStatement();
+  StmtResult ParseCompoundStatement(bool isStmtExpr =3D false);
+  StmtResult ParseCompoundStatement(bool isStmtExpr,
                                     unsigned ScopeFlags);
   StmtResult ParseCompoundStatementBody(bool isStmtExpr =3D false);
   bool ParseParenExprOrCondition(ExprResult &ExprResult,
                                  Decl *&DeclResult,
                                  SourceLocation Loc,
                                  bool ConvertToBoolean);
-  StmtResult ParseIfStatement(ParsedAttributes &Attr,
-                              SourceLocation *TrailingElseLoc);
-  StmtResult ParseSwitchStatement(ParsedAttributes &Attr,
-                                  SourceLocation *TrailingElseLoc);
-  StmtResult ParseWhileStatement(ParsedAttributes &Attr,
-                                 SourceLocation *TrailingElseLoc);
-  StmtResult ParseDoStatement(ParsedAttributes &Attr);
-  StmtResult ParseForStatement(ParsedAttributes &Attr,
-                               SourceLocation *TrailingElseLoc);
-  StmtResult ParseGotoStatement(ParsedAttributes &Attr);
-  StmtResult ParseContinueStatement(ParsedAttributes &Attr);
-  StmtResult ParseBreakStatement(ParsedAttributes &Attr);
-  StmtResult ParseReturnStatement(ParsedAttributes &Attr);
+  StmtResult ParseIfStatement(SourceLocation *TrailingElseLoc);
+  StmtResult ParseSwitchStatement(SourceLocation *TrailingElseLoc);
+  StmtResult ParseWhileStatement(SourceLocation *TrailingElseLoc);
+  StmtResult ParseDoStatement();
+  StmtResult ParseForStatement(SourceLocation *TrailingElseLoc);
+  StmtResult ParseGotoStatement();
+  StmtResult ParseContinueStatement();
+  StmtResult ParseBreakStatement();
+  StmtResult ParseReturnStatement();
   StmtResult ParseAsmStatement(bool &msAsm);
   StmtResult ParseMicrosoftAsmStatement(SourceLocation AsmLoc);
=20
@@ -1586,7 +1592,7 @@
     /// \brief The behavior of this __if_exists or __if_not_exists block
     /// should.
     IfExistsBehavior Behavior;
-};
+  };
=20
   bool ParseMicrosoftIfExistsCondition(IfExistsCondition& Result);
   void ParseMicrosoftIfExistsStatement(StmtVector &Stmts);
@@ -1602,14 +1608,14 @@
   //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
   // C++ 6: Statements and Blocks
=20
-  StmtResult ParseCXXTryBlock(ParsedAttributes &Attr);
+  StmtResult ParseCXXTryBlock();
   StmtResult ParseCXXTryBlockCommon(SourceLocation TryLoc);
   StmtResult ParseCXXCatchBlock();
=20
   //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
   // MS: SEH Statements and Blocks
=20
-  StmtResult ParseSEHTryBlock(ParsedAttributes &Attr);
+  StmtResult ParseSEHTryBlock();
   StmtResult ParseSEHTryBlockCommon(SourceLocation Loc);
   StmtResult ParseSEHExceptBlock(SourceLocation Loc);
   StmtResult ParseSEHFinallyBlock(SourceLocation Loc);
@@ -1883,6 +1889,7 @@
   void ProhibitAttributes(ParsedAttributesWithRange &attrs) {
     if (!attrs.Range.isValid()) return;
     DiagnoseProhibitedAttributes(attrs);
+    attrs.clear();
   }
   void DiagnoseProhibitedAttributes(ParsedAttributesWithRange &attrs);
=20
@@ -1967,7 +1974,7 @@
=20
   void ParseTypeofSpecifier(DeclSpec &DS);
   SourceLocation ParseDecltypeSpecifier(DeclSpec &DS);
-  void AnnotateExistingDecltypeSpecifier(const DeclSpec &DS,=20
+  void AnnotateExistingDecltypeSpecifier(const DeclSpec &DS,
                                          SourceLocation StartLoc,
                                          SourceLocation EndLoc);
   void ParseUnderlyingTypeSpecifier(DeclSpec &DS);
@@ -2106,8 +2113,8 @@
                                  ParsingDeclRAIIObject *DiagsFromTParams =
=3D 0);
   void ParseConstructorInitializer(Decl *ConstructorDecl);
   MemInitResult ParseMemInitializer(Decl *ConstructorDecl);
-  void HandleMemberFunctionDefaultArgs(Declarator& DeclaratorInfo,
-                                       Decl *ThisDecl);
+  void HandleMemberFunctionDeclDelays(Declarator& DeclaratorInfo,
+                                      Decl *ThisDecl);
=20
   //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
   // C++ 10: Derived classes [class.derived]
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Sema/Initialization.h
--- a/head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -225,7 +225,9 @@
  =20
   /// \brief Create the initialization entity for a temporary.
   static InitializedEntity InitializeTemporary(QualType Type) {
-    return InitializedEntity(EK_Temporary, SourceLocation(), Type);
+    InitializedEntity Result(EK_Temporary, SourceLocation(), Type);
+    Result.TypeInfo =3D 0;
+    return Result;
   }
=20
   /// \brief Create the initialization entity for a temporary.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Sema/ParsedTemplate.h
--- a/head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -178,8 +178,11 @@
     ParsedTemplateArgument *getTemplateArgs() {=20
       return reinterpret_cast<ParsedTemplateArgument *>(this + 1);=20
     }
-   =20
-    static TemplateIdAnnotation* Allocate(unsigned NumArgs) {
+
+    /// \brief Creates a new TemplateIdAnnotation with NumArgs arguments a=
nd
+    /// appends it to List.
+    static TemplateIdAnnotation *
+    Allocate(unsigned NumArgs, SmallVectorImpl<TemplateIdAnnotation*> &Lis=
t) {
       TemplateIdAnnotation *TemplateId
         =3D (TemplateIdAnnotation *)std::malloc(sizeof(TemplateIdAnnotatio=
n) +
                                       sizeof(ParsedTemplateArgument) * Num=
Args);
@@ -193,6 +196,7 @@
       for (unsigned I =3D 0; I !=3D NumArgs; ++I)
         new (TemplateArgs + I) ParsedTemplateArgument();
      =20
+      List.push_back(TemplateId);
       return TemplateId;
     }
    =20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Sema/Scope.h
--- a/head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -81,13 +81,8 @@
     /// SwitchScope - This is a scope that corresponds to a switch stateme=
nt.
     SwitchScope =3D 0x800,
=20
-    /// ThisScope - This is the scope of a struct/union/class definition,
-    /// outside of any member function definition, where 'this' is nonethe=
less
-    /// usable.
-    ThisScope =3D 0x1000,
-   =20
     /// TryScope - This is the scope of a C++ try statement.
-    TryScope =3D 0x2000
+    TryScope =3D 0x1000
   };
 private:
   /// The parent scope for this scope.  This is null for the translation-u=
nit
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Sema/Sema.h
--- a/head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -331,6 +331,11 @@
   /// cycle detection at the end of the TU.
   DelegatingCtorDeclsType DelegatingCtorDecls;
=20
+  /// \brief All the destructors seen during a class definition that had t=
heir
+  /// exception spec computation delayed because it depended on an unparsed
+  /// exception spec.
+  SmallVector<CXXDestructorDecl*, 2> DelayedDestructorExceptionSpecs;
+
   /// \brief All the overriding destructors seen during a class definition
   /// (there could be multiple due to nested classes) that had their excep=
tion
   /// spec checks delayed, plus the overridden destructor.
@@ -446,11 +451,13 @@
     Sema &S;
     DeclContext *SavedContext;
     ProcessingContextState SavedContextState;
-
+    QualType SavedCXXThisTypeOverride;
+   =20
   public:
     ContextRAII(Sema &S, DeclContext *ContextToPush)
       : S(S), SavedContext(S.CurContext),
-        SavedContextState(S.DelayedDiagnostics.pushContext())
+        SavedContextState(S.DelayedDiagnostics.pushContext()),
+        SavedCXXThisTypeOverride(S.CXXThisTypeOverride)
     {
       assert(ContextToPush && "pushing null context");
       S.CurContext =3D ContextToPush;
@@ -460,6 +467,7 @@
       if (!SavedContext) return;
       S.CurContext =3D SavedContext;
       S.DelayedDiagnostics.popContext(SavedContextState);
+      S.CXXThisTypeOverride =3D SavedCXXThisTypeOverride;
       SavedContext =3D 0;
     }
=20
@@ -646,27 +654,23 @@
=20
   /// A stack of expression evaluation contexts.
   SmallVector<ExpressionEvaluationContextRecord, 8> ExprEvalContexts;
-
+ =20
   /// SpecialMemberOverloadResult - The overloading result for a special m=
ember
   /// function.
   ///
-  /// This is basically a wrapper around PointerIntPair. The lowest bit of=
 the
-  /// integer is used to determine whether we have a parameter qualificati=
on
-  /// match, the second-lowest is whether we had success in resolving the
-  /// overload to a unique non-deleted function.
-  ///
-  /// The ConstParamMatch bit represents whether, when looking up a copy
-  /// constructor or assignment operator, we found a potential copy
-  /// constructor/assignment operator whose first parameter is const-quali=
fied.
-  /// This is used for determining parameter types of other objects and is
-  /// utterly meaningless on other types of special members.
+  /// This is basically a wrapper around PointerIntPair. The lowest bits o=
f the
+  /// integer are used to determine whether overload resolution succeeded,=
 and
+  /// whether, when looking up a copy constructor or assignment operator, =
we
+  /// found a potential copy constructor/assignment operator whose first
+  /// parameter is const-qualified. This is used for determining parameter=
 types
+  /// of other objects and is utterly meaningless on other types of special
+  /// members.
   class SpecialMemberOverloadResult : public llvm::FastFoldingSetNode {
   public:
     enum Kind {
       NoMemberOrDeleted,
       Ambiguous,
-      SuccessNonConst,
-      SuccessConst
+      Success
     };
=20
   private:
@@ -682,9 +686,6 @@
=20
     Kind getKind() const { return static_cast<Kind>(Pair.getInt()); }
     void setKind(Kind K) { Pair.setInt(K); }
-
-    bool hasSuccess() const { return getKind() >=3D SuccessNonConst; }
-    bool hasConstParamMatch() const { return getKind() =3D=3D SuccessConst=
; }
   };
=20
   /// \brief A cache of special member function overload resolution results
@@ -898,11 +899,15 @@
   TypeSourceInfo *GetTypeForDeclaratorCast(Declarator &D, QualType FromTy);
   TypeSourceInfo *GetTypeSourceInfoForDeclarator(Declarator &D, QualType T,
                                                TypeSourceInfo *ReturnTypeI=
nfo);
+   =20
   /// \brief Package the given type and TSI into a ParsedType.
   ParsedType CreateParsedType(QualType T, TypeSourceInfo *TInfo);
   DeclarationNameInfo GetNameForDeclarator(Declarator &D);
   DeclarationNameInfo GetNameFromUnqualifiedId(const UnqualifiedId &Name);
   static QualType GetTypeFromParser(ParsedType Ty, TypeSourceInfo **TInfo =
=3D 0);
+  CanThrowResult canThrow(const Expr *E);
+  const FunctionProtoType *ResolveExceptionSpec(SourceLocation Loc,
+                                                const FunctionProtoType *F=
PT);
   bool CheckSpecifiedExceptionType(QualType T, const SourceRange &Range);
   bool CheckDistantExceptionSpec(QualType T);
   bool CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *New);
@@ -1902,11 +1907,9 @@
   DeclContextLookupResult LookupConstructors(CXXRecordDecl *Class);
   CXXConstructorDecl *LookupDefaultConstructor(CXXRecordDecl *Class);
   CXXConstructorDecl *LookupCopyingConstructor(CXXRecordDecl *Class,
-                                               unsigned Quals,
-                                               bool *ConstParam =3D 0);
+                                               unsigned Quals);
   CXXMethodDecl *LookupCopyingAssignment(CXXRecordDecl *Class, unsigned Qu=
als,
-                                         bool RValueThis, unsigned ThisQua=
ls,
-                                         bool *ConstParam =3D 0);
+                                         bool RValueThis, unsigned ThisQua=
ls);
   CXXConstructorDecl *LookupMovingConstructor(CXXRecordDecl *Class);
   CXXMethodDecl *LookupMovingAssignment(CXXRecordDecl *Class, bool RValueT=
his,
                                         unsigned ThisQuals);
@@ -1974,6 +1977,10 @@
   bool CheckCallingConvAttr(const AttributeList &attr, CallingConv &CC);
   bool CheckNoReturnAttr(const AttributeList &attr);
=20
+  /// \brief Stmt attributes - this routine is the top level dispatcher.
+  StmtResult ProcessStmtAttributes(Stmt *Stmt, AttributeList *Attrs,
+                                   SourceRange Range);
+
   void WarnUndefinedMethod(SourceLocation ImpLoc, ObjCMethodDecl *method,
                            bool &IncompleteImpl, unsigned DiagID);
   void WarnConflictingTypedMethods(ObjCMethodDecl *Method,
@@ -2251,6 +2258,9 @@
   StmtResult ActOnLabelStmt(SourceLocation IdentLoc, LabelDecl *TheDecl,
                             SourceLocation ColonLoc, Stmt *SubStmt);
=20
+  StmtResult ActOnAttributedStmt(SourceLocation AttrLoc, const AttrVec &At=
trs,
+                                 Stmt *SubStmt);
+
   StmtResult ActOnIfStmt(SourceLocation IfLoc,
                          FullExprArg CondVal, Decl *CondVar,
                          Stmt *ThenVal,
@@ -3039,7 +3049,7 @@
   /// implicitly-declared special member functions.
   class ImplicitExceptionSpecification {
     // Pointer to allow copying
-    ASTContext *Context;
+    Sema *Self;
     // We order exception specifications thus:
     // noexcept is the most restrictive, but is only used in C++0x.
     // throw() comes next.
@@ -3063,9 +3073,9 @@
     }
=20
   public:
-    explicit ImplicitExceptionSpecification(ASTContext &Context)
-      : Context(&Context), ComputedEST(EST_BasicNoexcept) {
-      if (!Context.getLangOpts().CPlusPlus0x)
+    explicit ImplicitExceptionSpecification(Sema &Self)
+      : Self(&Self), ComputedEST(EST_BasicNoexcept) {
+      if (!Self.Context.getLangOpts().CPlusPlus0x)
         ComputedEST =3D EST_DynamicNone;
     }
=20
@@ -3083,7 +3093,7 @@
     const QualType *data() const { return Exceptions.data(); }
=20
     /// \brief Integrate another called method into the collected data.
-    void CalledDecl(CXXMethodDecl *Method);
+    void CalledDecl(SourceLocation CallLoc, CXXMethodDecl *Method);
=20
     /// \brief Integrate an invoked expression into the collected data.
     void CalledExpr(Expr *E);
@@ -3135,6 +3145,15 @@
   ImplicitExceptionSpecification
   ComputeDefaultedDtorExceptionSpec(CXXRecordDecl *ClassDecl);
=20
+  /// \brief Check the given exception-specification and update the
+  /// extended prototype information with the results.
+  void checkExceptionSpecification(ExceptionSpecificationType EST,
+                                   ArrayRef<ParsedType> DynamicExceptions,
+                                   ArrayRef<SourceRange> DynamicExceptionR=
anges,
+                                   Expr *NoexceptExpr,
+                                   llvm::SmallVectorImpl<QualType> &Except=
ions,
+                                   FunctionProtoType::ExtProtoInfo &EPI);
+
   /// \brief Determine if a special member function should have a deleted
   /// definition when it is defaulted.
   bool ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM,
@@ -3172,7 +3191,8 @@
   /// C++11 says that user-defined destructors with no exception spec get =
one
   /// that looks as if the destructor was implicitly declared.
   void AdjustDestructorExceptionSpec(CXXRecordDecl *ClassDecl,
-                                     CXXDestructorDecl *Destructor);
+                                     CXXDestructorDecl *Destructor,
+                                     bool WasDelayed =3D false);
=20
   /// \brief Declare all inherited constructors for the given class.
   ///
@@ -3240,6 +3260,22 @@
   /// special member function.
   bool isImplicitlyDeleted(FunctionDecl *FD);
  =20
+  /// \brief Check whether 'this' shows up in the type of a static member
+  /// function after the (naturally empty) cv-qualifier-seq would be.
+  ///
+  /// \returns true if an error occurred.
+  bool checkThisInStaticMemberFunctionType(CXXMethodDecl *Method);
+
+  /// \brief Whether this' shows up in the exception specification of a st=
atic
+  /// member function.
+  bool checkThisInStaticMemberFunctionExceptionSpec(CXXMethodDecl *Method);
+
+  /// \brief Check whether 'this' shows up in the attributes of the given
+  /// static member function.
+  ///
+  /// \returns true if an error occurred.
+  bool checkThisInStaticMemberFunctionAttributes(CXXMethodDecl *Method);
+ =20
   /// MaybeBindToTemporary - If the passed in expression has a record type=
 with
   /// a non-trivial destructor, this will return CXXBindTemporaryExpr. Oth=
erwise
   /// it simply returns the passed in expression.
@@ -3321,6 +3357,29 @@
   /// \returns The type of 'this', if possible. Otherwise, returns a NULL =
type.
   QualType getCurrentThisType();
=20
+  /// \brief When non-NULL, the C++ 'this' expression is allowed despite t=
he=20
+  /// current context not being a non-static member function. In such case=
s,
+  /// this provides the type used for 'this'.
+  QualType CXXThisTypeOverride;
+ =20
+  /// \brief RAII object used to temporarily allow the C++ 'this' expressi=
on
+  /// to be used, with the given qualifiers on the current class type.
+  class CXXThisScopeRAII {
+    Sema &S;
+    QualType OldCXXThisTypeOverride;
+    bool Enabled;
+   =20
+  public:
+    /// \brief Introduce a new scope where 'this' may be allowed (when ena=
bled),
+    /// using the given declaration (which is either a class template or a=20
+    /// class) along with the given qualifiers.
+    /// along with the qualifiers placed on '*this'.
+    CXXThisScopeRAII(Sema &S, Decl *ContextDecl, unsigned CXXThisTypeQuals=
,=20
+                     bool Enabled =3D true);
+   =20
+    ~CXXThisScopeRAII();
+  };
+ =20
   /// \brief Make sure the value of 'this' is actually available in the cu=
rrent
   /// context, if it is a potentially evaluated context.
   ///
@@ -3330,6 +3389,11 @@
   /// capture list.
   void CheckCXXThisCapture(SourceLocation Loc, bool Explicit =3D false);
=20
+  /// \brief Determine whether the given type is the type of *this that is=
 used
+  /// outside of the body of a member function for a type that is currentl=
y=20
+  /// being defined.
+  bool isThisOutsideMemberFunctionBody(QualType BaseType);
+ =20
   /// ActOnCXXBoolLiteral - Parse {true,false} literals.
   ExprResult ActOnCXXBoolLiteral(SourceLocation OpLoc, tok::TokenKind Kind=
);
  =20
@@ -3966,6 +4030,7 @@
                                          SourceLocation LBrac,
                                          SourceLocation RBrac,
                                          AttributeList *AttrList);
+  void ActOnFinishCXXMemberDecls();
=20
   void ActOnReenterTemplateScope(Scope *S, Decl *Template);
   void ActOnReenterDeclaratorTemplateScope(Scope *S, DeclaratorDecl *D);
@@ -5120,7 +5185,11 @@
=20
       /// We are checking the validity of a default template argument that
       /// has been used when naming a template-id.
-      DefaultTemplateArgumentChecking
+      DefaultTemplateArgumentChecking,
+
+      /// We are instantiating the exception specification for a function
+      /// template which was deferred until it was needed.
+      ExceptionSpecInstantiation
     } Kind;
=20
     /// \brief The point of instantiation within the source code.
@@ -5168,6 +5237,7 @@
=20
       switch (X.Kind) {
       case TemplateInstantiation:
+      case ExceptionSpecInstantiation:
         return true;
=20
       case PriorTemplateArgumentSubstitution:
@@ -5285,6 +5355,13 @@
                           Decl *Entity,
                           SourceRange InstantiationRange =3D SourceRange()=
);
=20
+    struct ExceptionSpecification {};
+    /// \brief Note that we are instantiating an exception specification
+    /// of a function template.
+    InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiati=
on,
+                          FunctionDecl *Entity, ExceptionSpecification,
+                          SourceRange InstantiationRange =3D SourceRange()=
);
+
     /// \brief Note that we are instantiating a default argument in a
     /// template-id.
     InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiati=
on,
@@ -5474,7 +5551,9 @@
   TypeSourceInfo *SubstFunctionDeclType(TypeSourceInfo *T,
                             const MultiLevelTemplateArgumentList &Template=
Args,
                                         SourceLocation Loc,
-                                        DeclarationName Entity);
+                                        DeclarationName Entity,
+                                        CXXRecordDecl *ThisContext,
+                                        unsigned ThisTypeQuals);
   ParmVarDecl *SubstParmVarDecl(ParmVarDecl *D,
                             const MultiLevelTemplateArgumentList &Template=
Args,
                                 int indexAdjustment,
@@ -5582,6 +5661,8 @@
              TemplateArgumentListInfo &Result,
              const MultiLevelTemplateArgumentList &TemplateArgs);
=20
+  void InstantiateExceptionSpec(SourceLocation PointOfInstantiation,
+                                FunctionDecl *Function);
   void InstantiateFunctionDefinition(SourceLocation PointOfInstantiation,
                                      FunctionDecl *Function,
                                      bool Recursive =3D false,
@@ -6463,11 +6544,11 @@
   /// and reports the appropriate diagnostics. Returns false on success.
   /// Can optionally return the value of the expression.
   ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
-                                             PartialDiagnostic Diag,
+                                             const PartialDiagnostic &Diag,
                                              bool AllowFold,
-                                             PartialDiagnostic FoldDiag);
+                                             const PartialDiagnostic &Fold=
Diag);
   ExprResult VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
-                                             PartialDiagnostic Diag,
+                                             const PartialDiagnostic &Diag,
                                              bool AllowFold =3D true) {
     return VerifyIntegerConstantExpression(E, Result, Diag, AllowFold,
                                            PDiag(0));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Serialization/ASTBitCodes.h
--- a/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes=
.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes=
.h	Wed Jul 25 16:21:35 2012 +0300
@@ -964,6 +964,8 @@
       STMT_DEFAULT,
       /// \brief A LabelStmt record.
       STMT_LABEL,
+      /// \brief An AttributedStmt record.
+      STMT_ATTRIBUTED,
       /// \brief An IfStmt record.
       STMT_IF,
       /// \brief A SwitchStmt record.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Serialization/ASTReader.h
--- a/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h=
	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h=
	Wed Jul 25 16:21:35 2012 +0300
@@ -170,6 +170,9 @@
=20
 namespace reader {
   class ASTIdentifierLookupTrait;
+  /// \brief The on-disk hash table used for the DeclContext's Name lookup=
 table.
+  typedef OnDiskChainedHashTable<ASTDeclContextNameLookupTrait>
+    ASTDeclContextNameLookupTable;
 }
=20
 } // end namespace serialization
@@ -323,7 +326,9 @@
   // TU, and when we read those update records, the actual context will not
   // be available yet (unless it's the TU), so have this pending map using=
 the
   // ID as a key. It will be realized when the context is actually loaded.
-  typedef SmallVector<std::pair<void *, ModuleFile*>, 1> DeclContextVisibl=
eUpdates;
+  typedef
+    SmallVector<std::pair<serialization::reader::ASTDeclContextNameLookupT=
able *,
+                          ModuleFile*>, 1> DeclContextVisibleUpdates;
   typedef llvm::DenseMap<serialization::DeclID, DeclContextVisibleUpdates>
       DeclContextVisibleUpdatesPending;
=20
@@ -1467,7 +1472,7 @@
                      llvm::DenseMap<IdentifierInfo *, uint64_t>::iterator =
Pos);
=20
   /// \brief Load all external visible decls in the given DeclContext.
-  void completeVisibleDeclsMap(DeclContext *DC);
+  void completeVisibleDeclsMap(const DeclContext *DC);
=20
   /// \brief Retrieve the AST context that this AST reader supplements.
   ASTContext &getContext() { return Context; }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Serialization/ASTWriter.h
--- a/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h=
	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h=
	Wed Jul 25 16:21:35 2012 +0300
@@ -76,6 +76,7 @@
   typedef SmallVectorImpl<uint64_t> RecordDataImpl;
=20
   friend class ASTDeclWriter;
+  friend class ASTStmtWriter;
 private:
   /// \brief Map that provides the ID numbers of each type within the
   /// output stream, plus those deserialized from a chained PCH.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Serialization/Module.h
--- a/head/contrib/llvm/tools/clang/include/clang/Serialization/Module.h	We=
d Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Serialization/Module.h	We=
d Jul 25 16:21:35 2012 +0300
@@ -27,9 +27,14 @@
=20
 class DeclContext;
 class Module;
- =20
+template<typename Info> class OnDiskChainedHashTable;
+
 namespace serialization {
=20
+namespace reader {
+  class ASTDeclContextNameLookupTrait;
+}
+
 /// \brief Specifies the kind of module that has been loaded.
 enum ModuleKind {
   MK_Module,   ///< File is a module proper.
@@ -43,7 +48,8 @@
   DeclContextInfo()
     : NameLookupTableData(), LexicalDecls(), NumLexicalDecls() {}
=20
-  void *NameLookupTableData; // an ASTDeclContextNameLookupTable.
+  OnDiskChainedHashTable<reader::ASTDeclContextNameLookupTrait>
+    *NameLookupTableData; // an ASTDeclContextNameLookupTable.
   const KindDeclIDPair *LexicalDecls;
   unsigned NumLexicalDecls;
 };
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
--- a/head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathS=
ensitive/AnalysisManager.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathS=
ensitive/AnalysisManager.h	Wed Jul 25 16:21:35 2012 +0300
@@ -22,11 +22,6 @@
=20
 namespace clang {
=20
-namespace idx {=20
-  class Indexer;
-  class TranslationUnit;=20
-}
-
 namespace ento {
   class CheckerManager;
=20
@@ -46,11 +41,6 @@
=20
   CheckerManager *CheckerMgr;
=20
-  /// \brief Provide function definitions in other translation units. This=
 is
-  /// NULL if we don't have multiple translation units. AnalysisManager do=
es
-  /// not own the Indexer.
-  idx::Indexer *Idxer;
-
   enum AnalysisScope { ScopeTU, ScopeDecl } AScope;
=20
   /// \brief The maximum number of exploded nodes the analyzer will genera=
te.
@@ -99,7 +89,6 @@
                   StoreManagerCreator storemgr,
                   ConstraintManagerCreator constraintmgr,=20
                   CheckerManager *checkerMgr,
-                  idx::Indexer *idxer,
                   unsigned maxnodes, unsigned maxvisit,
                   bool vizdot, bool vizubi, AnalysisPurgeMode purge,
                   bool eager, bool trim,
@@ -137,8 +126,6 @@
=20
   CheckerManager *getCheckerManager() const { return CheckerMgr; }
=20
-  idx::Indexer *getIndexer() const { return Idxer; }
-
   virtual ASTContext &getASTContext() {
     return Ctx;
   }
@@ -186,10 +173,6 @@
=20
   bool shouldInlineCall() const { return (IPAMode =3D=3D Inlining); }
=20
-  bool hasIndexer() const { return Idxer !=3D 0; }
-
-  AnalysisDeclContext *getAnalysisDeclContextInAnotherTU(const Decl *D);
-
   CFG *getCFG(Decl const *D) {
     return AnaCtxMgr.getContext(D)->getCFG();
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/StaticAnalyzer/Core/PathSensitive/SVals.h
--- a/head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathS=
ensitive/SVals.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathS=
ensitive/SVals.h	Wed Jul 25 16:21:35 2012 +0300
@@ -425,10 +425,12 @@
 public:
   explicit MemRegionVal(const MemRegion* r) : Loc(MemRegionKind, r) {}
=20
+  /// \brief Get the underlining region.
   const MemRegion* getRegion() const {
     return static_cast<const MemRegion*>(Data);
   }
=20
+  /// \brief Get the underlining region and strip casts.
   const MemRegion* stripCasts() const;
=20
   template <typename REGION>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/include/=
clang/Tooling/CompilationDatabase.h
--- a/head/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDataba=
se.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDataba=
se.h	Wed Jul 25 16:21:35 2012 +0300
@@ -33,22 +33,21 @@
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringRef.h"
+#include "llvm/ADT/Twine.h"
 #include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/SourceMgr.h"
+#include "llvm/Support/YAMLParser.h"
 #include <string>
 #include <vector>
=20
-namespace llvm {
-class MemoryBuffer;
-} // end namespace llvm
-
 namespace clang {
 namespace tooling {
=20
 /// \brief Specifies the working directory and command of a compilation.
 struct CompileCommand {
   CompileCommand() {}
-  CompileCommand(StringRef Directory, ArrayRef<std::string> CommandLine)
-    : Directory(Directory), CommandLine(CommandLine) {}
+  CompileCommand(Twine Directory, ArrayRef<std::string> CommandLine)
+    : Directory(Directory.str()), CommandLine(CommandLine) {}
=20
   /// \brief The working directory the command was executed from.
   std::string Directory;
@@ -95,6 +94,59 @@
     StringRef FilePath) const =3D 0;
 };
=20
+/// \brief A compilation database that returns a single compile command li=
ne.
+///
+/// Useful when we want a tool to behave more like a compiler invocation.
+class FixedCompilationDatabase : public CompilationDatabase {
+public:
+  /// \brief Creates a FixedCompilationDatabase from the arguments after "=
--".
+  ///
+  /// Parses the given command line for "--". If "--" is found, the rest of
+  /// the arguments will make up the command line in the returned
+  /// FixedCompilationDatabase.
+  /// The arguments after "--" must not include positional parameters or t=
he
+  /// argv[0] of the tool. Those will be added by the FixedCompilationData=
base
+  /// when a CompileCommand is requested. The argv[0] of the returned comm=
and
+  /// line will be "clang-tool".
+  ///
+  /// Returns NULL in case "--" is not found.
+  ///
+  /// The argument list is meant to be compatible with normal llvm command=
 line
+  /// parsing in main methods.
+  /// int main(int argc, char **argv) {
+  ///   llvm::OwningPtr<FixedCompilationDatabase> Compilations(
+  ///     FixedCompilationDatabase::loadFromCommandLine(argc, argv));
+  ///   cl::ParseCommandLineOptions(argc, argv);
+  ///   ...
+  /// }
+  ///
+  /// \param Argc The number of command line arguments - will be changed to
+  /// the number of arguments before "--", if "--" was found in the argume=
nt
+  /// list.
+  /// \param Argv Points to the command line arguments.
+  /// \param Directory The base directory used in the FixedCompilationData=
base.
+  static FixedCompilationDatabase *loadFromCommandLine(int &Argc,
+                                                       const char **Argv,
+                                                       Twine Directory =3D=
 ".");
+
+  /// \brief Constructs a compilation data base from a specified directory
+  /// and command line.
+  FixedCompilationDatabase(Twine Directory, ArrayRef<std::string> CommandL=
ine);
+
+  /// \brief Returns the given compile command.
+  ///
+  /// Will always return a vector with one entry that contains the directo=
ry
+  /// and command line specified at construction with "clang-tool" as argv=
[0]
+  /// and 'FilePath' as positional argument.
+  virtual std::vector<CompileCommand> getCompileCommands(
+    StringRef FilePath) const;
+
+private:
+  /// This is built up to contain a single entry vector to be returned from
+  /// getCompileCommands after adding the positional argument.
+  std::vector<CompileCommand> CompileCommands;
+};
+
 /// \brief A JSON based compilation database.
 ///
 /// JSON compilation database files must contain a list of JSON objects wh=
ich
@@ -114,7 +166,6 @@
 /// by setting the flag -DCMAKE_EXPORT_COMPILE_COMMANDS.
 class JSONCompilationDatabase : public CompilationDatabase {
 public:
-
   /// \brief Loads a JSON compilation database from the specified file.
   ///
   /// Returns NULL and sets ErrorMessage if the database could not be
@@ -139,7 +190,7 @@
 private:
   /// \brief Constructs a JSON compilation database on a memory buffer.
   JSONCompilationDatabase(llvm::MemoryBuffer *Database)
-    : Database(Database) {}
+    : Database(Database), YAMLStream(Database->getBuffer(), SM) {}
=20
   /// \brief Parses the database file and creates the index.
   ///
@@ -147,14 +198,17 @@
   /// failed.
   bool parse(std::string &ErrorMessage);
=20
-  // Tuple (directory, commandline) where 'commandline' is a JSON escaped =
bash
-  // escaped command line.
-  typedef std::pair<StringRef, StringRef> CompileCommandRef;
+  // Tuple (directory, commandline) where 'commandline' pointing to the
+  // corresponding nodes in the YAML stream.
+  typedef std::pair<llvm::yaml::ScalarNode*,
+                    llvm::yaml::ScalarNode*> CompileCommandRef;
=20
   // Maps file paths to the compile command lines for that file.
   llvm::StringMap< std::vector<CompileCommandRef> > IndexByFile;
=20
   llvm::OwningPtr<llvm::MemoryBuffer> Database;
+  llvm::SourceMgr SM;
+  llvm::yaml::Stream YAMLStream;
 };
=20
 } // end namespace tooling
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
ASTContext.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -481,7 +481,8 @@
   InitBuiltinType(ObjCBuiltinSelTy, BuiltinType::ObjCSel);
  =20
   // Builtin type for __objc_yes and __objc_no
-  ObjCBuiltinBoolTy =3D SignedCharTy;
+  ObjCBuiltinBoolTy =3D (Target.useSignedCharForObjCBool() ?
+                       SignedCharTy : BoolTy);
  =20
   ObjCConstantStringType =3D QualType();
=20
@@ -2193,6 +2194,8 @@
     Size +=3D EPI.NumExceptions * sizeof(QualType);
   else if (EPI.ExceptionSpecType =3D=3D EST_ComputedNoexcept) {
     Size +=3D sizeof(Expr*);
+  } else if (EPI.ExceptionSpecType =3D=3D EST_Uninstantiated) {
+    Size +=3D 2 * sizeof(FunctionDecl*);
   }
   if (EPI.ConsumedArguments)
     Size +=3D NumArgs * sizeof(bool);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
Decl.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/Decl.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/Decl.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -69,33 +69,25 @@
 namespace {
 /// Flags controlling the computation of linkage and visibility.
 struct LVFlags {
-  bool ConsiderGlobalVisibility;
-  bool ConsiderVisibilityAttributes;
-  bool ConsiderTemplateParameterTypes;
+  const bool ConsiderGlobalVisibility;
+  const bool ConsiderVisibilityAttributes;
+  const bool ConsiderTemplateParameterTypes;
=20
   LVFlags() : ConsiderGlobalVisibility(true),=20
               ConsiderVisibilityAttributes(true),
               ConsiderTemplateParameterTypes(true) {
   }
=20
+  LVFlags(bool Global, bool Attributes, bool Parameters) :
+    ConsiderGlobalVisibility(Global),
+    ConsiderVisibilityAttributes(Attributes),
+    ConsiderTemplateParameterTypes(Parameters) {
+  }
+
   /// \brief Returns a set of flags that is only useful for computing the=20
   /// linkage, not the visibility, of a declaration.
   static LVFlags CreateOnlyDeclLinkage() {
-    LVFlags F;
-    F.ConsiderGlobalVisibility =3D false;
-    F.ConsiderVisibilityAttributes =3D false;
-    F.ConsiderTemplateParameterTypes =3D false;
-    return F;
-  }
- =20
-  /// Returns a set of flags, otherwise based on these, which ignores
-  /// off all sources of visibility except template arguments.
-  LVFlags onlyTemplateVisibility() const {
-    LVFlags F =3D *this;
-    F.ConsiderGlobalVisibility =3D false;
-    F.ConsiderVisibilityAttributes =3D false;
-    F.ConsiderTemplateParameterTypes =3D false;
-    return F;
+    return LVFlags(false, false, false);
   }
 };=20
 } // end anonymous namespace
@@ -284,7 +276,6 @@
   if (F.ConsiderVisibilityAttributes) {
     if (llvm::Optional<Visibility> Vis =3D D->getExplicitVisibility()) {
       LV.setVisibility(*Vis, true);
-      F.ConsiderGlobalVisibility =3D false;
     } else {
       // If we're declared in a namespace with a visibility attribute,
       // use that namespace's visibility, but don't call it explicit.
@@ -295,7 +286,6 @@
         if (!ND) continue;
         if (llvm::Optional<Visibility> Vis =3D ND->getExplicitVisibility()=
) {
           LV.setVisibility(*Vis, true);
-          F.ConsiderGlobalVisibility =3D false;
           break;
         }
       }
@@ -335,8 +325,7 @@
       LinkageInfo TypeLV =3D getLVForType(Var->getType());
       if (TypeLV.linkage() !=3D ExternalLinkage)
         return LinkageInfo::uniqueExternal();
-      LV.mergeVisibilityWithMin(TypeLV.visibility(),
-                                TypeLV.visibilityExplicit());
+      LV.mergeVisibilityWithMin(TypeLV);
     }
=20
     if (Var->getStorageClass() =3D=3D SC_PrivateExtern)
@@ -412,7 +401,7 @@
                                =3D Function->getTemplateSpecializationInfo=
()) {
       if (shouldConsiderTemplateLV(Function, specInfo)) {
         LV.merge(getLVForDecl(specInfo->getTemplate(),
-                              F.onlyTemplateVisibility()));
+                              LVFlags::CreateOnlyDeclLinkage()));
         const TemplateArgumentList &templateArgs =3D *specInfo->TemplateAr=
guments;
         LV.mergeWithMin(getLVForTemplateArgumentList(templateArgs, F));
       }
@@ -436,7 +425,7 @@
       if (shouldConsiderTemplateLV(spec)) {
         // From the template.
         LV.merge(getLVForDecl(spec->getSpecializedTemplate(),
-                              F.onlyTemplateVisibility()));
+                              LVFlags::CreateOnlyDeclLinkage()));
=20
         // The arguments at which the template was instantiated.
         const TemplateArgumentList &TemplateArgs =3D spec->getTemplateArgs=
();
@@ -444,12 +433,6 @@
       }
     }
=20
-    // Consider -fvisibility unless the type has C linkage.
-    if (F.ConsiderGlobalVisibility)
-      F.ConsiderGlobalVisibility =3D
-        (Context.getLangOpts().CPlusPlus &&
-         !Tag->getDeclContext()->isExternCContext());
-
   //     - an enumerator belonging to an enumeration with external linkage;
   } else if (isa<EnumConstantDecl>(D)) {
     LinkageInfo EnumLV =3D getLVForDecl(cast<NamedDecl>(D->getDeclContext(=
)), F);
@@ -501,22 +484,47 @@
   LinkageInfo LV;
   LV.mergeVisibility(D->getASTContext().getLangOpts().getVisibilityMode());
=20
-  // The flags we're going to use to compute the class's visibility.
-  LVFlags ClassF =3D F;
-
+  bool DHasExplicitVisibility =3D false;
   // If we have an explicit visibility attribute, merge that in.
   if (F.ConsiderVisibilityAttributes) {
     if (llvm::Optional<Visibility> Vis =3D D->getExplicitVisibility()) {
       LV.mergeVisibility(*Vis, true);
=20
-      // Ignore global visibility later, but not this attribute.
-      F.ConsiderGlobalVisibility =3D false;
-
-      // Ignore both global visibility and attributes when computing our
-      // parent's visibility.
-      ClassF =3D F.onlyTemplateVisibility();
+      DHasExplicitVisibility =3D true;
     }
   }
+  // Ignore both global visibility and attributes when computing our
+  // parent's visibility if we already have an explicit one.
+  LVFlags ClassF =3D  DHasExplicitVisibility ?
+    LVFlags::CreateOnlyDeclLinkage() : F;
+
+  // If we're paying attention to global visibility, apply
+  // -finline-visibility-hidden if this is an inline method.
+  //
+  // Note that we do this before merging information about
+  // the class visibility.
+  if (const CXXMethodDecl *MD =3D dyn_cast<CXXMethodDecl>(D)) {
+    TemplateSpecializationKind TSK =3D TSK_Undeclared;
+    if (FunctionTemplateSpecializationInfo *spec
+        =3D MD->getTemplateSpecializationInfo()) {
+      TSK =3D spec->getTemplateSpecializationKind();
+    } else if (MemberSpecializationInfo *MSI =3D
+               MD->getMemberSpecializationInfo()) {
+      TSK =3D MSI->getTemplateSpecializationKind();
+    }
+
+    const FunctionDecl *Def =3D 0;
+    // InlineVisibilityHidden only applies to definitions, and
+    // isInlined() only gives meaningful answers on definitions
+    // anyway.
+    if (TSK !=3D TSK_ExplicitInstantiationDeclaration &&
+        TSK !=3D TSK_ExplicitInstantiationDefinition &&
+        F.ConsiderGlobalVisibility &&
+        !LV.visibilityExplicit() &&
+        MD->getASTContext().getLangOpts().InlineVisibilityHidden &&
+        MD->hasBody(Def) && Def->isInlined())
+      LV.mergeVisibility(HiddenVisibility, true);
+  }
=20
   // Class members only have linkage if their class has external
   // linkage.
@@ -534,8 +542,6 @@
     if (MD->getType()->getLinkage() =3D=3D UniqueExternalLinkage)
       return LinkageInfo::uniqueExternal();
=20
-    TemplateSpecializationKind TSK =3D TSK_Undeclared;
-
     // If this is a method template specialization, use the linkage for
     // the template parameters and arguments.
     if (FunctionTemplateSpecializationInfo *spec
@@ -547,29 +553,6 @@
           LV.merge(getLVForTemplateParameterList(
                               spec->getTemplate()->getTemplateParameters()=
));
       }
-
-      TSK =3D spec->getTemplateSpecializationKind();
-    } else if (MemberSpecializationInfo *MSI =3D
-                 MD->getMemberSpecializationInfo()) {
-      TSK =3D MSI->getTemplateSpecializationKind();
-    }
-
-    // If we're paying attention to global visibility, apply
-    // -finline-visibility-hidden if this is an inline method.
-    //
-    // Note that ConsiderGlobalVisibility doesn't yet have information
-    // about whether containing classes have visibility attributes,
-    // and that's intentional.
-    if (TSK !=3D TSK_ExplicitInstantiationDeclaration &&
-        TSK !=3D TSK_ExplicitInstantiationDefinition &&
-        F.ConsiderGlobalVisibility &&
-        MD->getASTContext().getLangOpts().InlineVisibilityHidden) {
-      // InlineVisibilityHidden only applies to definitions, and
-      // isInlined() only gives meaningful answers on definitions
-      // anyway.
-      const FunctionDecl *Def =3D 0;
-      if (MD->hasBody(Def) && Def->isInlined())
-        LV.setVisibility(HiddenVisibility);
     }
=20
     // Note that in contrast to basically every other situation, we
@@ -597,7 +580,7 @@
     if (TypeLV.linkage() !=3D ExternalLinkage)
       LV.mergeLinkage(UniqueExternalLinkage);
     if (!LV.visibilityExplicit())
-      LV.mergeVisibility(TypeLV.visibility(), TypeLV.visibilityExplicit());
+      LV.mergeVisibility(TypeLV);
   }
=20
   return LV;
@@ -802,7 +785,7 @@
       LinkageInfo LV;
       if (Flags.ConsiderVisibilityAttributes) {
         if (llvm::Optional<Visibility> Vis =3D Function->getExplicitVisibi=
lity())
-          LV.setVisibility(*Vis);
+          LV.setVisibility(*Vis, true);
       }
      =20
       if (const FunctionDecl *Prev =3D Function->getPreviousDecl()) {
@@ -823,10 +806,10 @@
=20
         LinkageInfo LV;
         if (Var->getStorageClass() =3D=3D SC_PrivateExtern)
-          LV.setVisibility(HiddenVisibility);
+          LV.setVisibility(HiddenVisibility, true);
         else if (Flags.ConsiderVisibilityAttributes) {
           if (llvm::Optional<Visibility> Vis =3D Var->getExplicitVisibilit=
y())
-            LV.setVisibility(*Vis);
+            LV.setVisibility(*Vis, true);
         }
        =20
         if (const VarDecl *Prev =3D Var->getPreviousDecl()) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
Expr.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/Expr.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/Expr.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -1590,6 +1590,16 @@
       inits[i] =3D filler;
 }
=20
+bool InitListExpr::isStringLiteralInit() const {
+  if (getNumInits() !=3D 1)
+    return false;
+  const ConstantArrayType *CAT =3D dyn_cast<ConstantArrayType>(getType());
+  if (!CAT || !CAT->getElementType()->isIntegerType())
+    return false;
+  const Expr *Init =3D getInit(0)->IgnoreParenImpCasts();
+  return isa<StringLiteral>(Init) || isa<ObjCEncodeExpr>(Init);
+}
+
 SourceRange InitListExpr::getSourceRange() const {
   if (SyntacticForm)
     return SyntacticForm->getSourceRange();
@@ -1986,331 +1996,6 @@
   return QualType();
 }
=20
-static Expr::CanThrowResult MergeCanThrow(Expr::CanThrowResult CT1,
-                                          Expr::CanThrowResult CT2) {
-  // CanThrowResult constants are ordered so that the maximum is the corre=
ct
-  // merge result.
-  return CT1 > CT2 ? CT1 : CT2;
-}
-
-static Expr::CanThrowResult CanSubExprsThrow(ASTContext &C, const Expr *CE=
) {
-  Expr *E =3D const_cast<Expr*>(CE);
-  Expr::CanThrowResult R =3D Expr::CT_Cannot;
-  for (Expr::child_range I =3D E->children(); I && R !=3D Expr::CT_Can; ++=
I) {
-    R =3D MergeCanThrow(R, cast<Expr>(*I)->CanThrow(C));
-  }
-  return R;
-}
-
-static Expr::CanThrowResult CanCalleeThrow(ASTContext &Ctx, const Expr *E,
-                                           const Decl *D,
-                                           bool NullThrows =3D true) {
-  if (!D)
-    return NullThrows ? Expr::CT_Can : Expr::CT_Cannot;
-
-  // See if we can get a function type from the decl somehow.
-  const ValueDecl *VD =3D dyn_cast<ValueDecl>(D);
-  if (!VD) // If we have no clue what we're calling, assume the worst.
-    return Expr::CT_Can;
-
-  // As an extension, we assume that __attribute__((nothrow)) functions do=
n't
-  // throw.
-  if (isa<FunctionDecl>(D) && D->hasAttr<NoThrowAttr>())
-    return Expr::CT_Cannot;
-
-  QualType T =3D VD->getType();
-  const FunctionProtoType *FT;
-  if ((FT =3D T->getAs<FunctionProtoType>())) {
-  } else if (const PointerType *PT =3D T->getAs<PointerType>())
-    FT =3D PT->getPointeeType()->getAs<FunctionProtoType>();
-  else if (const ReferenceType *RT =3D T->getAs<ReferenceType>())
-    FT =3D RT->getPointeeType()->getAs<FunctionProtoType>();
-  else if (const MemberPointerType *MT =3D T->getAs<MemberPointerType>())
-    FT =3D MT->getPointeeType()->getAs<FunctionProtoType>();
-  else if (const BlockPointerType *BT =3D T->getAs<BlockPointerType>())
-    FT =3D BT->getPointeeType()->getAs<FunctionProtoType>();
-
-  if (!FT)
-    return Expr::CT_Can;
-
-  if (FT->getExceptionSpecType() =3D=3D EST_Delayed) {
-    assert(isa<CXXConstructorDecl>(D) &&
-           "only constructor exception specs can be unknown");
-    Ctx.getDiagnostics().Report(E->getLocStart(),
-                                diag::err_exception_spec_unknown)
-      << E->getSourceRange();
-    return Expr::CT_Can;
-  }
-
-  return FT->isNothrow(Ctx) ? Expr::CT_Cannot : Expr::CT_Can;
-}
-
-static Expr::CanThrowResult CanDynamicCastThrow(const CXXDynamicCastExpr *=
DC) {
-  if (DC->isTypeDependent())
-    return Expr::CT_Dependent;
-
-  if (!DC->getTypeAsWritten()->isReferenceType())
-    return Expr::CT_Cannot;
-
-  if (DC->getSubExpr()->isTypeDependent())
-    return Expr::CT_Dependent;
-
-  return DC->getCastKind() =3D=3D clang::CK_Dynamic? Expr::CT_Can : Expr::=
CT_Cannot;
-}
-
-static Expr::CanThrowResult CanTypeidThrow(ASTContext &C,
-                                           const CXXTypeidExpr *DC) {
-  if (DC->isTypeOperand())
-    return Expr::CT_Cannot;
-
-  Expr *Op =3D DC->getExprOperand();
-  if (Op->isTypeDependent())
-    return Expr::CT_Dependent;
-
-  const RecordType *RT =3D Op->getType()->getAs<RecordType>();
-  if (!RT)
-    return Expr::CT_Cannot;
-
-  if (!cast<CXXRecordDecl>(RT->getDecl())->isPolymorphic())
-    return Expr::CT_Cannot;
-
-  if (Op->Classify(C).isPRValue())
-    return Expr::CT_Cannot;
-
-  return Expr::CT_Can;
-}
-
-Expr::CanThrowResult Expr::CanThrow(ASTContext &C) const {
-  // C++ [expr.unary.noexcept]p3:
-  //   [Can throw] if in a potentially-evaluated context the expression wo=
uld
-  //   contain:
-  switch (getStmtClass()) {
-  case CXXThrowExprClass:
-    //   - a potentially evaluated throw-expression
-    return CT_Can;
-
-  case CXXDynamicCastExprClass: {
-    //   - a potentially evaluated dynamic_cast expression dynamic_cast<T>=
(v),
-    //     where T is a reference type, that requires a run-time check
-    CanThrowResult CT =3D CanDynamicCastThrow(cast<CXXDynamicCastExpr>(thi=
s));
-    if (CT =3D=3D CT_Can)
-      return CT;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-  case CXXTypeidExprClass:
-    //   - a potentially evaluated typeid expression applied to a glvalue
-    //     expression whose type is a polymorphic class type
-    return CanTypeidThrow(C, cast<CXXTypeidExpr>(this));
-
-    //   - a potentially evaluated call to a function, member function, fu=
nction
-    //     pointer, or member function pointer that does not have a non-th=
rowing
-    //     exception-specification
-  case CallExprClass:
-  case CXXMemberCallExprClass:
-  case CXXOperatorCallExprClass:
-  case UserDefinedLiteralClass: {
-    const CallExpr *CE =3D cast<CallExpr>(this);
-    CanThrowResult CT;
-    if (isTypeDependent())
-      CT =3D CT_Dependent;
-    else if (isa<CXXPseudoDestructorExpr>(CE->getCallee()->IgnoreParens()))
-      CT =3D CT_Cannot;
-    else
-      CT =3D CanCalleeThrow(C, this, CE->getCalleeDecl());
-    if (CT =3D=3D CT_Can)
-      return CT;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-  case CXXConstructExprClass:
-  case CXXTemporaryObjectExprClass: {
-    CanThrowResult CT =3D CanCalleeThrow(C, this,
-        cast<CXXConstructExpr>(this)->getConstructor());
-    if (CT =3D=3D CT_Can)
-      return CT;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-  case LambdaExprClass: {
-    const LambdaExpr *Lambda =3D cast<LambdaExpr>(this);
-    CanThrowResult CT =3D Expr::CT_Cannot;
-    for (LambdaExpr::capture_init_iterator Cap =3D Lambda->capture_init_be=
gin(),
-                                        CapEnd =3D Lambda->capture_init_en=
d();
-         Cap !=3D CapEnd; ++Cap)
-      CT =3D MergeCanThrow(CT, (*Cap)->CanThrow(C));
-    return CT;
-  }
-
-  case CXXNewExprClass: {
-    CanThrowResult CT;
-    if (isTypeDependent())
-      CT =3D CT_Dependent;
-    else
-      CT =3D CanCalleeThrow(C, this, cast<CXXNewExpr>(this)->getOperatorNe=
w());
-    if (CT =3D=3D CT_Can)
-      return CT;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-  case CXXDeleteExprClass: {
-    CanThrowResult CT;
-    QualType DTy =3D cast<CXXDeleteExpr>(this)->getDestroyedType();
-    if (DTy.isNull() || DTy->isDependentType()) {
-      CT =3D CT_Dependent;
-    } else {
-      CT =3D CanCalleeThrow(C, this,
-                          cast<CXXDeleteExpr>(this)->getOperatorDelete());
-      if (const RecordType *RT =3D DTy->getAs<RecordType>()) {
-        const CXXRecordDecl *RD =3D cast<CXXRecordDecl>(RT->getDecl());
-        CT =3D MergeCanThrow(CT, CanCalleeThrow(C, this, RD->getDestructor=
()));
-      }
-      if (CT =3D=3D CT_Can)
-        return CT;
-    }
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-  case CXXBindTemporaryExprClass: {
-    // The bound temporary has to be destroyed again, which might throw.
-    CanThrowResult CT =3D CanCalleeThrow(C, this,
-      cast<CXXBindTemporaryExpr>(this)->getTemporary()->getDestructor());
-    if (CT =3D=3D CT_Can)
-      return CT;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-    // ObjC message sends are like function calls, but never have exception
-    // specs.
-  case ObjCMessageExprClass:
-  case ObjCPropertyRefExprClass:
-  case ObjCSubscriptRefExprClass:
-    return CT_Can;
-
-    // All the ObjC literals that are implemented as calls are
-    // potentially throwing unless we decide to close off that
-    // possibility.
-  case ObjCArrayLiteralClass:
-  case ObjCDictionaryLiteralClass:
-  case ObjCNumericLiteralClass:
-    return CT_Can;
-
-    // Many other things have subexpressions, so we have to test those.
-    // Some are simple:
-  case ConditionalOperatorClass:
-  case CompoundLiteralExprClass:
-  case CXXConstCastExprClass:
-  case CXXDefaultArgExprClass:
-  case CXXReinterpretCastExprClass:
-  case DesignatedInitExprClass:
-  case ExprWithCleanupsClass:
-  case ExtVectorElementExprClass:
-  case InitListExprClass:
-  case MemberExprClass:
-  case ObjCIsaExprClass:
-  case ObjCIvarRefExprClass:
-  case ParenExprClass:
-  case ParenListExprClass:
-  case ShuffleVectorExprClass:
-  case VAArgExprClass:
-    return CanSubExprsThrow(C, this);
-
-    // Some might be dependent for other reasons.
-  case ArraySubscriptExprClass:
-  case BinaryOperatorClass:
-  case CompoundAssignOperatorClass:
-  case CStyleCastExprClass:
-  case CXXStaticCastExprClass:
-  case CXXFunctionalCastExprClass:
-  case ImplicitCastExprClass:
-  case MaterializeTemporaryExprClass:
-  case UnaryOperatorClass: {
-    CanThrowResult CT =3D isTypeDependent() ? CT_Dependent : CT_Cannot;
-    return MergeCanThrow(CT, CanSubExprsThrow(C, this));
-  }
-
-    // FIXME: We should handle StmtExpr, but that opens a MASSIVE can of w=
orms.
-  case StmtExprClass:
-    return CT_Can;
-
-  case ChooseExprClass:
-    if (isTypeDependent() || isValueDependent())
-      return CT_Dependent;
-    return cast<ChooseExpr>(this)->getChosenSubExpr(C)->CanThrow(C);
-
-  case GenericSelectionExprClass:
-    if (cast<GenericSelectionExpr>(this)->isResultDependent())
-      return CT_Dependent;
-    return cast<GenericSelectionExpr>(this)->getResultExpr()->CanThrow(C);
-
-    // Some expressions are always dependent.
-  case CXXDependentScopeMemberExprClass:
-  case CXXUnresolvedConstructExprClass:
-  case DependentScopeDeclRefExprClass:
-    return CT_Dependent;
-
-  case AtomicExprClass:
-  case AsTypeExprClass:
-  case BinaryConditionalOperatorClass:
-  case BlockExprClass:
-  case CUDAKernelCallExprClass:
-  case DeclRefExprClass:
-  case ObjCBridgedCastExprClass:
-  case ObjCIndirectCopyRestoreExprClass:
-  case ObjCProtocolExprClass:
-  case ObjCSelectorExprClass:
-  case OffsetOfExprClass:
-  case PackExpansionExprClass:
-  case PseudoObjectExprClass:
-  case SubstNonTypeTemplateParmExprClass:
-  case SubstNonTypeTemplateParmPackExprClass:
-  case UnaryExprOrTypeTraitExprClass:
-  case UnresolvedLookupExprClass:
-  case UnresolvedMemberExprClass:
-    // FIXME: Can any of the above throw?  If so, when?
-    return CT_Cannot;
-
-  case AddrLabelExprClass:
-  case ArrayTypeTraitExprClass:
-  case BinaryTypeTraitExprClass:
-  case TypeTraitExprClass:
-  case CXXBoolLiteralExprClass:
-  case CXXNoexceptExprClass:
-  case CXXNullPtrLiteralExprClass:
-  case CXXPseudoDestructorExprClass:
-  case CXXScalarValueInitExprClass:
-  case CXXThisExprClass:
-  case CXXUuidofExprClass:
-  case CharacterLiteralClass:
-  case ExpressionTraitExprClass:
-  case FloatingLiteralClass:
-  case GNUNullExprClass:
-  case ImaginaryLiteralClass:
-  case ImplicitValueInitExprClass:
-  case IntegerLiteralClass:
-  case ObjCEncodeExprClass:
-  case ObjCStringLiteralClass:
-  case ObjCBoolLiteralExprClass:
-  case OpaqueValueExprClass:
-  case PredefinedExprClass:
-  case SizeOfPackExprClass:
-  case StringLiteralClass:
-  case UnaryTypeTraitExprClass:
-    // These expressions can never throw.
-    return CT_Cannot;
-
-#define STMT(CLASS, PARENT) case CLASS##Class:
-#define STMT_RANGE(Base, First, Last)
-#define LAST_STMT_RANGE(BASE, FIRST, LAST)
-#define EXPR(CLASS, PARENT)
-#define ABSTRACT_STMT(STMT)
-#include "clang/AST/StmtNodes.inc"
-  case NoStmtClass:
-    llvm_unreachable("Invalid class for expression");
-  }
-  llvm_unreachable("Bogus StmtClass");
-}
-
 Expr* Expr::IgnoreParens() {
   Expr* E =3D this;
   while (true) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
ExprConstant.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -934,6 +934,7 @@
   case Expr::ObjCStringLiteralClass:
   case Expr::ObjCEncodeExprClass:
   case Expr::CXXTypeidExprClass:
+  case Expr::CXXUuidofExprClass:
     return true;
   case Expr::CallExprClass:
     return IsStringLiteralCall(cast<CallExpr>(E));
@@ -1491,15 +1492,19 @@
   llvm_unreachable("base class missing from derived class's bases list");
 }
=20
-/// Extract the value of a character from a string literal.
+/// Extract the value of a character from a string literal. CharType is us=
ed to
+/// determine the expected signedness of the result -- a string literal us=
ed to
+/// initialize an array of 'signed char' or 'unsigned char' might contain =
chars
+/// of the wrong signedness.
 static APSInt ExtractStringLiteralCharacter(EvalInfo &Info, const Expr *Li=
t,
-                                            uint64_t Index) {
+                                            uint64_t Index, QualType CharT=
ype) {
   // FIXME: Support PredefinedExpr, ObjCEncodeExpr, MakeStringConstant
   const StringLiteral *S =3D dyn_cast<StringLiteral>(Lit);
   assert(S && "unexpected string literal expression kind");
+  assert(CharType->isIntegerType() && "unexpected character type");
=20
   APSInt Value(S->getCharByteWidth() * Info.Ctx.getCharWidth(),
-    Lit->getType()->getArrayElementTypeNoTypeQual()->isUnsignedIntegerType=
());
+               CharType->isUnsignedIntegerType());
   if (Index < S->getLength())
     Value =3D S->getCodeUnit(Index);
   return Value;
@@ -1546,7 +1551,7 @@
         assert(I =3D=3D N - 1 && "extracting subobject of character?");
         assert(!O->hasLValuePath() || O->getLValuePath().empty());
         Obj =3D APValue(ExtractStringLiteralCharacter(
-          Info, O->getLValueBase().get<const Expr*>(), Index));
+          Info, O->getLValueBase().get<const Expr*>(), Index, SubType));
         return true;
       } else if (O->getArrayInitializedElts() > Index)
         O =3D &O->getArrayInitializedElt(Index);
@@ -2868,6 +2873,7 @@
   bool VisitStringLiteral(const StringLiteral *E) { return Success(E); }
   bool VisitObjCEncodeExpr(const ObjCEncodeExpr *E) { return Success(E); }
   bool VisitCXXTypeidExpr(const CXXTypeidExpr *E);
+  bool VisitCXXUuidofExpr(const CXXUuidofExpr *E);
   bool VisitArraySubscriptExpr(const ArraySubscriptExpr *E);
   bool VisitUnaryDeref(const UnaryOperator *E);
   bool VisitUnaryReal(const UnaryOperator *E);
@@ -2973,6 +2979,10 @@
   return Success(E);
 }
=20
+bool LValueExprEvaluator::VisitCXXUuidofExpr(const CXXUuidofExpr *E) {
+  return Success(E);
+}=20
+
 bool LValueExprEvaluator::VisitMemberExpr(const MemberExpr *E) {
   // Handle static data members.
   if (const VarDecl *VD =3D dyn_cast<VarDecl>(E->getMemberDecl())) {
@@ -3849,8 +3859,7 @@
=20
   // C++11 [dcl.init.string]p1: A char array [...] can be initialized by [=
...]
   // an appropriately-typed string literal enclosed in braces.
-  if (E->getNumInits() =3D=3D 1 && E->getInit(0)->isGLValue() &&
-      Info.Ctx.hasSameUnqualifiedType(E->getType(), E->getInit(0)->getType=
())) {
+  if (E->isStringLiteralInit()) {
     LValue LV;
     if (!EvaluateLValue(E->getInit(0), LV, Info))
       return false;
@@ -5079,14 +5088,37 @@
         }
       }
=20
+      // The comparison here must be unsigned, and performed with the same
+      // width as the pointer.
+      unsigned PtrSize =3D Info.Ctx.getTypeSize(LHSTy);
+      uint64_t CompareLHS =3D LHSOffset.getQuantity();
+      uint64_t CompareRHS =3D RHSOffset.getQuantity();
+      assert(PtrSize <=3D 64 && "Unexpected pointer width");
+      uint64_t Mask =3D ~0ULL >> (64 - PtrSize);
+      CompareLHS &=3D Mask;
+      CompareRHS &=3D Mask;
+
+      // If there is a base and this is a relational operator, we can only
+      // compare pointers within the object in question; otherwise, the re=
sult
+      // depends on where the object is located in memory.
+      if (!LHSValue.Base.isNull() && E->isRelationalOp()) {
+        QualType BaseTy =3D getType(LHSValue.Base);
+        if (BaseTy->isIncompleteType())
+          return Error(E);
+        CharUnits Size =3D Info.Ctx.getTypeSizeInChars(BaseTy);
+        uint64_t OffsetLimit =3D Size.getQuantity();
+        if (CompareLHS > OffsetLimit || CompareRHS > OffsetLimit)
+          return Error(E);
+      }
+
       switch (E->getOpcode()) {
       default: llvm_unreachable("missing comparison operator");
-      case BO_LT: return Success(LHSOffset < RHSOffset, E);
-      case BO_GT: return Success(LHSOffset > RHSOffset, E);
-      case BO_LE: return Success(LHSOffset <=3D RHSOffset, E);
-      case BO_GE: return Success(LHSOffset >=3D RHSOffset, E);
-      case BO_EQ: return Success(LHSOffset =3D=3D RHSOffset, E);
-      case BO_NE: return Success(LHSOffset !=3D RHSOffset, E);
+      case BO_LT: return Success(CompareLHS < CompareRHS, E);
+      case BO_GT: return Success(CompareLHS > CompareRHS, E);
+      case BO_LE: return Success(CompareLHS <=3D CompareRHS, E);
+      case BO_GE: return Success(CompareLHS >=3D CompareRHS, E);
+      case BO_EQ: return Success(CompareLHS =3D=3D CompareRHS, E);
+      case BO_NE: return Success(CompareLHS !=3D CompareRHS, E);
       }
     }
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
ExternalASTSource.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -49,7 +49,10 @@
   return DeclContext::lookup_result();
 }
=20
-ExternalLoadResult=20
+void ExternalASTSource::completeVisibleDeclsMap(const DeclContext *DC) {
+}
+
+ExternalLoadResult
 ExternalASTSource::FindExternalLexicalDecls(const DeclContext *DC,
                                             bool (*isKindWeWant)(Decl::Kin=
d),
                                          SmallVectorImpl<Decl*> &Result) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
ItaniumMangle.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -2280,9 +2280,7 @@
=20
 }
=20
-/// Mangles a member expression.  Implicit accesses are not handled,
-/// but that should be okay, because you shouldn't be able to
-/// make an implicit access in a function template declaration.
+/// Mangles a member expression.
 void CXXNameMangler::mangleMemberExpr(const Expr *base,
                                       bool isArrow,
                                       NestedNameSpecifier *qualifier,
@@ -2291,8 +2289,17 @@
                                       unsigned arity) {
   // <expression> ::=3D dt <expression> <unresolved-name>
   //              ::=3D pt <expression> <unresolved-name>
-  Out << (isArrow ? "pt" : "dt");
-  mangleExpression(base);
+  if (base) {
+    if (base->isImplicitCXXThis()) {
+      // Note: GCC mangles member expressions to the implicit 'this' as
+      // *this., whereas we represent them as this->. The Itanium C++ ABI
+      // does not specify anything here, so we follow GCC.
+      Out << "dtdefpT";
+    } else {
+      Out << (isArrow ? "pt" : "dt");
+      mangleExpression(base);
+    }
+  }
   mangleUnresolvedName(qualifier, firstQualifierLookup, member, arity);
 }
=20
@@ -2346,6 +2353,7 @@
   // <expr-primary> ::=3D L <type> <value number> E    # integer literal
   //                ::=3D L <type <value float> E      # floating literal
   //                ::=3D L <mangled-name> E           # external name
+  //                ::=3D fpT                          # 'this' expression
   QualType ImplicitlyConvertedToType;
  =20
 recurse:
@@ -2361,7 +2369,6 @@
   // These all can only appear in local or variable-initialization
   // contexts and so should never appear in a mangling.
   case Expr::AddrLabelExprClass:
-  case Expr::CXXThisExprClass:
   case Expr::DesignatedInitExprClass:
   case Expr::ImplicitValueInitExprClass:
   case Expr::ParenListExprClass:
@@ -2919,6 +2926,10 @@
     mangleExpression(cast<MaterializeTemporaryExpr>(E)->GetTemporaryExpr()=
);
     break;
   }
+     =20
+  case Expr::CXXThisExprClass:
+    Out << "fpT";
+    break;
   }
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
Stmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -97,8 +97,8 @@
=20
 /// \brief Strip off all label-like statements.
 ///
-/// This will strip off label statements, case statements, and default
-/// statements recursively.
+/// This will strip off label statements, case statements, attributed
+/// statements and default statements recursively.
 const Stmt *Stmt::stripLabelLikeStatements() const {
   const Stmt *S =3D this;
   while (true) {
@@ -106,6 +106,8 @@
       S =3D LS->getSubStmt();
     else if (const SwitchCase *SC =3D dyn_cast<SwitchCase>(S))
       S =3D SC->getSubStmt();
+    else if (const AttributedStmt *AS =3D dyn_cast<AttributedStmt>(S))
+      S =3D AS->getSubStmt();
     else
       return S;
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
StmtPrinter.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -169,6 +169,23 @@
   PrintStmt(Node->getSubStmt(), 0);
 }
=20
+void StmtPrinter::VisitAttributedStmt(AttributedStmt *Node) {
+  OS << "[[";
+  bool first =3D true;
+  for (AttrVec::const_iterator it =3D Node->getAttrs().begin(),
+                               end =3D Node->getAttrs().end();
+                               it !=3D end; ++it) {
+    if (!first) {
+      OS << ", ";
+      first =3D false;
+    }
+    // TODO: check this
+    (*it)->printPretty(OS, Context);
+  }
+  OS << "]] ";
+  PrintStmt(Node->getSubStmt(), 0);
+}
+
 void StmtPrinter::PrintRawIfStmt(IfStmt *If) {
   OS << "if (";
   PrintExpr(If->getCond());
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
StmtProfile.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -109,6 +109,11 @@
   VisitDecl(S->getDecl());
 }
=20
+void StmtProfiler::VisitAttributedStmt(const AttributedStmt *S) {
+  VisitStmt(S);
+  // TODO: maybe visit attributes?
+}
+
 void StmtProfiler::VisitIfStmt(const IfStmt *S) {
   VisitStmt(S);
   VisitDecl(S->getConditionVariable());
@@ -758,6 +763,7 @@
=20
 void StmtProfiler::VisitCXXThisExpr(const CXXThisExpr *S) {
   VisitExpr(S);
+  ID.AddBoolean(S->isImplicit());
 }
=20
 void StmtProfiler::VisitCXXThrowExpr(const CXXThrowExpr *S) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
Type.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/Type.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/Type.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -1546,6 +1546,14 @@
       else if (epi.NoexceptExpr->isInstantiationDependent())
         setInstantiationDependent();
     }
+  } else if (getExceptionSpecType() =3D=3D EST_Uninstantiated) {
+    // Store the function decl from which we will resolve our
+    // exception specification.
+    FunctionDecl **slot =3D reinterpret_cast<FunctionDecl**>(argSlot + num=
Args);
+    slot[0] =3D epi.ExceptionSpecDecl;
+    slot[1] =3D epi.ExceptionSpecTemplate;
+    // This exception specification doesn't make the type dependent, becau=
se
+    // it's not instantiated as part of instantiating the type.
   }
=20
   if (epi.ConsumedArguments) {
@@ -1629,6 +1637,8 @@
       ID.AddPointer(epi.Exceptions[i].getAsOpaquePtr());
   } else if (epi.ExceptionSpecType =3D=3D EST_ComputedNoexcept && epi.Noex=
ceptExpr){
     epi.NoexceptExpr->Profile(ID, Context, false);
+  } else if (epi.ExceptionSpecType =3D=3D EST_Uninstantiated) {
+    ID.AddPointer(epi.ExceptionSpecDecl->getCanonicalDecl());
   }
   if (epi.ConsumedArguments) {
     for (unsigned i =3D 0; i !=3D NumArgs; ++i)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/AST/=
VTableBuilder.cpp
--- a/head/contrib/llvm/tools/clang/lib/AST/VTableBuilder.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/AST/VTableBuilder.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -2157,13 +2157,12 @@
     VTableThunks(new VTableThunkTy[NumVTableThunks]),
     AddressPoints(AddressPoints) {
   std::copy(VTableComponents, VTableComponents+NumVTableComponents,
-            this->VTableComponents);
-  std::copy(VTableThunks, VTableThunks+NumVTableThunks, this->VTableThunks=
);
+            this->VTableComponents.get());
+  std::copy(VTableThunks, VTableThunks+NumVTableThunks,
+            this->VTableThunks.get());
 }
=20
-VTableLayout::~VTableLayout() {
-  delete[] VTableComponents;
-}
+VTableLayout::~VTableLayout() { }
=20
 VTableContext::~VTableContext() {
   llvm::DeleteContainerSeconds(VTableLayouts);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Anal=
ysis/CFG.cpp
--- a/head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -18,6 +18,7 @@
 #include "clang/AST/StmtVisitor.h"
 #include "clang/AST/PrettyPrinter.h"
 #include "clang/AST/CharUnits.h"
+#include "clang/Basic/AttrKinds.h"
 #include "llvm/Support/GraphWriter.h"
 #include "llvm/Support/Allocator.h"
 #include "llvm/Support/Format.h"
@@ -1069,6 +1070,9 @@
     case Stmt::LambdaExprClass:
       return VisitLambdaExpr(cast<LambdaExpr>(S), asc);
=20
+    case Stmt::AttributedStmtClass:
+      return Visit(cast<AttributedStmt>(S)->getSubStmt(), asc);
+
     case Stmt::MemberExprClass:
       return VisitMemberExpr(cast<MemberExpr>(S), asc);
=20
@@ -1131,7 +1135,7 @@
=20
 /// VisitChildren - Visit the children of a Stmt.
 CFGBlock *CFGBuilder::VisitChildren(Stmt *Terminator) {
-  CFGBlock *lastBlock =3D Block; =20
+  CFGBlock *lastBlock =3D Block;
   for (Stmt::child_range I =3D Terminator->children(); I; ++I)
     if (Stmt *child =3D *I)
       if (CFGBlock *b =3D Visit(child))
@@ -1280,7 +1284,8 @@
   const FunctionType *FT =3D Ty->getAs<FunctionType>();
   if (FT) {
     if (const FunctionProtoType *Proto =3D dyn_cast<FunctionProtoType>(FT))
-      if (Proto->isNothrow(Ctx))
+      if (Proto->getExceptionSpecType() !=3D EST_Uninstantiated &&
+          Proto->isNothrow(Ctx))
         return false;
   }
   return true;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Anal=
ysis/UninitializedValues.cpp
--- a/head/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp	We=
d Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp	We=
d Jul 25 16:21:35 2012 +0300
@@ -168,7 +168,8 @@
   if (block->empty())
     return 0;
=20
-  const CFGStmt *cstmt =3D block->front().getAs<CFGStmt>();
+  CFGElement front =3D block->front();
+  const CFGStmt *cstmt =3D front.getAs<CFGStmt>();
   if (!cstmt)
     return 0;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Basi=
c/TargetInfo.cpp
--- a/head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -58,6 +58,7 @@
   Char32Type =3D UnsignedInt;
   Int64Type =3D SignedLongLong;
   SigAtomicType =3D SignedInt;
+  UseSignedCharForObjCBool =3D true;
   UseBitFieldTypeAlignment =3D true;
   UseZeroLengthBitfieldAlignment =3D false;
   ZeroLengthBitfieldBoundary =3D 0;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Basi=
c/Targets.cpp
--- a/head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -365,7 +365,7 @@
     DefineStd(Builder, "unix", Opts);
     Builder.defineMacro("__ELF__");
     if (Opts.POSIXThreads)
-      Builder.defineMacro("_POSIX_THREADS");
+      Builder.defineMacro("_REENTRANT");
   }
 public:
   OpenBSDTargetInfo(const std::string &triple)
@@ -3546,7 +3546,10 @@
   virtual bool setFeatureEnabled(llvm::StringMap<bool> &Features,
                                  StringRef Name,
                                  bool Enabled) const {
-    if (Name =3D=3D "soft-float" || Name =3D=3D "single-float") {
+    if (Name =3D=3D "soft-float" || Name =3D=3D "single-float" ||
+        Name =3D=3D "o32" || Name =3D=3D "n32" || Name =3D=3D "n64" || Nam=
e =3D=3D "eabi" ||
+        Name =3D=3D "mips32" || Name =3D=3D "mips32r2" ||
+        Name =3D=3D "mips64" || Name =3D=3D "mips64r2") {
       Features[Name] =3D Enabled;
       return true;
     }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Basi=
c/Version.cpp
--- a/head/contrib/llvm/tools/clang/lib/Basic/Version.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Basic/Version.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -32,7 +32,7 @@
=20
   // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This help=
s us
   // pick up a tag in an SVN export, for example.
-  static StringRef SVNRepository("$URL: http://llvm.org/svn/llvm-project/c=
fe/trunk/lib/Basic/Version.cpp $");
+  static StringRef SVNRepository("$URL: http://llvm.org/svn/llvm-project/c=
fe/branches/release_31/lib/Basic/Version.cpp $");
   if (URL.empty()) {
     URL =3D SVNRepository.slice(SVNRepository.find(':'),
                               SVNRepository.find("/lib/Basic"));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGBlocks.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -491,6 +491,8 @@
 /// a full-expression so that the block's cleanups are pushed at the
 /// right place in the stack.
 static void enterBlockScope(CodeGenFunction &CGF, BlockDecl *block) {
+  assert(CGF.HaveInsertPoint());
+
   // Allocate the block info and place it at the head of the list.
   CGBlockInfo &blockInfo =3D
     *new CGBlockInfo(block, CGF.CurFn->getName());
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGCall.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -419,16 +419,37 @@
     uint64_t NumElts =3D AT->getSize().getZExtValue();
     for (uint64_t Elt =3D 0; Elt < NumElts; ++Elt)
       GetExpandedTypes(AT->getElementType(), expandedTypes);
-  } else if (const RecordType *RT =3D type->getAsStructureType()) {
+  } else if (const RecordType *RT =3D type->getAs<RecordType>()) {
     const RecordDecl *RD =3D RT->getDecl();
     assert(!RD->hasFlexibleArrayMember() &&
            "Cannot expand structure with flexible array.");
-    for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->fie=
ld_end();
-         i !=3D e; ++i) {
-      const FieldDecl *FD =3D *i;
-      assert(!FD->isBitField() &&
-             "Cannot expand structure with bit-field members.");
-      GetExpandedTypes(FD->getType(), expandedTypes);
+    if (RD->isUnion()) {
+      // Unions can be here only in degenerative cases - all the fields ar=
e same
+      // after flattening. Thus we have to use the "largest" field.
+      const FieldDecl *LargestFD =3D 0;
+      CharUnits UnionSize =3D CharUnits::Zero();
+
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        const FieldDecl *FD =3D *i;
+        assert(!FD->isBitField() &&
+               "Cannot expand structure with bit-field members.");
+        CharUnits FieldSize =3D getContext().getTypeSizeInChars(FD->getTyp=
e());
+        if (UnionSize < FieldSize) {
+          UnionSize =3D FieldSize;
+          LargestFD =3D FD;
+        }
+      }
+      if (LargestFD)
+        GetExpandedTypes(LargestFD->getType(), expandedTypes);
+    } else {
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        const FieldDecl *FD =3D *i;
+        assert(!FD->isBitField() &&
+               "Cannot expand structure with bit-field members.");
+        GetExpandedTypes(FD->getType(), expandedTypes);
+      }
     }
   } else if (const ComplexType *CT =3D type->getAs<ComplexType>()) {
     llvm::Type *EltTy =3D ConvertType(CT->getElementType());
@@ -443,32 +464,55 @@
                                     llvm::Function::arg_iterator AI) {
   assert(LV.isSimple() &&
          "Unexpected non-simple lvalue during struct expansion.");
-  llvm::Value *Addr =3D LV.getAddress();
=20
   if (const ConstantArrayType *AT =3D getContext().getAsConstantArrayType(=
Ty)) {
     unsigned NumElts =3D AT->getSize().getZExtValue();
     QualType EltTy =3D AT->getElementType();
     for (unsigned Elt =3D 0; Elt < NumElts; ++Elt) {
-      llvm::Value *EltAddr =3D Builder.CreateConstGEP2_32(Addr, 0, Elt);
+      llvm::Value *EltAddr =3D Builder.CreateConstGEP2_32(LV.getAddress(),=
 0, Elt);
       LValue LV =3D MakeAddrLValue(EltAddr, EltTy);
       AI =3D ExpandTypeFromArgs(EltTy, LV, AI);
     }
-  } else if (const RecordType *RT =3D Ty->getAsStructureType()) {
+  } else if (const RecordType *RT =3D Ty->getAs<RecordType>()) {
     RecordDecl *RD =3D RT->getDecl();
-    for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->fie=
ld_end();
-         i !=3D e; ++i) {
-      FieldDecl *FD =3D *i;
-      QualType FT =3D FD->getType();
+    if (RD->isUnion()) {
+      // Unions can be here only in degenerative cases - all the fields ar=
e same
+      // after flattening. Thus we have to use the "largest" field.
+      const FieldDecl *LargestFD =3D 0;
+      CharUnits UnionSize =3D CharUnits::Zero();
=20
-      // FIXME: What are the right qualifiers here?
-      LValue LV =3D EmitLValueForField(Addr, FD, 0);
-      AI =3D ExpandTypeFromArgs(FT, LV, AI);
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        const FieldDecl *FD =3D *i;
+        assert(!FD->isBitField() &&
+               "Cannot expand structure with bit-field members.");
+        CharUnits FieldSize =3D getContext().getTypeSizeInChars(FD->getTyp=
e());
+        if (UnionSize < FieldSize) {
+          UnionSize =3D FieldSize;
+          LargestFD =3D FD;
+        }
+      }
+      if (LargestFD) {
+        // FIXME: What are the right qualifiers here?
+        LValue SubLV =3D EmitLValueForField(LV, LargestFD);
+        AI =3D ExpandTypeFromArgs(LargestFD->getType(), SubLV, AI);
+      }
+    } else {
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        FieldDecl *FD =3D *i;
+        QualType FT =3D FD->getType();
+
+        // FIXME: What are the right qualifiers here?
+        LValue SubLV =3D EmitLValueForField(LV, FD);
+        AI =3D ExpandTypeFromArgs(FT, SubLV, AI);
+      }
     }
   } else if (const ComplexType *CT =3D Ty->getAs<ComplexType>()) {
     QualType EltTy =3D CT->getElementType();
-    llvm::Value *RealAddr =3D Builder.CreateStructGEP(Addr, 0, "real");
+    llvm::Value *RealAddr =3D Builder.CreateStructGEP(LV.getAddress(), 0, =
"real");
     EmitStoreThroughLValue(RValue::get(AI++), MakeAddrLValue(RealAddr, Elt=
Ty));
-    llvm::Value *ImagAddr =3D Builder.CreateStructGEP(Addr, 1, "imag");
+    llvm::Value *ImagAddr =3D Builder.CreateStructGEP(LV.getAddress(), 1, =
"imag");
     EmitStoreThroughLValue(RValue::get(AI++), MakeAddrLValue(ImagAddr, Elt=
Ty));
   } else {
     EmitStoreThroughLValue(RValue::get(AI), LV);
@@ -1760,26 +1804,38 @@
         EltRV =3D EmitLoadOfLValue(LV);
       ExpandTypeToArgs(EltTy, EltRV, Args, IRFuncTy);
     }
-  } else if (const RecordType *RT =3D Ty->getAsStructureType()) {
+  } else if (const RecordType *RT =3D Ty->getAs<RecordType>()) {
     RecordDecl *RD =3D RT->getDecl();
     assert(RV.isAggregate() && "Unexpected rvalue during struct expansion"=
);
-    llvm::Value *Addr =3D RV.getAggregateAddr();
-    for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->fie=
ld_end();
-         i !=3D e; ++i) {
-      FieldDecl *FD =3D *i;
-      QualType FT =3D FD->getType();
-   =20
-      // FIXME: What are the right qualifiers here?
-      LValue LV =3D EmitLValueForField(Addr, FD, 0);
-      RValue FldRV;
-      if (FT->isAnyComplexType())
-        // FIXME: Volatile?
-        FldRV =3D RValue::getComplex(LoadComplexFromAddr(LV.getAddress(), =
false));
-      else if (CodeGenFunction::hasAggregateLLVMType(FT))
-        FldRV =3D LV.asAggregateRValue();
-      else
-        FldRV =3D EmitLoadOfLValue(LV);
-      ExpandTypeToArgs(FT, FldRV, Args, IRFuncTy);
+    LValue LV =3D MakeAddrLValue(RV.getAggregateAddr(), Ty);
+
+    if (RD->isUnion()) {
+      const FieldDecl *LargestFD =3D 0;
+      CharUnits UnionSize =3D CharUnits::Zero();
+
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        const FieldDecl *FD =3D *i;
+        assert(!FD->isBitField() &&
+               "Cannot expand structure with bit-field members.");
+        CharUnits FieldSize =3D getContext().getTypeSizeInChars(FD->getTyp=
e());
+        if (UnionSize < FieldSize) {
+          UnionSize =3D FieldSize;
+          LargestFD =3D FD;
+        }
+      }
+      if (LargestFD) {
+        RValue FldRV =3D EmitRValueForField(LV, LargestFD);
+        ExpandTypeToArgs(LargestFD->getType(), FldRV, Args, IRFuncTy);
+      }
+    } else {
+      for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->f=
ield_end();
+           i !=3D e; ++i) {
+        FieldDecl *FD =3D *i;
+
+        RValue FldRV =3D EmitRValueForField(LV, FD);
+        ExpandTypeToArgs(FD->getType(), FldRV, Args, IRFuncTy);
+      }
     }
   } else if (Ty->isAnyComplexType()) {
     ComplexPairTy CV =3D RV.getComplexVal();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGClass.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -555,15 +555,17 @@
   QualType FieldType =3D Field->getType();
=20
   llvm::Value *ThisPtr =3D CGF.LoadCXXThis();
+  QualType RecordTy =3D CGF.getContext().getTypeDeclType(ClassDecl);
   LValue LHS;
- =20
+
   // If we are initializing an anonymous union field, drill down to the fi=
eld.
   if (MemberInit->isIndirectMemberInitializer()) {
     LHS =3D CGF.EmitLValueForAnonRecordField(ThisPtr,
                                            MemberInit->getIndirectMember()=
, 0);
     FieldType =3D MemberInit->getIndirectMember()->getAnonField()->getType=
();
   } else {
-    LHS =3D CGF.EmitLValueForFieldInitialization(ThisPtr, Field, 0);
+    LValue ThisLHSLV =3D CGF.MakeNaturalAlignAddrLValue(ThisPtr, RecordTy);
+    LHS =3D CGF.EmitLValueForFieldInitialization(ThisLHSLV, Field);
   }
=20
   // Special case: if we are in a copy or move constructor, and we are cop=
ying
@@ -585,7 +587,8 @@
       unsigned SrcArgIndex =3D Args.size() - 1;
       llvm::Value *SrcPtr
         =3D CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(Args[SrcArgIndex]=
));
-      LValue Src =3D CGF.EmitLValueForFieldInitialization(SrcPtr, Field, 0=
);
+      LValue ThisRHSLV =3D CGF.MakeNaturalAlignAddrLValue(SrcPtr, RecordTy=
);
+      LValue Src =3D CGF.EmitLValueForFieldInitialization(ThisRHSLV, Field=
);
      =20
       // Copy the aggregate.
       CGF.EmitAggregateCopy(LHS.getAddress(), Src.getAddress(), FieldType,
@@ -978,7 +981,9 @@
     void Emit(CodeGenFunction &CGF, Flags flags) {
       // Find the address of the field.
       llvm::Value *thisValue =3D CGF.LoadCXXThis();
-      LValue LV =3D CGF.EmitLValueForField(thisValue, field, /*CVRQualifie=
rs=3D*/0);
+      QualType RecordTy =3D CGF.getContext().getTagDeclType(field->getPare=
nt());
+      LValue ThisLV =3D CGF.MakeAddrLValue(thisValue, RecordTy);
+      LValue LV =3D CGF.EmitLValueForField(ThisLV, field);
       assert(LV.isSimple());
      =20
       CGF.emitDestroy(LV.getAddress(), field->getType(), destroyer,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGDebugInfo.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -184,7 +184,6 @@
=20
   const TemplateArgument *Args;
   unsigned NumArgs;
-  std::string Buffer;
   if (TypeSourceInfo *TAW =3D Spec->getTypeAsWritten()) {
     const TemplateSpecializationType *TST =3D
       cast<TemplateSpecializationType>(TAW->getType());
@@ -195,16 +194,17 @@
     Args =3D TemplateArgs.data();
     NumArgs =3D TemplateArgs.size();
   }
-  Buffer =3D RD->getIdentifier()->getNameStart();
+  StringRef Name =3D RD->getIdentifier()->getName();
   PrintingPolicy Policy(CGM.getLangOpts());
-  Buffer +=3D TemplateSpecializationType::PrintTemplateArgumentList(Args,
-                                                                  NumArgs,
-                                                                  Policy);
+  std::string TemplateArgList =3D
+    TemplateSpecializationType::PrintTemplateArgumentList(Args, NumArgs, P=
olicy);
=20
   // Copy this name on the side and use its reference.
-  char *StrPtr =3D DebugInfoNames.Allocate<char>(Buffer.length());
-  memcpy(StrPtr, Buffer.data(), Buffer.length());
-  return StringRef(StrPtr, Buffer.length());
+  size_t Length =3D Name.size() + TemplateArgList.size();
+  char *StrPtr =3D DebugInfoNames.Allocate<char>(Length);
+  memcpy(StrPtr, Name.data(), Name.size());
+  memcpy(StrPtr + Name.size(), TemplateArgList.data(), TemplateArgList.siz=
e());
+  return StringRef(StrPtr, Length);
 }
=20
 /// getOrCreateFile - Get the file debug info descriptor for the input loc=
ation.
@@ -1479,25 +1479,21 @@
   // obvious/recursive way?
   SmallVector<llvm::Value *, 8> Subscripts;
   QualType EltTy(Ty, 0);
-  if (Ty->isIncompleteArrayType())
+  while ((Ty =3D dyn_cast<ArrayType>(EltTy))) {
+    int64_t UpperBound =3D 0;
+    int64_t LowerBound =3D 0;
+    if (const ConstantArrayType *CAT =3D dyn_cast<ConstantArrayType>(Ty)) {
+      if (CAT->getSize().getZExtValue())
+        UpperBound =3D CAT->getSize().getZExtValue() - 1;
+    } else
+      // This is an unbounded array. Use Low =3D 1, Hi =3D 0 to express su=
ch=20
+      // arrays.
+      LowerBound =3D 1;
+   =20
+    // FIXME: Verify this is right for VLAs.
+    Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound,
+                                                      UpperBound));
     EltTy =3D Ty->getElementType();
-  else {
-    while ((Ty =3D dyn_cast<ArrayType>(EltTy))) {
-      int64_t UpperBound =3D 0;
-      int64_t LowerBound =3D 0;
-      if (const ConstantArrayType *CAT =3D dyn_cast<ConstantArrayType>(Ty)=
) {
-        if (CAT->getSize().getZExtValue())
-          UpperBound =3D CAT->getSize().getZExtValue() - 1;
-      } else
-        // This is an unbounded array. Use Low =3D 1, Hi =3D 0 to express =
such=20
-        // arrays.
-        LowerBound =3D 1;
-
-      // FIXME: Verify this is right for VLAs.
-      Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound,
-                                                        UpperBound));
-      EltTy =3D Ty->getElementType();
-    }
   }
=20
   llvm::DIArray SubscriptArray =3D DBuilder.getOrCreateArray(Subscripts);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -1171,6 +1171,10 @@
   // If this was emitted as a global constant, we're done.
   if (emission.wasEmittedAsGlobal()) return;
=20
+  // If we don't have an insertion point, we're done.  Sema prevents
+  // us from jumping into any of these scopes anyway.
+  if (!HaveInsertPoint()) return;
+
   const VarDecl &D =3D *emission.Variable;
=20
   // Check the type for a cleanup.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGExpr.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -24,6 +24,7 @@
 #include "clang/Frontend/CodeGenOptions.h"
 #include "llvm/Intrinsics.h"
 #include "llvm/LLVMContext.h"
+#include "llvm/Support/MDBuilder.h"
 #include "llvm/Target/TargetData.h"
 using namespace clang;
 using namespace CodeGen;
@@ -398,8 +399,8 @@
           break;
            =20
         case SubobjectAdjustment::FieldAdjustment: {
-          LValue LV =3D=20
-            CGF.EmitLValueForField(Object, Adjustment.Field, 0);
+          LValue LV =3D CGF.MakeAddrLValue(Object, E->getType());
+          LV =3D CGF.EmitLValueForField(LV, Adjustment.Field);
           if (LV.isSimple()) {
             Object =3D LV.getAddress();
             break;
@@ -908,16 +909,8 @@
     }
   }
=20
-  if (End =3D=3D Min)
-    return NULL;
-
-  llvm::Value *LowAndHigh[2];
-  LowAndHigh[0] =3D llvm::ConstantInt::get(LTy, Min);
-  LowAndHigh[1] =3D llvm::ConstantInt::get(LTy, End);
-
-  llvm::LLVMContext &C =3D getLLVMContext();
-  llvm::MDNode *Range =3D llvm::MDNode::get(C, LowAndHigh);
-  return Range;
+  llvm::MDBuilder MDHelper(getLLVMContext());
+  return MDHelper.createRange(Min, End);
 }
=20
 llvm::Value *CodeGenFunction::EmitLoadOfScalar(llvm::Value *Addr, bool Vol=
atile,
@@ -1577,8 +1570,12 @@
=20
     // Use special handling for lambdas.
     if (!V) {
-      if (FieldDecl *FD =3D LambdaCaptureFields.lookup(VD))
-        return EmitLValueForField(CXXABIThisValue, FD, 0);
+      if (FieldDecl *FD =3D LambdaCaptureFields.lookup(VD)) {
+        QualType LambdaTagType =3D getContext().getTagDeclType(FD->getPare=
nt());
+        LValue LambdaLV =3D MakeNaturalAlignAddrLValue(CXXABIThisValue,
+                                                     LambdaTagType);
+        return EmitLValueForField(LambdaLV, FD);
+      }
=20
       assert(isa<BlockDecl>(CurCodeDecl) && E->refersToEnclosingLocal());
       CharUnits alignment =3D getContext().getDeclAlign(VD);
@@ -1973,32 +1970,19 @@
 }
=20
 LValue CodeGenFunction::EmitMemberExpr(const MemberExpr *E) {
-  bool isNonGC =3D false;
   Expr *BaseExpr =3D E->getBase();
-  llvm::Value *BaseValue =3D NULL;
-  Qualifiers BaseQuals;
=20
   // If this is s.x, emit s as an lvalue.  If it is s->x, emit s as a scal=
ar.
-  if (E->isArrow()) {
-    BaseValue =3D EmitScalarExpr(BaseExpr);
-    const PointerType *PTy =3D
-      BaseExpr->getType()->getAs<PointerType>();
-    BaseQuals =3D PTy->getPointeeType().getQualifiers();
-  } else {
-    LValue BaseLV =3D EmitLValue(BaseExpr);
-    if (BaseLV.isNonGC())
-      isNonGC =3D true;
-    // FIXME: this isn't right for bitfields.
-    BaseValue =3D BaseLV.getAddress();
-    QualType BaseTy =3D BaseExpr->getType();
-    BaseQuals =3D BaseTy.getQualifiers();
-  }
+  LValue BaseLV;
+  if (E->isArrow())
+    BaseLV =3D MakeNaturalAlignAddrLValue(EmitScalarExpr(BaseExpr),
+                                        BaseExpr->getType()->getPointeeTyp=
e());
+  else
+    BaseLV =3D EmitLValue(BaseExpr);
=20
   NamedDecl *ND =3D E->getMemberDecl();
   if (FieldDecl *Field =3D dyn_cast<FieldDecl>(ND)) {
-    LValue LV =3D EmitLValueForField(BaseValue, Field,=20
-                                   BaseQuals.getCVRQualifiers());
-    LV.setNonGC(isNonGC);
+    LValue LV =3D EmitLValueForField(BaseLV, Field);
     setObjCGCLValueClass(getContext(), E, LV);
     return LV;
   }
@@ -2032,8 +2016,10 @@
   IndirectFieldDecl::chain_iterator I =3D Field->chain_begin(),
     IEnd =3D Field->chain_end();
   while (true) {
-    LValue LV =3D EmitLValueForField(BaseValue, cast<FieldDecl>(*I),
-                                   CVRQualifiers);
+    QualType RecordTy =3D
+        getContext().getTypeDeclType(cast<FieldDecl>(*I)->getParent());
+    LValue LV =3D EmitLValueForField(MakeAddrLValue(BaseValue, RecordTy),
+                                   cast<FieldDecl>(*I));
     if (++I =3D=3D IEnd) return LV;
=20
     assert(LV.isSimple());
@@ -2042,19 +2028,25 @@
   }
 }
=20
-LValue CodeGenFunction::EmitLValueForField(llvm::Value *baseAddr,
-                                           const FieldDecl *field,
-                                           unsigned cvr) {
+LValue CodeGenFunction::EmitLValueForField(LValue base,
+                                           const FieldDecl *field) {
   if (field->isBitField())
-    return EmitLValueForBitfield(baseAddr, field, cvr);
+    return EmitLValueForBitfield(base.getAddress(), field,
+                                 base.getVRQualifiers());
=20
   const RecordDecl *rec =3D field->getParent();
   QualType type =3D field->getType();
   CharUnits alignment =3D getContext().getDeclAlign(field);
=20
+  // FIXME: It should be impossible to have an LValue without alignment fo=
r a
+  // complete type.
+  if (!base.getAlignment().isZero())
+    alignment =3D std::min(alignment, base.getAlignment());
+
   bool mayAlias =3D rec->hasAttr<MayAliasAttr>();
=20
-  llvm::Value *addr =3D baseAddr;
+  llvm::Value *addr =3D base.getAddress();
+  unsigned cvr =3D base.getVRQualifiers();
   if (rec->isUnion()) {
     // For unions, there is no pointer adjustment.
     assert(!type->isReferenceType() && "union has reference member");
@@ -2117,30 +2109,33 @@
 }
=20
 LValue=20
-CodeGenFunction::EmitLValueForFieldInitialization(llvm::Value *BaseValue,=20
-                                                  const FieldDecl *Field,
-                                                  unsigned CVRQualifiers) {
+CodeGenFunction::EmitLValueForFieldInitialization(LValue Base,=20
+                                                  const FieldDecl *Field) {
   QualType FieldType =3D Field->getType();
  =20
   if (!FieldType->isReferenceType())
-    return EmitLValueForField(BaseValue, Field, CVRQualifiers);
+    return EmitLValueForField(Base, Field);
=20
   const CGRecordLayout &RL =3D
     CGM.getTypes().getCGRecordLayout(Field->getParent());
   unsigned idx =3D RL.getLLVMFieldNo(Field);
-  llvm::Value *V =3D Builder.CreateStructGEP(BaseValue, idx);
+  llvm::Value *V =3D Builder.CreateStructGEP(Base.getAddress(), idx);
   assert(!FieldType.getObjCGCAttr() && "fields cannot have GC attrs");
=20
- =20
   // Make sure that the address is pointing to the right type.  This is cr=
itical
   // for both unions and structs.  A union needs a bitcast, a struct eleme=
nt
   // will need a bitcast if the LLVM type laid out doesn't match the desir=
ed
   // type.
   llvm::Type *llvmType =3D ConvertTypeForMem(FieldType);
-  unsigned AS =3D cast<llvm::PointerType>(V->getType())->getAddressSpace();
-  V =3D Builder.CreateBitCast(V, llvmType->getPointerTo(AS));
- =20
+  V =3D EmitBitCastOfLValueToProperType(*this, V, llvmType, Field->getName=
());
+
   CharUnits Alignment =3D getContext().getDeclAlign(Field);
+
+  // FIXME: It should be impossible to have an LValue without alignment fo=
r a
+  // complete type.
+  if (!Base.getAlignment().isZero())
+    Alignment =3D std::min(Alignment, Base.getAlignment());
+
   return MakeAddrLValue(V, FieldType, Alignment);
 }
=20
@@ -2378,6 +2373,19 @@
   return MakeAddrLValue(RV.getScalarVal(), E->getType());
 }
=20
+RValue CodeGenFunction::EmitRValueForField(LValue LV,
+                                           const FieldDecl *FD) {
+  QualType FT =3D FD->getType();
+  LValue FieldLV =3D EmitLValueForField(LV, FD);
+  if (FT->isAnyComplexType())
+    return RValue::getComplex(
+        LoadComplexFromAddr(FieldLV.getAddress(),
+                            FieldLV.isVolatileQualified()));
+  else if (CodeGenFunction::hasAggregateLLVMType(FT))
+    return FieldLV.asAggregateRValue();
+
+  return EmitLoadOfLValue(FieldLV);
+}
=20
 //=3D=3D=3D---------------------------------------------------------------=
-----=3D=3D=3D//
 //                             Expression Emission
@@ -3158,11 +3166,10 @@
   if (Accuracy =3D=3D 0.0 || !isa<llvm::Instruction>(Val))
     return;
=20
-  llvm::Value *ULPs =3D llvm::ConstantFP::get(Builder.getFloatTy(), Accura=
cy);
-  llvm::MDNode *Node =3D llvm::MDNode::get(getLLVMContext(), ULPs);
-
-  cast<llvm::Instruction>(Val)->setMetadata(llvm::LLVMContext::MD_fpaccura=
cy,
-                                            Node);
+  llvm::MDBuilder MDHelper(getLLVMContext());
+  llvm::MDNode *Node =3D MDHelper.createFPMath(Accuracy);
+
+  cast<llvm::Instruction>(Val)->setMetadata(llvm::LLVMContext::MD_fpmath, =
Node);
 }
=20
 namespace {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGExprAgg.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -238,7 +238,10 @@
=20
   // Otherwise, do a final copy,=20
   assert(Dest.getAddr() !=3D Src.getAggregateAddr());
-  EmitFinalDestCopy(E, Src, /*Ignore*/ true);
+  std::pair<CharUnits, CharUnits> TypeInfo =3D=20
+    CGF.getContext().getTypeInfoInChars(E->getType());
+  CharUnits Alignment =3D std::min(TypeInfo.second, Dest.getAlignment());
+  EmitFinalDestCopy(E, Src, /*Ignore*/ true, Alignment.getQuantity());
 }
=20
 /// EmitFinalDestCopy - Perform the final copy to DestPtr, if desired.
@@ -348,7 +351,8 @@
     CGF.ErrorUnsupported(initList, "weird std::initializer_list");
     return;
   }
-  LValue start =3D CGF.EmitLValueForFieldInitialization(destPtr, *field, 0=
);
+  LValue DestLV =3D CGF.MakeNaturalAlignAddrLValue(destPtr, initList->getT=
ype());
+  LValue start =3D CGF.EmitLValueForFieldInitialization(DestLV, *field);
   llvm::Value *arrayStart =3D Builder.CreateStructGEP(alloc, 0, "arraystar=
t");
   CGF.EmitStoreThroughLValue(RValue::get(arrayStart), start);
   ++field;
@@ -357,7 +361,7 @@
     CGF.ErrorUnsupported(initList, "weird std::initializer_list");
     return;
   }
-  LValue endOrLength =3D CGF.EmitLValueForFieldInitialization(destPtr, *fi=
eld, 0);
+  LValue endOrLength =3D CGF.EmitLValueForFieldInitialization(DestLV, *fie=
ld);
   if (ctx.hasSameType(field->getType(), elementPtr)) {
     // End pointer.
     llvm::Value *arrayEnd =3D Builder.CreateStructGEP(alloc,numInits, "arr=
ayend");
@@ -912,28 +916,24 @@
     return;
   }
=20
-  llvm::Value *DestPtr =3D EnsureSlot(E->getType()).getAddr();
+  AggValueSlot Dest =3D EnsureSlot(E->getType());
+  LValue DestLV =3D CGF.MakeAddrLValue(Dest.getAddr(), E->getType(),
+                                     Dest.getAlignment());
=20
   // Handle initialization of an array.
   if (E->getType()->isArrayType()) {
-    if (E->getNumInits() > 0) {
-      QualType T1 =3D E->getType();
-      QualType T2 =3D E->getInit(0)->getType();
-      if (CGF.getContext().hasSameUnqualifiedType(T1, T2)) {
-        EmitAggLoadOfLValue(E->getInit(0));
-        return;
-      }
-    }
+    if (E->isStringLiteralInit())
+      return Visit(E->getInit(0));
=20
     QualType elementType =3D
         CGF.getContext().getAsArrayType(E->getType())->getElementType();
=20
     llvm::PointerType *APType =3D
-      cast<llvm::PointerType>(DestPtr->getType());
+      cast<llvm::PointerType>(Dest.getAddr()->getType());
     llvm::ArrayType *AType =3D
       cast<llvm::ArrayType>(APType->getElementType());
=20
-    EmitArrayInit(DestPtr, AType, elementType, E);
+    EmitArrayInit(Dest.getAddr(), AType, elementType, E);
     return;
   }
=20
@@ -966,7 +966,7 @@
     // FIXME: volatility
     FieldDecl *Field =3D E->getInitializedFieldInUnion();
=20
-    LValue FieldLoc =3D CGF.EmitLValueForFieldInitialization(DestPtr, Fiel=
d, 0);
+    LValue FieldLoc =3D CGF.EmitLValueForFieldInitialization(DestLV, Field=
);
     if (NumInitElements) {
       // Store the initializer into the field
       EmitInitializationToLValue(E->getInit(0), FieldLoc);
@@ -1004,8 +1004,8 @@
         CGF.getTypes().isZeroInitializable(E->getType()))
       break;
    =20
-    // FIXME: volatility
-    LValue LV =3D CGF.EmitLValueForFieldInitialization(DestPtr, *field, 0);
+
+    LValue LV =3D CGF.EmitLValueForFieldInitialization(DestLV, *field);
     // We never generate write-barries for initialized fields.
     LV.setNonGC(true);
    =20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGExprCXX.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -1815,13 +1815,16 @@
=20
 void CodeGenFunction::EmitLambdaExpr(const LambdaExpr *E, AggValueSlot Slo=
t) {
   RunCleanupsScope Scope(*this);
+  LValue SlotLV =3D MakeAddrLValue(Slot.getAddr(), E->getType(),
+                                 Slot.getAlignment());
=20
   CXXRecordDecl::field_iterator CurField =3D E->getLambdaClass()->field_be=
gin();
   for (LambdaExpr::capture_init_iterator i =3D E->capture_init_begin(),
                                          e =3D E->capture_init_end();
        i !=3D e; ++i, ++CurField) {
     // Emit initialization
-    LValue LV =3D EmitLValueForFieldInitialization(Slot.getAddr(), *CurFie=
ld, 0);
+   =20
+    LValue LV =3D EmitLValueForFieldInitialization(SlotLV, *CurField);
     ArrayRef<VarDecl *> ArrayIndexes;
     if (CurField->getType()->isArrayType())
       ArrayIndexes =3D E->getCaptureInitIndexVars(i);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGExprConstant.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp	Wed Jul =
25 16:21:35 2012 +0300
@@ -758,17 +758,13 @@
   }
=20
   llvm::Constant *EmitArrayInitialization(InitListExpr *ILE) {
-    unsigned NumInitElements =3D ILE->getNumInits();
-    if (NumInitElements =3D=3D 1 &&
-        CGM.getContext().hasSameUnqualifiedType(ILE->getType(),
-                                                ILE->getInit(0)->getType()=
) &&
-        (isa<StringLiteral>(ILE->getInit(0)) ||
-         isa<ObjCEncodeExpr>(ILE->getInit(0))))
+    if (ILE->isStringLiteralInit())
       return Visit(ILE->getInit(0));
=20
     llvm::ArrayType *AType =3D
         cast<llvm::ArrayType>(ConvertType(ILE->getType()));
     llvm::Type *ElemTy =3D AType->getElementType();
+    unsigned NumInitElements =3D ILE->getNumInits();
     unsigned NumElements =3D AType->getNumElements();
=20
     // Initialising an array requires us to automatically
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CGStmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp	Wed Jul 25 16:21=
:35 2012 +0300
@@ -79,6 +79,7 @@
   case Stmt::CompoundStmtClass:
   case Stmt::DeclStmtClass:
   case Stmt::LabelStmtClass:
+  case Stmt::AttributedStmtClass:
   case Stmt::GotoStmtClass:
   case Stmt::BreakStmtClass:
   case Stmt::ContinueStmtClass:
@@ -173,6 +174,8 @@
   case Stmt::CompoundStmtClass: EmitCompoundStmt(cast<CompoundStmt>(*S)); =
break;
   case Stmt::DeclStmtClass:     EmitDeclStmt(cast<DeclStmt>(*S));         =
break;
   case Stmt::LabelStmtClass:    EmitLabelStmt(cast<LabelStmt>(*S));       =
break;
+  case Stmt::AttributedStmtClass:
+                            EmitAttributedStmt(cast<AttributedStmt>(*S)); =
break;
   case Stmt::GotoStmtClass:     EmitGotoStmt(cast<GotoStmt>(*S));         =
break;
   case Stmt::BreakStmtClass:    EmitBreakStmt(cast<BreakStmt>(*S));       =
break;
   case Stmt::ContinueStmtClass: EmitContinueStmt(cast<ContinueStmt>(*S)); =
break;
@@ -332,6 +335,10 @@
   EmitStmt(S.getSubStmt());
 }
=20
+void CodeGenFunction::EmitAttributedStmt(const AttributedStmt &S) {
+  EmitStmt(S.getSubStmt());
+}
+
 void CodeGenFunction::EmitGotoStmt(const GotoStmt &S) {
   // If this code is reachable then emit a stop point (if generating
   // debug info). We have to do this ourselves because we are on the
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CodeGenFunction.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -22,8 +22,9 @@
 #include "clang/AST/DeclCXX.h"
 #include "clang/AST/StmtCXX.h"
 #include "clang/Frontend/CodeGenOptions.h"
+#include "llvm/Intrinsics.h"
+#include "llvm/Support/MDBuilder.h"
 #include "llvm/Target/TargetData.h"
-#include "llvm/Intrinsics.h"
 using namespace clang;
 using namespace CodeGen;
=20
@@ -362,8 +363,12 @@
                                         LambdaThisCaptureField);
       if (LambdaThisCaptureField) {
         // If this lambda captures this, load it.
-        LValue ThisLValue =3D EmitLValueForField(CXXABIThisValue,
-                                               LambdaThisCaptureField, 0);
+        QualType LambdaTagType =3D
+            getContext().getTagDeclType(LambdaThisCaptureField->getParent(=
));
+        LValue LambdaLV =3D MakeNaturalAlignAddrLValue(CXXABIThisValue,
+                                                     LambdaTagType);
+        LValue ThisLValue =3D EmitLValueForField(LambdaLV,
+                                               LambdaThisCaptureField);
         CXXThisValue =3D EmitLoadOfLValue(ThisLValue).getScalarVal();
       }
     } else {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CodeGenFunction.h
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -1948,6 +1948,7 @@
   void EmitLabel(const LabelDecl *D); // helper for EmitLabelStmt.
=20
   void EmitLabelStmt(const LabelStmt &S);
+  void EmitAttributedStmt(const AttributedStmt &S);
   void EmitGotoStmt(const GotoStmt &S);
   void EmitIndirectGotoStmt(const IndirectGotoStmt &S);
   void EmitIfStmt(const IfStmt &S);
@@ -2104,6 +2105,8 @@
   LValue EmitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *E);
   LValue EmitOpaqueValueLValue(const OpaqueValueExpr *e);
=20
+  RValue EmitRValueForField(LValue LV, const FieldDecl *FD);
+
   class ConstantEmission {
     llvm::PointerIntPair<llvm::Constant*, 1, bool> ValueAndIsReference;
     ConstantEmission(llvm::Constant *C, bool isReference)
@@ -2143,15 +2146,13 @@
   LValue EmitLValueForAnonRecordField(llvm::Value* Base,
                                       const IndirectFieldDecl* Field,
                                       unsigned CVRQualifiers);
-  LValue EmitLValueForField(llvm::Value* Base, const FieldDecl* Field,
-                            unsigned CVRQualifiers);
+  LValue EmitLValueForField(LValue Base, const FieldDecl* Field);
=20
   /// EmitLValueForFieldInitialization - Like EmitLValueForField, except t=
hat
   /// if the Field is a reference, this will return the address of the ref=
erence
   /// and not the address of the value stored in the reference.
-  LValue EmitLValueForFieldInitialization(llvm::Value* Base,
-                                          const FieldDecl* Field,
-                                          unsigned CVRQualifiers);
+  LValue EmitLValueForFieldInitialization(LValue Base,
+                                          const FieldDecl* Field);
=20
   LValue EmitLValueForIvar(QualType ObjectTy,
                            llvm::Value* Base, const ObjCIvarDecl *Ivar,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CodeGenModule.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -1241,7 +1241,7 @@
=20
 /// GetAddrOfGlobalVar - Return the llvm::Constant for the address of the
 /// given global variable.  If Ty is non-null and if the global doesn't ex=
ist,
-/// then it will be greated with the specified type instead of whatever the
+/// then it will be created with the specified type instead of whatever the
 /// normal requested type would be.
 llvm::Constant *CodeGenModule::GetAddrOfGlobalVar(const VarDecl *D,
                                                   llvm::Type *Ty) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CodeGenTBAA.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -28,7 +28,7 @@
 CodeGenTBAA::CodeGenTBAA(ASTContext &Ctx, llvm::LLVMContext& VMContext,
                          const LangOptions &Features, MangleContext &MCont=
ext)
   : Context(Ctx), VMContext(VMContext), Features(Features), MContext(MCont=
ext),
-    Root(0), Char(0) {
+    MDHelper(VMContext), Root(0), Char(0) {
 }
=20
 CodeGenTBAA::~CodeGenTBAA() {
@@ -40,7 +40,7 @@
   // (or a different version of this front-end), their TBAA trees will
   // remain distinct, and the optimizer will treat them conservatively.
   if (!Root)
-    Root =3D getTBAAInfoForNamedType("Simple C/C++ TBAA", 0);
+    Root =3D MDHelper.createTBAARoot("Simple C/C++ TBAA");
=20
   return Root;
 }
@@ -51,33 +51,11 @@
   // these special powers only cover user-accessible memory, and doesn't
   // include things like vtables.
   if (!Char)
-    Char =3D getTBAAInfoForNamedType("omnipotent char", getRoot());
+    Char =3D MDHelper.createTBAANode("omnipotent char", getRoot());
=20
   return Char;
 }
=20
-/// getTBAAInfoForNamedType - Create a TBAA tree node with the given string
-/// as its identifier, and the given Parent node as its tree parent.
-llvm::MDNode *CodeGenTBAA::getTBAAInfoForNamedType(StringRef NameStr,
-                                                   llvm::MDNode *Parent,
-                                                   bool Readonly) {
-  // Currently there is only one flag defined - the readonly flag.
-  llvm::Value *Flags =3D 0;
-  if (Readonly)
-    Flags =3D llvm::ConstantInt::get(llvm::Type::getInt64Ty(VMContext), tr=
ue);
-
-  // Set up the mdnode operand list.
-  llvm::Value *Ops[] =3D {
-    llvm::MDString::get(VMContext, NameStr),
-    Parent,
-    Flags
-  };
-
-  // Create the mdnode.
-  unsigned Len =3D llvm::array_lengthof(Ops) - !Flags;
-  return llvm::MDNode::get(VMContext, llvm::makeArrayRef(Ops, Len));
-}
-
 static bool TypeHasMayAlias(QualType QTy) {
   // Tagged types have declarations, and therefore may have attributes.
   if (const TagType *TTy =3D dyn_cast<TagType>(QTy))
@@ -137,7 +115,7 @@
     // "underlying types".
     default:
       return MetadataCache[Ty] =3D
-               getTBAAInfoForNamedType(BTy->getName(Features), getChar());
+        MDHelper.createTBAANode(BTy->getName(Features), getChar());
     }
   }
=20
@@ -145,7 +123,7 @@
   // TODO: Implement C++'s type "similarity" and consider dis-"similar"
   // pointers distinct.
   if (Ty->isPointerType())
-    return MetadataCache[Ty] =3D getTBAAInfoForNamedType("any pointer",
+    return MetadataCache[Ty] =3D MDHelper.createTBAANode("any pointer",
                                                        getChar());
=20
   // Enum types are distinct types. In C++ they have "underlying types",
@@ -173,7 +151,7 @@
     llvm::raw_svector_ostream Out(OutName);
     MContext.mangleCXXRTTIName(QualType(ETy, 0), Out);
     Out.flush();
-    return MetadataCache[Ty] =3D getTBAAInfoForNamedType(OutName, getChar(=
));
+    return MetadataCache[Ty] =3D MDHelper.createTBAANode(OutName, getChar(=
));
   }
=20
   // For now, handle any other kind of type conservatively.
@@ -181,5 +159,5 @@
 }
=20
 llvm::MDNode *CodeGenTBAA::getTBAAInfoForVTablePtr() {
-  return getTBAAInfoForNamedType("vtable pointer", getRoot());
+  return MDHelper.createTBAANode("vtable pointer", getRoot());
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/CodeGenTBAA.h
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -17,6 +17,7 @@
=20
 #include "clang/Basic/LLVM.h"
 #include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/MDBuilder.h"
=20
 namespace llvm {
   class LLVMContext;
@@ -41,6 +42,9 @@
   const LangOptions &Features;
   MangleContext &MContext;
=20
+  // MDHelper - Helper for creating metadata.
+  llvm::MDBuilder MDHelper;
+
   /// MetadataCache - This maps clang::Types to llvm::MDNodes describing t=
hem.
   llvm::DenseMap<const Type *, llvm::MDNode *> MetadataCache;
=20
@@ -55,10 +59,6 @@
   /// considered to be equivalent to it.
   llvm::MDNode *getChar();
=20
-  llvm::MDNode *getTBAAInfoForNamedType(StringRef NameStr,
-                                        llvm::MDNode *Parent,
-                                        bool Readonly =3D false);
-
 public:
   CodeGenTBAA(ASTContext &Ctx, llvm::LLVMContext &VMContext,
               const LangOptions &Features,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Code=
Gen/TargetInfo.cpp
--- a/head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -2527,19 +2527,16 @@
 static bool isHomogeneousAggregate(QualType Ty, const Type *&Base,
                                    ASTContext &Context,
                                    uint64_t *HAMembers =3D 0) {
-  uint64_t Members;
+  uint64_t Members =3D 0;
   if (const ConstantArrayType *AT =3D Context.getAsConstantArrayType(Ty)) {
     if (!isHomogeneousAggregate(AT->getElementType(), Base, Context, &Memb=
ers))
       return false;
     Members *=3D AT->getSize().getZExtValue();
   } else if (const RecordType *RT =3D Ty->getAs<RecordType>()) {
     const RecordDecl *RD =3D RT->getDecl();
-    if (RD->isUnion() || RD->hasFlexibleArrayMember())
+    if (RD->hasFlexibleArrayMember())
       return false;
-    if (const CXXRecordDecl *CXXRD =3D dyn_cast<CXXRecordDecl>(RD)) {
-      if (!CXXRD->isAggregate())
-        return false;
-    }
+
     Members =3D 0;
     for (RecordDecl::field_iterator i =3D RD->field_begin(), e =3D RD->fie=
ld_end();
          i !=3D e; ++i) {
@@ -2547,7 +2544,9 @@
       uint64_t FldMembers;
       if (!isHomogeneousAggregate(FD->getType(), Base, Context, &FldMember=
s))
         return false;
-      Members +=3D FldMembers;
+
+      Members =3D (RD->isUnion() ?
+                 std::max(Members, FldMembers) : Members + FldMembers);
     }
   } else {
     Members =3D 1;
@@ -2584,7 +2583,8 @@
   // Homogeneous Aggregates can have at most 4 members of the base type.
   if (HAMembers)
     *HAMembers =3D Members;
-  return (Members <=3D 4);
+
+  return (Members > 0 && Members <=3D 4);
 }
=20
 ABIArgInfo ARMABIInfo::classifyArgumentType(QualType Ty) const {
@@ -2609,8 +2609,10 @@
   if (getABIKind() =3D=3D ARMABIInfo::AAPCS_VFP) {
     // Homogeneous Aggregates need to be expanded.
     const Type *Base =3D 0;
-    if (isHomogeneousAggregate(Ty, Base, getContext()))
+    if (isHomogeneousAggregate(Ty, Base, getContext())) {
+      assert(Base && "Base class should be set for homogeneous aggregate");
       return ABIArgInfo::getExpand();
+    }
   }
=20
   // Otherwise, pass by coercing to a structure of the appropriate size.
@@ -2776,9 +2778,11 @@
   // Check for homogeneous aggregates with AAPCS-VFP.
   if (getABIKind() =3D=3D AAPCS_VFP) {
     const Type *Base =3D 0;
-    if (isHomogeneousAggregate(RetTy, Base, getContext()))
+    if (isHomogeneousAggregate(RetTy, Base, getContext())) {
+      assert(Base && "Base class should be set for homogeneous aggregate");
       // Homogeneous Aggregates are returned directly.
       return ABIArgInfo::getDirect();
+    }
   }
=20
   // Aggregates <=3D 4 bytes are returned in r0; other aggregates
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Driv=
er/Compilation.cpp
--- a/head/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -230,3 +230,7 @@
   Redirects[1] =3D new const llvm::sys::Path();
   Redirects[2] =3D new const llvm::sys::Path();
 }
+
+StringRef Compilation::getSysRoot(void) const {
+  return getDriver().SysRoot;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Driv=
er/Driver.cpp
--- a/head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -49,8 +49,8 @@
                bool IsProduction,
                DiagnosticsEngine &Diags)
   : Opts(createDriverOptTable()), Diags(Diags),
-    ClangExecutable(ClangExecutable), UseStdLib(true),
-    DefaultTargetTriple(DefaultTargetTriple),=20
+    ClangExecutable(ClangExecutable), SysRoot(DEFAULT_SYSROOT),
+    UseStdLib(true), DefaultTargetTriple(DefaultTargetTriple),
     DefaultImageName(DefaultImageName),
     DriverTitle("clang \"gcc-compatible\" driver"),
     CCPrintOptionsFilename(0), CCPrintHeadersFilename(0),
@@ -660,9 +660,7 @@
     llvm::outs() << "\n";
     llvm::outs() << "libraries: =3D" << ResourceDir;
=20
-    std::string sysroot;
-    if (Arg *A =3D C.getArgs().getLastArg(options::OPT__sysroot_EQ))
-      sysroot =3D A->getValue(C.getArgs());
+    StringRef sysroot =3D C.getSysRoot();
=20
     for (ToolChain::path_list::const_iterator it =3D TC.getFilePaths().beg=
in(),
            ie =3D TC.getFilePaths().end(); it !=3D ie; ++it) {
@@ -872,30 +870,30 @@
=20
     // Handle debug info queries.
     Arg *A =3D Args.getLastArg(options::OPT_g_Group);
-      if (A && !A->getOption().matches(options::OPT_g0) &&
-          !A->getOption().matches(options::OPT_gstabs) &&
-          ContainsCompileOrAssembleAction(Actions.back())) {
-  =20
-        // Add a 'dsymutil' step if necessary, when debug info is enabled =
and we
-        // have a compile input. We need to run 'dsymutil' ourselves in su=
ch cases
-        // because the debug info will refer to a temporary object file wh=
ich is
-        // will be removed at the end of the compilation process.
-        if (Act->getType() =3D=3D types::TY_Image) {
-          ActionList Inputs;
-          Inputs.push_back(Actions.back());
-          Actions.pop_back();
-          Actions.push_back(new DsymutilJobAction(Inputs, types::TY_dSYM));
-        }
+    if (A && !A->getOption().matches(options::OPT_g0) &&
+        !A->getOption().matches(options::OPT_gstabs) &&
+        ContainsCompileOrAssembleAction(Actions.back())) {
+=20
+      // Add a 'dsymutil' step if necessary, when debug info is enabled an=
d we
+      // have a compile input. We need to run 'dsymutil' ourselves in such=
 cases
+      // because the debug info will refer to a temporary object file whic=
h is
+      // will be removed at the end of the compilation process.
+      if (Act->getType() =3D=3D types::TY_Image) {
+        ActionList Inputs;
+        Inputs.push_back(Actions.back());
+        Actions.pop_back();
+        Actions.push_back(new DsymutilJobAction(Inputs, types::TY_dSYM));
+      }
=20
-        // Verify the output (debug information only) if we passed '-verif=
y'.
-        if (Args.hasArg(options::OPT_verify)) {
-          ActionList VerifyInputs;
-	  VerifyInputs.push_back(Actions.back());
-	  Actions.pop_back();
-	  Actions.push_back(new VerifyJobAction(VerifyInputs,
-						types::TY_Nothing));
-	}
+      // Verify the output (debug information only) if we passed '-verify'.
+      if (Args.hasArg(options::OPT_verify)) {
+        ActionList VerifyInputs;
+        VerifyInputs.push_back(Actions.back());
+        Actions.pop_back();
+        Actions.push_back(new VerifyJobAction(VerifyInputs,
+                                              types::TY_Nothing));
       }
+    }
   }
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Driv=
er/ToolChains.cpp
--- a/head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -35,10 +35,6 @@
=20
 #include "clang/Config/config.h" // for GCC_INSTALL_PREFIX
=20
-#ifndef CLANG_PREFIX
-#define CLANG_PREFIX
-#endif
-
 using namespace clang::driver;
 using namespace clang::driver::toolchains;
 using namespace clang;
@@ -584,7 +580,7 @@
=20
     // If no '-miphoneos-version-min' specified on the command line and
     // IPHONEOS_DEPLOYMENT_TARGET is not defined, see if we can set the de=
fault
-    // based on isysroot.
+    // based on -isysroot.
     if (iOSTarget.empty()) {
       if (const Arg *A =3D Args.getLastArg(options::OPT_isysroot)) {
         StringRef first, second;
@@ -1090,6 +1086,7 @@
   // a patch.
   if (RHS.Patch =3D=3D -1) return true;   if (Patch =3D=3D -1) return fals=
e;
   if (Patch < RHS.Patch) return true; if (Patch > RHS.Patch) return false;
+  if (PatchSuffix =3D=3D RHS.PatchSuffix) return false;
=20
   // Finally, between completely tied version numbers, the version with the
   // suffix loses as we prefer full releases.
@@ -1107,7 +1104,7 @@
 /// \brief Construct a GCCInstallationDetector from the driver.
 ///
 /// This performs all of the autodetection and sets up the various paths.
-/// Once constructed, a GCCInstallation is esentially immutable.
+/// Once constructed, a GCCInstallationDetector is essentially immutable.
 ///
 /// FIXME: We shouldn't need an explicit TargetTriple parameter here, and
 /// should instead pull the target out of the driver. This is currently
@@ -1618,10 +1615,10 @@
   // back to '/usr/lib' if it doesn't exist.
   if ((Triple.getArch() =3D=3D llvm::Triple::x86 ||
        Triple.getArch() =3D=3D llvm::Triple::ppc) &&
-      llvm::sys::fs::exists(getDriver().SysRoot + CLANG_PREFIX "/usr/lib32=
/crt1.o"))
-    getFilePaths().push_back(getDriver().SysRoot + CLANG_PREFIX "/usr/lib3=
2");
+      llvm::sys::fs::exists(getDriver().SysRoot + "/usr/lib32/crt1.o"))
+    getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32");
   else
-    getFilePaths().push_back(getDriver().SysRoot + CLANG_PREFIX "/usr/lib"=
);
+    getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
 }
=20
 Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA,
@@ -1833,6 +1830,7 @@
   OpenSuse11_3,
   OpenSuse11_4,
   OpenSuse12_1,
+  OpenSuse12_2,
   UbuntuHardy,
   UbuntuIntrepid,
   UbuntuJaunty,
@@ -1851,7 +1849,7 @@
 }
=20
 static bool IsOpenSuse(enum LinuxDistro Distro) {
-  return Distro >=3D OpenSuse11_3 && Distro <=3D OpenSuse12_1;
+  return Distro >=3D OpenSuse11_3 && Distro <=3D OpenSuse12_2;
 }
=20
 static bool IsDebian(enum LinuxDistro Distro) {
@@ -1928,6 +1926,7 @@
       .StartsWith("openSUSE 11.3", OpenSuse11_3)
       .StartsWith("openSUSE 11.4", OpenSuse11_4)
       .StartsWith("openSUSE 12.1", OpenSuse12_1)
+      .StartsWith("openSUSE 12.2", OpenSuse12_2)
       .Default(UnknownDistro);
=20
   bool Exists;
@@ -2067,7 +2066,7 @@
     // If the GCC installation we found is inside of the sysroot, we want =
to
     // prefer libraries installed in the parent prefix of the GCC installa=
tion.
     // It is important to *not* use these paths when the GCC installation =
is
-    // outside of the system root as that can pick up un-intented librarie=
s.
+    // outside of the system root as that can pick up unintended libraries.
     // This usually happens when there is an external cross compiler on the
     // host system, and a more minimal sysroot available that is the targe=
t of
     // the cross.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Driv=
er/Tools.cpp
--- a/head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -377,10 +377,11 @@
=20
   // If we have a --sysroot, and don't have an explicit -isysroot flag, ad=
d an
   // -isysroot to the CC1 invocation.
-  if (Arg *A =3D Args.getLastArg(options::OPT__sysroot_EQ)) {
+  StringRef sysroot =3D C.getSysRoot();
+  if (sysroot !=3D "") {
     if (!Args.hasArg(options::OPT_isysroot)) {
       CmdArgs.push_back("-isysroot");
-      CmdArgs.push_back(A->getValue(Args));
+      CmdArgs.push_back(C.getArgs().MakeArgString(sysroot));
     }
   }
  =20
@@ -4017,9 +4018,10 @@
=20
   // Give --sysroot=3D preference, over the Apple specific behavior to als=
o use
   // --isysroot as the syslibroot.
-  if (const Arg *A =3D Args.getLastArg(options::OPT__sysroot_EQ)) {
+  StringRef sysroot =3D C.getSysRoot();
+  if (sysroot !=3D "") {
     CmdArgs.push_back("-syslibroot");
-    CmdArgs.push_back(A->getValue(Args));
+    CmdArgs.push_back(C.getArgs().MakeArgString(sysroot));
   } else if (const Arg *A =3D Args.getLastArg(options::OPT_isysroot)) {
     CmdArgs.push_back("-syslibroot");
     CmdArgs.push_back(A->getValue(Args));
@@ -4758,6 +4760,9 @@
       CmdArgs.push_back("-dynamic-linker");
       CmdArgs.push_back("/libexec/ld-elf.so.1");
     }
+    llvm::Triple::ArchType Arch =3D getToolChain().getArch();
+    if (Arch =3D=3D llvm::Triple::x86 || Arch =3D=3D llvm::Triple::x86_64)
+      CmdArgs.push_back("--hash-style=3Dboth");
   }
=20
   // When building 32-bit code on FreeBSD/amd64, we have to explicitly
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/ASTUnit.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -643,8 +643,10 @@
     DiagnosticConsumer *Client =3D 0;
     if (CaptureDiagnostics)
       Client =3D new StoredDiagnosticConsumer(AST.StoredDiagnostics);
-    Diags =3D CompilerInstance::createDiagnostics(DiagOpts, ArgEnd- ArgBeg=
in,=20
-                                                ArgBegin, Client);
+    Diags =3D CompilerInstance::createDiagnostics(DiagOpts, ArgEnd-ArgBegi=
n,
+                                                ArgBegin, Client,
+                                                /*ShouldOwnClient=3D*/true,
+                                                /*ShouldCloneClient=3D*/fa=
lse);
   } else if (CaptureDiagnostics) {
     Diags->setClient(new StoredDiagnosticConsumer(AST.StoredDiagnostics));
   }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/CompilerInstance.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp	Wed J=
ul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp	Wed J=
ul 25 16:21:35 2012 +0300
@@ -560,7 +560,8 @@
       TempPath +=3D "-%%%%%%%%";
       int fd;
       if (llvm::sys::fs::unique_file(TempPath.str(), fd, TempPath,
-                               /*makeAbsolute=3D*/false) =3D=3D llvm::errc=
::success) {
+                                     /*makeAbsolute=3D*/false, 0664)
+          =3D=3D llvm::errc::success) {
         OS.reset(new llvm::raw_fd_ostream(fd, /*shouldClose=3D*/true));
         OSFile =3D TempFile =3D TempPath.str();
       }
@@ -651,6 +652,10 @@
   // created. This complexity should be lifted elsewhere.
   getTarget().setForcedLangOptions(getLangOpts());
=20
+  // rewriter project will change target built-in bool type from its defau=
lt.=20
+  if (getFrontendOpts().ProgramAction =3D=3D frontend::RewriteObjC)
+    getTarget().noSignedCharForObjCBool();
+
   // Validate/process some options.
   if (getHeaderSearchOpts().Verbose)
     OS << "clang -cc1 version " CLANG_VERSION_STRING
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/CompilerInvocation.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -429,7 +429,6 @@
   case frontend::PrintDeclContext:       return "-print-decl-contexts";
   case frontend::PrintPreamble:          return "-print-preamble";
   case frontend::PrintPreprocessedInput: return "-E";
-  case frontend::PubnamesDump:           return "-pubnames-dump";
   case frontend::RewriteMacros:          return "-rewrite-macros";
   case frontend::RewriteObjC:            return "-rewrite-objc";
   case frontend::RewriteTest:            return "-rewrite-test";
@@ -1371,8 +1370,6 @@
       Opts.ProgramAction =3D frontend::PrintPreamble; break;
     case OPT_E:
       Opts.ProgramAction =3D frontend::PrintPreprocessedInput; break;
-    case OPT_pubnames_dump:
-      Opts.ProgramAction =3D frontend::PubnamesDump; break;
     case OPT_rewrite_macros:
       Opts.ProgramAction =3D frontend::RewriteMacros; break;
     case OPT_rewrite_objc:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/FrontendActions.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp	Wed Ju=
l 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp	Wed Ju=
l 25 16:21:35 2012 +0300
@@ -25,7 +25,6 @@
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/system_error.h"
-#include <set>
=20
 using namespace clang;
=20
@@ -355,77 +354,6 @@
   return new ASTConsumer();
 }
=20
-namespace {
-  class PubnamesDumpConsumer : public ASTConsumer {
-    Preprocessor &PP;
-   =20
-    /// \brief Determine whether the given identifier provides a 'public' =
name.
-    bool isPublicName(IdentifierInfo *II) {
-      // If there are any top-level declarations associated with this
-      // identifier, it is a public name.
-      if (II->getFETokenInfo<void>())
-        return true;
-
-      // If this identifier is the name of a non-builtin macro that isn't
-      // defined on the command line or implicitly by the front end, it is=
 a
-      // public name.
-      if (II->hasMacroDefinition()) {
-        if (MacroInfo *M =3D PP.getMacroInfo(II))
-          if (!M->isBuiltinMacro()) {
-            SourceLocation Loc =3D M->getDefinitionLoc();
-            FileID File =3D PP.getSourceManager().getFileID(Loc);
-            if (PP.getSourceManager().getFileEntryForID(File))
-              return true;
-          }
-      }
-     =20
-      return false;
-    }
-     =20
-  public:
-    PubnamesDumpConsumer(Preprocessor &PP) : PP(PP) { }
-       =20
-    virtual void HandleTranslationUnit(ASTContext &Ctx) {
-      std::set<StringRef> Pubnames;
-     =20
-      // Add the names of any non-builtin macros.
-      for (IdentifierTable::iterator I =3D Ctx.Idents.begin(),
-                                  IEnd =3D Ctx.Idents.end();
-           I !=3D IEnd; ++I) {
-        if (isPublicName(I->second))
-          Pubnames.insert(I->first());
-      }
-     =20
-      // If there is an external identifier lookup source, consider those
-      // identifiers as well.
-      if (IdentifierInfoLookup *External
-            =3D Ctx.Idents.getExternalIdentifierLookup()) {
-        OwningPtr<IdentifierIterator> Iter(External->getIdentifiers());
-        do {
-          StringRef Name =3D Iter->Next();
-          if (Name.empty())
-            break;
-         =20
-          if (isPublicName(PP.getIdentifierInfo(Name)))
-            Pubnames.insert(Name);
-        } while (true);
-      }
-
-      // Print the names, in lexicographical order.
-      for (std::set<StringRef>::iterator N =3D Pubnames.begin(),
-                                      NEnd =3D Pubnames.end();
-           N !=3D NEnd; ++N) {
-        llvm::outs() << *N << '\n';
-      }
-    }
-  };
-}
-
-ASTConsumer *PubnamesDumpAction::CreateASTConsumer(CompilerInstance &CI,
-                                                   StringRef InFile) {
-  return new PubnamesDumpConsumer(CI.getPreprocessor());
-}
-
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
 // Preprocessor Actions
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/InitHeaderSearch.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	Wed J=
ul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp	Wed J=
ul 25 16:21:35 2012 +0300
@@ -29,9 +29,6 @@
=20
 #include "clang/Config/config.h" // C_INCLUDE_DIRS
=20
-#ifndef CLANG_PREFIX
-#define CLANG_PREFIX
-#endif
 using namespace clang;
 using namespace clang::frontend;
=20
@@ -319,7 +316,7 @@
     }
     break;
   case llvm::Triple::FreeBSD:
-    AddPath(CLANG_PREFIX "/usr/include/clang/" CLANG_VERSION_STRING,
+    AddPath("/usr/include/clang/" CLANG_VERSION_STRING,
       System, false, false, false);
     break;
      =20
@@ -328,7 +325,7 @@
   }
=20
   if ( os !=3D llvm::Triple::RTEMS )
-    AddPath(CLANG_PREFIX "/usr/include", System, false, false, false);
+    AddPath("/usr/include", System, false, false, false);
 }
=20
 void InitHeaderSearch::
@@ -408,9 +405,8 @@
   case llvm::Triple::FreeBSD:
     // FreeBSD 8.0
     // FreeBSD 7.3
-    AddGnuCPlusPlusIncludePaths(CLANG_PREFIX "/usr/include/c++/4.2",
-                                "", "", "", triple);
-    AddGnuCPlusPlusIncludePaths(CLANG_PREFIX "/usr/include/c++/4.2/backwar=
d",
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2", "", "", "", triple=
);
+    AddGnuCPlusPlusIncludePaths("/usr/include/c++/4.2/backward",
                                 "", "", "", triple);
     break;
   case llvm::Triple::NetBSD:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tend/TextDiagnostic.cpp
--- a/head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -10,13 +10,17 @@
 #include "clang/Frontend/TextDiagnostic.h"
 #include "clang/Basic/FileManager.h"
 #include "clang/Basic/SourceManager.h"
+#include "clang/Basic/ConvertUTF.h"
 #include "clang/Frontend/DiagnosticOptions.h"
 #include "clang/Lex/Lexer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/Locale.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/StringExtras.h"
 #include <algorithm>
+
 using namespace clang;
=20
 static const enum raw_ostream::Colors noteColor =3D
@@ -36,23 +40,269 @@
 /// \brief Number of spaces to indent when word-wrapping.
 const unsigned WordWrapIndentation =3D 6;
=20
+int bytesSincePreviousTabOrLineBegin(StringRef SourceLine, size_t i) {
+  int bytes =3D 0;
+  while (0<i) {
+    if (SourceLine[--i]=3D=3D'\t')
+      break;
+    ++bytes;
+  }
+  return bytes;
+}
+
+/// \brief returns a printable representation of first item from input ran=
ge
+///
+/// This function returns a printable representation of the next item in a=
 line
+///  of source. If the next byte begins a valid and printable character, t=
hat
+///  character is returned along with 'true'.
+///
+/// Otherwise, if the next byte begins a valid, but unprintable character,=
 a
+///  printable, escaped representation of the character is returned, along=
 with
+///  'false'. Otherwise a printable, escaped representation of the next by=
te
+///  is returned along with 'false'.
+///
+/// \note The index is updated to be used with a subsequent call to
+///        printableTextForNextCharacter.
+///
+/// \param SourceLine The line of source
+/// \param i Pointer to byte index,
+/// \param TabStop used to expand tabs
+/// \return pair(printable text, 'true' iff original text was printable)
+///
+std::pair<SmallString<16>,bool>
+printableTextForNextCharacter(StringRef SourceLine, size_t *i,
+                              unsigned TabStop) {
+  assert(i && "i must not be null");
+  assert(*i<SourceLine.size() && "must point to a valid index");
+ =20
+  if (SourceLine[*i]=3D=3D'\t') {
+    assert(0 < TabStop && TabStop <=3D DiagnosticOptions::MaxTabStop &&
+           "Invalid -ftabstop value");
+    unsigned col =3D bytesSincePreviousTabOrLineBegin(SourceLine, *i);
+    unsigned NumSpaces =3D TabStop - col%TabStop;
+    assert(0 < NumSpaces && NumSpaces <=3D TabStop
+           && "Invalid computation of space amt");
+    ++(*i);
+
+    SmallString<16> expandedTab;
+    expandedTab.assign(NumSpaces, ' ');
+    return std::make_pair(expandedTab, true);
+  }
+
+  // FIXME: this data is copied from the private implementation of Convert=
UTF.h
+  static const char trailingBytesForUTF8[256] =3D {
+    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,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,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,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,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,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+  };
+
+  unsigned char const *begin, *end;
+  begin =3D reinterpret_cast<unsigned char const *>(&*(SourceLine.begin() =
+ *i));
+  end =3D begin + SourceLine.size();
+ =20
+  if (isLegalUTF8Sequence(begin, end)) {
+    UTF32 c;
+    UTF32 *cptr =3D &c;
+    unsigned char const *original_begin =3D begin;
+    char trailingBytes =3D trailingBytesForUTF8[(unsigned char)SourceLine[=
*i]];
+    unsigned char const *cp_end =3D begin+trailingBytes+1;
+
+    ConversionResult res =3D ConvertUTF8toUTF32(&begin, cp_end, &cptr, cpt=
r+1,
+                                              strictConversion);
+    (void)res;
+    assert(conversionOK=3D=3Dres);
+    assert(0 < begin-original_begin
+           && "we must be further along in the string now");
+    *i +=3D begin-original_begin;
+
+    if (!llvm::sys::locale::isPrint(c)) {
+      // If next character is valid UTF-8, but not printable
+      SmallString<16> expandedCP("<U+>");
+      while (c) {
+        expandedCP.insert(expandedCP.begin()+3, llvm::hexdigit(c%16));
+        c/=3D16;
+      }
+      while (expandedCP.size() < 8)
+        expandedCP.insert(expandedCP.begin()+3, llvm::hexdigit(0));
+      return std::make_pair(expandedCP, false);
+    }
+
+    // If next character is valid UTF-8, and printable
+    return std::make_pair(SmallString<16>(original_begin, cp_end), true);
+
+  }
+
+  // If next byte is not valid UTF-8 (and therefore not printable)
+  SmallString<16> expandedByte("<XX>");
+  unsigned char byte =3D SourceLine[*i];
+  expandedByte[1] =3D llvm::hexdigit(byte / 16);
+  expandedByte[2] =3D llvm::hexdigit(byte % 16);
+  ++(*i);
+  return std::make_pair(expandedByte, false);
+}
+
+void expandTabs(std::string &SourceLine, unsigned TabStop) {
+  size_t i =3D SourceLine.size();
+  while (i>0) {
+    i--;
+    if (SourceLine[i]!=3D'\t')
+      continue;
+    size_t tmp_i =3D i;
+    std::pair<SmallString<16>,bool> res
+      =3D printableTextForNextCharacter(SourceLine, &tmp_i, TabStop);
+    SourceLine.replace(i, 1, res.first.c_str());
+  }
+}
+
+/// This function takes a raw source line and produces a mapping from the =
bytes
+///  of the printable representation of the line to the columns those prin=
table
+///  characters will appear at (numbering the first column as 0).
+///
+/// If a byte 'i' corresponds to muliple columns (e.g. the byte contains a=
 tab
+///  character) then the the array will map that byte to the first column =
the
+///  tab appears at and the next value in the map will have been increment=
ed
+///  more than once.
+///
+/// If a byte is the first in a sequence of bytes that together map to a s=
ingle
+///  entity in the output, then the array will map that byte to the approp=
riate
+///  column while the subsequent bytes will be -1.
+///
+/// The last element in the array does not correspond to any byte in the i=
nput
+///  and instead is the number of columns needed to display the source
+///
+/// example: (given a tabstop of 8)
+///
+///    "a \t \u3042" -> {0,1,2,8,9,-1,-1,11}
+///
+///  (\u3042 is represented in UTF-8 by three bytes and takes two columns =
to
+///   display)
+void byteToColumn(StringRef SourceLine, unsigned TabStop,
+                         SmallVectorImpl<int> &out) {
+  out.clear();
+
+  if (SourceLine.empty()) {
+    out.resize(1u,0);
+    return;
+  }
+ =20
+  out.resize(SourceLine.size()+1, -1);
+
+  int columns =3D 0;
+  size_t i =3D 0;
+  while (i<SourceLine.size()) {
+    out[i] =3D columns;
+    std::pair<SmallString<16>,bool> res
+      =3D printableTextForNextCharacter(SourceLine, &i, TabStop);
+    columns +=3D llvm::sys::locale::columnWidth(res.first);
+  }
+  out.back() =3D columns;
+}
+
+/// This function takes a raw source line and produces a mapping from colu=
mns
+///  to the byte of the source line that produced the character displaying=
 at
+///  that column. This is the inverse of the mapping produced by byteToCol=
umn()
+///
+/// The last element in the array is the number of bytes in the source str=
ing
+///
+/// example: (given a tabstop of 8)
+///
+///    "a \t \u3042" -> {0,1,2,-1,-1,-1,-1,-1,3,4,-1,7}
+///
+///  (\u3042 is represented in UTF-8 by three bytes and takes two columns =
to
+///   display)
+void columnToByte(StringRef SourceLine, unsigned TabStop,
+                         SmallVectorImpl<int> &out) {
+  out.clear();
+
+  if (SourceLine.empty()) {
+    out.resize(1u, 0);
+    return;
+  }
+
+  int columns =3D 0;
+  size_t i =3D 0;
+  while (i<SourceLine.size()) {
+    out.resize(columns+1, -1);
+    out.back() =3D i;
+    std::pair<SmallString<16>,bool> res
+      =3D printableTextForNextCharacter(SourceLine, &i, TabStop);
+    columns +=3D llvm::sys::locale::columnWidth(res.first);
+  }
+  out.resize(columns+1, -1);
+  out.back() =3D i;
+}
+
+struct SourceColumnMap {
+  SourceColumnMap(StringRef SourceLine, unsigned TabStop)
+  : m_SourceLine(SourceLine) {
+   =20
+    ::byteToColumn(SourceLine, TabStop, m_byteToColumn);
+    ::columnToByte(SourceLine, TabStop, m_columnToByte);
+   =20
+    assert(m_byteToColumn.size()=3D=3DSourceLine.size()+1);
+    assert(0 < m_byteToColumn.size() && 0 < m_columnToByte.size());
+    assert(m_byteToColumn.size()
+           =3D=3D static_cast<unsigned>(m_columnToByte.back()+1));
+    assert(static_cast<unsigned>(m_byteToColumn.back()+1)
+           =3D=3D m_columnToByte.size());
+  }
+  int columns() const { return m_byteToColumn.back(); }
+  int bytes() const { return m_columnToByte.back(); }
+  int byteToColumn(int n) const {
+    assert(0<=3Dn && n<static_cast<int>(m_byteToColumn.size()));
+    return m_byteToColumn[n];
+  }
+  int columnToByte(int n) const {
+    assert(0<=3Dn && n<static_cast<int>(m_columnToByte.size()));
+    return m_columnToByte[n];
+  }
+  StringRef getSourceLine() const {
+    return m_SourceLine;
+  }
+ =20
+private:
+  const std::string m_SourceLine;
+  SmallVector<int,200> m_byteToColumn;
+  SmallVector<int,200> m_columnToByte;
+};
+
+// used in assert in selectInterestingSourceRegion()
+namespace {
+struct char_out_of_range {
+  const char lower,upper;
+  char_out_of_range(char lower, char upper) :
+    lower(lower), upper(upper) {}
+  bool operator()(char c) { return c < lower || upper < c; }
+};
+}
+
 /// \brief When the source code line we want to print is too long for
 /// the terminal, select the "interesting" region.
 static void selectInterestingSourceRegion(std::string &SourceLine,
                                           std::string &CaretLine,
                                           std::string &FixItInsertionLine,
-                                          unsigned EndOfCaretToken,
-                                          unsigned Columns) {
-  unsigned MaxSize =3D std::max(SourceLine.size(),
-                              std::max(CaretLine.size(),=20
-                                       FixItInsertionLine.size()));
-  if (MaxSize > SourceLine.size())
-    SourceLine.resize(MaxSize, ' ');
-  if (MaxSize > CaretLine.size())
-    CaretLine.resize(MaxSize, ' ');
-  if (!FixItInsertionLine.empty() && MaxSize > FixItInsertionLine.size())
-    FixItInsertionLine.resize(MaxSize, ' ');
-   =20
+                                          unsigned Columns,
+                                          const SourceColumnMap &map) {
+  unsigned MaxColumns =3D std::max<unsigned>(map.columns(),
+                                           std::max(CaretLine.size(),
+                                                    FixItInsertionLine.siz=
e()));
+  // if the number of columns is less than the desired number we're done
+  if (MaxColumns <=3D Columns)
+    return;
+
+  // no special characters allowed in CaretLine or FixItInsertionLine
+  assert(CaretLine.end() =3D=3D
+         std::find_if(CaretLine.begin(), CaretLine.end(),
+         char_out_of_range(' ','~')));
+  assert(FixItInsertionLine.end() =3D=3D
+         std::find_if(FixItInsertionLine.begin(), FixItInsertionLine.end(),
+         char_out_of_range(' ','~')));
+
   // Find the slice that we need to display the full caret line
   // correctly.
   unsigned CaretStart =3D 0, CaretEnd =3D CaretLine.size();
@@ -64,10 +314,8 @@
     if (!isspace(CaretLine[CaretEnd - 1]))
       break;
=20
-  // Make sure we don't chop the string shorter than the caret token
-  // itself.
-  if (CaretEnd < EndOfCaretToken)
-    CaretEnd =3D EndOfCaretToken;
+  // caret has already been inserted into CaretLine so the above whitespace
+  // check is guaranteed to include the caret
=20
   // If we have a fix-it line, make sure the slice includes all of the
   // fix-it information.
@@ -81,10 +329,8 @@
       if (!isspace(FixItInsertionLine[FixItEnd - 1]))
         break;
=20
-    if (FixItStart < CaretStart)
-      CaretStart =3D FixItStart;
-    if (FixItEnd > CaretEnd)
-      CaretEnd =3D FixItEnd;
+    CaretStart =3D std::min(FixItStart, CaretStart);
+    CaretEnd =3D std::max(FixItEnd, CaretEnd);
   }
=20
   // CaretLine[CaretStart, CaretEnd) contains all of the interesting
@@ -92,62 +338,72 @@
   // number of columns we have, try to grow the slice to encompass
   // more context.
=20
-  // If the end of the interesting region comes before we run out of
-  // space in the terminal, start at the beginning of the line.
-  if (Columns > 3 && CaretEnd < Columns - 3)
-    CaretStart =3D 0;
+  unsigned SourceStart =3D map.columnToByte(std::min<unsigned>(CaretStart,
+                                                             map.columns()=
));
+  unsigned SourceEnd =3D map.columnToByte(std::min<unsigned>(CaretEnd,
+                                                           map.columns()));
+
+  unsigned CaretColumnsOutsideSource =3D CaretEnd-CaretStart
+    - (map.byteToColumn(SourceEnd)-map.byteToColumn(SourceStart));
+
+  char const *front_ellipse =3D "  ...";
+  char const *front_space   =3D "     ";
+  char const *back_ellipse =3D "...";
+  unsigned ellipses_space =3D strlen(front_ellipse) + strlen(back_ellipse);
=20
   unsigned TargetColumns =3D Columns;
-  if (TargetColumns > 8)
-    TargetColumns -=3D 8; // Give us extra room for the ellipses.
-  unsigned SourceLength =3D SourceLine.size();
-  while ((CaretEnd - CaretStart) < TargetColumns) {
+  // Give us extra room for the ellipses
+  //  and any of the caret line that extends past the source
+  if (TargetColumns > ellipses_space+CaretColumnsOutsideSource)
+    TargetColumns -=3D ellipses_space+CaretColumnsOutsideSource;
+
+  while (SourceStart>0 || SourceEnd<SourceLine.size()) {
     bool ExpandedRegion =3D false;
-    // Move the start of the interesting region left until we've
-    // pulled in something else interesting.
-    if (CaretStart =3D=3D 1)
-      CaretStart =3D 0;
-    else if (CaretStart > 1) {
-      unsigned NewStart =3D CaretStart - 1;
+
+    if (SourceStart>0) {
+      unsigned NewStart =3D SourceStart-1;
=20
       // Skip over any whitespace we see here; we're looking for
       // another bit of interesting text.
-      while (NewStart && isspace(SourceLine[NewStart]))
+      while (NewStart &&
+             (map.byteToColumn(NewStart)=3D=3D-1 || isspace(SourceLine[New=
Start])))
         --NewStart;
=20
       // Skip over this bit of "interesting" text.
-      while (NewStart && !isspace(SourceLine[NewStart]))
+      while (NewStart &&
+             (map.byteToColumn(NewStart)!=3D-1 && !isspace(SourceLine[NewS=
tart])))
         --NewStart;
=20
       // Move up to the non-whitespace character we just saw.
       if (NewStart)
         ++NewStart;
=20
-      // If we're still within our limit, update the starting
-      // position within the source/caret line.
-      if (CaretEnd - NewStart <=3D TargetColumns) {
-        CaretStart =3D NewStart;
+      unsigned NewColumns =3D map.byteToColumn(SourceEnd) -
+                              map.byteToColumn(NewStart);
+      if (NewColumns <=3D TargetColumns) {
+        SourceStart =3D NewStart;
         ExpandedRegion =3D true;
       }
     }
=20
-    // Move the end of the interesting region right until we've
-    // pulled in something else interesting.
-    if (CaretEnd !=3D SourceLength) {
-      assert(CaretEnd < SourceLength && "Unexpected caret position!");
-      unsigned NewEnd =3D CaretEnd;
+    if (SourceEnd<SourceLine.size()) {
+      unsigned NewEnd =3D SourceEnd+1;
=20
       // Skip over any whitespace we see here; we're looking for
       // another bit of interesting text.
-      while (NewEnd !=3D SourceLength && isspace(SourceLine[NewEnd - 1]))
+      while (NewEnd<SourceLine.size() &&
+             (map.byteToColumn(NewEnd)=3D=3D-1 || isspace(SourceLine[NewEn=
d])))
         ++NewEnd;
=20
       // Skip over this bit of "interesting" text.
-      while (NewEnd !=3D SourceLength && !isspace(SourceLine[NewEnd - 1]))
+      while (NewEnd<SourceLine.size() &&
+             (map.byteToColumn(NewEnd)!=3D-1 && !isspace(SourceLine[NewEnd=
])))
         ++NewEnd;
=20
-      if (NewEnd - CaretStart <=3D TargetColumns) {
-        CaretEnd =3D NewEnd;
+      unsigned NewColumns =3D map.byteToColumn(NewEnd) -
+                              map.byteToColumn(SourceStart);
+      if (NewColumns <=3D TargetColumns) {
+        SourceEnd =3D NewEnd;
         ExpandedRegion =3D true;
       }
     }
@@ -156,21 +412,41 @@
       break;
   }
=20
+  CaretStart =3D map.byteToColumn(SourceStart);
+  CaretEnd =3D map.byteToColumn(SourceEnd) + CaretColumnsOutsideSource;
+
   // [CaretStart, CaretEnd) is the slice we want. Update the various
   // output lines to show only this slice, with two-space padding
   // before the lines so that it looks nicer.
-  if (CaretEnd < SourceLine.size())
-    SourceLine.replace(CaretEnd, std::string::npos, "...");
-  if (CaretEnd < CaretLine.size())
-    CaretLine.erase(CaretEnd, std::string::npos);
-  if (FixItInsertionLine.size() > CaretEnd)
-    FixItInsertionLine.erase(CaretEnd, std::string::npos);
=20
-  if (CaretStart > 2) {
-    SourceLine.replace(0, CaretStart, "  ...");
-    CaretLine.replace(0, CaretStart, "     ");
-    if (FixItInsertionLine.size() >=3D CaretStart)
-      FixItInsertionLine.replace(0, CaretStart, "     ");
+  assert(CaretStart!=3D(unsigned)-1 && CaretEnd!=3D(unsigned)-1 &&
+         SourceStart!=3D(unsigned)-1 && SourceEnd!=3D(unsigned)-1);
+  assert(SourceStart <=3D SourceEnd);
+  assert(CaretStart <=3D CaretEnd);
+
+  unsigned BackColumnsRemoved
+    =3D map.byteToColumn(SourceLine.size())-map.byteToColumn(SourceEnd);
+  unsigned FrontColumnsRemoved =3D CaretStart;
+  unsigned ColumnsKept =3D CaretEnd-CaretStart;
+
+  // We checked up front that the line needed truncation
+  assert(FrontColumnsRemoved+ColumnsKept+BackColumnsRemoved > Columns);
+
+  // The line needs some trunctiona, and we'd prefer to keep the front
+  //  if possible, so remove the back
+  if (BackColumnsRemoved)
+    SourceLine.replace(SourceEnd, std::string::npos, back_ellipse);
+
+  // If that's enough then we're done
+  if (FrontColumnsRemoved+ColumnsKept <=3D Columns)
+    return;
+
+  // Otherwise remove the front as well
+  if (FrontColumnsRemoved) {
+    SourceLine.replace(0, SourceStart, front_ellipse);
+    CaretLine.replace(0, CaretStart, front_space);
+    if (!FixItInsertionLine.empty())
+      FixItInsertionLine.replace(0, CaretStart, front_space);
   }
 }
=20
@@ -564,10 +840,13 @@
=20
   // Get information about the buffer it points into.
   bool Invalid =3D false;
-  const char *BufStart =3D SM.getBufferData(FID, &Invalid).data();
+  StringRef BufData =3D SM.getBufferData(FID, &Invalid);
   if (Invalid)
     return;
=20
+  const char *BufStart =3D BufData.data();
+  const char *BufEnd =3D BufStart + BufData.size();
+
   unsigned LineNo =3D SM.getLineNumber(FID, FileOffset);
   unsigned ColNo =3D SM.getColumnNumber(FID, FileOffset);
   unsigned CaretEndColNo
@@ -581,7 +860,7 @@
   // Compute the line end.  Scan forward from the error position to the en=
d of
   // the line.
   const char *LineEnd =3D TokPtr;
-  while (*LineEnd !=3D '\n' && *LineEnd !=3D '\r' && *LineEnd !=3D '\0')
+  while (*LineEnd !=3D '\n' && *LineEnd !=3D '\r' && LineEnd!=3DBufEnd)
     ++LineEnd;
=20
   // FIXME: This shouldn't be necessary, but the CaretEndColNo can extend =
past
@@ -596,19 +875,30 @@
   // length as the line of source code.
   std::string CaretLine(LineEnd-LineStart, ' ');
=20
+  const SourceColumnMap sourceColMap(SourceLine, DiagOpts.TabStop);
+
   // Highlight all of the characters covered by Ranges with ~ characters.
   for (SmallVectorImpl<CharSourceRange>::iterator I =3D Ranges.begin(),
                                                   E =3D Ranges.end();
        I !=3D E; ++I)
-    highlightRange(*I, LineNo, FID, SourceLine, CaretLine);
+    highlightRange(*I, LineNo, FID, sourceColMap, CaretLine);
=20
   // Next, insert the caret itself.
-  if (ColNo-1 < CaretLine.size())
-    CaretLine[ColNo-1] =3D '^';
-  else
-    CaretLine.push_back('^');
+  ColNo =3D sourceColMap.byteToColumn(ColNo-1);
+  if (CaretLine.size()<ColNo+1)
+    CaretLine.resize(ColNo+1, ' ');
+  CaretLine[ColNo] =3D '^';
=20
-  expandTabs(SourceLine, CaretLine);
+  std::string FixItInsertionLine =3D buildFixItInsertionLine(LineNo,
+                                                           sourceColMap,
+                                                           Hints);
+
+  // If the source line is too long for our terminal, select only the
+  // "interesting" source region within that line.
+  unsigned Columns =3D DiagOpts.MessageLength;
+  if (Columns)
+    selectInterestingSourceRegion(SourceLine, CaretLine, FixItInsertionLin=
e,
+                                  Columns, sourceColMap);
=20
   // If we are in -fdiagnostics-print-source-range-info mode, we are trying
   // to produce easily machine parsable output.  Add a space before the
@@ -619,23 +909,12 @@
     CaretLine =3D ' ' + CaretLine;
   }
=20
-  std::string FixItInsertionLine =3D buildFixItInsertionLine(LineNo,
-                                                           LineStart, Line=
End,
-                                                           Hints);
-
-  // If the source line is too long for our terminal, select only the
-  // "interesting" source region within that line.
-  unsigned Columns =3D DiagOpts.MessageLength;
-  if (Columns && SourceLine.size() > Columns)
-    selectInterestingSourceRegion(SourceLine, CaretLine, FixItInsertionLin=
e,
-                                  CaretEndColNo, Columns);
-
   // Finally, remove any blank spaces from the end of CaretLine.
   while (CaretLine[CaretLine.size()-1] =3D=3D ' ')
     CaretLine.erase(CaretLine.end()-1);
=20
   // Emit what we have computed.
-  OS << SourceLine << '\n';
+  emitSnippet(SourceLine);
=20
   if (DiagOpts.ShowColors)
     OS.changeColor(caretColor, true);
@@ -658,13 +937,49 @@
   emitParseableFixits(Hints);
 }
=20
+void TextDiagnostic::emitSnippet(StringRef line)
+{
+  if (line.empty())
+    return;
+
+  size_t i =3D 0;
+ =20
+  std::string to_print;
+  bool print_reversed =3D false;
+ =20
+  while (i<line.size()) {
+    std::pair<SmallString<16>,bool> res
+        =3D printableTextForNextCharacter(line, &i, DiagOpts.TabStop);
+    bool was_printable =3D res.second;
+   =20
+    if (DiagOpts.ShowColors
+        && was_printable=3D=3Dprint_reversed) {
+      if (print_reversed)
+        OS.reverseColor();
+      OS << to_print;
+      to_print.clear();
+      if (DiagOpts.ShowColors)
+        OS.resetColor();
+    }
+   =20
+    print_reversed =3D !was_printable;
+    to_print +=3D res.first.str();
+  }
+ =20
+  if (print_reversed && DiagOpts.ShowColors)
+    OS.reverseColor();
+  OS << to_print;
+  if (print_reversed && DiagOpts.ShowColors)
+    OS.resetColor();
+ =20
+  OS << '\n';
+}
+
 /// \brief Highlight a SourceRange (with ~'s) for any characters on LineNo.
 void TextDiagnostic::highlightRange(const CharSourceRange &R,
                                     unsigned LineNo, FileID FID,
-                                    const std::string &SourceLine,
+                                    const SourceColumnMap &map,
                                     std::string &CaretLine) {
-  assert(CaretLine.size() =3D=3D SourceLine.size() &&
-         "Expect a correspondence between source and caret line!");
   if (!R.isValid()) return;
=20
   SourceLocation Begin =3D SM.getExpansionLoc(R.getBegin());
@@ -694,7 +1009,7 @@
   }
=20
   // Compute the column number of the end.
-  unsigned EndColNo =3D CaretLine.size();
+  unsigned EndColNo =3D map.getSourceLine().size();
   if (EndLineNo =3D=3D LineNo) {
     EndColNo =3D SM.getExpansionColumnNumber(End);
     if (EndColNo) {
@@ -714,15 +1029,17 @@
   // Check that a token range does not highlight only whitespace.
   if (R.isTokenRange()) {
     // Pick the first non-whitespace column.
-    while (StartColNo < SourceLine.size() &&
-           (SourceLine[StartColNo] =3D=3D ' ' || SourceLine[StartColNo] =
=3D=3D '\t'))
+    while (StartColNo < map.getSourceLine().size() &&
+           (map.getSourceLine()[StartColNo] =3D=3D ' ' ||
+            map.getSourceLine()[StartColNo] =3D=3D '\t'))
       ++StartColNo;
=20
     // Pick the last non-whitespace column.
-    if (EndColNo > SourceLine.size())
-      EndColNo =3D SourceLine.size();
+    if (EndColNo > map.getSourceLine().size())
+      EndColNo =3D map.getSourceLine().size();
     while (EndColNo-1 &&
-           (SourceLine[EndColNo-1] =3D=3D ' ' || SourceLine[EndColNo-1] =
=3D=3D '\t'))
+           (map.getSourceLine()[EndColNo-1] =3D=3D ' ' ||
+            map.getSourceLine()[EndColNo-1] =3D=3D '\t'))
       --EndColNo;
=20
     // If the start/end passed each other, then we are trying to highlight=
 a
@@ -731,15 +1048,24 @@
     assert(StartColNo <=3D EndColNo && "Trying to highlight whitespace??");
   }
=20
+  assert(StartColNo <=3D map.getSourceLine().size() && "Invalid range!");
+  assert(EndColNo <=3D map.getSourceLine().size() && "Invalid range!");
+
   // Fill the range with ~'s.
-  for (unsigned i =3D StartColNo; i < EndColNo; ++i)
-    CaretLine[i] =3D '~';
+  StartColNo =3D map.byteToColumn(StartColNo);
+  EndColNo =3D map.byteToColumn(EndColNo);
+
+  assert(StartColNo <=3D EndColNo && "Invalid range!");
+  if (CaretLine.size() < EndColNo)
+    CaretLine.resize(EndColNo,' ');
+  std::fill(CaretLine.begin()+StartColNo,CaretLine.begin()+EndColNo,'~');
 }
=20
-std::string TextDiagnostic::buildFixItInsertionLine(unsigned LineNo,
-                                                    const char *LineStart,
-                                                    const char *LineEnd,
-                                                    ArrayRef<FixItHint> Hi=
nts) {
+std::string TextDiagnostic::buildFixItInsertionLine(
+  unsigned LineNo,
+  const SourceColumnMap &map,
+  ArrayRef<FixItHint> Hints) {
+
   std::string FixItInsertionLine;
   if (Hints.empty() || !DiagOpts.ShowFixits)
     return FixItInsertionLine;
@@ -755,13 +1081,32 @@
         // Insert the new code into the line just below the code
         // that the user wrote.
         unsigned HintColNo
-          =3D SM.getColumnNumber(HintLocInfo.first, HintLocInfo.second);
+          =3D SM.getColumnNumber(HintLocInfo.first, HintLocInfo.second) - =
1;
+        // hint must start inside the source or right at the end
+        assert(HintColNo<static_cast<unsigned>(map.bytes())+1);
+        HintColNo =3D map.byteToColumn(HintColNo);
+
+        // FIXME: if the fixit includes tabs or other characters that do n=
ot
+        //  take up a single column per byte when displayed then
+        //  I->CodeToInsert.size() is not a column number and we're mixing
+        //  units (columns + bytes). We should get printable versions
+        //  of each fixit before using them.
         unsigned LastColumnModified
-          =3D HintColNo - 1 + I->CodeToInsert.size();
+          =3D HintColNo + I->CodeToInsert.size();
+
+        if (LastColumnModified > static_cast<unsigned>(map.bytes())) {
+          unsigned LastExistingColumn =3D map.byteToColumn(map.bytes());
+          unsigned AddedColumns =3D LastColumnModified-LastExistingColumn;
+          LastColumnModified =3D LastExistingColumn + AddedColumns;
+        } else {
+          LastColumnModified =3D map.byteToColumn(LastColumnModified);
+        }
+
         if (LastColumnModified > FixItInsertionLine.size())
           FixItInsertionLine.resize(LastColumnModified, ' ');
+        assert(HintColNo+I->CodeToInsert.size() <=3D FixItInsertionLine.si=
ze());
         std::copy(I->CodeToInsert.begin(), I->CodeToInsert.end(),
-                  FixItInsertionLine.begin() + HintColNo - 1);
+                  FixItInsertionLine.begin() + HintColNo);
       } else {
         FixItInsertionLine.clear();
         break;
@@ -769,72 +1114,11 @@
     }
   }
=20
-  if (FixItInsertionLine.empty())
-    return FixItInsertionLine;
-
-  // Now that we have the entire fixit line, expand the tabs in it.
-  // Since we don't want to insert spaces in the middle of a word,
-  // find each word and the column it should line up with and insert
-  // spaces until they match.
-  unsigned FixItPos =3D 0;
-  unsigned LinePos =3D 0;
-  unsigned TabExpandedCol =3D 0;
-  unsigned LineLength =3D LineEnd - LineStart;
-
-  while (FixItPos < FixItInsertionLine.size() && LinePos < LineLength) {
-    // Find the next word in the FixIt line.
-    while (FixItPos < FixItInsertionLine.size() &&
-           FixItInsertionLine[FixItPos] =3D=3D ' ')
-      ++FixItPos;
-    unsigned CharDistance =3D FixItPos - TabExpandedCol;
-
-    // Walk forward in the source line, keeping track of
-    // the tab-expanded column.
-    for (unsigned I =3D 0; I < CharDistance; ++I, ++LinePos)
-      if (LinePos >=3D LineLength || LineStart[LinePos] !=3D '\t')
-        ++TabExpandedCol;
-      else
-        TabExpandedCol =3D
-          (TabExpandedCol/DiagOpts.TabStop + 1) * DiagOpts.TabStop;
-
-    // Adjust the fixit line to match this column.
-    FixItInsertionLine.insert(FixItPos, TabExpandedCol-FixItPos, ' ');
-    FixItPos =3D TabExpandedCol;
-
-    // Walk to the end of the word.
-    while (FixItPos < FixItInsertionLine.size() &&
-           FixItInsertionLine[FixItPos] !=3D ' ')
-      ++FixItPos;
-  }
+  expandTabs(FixItInsertionLine, DiagOpts.TabStop);
=20
   return FixItInsertionLine;
 }
=20
-void TextDiagnostic::expandTabs(std::string &SourceLine,
-                                std::string &CaretLine) {
-  // Scan the source line, looking for tabs.  If we find any, manually exp=
and
-  // them to spaces and update the CaretLine to match.
-  for (unsigned i =3D 0; i !=3D SourceLine.size(); ++i) {
-    if (SourceLine[i] !=3D '\t') continue;
-
-    // Replace this tab with at least one space.
-    SourceLine[i] =3D ' ';
-
-    // Compute the number of spaces we need to insert.
-    unsigned TabStop =3D DiagOpts.TabStop;
-    assert(0 < TabStop && TabStop <=3D DiagnosticOptions::MaxTabStop &&
-           "Invalid -ftabstop value");
-    unsigned NumSpaces =3D ((i+TabStop)/TabStop * TabStop) - (i+1);
-    assert(NumSpaces < TabStop && "Invalid computation of space amt");
-
-    // Insert spaces into the SourceLine.
-    SourceLine.insert(i+1, NumSpaces, ' ');
-
-    // Insert spaces or ~'s into CaretLine.
-    CaretLine.insert(i+1, NumSpaces, CaretLine[i] =3D=3D '~' ? '~' : ' ');
-  }
-}
-
 void TextDiagnostic::emitParseableFixits(ArrayRef<FixItHint> Hints) {
   if (!DiagOpts.ShowParseableFixits)
     return;
@@ -878,4 +1162,3 @@
     OS << "\"\n";
   }
 }
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Fron=
tendTool/ExecuteCompilerInvocation.cpp
--- a/head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocat=
ion.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocat=
ion.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -72,7 +72,6 @@
   case PrintDeclContext:       return new DeclContextPrintAction();
   case PrintPreamble:          return new PrintPreambleAction();
   case PrintPreprocessedInput: return new PrintPreprocessedAction();
-  case PubnamesDump:           return new PubnamesDumpAction();
   case RewriteMacros:          return new RewriteMacrosAction();
   case RewriteObjC:            return new RewriteObjCAction();
   case RewriteTest:            return new RewriteTestAction();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Head=
ers/avx2intrin.h
--- a/head/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -822,7 +822,9 @@
=20
 #define _mm256_permute4x64_pd(V, M) __extension__ ({ \
   __m256d __V =3D (V); \
-  (__m256d)__builtin_ia32_permdf256((__v4df)__V, (M)); })
+  (__m256d)__builtin_shufflevector((__v4df)__V, (__v4df) _mm256_setzero_pd=
(), \
+                                   (M) & 0x3, ((M) & 0xc) >> 2, \
+                                   ((M) & 0x30) >> 4, ((M) & 0xc0) >> 6); =
})
=20
 static __inline__ __m256 __attribute__((__always_inline__, __nodebug__))
 _mm256_permutevar8x32_ps(__m256 a, __m256 b)
@@ -832,16 +834,14 @@
=20
 #define _mm256_permute4x64_epi64(V, M) __extension__ ({ \
   __m256i __V =3D (V); \
-  (__m256i)__builtin_ia32_permdi256(__V, (M)); })
+  (__m256i)__builtin_shufflevector((__v4di)__V, (__v4di) _mm256_setzero_si=
256(), \
+                                   (M) & 0x3, ((M) & 0xc) >> 2, \
+                                   ((M) & 0x30) >> 4, ((M) & 0xc0) >> 6); =
})
=20
 #define _mm256_permute2x128_si256(V1, V2, M) __extension__ ({ \
   __m256i __V1 =3D (V1); \
   __m256i __V2 =3D (V2); \
-  __builtin_shufflevector(__V1, __V2, \
-                          ((M) & 0x3) * 2, \
-                          ((M) & 0x3) * 2 + 1, \
-                          (((M) & 0x30) >> 4) * 2, \
-                          (((M) & 0x30) >> 4) * 2 + 1); })
+  (__m256i)__builtin_ia32_permti256(__V1, __V2, (M)); })
=20
 #define _mm256_extracti128_si256(A, O) __extension__ ({ \
   __m256i __A =3D (A); \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Head=
ers/avxintrin.h
--- a/head/contrib/llvm/tools/clang/lib/Headers/avxintrin.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Headers/avxintrin.h	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -289,37 +289,17 @@
 #define _mm256_permute2f128_pd(V1, V2, M) __extension__ ({ \
   __m256d __V1 =3D (V1); \
   __m256d __V2 =3D (V2); \
-  (__m256d)__builtin_shufflevector((__v4df)__V1, (__v4df)__V2, \
-                                   ((M) & 0x3) * 2, \
-                                   ((M) & 0x3) * 2 + 1, \
-                                   (((M) & 0x30) >> 4) * 2, \
-                                   (((M) & 0x30) >> 4) * 2 + 1); })
+  (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)__V1, (__v4df)__V2, (M)=
); })
=20
 #define _mm256_permute2f128_ps(V1, V2, M) __extension__ ({ \
   __m256 __V1 =3D (V1); \
   __m256 __V2 =3D (V2); \
-  (__m256)__builtin_shufflevector((__v8sf)__V1, (__v8sf)__V2, \
-                                  ((M) & 0x3) * 4, \
-                                  ((M) & 0x3) * 4 + 1, \
-                                  ((M) & 0x3) * 4 + 2, \
-                                  ((M) & 0x3) * 4 + 3, \
-                                  (((M) & 0x30) >> 4) * 4, \
-                                  (((M) & 0x30) >> 4) * 4 + 1, \
-                                  (((M) & 0x30) >> 4) * 4 + 2, \
-                                  (((M) & 0x30) >> 4) * 4 + 3); })
+  (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)__V1, (__v8sf)__V2, (M))=
; })
=20
 #define _mm256_permute2f128_si256(V1, V2, M) __extension__ ({ \
   __m256i __V1 =3D (V1); \
   __m256i __V2 =3D (V2); \
-  (__m256i)__builtin_shufflevector((__v8si)__V1, (__v8si)__V2, \
-                                   ((M) & 0x3) * 4, \
-                                   ((M) & 0x3) * 4 + 1, \
-                                   ((M) & 0x3) * 4 + 2, \
-                                   ((M) & 0x3) * 4 + 3, \
-                                   (((M) & 0x30) >> 4) * 4, \
-                                   (((M) & 0x30) >> 4) * 4 + 1, \
-                                   (((M) & 0x30) >> 4) * 4 + 2, \
-                                   (((M) & 0x30) >> 4) * 4 + 3); })
+  (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)__V1, (__v8si)__V2, (M)=
); })
=20
 /* Vector Blend */
 #define _mm256_blend_pd(V1, V2, M) __extension__ ({ \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/ASTLocation.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/ASTLocation.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-//=3D=3D=3D--- ASTLocation.cpp - A <Decl, Stmt> pair ------------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  ASTLocation is Decl or a Stmt and its immediate Decl parent.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/ASTLocation.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/Stmt.h"
-#include "clang/AST/Expr.h"
-#include "clang/AST/ExprObjC.h"
-using namespace clang;
-using namespace idx;
-
-static Decl *getDeclFromExpr(Stmt *E) {
-  if (DeclRefExpr *RefExpr =3D dyn_cast<DeclRefExpr>(E))
-    return RefExpr->getDecl();
-  if (MemberExpr *ME =3D dyn_cast<MemberExpr>(E))
-    return ME->getMemberDecl();
-  if (ObjCIvarRefExpr *RE =3D dyn_cast<ObjCIvarRefExpr>(E))
-    return RE->getDecl();
-
-  if (CallExpr *CE =3D dyn_cast<CallExpr>(E))
-    return getDeclFromExpr(CE->getCallee());
-  if (CastExpr *CE =3D dyn_cast<CastExpr>(E))
-    return getDeclFromExpr(CE->getSubExpr());
-
-  return 0;
-}
-
-Decl *ASTLocation::getReferencedDecl() {
-  if (isInvalid())
-    return 0;
-
-  switch (getKind()) {
-  case N_Type:
-    return 0;
-  case N_Decl:
-    return D;
-  case N_NamedRef:
-    return NDRef.ND;
-  case N_Stmt:
-    return getDeclFromExpr(Stm);
-  }
-
-  llvm_unreachable("Invalid ASTLocation Kind!");
-}
-
-SourceRange ASTLocation::getSourceRange() const {
-  if (isInvalid())
-    return SourceRange();
-
-  switch (getKind()) {
-  case N_Decl:
-    return D->getSourceRange();
-  case N_Stmt:
-    return Stm->getSourceRange();
-  case N_NamedRef:
-    return SourceRange(AsNamedRef().Loc, AsNamedRef().Loc);
-  case N_Type:
-    return AsTypeLoc().getLocalSourceRange();
-  }
-
-  llvm_unreachable("Invalid ASTLocation Kind!");
-}
-
-void ASTLocation::print(raw_ostream &OS) const {
-  if (isInvalid()) {
-    OS << "<< Invalid ASTLocation >>\n";
-    return;
-  }
- =20
-  ASTContext &Ctx =3D getParentDecl()->getASTContext();
-
-  switch (getKind()) {
-  case N_Decl:
-    OS << "[Decl: " << AsDecl()->getDeclKindName() << " ";
-    if (const NamedDecl *ND =3D dyn_cast<NamedDecl>(AsDecl()))
-      OS << *ND;
-    break;
-
-  case N_Stmt:
-    OS << "[Stmt: " << AsStmt()->getStmtClassName() << " ";
-    AsStmt()->printPretty(OS, Ctx, 0, PrintingPolicy(Ctx.getLangOpts()));
-    break;
-   =20
-  case N_NamedRef:
-    OS << "[NamedRef: " << AsNamedRef().ND->getDeclKindName() << " ";
-    OS << *AsNamedRef().ND;
-    break;
-   =20
-  case N_Type: {
-    QualType T =3D AsTypeLoc().getType();
-    OS << "[Type: " << T->getTypeClassName() << " " << T.getAsString();
-  }
-  }
-
-  OS << "] <";
-
-  SourceRange Range =3D getSourceRange();
-  SourceManager &SourceMgr =3D Ctx.getSourceManager();
-  Range.getBegin().print(OS, SourceMgr);
-  OS << ", ";
-  Range.getEnd().print(OS, SourceMgr);
-  OS << ">\n";
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/ASTVisitor.h
--- a/head/contrib/llvm/tools/clang/lib/Index/ASTVisitor.h	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-//=3D=3D=3D--- ASTVisitor.h - Visitor for an ASTContext ---------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  This file defines the ASTVisitor interface.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_ASTVISITOR_H
-#define LLVM_CLANG_INDEX_ASTVISITOR_H
-
-#include "clang/AST/DeclVisitor.h"
-#include "clang/AST/StmtVisitor.h"
-#include "clang/AST/TypeLocVisitor.h"
-
-namespace clang {
-
-namespace idx {
-
-/// \brief Traverses the full AST, both Decls and Stmts.
-template<typename ImplClass>
-class ASTVisitor : public DeclVisitor<ImplClass>,
-                   public StmtVisitor<ImplClass>,
-                   public TypeLocVisitor<ImplClass> {
-public:
-  ASTVisitor() : CurrentDecl(0) { }
-
-  Decl *CurrentDecl;
-
-  typedef ASTVisitor<ImplClass>  Base;
-  typedef DeclVisitor<ImplClass> BaseDeclVisitor;
-  typedef StmtVisitor<ImplClass> BaseStmtVisitor;
-  typedef TypeLocVisitor<ImplClass> BaseTypeLocVisitor;
-
-  using BaseStmtVisitor::Visit;
-
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
-  // DeclVisitor
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
-
-  void Visit(Decl *D) {
-    Decl *PrevDecl =3D CurrentDecl;
-    CurrentDecl =3D D;
-    BaseDeclVisitor::Visit(D);
-    CurrentDecl =3D PrevDecl;
-  }
- =20
-  void VisitDeclaratorDecl(DeclaratorDecl *D) {
-    BaseDeclVisitor::VisitDeclaratorDecl(D);
-    if (TypeSourceInfo *TInfo =3D D->getTypeSourceInfo())
-      Visit(TInfo->getTypeLoc());
-  }
-
-  void VisitFunctionDecl(FunctionDecl *D) {
-    BaseDeclVisitor::VisitFunctionDecl(D);
-    if (D->isThisDeclarationADefinition())
-      Visit(D->getBody());
-  }
-
-  void VisitObjCMethodDecl(ObjCMethodDecl *D) {
-    BaseDeclVisitor::VisitObjCMethodDecl(D);
-    if (D->getBody())
-      Visit(D->getBody());
-  }
-
-  void VisitBlockDecl(BlockDecl *D) {
-    BaseDeclVisitor::VisitBlockDecl(D);
-    Visit(D->getBody());
-  }
-
-  void VisitVarDecl(VarDecl *D) {
-    BaseDeclVisitor::VisitVarDecl(D);
-    if (Expr *Init =3D D->getInit())
-      Visit(Init);
-  }
-
-  void VisitDecl(Decl *D) {
-    if (isa<FunctionDecl>(D) || isa<ObjCMethodDecl>(D) || isa<BlockDecl>(D=
))
-      return;
-
-    if (DeclContext *DC =3D dyn_cast<DeclContext>(D))
-      static_cast<ImplClass*>(this)->VisitDeclContext(DC);
-  }
-
-  void VisitDeclContext(DeclContext *DC) {
-    for (DeclContext::decl_iterator
-           I =3D DC->decls_begin(), E =3D DC->decls_end(); I !=3D E; ++I)
-      Visit(*I);
-  }
-
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
-  // StmtVisitor
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
-
-  void VisitDeclStmt(DeclStmt *Node) {
-    for (DeclStmt::decl_iterator
-           I =3D Node->decl_begin(), E =3D Node->decl_end(); I !=3D E; ++I)
-      Visit(*I);
-  }
-
-  void VisitBlockExpr(BlockExpr *Node) {
-    // The BlockDecl is also visited by 'VisitDeclContext()'.  No need to =
visit it twice.
-  }
-
-  void VisitStmt(Stmt *Node) {
-    for (Stmt::child_range I =3D Node->children(); I; ++I)
-      if (*I)
-        Visit(*I);
-  }
-
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
-  // TypeLocVisitor
-  //=3D=3D=3D-------------------------------------------------------------=
-------=3D=3D=3D//
- =20
-  void Visit(TypeLoc TL) {
-    for (; TL; TL =3D TL.getNextTypeLoc())
-      BaseTypeLocVisitor::Visit(TL);
-  }
- =20
-  void VisitArrayLoc(ArrayTypeLoc TL) {
-    BaseTypeLocVisitor::VisitArrayTypeLoc(TL);
-    if (TL.getSizeExpr())
-      Visit(TL.getSizeExpr());
-  }
- =20
-  void VisitFunctionTypeLoc(FunctionTypeLoc TL) {
-    BaseTypeLocVisitor::VisitFunctionTypeLoc(TL);
-    for (unsigned i =3D 0; i !=3D TL.getNumArgs(); ++i)
-      Visit(TL.getArg(i));
-  }
-
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/Analyzer.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/Analyzer.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,470 +0,0 @@
-//=3D=3D=3D--- Analyzer.cpp - Analysis for indexing information -------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-// This file implements the Analyzer interface.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/Analyzer.h"
-#include "clang/Index/Entity.h"
-#include "clang/Index/TranslationUnit.h"
-#include "clang/Index/Handlers.h"
-#include "clang/Index/ASTLocation.h"
-#include "clang/Index/GlobalSelector.h"
-#include "clang/Index/DeclReferenceMap.h"
-#include "clang/Index/SelectorMap.h"
-#include "clang/Index/IndexProvider.h"
-#include "clang/AST/DeclObjC.h"
-#include "clang/AST/ExprObjC.h"
-#include "llvm/ADT/SmallSet.h"
-using namespace clang;
-using namespace idx;
-
-namespace  {
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// DeclEntityAnalyzer Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-class DeclEntityAnalyzer : public TranslationUnitHandler {
-  Entity Ent;
-  TULocationHandler &TULocHandler;
-
-public:
-  DeclEntityAnalyzer(Entity ent, TULocationHandler &handler)
-    : Ent(ent), TULocHandler(handler) { }
-
-  virtual void Handle(TranslationUnit *TU) {
-    assert(TU && "Passed null translation unit");
-
-    Decl *D =3D Ent.getDecl(TU->getASTContext());
-    assert(D && "Couldn't resolve Entity");
-
-    for (Decl::redecl_iterator I =3D D->redecls_begin(),
-                               E =3D D->redecls_end(); I !=3D E; ++I)
-      TULocHandler.Handle(TULocation(TU, ASTLocation(*I)));
-  }
-};
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// RefEntityAnalyzer Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-class RefEntityAnalyzer : public TranslationUnitHandler {
-  Entity Ent;
-  TULocationHandler &TULocHandler;
-
-public:
-  RefEntityAnalyzer(Entity ent, TULocationHandler &handler)
-    : Ent(ent), TULocHandler(handler) { }
-
-  virtual void Handle(TranslationUnit *TU) {
-    assert(TU && "Passed null translation unit");
-
-    Decl *D =3D Ent.getDecl(TU->getASTContext());
-    assert(D && "Couldn't resolve Entity");
-    NamedDecl *ND =3D dyn_cast<NamedDecl>(D);
-    if (!ND)
-      return;
-
-    DeclReferenceMap &RefMap =3D TU->getDeclReferenceMap();
-    for (DeclReferenceMap::astlocation_iterator
-           I =3D RefMap.refs_begin(ND), E =3D RefMap.refs_end(ND); I !=3D =
E; ++I)
-      TULocHandler.Handle(TULocation(TU, *I));
-  }
-};
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// RefSelectorAnalyzer Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-/// \brief Accepts an ObjC method and finds all message expressions that t=
his
-/// method may respond to.
-class RefSelectorAnalyzer : public TranslationUnitHandler {
-  Program &Prog;
-  TULocationHandler &TULocHandler;
-
-  // The original ObjCInterface associated with the method.
-  Entity IFaceEnt;
-  GlobalSelector GlobSel;
-  bool IsInstanceMethod;
-
-  /// \brief Super classes of the ObjCInterface.
-  typedef llvm::SmallSet<Entity, 16> EntitiesSetTy;
-  EntitiesSetTy HierarchyEntities;
-
-public:
-  RefSelectorAnalyzer(ObjCMethodDecl *MD,
-                      Program &prog, TULocationHandler &handler)
-    : Prog(prog), TULocHandler(handler) {
-    assert(MD);
-
-    // FIXME: Protocol methods.
-    assert(!isa<ObjCProtocolDecl>(MD->getDeclContext()) &&
-           "Protocol methods not supported yet");
-
-    ObjCInterfaceDecl *IFD =3D MD->getClassInterface();
-    assert(IFD);
-    IFaceEnt =3D Entity::get(IFD, Prog);
-    GlobSel =3D GlobalSelector::get(MD->getSelector(), Prog);
-    IsInstanceMethod =3D MD->isInstanceMethod();
-
-    for (ObjCInterfaceDecl *Cls =3D IFD->getSuperClass();
-           Cls; Cls =3D Cls->getSuperClass())
-      HierarchyEntities.insert(Entity::get(Cls, Prog));
-  }
-
-  virtual void Handle(TranslationUnit *TU) {
-    assert(TU && "Passed null translation unit");
-
-    ASTContext &Ctx =3D TU->getASTContext();
-    // Null means it doesn't exist in this translation unit.
-    ObjCInterfaceDecl *IFace =3D
-        cast_or_null<ObjCInterfaceDecl>(IFaceEnt.getDecl(Ctx));
-    Selector Sel =3D GlobSel.getSelector(Ctx);
-
-    SelectorMap &SelMap =3D TU->getSelectorMap();
-    for (SelectorMap::astlocation_iterator
-           I =3D SelMap.refs_begin(Sel), E =3D SelMap.refs_end(Sel); I !=
=3D E; ++I) {
-      if (ValidReference(*I, IFace))
-        TULocHandler.Handle(TULocation(TU, *I));
-    }
-  }
-
-  /// \brief Determines whether the given message expression is likely to =
end
-  /// up at the given interface decl.
-  ///
-  /// It returns true "eagerly", meaning it will return false only if it c=
an
-  /// "prove" statically that the interface cannot accept this message.
-  bool ValidReference(ASTLocation ASTLoc, ObjCInterfaceDecl *IFace) {
-    assert(ASTLoc.isStmt());
-
-    // FIXME: Finding @selector references should be through another Analy=
zer
-    // method, like FindSelectors.
-    if (isa<ObjCSelectorExpr>(ASTLoc.AsStmt()))
-      return false;
-
-    ObjCInterfaceDecl *MsgD =3D 0;
-    ObjCMessageExpr *Msg =3D cast<ObjCMessageExpr>(ASTLoc.AsStmt());
-
-    switch (Msg->getReceiverKind()) {
-    case ObjCMessageExpr::Instance: {
-      const ObjCObjectPointerType *OPT =3D
-          Msg->getInstanceReceiver()->getType()->getAsObjCInterfacePointer=
Type();
-
-      // Can be anything! Accept it as a possibility..
-      if (!OPT || OPT->isObjCIdType() || OPT->isObjCQualifiedIdType())
-        return true;
-
-      // Expecting class method.
-      if (OPT->isObjCClassType() || OPT->isObjCQualifiedClassType())
-        return !IsInstanceMethod;
-
-      MsgD =3D OPT->getInterfaceDecl();
-      assert(MsgD);
-
-      // Should be an instance method.
-      if (!IsInstanceMethod)
-        return false;
-      break;
-    }
-
-    case ObjCMessageExpr::Class: {
-      // Expecting class method.
-      if (IsInstanceMethod)
-        return false;
-
-      MsgD =3D Msg->getClassReceiver()->getAs<ObjCObjectType>()->getInterf=
ace();
-      break;
-    }
-
-    case ObjCMessageExpr::SuperClass:
-      // Expecting class method.
-      if (IsInstanceMethod)
-        return false;
-
-      MsgD =3D Msg->getSuperType()->getAs<ObjCObjectType>()->getInterface(=
);
-      break;
-
-    case ObjCMessageExpr::SuperInstance:
-      // Expecting instance method.
-      if (!IsInstanceMethod)
-        return false;
-
-      MsgD =3D Msg->getSuperType()->getAs<ObjCObjectPointerType>()
-                                                          ->getInterfaceDe=
cl();
-      break;
-    }
-
-    assert(MsgD);
-
-    // Same interface ? We have a winner!
-    if (declaresSameEntity(MsgD, IFace))
-      return true;
-
-    // If the message interface is a superclass of the original interface,
-    // accept this message as a possibility.
-    if (HierarchyEntities.count(Entity::get(MsgD, Prog)))
-      return true;
-
-    // If the message interface is a subclass of the original interface, a=
ccept
-    // the message unless there is a subclass in the hierarchy that will
-    // "steal" the message (thus the message "will go" to the subclass and=
 not
-    /// the original interface).
-    if (IFace) {
-      Selector Sel =3D Msg->getSelector();
-      for (ObjCInterfaceDecl *Cls =3D MsgD; Cls; Cls =3D Cls->getSuperClas=
s()) {
-        if (declaresSameEntity(Cls, IFace))
-          return true;
-        if (Cls->getMethod(Sel, IsInstanceMethod))
-          return false;
-      }
-    }
-
-    // The interfaces are unrelated, don't accept the message.
-    return false;
-  }
-};
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// MessageAnalyzer Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-/// \brief Accepts an ObjC message expression and finds all methods that m=
ay
-/// respond to it.
-class MessageAnalyzer : public TranslationUnitHandler {
-  Program &Prog;
-  TULocationHandler &TULocHandler;
-
-  // The ObjCInterface associated with the message. Can be null/invalid.
-  Entity MsgIFaceEnt;
-  GlobalSelector GlobSel;
-  bool CanBeInstanceMethod;
-  bool CanBeClassMethod;
-
-  /// \brief Super classes of the ObjCInterface.
-  typedef llvm::SmallSet<Entity, 16> EntitiesSetTy;
-  EntitiesSetTy HierarchyEntities;
-
-  /// \brief The interface in the message interface hierarchy that "interc=
epts"
-  /// the selector.
-  Entity ReceiverIFaceEnt;
-
-public:
-  MessageAnalyzer(ObjCMessageExpr *Msg,
-                  Program &prog, TULocationHandler &handler)
-    : Prog(prog), TULocHandler(handler),
-      CanBeInstanceMethod(false),
-      CanBeClassMethod(false) {
-
-    assert(Msg);
-
-    ObjCInterfaceDecl *MsgD =3D 0;
-
-    while (true) {
-      switch (Msg->getReceiverKind()) {
-      case ObjCMessageExpr::Instance: {
-        const ObjCObjectPointerType *OPT =3D
-          Msg->getInstanceReceiver()->getType()
-                                      ->getAsObjCInterfacePointerType();
-
-        if (!OPT || OPT->isObjCIdType() || OPT->isObjCQualifiedIdType()) {
-          CanBeInstanceMethod =3D CanBeClassMethod =3D true;
-          break;
-        }
-
-        if (OPT->isObjCClassType() || OPT->isObjCQualifiedClassType()) {
-          CanBeClassMethod =3D true;
-          break;
-        }
-
-        MsgD =3D OPT->getInterfaceDecl();
-        assert(MsgD);
-        CanBeInstanceMethod =3D true;
-        break;
-      }
-       =20
-      case ObjCMessageExpr::Class:
-        CanBeClassMethod =3D true;
-        MsgD =3D Msg->getClassReceiver()->getAs<ObjCObjectType>()->getInte=
rface();
-        break;
-
-      case ObjCMessageExpr::SuperClass:
-        CanBeClassMethod =3D true;
-        MsgD =3D Msg->getSuperType()->getAs<ObjCObjectType>()->getInterfac=
e();
-        break;
-
-      case ObjCMessageExpr::SuperInstance:
-        CanBeInstanceMethod =3D true;
-        MsgD =3D Msg->getSuperType()->getAs<ObjCObjectPointerType>()
-                                                           ->getInterfaceD=
ecl();
-        break;
-      }
-    }
-
-    assert(CanBeInstanceMethod || CanBeClassMethod);
-
-    Selector sel =3D Msg->getSelector();
-    assert(!sel.isNull());
-
-    MsgIFaceEnt =3D Entity::get(MsgD, Prog);
-    GlobSel =3D GlobalSelector::get(sel, Prog);
-
-    if (MsgD) {
-      for (ObjCInterfaceDecl *Cls =3D MsgD->getSuperClass();
-             Cls; Cls =3D Cls->getSuperClass())
-        HierarchyEntities.insert(Entity::get(Cls, Prog));
-
-      // Find the interface in the hierarchy that "receives" the message.
-      for (ObjCInterfaceDecl *Cls =3D MsgD; Cls; Cls =3D Cls->getSuperClas=
s()) {
-        bool isReceiver =3D false;
-
-        ObjCInterfaceDecl::lookup_const_iterator Meth, MethEnd;
-        for (llvm::tie(Meth, MethEnd) =3D Cls->lookup(sel);
-               Meth !=3D MethEnd; ++Meth) {
-          if (ObjCMethodDecl *MD =3D dyn_cast<ObjCMethodDecl>(*Meth))
-            if ((MD->isInstanceMethod() && CanBeInstanceMethod) ||
-                (MD->isClassMethod()    && CanBeClassMethod)) {
-              isReceiver =3D true;
-              break;
-            }
-        }
-
-        if (isReceiver) {
-          ReceiverIFaceEnt =3D Entity::get(Cls, Prog);
-          break;
-        }
-      }
-    }
-  }
-
-  virtual void Handle(TranslationUnit *TU) {
-    assert(TU && "Passed null translation unit");
-    ASTContext &Ctx =3D TU->getASTContext();
-
-    // Null means it doesn't exist in this translation unit or there was no
-    // interface that was determined to receive the original message.
-    ObjCInterfaceDecl *ReceiverIFace =3D
-        cast_or_null<ObjCInterfaceDecl>(ReceiverIFaceEnt.getDecl(Ctx));
-
-    // No subclass for the original receiver interface, so it remains the
-    // receiver.
-    if (ReceiverIFaceEnt.isValid() && ReceiverIFace =3D=3D 0)
-      return;
-
-    // Null means it doesn't exist in this translation unit or there was no
-    // interface associated with the message in the first place.
-    ObjCInterfaceDecl *MsgIFace =3D
-        cast_or_null<ObjCInterfaceDecl>(MsgIFaceEnt.getDecl(Ctx));
-
-    Selector Sel =3D GlobSel.getSelector(Ctx);
-    SelectorMap &SelMap =3D TU->getSelectorMap();
-    for (SelectorMap::method_iterator
-           I =3D SelMap.methods_begin(Sel), E =3D SelMap.methods_end(Sel);
-           I !=3D E; ++I) {
-      ObjCMethodDecl *D =3D *I;
-      if (ValidMethod(D, MsgIFace, ReceiverIFace)) {
-        for (ObjCMethodDecl::redecl_iterator
-               RI =3D D->redecls_begin(), RE =3D D->redecls_end(); RI !=3D=
 RE; ++RI)
-          TULocHandler.Handle(TULocation(TU, ASTLocation(*RI)));
-      }
-    }
-  }
-
-  /// \brief Determines whether the given method is likely to accept the
-  /// original message.
-  ///
-  /// It returns true "eagerly", meaning it will return false only if it c=
an
-  /// "prove" statically that the method cannot accept the original messag=
e.
-  bool ValidMethod(ObjCMethodDecl *D, ObjCInterfaceDecl *MsgIFace,
-                   ObjCInterfaceDecl *ReceiverIFace) {
-    assert(D);
-
-    // FIXME: Protocol methods ?
-    if (isa<ObjCProtocolDecl>(D->getDeclContext()))
-      return false;
-
-    // No specific interface associated with the message. Can be anything.
-    if (MsgIFaceEnt.isInvalid())
-      return true;
-
-    if ((!CanBeInstanceMethod && D->isInstanceMethod()) ||
-        (!CanBeClassMethod    && D->isClassMethod()))
-      return false;
-
-    ObjCInterfaceDecl *IFace =3D D->getClassInterface();
-    assert(IFace);
-
-    // If the original message interface is the same or a superclass of the
-    // given interface, accept the method as a possibility.
-    if (MsgIFace && MsgIFace->isSuperClassOf(IFace))
-      return true;
-
-    if (ReceiverIFace) {
-      // The given interface, "overrides" the receiver.
-      if (ReceiverIFace->isSuperClassOf(IFace))
-        return true;
-    } else {
-      // No receiver was found for the original message.
-      assert(ReceiverIFaceEnt.isInvalid());
-
-      // If the original message interface is a subclass of the given inte=
rface,
-      // accept the message.
-      if (HierarchyEntities.count(Entity::get(IFace, Prog)))
-        return true;
-    }
-
-    // The interfaces are unrelated, or the receiver interface wasn't
-    // "overriden".
-    return false;
-  }
-};
-
-} // end anonymous namespace
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// Analyzer Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-void Analyzer::FindDeclarations(Decl *D, TULocationHandler &Handler) {
-  assert(D && "Passed null declaration");
-  Entity Ent =3D Entity::get(D, Prog);
-  if (Ent.isInvalid())
-    return;
-
-  DeclEntityAnalyzer DEA(Ent, Handler);
-  Idxer.GetTranslationUnitsFor(Ent, DEA);
-}
-
-void Analyzer::FindReferences(Decl *D, TULocationHandler &Handler) {
-  assert(D && "Passed null declaration");
-  if (ObjCMethodDecl *MD =3D dyn_cast<ObjCMethodDecl>(D)) {
-    RefSelectorAnalyzer RSA(MD, Prog, Handler);
-    GlobalSelector Sel =3D GlobalSelector::get(MD->getSelector(), Prog);
-    Idxer.GetTranslationUnitsFor(Sel, RSA);
-    return;
-  }
-
-  Entity Ent =3D Entity::get(D, Prog);
-  if (Ent.isInvalid())
-    return;
-
-  RefEntityAnalyzer REA(Ent, Handler);
-  Idxer.GetTranslationUnitsFor(Ent, REA);
-}
-
-/// \brief Find methods that may respond to the given message and pass them
-/// to Handler.
-void Analyzer::FindObjCMethods(ObjCMessageExpr *Msg,
-                               TULocationHandler &Handler) {
-  assert(Msg);
-  MessageAnalyzer MsgAnalyz(Msg, Prog, Handler);
-  GlobalSelector GlobSel =3D GlobalSelector::get(Msg->getSelector(), Prog);
-  Idxer.GetTranslationUnitsFor(GlobSel, MsgAnalyz);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/DeclReferenceMap.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/DeclReferenceMap.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-//=3D=3D=3D--- DeclReferenceMap.cpp - Map Decls to their references ------=
-------=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  DeclReferenceMap creates a mapping from Decls to the ASTLocations that
-//  reference them.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/DeclReferenceMap.h"
-#include "clang/Index/ASTLocation.h"
-#include "ASTVisitor.h"
-using namespace clang;
-using namespace idx;
-
-namespace {
-
-class RefMapper : public ASTVisitor<RefMapper> {
-  DeclReferenceMap::MapTy ⤅
-
-public:
-  RefMapper(DeclReferenceMap::MapTy &map) : Map(map) { }
-
-  void VisitDeclRefExpr(DeclRefExpr *Node);
-  void VisitMemberExpr(MemberExpr *Node);
-  void VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node);
- =20
-  void VisitTypedefTypeLoc(TypedefTypeLoc TL);
-  void VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL);
-};
-
-} // anonymous namespace
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// RefMapper Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-void RefMapper::VisitDeclRefExpr(DeclRefExpr *Node) {
-  NamedDecl *PrimD =3D cast<NamedDecl>(Node->getDecl()->getCanonicalDecl()=
);
-  Map.insert(std::make_pair(PrimD, ASTLocation(CurrentDecl, Node)));
-}
-
-void RefMapper::VisitMemberExpr(MemberExpr *Node) {
-  NamedDecl *PrimD =3D cast<NamedDecl>(Node->getMemberDecl()->getCanonical=
Decl());
-  Map.insert(std::make_pair(PrimD, ASTLocation(CurrentDecl, Node)));
-}
-
-void RefMapper::VisitObjCIvarRefExpr(ObjCIvarRefExpr *Node) {
-  Map.insert(std::make_pair(Node->getDecl(), ASTLocation(CurrentDecl, Node=
)));
-}
-
-void RefMapper::VisitTypedefTypeLoc(TypedefTypeLoc TL) {
-  NamedDecl *ND =3D TL.getTypedefNameDecl();
-  Map.insert(std::make_pair(ND, ASTLocation(CurrentDecl, ND, TL.getNameLoc=
())));
-}
-
-void RefMapper::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) {
-  NamedDecl *ND =3D TL.getIFaceDecl();
-  Map.insert(std::make_pair(ND, ASTLocation(CurrentDecl, ND, TL.getNameLoc=
())));
-}
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// DeclReferenceMap Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-DeclReferenceMap::DeclReferenceMap(ASTContext &Ctx) {
-  RefMapper(Map).Visit(Ctx.getTranslationUnitDecl());
-}
-
-DeclReferenceMap::astlocation_iterator
-DeclReferenceMap::refs_begin(NamedDecl *D) const {
-  NamedDecl *Prim =3D cast<NamedDecl>(D->getCanonicalDecl());
-  return astlocation_iterator(Map.lower_bound(Prim));
-}
-
-DeclReferenceMap::astlocation_iterator
-DeclReferenceMap::refs_end(NamedDecl *D) const {
-  NamedDecl *Prim =3D cast<NamedDecl>(D->getCanonicalDecl());
-  return astlocation_iterator(Map.upper_bound(Prim));
-}
-
-bool DeclReferenceMap::refs_empty(NamedDecl *D) const {
-  NamedDecl *Prim =3D cast<NamedDecl>(D->getCanonicalDecl());
-  return refs_begin(Prim) =3D=3D refs_end(Prim);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/Entity.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/Entity.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-//=3D=3D=3D--- Entity.cpp - Cross-translation-unit "token" for decls -----=
-------=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Entity is a ASTContext-independent way to refer to declarations that a=
re
-//  visible across translation units.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "EntityImpl.h"
-#include "ProgramImpl.h"
-#include "clang/Index/Program.h"
-#include "clang/Index/GlobalSelector.h"
-#include "clang/AST/Decl.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/DeclVisitor.h"
-using namespace clang;
-using namespace idx;
-
-// FIXME: Entity is really really basic currently, mostly written to work
-// on variables and functions. Should support types and other decls eventu=
ally..
-
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// EntityGetter
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-namespace clang {
-namespace idx {
-
-/// \brief Gets the Entity associated with a Decl.
-class EntityGetter : public DeclVisitor<EntityGetter, Entity> {
-  Program &Prog;
-  ProgramImpl &ProgImpl;
-
-public:
-  EntityGetter(Program &prog, ProgramImpl &progImpl)
-    : Prog(prog), ProgImpl(progImpl) { }
-
-  // Get an Entity.
-  Entity getEntity(Entity Parent, DeclarationName Name,=20
-                   unsigned IdNS, bool isObjCInstanceMethod);
-
-  // Get an Entity associated with the name in the global namespace.
-  Entity getGlobalEntity(StringRef Name);
-
-  Entity VisitNamedDecl(NamedDecl *D);
-  Entity VisitVarDecl(VarDecl *D);
-  Entity VisitFieldDecl(FieldDecl *D);
-  Entity VisitFunctionDecl(FunctionDecl *D);
-  Entity VisitTypeDecl(TypeDecl *D);
-};
-
-}
-}
-
-Entity EntityGetter::getEntity(Entity Parent, DeclarationName Name,=20
-                               unsigned IdNS, bool isObjCInstanceMethod) {
-  llvm::FoldingSetNodeID ID;
-  EntityImpl::Profile(ID, Parent, Name, IdNS, isObjCInstanceMethod);
-
-  ProgramImpl::EntitySetTy &Entities =3D ProgImpl.getEntities();
-  void *InsertPos =3D 0;
-  if (EntityImpl *Ent =3D Entities.FindNodeOrInsertPos(ID, InsertPos))
-    return Entity(Ent);
-
-  void *Buf =3D ProgImpl.Allocate(sizeof(EntityImpl));
-  EntityImpl *New =3D
-      new (Buf) EntityImpl(Parent, Name, IdNS, isObjCInstanceMethod);
-  Entities.InsertNode(New, InsertPos);
-
-  return Entity(New);
-}
-
-Entity EntityGetter::getGlobalEntity(StringRef Name) {
-  IdentifierInfo *II =3D &ProgImpl.getIdents().get(Name);
-  DeclarationName GlobName(II);
-  unsigned IdNS =3D Decl::IDNS_Ordinary;
-  return getEntity(Entity(), GlobName, IdNS, false);
-}
-
-Entity EntityGetter::VisitNamedDecl(NamedDecl *D) {
-  Entity Parent;
-  if (!D->getDeclContext()->isTranslationUnit()) {
-    Parent =3D Visit(cast<Decl>(D->getDeclContext()));
-    // FIXME: Anonymous structs ?
-    if (Parent.isInvalid())
-      return Entity();
-  }
-  if (Parent.isValid() && Parent.isInternalToTU())
-    return Entity(D);
-
-  // FIXME: Only works for DeclarationNames that are identifiers and selec=
tors.
-  // Treats other DeclarationNames as internal Decls for now..
-
-  DeclarationName LocalName =3D D->getDeclName();
-  if (!LocalName)
-    return Entity(D);
-
-  DeclarationName GlobName;
-
-  if (IdentifierInfo *II =3D LocalName.getAsIdentifierInfo()) {
-    IdentifierInfo *GlobII =3D &ProgImpl.getIdents().get(II->getName());
-    GlobName =3D DeclarationName(GlobII);
-  } else {
-    Selector LocalSel =3D LocalName.getObjCSelector();
-
-    // Treats other DeclarationNames as internal Decls for now..
-    if (LocalSel.isNull())
-      return Entity(D);
-
-    Selector GlobSel =3D
-        (uintptr_t)GlobalSelector::get(LocalSel, Prog).getAsOpaquePtr();
-    GlobName =3D DeclarationName(GlobSel);
-  }
-
-  assert(GlobName);
-
-  unsigned IdNS =3D D->getIdentifierNamespace();
-
-  ObjCMethodDecl *MD =3D dyn_cast<ObjCMethodDecl>(D);
-  bool isObjCInstanceMethod =3D MD && MD->isInstanceMethod();
-  return getEntity(Parent, GlobName, IdNS, isObjCInstanceMethod);
-}
-
-Entity EntityGetter::VisitVarDecl(VarDecl *D) {
-  // Local variables have no linkage, make invalid Entities.
-  if (D->hasLocalStorage())
-    return Entity();
-
-  // If it's static it cannot be referred to by another translation unit.
-  if (D->getStorageClass() =3D=3D SC_Static)
-    return Entity(D);
-
-  return VisitNamedDecl(D);
-}
-
-Entity EntityGetter::VisitFunctionDecl(FunctionDecl *D) {
-  // If it's static it cannot be referred to by another translation unit.
-  if (D->getStorageClass() =3D=3D SC_Static)
-    return Entity(D);
-
-  return VisitNamedDecl(D);
-}
-
-Entity EntityGetter::VisitFieldDecl(FieldDecl *D) {
-  // Make FieldDecl an invalid Entity since it has no linkage.
-  return Entity();
-}
-
-Entity EntityGetter::VisitTypeDecl(TypeDecl *D) {
-  // Although in C++ class name has external linkage, usually the definiti=
on of
-  // the class is available in the same translation unit when it's needed.=
 So we
-  // make all of them invalid Entity.
-  return Entity();
-}
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// EntityImpl Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-Decl *EntityImpl::getDecl(ASTContext &AST) {
-  DeclContext *DC =3D
-    Parent.isInvalid() ? AST.getTranslationUnitDecl()
-                       : cast<DeclContext>(Parent.getDecl(AST));
-  if (!DC)
-    return 0; // Couldn't get the parent context.
-
-  DeclarationName LocalName;
-
-  if (IdentifierInfo *GlobII =3D Name.getAsIdentifierInfo()) {
-    IdentifierInfo &II =3D AST.Idents.get(GlobII->getName());
-    LocalName =3D DeclarationName(&II);
-  } else {
-    Selector GlobSel =3D Name.getObjCSelector();
-    assert(!GlobSel.isNull() && "A not handled yet declaration name");
-    GlobalSelector GSel =3D
-        GlobalSelector::getFromOpaquePtr(GlobSel.getAsOpaquePtr());
-    LocalName =3D GSel.getSelector(AST);
-  }
-
-  assert(LocalName);
-
-  DeclContext::lookup_result Res =3D DC->lookup(LocalName);
-  for (DeclContext::lookup_iterator I =3D Res.first, E =3D Res.second; I!=
=3DE; ++I) {
-    Decl *D =3D *I;
-    if (D->getIdentifierNamespace() =3D=3D IdNS) {
-      if (ObjCMethodDecl *MD =3D dyn_cast<ObjCMethodDecl>(D)) {
-        if (MD->isInstanceMethod() =3D=3D IsObjCInstanceMethod)
-          return MD;
-      } else
-        return D;
-    }
-  }
-
-  return 0; // Failed to find a decl using this Entity.
-}
-
-/// \brief Get an Entity associated with the given Decl.
-/// \returns Null if an Entity cannot refer to this Decl.
-Entity EntityImpl::get(Decl *D, Program &Prog, ProgramImpl &ProgImpl) {
-  assert(D && "Passed null Decl");
-  return EntityGetter(Prog, ProgImpl).Visit(D);
-}
-
-/// \brief Get an Entity associated with a global name.
-Entity EntityImpl::get(StringRef Name, Program &Prog,=20
-                       ProgramImpl &ProgImpl) {
-  return EntityGetter(Prog, ProgImpl).getGlobalEntity(Name);
-}
-
-std::string EntityImpl::getPrintableName() {
-  return Name.getAsString();
-}
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// Entity Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-Entity::Entity(Decl *D) : Val(D->getCanonicalDecl()) { }
-
-/// \brief Find the Decl that can be referred to by this entity.
-Decl *Entity::getDecl(ASTContext &AST) const {
-  if (isInvalid())
-    return 0;
-
-  if (Decl *D =3D Val.dyn_cast<Decl *>())
-    // Check that the passed AST is actually the one that this Decl belong=
s to.
-    return (&D->getASTContext() =3D=3D &AST) ? D : 0;
-
-  return Val.get<EntityImpl *>()->getDecl(AST);
-}
-
-std::string Entity::getPrintableName() const {
-  if (isInvalid())
-    return "<< Invalid >>";
-
-  if (Decl *D =3D Val.dyn_cast<Decl *>()) {
-    if (NamedDecl *ND =3D dyn_cast<NamedDecl>(D))
-      return ND->getNameAsString();
-    else
-      return std::string();
-  }
-
-  return Val.get<EntityImpl *>()->getPrintableName();
-}
-
-/// \brief Get an Entity associated with the given Decl.
-/// \returns Null if an Entity cannot refer to this Decl.
-Entity Entity::get(Decl *D, Program &Prog) {
-  if (D =3D=3D 0)
-    return Entity();
-  ProgramImpl &ProgImpl =3D *static_cast<ProgramImpl*>(Prog.Impl);
-  return EntityImpl::get(D, Prog, ProgImpl);
-}
-
-Entity Entity::get(StringRef Name, Program &Prog) {
-  ProgramImpl &ProgImpl =3D *static_cast<ProgramImpl*>(Prog.Impl);
-  return EntityImpl::get(Name, Prog, ProgImpl);
-}
-
-unsigned
-llvm::DenseMapInfo<Entity>::getHashValue(Entity E) {
-  return DenseMapInfo<void*>::getHashValue(E.getAsOpaquePtr());
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/EntityImpl.h
--- a/head/contrib/llvm/tools/clang/lib/Index/EntityImpl.h	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-//=3D=3D=3D--- EntityImpl.h - Internal Entity implementation---------*- C+=
+ -*-=3D=3D=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Internal implementation for the Entity class
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_ENTITYIMPL_H
-#define LLVM_CLANG_INDEX_ENTITYIMPL_H
-
-#include "clang/Index/Entity.h"
-#include "clang/AST/DeclarationName.h"
-#include "llvm/ADT/FoldingSet.h"
-#include "llvm/ADT/StringSet.h"
-
-namespace clang {
-
-namespace idx {
-  class ProgramImpl;
-
-class EntityImpl : public llvm::FoldingSetNode {
-  Entity Parent;
-  DeclarationName Name;
-
-  /// \brief Identifier namespace.
-  unsigned IdNS;
-
-  /// \brief If Name is a selector, this keeps track whether it's for an
-  /// instance method.
-  bool IsObjCInstanceMethod;
-
-public:
-  EntityImpl(Entity parent, DeclarationName name, unsigned idNS,
-             bool isObjCInstanceMethod)
-    : Parent(parent), Name(name), IdNS(idNS),
-      IsObjCInstanceMethod(isObjCInstanceMethod) { }
-
-  /// \brief Find the Decl that can be referred to by this entity.
-  Decl *getDecl(ASTContext &AST);
-
-  /// \brief Get an Entity associated with the given Decl.
-  /// \returns Null if an Entity cannot refer to this Decl.
-  static Entity get(Decl *D, Program &Prog, ProgramImpl &ProgImpl);
-  static Entity get(StringRef Name, Program &Prog, ProgramImpl &ProgImpl);
-
-  std::string getPrintableName();
-
-  void Profile(llvm::FoldingSetNodeID &ID) const {
-    Profile(ID, Parent, Name, IdNS, IsObjCInstanceMethod);
-  }
-  static void Profile(llvm::FoldingSetNodeID &ID, Entity Parent,
-                      DeclarationName Name, unsigned IdNS,
-                      bool isObjCInstanceMethod) {
-    ID.AddPointer(Parent.getAsOpaquePtr());
-    ID.AddPointer(Name.getAsOpaquePtr());
-    ID.AddInteger(IdNS);
-    ID.AddBoolean(isObjCInstanceMethod);
-  }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/GlobalCallGraph.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/GlobalCallGraph.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-//=3D=3D GlobalCallGraph.cpp - Call graph building ------------------*- C+=
+ -*--=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  This file defined the CallGraph and CGBuilder classes.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/GlobalCallGraph.h"
-
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/StmtVisitor.h"
-
-#include "llvm/Support/GraphWriter.h"
-
-using namespace clang::idx;
-using clang::FunctionDecl;
-using clang::DeclContext;
-using clang::ASTContext;
-
-namespace {
-class CGBuilder : public StmtVisitor<CGBuilder> {
-
-  CallGraph &G;
-  FunctionDecl *FD;
-
-  Entity CallerEnt;
-
-  CallGraphNode *CallerNode;
-
-public:
-  CGBuilder(CallGraph &g, FunctionDecl *fd, Entity E, CallGraphNode *N)
-    : G(g), FD(fd), CallerEnt(E), CallerNode(N) {}
-
-  void VisitStmt(Stmt *S) { VisitChildren(S); }
-
-  void VisitCallExpr(CallExpr *CE);
-
-  void VisitChildren(Stmt *S) {
-    for (Stmt::child_range I =3D S->children(); I; ++I)
-      if (*I)
-        static_cast<CGBuilder*>(this)->Visit(*I);
-  }
-};
-}
-
-void CGBuilder::VisitCallExpr(CallExpr *CE) {
-  if (FunctionDecl *CalleeDecl =3D CE->getDirectCallee()) {
-    Entity Ent =3D Entity::get(CalleeDecl, G.getProgram());
-    CallGraphNode *CalleeNode =3D G.getOrInsertFunction(Ent);
-    CallerNode->addCallee(ASTLocation(FD, CE), CalleeNode);
-  }
-}
-
-CallGraph::CallGraph(Program &P) : Prog(P), Root(0) {
-  ExternalCallingNode =3D getOrInsertFunction(Entity());
-}
-
-CallGraph::~CallGraph() {
-  if (!FunctionMap.empty()) {
-    for (FunctionMapTy::iterator I =3D FunctionMap.begin(), E =3D Function=
Map.end();
-        I !=3D E; ++I)
-      delete I->second;
-    FunctionMap.clear();
-  }
-}
-
-void CallGraph::addTU(ASTContext& Ctx) {
-  DeclContext *DC =3D Ctx.getTranslationUnitDecl();
-  for (DeclContext::decl_iterator I =3D DC->decls_begin(), E =3D DC->decls=
_end();
-       I !=3D E; ++I) {
-
-    if (FunctionDecl *FD =3D dyn_cast<FunctionDecl>(*I)) {
-      if (FD->doesThisDeclarationHaveABody()) {
-        // Set caller's ASTContext.
-        Entity Ent =3D Entity::get(FD, Prog);
-        CallGraphNode *Node =3D getOrInsertFunction(Ent);
-        CallerCtx[Node] =3D &Ctx;
-
-        // If this function has external linkage, anything could call it.
-        if (FD->isGlobal())
-          ExternalCallingNode->addCallee(idx::ASTLocation(), Node);
-
-        // Set root node to 'main' function.
-        if (FD->getNameAsString() =3D=3D "main")
-          Root =3D Node;
-
-        CGBuilder builder(*this, FD, Ent, Node);
-        builder.Visit(FD->getBody());
-      }
-    }
-  }
-}
-
-CallGraphNode *CallGraph::getOrInsertFunction(Entity F) {
-  CallGraphNode *&Node =3D FunctionMap[F];
-  if (Node)
-    return Node;
-
-  return Node =3D new CallGraphNode(F);
-}
-
-Decl *CallGraph::getDecl(CallGraphNode *Node) {
-  // Get the function's context.
-  ASTContext *Ctx =3D CallerCtx[Node];
-
-  return Node->getDecl(*Ctx);
-}
-
-void CallGraph::print(raw_ostream &os) {
-  for (iterator I =3D begin(), E =3D end(); I !=3D E; ++I) {
-    if (I->second->hasCallee()) {
-      os << "function: " << I->first.getPrintableName()
-         << " calls:\n";
-      for (CallGraphNode::iterator CI =3D I->second->begin(),
-             CE =3D I->second->end(); CI !=3D CE; ++CI) {
-        os << "    " << CI->second->getName();
-      }
-      os << '\n';
-    }
-  }
-}
-
-void CallGraph::dump() {
-  print(llvm::errs());
-}
-
-void CallGraph::ViewCallGraph() const {
-  llvm::ViewGraph(*this, "CallGraph");
-}
-
-namespace llvm {
-
-template <>
-struct DOTGraphTraits<CallGraph> : public DefaultDOTGraphTraits {
-
-  DOTGraphTraits (bool isSimple=3Dfalse) : DefaultDOTGraphTraits(isSimple)=
 {}
-
-  static std::string getNodeLabel(const CallGraphNode *Node,
-                                  const CallGraph &CG) {
-    return Node->getName();
-
-  }
-
-};
-
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/GlobalSelector.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/GlobalSelector.cpp	Wed Jul 25=
 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-//=3D=3D=3D-- GlobalSelector.cpp - Cross-translation-unit "token" for sele=
ctors -=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  GlobalSelector is a ASTContext-independent way to refer to selectors.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/GlobalSelector.h"
-#include "ProgramImpl.h"
-#include "clang/Index/Program.h"
-#include "clang/AST/ASTContext.h"
-using namespace clang;
-using namespace idx;
-
-/// \brief Get the ASTContext-specific selector.
-Selector GlobalSelector::getSelector(ASTContext &AST) const {
-  if (isInvalid())
-    return Selector();
-
-  Selector GlobSel =3D Selector(reinterpret_cast<uintptr_t>(Val));
-
-  SmallVector<IdentifierInfo *, 8> Ids;
-  for (unsigned i =3D 0, e =3D GlobSel.isUnarySelector() ? 1 : GlobSel.get=
NumArgs();
-         i !=3D e; ++i) {
-    IdentifierInfo *GlobII =3D GlobSel.getIdentifierInfoForSlot(i);
-    IdentifierInfo *II =3D &AST.Idents.get(GlobII->getName());
-    Ids.push_back(II);
-  }
-
-  return AST.Selectors.getSelector(GlobSel.getNumArgs(), Ids.data());
-}
-
-/// \brief Get a printable name for debugging purpose.
-std::string GlobalSelector::getPrintableName() const {
-  if (isInvalid())
-    return "<< Invalid >>";
-
-  Selector GlobSel =3D Selector(reinterpret_cast<uintptr_t>(Val));
-  return GlobSel.getAsString();
-}
-
-/// \brief Get a GlobalSelector for the ASTContext-specific selector.
-GlobalSelector GlobalSelector::get(Selector Sel, Program &Prog) {
-  if (Sel.isNull())
-    return GlobalSelector();
-
-  ProgramImpl &ProgImpl =3D *static_cast<ProgramImpl*>(Prog.Impl);
-
-  SmallVector<IdentifierInfo *, 8> Ids;
-  for (unsigned i =3D 0, e =3D Sel.isUnarySelector() ? 1 : Sel.getNumArgs(=
);
-         i !=3D e; ++i) {
-    IdentifierInfo *II =3D Sel.getIdentifierInfoForSlot(i);
-    IdentifierInfo *GlobII =3D &ProgImpl.getIdents().get(II->getName());
-    Ids.push_back(GlobII);
-  }
-
-  Selector GlobSel =3D ProgImpl.getSelectors().getSelector(Sel.getNumArgs(=
),
-                                                         Ids.data());
-  return GlobalSelector(GlobSel.getAsOpaquePtr());
-}
-
-unsigned
-llvm::DenseMapInfo<GlobalSelector>::getHashValue(GlobalSelector Sel) {
-  return DenseMapInfo<void*>::getHashValue(Sel.getAsOpaquePtr());
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/Handlers.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/Handlers.cpp	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-//=3D=3D=3D--- Handlers.cpp - Interfaces for receiving information ----*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Abstract interfaces for receiving information.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/Handlers.h"
-#include "clang/Index/Entity.h"
-using namespace clang;
-using namespace idx;
-
-// Out-of-line to give the virtual tables a home.
-EntityHandler::~EntityHandler() { }
-TranslationUnitHandler::~TranslationUnitHandler() { }
-TULocationHandler::~TULocationHandler() { }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/IndexProvider.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/IndexProvider.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-//=3D=3D=3D- IndexProvider.cpp - Maps information to translation units -*-=
 C++ -*-=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Maps information to TranslationUnits.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/IndexProvider.h"
-#include "clang/Index/Entity.h"
-using namespace clang;
-using namespace idx;
-
-// Out-of-line to give the virtual table a home.
-IndexProvider::~IndexProvider() { }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/Indexer.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/Indexer.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-//=3D=3D=3D--- Indexer.cpp - IndexProvider implementation -------------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  IndexProvider implementation.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/Indexer.h"
-#include "clang/Index/Program.h"
-#include "clang/Index/Handlers.h"
-#include "clang/Index/TranslationUnit.h"
-#include "ASTVisitor.h"
-#include "clang/AST/DeclBase.h"
-using namespace clang;
-using namespace idx;
-
-namespace {
-
-class EntityIndexer : public EntityHandler {
-  TranslationUnit *TU;
-  Indexer::MapTy ⤅
-  Indexer::DefMapTy &DefMap;
-
-public:
-  EntityIndexer(TranslationUnit *tu, Indexer::MapTy &map,=20
-                Indexer::DefMapTy &defmap)=20
-    : TU(tu), Map(map), DefMap(defmap) { }
-
-  virtual void Handle(Entity Ent) {
-    if (Ent.isInternalToTU())
-      return;
-    Map[Ent].insert(TU);
-
-    Decl *D =3D Ent.getDecl(TU->getASTContext());
-    if (FunctionDecl *FD =3D dyn_cast<FunctionDecl>(D))
-      if (FD->doesThisDeclarationHaveABody())
-        DefMap[Ent] =3D std::make_pair(FD, TU);
-  }
-};
-
-class SelectorIndexer : public ASTVisitor<SelectorIndexer> {
-  Program &Prog;
-  TranslationUnit *TU;
-  Indexer::SelMapTy ⤅
-
-public:
-  SelectorIndexer(Program &prog, TranslationUnit *tu, Indexer::SelMapTy &m=
ap)
-    : Prog(prog), TU(tu), Map(map) { }
-
-  void VisitObjCMethodDecl(ObjCMethodDecl *D) {
-    Map[GlobalSelector::get(D->getSelector(), Prog)].insert(TU);
-    Base::VisitObjCMethodDecl(D);
-  }
-
-  void VisitObjCMessageExpr(ObjCMessageExpr *Node) {
-    Map[GlobalSelector::get(Node->getSelector(), Prog)].insert(TU);
-    Base::VisitObjCMessageExpr(Node);
-  }
-};
-
-} // anonymous namespace
-
-void Indexer::IndexAST(TranslationUnit *TU) {
-  assert(TU && "Passed null TranslationUnit");
-  ASTContext &Ctx =3D TU->getASTContext();
-  CtxTUMap[&Ctx] =3D TU;
-  EntityIndexer Idx(TU, Map, DefMap);
-  Prog.FindEntities(Ctx, Idx);
-
-  SelectorIndexer SelIdx(Prog, TU, SelMap);
-  SelIdx.Visit(Ctx.getTranslationUnitDecl());
-}
-
-void Indexer::GetTranslationUnitsFor(Entity Ent,
-                                     TranslationUnitHandler &Handler) {
-  assert(Ent.isValid() && "Expected valid Entity");
-
-  if (Ent.isInternalToTU()) {
-    Decl *D =3D Ent.getInternalDecl();
-    CtxTUMapTy::iterator I =3D CtxTUMap.find(&D->getASTContext());
-    if (I !=3D CtxTUMap.end())
-      Handler.Handle(I->second);
-    return;
-  }
-
-  MapTy::iterator I =3D Map.find(Ent);
-  if (I =3D=3D Map.end())
-    return;
-
-  TUSetTy &Set =3D I->second;
-  for (TUSetTy::iterator I =3D Set.begin(), E =3D Set.end(); I !=3D E; ++I)
-    Handler.Handle(*I);
-}
-
-void Indexer::GetTranslationUnitsFor(GlobalSelector Sel,
-                                    TranslationUnitHandler &Handler) {
-  assert(Sel.isValid() && "Expected valid GlobalSelector");
-
-  SelMapTy::iterator I =3D SelMap.find(Sel);
-  if (I =3D=3D SelMap.end())
-    return;
-
-  TUSetTy &Set =3D I->second;
-  for (TUSetTy::iterator I =3D Set.begin(), E =3D Set.end(); I !=3D E; ++I)
-    Handler.Handle(*I);
-}
-
-std::pair<FunctionDecl *, TranslationUnit *>=20
-Indexer::getDefinitionFor(Entity Ent) {
-  DefMapTy::iterator I =3D DefMap.find(Ent);
-  if (I =3D=3D DefMap.end())
-    return std::make_pair((FunctionDecl *)0, (TranslationUnit *)0);
-  else
-    return I->second;
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/Program.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/Program.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-//=3D=3D=3D--- Program.cpp - Entity originator and misc ------------------=
-------=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Storage for Entities and utility functions
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/Program.h"
-#include "ProgramImpl.h"
-#include "clang/Index/Handlers.h"
-#include "clang/Index/TranslationUnit.h"
-#include "clang/AST/DeclBase.h"
-#include "clang/AST/ASTContext.h"
-#include "llvm/Support/raw_ostream.h"
-using namespace clang;
-using namespace idx;
-
-// Out-of-line to give the virtual tables a home.
-TranslationUnit::~TranslationUnit() { }
-
-Program::Program() : Impl(new ProgramImpl()) { }
-
-Program::~Program() {
-  delete static_cast<ProgramImpl *>(Impl);
-}
-
-static void FindEntitiesInDC(DeclContext *DC, Program &Prog,
-                             EntityHandler &Handler) {
-  for (DeclContext::decl_iterator
-         I =3D DC->decls_begin(), E =3D DC->decls_end(); I !=3D E; ++I) {
-    if (I->getLocation().isInvalid())
-      continue;
-    Entity Ent =3D Entity::get(*I, Prog);
-    if (Ent.isValid())
-      Handler.Handle(Ent);
-    if (DeclContext *SubDC =3D dyn_cast<DeclContext>(*I))
-      FindEntitiesInDC(SubDC, Prog, Handler);
-  }
-}
-
-/// \brief Traverses the AST and passes all the entities to the Handler.
-void Program::FindEntities(ASTContext &Ctx, EntityHandler &Handler) {
-  FindEntitiesInDC(Ctx.getTranslationUnitDecl(), *this, Handler);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/ProgramImpl.h
--- a/head/contrib/llvm/tools/clang/lib/Index/ProgramImpl.h	Wed Jul 25 16:2=
0:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-//=3D=3D=3D--- ProgramImpl.h - Internal Program implementation---------*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  Internal implementation for the Program class
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#ifndef LLVM_CLANG_INDEX_PROGRAMIMPL_H
-#define LLVM_CLANG_INDEX_PROGRAMIMPL_H
-
-#include "EntityImpl.h"
-#include "clang/Basic/IdentifierTable.h"
-#include "clang/Basic/LangOptions.h"
-
-namespace clang {
-
-namespace idx {
-  class EntityListener;
-
-class ProgramImpl {
-public:
-  typedef llvm::FoldingSet<EntityImpl> EntitySetTy;
-
-private:
-  EntitySetTy Entities;
-  llvm::BumpPtrAllocator BumpAlloc;
-
-  IdentifierTable Identifiers;
-  SelectorTable Selectors;
-
-  ProgramImpl(const ProgramImpl&); // do not implement
-  ProgramImpl &operator=3D(const ProgramImpl &); // do not implement
-
-public:
-  ProgramImpl() : Identifiers(LangOptions()) { }
-
-  EntitySetTy &getEntities() { return Entities; }
-  IdentifierTable &getIdents() { return Identifiers; }
-  SelectorTable &getSelectors() { return Selectors; }
-
-  void *Allocate(unsigned Size, unsigned Align =3D 8) {
-    return BumpAlloc.Allocate(Size, Align);
-  }
-};
-
-} // namespace idx
-
-} // namespace clang
-
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Inde=
x/SelectorMap.cpp
--- a/head/contrib/llvm/tools/clang/lib/Index/SelectorMap.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-//=3D=3D=3D- SelectorMap.cpp - Maps selectors to methods and messages -*- =
C++ -*-=3D=3D=3D//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-//
-//  SelectorMap creates a mapping from selectors to ObjC method declaratio=
ns
-//  and ObjC message expressions.
-//
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-#include "clang/Index/SelectorMap.h"
-#include "ASTVisitor.h"
-using namespace clang;
-using namespace idx;
-
-namespace {
-
-class SelMapper : public ASTVisitor<SelMapper> {
-  SelectorMap::SelMethMapTy &SelMethMap;
-  SelectorMap::SelRefMapTy &SelRefMap;
-
-public:
-  SelMapper(SelectorMap::SelMethMapTy &MethMap,
-            SelectorMap::SelRefMapTy &RefMap)
-    : SelMethMap(MethMap), SelRefMap(RefMap) { }
-
-  void VisitObjCMethodDecl(ObjCMethodDecl *D);
-  void VisitObjCMessageExpr(ObjCMessageExpr *Node);
-  void VisitObjCSelectorExpr(ObjCSelectorExpr *Node);
-};
-
-} // anonymous namespace
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// SelMapper Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-void SelMapper::VisitObjCMethodDecl(ObjCMethodDecl *D) {
-  if (D->getCanonicalDecl() =3D=3D D)
-    SelMethMap.insert(std::make_pair(D->getSelector(), D));
-  Base::VisitObjCMethodDecl(D);
-}
-
-void SelMapper::VisitObjCMessageExpr(ObjCMessageExpr *Node) {
-  ASTLocation ASTLoc(CurrentDecl, Node);
-  SelRefMap.insert(std::make_pair(Node->getSelector(), ASTLoc));
-}
-
-void SelMapper::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {
-  ASTLocation ASTLoc(CurrentDecl, Node);
-  SelRefMap.insert(std::make_pair(Node->getSelector(), ASTLoc));
-}
-
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-// SelectorMap Implementation
-//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
-
-SelectorMap::SelectorMap(ASTContext &Ctx) {
-  SelMapper(SelMethMap, SelRefMap).Visit(Ctx.getTranslationUnitDecl());
-}
-
-SelectorMap::method_iterator
-SelectorMap::methods_begin(Selector Sel) const {
-  return method_iterator(SelMethMap.lower_bound(Sel));
-}
-
-SelectorMap::method_iterator
-SelectorMap::methods_end(Selector Sel) const {
-  return method_iterator(SelMethMap.upper_bound(Sel));
-}
-
-SelectorMap::astlocation_iterator
-SelectorMap::refs_begin(Selector Sel) const {
-  return astlocation_iterator(SelRefMap.lower_bound(Sel));
-}
-
-SelectorMap::astlocation_iterator
-SelectorMap::refs_end(Selector Sel) const {
-  return astlocation_iterator(SelRefMap.upper_bound(Sel));
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseCXXInlineMethods.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -59,7 +59,7 @@
     }
   }
=20
-  HandleMemberFunctionDefaultArgs(D, FnD);
+  HandleMemberFunctionDeclDelays(D, FnD);
=20
   D.complete(FnD);
=20
@@ -348,6 +348,7 @@
       LM.DefaultArgs[I].Toks =3D 0;
     }
   }
+
   PrototypeScope.Exit();
=20
   // Finish the delayed C++ method declaration.
@@ -447,9 +448,9 @@
   if (HasTemplateScope)
     Actions.ActOnReenterTemplateScope(getCurScope(), Class.TagOrTemplate);
=20
-  // Set or update the scope flags to include Scope::ThisScope.
+  // Set or update the scope flags.
   bool AlreadyHasClassScope =3D Class.TopLevelClass;
-  unsigned ScopeFlags =3D Scope::ClassScope|Scope::DeclScope|Scope::ThisSc=
ope;
+  unsigned ScopeFlags =3D Scope::ClassScope|Scope::DeclScope;
   ParseScope ClassScope(this, ScopeFlags, !AlreadyHasClassScope);
   ParseScopeFlags ClassScopeFlags(this, ScopeFlags, AlreadyHasClassScope);
=20
@@ -457,10 +458,20 @@
     Actions.ActOnStartDelayedMemberDeclarations(getCurScope(),
                                                 Class.TagOrTemplate);
=20
-  for (size_t i =3D 0; i < Class.LateParsedDeclarations.size(); ++i) {
-    Class.LateParsedDeclarations[i]->ParseLexedMemberInitializers();
+  {
+    // C++11 [expr.prim.general]p4:
+    //   Otherwise, if a member-declarator declares a non-static data memb=
er=20
+    //  (9.2) of a class X, the expression this is a prvalue of type "poin=
ter
+    //  to X" within the optional brace-or-equal-initializer. It shall not=20
+    //  appear elsewhere in the member-declarator.
+    Sema::CXXThisScopeRAII ThisScope(Actions, Class.TagOrTemplate,
+                                     /*TypeQuals=3D*/(unsigned)0);
+
+    for (size_t i =3D 0; i < Class.LateParsedDeclarations.size(); ++i) {
+      Class.LateParsedDeclarations[i]->ParseLexedMemberInitializers();
+    }
   }
-
+ =20
   if (!AlreadyHasClassScope)
     Actions.ActOnFinishDelayedMemberDeclarations(getCurScope(),
                                                  Class.TagOrTemplate);
@@ -481,6 +492,7 @@
   ConsumeAnyToken();
=20
   SourceLocation EqualLoc;
+   =20
   ExprResult Init =3D ParseCXXMemberInitializer(MI.Field, /*IsFunction=3D*=
/false,=20
                                               EqualLoc);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -729,9 +729,9 @@
   if (HasTemplateScope)
     Actions.ActOnReenterTemplateScope(getCurScope(), Class.TagOrTemplate);
=20
-  // Set or update the scope flags to include Scope::ThisScope.
+  // Set or update the scope flags.
   bool AlreadyHasClassScope =3D Class.TopLevelClass;
-  unsigned ScopeFlags =3D Scope::ClassScope|Scope::DeclScope|Scope::ThisSc=
ope;
+  unsigned ScopeFlags =3D Scope::ClassScope|Scope::DeclScope;
   ParseScope ClassScope(this, ScopeFlags, !AlreadyHasClassScope);
   ParseScopeFlags ClassScopeFlags(this, ScopeFlags, AlreadyHasClassScope);
=20
@@ -739,11 +739,16 @@
   if (!AlreadyHasClassScope)
     Actions.ActOnStartDelayedMemberDeclarations(getCurScope(),
                                                 Class.TagOrTemplate);
-
-  for (unsigned i =3D 0, ni =3D Class.LateParsedDeclarations.size(); i < n=
i; ++i) {
-    Class.LateParsedDeclarations[i]->ParseLexedAttributes();
+  {
+    // Allow 'this' within late-parsed attributes.
+    Sema::CXXThisScopeRAII ThisScope(Actions, Class.TagOrTemplate,=20
+                                     /*TypeQuals=3D*/0);
+   =20
+    for (unsigned i =3D 0, ni =3D Class.LateParsedDeclarations.size(); i <=
 ni; ++i){
+      Class.LateParsedDeclarations[i]->ParseLexedAttributes();
+    }
   }
-
+ =20
   if (!AlreadyHasClassScope)
     Actions.ActOnFinishDelayedMemberDeclarations(getCurScope(),
                                                  Class.TagOrTemplate);
@@ -756,6 +761,7 @@
   for (unsigned i =3D 0, ni =3D LAs.size(); i < ni; ++i) {
     LAs[i]->addDecl(D);
     ParseLexedAttribute(*LAs[i], EnterScope, OnDefinition);
+    delete LAs[i];
   }
   LAs.clear();
 }
@@ -958,7 +964,7 @@
 /// [C++]   namespace-definition
 /// [C++]   using-directive
 /// [C++]   using-declaration
-/// [C++0x/C11] static_assert-declaration
+/// [C++11/C11] static_assert-declaration
 ///         others... [FIXME]
 ///
 Parser::DeclGroupPtrTy Parser::ParseDeclaration(StmtVector &Stmts,
@@ -4241,11 +4247,28 @@
         EndLoc =3D RefQualifierLoc;
       }
=20
+      // C++11 [expr.prim.general]p3:
+      //   If a declaration declares a member function or member function=20
+      //   template of a class X, the expression this is a prvalue of type=20
+      //   "pointer to cv-qualifier-seq X" between the optional cv-qualife=
r-seq
+      //   and the end of the function-definition, member-declarator, or=20
+      //   declarator.
+      bool IsCXX11MemberFunction =3D=20
+        getLangOpts().CPlusPlus0x &&
+        (D.getContext() =3D=3D Declarator::MemberContext ||
+         (D.getContext() =3D=3D Declarator::FileContext &&
+          D.getCXXScopeSpec().isValid() &&=20
+          Actions.CurContext->isRecord()));
+      Sema::CXXThisScopeRAII ThisScope(Actions,
+                               dyn_cast<CXXRecordDecl>(Actions.CurContext),
+                               DS.getTypeQualifiers(),
+                               IsCXX11MemberFunction);
+
       // Parse exception-specification[opt].
-      ESpecType =3D MaybeParseExceptionSpecification(ESpecRange,
-                                                   DynamicExceptions,
-                                                   DynamicExceptionRanges,
-                                                   NoexceptExpr);
+      ESpecType =3D tryParseExceptionSpecification(ESpecRange,
+                                                 DynamicExceptions,
+                                                 DynamicExceptionRanges,
+                                                 NoexceptExpr);
       if (ESpecType !=3D EST_None)
         EndLoc =3D ESpecRange.getEnd();
=20
@@ -4481,7 +4504,6 @@
           // If we're inside a class definition, cache the tokens
           // corresponding to the default argument. We'll actually parse
           // them when we see the end of the class definition.
-          // FIXME: Templates will require something similar.
           // FIXME: Can we use a smart pointer for Toks?
           DefArgToks =3D new CachedTokens;
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseDeclCXX.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -1534,13 +1534,17 @@
   }
 }
=20
-void Parser::HandleMemberFunctionDefaultArgs(Declarator& DeclaratorInfo,
-                                             Decl *ThisDecl) {
+/// \brief If the given declarator has any parts for which parsing has to =
be
+/// delayed, e.g., default arguments, create a late-parsed method declarat=
ion
+/// record to handle the parsing at the end of the class definition.
+void Parser::HandleMemberFunctionDeclDelays(Declarator& DeclaratorInfo,
+                                            Decl *ThisDecl) {
   // We just declared a member function. If this member function
   // has any default arguments, we'll need to parse them later.
   LateParsedMethodDeclaration *LateMethod =3D 0;
   DeclaratorChunk::FunctionTypeInfo &FTI
     =3D DeclaratorInfo.getFunctionTypeInfo();
+
   for (unsigned ParamIdx =3D 0; ParamIdx < FTI.NumArgs; ++ParamIdx) {
     if (LateMethod || FTI.ArgInfo[ParamIdx].DefaultArgTokens) {
       if (!LateMethod) {
@@ -1558,7 +1562,7 @@
                              LateParsedDefaultArgument(FTI.ArgInfo[I].Para=
m));
       }
=20
-      // Add this parameter to the list of parameters (it or may
+      // Add this parameter to the list of parameters (it may or may
       // not have a default argument).
       LateMethod->DefaultArgs.push_back(
         LateParsedDefaultArgument(FTI.ArgInfo[ParamIdx].Param,
@@ -2043,10 +2047,10 @@
       DeclsInGroup.push_back(ThisDecl);
     }
    =20
-    if (DeclaratorInfo.isFunctionDeclarator() &&
+    if (ThisDecl && DeclaratorInfo.isFunctionDeclarator() &&
         DeclaratorInfo.getDeclSpec().getStorageClassSpec()
           !=3D DeclSpec::SCS_typedef) {
-      HandleMemberFunctionDefaultArgs(DeclaratorInfo, ThisDecl);
+      HandleMemberFunctionDeclDelays(DeclaratorInfo, ThisDecl);
     }
=20
     DeclaratorInfo.complete(ThisDecl);
@@ -2334,13 +2338,11 @@
                                               T.getCloseLocation(),
                                               attrs.getList());
=20
-  // C++0x [class.mem]p2: Within the class member-specification, the class=
 is
-  // regarded as complete within function bodies, default arguments, excep=
tion-
-  // specifications, and brace-or-equal-initializers for non-static data
-  // members (including such things in nested classes).
-  //
-  // FIXME: Only function bodies and brace-or-equal-initializers are curre=
ntly
-  // handled. Fix the others!
+  // C++11 [class.mem]p2:
+  //   Within the class member-specification, the class is regarded as com=
plete
+  //   within function bodies, default arguments, and
+  //   brace-or-equal-initializers for non-static data members (including =
such
+  //   things in nested classes).
   if (TagDecl && NonNestedClass) {
     // We are not inside a nested class. This class and its nested classes
     // are complete and we can parse the delayed portions of method
@@ -2349,6 +2351,10 @@
     SourceLocation SavedPrevTokLocation =3D PrevTokLocation;
     ParseLexedAttributes(getCurrentClass());
     ParseLexedMethodDeclarations(getCurrentClass());
+
+    // We've finished with all pending member declarations.
+    Actions.ActOnFinishCXXMemberDecls();
+
     ParseLexedMemberInitializers(getCurrentClass());
     ParseLexedMethodDefs(getCurrentClass());
     PrevTokLocation =3D SavedPrevTokLocation;
@@ -2535,7 +2541,8 @@
 ///         'noexcept'
 ///         'noexcept' '(' constant-expression ')'
 ExceptionSpecificationType
-Parser::MaybeParseExceptionSpecification(SourceRange &SpecificationRange,
+Parser::tryParseExceptionSpecification(
+                    SourceRange &SpecificationRange,
                     SmallVectorImpl<ParsedType> &DynamicExceptions,
                     SmallVectorImpl<SourceRange> &DynamicExceptionRanges,
                     ExprResult &NoexceptExpr) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseExpr.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -1926,11 +1926,9 @@
   // unless they've already reported an error.
   if (ExprType >=3D CompoundStmt && Tok.is(tok::l_brace)) {
     Diag(Tok, diag::ext_gnu_statement_expr);
-
     Actions.ActOnStartStmtExpr();
=20
-    ParsedAttributes attrs(AttrFactory);
-    StmtResult Stmt(ParseCompoundStatement(attrs, true));
+    StmtResult Stmt(ParseCompoundStatement(true));
     ExprType =3D CompoundStmt;
=20
     // If the substmt parsed correctly, build the AST node.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseExprCXX.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -780,10 +780,10 @@
     llvm::SmallVector<ParsedType, 2> DynamicExceptions;
     llvm::SmallVector<SourceRange, 2> DynamicExceptionRanges;
     ExprResult NoexceptExpr;
-    ESpecType =3D MaybeParseExceptionSpecification(ESpecRange,
-                                                 DynamicExceptions,
-                                                 DynamicExceptionRanges,
-                                                 NoexceptExpr);
+    ESpecType =3D tryParseExceptionSpecification(ESpecRange,
+                                               DynamicExceptions,
+                                               DynamicExceptionRanges,
+                                               NoexceptExpr);
=20
     if (ESpecType !=3D EST_None)
       DeclEndLoc =3D ESpecRange.getEnd();
@@ -872,8 +872,6 @@
   // FIXME: Rename BlockScope -> ClosureScope if we decide to continue usi=
ng
   // it.
   unsigned ScopeFlags =3D Scope::BlockScope | Scope::FnScope | Scope::Decl=
Scope;
-  if (getCurScope()->getFlags() & Scope::ThisScope)
-    ScopeFlags |=3D Scope::ThisScope;
   ParseScope BodyScope(this, ScopeFlags);
=20
   Actions.ActOnStartOfLambdaDefinition(Intro, D, getCurScope());
@@ -1711,7 +1709,7 @@
     // Form a parsed representation of the template-id to be stored in the
     // UnqualifiedId.
     TemplateIdAnnotation *TemplateId
-      =3D TemplateIdAnnotation::Allocate(TemplateArgs.size());
+      =3D TemplateIdAnnotation::Allocate(TemplateArgs.size(), TemplateIds);
=20
     if (Id.getKind() =3D=3D UnqualifiedId::IK_Identifier) {
       TemplateId->Name =3D Id.Identifier;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseStmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -78,13 +78,30 @@
 StmtResult
 Parser::ParseStatementOrDeclaration(StmtVector &Stmts, bool OnlyStatement,
                                     SourceLocation *TrailingElseLoc) {
-  const char *SemiError =3D 0;
-  StmtResult Res;
=20
   ParenBraceBracketBalancer BalancerRAIIObj(*this);
=20
-  ParsedAttributesWithRange attrs(AttrFactory);
-  MaybeParseCXX0XAttributes(attrs, 0, /*MightBeObjCMessageSend*/ true);
+  ParsedAttributesWithRange Attrs(AttrFactory);
+  MaybeParseCXX0XAttributes(Attrs, 0, /*MightBeObjCMessageSend*/ true);
+
+  StmtResult Res =3D ParseStatementOrDeclarationAfterAttributes(Stmts,
+                                 OnlyStatement, TrailingElseLoc, Attrs);
+
+  assert((Attrs.empty() || Res.isInvalid() || Res.isUsable()) &&
+         "attributes on empty statement");
+
+  if (Attrs.empty() || Res.isInvalid())
+    return Res;
+
+  return Actions.ProcessStmtAttributes(Res.get(), Attrs.getList(), Attrs.R=
ange);
+}
+
+StmtResult
+Parser::ParseStatementOrDeclarationAfterAttributes(StmtVector &Stmts,
+          bool OnlyStatement, SourceLocation *TrailingElseLoc,
+          ParsedAttributesWithRange &Attrs) {
+  const char *SemiError =3D 0;
+  StmtResult Res;
=20
   // Cases in this switch statement should fall through if the parser expe=
cts
   // the token to end in a semicolon (in which case SemiError should be se=
t),
@@ -95,6 +112,7 @@
   switch (Kind) {
   case tok::at: // May be a @try or @throw statement
     {
+      ProhibitAttributes(Attrs); // TODO: is it correct?
       AtLoc =3D ConsumeToken();  // consume @
       return ParseObjCAtStatement(AtLoc);
     }
@@ -108,7 +126,7 @@
     Token Next =3D NextToken();
     if (Next.is(tok::colon)) { // C99 6.8.1: labeled-statement
       // identifier ':' statement
-      return ParseLabeledStatement(attrs);
+      return ParseLabeledStatement(Attrs);
     }
=20
     if (Next.isNot(tok::coloncolon)) {
@@ -210,7 +228,7 @@
     if ((getLangOpts().CPlusPlus || !OnlyStatement) && isDeclarationStatem=
ent()) {
       SourceLocation DeclStart =3D Tok.getLocation(), DeclEnd;
       DeclGroupPtrTy Decl =3D ParseDeclaration(Stmts, Declarator::BlockCon=
text,
-                                             DeclEnd, attrs);
+                                             DeclEnd, Attrs);
       return Actions.ActOnDeclStmt(Decl, DeclStart, DeclEnd);
     }
=20
@@ -219,54 +237,54 @@
       return StmtError();
     }
=20
-    return ParseExprStatement(attrs);
+    return ParseExprStatement();
   }
=20
   case tok::kw_case:                // C99 6.8.1: labeled-statement
-    return ParseCaseStatement(attrs);
+    return ParseCaseStatement();
   case tok::kw_default:             // C99 6.8.1: labeled-statement
-    return ParseDefaultStatement(attrs);
+    return ParseDefaultStatement();
=20
   case tok::l_brace:                // C99 6.8.2: compound-statement
-    return ParseCompoundStatement(attrs);
+    return ParseCompoundStatement();
   case tok::semi: {                 // C99 6.8.3p3: expression[opt] ';'
     bool HasLeadingEmptyMacro =3D Tok.hasLeadingEmptyMacro();
     return Actions.ActOnNullStmt(ConsumeToken(), HasLeadingEmptyMacro);
   }
=20
   case tok::kw_if:                  // C99 6.8.4.1: if-statement
-    return ParseIfStatement(attrs, TrailingElseLoc);
+    return ParseIfStatement(TrailingElseLoc);
   case tok::kw_switch:              // C99 6.8.4.2: switch-statement
-    return ParseSwitchStatement(attrs, TrailingElseLoc);
+    return ParseSwitchStatement(TrailingElseLoc);
=20
   case tok::kw_while:               // C99 6.8.5.1: while-statement
-    return ParseWhileStatement(attrs, TrailingElseLoc);
+    return ParseWhileStatement(TrailingElseLoc);
   case tok::kw_do:                  // C99 6.8.5.2: do-statement
-    Res =3D ParseDoStatement(attrs);
+    Res =3D ParseDoStatement();
     SemiError =3D "do/while";
     break;
   case tok::kw_for:                 // C99 6.8.5.3: for-statement
-    return ParseForStatement(attrs, TrailingElseLoc);
+    return ParseForStatement(TrailingElseLoc);
=20
   case tok::kw_goto:                // C99 6.8.6.1: goto-statement
-    Res =3D ParseGotoStatement(attrs);
+    Res =3D ParseGotoStatement();
     SemiError =3D "goto";
     break;
   case tok::kw_continue:            // C99 6.8.6.2: continue-statement
-    Res =3D ParseContinueStatement(attrs);
+    Res =3D ParseContinueStatement();
     SemiError =3D "continue";
     break;
   case tok::kw_break:               // C99 6.8.6.3: break-statement
-    Res =3D ParseBreakStatement(attrs);
+    Res =3D ParseBreakStatement();
     SemiError =3D "break";
     break;
   case tok::kw_return:              // C99 6.8.6.4: return-statement
-    Res =3D ParseReturnStatement(attrs);
+    Res =3D ParseReturnStatement();
     SemiError =3D "return";
     break;
=20
   case tok::kw_asm: {
-    ProhibitAttributes(attrs);
+    ProhibitAttributes(Attrs);
     bool msAsm =3D false;
     Res =3D ParseAsmStatement(msAsm);
     Res =3D Actions.ActOnFinishFullStmt(Res.get());
@@ -276,16 +294,19 @@
   }
=20
   case tok::kw_try:                 // C++ 15: try-block
-    return ParseCXXTryBlock(attrs);
+    return ParseCXXTryBlock();
=20
   case tok::kw___try:
-    return ParseSEHTryBlock(attrs);
+    ProhibitAttributes(Attrs); // TODO: is it correct?
+    return ParseSEHTryBlock();
=20
   case tok::annot_pragma_vis:
+    ProhibitAttributes(Attrs);
     HandlePragmaVisibility();
     return StmtEmpty();
=20
   case tok::annot_pragma_pack:
+    ProhibitAttributes(Attrs);
     HandlePragmaPack();
     return StmtEmpty();
   }
@@ -306,11 +327,10 @@
 }
=20
 /// \brief Parse an expression statement.
-StmtResult Parser::ParseExprStatement(ParsedAttributes &Attrs) {
+StmtResult Parser::ParseExprStatement() {
   // If a case keyword is missing, this is where it should be inserted.
   Token OldToken =3D Tok;
=20
-  // FIXME: Use the attributes
   // expression[opt] ';'
   ExprResult Expr(ParseExpression());
   if (Expr.isInvalid()) {
@@ -331,7 +351,7 @@
       << FixItHint::CreateInsertion(OldToken.getLocation(), "case ");
=20
     // Recover parsing as a case statement.
-    return ParseCaseStatement(Attrs, /*MissingCase=3D*/true, Expr);
+    return ParseCaseStatement(/*MissingCase=3D*/true, Expr);
   }
=20
   // Otherwise, eat the semicolon.
@@ -339,7 +359,7 @@
   return Actions.ActOnExprStmt(Actions.MakeFullExpr(Expr.get()));
 }
=20
-StmtResult Parser::ParseSEHTryBlock(ParsedAttributes & Attrs) {
+StmtResult Parser::ParseSEHTryBlock() {
   assert(Tok.is(tok::kw___try) && "Expected '__try'");
   SourceLocation Loc =3D ConsumeToken();
   return ParseSEHTryBlockCommon(Loc);
@@ -358,13 +378,12 @@
   if(Tok.isNot(tok::l_brace))
     return StmtError(Diag(Tok,diag::err_expected_lbrace));
=20
-  ParsedAttributesWithRange attrs(AttrFactory);
-  StmtResult TryBlock(ParseCompoundStatement(attrs));
+  StmtResult TryBlock(ParseCompoundStatement());
   if(TryBlock.isInvalid())
     return move(TryBlock);
=20
   StmtResult Handler;
-  if (Tok.is(tok::identifier) &&=20
+  if (Tok.is(tok::identifier) &&
       Tok.getIdentifierInfo() =3D=3D getSEHExceptKeyword()) {
     SourceLocation Loc =3D ConsumeToken();
     Handler =3D ParseSEHExceptBlock(Loc);
@@ -418,8 +437,7 @@
   if(ExpectAndConsume(tok::r_paren,diag::err_expected_rparen))
     return StmtError();
=20
-  ParsedAttributesWithRange attrs(AttrFactory);
-  StmtResult Block(ParseCompoundStatement(attrs));
+  StmtResult Block(ParseCompoundStatement());
=20
   if(Block.isInvalid())
     return move(Block);
@@ -437,8 +455,7 @@
     raii2(Ident___abnormal_termination, false),
     raii3(Ident_AbnormalTermination, false);
=20
-  ParsedAttributesWithRange attrs(AttrFactory);
-  StmtResult Block(ParseCompoundStatement(attrs));
+  StmtResult Block(ParseCompoundStatement());
   if(Block.isInvalid())
     return move(Block);
=20
@@ -451,7 +468,7 @@
 ///         identifier ':' statement
 /// [GNU]   identifier ':' attributes[opt] statement
 ///
-StmtResult Parser::ParseLabeledStatement(ParsedAttributes &attrs) {
+StmtResult Parser::ParseLabeledStatement(ParsedAttributesWithRange &attrs)=
 {
   assert(Tok.is(tok::identifier) && Tok.getIdentifierInfo() &&
          "Not an identifier!");
=20
@@ -463,7 +480,8 @@
   // identifier ':' statement
   SourceLocation ColonLoc =3D ConsumeToken();
=20
-  // Read label attributes, if present.
+  // Read label attributes, if present. attrs will contain both C++11 and =
GNU
+  // attributes (if present) after this point.
   MaybeParseGNUAttributes(attrs);
=20
   StmtResult SubStmt(ParseStatement());
@@ -474,8 +492,10 @@
=20
   LabelDecl *LD =3D Actions.LookupOrCreateLabel(IdentTok.getIdentifierInfo=
(),
                                               IdentTok.getLocation());
-  if (AttributeList *Attrs =3D attrs.getList())
+  if (AttributeList *Attrs =3D attrs.getList()) {
     Actions.ProcessDeclAttributeList(Actions.CurScope, LD, Attrs);
+    attrs.clear();
+  }
=20
   return Actions.ActOnLabelStmt(IdentTok.getLocation(), LD, ColonLoc,
                                 SubStmt.get());
@@ -486,10 +506,8 @@
 ///         'case' constant-expression ':' statement
 /// [GNU]   'case' constant-expression '...' constant-expression ':' state=
ment
 ///
-StmtResult Parser::ParseCaseStatement(ParsedAttributes &attrs, bool Missin=
gCase,
-                                      ExprResult Expr) {
+StmtResult Parser::ParseCaseStatement(bool MissingCase, ExprResult Expr) {
   assert((MissingCase || Tok.is(tok::kw_case)) && "Not a case stmt!");
-  // FIXME: Use attributes?
=20
   // It is very very common for code to contain many case statements recur=
sively
   // nested, as in (but usually without indentation):
@@ -625,9 +643,7 @@
 ///         'default' ':' statement
 /// Note that this does not parse the 'statement' at the end.
 ///
-StmtResult Parser::ParseDefaultStatement(ParsedAttributes &attrs) {
-  //FIXME: Use attributes?
-
+StmtResult Parser::ParseDefaultStatement() {
   assert(Tok.is(tok::kw_default) && "Not a default stmt!");
   SourceLocation DefaultLoc =3D ConsumeToken();  // eat the 'default'.
=20
@@ -668,9 +684,8 @@
                                   SubStmt.get(), getCurScope());
 }
=20
-StmtResult Parser::ParseCompoundStatement(ParsedAttributes &Attr,
-                                          bool isStmtExpr) {
-  return ParseCompoundStatement(Attr, isStmtExpr, Scope::DeclScope);
+StmtResult Parser::ParseCompoundStatement(bool isStmtExpr) {
+  return ParseCompoundStatement(isStmtExpr, Scope::DeclScope);
 }
=20
 /// ParseCompoundStatement - Parse a "{}" block.
@@ -700,11 +715,8 @@
 /// [OMP]   barrier-directive
 /// [OMP]   flush-directive
 ///
-StmtResult Parser::ParseCompoundStatement(ParsedAttributes &attrs,
-                                          bool isStmtExpr,
+StmtResult Parser::ParseCompoundStatement(bool isStmtExpr,
                                           unsigned ScopeFlags) {
-  //FIXME: Use attributes?
-
   assert(Tok.is(tok::l_brace) && "Not a compount stmt!");
=20
   // Enter a scope to hold everything within the compound stmt.  Compound
@@ -894,10 +906,7 @@
 /// [C++]   'if' '(' condition ')' statement
 /// [C++]   'if' '(' condition ')' statement 'else' statement
 ///
-StmtResult Parser::ParseIfStatement(ParsedAttributes &attrs,
-                                    SourceLocation *TrailingElseLoc) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseIfStatement(SourceLocation *TrailingElseLoc) {
   assert(Tok.is(tok::kw_if) && "Not an if stmt!");
   SourceLocation IfLoc =3D ConsumeToken();  // eat the 'if'.
=20
@@ -1028,10 +1037,7 @@
 ///       switch-statement:
 ///         'switch' '(' expression ')' statement
 /// [C++]   'switch' '(' condition ')' statement
-StmtResult Parser::ParseSwitchStatement(ParsedAttributes &attrs,
-                                        SourceLocation *TrailingElseLoc) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseSwitchStatement(SourceLocation *TrailingElseLoc) {
   assert(Tok.is(tok::kw_switch) && "Not a switch stmt!");
   SourceLocation SwitchLoc =3D ConsumeToken();  // eat the 'switch'.
=20
@@ -1119,10 +1125,7 @@
 ///       while-statement: [C99 6.8.5.1]
 ///         'while' '(' expression ')' statement
 /// [C++]   'while' '(' condition ')' statement
-StmtResult Parser::ParseWhileStatement(ParsedAttributes &attrs,
-                                       SourceLocation *TrailingElseLoc) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseWhileStatement(SourceLocation *TrailingElseLoc) {
   assert(Tok.is(tok::kw_while) && "Not a while stmt!");
   SourceLocation WhileLoc =3D Tok.getLocation();
   ConsumeToken();  // eat the 'while'.
@@ -1194,9 +1197,7 @@
 ///       do-statement: [C99 6.8.5.2]
 ///         'do' statement 'while' '(' expression ')' ';'
 /// Note: this lets the caller parse the end ';'.
-StmtResult Parser::ParseDoStatement(ParsedAttributes &attrs) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseDoStatement() {
   assert(Tok.is(tok::kw_do) && "Not a do stmt!");
   SourceLocation DoLoc =3D ConsumeToken();  // eat the 'do'.
=20
@@ -1277,10 +1278,7 @@
 /// [C++0x] for-range-initializer:
 /// [C++0x]   expression
 /// [C++0x]   braced-init-list            [TODO]
-StmtResult Parser::ParseForStatement(ParsedAttributes &attrs,
-                                     SourceLocation *TrailingElseLoc) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseForStatement(SourceLocation *TrailingElseLoc) {
   assert(Tok.is(tok::kw_for) && "Not a for stmt!");
   SourceLocation ForLoc =3D ConsumeToken();  // eat the 'for'.
=20
@@ -1535,9 +1533,7 @@
 ///
 /// Note: this lets the caller parse the end ';'.
 ///
-StmtResult Parser::ParseGotoStatement(ParsedAttributes &attrs) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseGotoStatement() {
   assert(Tok.is(tok::kw_goto) && "Not a goto stmt!");
   SourceLocation GotoLoc =3D ConsumeToken();  // eat the 'goto'.
=20
@@ -1571,9 +1567,7 @@
 ///
 /// Note: this lets the caller parse the end ';'.
 ///
-StmtResult Parser::ParseContinueStatement(ParsedAttributes &attrs) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseContinueStatement() {
   SourceLocation ContinueLoc =3D ConsumeToken();  // eat the 'continue'.
   return Actions.ActOnContinueStmt(ContinueLoc, getCurScope());
 }
@@ -1584,9 +1578,7 @@
 ///
 /// Note: this lets the caller parse the end ';'.
 ///
-StmtResult Parser::ParseBreakStatement(ParsedAttributes &attrs) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseBreakStatement() {
   SourceLocation BreakLoc =3D ConsumeToken();  // eat the 'break'.
   return Actions.ActOnBreakStmt(BreakLoc, getCurScope());
 }
@@ -1594,9 +1586,7 @@
 /// ParseReturnStatement
 ///       jump-statement:
 ///         'return' expression[opt] ';'
-StmtResult Parser::ParseReturnStatement(ParsedAttributes &attrs) {
-  // FIXME: Use attributes?
-
+StmtResult Parser::ParseReturnStatement() {
   assert(Tok.is(tok::kw_return) && "Not a return stmt!");
   SourceLocation ReturnLoc =3D ConsumeToken();  // eat the 'return'.
=20
@@ -2043,9 +2033,7 @@
 ///       try-block:
 ///         'try' compound-statement handler-seq
 ///
-StmtResult Parser::ParseCXXTryBlock(ParsedAttributes &attrs) {
-  // FIXME: Add attributes?
-
+StmtResult Parser::ParseCXXTryBlock() {
   assert(Tok.is(tok::kw_try) && "Expected 'try'");
=20
   SourceLocation TryLoc =3D ConsumeToken();
@@ -2072,17 +2060,17 @@
   if (Tok.isNot(tok::l_brace))
     return StmtError(Diag(Tok, diag::err_expected_lbrace));
   // FIXME: Possible draft standard bug: attribute-specifier should be all=
owed?
-  ParsedAttributesWithRange attrs(AttrFactory);
-  StmtResult TryBlock(ParseCompoundStatement(attrs, /*isStmtExpr=3D*/false,
+
+  StmtResult TryBlock(ParseCompoundStatement(/*isStmtExpr=3D*/false,
                                              Scope::DeclScope|Scope::TrySc=
ope));
   if (TryBlock.isInvalid())
     return move(TryBlock);
=20
   // Borland allows SEH-handlers with 'try'
  =20
-  if((Tok.is(tok::identifier) &&=20
-      Tok.getIdentifierInfo() =3D=3D getSEHExceptKeyword()) ||=20
-     Tok.is(tok::kw___finally)) {
+  if ((Tok.is(tok::identifier) &&
+       Tok.getIdentifierInfo() =3D=3D getSEHExceptKeyword()) ||
+      Tok.is(tok::kw___finally)) {
     // TODO: Factor into common return ParseSEHHandlerCommon(...)
     StmtResult Handler;
     if(Tok.getIdentifierInfo() =3D=3D getSEHExceptKeyword()) {
@@ -2103,6 +2091,7 @@
   }
   else {
     StmtVector Handlers(Actions);
+    ParsedAttributesWithRange attrs(AttrFactory);
     MaybeParseCXX0XAttributes(attrs);
     ProhibitAttributes(attrs);
=20
@@ -2168,8 +2157,7 @@
     return StmtError(Diag(Tok, diag::err_expected_lbrace));
=20
   // FIXME: Possible draft standard bug: attribute-specifier should be all=
owed?
-  ParsedAttributes attrs(AttrFactory);
-  StmtResult Block(ParseCompoundStatement(attrs));
+  StmtResult Block(ParseCompoundStatement());
   if (Block.isInvalid())
     return move(Block);
=20
@@ -2188,24 +2176,23 @@
   if (Result.Behavior =3D=3D IEB_Dependent) {
     if (!Tok.is(tok::l_brace)) {
       Diag(Tok, diag::err_expected_lbrace);
-      return;     =20
+      return;
     }
-   =20
-    ParsedAttributes Attrs(AttrFactory);
-    StmtResult Compound =3D ParseCompoundStatement(Attrs);
+
+    StmtResult Compound =3D ParseCompoundStatement();
     if (Compound.isInvalid())
       return;
-   =20
+
     StmtResult DepResult =3D Actions.ActOnMSDependentExistsStmt(Result.Key=
wordLoc,
                                                               Result.IsIfE=
xists,
-                                                              Result.SS,=20
+                                                              Result.SS,
                                                               Result.Name,
                                                               Compound.get=
());
     if (DepResult.isUsable())
       Stmts.push_back(DepResult.get());
     return;
   }
- =20
+
   BalancedDelimiterTracker Braces(*this, tok::l_brace);
   if (Braces.consumeOpen()) {
     Diag(Tok, diag::err_expected_lbrace);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/ParseTemplate.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -652,6 +652,7 @@
     //   end of the template-parameter-list rather than a greater-than
     //   operator.
     GreaterThanIsOperatorScope G(GreaterThanIsOperator, false);
+    EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluate=
d);
=20
     DefaultArg =3D ParseAssignmentExpression();
     if (DefaultArg.isInvalid())
@@ -838,7 +839,7 @@
     // later.
     Tok.setKind(tok::annot_template_id);
     TemplateIdAnnotation *TemplateId
-      =3D TemplateIdAnnotation::Allocate(TemplateArgs.size());
+      =3D TemplateIdAnnotation::Allocate(TemplateArgs.size(), TemplateIds);
     TemplateId->TemplateNameLoc =3D TemplateNameLoc;
     if (TemplateName.getKind() =3D=3D UnqualifiedId::IK_Identifier) {
       TemplateId->Name =3D TemplateName.Identifier;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Pars=
e/Parser.cpp
--- a/head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -397,6 +397,8 @@
   PP.RemovePragmaHandler("STDC", FPContractHandler.get());
   FPContractHandler.reset();
   PP.clearCodeCompletionHandler();
+
+  assert(TemplateIds.empty() && "Still alive TemplateIdAnnotations around?=
");
 }
=20
 /// Initialize - Warm up the parser.
@@ -470,10 +472,30 @@
   }
 }
=20
+namespace {
+  /// \brief RAIIObject to destroy the contents of a SmallVector of
+  /// TemplateIdAnnotation pointers and clear the vector.
+  class DestroyTemplateIdAnnotationsRAIIObj {
+    SmallVectorImpl<TemplateIdAnnotation *> &Container;
+  public:
+    DestroyTemplateIdAnnotationsRAIIObj(SmallVectorImpl<TemplateIdAnnotati=
on *>
+                                       &Container)
+      : Container(Container) {}
+
+    ~DestroyTemplateIdAnnotationsRAIIObj() {
+      for (SmallVectorImpl<TemplateIdAnnotation *>::iterator I =3D
+           Container.begin(), E =3D Container.end();
+           I !=3D E; ++I)
+        (*I)->Destroy();
+      Container.clear();
+    }
+  };
+}
+
 /// ParseTopLevelDecl - Parse one top-level declaration, return whatever t=
he
 /// action tells us to.  This returns true if the EOF was encountered.
 bool Parser::ParseTopLevelDecl(DeclGroupPtrTy &Result) {
-  DelayedCleanupPoint CleanupRAII(TopLevelDeclCleanupPool);
+  DestroyTemplateIdAnnotationsRAIIObj CleanupRAII(TemplateIds);
=20
   // Skip over the EOF token, flagging end of previous input for increment=
al=20
   // processing
@@ -543,7 +565,7 @@
 Parser::DeclGroupPtrTy
 Parser::ParseExternalDeclaration(ParsedAttributesWithRange &attrs,
                                  ParsingDeclSpec *DS) {
-  DelayedCleanupPoint CleanupRAII(TopLevelDeclCleanupPool);
+  DestroyTemplateIdAnnotationsRAIIObj CleanupRAII(TemplateIds);
   ParenBraceBracketBalancer BalancerRAIIObj(*this);
=20
   if (PP.isCodeCompletionReached()) {
@@ -1201,8 +1223,6 @@
   assert(tok.is(tok::annot_template_id) && "Expected template-id token");
   TemplateIdAnnotation *
       Id =3D static_cast<TemplateIdAnnotation *>(tok.getAnnotationValue());
-  TopLevelDeclCleanupPool.delayMemberFunc< TemplateIdAnnotation,
-                                          &TemplateIdAnnotation::Destroy>(=
Id);
   return Id;
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Rewr=
ite/RewriteModernObjC.cpp
--- a/head/contrib/llvm/tools/clang/lib/Rewrite/RewriteModernObjC.cpp	Wed J=
ul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Rewrite/RewriteModernObjC.cpp	Wed J=
ul 25 16:21:35 2012 +0300
@@ -304,7 +304,6 @@
     void RewriteFunctionDecl(FunctionDecl *FD);
     void RewriteBlockPointerType(std::string& Str, QualType Type);
     void RewriteBlockPointerTypeVariable(std::string& Str, ValueDecl *VD);
-    void RewriteBlockLiteralFunctionDecl(FunctionDecl *FD);
     void RewriteObjCQualifiedInterfaceTypes(Decl *Dcl);
     void RewriteTypeOfDecl(VarDecl *VD);
     void RewriteObjCQualifiedInterfaceTypes(Expr *E);
@@ -2246,31 +2245,7 @@
   }
 }
=20
-
-void RewriteModernObjC::RewriteBlockLiteralFunctionDecl(FunctionDecl *FD) {
-  SourceLocation FunLocStart =3D FD->getTypeSpecStartLoc();
-  const FunctionType *funcType =3D FD->getType()->getAs<FunctionType>();
-  const FunctionProtoType *proto =3D dyn_cast<FunctionProtoType>(funcType);
-  if (!proto)
-    return;
-  QualType Type =3D proto->getResultType();
-  std::string FdStr =3D Type.getAsString(Context->getPrintingPolicy());
-  FdStr +=3D " ";
-  FdStr +=3D FD->getName();
-  FdStr +=3D  "(";
-  unsigned numArgs =3D proto->getNumArgs();
-  for (unsigned i =3D 0; i < numArgs; i++) {
-    QualType ArgType =3D proto->getArgType(i);
-    RewriteBlockPointerType(FdStr, ArgType);
-    if (i+1 < numArgs)
-      FdStr +=3D ", ";
-  }
-  FdStr +=3D  ");\n";
-  InsertText(FunLocStart, FdStr);
-  CurFunctionDeclToDeclareForBlock =3D 0;
-}
-
-// SynthSuperContructorFunctionDecl - id objc_super(id obj, id super);
+// SynthSuperContructorFunctionDecl - id __rw_objc_super(id obj, id super);
 void RewriteModernObjC::SynthSuperContructorFunctionDecl() {
   if (SuperContructorFunctionDecl)
     return;
@@ -2311,21 +2286,13 @@
                                          SC_None, false);
 }
=20
-// SynthMsgSendSuperFunctionDecl - id objc_msgSendSuper(struct objc_super =
*, SEL op, ...);
+// SynthMsgSendSuperFunctionDecl - id objc_msgSendSuper(void);
 void RewriteModernObjC::SynthMsgSendSuperFunctionDecl() {
   IdentifierInfo *msgSendIdent =3D &Context->Idents.get("objc_msgSendSuper=
");
-  SmallVector<QualType, 16> ArgTys;
-  RecordDecl *RD =3D RecordDecl::Create(*Context, TTK_Struct, TUDecl,
-                                      SourceLocation(), SourceLocation(),
-                                      &Context->Idents.get("objc_super"));
-  QualType argT =3D Context->getPointerType(Context->getTagDeclType(RD));
-  assert(!argT.isNull() && "Can't build 'struct objc_super *' type");
-  ArgTys.push_back(argT);
-  argT =3D Context->getObjCSelType();
-  assert(!argT.isNull() && "Can't find 'SEL' type");
-  ArgTys.push_back(argT);
+  SmallVector<QualType, 2> ArgTys;
+  ArgTys.push_back(Context->VoidTy);
   QualType msgSendType =3D getSimpleFunctionType(Context->getObjCIdType(),
-                                               &ArgTys[0], ArgTys.size(),
+                                               &ArgTys[0], 1,
                                                true /*isVariadic*/);
   MsgSendSuperFunctionDecl =3D FunctionDecl::Create(*Context, TUDecl,
                                               SourceLocation(),
@@ -2357,22 +2324,14 @@
 }
=20
 // SynthMsgSendSuperStretFunctionDecl -
-// id objc_msgSendSuper_stret(struct objc_super *, SEL op, ...);
+// id objc_msgSendSuper_stret(void);
 void RewriteModernObjC::SynthMsgSendSuperStretFunctionDecl() {
   IdentifierInfo *msgSendIdent =3D
     &Context->Idents.get("objc_msgSendSuper_stret");
-  SmallVector<QualType, 16> ArgTys;
-  RecordDecl *RD =3D RecordDecl::Create(*Context, TTK_Struct, TUDecl,
-                                      SourceLocation(), SourceLocation(),
-                                      &Context->Idents.get("objc_super"));
-  QualType argT =3D Context->getPointerType(Context->getTagDeclType(RD));
-  assert(!argT.isNull() && "Can't build 'struct objc_super *' type");
-  ArgTys.push_back(argT);
-  argT =3D Context->getObjCSelType();
-  assert(!argT.isNull() && "Can't find 'SEL' type");
-  ArgTys.push_back(argT);
+  SmallVector<QualType, 2> ArgTys;
+  ArgTys.push_back(Context->VoidTy);
   QualType msgSendType =3D getSimpleFunctionType(Context->getObjCIdType(),
-                                               &ArgTys[0], ArgTys.size(),
+                                               &ArgTys[0], 1,
                                                true /*isVariadic*/);
   MsgSendSuperStretFunctionDecl =3D FunctionDecl::Create(*Context, TUDecl,
                                                        SourceLocation(),
@@ -2925,18 +2884,20 @@
   return CE;
 }
=20
-// struct objc_super { struct objc_object *receiver; struct objc_class *su=
per; };
+// struct __rw_objc_super {=20
+//   struct objc_object *object; struct objc_object *superClass;=20
+// };
 QualType RewriteModernObjC::getSuperStructType() {
   if (!SuperStructDecl) {
     SuperStructDecl =3D RecordDecl::Create(*Context, TTK_Struct, TUDecl,
                                          SourceLocation(), SourceLocation(=
),
-                                         &Context->Idents.get("objc_super"=
));
+                                         &Context->Idents.get("__rw_objc_s=
uper"));
     QualType FieldTypes[2];
=20
-    // struct objc_object *receiver;
+    // struct objc_object *object;
     FieldTypes[0] =3D Context->getObjCIdType();
-    // struct objc_class *super;
-    FieldTypes[1] =3D Context->getObjCClassType();
+    // struct objc_object *superClass;
+    FieldTypes[1] =3D Context->getObjCIdType();
=20
     // Create fields
     for (unsigned i =3D 0; i < 2; ++i) {
@@ -3073,7 +3034,7 @@
                         NoTypeInfoCStyleCastExpr(Context,
                                                  Context->getObjCIdType(),
                                                  CK_BitCast, Cls));
-    // struct objc_super
+    // struct __rw_objc_super
     QualType superType =3D getSuperStructType();
     Expr *SuperRep;
=20
@@ -3091,7 +3052,7 @@
       // the structure definition in the header. The rewriter has it's own
       // internal definition (__rw_objc_super) that is uses. This is why
       // we need the cast below. For example:
-      // (struct objc_super *)&__rw_objc_super((id)self, (id)objc_getClass=
("SUPER"))
+      // (struct __rw_objc_super *)&__rw_objc_super((id)self, (id)objc_get=
Class("SUPER"))
       //
       SuperRep =3D new (Context) UnaryOperator(SuperRep, UO_AddrOf,
                                Context->getPointerType(SuperRep->getType()=
),
@@ -3101,7 +3062,7 @@
                                           Context->getPointerType(superTyp=
e),
                                           CK_BitCast, SuperRep);
     } else {
-      // (struct objc_super) { <exprs from above> }
+      // (struct __rw_objc_super) { <exprs from above> }
       InitListExpr *ILE =3D
         new (Context) InitListExpr(*Context, SourceLocation(),
                                    &InitExprs[0], InitExprs.size(),
@@ -3111,7 +3072,7 @@
       SuperRep =3D new (Context) CompoundLiteralExpr(SourceLocation(), sup=
erTInfo,
                                                    superType, VK_LValue,
                                                    ILE, false);
-      // struct objc_super *
+      // struct __rw_objc_super *
       SuperRep =3D new (Context) UnaryOperator(SuperRep, UO_AddrOf,
                                Context->getPointerType(SuperRep->getType()=
),
                                              VK_RValue, OK_Ordinary,
@@ -3183,7 +3144,7 @@
       // set 'super class', using class_getSuperclass().
       NoTypeInfoCStyleCastExpr(Context, Context->getObjCIdType(),
                                CK_BitCast, Cls));
-    // struct objc_super
+    // struct __rw_objc_super
     QualType superType =3D getSuperStructType();
     Expr *SuperRep;
=20
@@ -3200,7 +3161,7 @@
       // the structure definition in the header. The rewriter has it's own
       // internal definition (__rw_objc_super) that is uses. This is why
       // we need the cast below. For example:
-      // (struct objc_super *)&__rw_objc_super((id)self, (id)objc_getClass=
("SUPER"))
+      // (struct __rw_objc_super *)&__rw_objc_super((id)self, (id)objc_get=
Class("SUPER"))
       //
       SuperRep =3D new (Context) UnaryOperator(SuperRep, UO_AddrOf,
                                Context->getPointerType(SuperRep->getType()=
),
@@ -3210,7 +3171,7 @@
                                Context->getPointerType(superType),
                                CK_BitCast, SuperRep);
     } else {
-      // (struct objc_super) { <exprs from above> }
+      // (struct __rw_objc_super) { <exprs from above> }
       InitListExpr *ILE =3D
         new (Context) InitListExpr(*Context, SourceLocation(),
                                    &InitExprs[0], InitExprs.size(),
@@ -4022,11 +3983,25 @@
   return S;
 }
=20
+/// getFunctionSourceLocation - returns start location of a function
+/// definition. Complication arises when function has declared as
+/// extern "C" or extern "C" {...}
+static SourceLocation getFunctionSourceLocation (FunctionDecl *FD) {
+  if (!FD->isExternC() || FD->isMain())
+    return FD->getTypeSpecStartLoc();
+  const DeclContext *DC =3D FD->getDeclContext();
+  if (const LinkageSpecDecl *LSD =3D dyn_cast<LinkageSpecDecl>(DC)) {
+    SourceLocation BodyRBrace =3D LSD->getRBraceLoc();
+    // if it is extern "C" {...}, return function decl's own location.
+    if (BodyRBrace.isValid())
+      return FD->getTypeSpecStartLoc();
+    return LSD->getExternLoc();
+  }
+  return FD->getTypeSpecStartLoc();
+}
+
 void RewriteModernObjC::SynthesizeBlockLiterals(SourceLocation FunLocStart,
                                           StringRef FunName) {
-  // Insert declaration for the function in which block literal is used.
-  if (CurFunctionDeclToDeclareForBlock && !Blocks.empty())
-    RewriteBlockLiteralFunctionDecl(CurFunctionDeclToDeclareForBlock);
   bool RewriteSC =3D (GlobalVarDecl &&
                     !Blocks.empty() &&
                     GlobalVarDecl->getStorageClass() =3D=3D SC_Static &&
@@ -4135,7 +4110,7 @@
 }
=20
 void RewriteModernObjC::InsertBlockLiteralsWithinFunction(FunctionDecl *FD=
) {
-  SourceLocation FunLocStart =3D FD->getTypeSpecStartLoc();
+  SourceLocation FunLocStart =3D getFunctionSourceLocation(FD);
   StringRef FuncName =3D FD->getName();
=20
   SynthesizeBlockLiterals(FunLocStart, FuncName);
@@ -4170,11 +4145,15 @@
         GetBlockDeclRefExprs(*CI);
     }
   // Handle specific things.
-  if (DeclRefExpr *DRE =3D dyn_cast<DeclRefExpr>(S))
-    if (DRE->refersToEnclosingLocal() &&
-        HasLocalVariableExternalStorage(DRE->getDecl())) {
-      BlockDeclRefs.push_back(DRE);
+  if (DeclRefExpr *DRE =3D dyn_cast<DeclRefExpr>(S)) {
+    if (DRE->refersToEnclosingLocal()) {
+      // FIXME: Handle enums.
+      if (!isa<FunctionDecl>(DRE->getDecl()))
+        BlockDeclRefs.push_back(DRE);
+      if (HasLocalVariableExternalStorage(DRE->getDecl()))
+        BlockDeclRefs.push_back(DRE);
     }
+  }
  =20
   return;
 }
@@ -4474,19 +4453,18 @@
=20
 void RewriteModernObjC::RewriteImplicitCastObjCExpr(CastExpr *IC) {
   CastKind CastKind =3D IC->getCastKind();
- =20
-  if (CastKind =3D=3D CK_BlockPointerToObjCPointerCast) {
-    CStyleCastExpr * CastExpr =3D=20
-      NoTypeInfoCStyleCastExpr(Context, IC->getType(), CK_BitCast, IC);
-    ReplaceStmt(IC, CastExpr);
-  }
-  else if (CastKind =3D=3D CK_AnyPointerToBlockPointerCast) {
-    QualType BlockT =3D IC->getType();
-    (void)convertBlockPointerToFunctionPointer(BlockT);
-    CStyleCastExpr * CastExpr =3D=20
-      NoTypeInfoCStyleCastExpr(Context, BlockT, CK_BitCast, IC);
-    ReplaceStmt(IC, CastExpr);
-  }
+  if (CastKind !=3D CK_BlockPointerToObjCPointerCast &&
+      CastKind !=3D CK_AnyPointerToBlockPointerCast)
+    return;
+ =20
+  QualType QT =3D IC->getType();
+  (void)convertBlockPointerToFunctionPointer(QT);
+  std::string TypeString(QT.getAsString(Context->getPrintingPolicy()));
+  std::string Str =3D "(";
+  Str +=3D TypeString;
+  Str +=3D ")";
+  InsertText(IC->getSubExpr()->getLocStart(), &Str[0], Str.size());
+
   return;
 }
=20
@@ -4742,10 +4720,6 @@
 ///
 ///
 void RewriteModernObjC::RewriteByRefVar(VarDecl *ND) {
-  // Insert declaration for the function in which block literal is
-  // used.
-  if (CurFunctionDeclToDeclareForBlock)
-    RewriteBlockLiteralFunctionDecl(CurFunctionDeclToDeclareForBlock);
   int flag =3D 0;
   int isa =3D 0;
   SourceLocation DeclLoc =3D ND->getTypeSpecStartLoc();
@@ -4784,7 +4758,7 @@
   // Insert this type in global scope. It is needed by helper function.
   SourceLocation FunLocStart;
   if (CurFunctionDef)
-     FunLocStart =3D CurFunctionDef->getTypeSpecStartLoc();
+     FunLocStart =3D getFunctionSourceLocation(CurFunctionDef);
   else {
     assert(CurMethodDef && "RewriteByRefVar - CurMethodDef is null");
     FunLocStart =3D CurMethodDef->getLocStart();
@@ -5375,6 +5349,7 @@
     RewriteImplicitCastObjCExpr(ICE);
   }
 #if 0
+
   if (ImplicitCastExpr *ICE =3D dyn_cast<ImplicitCastExpr>(S)) {
     CastExpr *Replacement =3D new (Context) CastExpr(ICE->getType(),
                                                    ICE->getSubExpr(),
@@ -5627,13 +5602,11 @@
     // These are currently generated.
     Preamble +=3D "\n#pragma section(\".objc_classlist$B\", long, read, wr=
ite)\n";
     Preamble +=3D "#pragma section(\".objc_catlist$B\", long, read, write)=
\n";
-    Preamble +=3D "#pragma section(\".objc_protolist$B\", long, read, writ=
e)\n";
     Preamble +=3D "#pragma section(\".objc_imageinfo$B\", long, read, writ=
e)\n";
     Preamble +=3D "#pragma section(\".objc_nlclslist$B\", long, read, writ=
e)\n";
     Preamble +=3D "#pragma section(\".objc_nlcatlist$B\", long, read, writ=
e)\n";
     Preamble +=3D "#pragma section(\".objc_protorefs$B\", long, read, writ=
e)\n";
     // These are generated but not necessary for functionality.
-    Preamble +=3D "#pragma section(\".datacoal_nt$B\", long, read, write)\=
n";
     Preamble +=3D "#pragma section(\".cat_cls_meth$B\", long, read, write)=
\n";
     Preamble +=3D "#pragma section(\".inst_meth$B\", long, read, write)\n";
     Preamble +=3D "#pragma section(\".cls_meth$B\", long, read, write)\n";
@@ -6604,7 +6577,7 @@
   // Writer out root metadata for current protocol: struct _protocol_t
   Result +=3D "\n";
   if (LangOpts.MicrosoftExt)
-    Result +=3D "__declspec(allocate(\".datacoal_nt$B\")) ";
+    Result +=3D "static ";
   Result +=3D "struct _protocol_t _OBJC_PROTOCOL_";
   Result +=3D PDecl->getNameAsString();
   Result +=3D " __attribute__ ((used, section (\"__DATA,__datacoal_nt,coal=
esced\"))) =3D {\n";
@@ -6662,11 +6635,8 @@
   else
     Result +=3D "\t0\n};\n";
  =20
-  // Use this protocol meta-data to build protocol list table in section
-  // .objc_protolist$B
-  // Unspecified visibility means 'private extern'.
   if (LangOpts.MicrosoftExt)
-    Result +=3D "__declspec(allocate(\".objc_protolist$B\")) ";
+    Result +=3D "static ";
   Result +=3D "struct _protocol_t *";
   Result +=3D "_OBJC_LABEL_PROTOCOL_$_"; Result +=3D PDecl->getNameAsStrin=
g();
   Result +=3D " =3D &_OBJC_PROTOCOL_"; Result +=3D PDecl->getNameAsString(=
);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Rewr=
ite/RewriteRope.cpp
--- a/head/contrib/llvm/tools/clang/lib/Rewrite/RewriteRope.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Rewrite/RewriteRope.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -407,6 +407,11 @@
       Size =3D LHS->size() + RHS->size();
     }
=20
+    ~RopePieceBTreeInterior() {
+      for (unsigned i =3D 0, e =3D getNumChildren(); i !=3D e; ++i)
+        Children[i]->Destroy();
+    }
+
     bool isFull() const { return NumChildren =3D=3D 2*WidthFactor; }
=20
     unsigned getNumChildren() const { return NumChildren; }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/Sema.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp	Wed Jul 25 16:21:35 2=
012 +0300
@@ -103,6 +103,7 @@
     AnalysisWarnings(*this)
 {
   TUScope =3D 0;
+ =20
   LoadedExternalKnownNamespaces =3D false;
   for (unsigned I =3D 0; I !=3D NSAPI::NumNSNumberLiteralMethods; ++I)
     NSNumberLiteralMethods[I] =3D 0;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaAccess.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -779,6 +779,13 @@
         // that the naming class has to be derived from the effective
         // context.
=20
+        // Emulate a MSVC bug where the creation of pointer-to-member
+        // to protected member of base class is allowed but only from
+        // a static function member functions.
+        if (S.getLangOpts().MicrosoftMode && !EC.Functions.empty())
+          if (CXXMethodDecl* MD =3D dyn_cast<CXXMethodDecl>(EC.Functions.f=
ront()))
+            if (MD->isStatic()) return AR_accessible;
+
         // Despite the standard's confident wording, there is a case
         // where you can have an instance member that's neither in a
         // pointer-to-member expression nor in a member access:  when
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -4471,6 +4471,11 @@
   return false;
 }
=20
+static bool hasDelayedExceptionSpec(CXXMethodDecl *Method) {
+  const FunctionProtoType *Proto =3DMethod->getType()->getAs<FunctionProto=
Type>();
+  return Proto && Proto->getExceptionSpecType() =3D=3D EST_Delayed;
+}
+
 /// AddOverriddenMethods - See if a method overrides any in the base class=
es,
 /// and if so, check that it's a valid override and remember it.
 bool Sema::AddOverriddenMethods(CXXRecordDecl *DC, CXXMethodDecl *MD) {
@@ -4486,7 +4491,8 @@
       if (CXXMethodDecl *OldMD =3D dyn_cast<CXXMethodDecl>(*I)) {
         MD->addOverriddenMethod(OldMD->getCanonicalDecl());
         if (!CheckOverridingFunctionReturnType(MD, OldMD) &&
-            !CheckOverridingFunctionExceptionSpec(MD, OldMD) &&
+            (hasDelayedExceptionSpec(MD) ||
+             !CheckOverridingFunctionExceptionSpec(MD, OldMD)) &&
             !CheckIfOverriddenFunctionIsMarkedFinal(MD, OldMD)) {
           AddedAny =3D true;
         }
@@ -5834,6 +5840,9 @@
           }
         }
       }
+     =20
+      if (Method->isStatic())
+        checkThisInStaticMemberFunctionType(Method);
     }
=20
     // Extra checking for C++ overloaded operators (C++ [over.oper]).
@@ -7176,8 +7185,7 @@
   }
 }
=20
-Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope,
-                                         Declarator &D) {
+Decl *Sema::ActOnStartOfFunctionDef(Scope *FnBodyScope, Declarator &D) {
   assert(getCurFunctionDecl() =3D=3D 0 && "Function parsing confused");
   assert(D.isFunctionDeclarator() && "Not a function declarator!");
   Scope *ParentScope =3D FnBodyScope->getParent();
@@ -7350,6 +7358,10 @@
     }
   }
=20
+  // Ensure that the function's exception specification is instantiated.
+  if (const FunctionProtoType *FPT =3D FD->getType()->getAs<FunctionProtoT=
ype>())
+    ResolveExceptionSpec(D->getLocation(), FPT);
+
   // Checking attributes of current function definition
   // dllimport attribute.
   DLLImportAttr *DA =3D FD->getAttr<DLLImportAttr>();
@@ -7554,7 +7566,11 @@
   // Always attach attributes to the underlying decl.
   if (TemplateDecl *TD =3D dyn_cast<TemplateDecl>(D))
     D =3D TD->getTemplatedDecl();
-  ProcessDeclAttributeList(S, D, Attrs.getList());
+  ProcessDeclAttributeList(S, D, Attrs.getList()); =20
+ =20
+  if (CXXMethodDecl *Method =3D dyn_cast_or_null<CXXMethodDecl>(D))
+    if (Method->isStatic())
+      checkThisInStaticMemberFunctionAttributes(Method);
 }
=20
=20
@@ -9768,21 +9784,6 @@
     if (!Completed)
       Record->completeDefinition();
=20
-    // Now that the record is complete, do any delayed exception spec chec=
ks
-    // we were missing.
-    while (!DelayedDestructorExceptionSpecChecks.empty()) {
-      const CXXDestructorDecl *Dtor =3D
-              DelayedDestructorExceptionSpecChecks.back().first;
-      if (Dtor->getParent() !=3D Record)
-        break;
-
-      assert(!Dtor->getParent()->isDependentType() &&
-          "Should not ever add destructors of templates into the list.");
-      CheckOverridingFunctionExceptionSpec(Dtor,
-          DelayedDestructorExceptionSpecChecks.back().second);
-      DelayedDestructorExceptionSpecChecks.pop_back();
-    }
-
   } else {
     ObjCIvarDecl **ClsFields =3D
       reinterpret_cast<ObjCIvarDecl**>(RecFields.data());
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaDeclCXX.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -25,6 +25,7 @@
 #include "clang/AST/DeclVisitor.h"
 #include "clang/AST/ExprCXX.h"
 #include "clang/AST/RecordLayout.h"
+#include "clang/AST/RecursiveASTVisitor.h"
 #include "clang/AST/StmtVisitor.h"
 #include "clang/AST/TypeLoc.h"
 #include "clang/AST/TypeOrdering.h"
@@ -124,14 +125,17 @@
   }
 }
=20
-void Sema::ImplicitExceptionSpecification::CalledDecl(CXXMethodDecl *Metho=
d) {
-  assert(Context && "ImplicitExceptionSpecification without an ASTContext"=
);
+void Sema::ImplicitExceptionSpecification::CalledDecl(SourceLocation CallL=
oc,
+                                                      CXXMethodDecl *Metho=
d) {
   // If we have an MSAny or unknown spec already, don't bother.
   if (!Method || ComputedEST =3D=3D EST_MSAny || ComputedEST =3D=3D EST_De=
layed)
     return;
=20
   const FunctionProtoType *Proto
     =3D Method->getType()->getAs<FunctionProtoType>();
+  Proto =3D Self->ResolveExceptionSpec(CallLoc, Proto);
+  if (!Proto)
+    return;
=20
   ExceptionSpecificationType EST =3D Proto->getExceptionSpecType();
=20
@@ -163,7 +167,8 @@
=20
   // Check out noexcept specs.
   if (EST =3D=3D EST_ComputedNoexcept) {
-    FunctionProtoType::NoexceptResult NR =3D Proto->getNoexceptSpec(*Conte=
xt);
+    FunctionProtoType::NoexceptResult NR =3D
+        Proto->getNoexceptSpec(Self->Context);
     assert(NR !=3D FunctionProtoType::NR_NoNoexcept &&
            "Must have noexcept result for EST_ComputedNoexcept.");
     assert(NR !=3D FunctionProtoType::NR_Dependent &&
@@ -187,7 +192,7 @@
   for (FunctionProtoType::exception_iterator E =3D Proto->exception_begin(=
),
                                           EEnd =3D Proto->exception_end();
        E !=3D EEnd; ++E)
-    if (ExceptionsSeen.insert(Context->getCanonicalType(*E)))
+    if (ExceptionsSeen.insert(Self->Context.getCanonicalType(*E)))
       Exceptions.push_back(*E);
 }
=20
@@ -216,7 +221,7 @@
   // implicit definition. For now, we assume that any non-nothrow expressi=
on can
   // throw any exception.
=20
-  if (E->CanThrow(*Context))
+  if (Self->canThrow(E))
     ComputedEST =3D EST_None;
 }
=20
@@ -3921,7 +3926,7 @@
     HadError =3D true;
   }
=20
-  ImplicitExceptionSpecification Spec(Context);
+  ImplicitExceptionSpecification Spec(*this);
   bool Const;
   llvm::tie(Spec, Const) =3D
     ComputeDefaultedCopyCtorExceptionSpecAndConst(CD->getParent());
@@ -4030,7 +4035,7 @@
     HadError =3D true;
   }
=20
-  ImplicitExceptionSpecification Spec(Context);
+  ImplicitExceptionSpecification Spec(*this);
   bool Const;
   llvm::tie(Spec, Const) =3D
     ComputeDefaultedCopyCtorExceptionSpecAndConst(MD->getParent());
@@ -5920,10 +5925,12 @@
      =20
   case UnqualifiedId::IK_ConstructorName:
   case UnqualifiedId::IK_ConstructorTemplateId:
-    // C++0x inherited constructors.
+    // C++11 inheriting constructors.
     Diag(Name.getLocStart(),
          getLangOpts().CPlusPlus0x ?
-           diag::warn_cxx98_compat_using_decl_constructor :
+           // FIXME: Produce warn_cxx98_compat_using_decl_constructor
+           //        instead once inheriting constructors work.
+           diag::err_using_decl_constructor_unsupported :
            diag::err_using_decl_constructor)
       << SS.getRange();
=20
@@ -6813,7 +6820,7 @@
   // C++ [except.spec]p14:
   //   An implicitly declared special member function (Clause 12) shall ha=
ve an=20
   //   exception-specification. [...]
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
   if (ClassDecl->isInvalidDecl())
     return ExceptSpec;
=20
@@ -6830,7 +6837,7 @@
       // If this is a deleted function, add it anyway. This might be confo=
rmant
       // with the standard. This might not. I'm not sure. It might not mat=
ter.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(B->getLocStart(), Constructor);
     }
   }
=20
@@ -6844,7 +6851,7 @@
       // If this is a deleted function, add it anyway. This might be confo=
rmant
       // with the standard. This might not. I'm not sure. It might not mat=
ter.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(B->getLocStart(), Constructor);
     }
   }
=20
@@ -6867,7 +6874,7 @@
       // might just be ill-formed because this function attempts to refer =
to
       // a deleted function here.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(F->getLocation(), Constructor);
     }
   }
=20
@@ -6989,6 +6996,7 @@
   const FunctionProtoType *CtorTy =3D
     CtorDecl->getType()->castAs<FunctionProtoType>();
   if (CtorTy->getExceptionSpecType() =3D=3D EST_Delayed) {
+    // FIXME: Don't do this unless the exception spec is needed.
     ImplicitExceptionSpecification Spec =3D=20
       ComputeDefaultedDefaultCtorExceptionSpec(ClassDecl);
     FunctionProtoType::ExtProtoInfo EPI =3D Spec.getEPI();
@@ -7189,7 +7197,7 @@
   // C++ [except.spec]p14:=20
   //   An implicitly declared special member function (Clause 12) shall ha=
ve=20
   //   an exception-specification.
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
   if (ClassDecl->isInvalidDecl())
     return ExceptSpec;
=20
@@ -7201,7 +7209,7 @@
       continue;
    =20
     if (const RecordType *BaseType =3D B->getType()->getAs<RecordType>())
-      ExceptSpec.CalledDecl(
+      ExceptSpec.CalledDecl(B->getLocStart(),
                    LookupDestructor(cast<CXXRecordDecl>(BaseType->getDecl(=
))));
   }
=20
@@ -7210,7 +7218,7 @@
                                        BEnd =3D ClassDecl->vbases_end();
        B !=3D BEnd; ++B) {
     if (const RecordType *BaseType =3D B->getType()->getAs<RecordType>())
-      ExceptSpec.CalledDecl(
+      ExceptSpec.CalledDecl(B->getLocStart(),
                   LookupDestructor(cast<CXXRecordDecl>(BaseType->getDecl()=
)));
   }
=20
@@ -7220,7 +7228,7 @@
        F !=3D FEnd; ++F) {
     if (const RecordType *RecordTy
         =3D Context.getBaseElementType(F->getType())->getAs<RecordType>())
-      ExceptSpec.CalledDecl(
+      ExceptSpec.CalledDecl(F->getLocation(),
                   LookupDestructor(cast<CXXRecordDecl>(RecordTy->getDecl()=
)));
   }
=20
@@ -7311,15 +7319,42 @@
   }
 }
=20
+/// \brief Perform any semantic analysis which needs to be delayed until a=
ll
+/// pending class member declarations have been parsed.
+void Sema::ActOnFinishCXXMemberDecls() {
+  // Now we have parsed all exception specifications, determine the implic=
it
+  // exception specifications for destructors.
+  for (unsigned i =3D 0, e =3D DelayedDestructorExceptionSpecs.size();
+       i !=3D e; ++i) {
+    CXXDestructorDecl *Dtor =3D DelayedDestructorExceptionSpecs[i];
+    AdjustDestructorExceptionSpec(Dtor->getParent(), Dtor, true);
+  }
+  DelayedDestructorExceptionSpecs.clear();
+
+  // Perform any deferred checking of exception specifications for virtual
+  // destructors.
+  for (unsigned i =3D 0, e =3D DelayedDestructorExceptionSpecChecks.size();
+       i !=3D e; ++i) {
+    const CXXDestructorDecl *Dtor =3D
+        DelayedDestructorExceptionSpecChecks[i].first;
+    assert(!Dtor->getParent()->isDependentType() &&
+           "Should not ever add destructors of templates into the list.");
+    CheckOverridingFunctionExceptionSpec(Dtor,
+        DelayedDestructorExceptionSpecChecks[i].second);
+  }
+  DelayedDestructorExceptionSpecChecks.clear();
+}
+
 void Sema::AdjustDestructorExceptionSpec(CXXRecordDecl *classDecl,
-                                         CXXDestructorDecl *destructor) {
+                                         CXXDestructorDecl *destructor,
+                                         bool WasDelayed) {
   // C++11 [class.dtor]p3:
   //   A declaration of a destructor that does not have an exception-
   //   specification is implicitly considered to have the same exception-
   //   specification as an implicit declaration.
   const FunctionProtoType *dtorType =3D destructor->getType()->
                                         getAs<FunctionProtoType>();
-  if (dtorType->hasExceptionSpec())
+  if (!WasDelayed && dtorType->hasExceptionSpec())
     return;
=20
   ImplicitExceptionSpecification exceptSpec =3D
@@ -7336,6 +7371,14 @@
=20
   destructor->setType(ty);
=20
+  // If we can't compute the exception specification for this destructor y=
et
+  // (because it depends on an exception specification which we have not p=
arsed
+  // yet), make a note that we need to try again when the class is complet=
e.
+  if (epi.ExceptionSpecType =3D=3D EST_Delayed) {
+    assert(!WasDelayed && "couldn't compute destructor exception spec");
+    DelayedDestructorExceptionSpecs.push_back(destructor);
+  }
+
   // FIXME: If the destructor has a body that could throw, and the newly c=
reated
   // spec doesn't allow exceptions, we should emit a warning, because this
   // change in behavior can break conforming C++03 programs at runtime.
@@ -7545,7 +7588,7 @@
 Sema::ComputeDefaultedCopyAssignmentExceptionSpecAndConst(
                                                    CXXRecordDecl *ClassDec=
l) {
   if (ClassDecl->isInvalidDecl())
-    return std::make_pair(ImplicitExceptionSpecification(Context), false);
+    return std::make_pair(ImplicitExceptionSpecification(*this), false);
=20
   // C++ [class.copy]p10:
   //   If the class definition does not explicitly declare a copy
@@ -7571,8 +7614,9 @@
     assert(!Base->getType()->isDependentType() &&
            "Cannot generate implicit members for class with dependent base=
s.");
     CXXRecordDecl *BaseClassDecl =3D Base->getType()->getAsCXXRecordDecl();
-    LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, false, 0,
-                            &HasConstCopyAssignment);
+    HasConstCopyAssignment &=3D
+      (bool)LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const,
+                                    false, 0);
   }
=20
   // In C++11, the above citation has "or virtual" added
@@ -7583,8 +7627,9 @@
       assert(!Base->getType()->isDependentType() &&
              "Cannot generate implicit members for class with dependent ba=
ses.");
       CXXRecordDecl *BaseClassDecl =3D Base->getType()->getAsCXXRecordDecl=
();
-      LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, false, 0,
-                              &HasConstCopyAssignment);
+      HasConstCopyAssignment &=3D
+        (bool)LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const,
+                                      false, 0);
     }
   }
  =20
@@ -7598,8 +7643,9 @@
        ++Field) {
     QualType FieldType =3D Context.getBaseElementType((*Field)->getType());
     if (CXXRecordDecl *FieldClassDecl =3D FieldType->getAsCXXRecordDecl())=
 {
-      LookupCopyingAssignment(FieldClassDecl, Qualifiers::Const, false, 0,
-                              &HasConstCopyAssignment);
+      HasConstCopyAssignment &=3D
+        (bool)LookupCopyingAssignment(FieldClassDecl, Qualifiers::Const,
+                                      false, 0);
     }
   }
  =20
@@ -7618,7 +7664,7 @@
   // Based on a similar decision made for constness in C++0x, we're erring=
 on
   // the side of assuming such calls to be made regardless of whether they
   // actually happen.
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
   unsigned ArgQuals =3D HasConstCopyAssignment ? Qualifiers::Const : 0;
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->bases_begin(=
),
                                        BaseEnd =3D ClassDecl->bases_end();
@@ -7630,7 +7676,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXMethodDecl *CopyAssign =3D LookupCopyingAssignment(BaseClassDec=
l,
                                                             ArgQuals, fals=
e, 0))
-      ExceptSpec.CalledDecl(CopyAssign);
+      ExceptSpec.CalledDecl(Base->getLocStart(), CopyAssign);
   }
=20
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->vbases_begin=
(),
@@ -7640,7 +7686,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXMethodDecl *CopyAssign =3D LookupCopyingAssignment(BaseClassDec=
l,
                                                             ArgQuals, fals=
e, 0))
-      ExceptSpec.CalledDecl(CopyAssign);
+      ExceptSpec.CalledDecl(Base->getLocStart(), CopyAssign);
   }
=20
   for (CXXRecordDecl::field_iterator Field =3D ClassDecl->field_begin(),
@@ -7651,7 +7697,7 @@
     if (CXXRecordDecl *FieldClassDecl =3D FieldType->getAsCXXRecordDecl())=
 {
       if (CXXMethodDecl *CopyAssign =3D
           LookupCopyingAssignment(FieldClassDecl, ArgQuals, false, 0))
-        ExceptSpec.CalledDecl(CopyAssign);
+        ExceptSpec.CalledDecl(Field->getLocation(), CopyAssign);
     }
   }
=20
@@ -7664,7 +7710,7 @@
   // for determining the argument type of the operator. Note also that
   // operators taking an object instead of a reference are allowed.
=20
-  ImplicitExceptionSpecification Spec(Context);
+  ImplicitExceptionSpecification Spec(*this);
   bool Const;
   llvm::tie(Spec, Const) =3D
     ComputeDefaultedCopyAssignmentExceptionSpecAndConst(ClassDecl);
@@ -8031,7 +8077,7 @@
=20
 Sema::ImplicitExceptionSpecification
 Sema::ComputeDefaultedMoveAssignmentExceptionSpec(CXXRecordDecl *ClassDecl=
) {
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
=20
   if (ClassDecl->isInvalidDecl())
     return ExceptSpec;
@@ -8058,7 +8104,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXMethodDecl *MoveAssign =3D LookupMovingAssignment(BaseClassDecl,
                                                            false, 0))
-      ExceptSpec.CalledDecl(MoveAssign);
+      ExceptSpec.CalledDecl(Base->getLocStart(), MoveAssign);
   }
=20
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->vbases_begin=
(),
@@ -8068,7 +8114,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXMethodDecl *MoveAssign =3D LookupMovingAssignment(BaseClassDecl,
                                                            false, 0))
-      ExceptSpec.CalledDecl(MoveAssign);
+      ExceptSpec.CalledDecl(Base->getLocStart(), MoveAssign);
   }
=20
   for (CXXRecordDecl::field_iterator Field =3D ClassDecl->field_begin(),
@@ -8079,7 +8125,7 @@
     if (CXXRecordDecl *FieldClassDecl =3D FieldType->getAsCXXRecordDecl())=
 {
       if (CXXMethodDecl *MoveAssign =3D LookupMovingAssignment(FieldClassD=
ecl,
                                                              false, 0))
-        ExceptSpec.CalledDecl(MoveAssign);
+        ExceptSpec.CalledDecl(Field->getLocation(), MoveAssign);
     }
   }
=20
@@ -8577,7 +8623,7 @@
 std::pair<Sema::ImplicitExceptionSpecification, bool>
 Sema::ComputeDefaultedCopyCtorExceptionSpecAndConst(CXXRecordDecl *ClassDe=
cl) {
   if (ClassDecl->isInvalidDecl())
-    return std::make_pair(ImplicitExceptionSpecification(Context), false);
+    return std::make_pair(ImplicitExceptionSpecification(*this), false);
=20
   // C++ [class.copy]p5:
   //   The implicitly-declared copy constructor for a class X will
@@ -8602,8 +8648,8 @@
    =20
     CXXRecordDecl *BaseClassDecl
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
-    LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const,
-                             &HasConstCopyConstructor);
+    HasConstCopyConstructor &=3D
+      (bool)LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const);
   }
=20
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->vbases_begin=
(),
@@ -8612,8 +8658,8 @@
        ++Base) {
     CXXRecordDecl *BaseClassDecl
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
-    LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const,
-                             &HasConstCopyConstructor);
+    HasConstCopyConstructor &=3D
+      (bool)LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const);
   }
  =20
   //     -- for all the nonstatic data members of X that are of a
@@ -8626,8 +8672,8 @@
        ++Field) {
     QualType FieldType =3D Context.getBaseElementType((*Field)->getType());
     if (CXXRecordDecl *FieldClassDecl =3D FieldType->getAsCXXRecordDecl())=
 {
-      LookupCopyingConstructor(FieldClassDecl, Qualifiers::Const,
-                               &HasConstCopyConstructor);
+      HasConstCopyConstructor &=3D
+        (bool)LookupCopyingConstructor(FieldClassDecl, Qualifiers::Const);
     }
   }
   //   Otherwise, the implicitly declared copy constructor will have
@@ -8638,7 +8684,7 @@
   // C++ [except.spec]p14:
   //   An implicitly declared special member function (Clause 12) shall ha=
ve an=20
   //   exception-specification. [...]
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
   unsigned Quals =3D HasConstCopyConstructor? Qualifiers::Const : 0;
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->bases_begin(=
),
                                        BaseEnd =3D ClassDecl->bases_end();
@@ -8652,7 +8698,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXConstructorDecl *CopyConstructor =3D
           LookupCopyingConstructor(BaseClassDecl, Quals))
-      ExceptSpec.CalledDecl(CopyConstructor);
+      ExceptSpec.CalledDecl(Base->getLocStart(), CopyConstructor);
   }
   for (CXXRecordDecl::base_class_iterator Base =3D ClassDecl->vbases_begin=
(),
                                        BaseEnd =3D ClassDecl->vbases_end();
@@ -8662,7 +8708,7 @@
       =3D cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDec=
l());
     if (CXXConstructorDecl *CopyConstructor =3D
           LookupCopyingConstructor(BaseClassDecl, Quals))
-      ExceptSpec.CalledDecl(CopyConstructor);
+      ExceptSpec.CalledDecl(Base->getLocStart(), CopyConstructor);
   }
   for (CXXRecordDecl::field_iterator Field =3D ClassDecl->field_begin(),
                                   FieldEnd =3D ClassDecl->field_end();
@@ -8672,7 +8718,7 @@
     if (CXXRecordDecl *FieldClassDecl =3D FieldType->getAsCXXRecordDecl())=
 {
       if (CXXConstructorDecl *CopyConstructor =3D
         LookupCopyingConstructor(FieldClassDecl, Quals))
-      ExceptSpec.CalledDecl(CopyConstructor);
+      ExceptSpec.CalledDecl(Field->getLocation(), CopyConstructor);
     }
   }
=20
@@ -8685,7 +8731,7 @@
   //   If the class definition does not explicitly declare a copy
   //   constructor, one is declared implicitly.
=20
-  ImplicitExceptionSpecification Spec(Context);
+  ImplicitExceptionSpecification Spec(*this);
   bool Const;
   llvm::tie(Spec, Const) =3D
     ComputeDefaultedCopyCtorExceptionSpecAndConst(ClassDecl);
@@ -8783,7 +8829,7 @@
   // C++ [except.spec]p14:
   //   An implicitly declared special member function (Clause 12) shall ha=
ve an=20
   //   exception-specification. [...]
-  ImplicitExceptionSpecification ExceptSpec(Context);
+  ImplicitExceptionSpecification ExceptSpec(*this);
   if (ClassDecl->isInvalidDecl())
     return ExceptSpec;
=20
@@ -8800,7 +8846,7 @@
       // If this is a deleted function, add it anyway. This might be confo=
rmant
       // with the standard. This might not. I'm not sure. It might not mat=
ter.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(B->getLocStart(), Constructor);
     }
   }
=20
@@ -8814,7 +8860,7 @@
       // If this is a deleted function, add it anyway. This might be confo=
rmant
       // with the standard. This might not. I'm not sure. It might not mat=
ter.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(B->getLocStart(), Constructor);
     }
   }
=20
@@ -8832,7 +8878,7 @@
       // might just be ill-formed because this function attempts to refer =
to
       // a deleted function here.
       if (Constructor)
-        ExceptSpec.CalledDecl(Constructor);
+        ExceptSpec.CalledDecl(F->getLocation(), Constructor);
     }
   }
=20
@@ -10891,14 +10937,23 @@
=20
 void Sema::MarkVirtualMembersReferenced(SourceLocation Loc,
                                         const CXXRecordDecl *RD) {
-  for (CXXRecordDecl::method_iterator i =3D RD->method_begin(),=20
-       e =3D RD->method_end(); i !=3D e; ++i) {
-    CXXMethodDecl *MD =3D *i;
-
-    // C++ [basic.def.odr]p2:
-    //   [...] A virtual member function is used if it is not pure. [...]
-    if (MD->isVirtual() && !MD->isPure())
-      MarkFunctionReferenced(Loc, MD);
+  // Mark all functions which will appear in RD's vtable as used.
+  CXXFinalOverriderMap FinalOverriders;
+  RD->getFinalOverriders(FinalOverriders);
+  for (CXXFinalOverriderMap::const_iterator I =3D FinalOverriders.begin(),
+                                            E =3D FinalOverriders.end();
+       I !=3D E; ++I) {
+    for (OverridingMethods::const_iterator OI =3D I->second.begin(),
+                                           OE =3D I->second.end();
+         OI !=3D OE; ++OI) {
+      assert(OI->second.size() > 0 && "no final overrider");
+      CXXMethodDecl *Overrider =3D OI->second.front().Method;
+
+      // C++ [basic.def.odr]p2:
+      //   [...] A virtual member function is used if it is not pure. [...]
+      if (!Overrider->isPure())
+        MarkFunctionReferenced(Loc, Overrider);
+    }
   }
=20
   // Only classes that have virtual bases need a VTT.
@@ -11053,6 +11108,205 @@
     (*CI)->setInvalidDecl();
 }
=20
+namespace {
+  /// \brief AST visitor that finds references to the 'this' expression.
+  class FindCXXThisExpr : public RecursiveASTVisitor<FindCXXThisExpr> {
+    Sema &S;
+   =20
+  public:
+    explicit FindCXXThisExpr(Sema &S) : S(S) { }
+   =20
+    bool VisitCXXThisExpr(CXXThisExpr *E) {
+      S.Diag(E->getLocation(), diag::err_this_static_member_func)
+        << E->isImplicit();
+      return false;
+    }
+  };
+}
+
+bool Sema::checkThisInStaticMemberFunctionType(CXXMethodDecl *Method) {
+  TypeSourceInfo *TSInfo =3D Method->getTypeSourceInfo();
+  if (!TSInfo)
+    return false;
+ =20
+  TypeLoc TL =3D TSInfo->getTypeLoc();
+  FunctionProtoTypeLoc *ProtoTL =3D dyn_cast<FunctionProtoTypeLoc>(&TL);
+  if (!ProtoTL)
+    return false;
+ =20
+  // C++11 [expr.prim.general]p3:
+  //   [The expression this] shall not appear before the optional=20
+  //   cv-qualifier-seq and it shall not appear within the declaration of =
a=20
+  //   static member function (although its type and value category are de=
fined
+  //   within a static member function as they are within a non-static mem=
ber
+  //   function). [ Note: this is because declaration matching does not oc=
cur
+  //  until the complete declarator is known. - end note ]
+  const FunctionProtoType *Proto =3D ProtoTL->getTypePtr();
+  FindCXXThisExpr Finder(*this);
+ =20
+  // If the return type came after the cv-qualifier-seq, check it now.
+  if (Proto->hasTrailingReturn() &&
+      !Finder.TraverseTypeLoc(ProtoTL->getResultLoc()))
+    return true;
+
+  // Check the exception specification.
+  if (checkThisInStaticMemberFunctionExceptionSpec(Method))
+    return true;
+ =20
+  return checkThisInStaticMemberFunctionAttributes(Method);
+}
+
+bool Sema::checkThisInStaticMemberFunctionExceptionSpec(CXXMethodDecl *Met=
hod) {
+  TypeSourceInfo *TSInfo =3D Method->getTypeSourceInfo();
+  if (!TSInfo)
+    return false;
+ =20
+  TypeLoc TL =3D TSInfo->getTypeLoc();
+  FunctionProtoTypeLoc *ProtoTL =3D dyn_cast<FunctionProtoTypeLoc>(&TL);
+  if (!ProtoTL)
+    return false;
+ =20
+  const FunctionProtoType *Proto =3D ProtoTL->getTypePtr();
+  FindCXXThisExpr Finder(*this);
+
+  switch (Proto->getExceptionSpecType()) {
+  case EST_Uninstantiated:
+  case EST_BasicNoexcept:
+  case EST_Delayed:
+  case EST_DynamicNone:
+  case EST_MSAny:
+  case EST_None:
+    break;
+   =20
+  case EST_ComputedNoexcept:
+    if (!Finder.TraverseStmt(Proto->getNoexceptExpr()))
+      return true;
+   =20
+  case EST_Dynamic:
+    for (FunctionProtoType::exception_iterator E =3D Proto->exception_begi=
n(),
+         EEnd =3D Proto->exception_end();
+         E !=3D EEnd; ++E) {
+      if (!Finder.TraverseType(*E))
+        return true;
+    }
+    break;
+  }
+
+  return false;
+}
+
+bool Sema::checkThisInStaticMemberFunctionAttributes(CXXMethodDecl *Method=
) {
+  FindCXXThisExpr Finder(*this);
+
+  // Check attributes.
+  for (Decl::attr_iterator A =3D Method->attr_begin(), AEnd =3D Method->at=
tr_end();
+       A !=3D AEnd; ++A) {
+    // FIXME: This should be emitted by tblgen.
+    Expr *Arg =3D 0;
+    ArrayRef<Expr *> Args;
+    if (GuardedByAttr *G =3D dyn_cast<GuardedByAttr>(*A))
+      Arg =3D G->getArg();
+    else if (PtGuardedByAttr *G =3D dyn_cast<PtGuardedByAttr>(*A))
+      Arg =3D G->getArg();
+    else if (AcquiredAfterAttr *AA =3D dyn_cast<AcquiredAfterAttr>(*A))
+      Args =3D ArrayRef<Expr *>(AA->args_begin(), AA->args_size());
+    else if (AcquiredBeforeAttr *AB =3D dyn_cast<AcquiredBeforeAttr>(*A))
+      Args =3D ArrayRef<Expr *>(AB->args_begin(), AB->args_size());
+    else if (ExclusiveLockFunctionAttr *ELF=20
+               =3D dyn_cast<ExclusiveLockFunctionAttr>(*A))
+      Args =3D ArrayRef<Expr *>(ELF->args_begin(), ELF->args_size());
+    else if (SharedLockFunctionAttr *SLF=20
+               =3D dyn_cast<SharedLockFunctionAttr>(*A))
+      Args =3D ArrayRef<Expr *>(SLF->args_begin(), SLF->args_size());
+    else if (ExclusiveTrylockFunctionAttr *ETLF
+               =3D dyn_cast<ExclusiveTrylockFunctionAttr>(*A)) {
+      Arg =3D ETLF->getSuccessValue();
+      Args =3D ArrayRef<Expr *>(ETLF->args_begin(), ETLF->args_size());
+    } else if (SharedTrylockFunctionAttr *STLF
+                 =3D dyn_cast<SharedTrylockFunctionAttr>(*A)) {
+      Arg =3D STLF->getSuccessValue();
+      Args =3D ArrayRef<Expr *>(STLF->args_begin(), STLF->args_size());
+    } else if (UnlockFunctionAttr *UF =3D dyn_cast<UnlockFunctionAttr>(*A))
+      Args =3D ArrayRef<Expr *>(UF->args_begin(), UF->args_size());
+    else if (LockReturnedAttr *LR =3D dyn_cast<LockReturnedAttr>(*A))
+      Arg =3D LR->getArg();
+    else if (LocksExcludedAttr *LE =3D dyn_cast<LocksExcludedAttr>(*A))
+      Args =3D ArrayRef<Expr *>(LE->args_begin(), LE->args_size());
+    else if (ExclusiveLocksRequiredAttr *ELR=20
+               =3D dyn_cast<ExclusiveLocksRequiredAttr>(*A))
+      Args =3D ArrayRef<Expr *>(ELR->args_begin(), ELR->args_size());
+    else if (SharedLocksRequiredAttr *SLR=20
+               =3D dyn_cast<SharedLocksRequiredAttr>(*A))
+      Args =3D ArrayRef<Expr *>(SLR->args_begin(), SLR->args_size());
+
+    if (Arg && !Finder.TraverseStmt(Arg))
+      return true;
+   =20
+    for (unsigned I =3D 0, N =3D Args.size(); I !=3D N; ++I) {
+      if (!Finder.TraverseStmt(Args[I]))
+        return true;
+    }
+  }
+ =20
+  return false;
+}
+
+void
+Sema::checkExceptionSpecification(ExceptionSpecificationType EST,
+                                  ArrayRef<ParsedType> DynamicExceptions,
+                                  ArrayRef<SourceRange> DynamicExceptionRa=
nges,
+                                  Expr *NoexceptExpr,
+                                  llvm::SmallVectorImpl<QualType> &Excepti=
ons,
+                                  FunctionProtoType::ExtProtoInfo &EPI) {
+  Exceptions.clear();
+  EPI.ExceptionSpecType =3D EST;
+  if (EST =3D=3D EST_Dynamic) {
+    Exceptions.reserve(DynamicExceptions.size());
+    for (unsigned ei =3D 0, ee =3D DynamicExceptions.size(); ei !=3D ee; +=
+ei) {
+      // FIXME: Preserve type source info.
+      QualType ET =3D GetTypeFromParser(DynamicExceptions[ei]);
+
+      SmallVector<UnexpandedParameterPack, 2> Unexpanded;
+      collectUnexpandedParameterPacks(ET, Unexpanded);
+      if (!Unexpanded.empty()) {
+        DiagnoseUnexpandedParameterPacks(DynamicExceptionRanges[ei].getBeg=
in(),
+                                         UPPC_ExceptionType,
+                                         Unexpanded);
+        continue;
+      }
+
+      // Check that the type is valid for an exception spec, and
+      // drop it if not.
+      if (!CheckSpecifiedExceptionType(ET, DynamicExceptionRanges[ei]))
+        Exceptions.push_back(ET);
+    }
+    EPI.NumExceptions =3D Exceptions.size();
+    EPI.Exceptions =3D Exceptions.data();
+    return;
+  }
+ =20
+  if (EST =3D=3D EST_ComputedNoexcept) {
+    // If an error occurred, there's no expression here.
+    if (NoexceptExpr) {
+      assert((NoexceptExpr->isTypeDependent() ||
+              NoexceptExpr->getType()->getCanonicalTypeUnqualified() =3D=
=3D
+              Context.BoolTy) &&
+             "Parser should have made sure that the expression is boolean"=
);
+      if (NoexceptExpr && DiagnoseUnexpandedParameterPack(NoexceptExpr)) {
+        EPI.ExceptionSpecType =3D EST_BasicNoexcept;
+        return;
+      }
+     =20
+      if (!NoexceptExpr->isValueDependent())
+        NoexceptExpr =3D VerifyIntegerConstantExpression(NoexceptExpr, 0,
+                         PDiag(diag::err_noexcept_needs_constant_expressio=
n),
+                         /*AllowFold*/ false).take();
+      EPI.NoexceptExpr =3D NoexceptExpr;
+    }
+    return;
+  }
+}
+
 /// IdentifyCUDATarget - Determine the CUDA compilation target for this fu=
nction
 Sema::CUDAFunctionTarget Sema::IdentifyCUDATarget(const FunctionDecl *D) {
   // Implicitly declared functions (e.g. copy constructors) are
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaExceptionSpec.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp	Wed Jul =
25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp	Wed Jul =
25 16:21:35 2012 +0300
@@ -96,6 +96,26 @@
   return FnT->hasExceptionSpec();
 }
=20
+const FunctionProtoType *
+Sema::ResolveExceptionSpec(SourceLocation Loc, const FunctionProtoType *FP=
T) {
+  // FIXME: If FD is a special member, we should delay computing its excep=
tion
+  // specification until this point.
+  if (FPT->getExceptionSpecType() !=3D EST_Uninstantiated)
+    return FPT;
+
+  FunctionDecl *SourceDecl =3D FPT->getExceptionSpecDecl();
+  const FunctionProtoType *SourceFPT =3D
+      SourceDecl->getType()->castAs<FunctionProtoType>();
+
+  if (SourceFPT->getExceptionSpecType() !=3D EST_Uninstantiated)
+    return SourceFPT;
+
+  // Instantiate the exception specification now.
+  InstantiateExceptionSpec(Loc, SourceDecl);
+
+  return SourceDecl->getType()->castAs<FunctionProtoType>();
+}
+
 bool Sema::CheckEquivalentExceptionSpec(FunctionDecl *Old, FunctionDecl *N=
ew) {
   OverloadedOperatorKind OO =3D New->getDeclName().getCXXOverloadedOperato=
r();
   bool IsOperatorNew =3D OO =3D=3D OO_New || OO =3D=3D OO_Array_New;
@@ -104,7 +124,7 @@
   unsigned DiagID =3D diag::err_mismatched_exception_spec;
   if (getLangOpts().MicrosoftExt)
     DiagID =3D diag::warn_mismatched_exception_spec;=20
- =20
+
   if (!CheckEquivalentExceptionSpec(PDiag(DiagID),
                                     PDiag(diag::note_previous_declaration),
                                     Old->getType()->getAs<FunctionProtoTyp=
e>(),
@@ -295,6 +315,13 @@
   if (MissingEmptyExceptionSpecification)
     *MissingEmptyExceptionSpecification =3D false;
=20
+  Old =3D ResolveExceptionSpec(NewLoc, Old);
+  if (!Old)
+    return false;
+  New =3D ResolveExceptionSpec(NewLoc, New);
+  if (!New)
+    return false;
+
   // C++0x [except.spec]p3: Two exception-specifications are compatible if:
   //   - both are non-throwing, regardless of their form,
   //   - both have the form noexcept(constant-expression) and the constant-
@@ -318,6 +345,7 @@
   ExceptionSpecificationType NewEST =3D New->getExceptionSpecType();
=20
   assert(OldEST !=3D EST_Delayed && NewEST !=3D EST_Delayed &&
+         OldEST !=3D EST_Uninstantiated && NewEST !=3D EST_Uninstantiated =
&&
          "Shouldn't see unknown exception specifications here");
=20
   // Shortcut the case where both have no spec.
@@ -483,6 +511,14 @@
   if (!SubLoc.isValid())
     SubLoc =3D SuperLoc;
=20
+  // Resolve the exception specifications, if needed.
+  Superset =3D ResolveExceptionSpec(SuperLoc, Superset);
+  if (!Superset)
+    return false;
+  Subset =3D ResolveExceptionSpec(SubLoc, Subset);
+  if (!Subset)
+    return false;
+
   ExceptionSpecificationType SuperEST =3D Superset->getExceptionSpecType();
=20
   // If superset contains everything, we're done.
@@ -507,6 +543,7 @@
   ExceptionSpecificationType SubEST =3D Subset->getExceptionSpecType();
=20
   assert(SuperEST !=3D EST_Delayed && SubEST !=3D EST_Delayed &&
+         SuperEST !=3D EST_Uninstantiated && SubEST !=3D EST_Uninstantiate=
d &&
          "Shouldn't see unknown exception specifications here");
=20
   // It does not. If the subset contains everything, we've failed.
@@ -726,4 +763,324 @@
                                   New->getLocation());
 }
=20
+static CanThrowResult canSubExprsThrow(Sema &S, const Expr *CE) {
+  Expr *E =3D const_cast<Expr*>(CE);
+  CanThrowResult R =3D CT_Cannot;
+  for (Expr::child_range I =3D E->children(); I && R !=3D CT_Can; ++I)
+    R =3D mergeCanThrow(R, S.canThrow(cast<Expr>(*I)));
+  return R;
+}
+
+static CanThrowResult canCalleeThrow(Sema &S, const Expr *E,
+                                           const Decl *D,
+                                           bool NullThrows =3D true) {
+  if (!D)
+    return NullThrows ? CT_Can : CT_Cannot;
+
+  // See if we can get a function type from the decl somehow.
+  const ValueDecl *VD =3D dyn_cast<ValueDecl>(D);
+  if (!VD) // If we have no clue what we're calling, assume the worst.
+    return CT_Can;
+
+  // As an extension, we assume that __attribute__((nothrow)) functions do=
n't
+  // throw.
+  if (isa<FunctionDecl>(D) && D->hasAttr<NoThrowAttr>())
+    return CT_Cannot;
+
+  QualType T =3D VD->getType();
+  const FunctionProtoType *FT;
+  if ((FT =3D T->getAs<FunctionProtoType>())) {
+  } else if (const PointerType *PT =3D T->getAs<PointerType>())
+    FT =3D PT->getPointeeType()->getAs<FunctionProtoType>();
+  else if (const ReferenceType *RT =3D T->getAs<ReferenceType>())
+    FT =3D RT->getPointeeType()->getAs<FunctionProtoType>();
+  else if (const MemberPointerType *MT =3D T->getAs<MemberPointerType>())
+    FT =3D MT->getPointeeType()->getAs<FunctionProtoType>();
+  else if (const BlockPointerType *BT =3D T->getAs<BlockPointerType>())
+    FT =3D BT->getPointeeType()->getAs<FunctionProtoType>();
+
+  if (!FT)
+    return CT_Can;
+
+  FT =3D S.ResolveExceptionSpec(E->getLocStart(), FT);
+  if (!FT)
+    return CT_Can;
+
+  if (FT->getExceptionSpecType() =3D=3D EST_Delayed) {
+    // FIXME: Try to resolve a delayed exception spec in ResolveExceptionS=
pec.
+    assert(isa<CXXConstructorDecl>(D) &&
+           "only constructor exception specs can be unknown");
+    S.Diag(E->getLocStart(), diag::err_exception_spec_unknown)
+      << E->getSourceRange();
+    return CT_Can;
+  }
+
+  return FT->isNothrow(S.Context) ? CT_Cannot : CT_Can;
+}
+
+static CanThrowResult canDynamicCastThrow(const CXXDynamicCastExpr *DC) {
+  if (DC->isTypeDependent())
+    return CT_Dependent;
+
+  if (!DC->getTypeAsWritten()->isReferenceType())
+    return CT_Cannot;
+
+  if (DC->getSubExpr()->isTypeDependent())
+    return CT_Dependent;
+
+  return DC->getCastKind() =3D=3D clang::CK_Dynamic? CT_Can : CT_Cannot;
+}
+
+static CanThrowResult canTypeidThrow(Sema &S, const CXXTypeidExpr *DC) {
+  if (DC->isTypeOperand())
+    return CT_Cannot;
+
+  Expr *Op =3D DC->getExprOperand();
+  if (Op->isTypeDependent())
+    return CT_Dependent;
+
+  const RecordType *RT =3D Op->getType()->getAs<RecordType>();
+  if (!RT)
+    return CT_Cannot;
+
+  if (!cast<CXXRecordDecl>(RT->getDecl())->isPolymorphic())
+    return CT_Cannot;
+
+  if (Op->Classify(S.Context).isPRValue())
+    return CT_Cannot;
+
+  return CT_Can;
+}
+
+CanThrowResult Sema::canThrow(const Expr *E) {
+  // C++ [expr.unary.noexcept]p3:
+  //   [Can throw] if in a potentially-evaluated context the expression wo=
uld
+  //   contain:
+  switch (E->getStmtClass()) {
+  case Expr::CXXThrowExprClass:
+    //   - a potentially evaluated throw-expression
+    return CT_Can;
+
+  case Expr::CXXDynamicCastExprClass: {
+    //   - a potentially evaluated dynamic_cast expression dynamic_cast<T>=
(v),
+    //     where T is a reference type, that requires a run-time check
+    CanThrowResult CT =3D canDynamicCastThrow(cast<CXXDynamicCastExpr>(E));
+    if (CT =3D=3D CT_Can)
+      return CT;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+  case Expr::CXXTypeidExprClass:
+    //   - a potentially evaluated typeid expression applied to a glvalue
+    //     expression whose type is a polymorphic class type
+    return canTypeidThrow(*this, cast<CXXTypeidExpr>(E));
+
+    //   - a potentially evaluated call to a function, member function, fu=
nction
+    //     pointer, or member function pointer that does not have a non-th=
rowing
+    //     exception-specification
+  case Expr::CallExprClass:
+  case Expr::CXXMemberCallExprClass:
+  case Expr::CXXOperatorCallExprClass:
+  case Expr::UserDefinedLiteralClass: {
+    const CallExpr *CE =3D cast<CallExpr>(E);
+    CanThrowResult CT;
+    if (E->isTypeDependent())
+      CT =3D CT_Dependent;
+    else if (isa<CXXPseudoDestructorExpr>(CE->getCallee()->IgnoreParens()))
+      CT =3D CT_Cannot;
+    else
+      CT =3D canCalleeThrow(*this, E, CE->getCalleeDecl());
+    if (CT =3D=3D CT_Can)
+      return CT;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+  case Expr::CXXConstructExprClass:
+  case Expr::CXXTemporaryObjectExprClass: {
+    CanThrowResult CT =3D canCalleeThrow(*this, E,
+        cast<CXXConstructExpr>(E)->getConstructor());
+    if (CT =3D=3D CT_Can)
+      return CT;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+  case Expr::LambdaExprClass: {
+    const LambdaExpr *Lambda =3D cast<LambdaExpr>(E);
+    CanThrowResult CT =3D CT_Cannot;
+    for (LambdaExpr::capture_init_iterator Cap =3D Lambda->capture_init_be=
gin(),
+                                        CapEnd =3D Lambda->capture_init_en=
d();
+         Cap !=3D CapEnd; ++Cap)
+      CT =3D mergeCanThrow(CT, canThrow(*Cap));
+    return CT;
+  }
+
+  case Expr::CXXNewExprClass: {
+    CanThrowResult CT;
+    if (E->isTypeDependent())
+      CT =3D CT_Dependent;
+    else
+      CT =3D canCalleeThrow(*this, E, cast<CXXNewExpr>(E)->getOperatorNew(=
));
+    if (CT =3D=3D CT_Can)
+      return CT;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+  case Expr::CXXDeleteExprClass: {
+    CanThrowResult CT;
+    QualType DTy =3D cast<CXXDeleteExpr>(E)->getDestroyedType();
+    if (DTy.isNull() || DTy->isDependentType()) {
+      CT =3D CT_Dependent;
+    } else {
+      CT =3D canCalleeThrow(*this, E,
+                          cast<CXXDeleteExpr>(E)->getOperatorDelete());
+      if (const RecordType *RT =3D DTy->getAs<RecordType>()) {
+        const CXXRecordDecl *RD =3D cast<CXXRecordDecl>(RT->getDecl());
+        CT =3D mergeCanThrow(CT, canCalleeThrow(*this, E, RD->getDestructo=
r()));
+      }
+      if (CT =3D=3D CT_Can)
+        return CT;
+    }
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+  case Expr::CXXBindTemporaryExprClass: {
+    // The bound temporary has to be destroyed again, which might throw.
+    CanThrowResult CT =3D canCalleeThrow(*this, E,
+      cast<CXXBindTemporaryExpr>(E)->getTemporary()->getDestructor());
+    if (CT =3D=3D CT_Can)
+      return CT;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+    // ObjC message sends are like function calls, but never have exception
+    // specs.
+  case Expr::ObjCMessageExprClass:
+  case Expr::ObjCPropertyRefExprClass:
+  case Expr::ObjCSubscriptRefExprClass:
+    return CT_Can;
+
+    // All the ObjC literals that are implemented as calls are
+    // potentially throwing unless we decide to close off that
+    // possibility.
+  case Expr::ObjCArrayLiteralClass:
+  case Expr::ObjCDictionaryLiteralClass:
+  case Expr::ObjCNumericLiteralClass:
+    return CT_Can;
+
+    // Many other things have subexpressions, so we have to test those.
+    // Some are simple:
+  case Expr::ConditionalOperatorClass:
+  case Expr::CompoundLiteralExprClass:
+  case Expr::CXXConstCastExprClass:
+  case Expr::CXXDefaultArgExprClass:
+  case Expr::CXXReinterpretCastExprClass:
+  case Expr::DesignatedInitExprClass:
+  case Expr::ExprWithCleanupsClass:
+  case Expr::ExtVectorElementExprClass:
+  case Expr::InitListExprClass:
+  case Expr::MemberExprClass:
+  case Expr::ObjCIsaExprClass:
+  case Expr::ObjCIvarRefExprClass:
+  case Expr::ParenExprClass:
+  case Expr::ParenListExprClass:
+  case Expr::ShuffleVectorExprClass:
+  case Expr::VAArgExprClass:
+    return canSubExprsThrow(*this, E);
+
+    // Some might be dependent for other reasons.
+  case Expr::ArraySubscriptExprClass:
+  case Expr::BinaryOperatorClass:
+  case Expr::CompoundAssignOperatorClass:
+  case Expr::CStyleCastExprClass:
+  case Expr::CXXStaticCastExprClass:
+  case Expr::CXXFunctionalCastExprClass:
+  case Expr::ImplicitCastExprClass:
+  case Expr::MaterializeTemporaryExprClass:
+  case Expr::UnaryOperatorClass: {
+    CanThrowResult CT =3D E->isTypeDependent() ? CT_Dependent : CT_Cannot;
+    return mergeCanThrow(CT, canSubExprsThrow(*this, E));
+  }
+
+    // FIXME: We should handle StmtExpr, but that opens a MASSIVE can of w=
orms.
+  case Expr::StmtExprClass:
+    return CT_Can;
+
+  case Expr::ChooseExprClass:
+    if (E->isTypeDependent() || E->isValueDependent())
+      return CT_Dependent;
+    return canThrow(cast<ChooseExpr>(E)->getChosenSubExpr(Context));
+
+  case Expr::GenericSelectionExprClass:
+    if (cast<GenericSelectionExpr>(E)->isResultDependent())
+      return CT_Dependent;
+    return canThrow(cast<GenericSelectionExpr>(E)->getResultExpr());
+
+    // Some expressions are always dependent.
+  case Expr::CXXDependentScopeMemberExprClass:
+  case Expr::CXXUnresolvedConstructExprClass:
+  case Expr::DependentScopeDeclRefExprClass:
+    return CT_Dependent;
+
+  case Expr::AsTypeExprClass:
+  case Expr::BinaryConditionalOperatorClass:
+  case Expr::BlockExprClass:
+  case Expr::CUDAKernelCallExprClass:
+  case Expr::DeclRefExprClass:
+  case Expr::ObjCBridgedCastExprClass:
+  case Expr::ObjCIndirectCopyRestoreExprClass:
+  case Expr::ObjCProtocolExprClass:
+  case Expr::ObjCSelectorExprClass:
+  case Expr::OffsetOfExprClass:
+  case Expr::PackExpansionExprClass:
+  case Expr::PseudoObjectExprClass:
+  case Expr::SubstNonTypeTemplateParmExprClass:
+  case Expr::SubstNonTypeTemplateParmPackExprClass:
+  case Expr::UnaryExprOrTypeTraitExprClass:
+  case Expr::UnresolvedLookupExprClass:
+  case Expr::UnresolvedMemberExprClass:
+    // FIXME: Can any of the above throw?  If so, when?
+    return CT_Cannot;
+
+  case Expr::AddrLabelExprClass:
+  case Expr::ArrayTypeTraitExprClass:
+  case Expr::AtomicExprClass:
+  case Expr::BinaryTypeTraitExprClass:
+  case Expr::TypeTraitExprClass:
+  case Expr::CXXBoolLiteralExprClass:
+  case Expr::CXXNoexceptExprClass:
+  case Expr::CXXNullPtrLiteralExprClass:
+  case Expr::CXXPseudoDestructorExprClass:
+  case Expr::CXXScalarValueInitExprClass:
+  case Expr::CXXThisExprClass:
+  case Expr::CXXUuidofExprClass:
+  case Expr::CharacterLiteralClass:
+  case Expr::ExpressionTraitExprClass:
+  case Expr::FloatingLiteralClass:
+  case Expr::GNUNullExprClass:
+  case Expr::ImaginaryLiteralClass:
+  case Expr::ImplicitValueInitExprClass:
+  case Expr::IntegerLiteralClass:
+  case Expr::ObjCEncodeExprClass:
+  case Expr::ObjCStringLiteralClass:
+  case Expr::ObjCBoolLiteralExprClass:
+  case Expr::OpaqueValueExprClass:
+  case Expr::PredefinedExprClass:
+  case Expr::SizeOfPackExprClass:
+  case Expr::StringLiteralClass:
+  case Expr::UnaryTypeTraitExprClass:
+    // These expressions can never throw.
+    return CT_Cannot;
+
+#define STMT(CLASS, PARENT) case Expr::CLASS##Class:
+#define STMT_RANGE(Base, First, Last)
+#define LAST_STMT_RANGE(BASE, FIRST, LAST)
+#define EXPR(CLASS, PARENT)
+#define ABSTRACT_STMT(STMT)
+#include "clang/AST/StmtNodes.inc"
+  case Expr::NoStmtClass:
+    llvm_unreachable("Invalid class for expression");
+  }
+  llvm_unreachable("Bogus StmtClass");
+}
+
 } // end namespace clang
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaExpr.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -9438,10 +9438,11 @@
       PDiag(diag::err_expr_not_ice) << LangOpts.CPlusPlus);
 }
=20
-ExprResult Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Re=
sult,
-                                                 PartialDiagnostic NotIceD=
iag,
-                                                 bool AllowFold,
-                                                 PartialDiagnostic FoldDia=
g) {
+ExprResult
+Sema::VerifyIntegerConstantExpression(Expr *E, llvm::APSInt *Result,
+                                      const PartialDiagnostic &NotIceDiag,
+                                      bool AllowFold,
+                                      const PartialDiagnostic &FoldDiag) {
   SourceLocation DiagLoc =3D E->getLocStart();
=20
   if (getLangOpts().CPlusPlus0x) {
@@ -9773,6 +9774,12 @@
   // FIXME: Is this really right?
   if (CurContext =3D=3D Func) return;
=20
+  // Instantiate the exception specification for any function which is
+  // used: CodeGen will need it.
+  const FunctionProtoType *FPT =3D Func->getType()->getAs<FunctionProtoTyp=
e>();
+  if (FPT && FPT->getExceptionSpecType() =3D=3D EST_Uninstantiated)
+    InstantiateExceptionSpec(Loc, Func);
+
   // Implicit instantiation of function templates and member functions of
   // class templates.
   if (Func->isImplicitlyInstantiable()) {
@@ -11268,22 +11275,6 @@
 Sema::ActOnObjCBoolLiteral(SourceLocation OpLoc, tok::TokenKind Kind) {
   assert((Kind =3D=3D tok::kw___objc_yes || Kind =3D=3D tok::kw___objc_no)=
 &&
          "Unknown Objective-C Boolean value!");
-  QualType ObjCBoolLiteralQT =3D Context.ObjCBuiltinBoolTy;
-  // signed char is the default type for boolean literals. Use 'BOOL'
-  // instead, if BOOL typedef is visible in its scope instead.
-  Decl *TD =3D=20
-    LookupSingleName(TUScope, &Context.Idents.get("BOOL"),=20
-                     SourceLocation(), LookupOrdinaryName);
-  if (TypedefDecl *BoolTD =3D dyn_cast_or_null<TypedefDecl>(TD)) {
-    QualType QT =3D BoolTD->getUnderlyingType();
-    if (!QT->isIntegralOrUnscopedEnumerationType()) {
-      Diag(OpLoc, diag::warn_bool_for_boolean_literal) << QT;
-      Diag(BoolTD->getLocation(), diag::note_previous_declaration);
-    }
-    else
-      ObjCBoolLiteralQT =3D QT;
-  }
- =20
   return Owned(new (Context) ObjCBoolLiteralExpr(Kind =3D=3D tok::kw___obj=
c_yes,
-                                        ObjCBoolLiteralQT, OpLoc));
-}
+                                        Context.ObjCBuiltinBoolTy, OpLoc));
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaExprCXX.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -654,23 +654,44 @@
=20
 QualType Sema::getCurrentThisType() {
   DeclContext *DC =3D getFunctionLevelDeclContext();
-  QualType ThisTy;
+  QualType ThisTy =3D CXXThisTypeOverride;
   if (CXXMethodDecl *method =3D dyn_cast<CXXMethodDecl>(DC)) {
     if (method && method->isInstance())
       ThisTy =3D method->getThisType(Context);
-  } else if (CXXRecordDecl *RD =3D dyn_cast<CXXRecordDecl>(DC)) {
-    // C++0x [expr.prim]p4:
-    //   Otherwise, if a member-declarator declares a non-static data memb=
er
-    // of a class X, the expression this is a prvalue of type "pointer to =
X"
-    // within the optional brace-or-equal-initializer.
-    Scope *S =3D getScopeForContext(DC);
-    if (!S || S->getFlags() & Scope::ThisScope)
-      ThisTy =3D Context.getPointerType(Context.getRecordType(RD));
   }
-
+ =20
   return ThisTy;
 }
=20
+Sema::CXXThisScopeRAII::CXXThisScopeRAII(Sema &S,=20
+                                         Decl *ContextDecl,
+                                         unsigned CXXThisTypeQuals,
+                                         bool Enabled)=20
+  : S(S), OldCXXThisTypeOverride(S.CXXThisTypeOverride), Enabled(false)
+{
+  if (!Enabled || !ContextDecl)
+    return;
+ =20
+  CXXRecordDecl *Record =3D 0;
+  if (ClassTemplateDecl *Template =3D dyn_cast<ClassTemplateDecl>(ContextD=
ecl))
+    Record =3D Template->getTemplatedDecl();
+  else
+    Record =3D cast<CXXRecordDecl>(ContextDecl);
+   =20
+  S.CXXThisTypeOverride
+    =3D S.Context.getPointerType(
+        S.Context.getRecordType(Record).withCVRQualifiers(CXXThisTypeQuals=
));
+ =20
+  this->Enabled =3D true;
+}
+
+
+Sema::CXXThisScopeRAII::~CXXThisScopeRAII() {
+  if (Enabled) {
+    S.CXXThisTypeOverride =3D OldCXXThisTypeOverride;
+  }
+}
+
 void Sema::CheckCXXThisCapture(SourceLocation Loc, bool Explicit) {
   // We don't need to capture this in an unevaluated context.
   if (ExprEvalContexts.back().Context =3D=3D Unevaluated && !Explicit)
@@ -739,6 +760,18 @@
   return Owned(new (Context) CXXThisExpr(Loc, ThisTy, /*isImplicit=3D*/fal=
se));
 }
=20
+bool Sema::isThisOutsideMemberFunctionBody(QualType BaseType) {
+  // If we're outside the body of a member function, then we'll have a spe=
cified
+  // type for 'this'.
+  if (CXXThisTypeOverride.isNull())
+    return false;
+ =20
+  // Determine whether we're looking into a class that's currently being
+  // defined.
+  CXXRecordDecl *Class =3D BaseType->getAsCXXRecordDecl();
+  return Class && Class->isBeingDefined();
+}
+
 ExprResult
 Sema::ActOnCXXTypeConstructExpr(ParsedType TypeRep,
                                 SourceLocation LParenLoc,
@@ -3102,6 +3135,9 @@
             FoundAssign =3D true;
             const FunctionProtoType *CPT
                 =3D Operator->getType()->getAs<FunctionProtoType>();
+            CPT =3D Self.ResolveExceptionSpec(KeyLoc, CPT);
+            if (!CPT)
+              return false;
             if (CPT->getExceptionSpecType() =3D=3D EST_Delayed)
               return false;
             if (!CPT->isNothrow(Self.Context))
@@ -3141,6 +3177,9 @@
           FoundConstructor =3D true;
           const FunctionProtoType *CPT
               =3D Constructor->getType()->getAs<FunctionProtoType>();
+          CPT =3D Self.ResolveExceptionSpec(KeyLoc, CPT);
+          if (!CPT)
+            return false;
           if (CPT->getExceptionSpecType() =3D=3D EST_Delayed)
             return false;
           // FIXME: check whether evaluating default arguments can throw.
@@ -3176,6 +3215,9 @@
         if (Constructor->isDefaultConstructor()) {
           const FunctionProtoType *CPT
               =3D Constructor->getType()->getAs<FunctionProtoType>();
+          CPT =3D Self.ResolveExceptionSpec(KeyLoc, CPT);
+          if (!CPT)
+            return false;
           if (CPT->getExceptionSpecType() =3D=3D EST_Delayed)
             return false;
           // TODO: check whether evaluating default arguments can throw.
@@ -4784,8 +4826,13 @@
     return Owned(Base);
   }
=20
-  // The object type must be complete (or dependent).
+  // The object type must be complete (or dependent), or
+  // C++11 [expr.prim.general]p3:
+  //   Unlike the object expression in other contexts, *this is not requir=
ed to
+  //   be of complete type for purposes of class member access (5.2.5) out=
side=20
+  //   the member function body.
   if (!BaseType->isDependentType() &&
+      !isThisOutsideMemberFunctionBody(BaseType) &&
       RequireCompleteType(OpLoc, BaseType,
                           PDiag(diag::err_incomplete_member_access)))
     return ExprError();
@@ -5165,9 +5212,9 @@
=20
 ExprResult Sema::BuildCXXNoexceptExpr(SourceLocation KeyLoc, Expr *Operand,
                                       SourceLocation RParen) {
+  CanThrowResult CanThrow =3D canThrow(Operand);
   return Owned(new (Context) CXXNoexceptExpr(Context.BoolTy, Operand,
-                                             Operand->CanThrow(Context),
-                                             KeyLoc, RParen));
+                                             CanThrow, KeyLoc, RParen));
 }
=20
 ExprResult Sema::ActOnNoexceptExpr(SourceLocation KeyLoc, SourceLocation,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaExprMember.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp	Wed Jul 25 =
16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp	Wed Jul 25 =
16:21:35 2012 +0300
@@ -101,16 +101,8 @@
=20
   DeclContext *DC =3D SemaRef.getFunctionLevelDeclContext();
=20
-  bool isStaticContext =3D
-    (!isa<CXXMethodDecl>(DC) ||
-     cast<CXXMethodDecl>(DC)->isStatic());
-
-  // C++0x [expr.prim]p4:
-  //   Otherwise, if a member-declarator declares a non-static data member
-  // of a class X, the expression this is a prvalue of type "pointer to X"
-  // within the optional brace-or-equal-initializer.
-  if (CurScope->getFlags() & Scope::ThisScope)
-    isStaticContext =3D false;
+  bool isStaticContext =3D SemaRef.CXXThisTypeOverride.isNull() &&
+    (!isa<CXXMethodDecl>(DC) || cast<CXXMethodDecl>(DC)->isStatic());
=20
   if (R.isUnresolvableResult())
     return isStaticContext ? IMA_Unresolved_StaticContext : IMA_Unresolved;
@@ -549,12 +541,13 @@
 }
=20
 static bool
-LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R,
+LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R,=20
                          SourceRange BaseRange, const RecordType *RTy,
                          SourceLocation OpLoc, CXXScopeSpec &SS,
                          bool HasTemplateArgs) {
   RecordDecl *RDecl =3D RTy->getDecl();
-  if (SemaRef.RequireCompleteType(OpLoc, QualType(RTy, 0),
+  if (!SemaRef.isThisOutsideMemberFunctionBody(QualType(RTy, 0)) &&
+      SemaRef.RequireCompleteType(OpLoc, QualType(RTy, 0),
                               SemaRef.PDiag(diag::err_typecheck_incomplete=
_tag)
                                     << BaseRange))
     return true;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaLookup.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -2277,7 +2277,7 @@
     Result->setMethod(DD);
     Result->setKind(DD->isDeleted() ?
                     SpecialMemberOverloadResult::NoMemberOrDeleted :
-                    SpecialMemberOverloadResult::SuccessNonConst);
+                    SpecialMemberOverloadResult::Success);
     return Result;
   }
=20
@@ -2288,6 +2288,9 @@
   Expr *Arg =3D 0;
   unsigned NumArgs;
=20
+  QualType ArgType =3D CanTy;
+  ExprValueKind VK =3D VK_LValue;
+
   if (SM =3D=3D CXXDefaultConstructor) {
     Name =3D Context.DeclarationNames.getCXXConstructorName(CanTy);
     NumArgs =3D 0;
@@ -2308,7 +2311,6 @@
         DeclareImplicitMoveAssignment(RD);
     }
=20
-    QualType ArgType =3D CanTy;
     if (ConstArg)
       ArgType.addConst();
     if (VolatileArg)
@@ -2321,14 +2323,17 @@
     // Possibly an XValue is actually correct in the case of move, but
     // there is no semantic difference for class types in this restricted
     // case.
-    ExprValueKind VK;
     if (SM =3D=3D CXXCopyConstructor || SM =3D=3D CXXCopyAssignment)
       VK =3D VK_LValue;
     else
       VK =3D VK_RValue;
-
+  }
+
+  OpaqueValueExpr FakeArg(SourceLocation(), ArgType, VK);
+
+  if (SM !=3D CXXDefaultConstructor) {
     NumArgs =3D 1;
-    Arg =3D new (Context) OpaqueValueExpr(SourceLocation(), ArgType, VK);
+    Arg =3D &FakeArg;
   }
=20
   // Create the object argument
@@ -2338,17 +2343,14 @@
   if (VolatileThis)
     ThisTy.addVolatile();
   Expr::Classification Classification =3D
-    (new (Context) OpaqueValueExpr(SourceLocation(), ThisTy,
-                                   RValueThis ? VK_RValue : VK_LValue))->
-        Classify(Context);
+    OpaqueValueExpr(SourceLocation(), ThisTy,
+                    RValueThis ? VK_RValue : VK_LValue).Classify(Context);
=20
   // Now we perform lookup on the name we computed earlier and do overload
   // resolution. Lookup is only performed directly into the class since th=
ere
   // will always be a (possibly implicit) declaration to shadow any others.
   OverloadCandidateSet OCS((SourceLocation()));
   DeclContext::lookup_iterator I, E;
-  SpecialMemberOverloadResult::Kind SuccessKind =3D
-      SpecialMemberOverloadResult::SuccessNonConst;
=20
   llvm::tie(I, E) =3D RD->lookup(Name);
   assert((I !=3D E) &&
@@ -2378,17 +2380,6 @@
       else
         AddOverloadCandidate(M, DeclAccessPair::make(M, AS_public),
                              llvm::makeArrayRef(&Arg, NumArgs), OCS, true);
-
-      // Here we're looking for a const parameter to speed up creation of
-      // implicit copy methods.
-      if ((SM =3D=3D CXXCopyAssignment && M->isCopyAssignmentOperator()) ||
-          (SM =3D=3D CXXCopyConstructor &&
-            cast<CXXConstructorDecl>(M)->isCopyConstructor())) {
-        QualType ArgType =3D M->getType()->getAs<FunctionProtoType>()->get=
ArgType(0);
-        if (!ArgType->isReferenceType() ||
-            ArgType->getPointeeType().isConstQualified())
-          SuccessKind =3D SpecialMemberOverloadResult::SuccessConst;
-      }
     } else if (FunctionTemplateDecl *Tmpl =3D
                  dyn_cast<FunctionTemplateDecl>(Cand)) {
       if (SM =3D=3D CXXCopyAssignment || SM =3D=3D CXXMoveAssignment)
@@ -2409,7 +2400,7 @@
   switch (OCS.BestViableFunction(*this, SourceLocation(), Best)) {
     case OR_Success:
       Result->setMethod(cast<CXXMethodDecl>(Best->Function));
-      Result->setKind(SuccessKind);
+      Result->setKind(SpecialMemberOverloadResult::Success);
       break;
=20
     case OR_Deleted:
@@ -2442,17 +2433,13 @@
=20
 /// \brief Look up the copying constructor for the given class.
 CXXConstructorDecl *Sema::LookupCopyingConstructor(CXXRecordDecl *Class,
-                                                   unsigned Quals,
-                                                   bool *ConstParamMatch) {
+                                                   unsigned Quals) {
   assert(!(Quals & ~(Qualifiers::Const | Qualifiers::Volatile)) &&
          "non-const, non-volatile qualifiers for copy ctor arg");
   SpecialMemberOverloadResult *Result =3D
     LookupSpecialMember(Class, CXXCopyConstructor, Quals & Qualifiers::Con=
st,
                         Quals & Qualifiers::Volatile, false, false, false);
=20
-  if (ConstParamMatch)
-    *ConstParamMatch =3D Result->hasConstParamMatch();
-
   return cast_or_null<CXXConstructorDecl>(Result->getMethod());
 }
=20
@@ -2485,8 +2472,7 @@
 /// \brief Look up the copying assignment operator for the given class.
 CXXMethodDecl *Sema::LookupCopyingAssignment(CXXRecordDecl *Class,
                                              unsigned Quals, bool RValueTh=
is,
-                                             unsigned ThisQuals,
-                                             bool *ConstParamMatch) {
+                                             unsigned ThisQuals) {
   assert(!(Quals & ~(Qualifiers::Const | Qualifiers::Volatile)) &&
          "non-const, non-volatile qualifiers for copy assignment arg");
   assert(!(ThisQuals & ~(Qualifiers::Const | Qualifiers::Volatile)) &&
@@ -2497,9 +2483,6 @@
                         ThisQuals & Qualifiers::Const,
                         ThisQuals & Qualifiers::Volatile);
=20
-  if (ConstParamMatch)
-    *ConstParamMatch =3D Result->hasConstParamMatch();
-
   return Result->getMethod();
 }
=20
@@ -3165,7 +3148,7 @@
 namespace {
=20
 typedef llvm::StringMap<TypoCorrection, llvm::BumpPtrAllocator> TypoResult=
sMap;
-typedef std::map<unsigned, TypoResultsMap *> TypoEditDistanceMap;
+typedef std::map<unsigned, TypoResultsMap> TypoEditDistanceMap;
=20
 static const unsigned MaxTypoDistanceResultSets =3D 5;
=20
@@ -3187,14 +3170,6 @@
     : Typo(Typo->getName()),
       SemaRef(SemaRef) { }
=20
-  ~TypoCorrectionConsumer() {
-    for (TypoEditDistanceMap::iterator I =3D BestResults.begin(),
-                                    IEnd =3D BestResults.end();
-         I !=3D IEnd;
-         ++I)
-      delete I->second;
-  }
- =20
   virtual void FoundDecl(NamedDecl *ND, NamedDecl *Hiding, DeclContext *Ct=
x,
                          bool InBaseClass);
   void FoundName(StringRef Name);
@@ -3212,7 +3187,7 @@
   bool empty() const { return BestResults.empty(); }
=20
   TypoCorrection &operator[](StringRef Name) {
-    return (*BestResults.begin()->second)[Name];
+    return BestResults.begin()->second[Name];
   }
=20
   unsigned getBestEditDistance(bool Normalized) {
@@ -3276,11 +3251,9 @@
=20
 void TypoCorrectionConsumer::addCorrection(TypoCorrection Correction) {
   StringRef Name =3D Correction.getCorrectionAsIdentifierInfo()->getName();
-  TypoResultsMap *& Map =3D BestResults[Correction.getEditDistance(false)];
-  if (!Map)
-    Map =3D new TypoResultsMap;
-
-  TypoCorrection &CurrentCorrection =3D (*Map)[Name];
+  TypoResultsMap &Map =3D BestResults[Correction.getEditDistance(false)];
+
+  TypoCorrection &CurrentCorrection =3D Map[Name];
   if (!CurrentCorrection ||
       // FIXME: The following should be rolled up into an operator< on
       // TypoCorrection with a more principled definition.
@@ -3289,12 +3262,8 @@
       CurrentCorrection.getAsString(SemaRef.getLangOpts()))
     CurrentCorrection =3D Correction;
=20
-  while (BestResults.size() > MaxTypoDistanceResultSets) {
-    TypoEditDistanceMap::iterator Last =3D BestResults.end();
-    --Last;
-    delete Last->second;
-    BestResults.erase(Last);
-  }
+  while (BestResults.size() > MaxTypoDistanceResultSets)
+    erase(llvm::prior(BestResults.end()));
 }
=20
 // Fill the supplied vector with the IdentifierInfo pointers for each piec=
e of
@@ -3882,8 +3851,8 @@
   while (!Consumer.empty()) {
     TypoCorrectionConsumer::distance_iterator DI =3D Consumer.begin();
     unsigned ED =3D DI->first;
-    for (TypoCorrectionConsumer::result_iterator I =3D DI->second->begin(),
-                                              IEnd =3D DI->second->end();
+    for (TypoCorrectionConsumer::result_iterator I =3D DI->second.begin(),
+                                              IEnd =3D DI->second.end();
          I !=3D IEnd; /* Increment in loop. */) {
       // If the item already has been looked up or is a keyword, keep it.
       // If a validator callback object was given, drop the correction
@@ -3892,7 +3861,7 @@
         TypoCorrectionConsumer::result_iterator Prev =3D I;
         ++I;
         if (!isCandidateViable(CCC, Prev->second))
-          DI->second->erase(Prev);
+          DI->second.erase(Prev);
         continue;
       }
=20
@@ -3911,7 +3880,7 @@
         {
           TypoCorrectionConsumer::result_iterator Next =3D I;
           ++Next;
-          DI->second->erase(I);
+          DI->second.erase(I);
           I =3D Next;
         }
         break;
@@ -3929,7 +3898,7 @@
           I->second.addCorrectionDecl(*TRD);
         ++I;
         if (!isCandidateViable(CCC, Prev->second))
-          DI->second->erase(Prev);
+          DI->second.erase(Prev);
         break;
       }
=20
@@ -3938,14 +3907,14 @@
         I->second.setCorrectionDecl(TmpRes.getAsSingle<NamedDecl>());
         ++I;
         if (!isCandidateViable(CCC, Prev->second))
-          DI->second->erase(Prev);
+          DI->second.erase(Prev);
         break;
       }
=20
       }
     }
=20
-    if (DI->second->empty())
+    if (DI->second.empty())
       Consumer.erase(DI);
     else if (!getLangOpts().CPlusPlus || QualifiedResults.empty() || !ED)
       // If there are results in the closest possible bucket, stop
@@ -4009,7 +3978,7 @@
   // No corrections remain...
   if (Consumer.empty()) return TypoCorrection();
=20
-  TypoResultsMap &BestResults =3D *Consumer.begin()->second;
+  TypoResultsMap &BestResults =3D Consumer.begin()->second;
   ED =3D TypoCorrection::NormalizeEditDistance(Consumer.begin()->first);
=20
   if (ED > 0 && Typo->getName().size() / ED < 3) {
@@ -4083,7 +4052,8 @@
     std::string tmpBuffer;
     llvm::raw_string_ostream PrefixOStream(tmpBuffer);
     CorrectionNameSpec->print(PrefixOStream, PrintingPolicy(LO));
-    return PrefixOStream.str() + CorrectionName.getAsString();
+    CorrectionName.printName(PrefixOStream);
+    return PrefixOStream.str();
   }
=20
   return CorrectionName.getAsString();
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaOverload.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -11150,6 +11150,7 @@
                                            VK_LValue,
                                            Found.getDecl(),
                                            TemplateArgs);
+    MarkDeclRefReferenced(DRE);
     DRE->setHadMultipleCandidates(ULE->getNumDecls() > 1);
     return DRE;
   }
@@ -11178,6 +11179,7 @@
                                                VK_LValue,
                                                Found.getDecl(),
                                                TemplateArgs);
+        MarkDeclRefReferenced(DRE);
         DRE->setHadMultipleCandidates(MemExpr->getNumDecls() > 1);
         return DRE;
       } else {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaPseudoObject.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaPseudoObject.cpp	Wed Jul 2=
5 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaPseudoObject.cpp	Wed Jul 2=
5 16:21:35 2012 +0300
@@ -214,6 +214,7 @@
=20
     ObjCMethodDecl *Setter;
     Selector SetterSelector;
+    Selector GetterSelector;
=20
   public:
     ObjCPropertyOpBuilder(Sema &S, ObjCPropertyRefExpr *refExpr) :
@@ -475,8 +476,24 @@
=20
   // For implicit properties, just trust the lookup we already did.
   if (RefExpr->isImplicitProperty()) {
-    Getter =3D RefExpr->getImplicitPropertyGetter();
-    return (Getter !=3D 0);
+    if ((Getter =3D RefExpr->getImplicitPropertyGetter())) {
+      GetterSelector =3D Getter->getSelector();
+      return true;
+    }
+    else {
+      // Must build the getter selector the hard way.
+      ObjCMethodDecl *setter =3D RefExpr->getImplicitPropertySetter();
+      assert(setter && "both setter and getter are null - cannot happen");
+      IdentifierInfo *setterName =3D=20
+        setter->getSelector().getIdentifierInfoForSlot(0);
+      const char *compStr =3D setterName->getNameStart();
+      compStr +=3D 3;
+      IdentifierInfo *getterName =3D &S.Context.Idents.get(compStr);
+      GetterSelector =3D=20
+        S.PP.getSelectorTable().getNullarySelector(getterName);
+      return false;
+
+    }
   }
=20
   ObjCPropertyDecl *prop =3D RefExpr->getExplicitProperty();
@@ -776,7 +793,7 @@
     assert(RefExpr->isImplicitProperty());
     S.Diag(opcLoc, diag::err_nogetter_property_incdec)
       << unsigned(UnaryOperator::isDecrementOp(opcode))
-      << RefExpr->getImplicitPropertyGetter()->getSelector() // FIXME!
+      << GetterSelector
       << op->getSourceRange();
     return ExprError();
   }
@@ -1300,6 +1317,11 @@
   Expr *opaqueRef =3D E->IgnoreParens();
   if (ObjCPropertyRefExpr *refExpr
         =3D dyn_cast<ObjCPropertyRefExpr>(opaqueRef)) {
+    // Class and super property references don't have opaque values in the=
m.
+    if (refExpr->isClassReceiver() || refExpr->isSuperReceiver())
+      return E;
+   =20
+    assert(refExpr->isObjectReceiver() && "Unknown receiver kind?");
     OpaqueValueExpr *baseOVE =3D cast<OpaqueValueExpr>(refExpr->getBase());
     return ObjCPropertyRefRebuilder(S, baseOVE->getSourceExpr()).rebuild(E=
);
   } else if (ObjCSubscriptRefExpr *refExpr
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaStmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -345,7 +345,6 @@
 StmtResult
 Sema::ActOnLabelStmt(SourceLocation IdentLoc, LabelDecl *TheDecl,
                      SourceLocation ColonLoc, Stmt *SubStmt) {
- =20
   // If the label was multiply defined, reject it now.
   if (TheDecl->getStmt()) {
     Diag(IdentLoc, diag::err_redefinition_of_label) << TheDecl->getDeclNam=
e();
@@ -361,6 +360,16 @@
   return Owned(LS);
 }
=20
+StmtResult Sema::ActOnAttributedStmt(SourceLocation AttrLoc,
+                                     const AttrVec &Attrs,
+                                     Stmt *SubStmt) {
+  // Fill in the declaration and return it. Variable length will require to
+  // change this to AttributedStmt::Create(Context, ....);
+  // and probably using ArrayRef
+  AttributedStmt *LS =3D new (Context) AttributedStmt(AttrLoc, Attrs, SubS=
tmt);
+  return Owned(LS);
+}
+
 StmtResult
 Sema::ActOnIfStmt(SourceLocation IfLoc, FullExprArg CondVal, Decl *CondVar,
                   Stmt *thenStmt, SourceLocation ElseLoc,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaStmtAttr.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -0,0 +1,48 @@
+//=3D=3D=3D--- SemaStmtAttr.cpp - Statement Attribute Handling -----------=
-------=3D=3D=3D//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+//
+//  This file implements stmt-related attribute processing.
+//
+//=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
+
+#include "clang/Sema/SemaInternal.h"
+#include "TargetAttributesSema.h"
+#include "clang/AST/ASTContext.h"
+#include "clang/Basic/SourceManager.h"
+#include "clang/Sema/DelayedDiagnostic.h"
+#include "clang/Sema/Lookup.h"
+#include "llvm/ADT/StringExtras.h"
+using namespace clang;
+using namespace sema;
+
+
+static Attr *ProcessStmtAttribute(Sema &S, Stmt *St, const AttributeList &=
A) {
+  switch (A.getKind()) {
+  default:
+    // if we're here, then we parsed an attribute, but didn't recognize it=
 as a
+    // statement attribute =3D> it is declaration attribute
+    S.Diag(A.getRange().getBegin(), diag::warn_attribute_invalid_on_stmt) =
<<
+      A.getName()->getName();
+    return 0;
+  }
+}
+
+StmtResult Sema::ProcessStmtAttributes(Stmt *S, AttributeList *AttrList,
+                                       SourceRange Range) {
+  AttrVec Attrs;
+  for (const AttributeList* l =3D AttrList; l; l =3D l->getNext()) {
+    if (Attr *a =3D ProcessStmtAttribute(*this, S, *l))
+      Attrs.push_back(a);
+  }
+
+  if (Attrs.empty())
+    return S;
+
+  return ActOnAttributedStmt(Range.getBegin(), Attrs, S);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaTemplate.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -2496,6 +2496,7 @@
                                      Converted.size(),
                                      SourceRange(TemplateLoc, RAngleLoc));
=20
+    Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
     ArgType =3D SemaRef.SubstType(ArgType, AllTemplateArgs,
                                 Param->getDefaultArgumentLoc(),
                                 Param->getDeclName());
@@ -2544,6 +2545,8 @@
                                    Converted.size(),
                                    SourceRange(TemplateLoc, RAngleLoc));
=20
+  Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
+  EnterExpressionEvaluationContext Unevaluated(SemaRef, Sema::Unevaluated);
   return SemaRef.SubstExpr(Param->getDefaultArgument(), AllTemplateArgs);
 }
=20
@@ -2591,6 +2594,7 @@
                                    Converted.size(),
                                    SourceRange(TemplateLoc, RAngleLoc));
=20
+  Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
   // Substitute into the nested-name-specifier first,=20
   QualifierLoc =3D Param->getDefaultArgument().getTemplateQualifierLoc();
   if (QualifierLoc) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaTemplateDeduction.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp	Wed =
Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp	Wed =
Jul 25 16:21:35 2012 +0300
@@ -2310,23 +2310,42 @@
   // explicitly-specified template arguments. If the function has a traili=
ng
   // return type, substitute it after the arguments to ensure we substitute
   // in lexical order.
-  if (Proto->hasTrailingReturn() &&
-      SubstParmTypes(Function->getLocation(),
-                     Function->param_begin(), Function->getNumParams(),
-                     MultiLevelTemplateArgumentList(*ExplicitArgumentList),
-                     ParamTypes))
-    return TDK_SubstitutionFailure;
-
+  if (Proto->hasTrailingReturn()) {
+    if (SubstParmTypes(Function->getLocation(),
+                       Function->param_begin(), Function->getNumParams(),
+                       MultiLevelTemplateArgumentList(*ExplicitArgumentLis=
t),
+                       ParamTypes))
+      return TDK_SubstitutionFailure;
+  }
+ =20
   // Instantiate the return type.
   // FIXME: exception-specifications?
-  QualType ResultType
-    =3D SubstType(Proto->getResultType(),
-                MultiLevelTemplateArgumentList(*ExplicitArgumentList),
-                Function->getTypeSpecStartLoc(),
-                Function->getDeclName());
-  if (ResultType.isNull() || Trap.hasErrorOccurred())
-    return TDK_SubstitutionFailure;
-
+  QualType ResultType;
+  {
+    // C++11 [expr.prim.general]p3:
+    //   If a declaration declares a member function or member function=20
+    //   template of a class X, the expression this is a prvalue of type=20
+    //   "pointer to cv-qualifier-seq X" between the optional cv-qualifer-=
seq
+    //   and the end of the function-definition, member-declarator, or=20
+    //   declarator.
+    unsigned ThisTypeQuals =3D 0;
+    CXXRecordDecl *ThisContext =3D 0;
+    if (CXXMethodDecl *Method =3D dyn_cast<CXXMethodDecl>(Function)) {
+      ThisContext =3D Method->getParent();
+      ThisTypeQuals =3D Method->getTypeQualifiers();
+    }
+     =20
+    CXXThisScopeRAII ThisScope(*this, ThisContext, ThisTypeQuals,
+                               getLangOpts().CPlusPlus0x);
+   =20
+    ResultType =3D SubstType(Proto->getResultType(),
+                   MultiLevelTemplateArgumentList(*ExplicitArgumentList),
+                   Function->getTypeSpecStartLoc(),
+                   Function->getDeclName());
+    if (ResultType.isNull() || Trap.hasErrorOccurred())
+      return TDK_SubstitutionFailure;
+  }
+ =20
   // Instantiate the types of each of the function parameters given the
   // explicitly-specified template arguments if we didn't do so earlier.
   if (!Proto->hasTrailingReturn() &&
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaTemplateInstantiate.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp	We=
d Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp	We=
d Jul 25 16:21:35 2012 +0300
@@ -153,6 +153,7 @@
 bool Sema::ActiveTemplateInstantiation::isInstantiationRecord() const {
   switch (Kind) {
   case TemplateInstantiation:
+  case ExceptionSpecInstantiation:
   case DefaultTemplateArgumentInstantiation:
   case DefaultFunctionArgumentInstantiation:
     return true;
@@ -190,6 +191,29 @@
   }
 }
=20
+Sema::InstantiatingTemplate::
+InstantiatingTemplate(Sema &SemaRef, SourceLocation PointOfInstantiation,
+                      FunctionDecl *Entity, ExceptionSpecification,
+                      SourceRange InstantiationRange)
+  : SemaRef(SemaRef),
+    SavedInNonInstantiationSFINAEContext(
+                                        SemaRef.InNonInstantiationSFINAECo=
ntext)
+{
+  Invalid =3D CheckInstantiationDepth(PointOfInstantiation,
+                                    InstantiationRange);
+  if (!Invalid) {
+    ActiveTemplateInstantiation Inst;
+    Inst.Kind =3D ActiveTemplateInstantiation::ExceptionSpecInstantiation;
+    Inst.PointOfInstantiation =3D PointOfInstantiation;
+    Inst.Entity =3D reinterpret_cast<uintptr_t>(Entity);
+    Inst.TemplateArgs =3D 0;
+    Inst.NumTemplateArgs =3D 0;
+    Inst.InstantiationRange =3D InstantiationRange;
+    SemaRef.InNonInstantiationSFINAEContext =3D false;
+    SemaRef.ActiveTemplateInstantiations.push_back(Inst);
+  }
+}
+
 Sema::InstantiatingTemplate::InstantiatingTemplate(Sema &SemaRef,
                                          SourceLocation PointOfInstantiati=
on,
                                          TemplateDecl *Template,
@@ -592,6 +616,13 @@
         << Active->InstantiationRange;
       break;
     }
+
+    case ActiveTemplateInstantiation::ExceptionSpecInstantiation:
+      Diags.Report(Active->PointOfInstantiation,
+                   diag::note_template_exception_spec_instantiation_here)
+        << cast<FunctionDecl>((Decl *)Active->Entity)
+        << Active->InstantiationRange;
+      break;
     }
   }
 }
@@ -609,6 +640,7 @@
     switch(Active->Kind) {
     case ActiveTemplateInstantiation::DefaultFunctionArgumentInstantiation:
     case ActiveTemplateInstantiation::TemplateInstantiation:
+    case ActiveTemplateInstantiation::ExceptionSpecInstantiation:
       // This is a template instantiation, so there is no SFINAE.
       return llvm::Optional<TemplateDeductionInfo *>();
=20
@@ -789,6 +821,11 @@
    =20
     QualType TransformFunctionProtoType(TypeLocBuilder &TLB,
                                         FunctionProtoTypeLoc TL);
+    QualType TransformFunctionProtoType(TypeLocBuilder &TLB,
+                                        FunctionProtoTypeLoc TL,
+                                        CXXRecordDecl *ThisContext,
+                                        unsigned ThisTypeQuals);
+
     ParmVarDecl *TransformFunctionTypeParam(ParmVarDecl *OldParm,
                                             int indexAdjustment,
                                         llvm::Optional<unsigned> NumExpans=
ions,
@@ -1211,6 +1248,16 @@
   return inherited::TransformFunctionProtoType(TLB, TL);
 }
=20
+QualType TemplateInstantiator::TransformFunctionProtoType(TypeLocBuilder &=
TLB,
+                                 FunctionProtoTypeLoc TL,
+                                 CXXRecordDecl *ThisContext,
+                                 unsigned ThisTypeQuals) {
+  // We need a local instantiation scope for this function prototype.
+  LocalInstantiationScope Scope(SemaRef, /*CombineWithOuterScope=3D*/true);
+  return inherited::TransformFunctionProtoType(TLB, TL, ThisContext,=20
+                                               ThisTypeQuals); =20
+}
+
 ParmVarDecl *
 TemplateInstantiator::TransformFunctionTypeParam(ParmVarDecl *OldParm,
                                                  int indexAdjustment,
@@ -1446,7 +1493,9 @@
 TypeSourceInfo *Sema::SubstFunctionDeclType(TypeSourceInfo *T,
                                 const MultiLevelTemplateArgumentList &Args,
                                 SourceLocation Loc,
-                                DeclarationName Entity) {
+                                DeclarationName Entity,
+                                CXXRecordDecl *ThisContext,
+                                unsigned ThisTypeQuals) {
   assert(!ActiveTemplateInstantiations.empty() &&
          "Cannot perform an instantiation without some context on the "
          "instantiation stack");
@@ -1461,7 +1510,14 @@
   TypeLoc TL =3D T->getTypeLoc();
   TLB.reserve(TL.getFullDataSize());
=20
-  QualType Result =3D Instantiator.TransformType(TLB, TL);
+  QualType Result;
+ =20
+  if (FunctionProtoTypeLoc *Proto =3D dyn_cast<FunctionProtoTypeLoc>(&TL))=
 {
+    Result =3D Instantiator.TransformFunctionProtoType(TLB, *Proto, ThisCo=
ntext,
+                                                     ThisTypeQuals);
+  } else {
+    Result =3D Instantiator.TransformType(TLB, TL);
+  }
   if (Result.isNull())
     return 0;
=20
@@ -1878,24 +1934,33 @@
   CheckCompletedCXXClass(Instantiation);
=20
   // Attach any in-class member initializers now the class is complete.
-  for (unsigned I =3D 0, N =3D FieldsWithMemberInitializers.size(); I !=3D=
 N; ++I) {
-    FieldDecl *OldField =3D FieldsWithMemberInitializers[I].first;
-    FieldDecl *NewField =3D FieldsWithMemberInitializers[I].second;
-    Expr *OldInit =3D OldField->getInClassInitializer();
+  {
+    // C++11 [expr.prim.general]p4:
+    //   Otherwise, if a member-declarator declares a non-static data memb=
er=20
+    //  (9.2) of a class X, the expression this is a prvalue of type "poin=
ter
+    //  to X" within the optional brace-or-equal-initializer. It shall not=20
+    //  appear elsewhere in the member-declarator.
+    CXXThisScopeRAII ThisScope(*this, Instantiation, (unsigned)0);
+   =20
+    for (unsigned I =3D 0, N =3D FieldsWithMemberInitializers.size(); I !=
=3D N; ++I) {
+      FieldDecl *OldField =3D FieldsWithMemberInitializers[I].first;
+      FieldDecl *NewField =3D FieldsWithMemberInitializers[I].second;
+      Expr *OldInit =3D OldField->getInClassInitializer();
=20
-    ExprResult NewInit =3D SubstInitializer(OldInit, TemplateArgs,
-                                          /*CXXDirectInit=3D*/false);
-    if (NewInit.isInvalid())
-      NewField->setInvalidDecl();
-    else {
-      Expr *Init =3D NewInit.take();
-      assert(Init && "no-argument initializer in class");
-      assert(!isa<ParenListExpr>(Init) && "call-style init in class");
-      ActOnCXXInClassMemberInitializer(NewField,
-                                       Init->getSourceRange().getBegin(), =
Init);
+      ExprResult NewInit =3D SubstInitializer(OldInit, TemplateArgs,
+                                            /*CXXDirectInit=3D*/false);
+      if (NewInit.isInvalid())
+        NewField->setInvalidDecl();
+      else {
+        Expr *Init =3D NewInit.take();
+        assert(Init && "no-argument initializer in class");
+        assert(!isa<ParenListExpr>(Init) && "call-style init in class");
+        ActOnCXXInClassMemberInitializer(NewField,=20
+                                         Init->getSourceRange().getBegin()=
,=20
+                                         Init);
+      }
     }
   }
-
   // Instantiate late parsed attributes, and attach them to their decls.
   // See Sema::InstantiateAttrs
   for (LateInstantiatedAttrVec::iterator I =3D LateAttrs.begin(),
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaTemplateInstantiateDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cp=
p	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cp=
p	Wed Jul 25 16:21:35 2012 +0300
@@ -2141,10 +2141,19 @@
   TypeSourceInfo *OldTInfo =3D D->getTypeSourceInfo();
   assert(OldTInfo && "substituting function without type source info");
   assert(Params.empty() && "parameter vector is non-empty at start");
+ =20
+  CXXRecordDecl *ThisContext =3D 0;
+  unsigned ThisTypeQuals =3D 0;
+  if (CXXMethodDecl *Method =3D dyn_cast<CXXMethodDecl>(D)) {
+    ThisContext =3D Method->getParent();
+    ThisTypeQuals =3D Method->getTypeQualifiers();
+  }
+ =20
   TypeSourceInfo *NewTInfo
     =3D SemaRef.SubstFunctionDeclType(OldTInfo, TemplateArgs,
                                     D->getTypeSpecStartLoc(),
-                                    D->getDeclName());
+                                    D->getDeclName(),
+                                    ThisContext, ThisTypeQuals);
   if (!NewTInfo)
     return 0;
=20
@@ -2206,6 +2215,195 @@
   return NewTInfo;
 }
=20
+/// Introduce the instantiated function parameters into the local
+/// instantiation scope, and set the parameter names to those used
+/// in the template.
+static void addInstantiatedParametersToScope(Sema &S, FunctionDecl *Functi=
on,
+                                             const FunctionDecl *PatternDe=
cl,
+                                             LocalInstantiationScope &Scop=
e,
+                           const MultiLevelTemplateArgumentList &TemplateA=
rgs) {
+  unsigned FParamIdx =3D 0;
+  for (unsigned I =3D 0, N =3D PatternDecl->getNumParams(); I !=3D N; ++I)=
 {
+    const ParmVarDecl *PatternParam =3D PatternDecl->getParamDecl(I);
+    if (!PatternParam->isParameterPack()) {
+      // Simple case: not a parameter pack.
+      assert(FParamIdx < Function->getNumParams());
+      ParmVarDecl *FunctionParam =3D Function->getParamDecl(FParamIdx);
+      FunctionParam->setDeclName(PatternParam->getDeclName());
+      Scope.InstantiatedLocal(PatternParam, FunctionParam);
+      ++FParamIdx;
+      continue;
+    }
+
+    // Expand the parameter pack.
+    Scope.MakeInstantiatedLocalArgPack(PatternParam);
+    unsigned NumArgumentsInExpansion
+      =3D S.getNumArgumentsInExpansion(PatternParam->getType(), TemplateAr=
gs);
+    for (unsigned Arg =3D 0; Arg < NumArgumentsInExpansion; ++Arg) {
+      ParmVarDecl *FunctionParam =3D Function->getParamDecl(FParamIdx);
+      FunctionParam->setDeclName(PatternParam->getDeclName());
+      Scope.InstantiatedLocalPackArg(PatternParam, FunctionParam);
+      ++FParamIdx;
+    }
+  }
+}
+
+static void InstantiateExceptionSpec(Sema &SemaRef, FunctionDecl *New,
+                                     const FunctionProtoType *Proto,
+                           const MultiLevelTemplateArgumentList &TemplateA=
rgs) {
+  assert(Proto->getExceptionSpecType() !=3D EST_Uninstantiated);
+
+  // C++11 [expr.prim.general]p3:
+  //   If a declaration declares a member function or member function=20
+  //   template of a class X, the expression this is a prvalue of type=20
+  //   "pointer to cv-qualifier-seq X" between the optional cv-qualifer-seq
+  //   and the end of the function-definition, member-declarator, or=20
+  //   declarator.   =20
+  CXXRecordDecl *ThisContext =3D 0;
+  unsigned ThisTypeQuals =3D 0;
+  if (CXXMethodDecl *Method =3D dyn_cast<CXXMethodDecl>(New)) {
+    ThisContext =3D Method->getParent();
+    ThisTypeQuals =3D Method->getTypeQualifiers();
+  }
+  Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, ThisTypeQuals,
+                                   SemaRef.getLangOpts().CPlusPlus0x);
+
+  // The function has an exception specification or a "noreturn"
+  // attribute. Substitute into each of the exception types.
+  SmallVector<QualType, 4> Exceptions;
+  for (unsigned I =3D 0, N =3D Proto->getNumExceptions(); I !=3D N; ++I) {
+    // FIXME: Poor location information!
+    if (const PackExpansionType *PackExpansion
+          =3D Proto->getExceptionType(I)->getAs<PackExpansionType>()) {
+      // We have a pack expansion. Instantiate it.
+      SmallVector<UnexpandedParameterPack, 2> Unexpanded;
+      SemaRef.collectUnexpandedParameterPacks(PackExpansion->getPattern(),
+                                              Unexpanded);
+      assert(!Unexpanded.empty() &&
+             "Pack expansion without parameter packs?");
+
+      bool Expand =3D false;
+      bool RetainExpansion =3D false;
+      llvm::Optional<unsigned> NumExpansions
+                                        =3D PackExpansion->getNumExpansion=
s();
+      if (SemaRef.CheckParameterPacksForExpansion(New->getLocation(),
+                                                  SourceRange(),
+                                                  Unexpanded,
+                                                  TemplateArgs,
+                                                  Expand,
+                                                  RetainExpansion,
+                                                  NumExpansions))
+        break;
+
+      if (!Expand) {
+        // We can't expand this pack expansion into separate arguments yet;
+        // just substitute into the pattern and create a new pack expansion
+        // type.
+        Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1);
+        QualType T =3D SemaRef.SubstType(PackExpansion->getPattern(),
+                                       TemplateArgs,
+                                     New->getLocation(), New->getDeclName(=
));
+        if (T.isNull())
+          break;
+
+        T =3D SemaRef.Context.getPackExpansionType(T, NumExpansions);
+        Exceptions.push_back(T);
+        continue;
+      }
+
+      // Substitute into the pack expansion pattern for each template
+      bool Invalid =3D false;
+      for (unsigned ArgIdx =3D 0; ArgIdx !=3D *NumExpansions; ++ArgIdx) {
+        Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, ArgIdx=
);
+
+        QualType T =3D SemaRef.SubstType(PackExpansion->getPattern(),
+                                       TemplateArgs,
+                                     New->getLocation(), New->getDeclName(=
));
+        if (T.isNull()) {
+          Invalid =3D true;
+          break;
+        }
+
+        Exceptions.push_back(T);
+      }
+
+      if (Invalid)
+        break;
+
+      continue;
+    }
+
+    QualType T
+      =3D SemaRef.SubstType(Proto->getExceptionType(I), TemplateArgs,
+                          New->getLocation(), New->getDeclName());
+    if (T.isNull() ||
+        SemaRef.CheckSpecifiedExceptionType(T, New->getLocation()))
+      continue;
+
+    Exceptions.push_back(T);
+  }
+  Expr *NoexceptExpr =3D 0;
+  if (Expr *OldNoexceptExpr =3D Proto->getNoexceptExpr()) {
+    EnterExpressionEvaluationContext Unevaluated(SemaRef,
+                                                 Sema::ConstantEvaluated);
+    ExprResult E =3D SemaRef.SubstExpr(OldNoexceptExpr, TemplateArgs);
+    if (E.isUsable())
+      E =3D SemaRef.CheckBooleanCondition(E.get(), E.get()->getLocStart());
+
+    if (E.isUsable()) {
+      NoexceptExpr =3D E.take();
+      if (!NoexceptExpr->isTypeDependent() &&
+          !NoexceptExpr->isValueDependent())
+        NoexceptExpr =3D SemaRef.VerifyIntegerConstantExpression(NoexceptE=
xpr,
+          0, SemaRef.PDiag(diag::err_noexcept_needs_constant_expression),
+          /*AllowFold*/ false).take();
+    }
+  }
+
+  // Rebuild the function type
+  const FunctionProtoType *NewProto
+    =3D New->getType()->getAs<FunctionProtoType>();
+  assert(NewProto && "Template instantiation without function prototype?");
+
+  FunctionProtoType::ExtProtoInfo EPI =3D NewProto->getExtProtoInfo();
+  EPI.ExceptionSpecType =3D Proto->getExceptionSpecType();
+  EPI.NumExceptions =3D Exceptions.size();
+  EPI.Exceptions =3D Exceptions.data();
+  EPI.NoexceptExpr =3D NoexceptExpr;
+
+  New->setType(SemaRef.Context.getFunctionType(NewProto->getResultType(),
+                                               NewProto->arg_type_begin(),
+                                               NewProto->getNumArgs(),
+                                               EPI));
+}
+
+void Sema::InstantiateExceptionSpec(SourceLocation PointOfInstantiation,
+                                    FunctionDecl *Decl) {
+  const FunctionProtoType *Proto =3D Decl->getType()->castAs<FunctionProto=
Type>();
+  if (Proto->getExceptionSpecType() !=3D EST_Uninstantiated)
+    return;
+
+  InstantiatingTemplate Inst(*this, PointOfInstantiation, Decl,
+                             InstantiatingTemplate::ExceptionSpecification=
());
+  if (Inst)
+    return;
+
+  // Enter the scope of this instantiation. We don't use
+  // PushDeclContext because we don't have a scope.
+  Sema::ContextRAII savedContext(*this, Decl);
+  LocalInstantiationScope Scope(*this);
+
+  MultiLevelTemplateArgumentList TemplateArgs =3D
+    getTemplateInstantiationArgs(Decl, 0, /*RelativeToPrimary*/true);
+
+  FunctionDecl *Template =3D Proto->getExceptionSpecTemplate();
+  addInstantiatedParametersToScope(*this, Decl, Template, Scope, TemplateA=
rgs);
+
+  ::InstantiateExceptionSpec(*this, Decl,
+                             Template->getType()->castAs<FunctionProtoType=
>(),
+                             TemplateArgs);
+}
+
 /// \brief Initializes the common fields of an instantiation function
 /// declaration (New) from the corresponding fields of its template (Tmpl).
 ///
@@ -2243,119 +2441,37 @@
   assert(Proto && "Function template without prototype?");
=20
   if (Proto->hasExceptionSpec() || Proto->getNoReturnAttr()) {
-    // The function has an exception specification or a "noreturn"
-    // attribute. Substitute into each of the exception types.
-    SmallVector<QualType, 4> Exceptions;
-    for (unsigned I =3D 0, N =3D Proto->getNumExceptions(); I !=3D N; ++I)=
 {
-      // FIXME: Poor location information!
-      if (const PackExpansionType *PackExpansion
-            =3D Proto->getExceptionType(I)->getAs<PackExpansionType>()) {
-        // We have a pack expansion. Instantiate it.
-        SmallVector<UnexpandedParameterPack, 2> Unexpanded;
-        SemaRef.collectUnexpandedParameterPacks(PackExpansion->getPattern(=
),
-                                                Unexpanded);
-        assert(!Unexpanded.empty() &&
-               "Pack expansion without parameter packs?");
-
-        bool Expand =3D false;
-        bool RetainExpansion =3D false;
-        llvm::Optional<unsigned> NumExpansions
-                                          =3D PackExpansion->getNumExpansi=
ons();
-        if (SemaRef.CheckParameterPacksForExpansion(New->getLocation(),
-                                                    SourceRange(),
-                                                    Unexpanded,
-                                                    TemplateArgs,
-                                                    Expand,
-                                                    RetainExpansion,
-                                                    NumExpansions))
-          break;
-
-        if (!Expand) {
-          // We can't expand this pack expansion into separate arguments y=
et;
-          // just substitute into the pattern and create a new pack expans=
ion
-          // type.
-          Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, -1);
-          QualType T =3D SemaRef.SubstType(PackExpansion->getPattern(),
-                                         TemplateArgs,
-                                       New->getLocation(), New->getDeclNam=
e());
-          if (T.isNull())
-            break;
-
-          T =3D SemaRef.Context.getPackExpansionType(T, NumExpansions);
-          Exceptions.push_back(T);
-          continue;
-        }
-
-        // Substitute into the pack expansion pattern for each template
-        bool Invalid =3D false;
-        for (unsigned ArgIdx =3D 0; ArgIdx !=3D *NumExpansions; ++ArgIdx) {
-          Sema::ArgumentPackSubstitutionIndexRAII SubstIndex(SemaRef, ArgI=
dx);
-
-          QualType T =3D SemaRef.SubstType(PackExpansion->getPattern(),
-                                         TemplateArgs,
-                                       New->getLocation(), New->getDeclNam=
e());
-          if (T.isNull()) {
-            Invalid =3D true;
-            break;
-          }
-
-          Exceptions.push_back(T);
-        }
-
-        if (Invalid)
-          break;
-
-        continue;
-      }
-
-      QualType T
-        =3D SemaRef.SubstType(Proto->getExceptionType(I), TemplateArgs,
-                            New->getLocation(), New->getDeclName());
-      if (T.isNull() ||
-          SemaRef.CheckSpecifiedExceptionType(T, New->getLocation()))
-        continue;
-
-      Exceptions.push_back(T);
+    FunctionProtoType::ExtProtoInfo EPI =3D Proto->getExtProtoInfo();
+
+    // DR1330: In C++11, defer instantiation of a non-trivial
+    // exception specification.
+    if (SemaRef.getLangOpts().CPlusPlus0x &&
+        EPI.ExceptionSpecType !=3D EST_None &&
+        EPI.ExceptionSpecType !=3D EST_DynamicNone &&
+        EPI.ExceptionSpecType !=3D EST_BasicNoexcept) {
+      FunctionDecl *ExceptionSpecTemplate =3D Tmpl;
+      if (EPI.ExceptionSpecType =3D=3D EST_Uninstantiated)
+        ExceptionSpecTemplate =3D EPI.ExceptionSpecTemplate;
+
+      // Mark the function has having an uninstantiated exception specific=
ation.
+      const FunctionProtoType *NewProto
+        =3D New->getType()->getAs<FunctionProtoType>();
+      assert(NewProto && "Template instantiation without function prototyp=
e?");
+      EPI =3D NewProto->getExtProtoInfo();
+      EPI.ExceptionSpecType =3D EST_Uninstantiated;
+      EPI.ExceptionSpecDecl =3D New;
+      EPI.ExceptionSpecTemplate =3D ExceptionSpecTemplate;
+      New->setType(SemaRef.Context.getFunctionType(NewProto->getResultType=
(),
+                                                   NewProto->arg_type_begi=
n(),
+                                                   NewProto->getNumArgs(),
+                                                   EPI));
+    } else {
+      ::InstantiateExceptionSpec(SemaRef, New, Proto, TemplateArgs);
     }
-    Expr *NoexceptExpr =3D 0;
-    if (Expr *OldNoexceptExpr =3D Proto->getNoexceptExpr()) {
-      EnterExpressionEvaluationContext Unevaluated(SemaRef,
-                                                   Sema::ConstantEvaluated=
);
-      ExprResult E =3D SemaRef.SubstExpr(OldNoexceptExpr, TemplateArgs);
-      if (E.isUsable())
-        E =3D SemaRef.CheckBooleanCondition(E.get(), E.get()->getLocStart(=
));
-
-      if (E.isUsable()) {
-        NoexceptExpr =3D E.take();
-        if (!NoexceptExpr->isTypeDependent() &&
-            !NoexceptExpr->isValueDependent())
-          NoexceptExpr =3D SemaRef.VerifyIntegerConstantExpression(Noexcep=
tExpr,
-            0, SemaRef.PDiag(diag::err_noexcept_needs_constant_expression),
-            /*AllowFold*/ false).take();
-      }
-    }
-
-    // Rebuild the function type
-
-    FunctionProtoType::ExtProtoInfo EPI =3D Proto->getExtProtoInfo();
-    EPI.ExceptionSpecType =3D Proto->getExceptionSpecType();
-    EPI.NumExceptions =3D Exceptions.size();
-    EPI.Exceptions =3D Exceptions.data();
-    EPI.NoexceptExpr =3D NoexceptExpr;
-    EPI.ExtInfo =3D Proto->getExtInfo();
-
-    const FunctionProtoType *NewProto
-      =3D New->getType()->getAs<FunctionProtoType>();
-    assert(NewProto && "Template instantiation without function prototype?=
");
-    New->setType(SemaRef.Context.getFunctionType(NewProto->getResultType(),
-                                                 NewProto->arg_type_begin(=
),
-                                                 NewProto->getNumArgs(),
-                                                 EPI));
   }
=20
-  const FunctionDecl* Definition =3D Tmpl;
-
   // Get the definition. Leaves the variable unchanged if undefined.
+  const FunctionDecl *Definition =3D Tmpl;
   Tmpl->isDefined(Definition);
=20
   SemaRef.InstantiateAttrs(TemplateArgs, Definition, New,
@@ -2513,33 +2629,8 @@
   MultiLevelTemplateArgumentList TemplateArgs =3D
     getTemplateInstantiationArgs(Function, 0, false, PatternDecl);
=20
-  // Introduce the instantiated function parameters into the local
-  // instantiation scope, and set the parameter names to those used
-  // in the template.
-  unsigned FParamIdx =3D 0;
-  for (unsigned I =3D 0, N =3D PatternDecl->getNumParams(); I !=3D N; ++I)=
 {
-    const ParmVarDecl *PatternParam =3D PatternDecl->getParamDecl(I);
-    if (!PatternParam->isParameterPack()) {
-      // Simple case: not a parameter pack.
-      assert(FParamIdx < Function->getNumParams());
-      ParmVarDecl *FunctionParam =3D Function->getParamDecl(FParamIdx);
-      FunctionParam->setDeclName(PatternParam->getDeclName());
-      Scope.InstantiatedLocal(PatternParam, FunctionParam);
-      ++FParamIdx;
-      continue;
-    }
-
-    // Expand the parameter pack.
-    Scope.MakeInstantiatedLocalArgPack(PatternParam);
-    unsigned NumArgumentsInExpansion
-      =3D getNumArgumentsInExpansion(PatternParam->getType(), TemplateArgs=
);
-    for (unsigned Arg =3D 0; Arg < NumArgumentsInExpansion; ++Arg) {
-      ParmVarDecl *FunctionParam =3D Function->getParamDecl(FParamIdx);
-      FunctionParam->setDeclName(PatternParam->getDeclName());
-      Scope.InstantiatedLocalPackArg(PatternParam, FunctionParam);
-      ++FParamIdx;
-    }
-  }
+  addInstantiatedParametersToScope(*this, Function, PatternDecl, Scope,
+                                   TemplateArgs);
=20
   if (PatternDecl->isDefaulted()) {
     ActOnFinishFunctionBody(Function, 0, /*IsInstantiation=3D*/true);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/SemaType.cpp
--- a/head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -2371,34 +2371,33 @@
           EPI.ConsumedArguments =3D ConsumedArguments.data();
=20
         SmallVector<QualType, 4> Exceptions;
-        EPI.ExceptionSpecType =3D FTI.getExceptionSpecType();
+        SmallVector<ParsedType, 2> DynamicExceptions;
+        SmallVector<SourceRange, 2> DynamicExceptionRanges;
+        Expr *NoexceptExpr =3D 0;
+       =20
         if (FTI.getExceptionSpecType() =3D=3D EST_Dynamic) {
-          Exceptions.reserve(FTI.NumExceptions);
-          for (unsigned ei =3D 0, ee =3D FTI.NumExceptions; ei !=3D ee; ++=
ei) {
-            // FIXME: Preserve type source info.
-            QualType ET =3D S.GetTypeFromParser(FTI.Exceptions[ei].Ty);
-            // Check that the type is valid for an exception spec, and
-            // drop it if not.
-            if (!S.CheckSpecifiedExceptionType(ET, FTI.Exceptions[ei].Rang=
e))
-              Exceptions.push_back(ET);
+          // FIXME: It's rather inefficient to have to split into two vect=
ors
+          // here.
+          unsigned N =3D FTI.NumExceptions;
+          DynamicExceptions.reserve(N);
+          DynamicExceptionRanges.reserve(N);
+          for (unsigned I =3D 0; I !=3D N; ++I) {
+            DynamicExceptions.push_back(FTI.Exceptions[I].Ty);
+            DynamicExceptionRanges.push_back(FTI.Exceptions[I].Range);
           }
-          EPI.NumExceptions =3D Exceptions.size();
-          EPI.Exceptions =3D Exceptions.data();
         } else if (FTI.getExceptionSpecType() =3D=3D EST_ComputedNoexcept)=
 {
-          // If an error occurred, there's no expression here.
-          if (Expr *NoexceptExpr =3D FTI.NoexceptExpr) {
-            assert((NoexceptExpr->isTypeDependent() ||
-                    NoexceptExpr->getType()->getCanonicalTypeUnqualified()=
 =3D=3D
-                        Context.BoolTy) &&
-                 "Parser should have made sure that the expression is bool=
ean");
-            if (!NoexceptExpr->isValueDependent())
-              NoexceptExpr =3D S.VerifyIntegerConstantExpression(NoexceptE=
xpr, 0,
-                S.PDiag(diag::err_noexcept_needs_constant_expression),
-                /*AllowFold*/ false).take();
-            EPI.NoexceptExpr =3D NoexceptExpr;
-          }
-        } else if (FTI.getExceptionSpecType() =3D=3D EST_None &&
-                   ImplicitlyNoexcept && chunkIndex =3D=3D 0) {
+          NoexceptExpr =3D FTI.NoexceptExpr;
+        }
+             =20
+        S.checkExceptionSpecification(FTI.getExceptionSpecType(),
+                                      DynamicExceptions,
+                                      DynamicExceptionRanges,
+                                      NoexceptExpr,
+                                      Exceptions,
+                                      EPI);
+       =20
+        if (FTI.getExceptionSpecType() =3D=3D EST_None &&
+            ImplicitlyNoexcept && chunkIndex =3D=3D 0) {
           // Only the outermost chunk is marked noexcept, of course.
           EPI.ExceptionSpecType =3D EST_BasicNoexcept;
         }
@@ -4196,7 +4195,8 @@
   // class template specialization, or an array with known size of such,
   // try to instantiate it.
   QualType MaybeTemplate =3D T;
-  if (const ConstantArrayType *Array =3D Context.getAsConstantArrayType(T))
+  while (const ConstantArrayType *Array
+           =3D Context.getAsConstantArrayType(MaybeTemplate))
     MaybeTemplate =3D Array->getElementType();
   if (const RecordType *Record =3D MaybeTemplate->getAs<RecordType>()) {
     if (ClassTemplateSpecializationDecl *ClassTemplateSpec
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Sema=
/TreeTransform.h
--- a/head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h	Wed Jul 25 16:=
21:35 2012 +0300
@@ -522,6 +522,11 @@
   QualType Transform##CLASS##Type(TypeLocBuilder &TLB, CLASS##TypeLoc T);
 #include "clang/AST/TypeLocNodes.def"
=20
+  QualType TransformFunctionProtoType(TypeLocBuilder &TLB,
+                                      FunctionProtoTypeLoc TL,
+                                      CXXRecordDecl *ThisContext,
+                                      unsigned ThisTypeQuals);
+
   StmtResult
   TransformSEHHandler(Stmt *Handler);
=20
@@ -1044,6 +1049,15 @@
     return SemaRef.ActOnLabelStmt(IdentLoc, L, ColonLoc, SubStmt);
   }
=20
+  /// \brief Build a new label statement.
+  ///
+  /// By default, performs semantic analysis to build the new statement.
+  /// Subclasses may override this routine to provide different behavior.
+  StmtResult RebuildAttributedStmt(SourceLocation AttrLoc, const AttrVec &=
Attrs,
+                                   Stmt *SubStmt) {
+    return SemaRef.ActOnAttributedStmt(AttrLoc, Attrs, SubStmt);
+  }
+
   /// \brief Build a new "if" statement.
   ///
   /// By default, performs semantic analysis to build the new statement.
@@ -4156,12 +4170,18 @@
 QualType
 TreeTransform<Derived>::TransformFunctionProtoType(TypeLocBuilder &TLB,
                                                    FunctionProtoTypeLoc TL=
) {
+  return getDerived().TransformFunctionProtoType(TLB, TL, 0, 0);
+}
+
+template<typename Derived>
+QualType
+TreeTransform<Derived>::TransformFunctionProtoType(TypeLocBuilder &TLB,
+                                                   FunctionProtoTypeLoc TL,
+                                                   CXXRecordDecl *ThisCont=
ext,
+                                                   unsigned ThisTypeQuals)=
 {
   // Transform the parameters and return type.
   //
-  // We instantiate in source order, with the return type first followed by
-  // the parameters, because users tend to expect this (even if they shoul=
dn't
-  // rely on it!).
-  //
+  // We are required to instantiate the params and return type in source o=
rder.
   // When the function has a trailing return type, we instantiate the
   // parameters before the return type,  since the return type can then re=
fer
   // to the parameters themselves (via decltype, sizeof, etc.).
@@ -4180,9 +4200,19 @@
                                                  ParamTypes, &ParamDecls))
       return QualType();
=20
-    ResultType =3D getDerived().TransformType(TLB, TL.getResultLoc());
-    if (ResultType.isNull())
-      return QualType();
+    {
+      // C++11 [expr.prim.general]p3:
+      //   If a declaration declares a member function or member function=20
+      //   template of a class X, the expression this is a prvalue of type=20
+      //   "pointer to cv-qualifier-seq X" between the optional cv-qualife=
r-seq
+      //   and the end of the function-definition, member-declarator, or=20
+      //   declarator.
+      Sema::CXXThisScopeRAII ThisScope(SemaRef, ThisContext, ThisTypeQuals=
);
+     =20
+      ResultType =3D getDerived().TransformType(TLB, TL.getResultLoc());
+      if (ResultType.isNull())
+        return QualType();
+    }
   }
   else {
     ResultType =3D getDerived().TransformType(TLB, TL.getResultLoc());
@@ -4197,6 +4227,8 @@
       return QualType();
   }
=20
+  // FIXME: Need to transform the exception-specification too.
+
   QualType Result =3D TL.getType();
   if (getDerived().AlwaysRebuild() ||
       ResultType !=3D T->getResultType() ||
@@ -5154,8 +5186,8 @@
                                         S->getDecl());
   if (!LD)
     return StmtError();
- =20
- =20
+
+
   // FIXME: Pass the real colon location in.
   return getDerived().RebuildLabelStmt(S->getIdentLoc(),
                                        cast<LabelDecl>(LD), SourceLocation=
(),
@@ -5164,6 +5196,22 @@
=20
 template<typename Derived>
 StmtResult
+TreeTransform<Derived>::TransformAttributedStmt(AttributedStmt *S) {
+  StmtResult SubStmt =3D getDerived().TransformStmt(S->getSubStmt());
+  if (SubStmt.isInvalid())
+    return StmtError();
+
+  // TODO: transform attributes
+  if (SubStmt.get() =3D=3D S->getSubStmt() /* && attrs are the same */)
+    return S;
+
+  return getDerived().RebuildAttributedStmt(S->getAttrLoc(),
+                                            S->getAttrs(),
+                                            SubStmt.get());
+}
+
+template<typename Derived>
+StmtResult
 TreeTransform<Derived>::TransformIfStmt(IfStmt *S) {
   // Transform the condition
   ExprResult Cond;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTReader.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -27,7 +27,6 @@
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/Type.h"
 #include "clang/AST/TypeLocVisitor.h"
-#include "llvm/Support/SaveAndRestore.h"
 #include "clang/Lex/MacroInfo.h"
 #include "clang/Lex/PreprocessingRecord.h"
 #include "clang/Lex/Preprocessor.h"
@@ -46,6 +45,7 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Path.h"
+#include "llvm/Support/SaveAndRestore.h"
 #include "llvm/Support/system_error.h"
 #include <algorithm>
 #include <iterator>
@@ -664,46 +664,6 @@
   return Key;
 }
=20
-ASTDeclContextNameLookupTrait::external_key_type=20
-ASTDeclContextNameLookupTrait::GetExternalKey(
-                                          const internal_key_type& Key) co=
nst {
-  ASTContext &Context =3D Reader.getContext();
-  switch (Key.Kind) {
-  case DeclarationName::Identifier:
-    return DeclarationName((IdentifierInfo*)Key.Data);
-
-  case DeclarationName::ObjCZeroArgSelector:
-  case DeclarationName::ObjCOneArgSelector:
-  case DeclarationName::ObjCMultiArgSelector:
-    return DeclarationName(Selector(Key.Data));
-
-  case DeclarationName::CXXConstructorName:
-    return Context.DeclarationNames.getCXXConstructorName(
-             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));
-
-  case DeclarationName::CXXDestructorName:
-    return Context.DeclarationNames.getCXXDestructorName(
-             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));
-
-  case DeclarationName::CXXConversionFunctionName:
-    return Context.DeclarationNames.getCXXConversionFunctionName(
-             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));
-
-  case DeclarationName::CXXOperatorName:
-    return Context.DeclarationNames.getCXXOperatorName(
-                                       (OverloadedOperatorKind)Key.Data);
-
-  case DeclarationName::CXXLiteralOperatorName:
-    return Context.DeclarationNames.getCXXLiteralOperatorName(
-                                                   (IdentifierInfo*)Key.Da=
ta);
-
-  case DeclarationName::CXXUsingDirective:
-    return DeclarationName::getUsingDirectiveName();
-  }
-
-  llvm_unreachable("Invalid Name Kind ?");
-}
-
 std::pair<unsigned, unsigned>
 ASTDeclContextNameLookupTrait::ReadKeyDataLength(const unsigned char*& d) {
   using namespace clang::io;
@@ -749,7 +709,7 @@
 ASTDeclContextNameLookupTrait::data_type=20
 ASTDeclContextNameLookupTrait::ReadData(internal_key_type,=20
                                         const unsigned char* d,
-                                      unsigned DataLen) {
+                                        unsigned DataLen) {
   using namespace clang::io;
   unsigned NumDecls =3D ReadUnalignedLE16(d);
   LE32DeclID *Start =3D (LE32DeclID *)d;
@@ -1911,7 +1871,8 @@
     case UPDATE_VISIBLE: {
       unsigned Idx =3D 0;
       serialization::DeclID ID =3D ReadDeclID(F, Record, Idx);
-      void *Table =3D ASTDeclContextNameLookupTable::Create(
+      ASTDeclContextNameLookupTable *Table =3D
+        ASTDeclContextNameLookupTable::Create(
                         (const unsigned char *)BlobStart + Record[Idx++],
                         (const unsigned char *)BlobStart,
                         ASTDeclContextNameLookupTrait(*this, F));
@@ -3905,6 +3866,9 @@
       EPI.Exceptions =3D Exceptions.data();
     } else if (EST =3D=3D EST_ComputedNoexcept) {
       EPI.NoexceptExpr =3D ReadExpr(*Loc.F);
+    } else if (EST =3D=3D EST_Uninstantiated) {
+      EPI.ExceptionSpecDecl =3D ReadDeclAs<FunctionDecl>(*Loc.F, Record, I=
dx);
+      EPI.ExceptionSpecTemplate =3D ReadDeclAs<FunctionDecl>(*Loc.F, Recor=
d, Idx);
     }
     return Context.getFunctionType(ResultType, ParamTypes.data(), NumParam=
s,
                                     EPI);
@@ -4908,7 +4872,7 @@
      =20
       // Look for this name within this module.
       ASTDeclContextNameLookupTable *LookupTable =3D
-        (ASTDeclContextNameLookupTable*)Info->second.NameLookupTableData;
+        Info->second.NameLookupTableData;
       ASTDeclContextNameLookupTable::iterator Pos
         =3D LookupTable->find(This->Name);
       if (Pos =3D=3D LookupTable->end())
@@ -4972,48 +4936,95 @@
 }
=20
 namespace {
-  /// \brief ModuleFile visitor used to complete the visible decls map of a
+  /// \brief ModuleFile visitor used to retrieve all visible names in a
   /// declaration context.
-  class DeclContextVisibleDeclMapVisitor {
+  class DeclContextAllNamesVisitor {
     ASTReader &Reader;
-    DeclContext *DC;
+    llvm::SmallVectorImpl<const DeclContext *> &Contexts;
+    const DeclContext *DC;
+    llvm::DenseMap<DeclarationName, SmallVector<NamedDecl *, 8> > &Decls;
=20
   public:
-    DeclContextVisibleDeclMapVisitor(ASTReader &Reader, DeclContext *DC)
-      : Reader(Reader), DC(DC) { }
+    DeclContextAllNamesVisitor(ASTReader &Reader,
+                               SmallVectorImpl<const DeclContext *> &Conte=
xts,
+                               llvm::DenseMap<DeclarationName,
+                                           SmallVector<NamedDecl *, 8> > &=
Decls)
+      : Reader(Reader), Contexts(Contexts), Decls(Decls) { }
=20
     static bool visit(ModuleFile &M, void *UserData) {
-      return static_cast<DeclContextVisibleDeclMapVisitor*>(UserData)->vis=
it(M);
-    }
-
-    bool visit(ModuleFile &M) {
+      DeclContextAllNamesVisitor *This
+        =3D static_cast<DeclContextAllNamesVisitor *>(UserData);
+
       // Check whether we have any visible declaration information for
       // this context in this module.
-      ModuleFile::DeclContextInfosMap::iterator
-        Info =3D M.DeclContextInfos.find(DC);
-      if (Info =3D=3D M.DeclContextInfos.end() ||=20
-          !Info->second.NameLookupTableData)
+      ModuleFile::DeclContextInfosMap::iterator Info;
+      bool FoundInfo =3D false;
+      for (unsigned I =3D 0, N =3D This->Contexts.size(); I !=3D N; ++I) {
+        Info =3D M.DeclContextInfos.find(This->Contexts[I]);
+        if (Info !=3D M.DeclContextInfos.end() &&
+            Info->second.NameLookupTableData) {
+          FoundInfo =3D true;
+          break;
+        }
+      }
+
+      if (!FoundInfo)
         return false;
-     =20
-      // Look for this name within this module.
+
       ASTDeclContextNameLookupTable *LookupTable =3D
-        (ASTDeclContextNameLookupTable*)Info->second.NameLookupTableData;
-      for (ASTDeclContextNameLookupTable::key_iterator
-             I =3D LookupTable->key_begin(),
-             E =3D LookupTable->key_end(); I !=3D E; ++I) {
-        DC->lookup(*I); // Force loading of the visible decls for the decl=
 name.
+        Info->second.NameLookupTableData;
+      bool FoundAnything =3D false;
+      for (ASTDeclContextNameLookupTable::data_iterator
+	     I =3D LookupTable->data_begin(), E =3D LookupTable->data_end();
+	   I !=3D E; ++I) {
+        ASTDeclContextNameLookupTrait::data_type Data =3D *I;
+        for (; Data.first !=3D Data.second; ++Data.first) {
+          NamedDecl *ND =3D This->Reader.GetLocalDeclAs<NamedDecl>(M,
+                                                                 *Data.fir=
st);
+          if (!ND)
+            continue;
+
+          // Record this declaration.
+          FoundAnything =3D true;
+          This->Decls[ND->getDeclName()].push_back(ND);
+        }
       }
=20
-      return false;
+      return FoundAnything;
     }
   };
 }
=20
-void ASTReader::completeVisibleDeclsMap(DeclContext *DC) {
+void ASTReader::completeVisibleDeclsMap(const DeclContext *DC) {
   if (!DC->hasExternalVisibleStorage())
     return;
-  DeclContextVisibleDeclMapVisitor Visitor(*this, DC);
-  ModuleMgr.visit(&DeclContextVisibleDeclMapVisitor::visit, &Visitor);
+  llvm::DenseMap<DeclarationName, llvm::SmallVector<NamedDecl*, 8> > Decls;
+
+  // Compute the declaration contexts we need to look into. Multiple such
+  // declaration contexts occur when two declaration contexts from disjoint
+  // modules get merged, e.g., when two namespaces with the same name are
+  // independently defined in separate modules.
+  SmallVector<const DeclContext *, 2> Contexts;
+  Contexts.push_back(DC);
+
+  if (DC->isNamespace()) {
+    MergedDeclsMap::iterator Merged
+      =3D MergedDecls.find(const_cast<Decl *>(cast<Decl>(DC)));
+    if (Merged !=3D MergedDecls.end()) {
+      for (unsigned I =3D 0, N =3D Merged->second.size(); I !=3D N; ++I)
+        Contexts.push_back(cast<DeclContext>(GetDecl(Merged->second[I])));
+    }
+  }
+
+  DeclContextAllNamesVisitor Visitor(*this, Contexts, Decls);
+  ModuleMgr.visit(&DeclContextAllNamesVisitor::visit, &Visitor);
+  ++NumVisibleDeclContextsRead;
+
+  for (llvm::DenseMap<DeclarationName,
+                      llvm::SmallVector<NamedDecl*, 8> >::iterator
+         I =3D Decls.begin(), E =3D Decls.end(); I !=3D E; ++I) {
+    SetExternalVisibleDeclsForName(DC, I->first, I->second);
+  }
 }
=20
 /// \brief Under non-PCH compilation the consumer receives the objc methods
@@ -6364,6 +6375,6 @@
     for (DeclContextVisibleUpdates::iterator J =3D I->second.begin(),
                                              F =3D I->second.end();
          J !=3D F; ++J)
-      delete static_cast<ASTDeclContextNameLookupTable*>(J->first);
-  }
-}
+      delete J->first;
+  }
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTReaderDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -13,6 +13,7 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 #include "ASTCommon.h"
+#include "ASTReaderInternals.h"
 #include "clang/Serialization/ASTReader.h"
 #include "clang/Sema/IdentifierResolver.h"
 #include "clang/Sema/Sema.h"
@@ -955,6 +956,10 @@
     Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx));
   BD->setParams(Params);
=20
+  BD->setIsVariadic(Record[Idx++]);
+  BD->setBlockMissingReturnType(Record[Idx++]);
+  BD->setIsConversionFromLambda(Record[Idx++]);
+
   bool capturesCXXThis =3D Record[Idx++];
   unsigned numCaptures =3D Record[Idx++];
   SmallVector<BlockDecl::Capture, 16> captures;
@@ -2100,7 +2105,9 @@
       DeclContextVisibleUpdates &U =3D I->second;
       for (DeclContextVisibleUpdates::iterator UI =3D U.begin(), UE =3D U.=
end();
            UI !=3D UE; ++UI) {
-        UI->second->DeclContextInfos[DC].NameLookupTableData =3D UI->first;
+        DeclContextInfo &Info =3D UI->second->DeclContextInfos[DC];
+        delete Info.NameLookupTableData;
+        Info.NameLookupTableData =3D UI->first;
       }
       PendingVisibleUpdates.erase(I);
     }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTReaderInternals.h
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderInternals.h	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderInternals.h	=
Wed Jul 25 16:21:35 2012 +0300
@@ -57,8 +57,7 @@
   typedef DeclarationName external_key_type;
   typedef DeclNameKey internal_key_type;
=20
-  explicit ASTDeclContextNameLookupTrait(ASTReader &Reader,=20
-                                         ModuleFile &F)=20
+  explicit ASTDeclContextNameLookupTrait(ASTReader &Reader, ModuleFile &F)
     : Reader(Reader), F(F) { }
=20
   static bool EqualKey(const internal_key_type& a,
@@ -68,9 +67,8 @@
=20
   unsigned ComputeHash(const DeclNameKey &Key) const;
   internal_key_type GetInternalKey(const external_key_type& Name) const;
-  external_key_type GetExternalKey(const internal_key_type& Key) const;
=20
-  static std::pair<unsigned, unsigned>=20
+  static std::pair<unsigned, unsigned>
   ReadKeyDataLength(const unsigned char*& d);
=20
   internal_key_type ReadKey(const unsigned char* d, unsigned);
@@ -79,10 +77,6 @@
                      unsigned DataLen);
 };
=20
-/// \brief The on-disk hash table used for the DeclContext's Name lookup t=
able.
-typedef OnDiskChainedHashTable<ASTDeclContextNameLookupTrait>
-  ASTDeclContextNameLookupTable;
-
 /// \brief Class that performs lookup for an identifier stored in an AST f=
ile.
 class ASTIdentifierLookupTrait {
   ASTReader &Reader;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTReaderStmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -159,9 +159,18 @@
   S->setIdentLoc(ReadSourceLocation(Record, Idx));
 }
=20
+void ASTStmtReader::VisitAttributedStmt(AttributedStmt *S) {
+  VisitStmt(S);
+  AttrVec Attrs;
+  Reader.ReadAttributes(F, Attrs, Record, Idx);
+  S->Attrs =3D Attrs;
+  S->SubStmt =3D Reader.ReadSubStmt();
+  S->AttrLoc =3D ReadSourceLocation(Record, Idx);
+}
+
 void ASTStmtReader::VisitIfStmt(IfStmt *S) {
   VisitStmt(S);
-  S->setConditionVariable(Reader.getContext(),=20
+  S->setConditionVariable(Reader.getContext(),
                           ReadDeclAs<VarDecl>(Record, Idx));
   S->setCond(Reader.ReadSubExpr());
   S->setThen(Reader.ReadSubStmt());
@@ -1630,6 +1639,10 @@
       S =3D new (Context) LabelStmt(Empty);
       break;
=20
+    case STMT_ATTRIBUTED:
+      S =3D new (Context) AttributedStmt(Empty);
+      break;
+
     case STMT_IF:
       S =3D new (Context) IfStmt(Empty);
       break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTWriter.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp	Wed Jul=
 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp	Wed Jul=
 25 16:21:35 2012 +0300
@@ -195,6 +195,9 @@
       Writer.AddTypeRef(T->getExceptionType(I), Record);
   } else if (T->getExceptionSpecType() =3D=3D EST_ComputedNoexcept) {
     Writer.AddStmt(T->getNoexceptExpr());
+  } else if (T->getExceptionSpecType() =3D=3D EST_Uninstantiated) {
+    Writer.AddDeclRef(T->getExceptionSpecDecl(), Record);
+    Writer.AddDeclRef(T->getExceptionSpecTemplate(), Record);
   }
   Code =3D TYPE_FUNCTION_PROTO;
 }
@@ -651,6 +654,7 @@
   RECORD(STMT_CASE);
   RECORD(STMT_DEFAULT);
   RECORD(STMT_LABEL);
+  RECORD(STMT_ATTRIBUTED);
   RECORD(STMT_IF);
   RECORD(STMT_SWITCH);
   RECORD(STMT_WHILE);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTWriterDecl.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -775,6 +775,9 @@
   for (FunctionDecl::param_iterator P =3D D->param_begin(), PEnd =3D D->pa=
ram_end();
        P !=3D PEnd; ++P)
     Writer.AddDeclRef(*P, Record);
+  Record.push_back(D->isVariadic());
+  Record.push_back(D->blockMissingReturnType());
+  Record.push_back(D->isConversionFromLambda());
   Record.push_back(D->capturesCXXThis());
   Record.push_back(D->getNumCaptures());
   for (BlockDecl::capture_iterator
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/ASTWriterStmt.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -106,6 +106,14 @@
   Code =3D serialization::STMT_LABEL;
 }
=20
+void ASTStmtWriter::VisitAttributedStmt(AttributedStmt *S) {
+  VisitStmt(S);
+  Writer.WriteAttributes(S->getAttrs(), Record);
+  Writer.AddStmt(S->getSubStmt());
+  Writer.AddSourceLocation(S->getAttrLoc(), Record);
+  Code =3D serialization::STMT_ATTRIBUTED;
+}
+
 void ASTStmtWriter::VisitIfStmt(IfStmt *S) {
   VisitStmt(S);
   Writer.AddDeclRef(S->getConditionVariable(), Record);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Seri=
alization/Module.cpp
--- a/head/contrib/llvm/tools/clang/lib/Serialization/Module.cpp	Wed Jul 25=
 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Serialization/Module.cpp	Wed Jul 25=
 16:21:35 2012 +0300
@@ -45,8 +45,7 @@
        E =3D DeclContextInfos.end();
        I !=3D E; ++I) {
     if (I->second.NameLookupTableData)
-      delete static_cast<ASTDeclContextNameLookupTable*>(
-                                                 I->second.NameLookupTable=
Data);
+      delete I->second.NameLookupTableData;
   }
  =20
   delete static_cast<ASTIdentifierLookupTable *>(IdentifierLookupTable);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Checkers/ObjCSelfInitChecker.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfIni=
tChecker.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfIni=
tChecker.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -183,9 +183,6 @@
=20
 void ObjCSelfInitChecker::checkPostObjCMessage(ObjCMessage msg,
                                                CheckerContext &C) const {
-  CallOrObjCMessage MsgWrapper(msg, C.getState(), C.getLocationContext());
-  checkPostStmt(MsgWrapper, C);
-
   // When encountering a message that does initialization (init rule),
   // tag the return value so that we know later on that if self has this v=
alue
   // then it is properly initialized.
@@ -209,6 +206,9 @@
     return;
   }
=20
+  CallOrObjCMessage MsgWrapper(msg, C.getState(), C.getLocationContext());
+  checkPostStmt(MsgWrapper, C);
+
   // We don't check for an invalid 'self' in an obj-c message expression t=
o cut
   // down false positives where logging functions get information from self
   // (like its class) or doing "invalidation" on self when the initializat=
ion
@@ -277,6 +277,11 @@
                                        CheckerContext &C) const {
   ProgramStateRef state =3D C.getState();
   unsigned NumArgs =3D CE.getNumArgs();
+  // If we passed 'self' as and argument to the call, record it in the sta=
te
+  // to be propagated after the call.
+  // Note, we could have just given up, but try to be more optimistic here=
 and
+  // assume that the functions are going to continue initialization or wil=
l not
+  // modify self.
   for (unsigned i =3D 0; i < NumArgs; ++i) {
     SVal argV =3D CE.getArgSVal(i);
     if (isSelfVar(argV, C)) {
@@ -298,14 +303,24 @@
   for (unsigned i =3D 0; i < NumArgs; ++i) {
     SVal argV =3D CE.getArgSVal(i);
     if (isSelfVar(argV, C)) {
+      // If the address of 'self' is being passed to the call, assume that=
 the
+      // 'self' after the call will have the same flags.
+      // EX: log(&self)
       SelfFlagEnum prevFlags =3D (SelfFlagEnum)state->get<PreCallSelfFlags=
>();
       state =3D state->remove<PreCallSelfFlags>();
       addSelfFlag(state, state->getSVal(cast<Loc>(argV)), prevFlags, C);
       return;
     } else if (hasSelfFlag(argV, SelfFlag_Self, C)) {
+      // If 'self' is passed to the call by value, assume that the function
+      // returns 'self'. So assign the flags, which were set on 'self' to =
the
+      // return value.
+      // EX: self =3D performMoreInitialization(self)
       SelfFlagEnum prevFlags =3D (SelfFlagEnum)state->get<PreCallSelfFlags=
>();
       state =3D state->remove<PreCallSelfFlags>();
-      addSelfFlag(state, state->getSVal(cast<Loc>(argV)), prevFlags, C);
+      const Expr *CallExpr =3D CE.getOriginExpr();
+      if (CallExpr)
+        addSelfFlag(state, state->getSVal(CallExpr, C.getLocationContext()=
),
+                                          prevFlags, C);
       return;
     }
   }
@@ -358,7 +373,7 @@
     return false;
=20
   loc::MemRegionVal MRV =3D cast<loc::MemRegionVal>(location);
-  if (const DeclRegion *DR =3D dyn_cast<DeclRegion>(MRV.getRegion()))
+  if (const DeclRegion *DR =3D dyn_cast<DeclRegion>(MRV.stripCasts()))
     return (DR->getDecl() =3D=3D analCtx->getSelfDecl());
=20
   return false;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Core/AnalysisManager.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager=
.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager=
.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -8,8 +8,6 @@
 //=3D=3D=3D---------------------------------------------------------------=
-------=3D=3D=3D//
=20
 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
-#include "clang/Index/Entity.h"
-#include "clang/Index/Indexer.h"
=20
 using namespace clang;
 using namespace ento;
@@ -22,7 +20,6 @@
                                  StoreManagerCreator storemgr,
                                  ConstraintManagerCreator constraintmgr,=20
                                  CheckerManager *checkerMgr,
-                                 idx::Indexer *idxer,
                                  unsigned maxnodes, unsigned maxvisit,
                                  bool vizdot, bool vizubi,
                                  AnalysisPurgeMode purge,
@@ -38,7 +35,7 @@
   : AnaCtxMgr(useUnoptimizedCFG, addImplicitDtors, addInitializers),
     Ctx(ctx), Diags(diags), LangOpts(lang), PD(pd),
     CreateStoreMgr(storemgr), CreateConstraintMgr(constraintmgr),
-    CheckerMgr(checkerMgr), Idxer(idxer),
+    CheckerMgr(checkerMgr),=20
     AScope(ScopeDecl), MaxNodes(maxnodes), MaxVisit(maxvisit),
     VisualizeEGDot(vizdot), VisualizeEGUbi(vizubi), PurgeDead(purge),
     EagerlyAssume(eager), TrimGraph(trim),
@@ -62,7 +59,6 @@
     CreateStoreMgr(ParentAM.CreateStoreMgr),
     CreateConstraintMgr(ParentAM.CreateConstraintMgr),
     CheckerMgr(ParentAM.CheckerMgr),
-    Idxer(ParentAM.Idxer),
     AScope(ScopeDecl),
     MaxNodes(ParentAM.MaxNodes),
     MaxVisit(ParentAM.MaxVisit),
@@ -80,21 +76,3 @@
 {
   AnaCtxMgr.getCFGBuildOptions().setAllAlwaysAdd();
 }
-
-
-AnalysisDeclContext *
-AnalysisManager::getAnalysisDeclContextInAnotherTU(const Decl *D) {
-  idx::Entity Ent =3D idx::Entity::get(const_cast<Decl *>(D),=20
-                                     Idxer->getProgram());
-  FunctionDecl *FuncDef;
-  idx::TranslationUnit *TU;
-  llvm::tie(FuncDef, TU) =3D Idxer->getDefinitionFor(Ent);
-
-  if (FuncDef =3D=3D 0)
-    return 0;
-
-  // This AnalysisDeclContext wraps function definition in another transla=
tion unit.
-  // But it is still owned by the AnalysisManager associated with the curr=
ent
-  // translation unit.
-  return AnaCtxMgr.getContext(FuncDef, TU);
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Core/CoreEngine.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp	=
Wed Jul 25 16:21:35 2012 +0300
@@ -17,7 +17,6 @@
 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
-#include "clang/Index/TranslationUnit.h"
 #include "clang/AST/Expr.h"
 #include "clang/AST/StmtCXX.h"
 #include "llvm/Support/Casting.h"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Core/ExprEngine.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp	=
Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp	=
Wed Jul 25 16:21:35 2012 +0300
@@ -536,6 +536,7 @@
     case Stmt::IfStmtClass:
     case Stmt::IndirectGotoStmtClass:
     case Stmt::LabelStmtClass:
+    case Stmt::AttributedStmtClass:
     case Stmt::NoStmtClass:
     case Stmt::NullStmtClass:
     case Stmt::SwitchStmtClass:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Core/ExprEngineCallAndReturn.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallA=
ndReturn.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallA=
ndReturn.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -134,6 +134,11 @@
   AnalysisDeclContext *CalleeADC =3D AMgr.getAnalysisDeclContext(FD);
   const CFG *CalleeCFG =3D CalleeADC->getCFG();
=20
+  // It is possible that the CFG cannot be constructed.
+  // Be safe, and check if the CalleeCFG is valid.
+  if (!CalleeCFG)
+    return false;
+
   if (getNumberStackFrames(Pred->getLocationContext())
         =3D=3D AMgr.InlineMaxStackDepth)
     return false;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Stat=
icAnalyzer/Frontend/AnalysisConsumer.cpp
--- a/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisCon=
sumer.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisCon=
sumer.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -207,7 +207,6 @@
                                   PP.getLangOpts(), PD,
                                   CreateStoreMgr, CreateConstraintMgr,
                                   checkerMgr.get(),
-                                  /* Indexer */ 0,=20
                                   Opts.MaxNodes, Opts.MaxLoop,
                                   Opts.VisualizeEGDot, Opts.VisualizeEGUbi,
                                   Opts.AnalysisPurgeOpt, Opts.EagerlyAssum=
e,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/clang/lib/Tool=
ing/CompilationDatabase.cpp
--- a/head/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp	Wed=
 Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp	Wed=
 Jul 25 16:21:35 2012 +0300
@@ -13,7 +13,7 @@
=20
 #include "clang/Tooling/CompilationDatabase.h"
 #include "llvm/ADT/SmallString.h"
-#include "llvm/Support/JSONParser.h"
+#include "llvm/Support/YAMLParser.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/system_error.h"
=20
@@ -22,10 +22,10 @@
=20
 namespace {
=20
-/// \brief A parser for JSON escaped strings of command line arguments.
+/// \brief A parser for escaped strings of command line arguments.
 ///
 /// Assumes \-escaping for quoted arguments (see the documentation of
-/// unescapeJSONCommandLine(...)).
+/// unescapeCommandLine(...)).
 class CommandLineArgumentParser {
  public:
   CommandLineArgumentParser(StringRef CommandLine)
@@ -90,9 +90,6 @@
=20
   bool next() {
     ++Position;
-    if (Position =3D=3D Input.end()) return false;
-    // Remove the JSON escaping first. This is done unconditionally.
-    if (*Position =3D=3D '\\') ++Position;
     return Position !=3D Input.end();
   }
=20
@@ -101,9 +98,9 @@
   std::vector<std::string> CommandLine;
 };
=20
-std::vector<std::string> unescapeJSONCommandLine(
-    StringRef JSONEscapedCommandLine) {
-  CommandLineArgumentParser parser(JSONEscapedCommandLine);
+std::vector<std::string> unescapeCommandLine(
+    StringRef EscapedCommandLine) {
+  CommandLineArgumentParser parser(EscapedCommandLine);
   return parser.parse();
 }
=20
@@ -124,6 +121,33 @@
   return Database.take();
 }
=20
+FixedCompilationDatabase *
+FixedCompilationDatabase::loadFromCommandLine(int &Argc,
+                                              const char **Argv,
+                                              Twine Directory) {
+  const char **DoubleDash =3D std::find(Argv, Argv + Argc, StringRef("--")=
);
+  if (DoubleDash =3D=3D Argv + Argc)
+    return NULL;
+  std::vector<std::string> CommandLine(DoubleDash + 1, Argv + Argc);
+  Argc =3D DoubleDash - Argv;
+  return new FixedCompilationDatabase(Directory, CommandLine);
+}
+
+FixedCompilationDatabase::
+FixedCompilationDatabase(Twine Directory, ArrayRef<std::string> CommandLin=
e) {
+  std::vector<std::string> ToolCommandLine(1, "clang-tool");
+  ToolCommandLine.insert(ToolCommandLine.end(),
+                         CommandLine.begin(), CommandLine.end());
+  CompileCommands.push_back(CompileCommand(Directory, ToolCommandLine));
+}
+
+std::vector<CompileCommand>
+FixedCompilationDatabase::getCompileCommands(StringRef FilePath) const {
+  std::vector<CompileCommand> Result(CompileCommands);
+  Result[0].CommandLine.push_back(FilePath);
+  return Result;
+}
+
 JSONCompilationDatabase *
 JSONCompilationDatabase::loadFromFile(StringRef FilePath,
                                       std::string &ErrorMessage) {
@@ -162,65 +186,77 @@
   const std::vector<CompileCommandRef> &CommandsRef =3D CommandsRefI->getV=
alue();
   std::vector<CompileCommand> Commands;
   for (int I =3D 0, E =3D CommandsRef.size(); I !=3D E; ++I) {
+    llvm::SmallString<8> DirectoryStorage;
+    llvm::SmallString<1024> CommandStorage;
     Commands.push_back(CompileCommand(
       // FIXME: Escape correctly:
-      CommandsRef[I].first,
-      unescapeJSONCommandLine(CommandsRef[I].second)));
+      CommandsRef[I].first->getValue(DirectoryStorage),
+      unescapeCommandLine(CommandsRef[I].second->getValue(CommandStorage))=
));
   }
   return Commands;
 }
=20
 bool JSONCompilationDatabase::parse(std::string &ErrorMessage) {
-  llvm::SourceMgr SM;
-  llvm::JSONParser Parser(Database->getBuffer(), &SM);
-  llvm::JSONValue *Root =3D Parser.parseRoot();
-  if (Root =3D=3D NULL) {
-    ErrorMessage =3D "Error while parsing JSON.";
+  llvm::yaml::document_iterator I =3D YAMLStream.begin();
+  if (I =3D=3D YAMLStream.end()) {
+    ErrorMessage =3D "Error while parsing YAML.";
     return false;
   }
-  llvm::JSONArray *Array =3D dyn_cast<llvm::JSONArray>(Root);
+  llvm::yaml::Node *Root =3D I->getRoot();
+  if (Root =3D=3D NULL) {
+    ErrorMessage =3D "Error while parsing YAML.";
+    return false;
+  }
+  llvm::yaml::SequenceNode *Array =3D
+    llvm::dyn_cast<llvm::yaml::SequenceNode>(Root);
   if (Array =3D=3D NULL) {
     ErrorMessage =3D "Expected array.";
     return false;
   }
-  for (llvm::JSONArray::const_iterator AI =3D Array->begin(), AE =3D Array=
->end();
+  for (llvm::yaml::SequenceNode::iterator AI =3D Array->begin(),
+                                          AE =3D Array->end();
        AI !=3D AE; ++AI) {
-    const llvm::JSONObject *Object =3D dyn_cast<llvm::JSONObject>(*AI);
+    llvm::yaml::MappingNode *Object =3D
+      llvm::dyn_cast<llvm::yaml::MappingNode>(&*AI);
     if (Object =3D=3D NULL) {
       ErrorMessage =3D "Expected object.";
       return false;
     }
-    StringRef EntryDirectory;
-    StringRef EntryFile;
-    StringRef EntryCommand;
-    for (llvm::JSONObject::const_iterator KVI =3D Object->begin(),
-                                          KVE =3D Object->end();
+    llvm::yaml::ScalarNode *Directory;
+    llvm::yaml::ScalarNode *Command;
+    llvm::SmallString<8> FileStorage;
+    llvm::StringRef File;
+    for (llvm::yaml::MappingNode::iterator KVI =3D Object->begin(),
+                                           KVE =3D Object->end();
          KVI !=3D KVE; ++KVI) {
-      const llvm::JSONValue *Value =3D (*KVI)->Value;
+      llvm::yaml::Node *Value =3D (*KVI).getValue();
       if (Value =3D=3D NULL) {
         ErrorMessage =3D "Expected value.";
         return false;
       }
-      const llvm::JSONString *ValueString =3D
-        dyn_cast<llvm::JSONString>(Value);
+      llvm::yaml::ScalarNode *ValueString =3D
+        llvm::dyn_cast<llvm::yaml::ScalarNode>(Value);
       if (ValueString =3D=3D NULL) {
         ErrorMessage =3D "Expected string as value.";
         return false;
       }
-      if ((*KVI)->Key->getRawText() =3D=3D "directory") {
-        EntryDirectory =3D ValueString->getRawText();
-      } else if ((*KVI)->Key->getRawText() =3D=3D "file") {
-        EntryFile =3D ValueString->getRawText();
-      } else if ((*KVI)->Key->getRawText() =3D=3D "command") {
-        EntryCommand =3D ValueString->getRawText();
+      llvm::yaml::ScalarNode *KeyString =3D
+        llvm::dyn_cast<llvm::yaml::ScalarNode>((*KVI).getKey());
+      llvm::SmallString<8> KeyStorage;
+      if (KeyString->getValue(KeyStorage) =3D=3D "directory") {
+        Directory =3D ValueString;
+      } else if (KeyString->getValue(KeyStorage) =3D=3D "command") {
+        Command =3D ValueString;
+      } else if (KeyString->getValue(KeyStorage) =3D=3D "file") {
+        File =3D ValueString->getValue(FileStorage);
       } else {
-        ErrorMessage =3D (Twine("Unknown key: \"") +
-                        (*KVI)->Key->getRawText() + "\"").str();
+        ErrorMessage =3D ("Unknown key: \"" +
+                        KeyString->getRawValue() + "\"").str();
         return false;
       }
     }
-    IndexByFile[EntryFile].push_back(
-      CompileCommandRef(EntryDirectory, EntryCommand));
+    IndexByFile[File].push_back(
+      CompileCommandRef(Directory, Command));
   }
   return true;
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/llc/llc.cpp
--- a/head/contrib/llvm/tools/llc/llc.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/llc/llc.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -210,29 +210,6 @@
   cl::init(false));
=20
 static cl::opt<bool>
-EnableJITExceptionHandling("jit-enable-eh",
-  cl::desc("Emit exception handling information"),
-  cl::init(false));
-
-// In debug builds, make this default to true.
-#ifdef NDEBUG
-#define EMIT_DEBUG false
-#else
-#define EMIT_DEBUG true
-#endif
-static cl::opt<bool>
-EmitJitDebugInfo("jit-emit-debug",
-  cl::desc("Emit debug information to debugger"),
-  cl::init(EMIT_DEBUG));
-#undef EMIT_DEBUG
-
-static cl::opt<bool>
-EmitJitDebugInfoToDisk("jit-emit-debug-to-disk",
-  cl::Hidden,
-  cl::desc("Emit debug info objfiles to disk"),
-  cl::init(false));
-
-static cl::opt<bool>
 EnableGuaranteedTailCallOpt("tailcallopt",
   cl::desc("Turn fastcc calls into tail calls by (potentially) changing AB=
I."),
   cl::init(false));
@@ -463,9 +440,6 @@
   if (FloatABIForCalls !=3D FloatABI::Default)
     Options.FloatABIType =3D FloatABIForCalls;
   Options.NoZerosInBSS =3D DontPlaceZerosInBSS;
-  Options.JITExceptionHandling =3D EnableJITExceptionHandling;
-  Options.JITEmitDebugInfo =3D EmitJitDebugInfo;
-  Options.JITEmitDebugInfoToDisk =3D EmitJitDebugInfoToDisk;
   Options.GuaranteedTailCallOpt =3D EnableGuaranteedTailCallOpt;
   Options.DisableTailCalls =3D DisableTailCalls;
   Options.StackAlignmentOverride =3D OverrideStackAlignment;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/lli/lli.cpp
--- a/head/contrib/llvm/tools/lli/lli.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/lli/lli.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -141,6 +141,28 @@
                                 "Large code model"),
                      clEnumValEnd));
=20
+  cl::opt<bool>
+  EnableJITExceptionHandling("jit-enable-eh",
+    cl::desc("Emit exception handling information"),
+    cl::init(false));
+
+  cl::opt<bool>
+// In debug builds, make this default to true.
+#ifdef NDEBUG
+#define EMIT_DEBUG false
+#else
+#define EMIT_DEBUG true
+#endif
+  EmitJitDebugInfo("jit-emit-debug",
+    cl::desc("Emit debug information to debugger"),
+    cl::init(EMIT_DEBUG));
+#undef EMIT_DEBUG
+
+  static cl::opt<bool>
+  EmitJitDebugInfoToDisk("jit-emit-debug-to-disk",
+    cl::Hidden,
+    cl::desc("Emit debug info objfiles to disk"),
+    cl::init(false));
 }
=20
 static ExecutionEngine *EE =3D 0;
@@ -229,6 +251,12 @@
   }
   builder.setOptLevel(OLvl);
=20
+  TargetOptions Options;
+  Options.JITExceptionHandling =3D EnableJITExceptionHandling;
+  Options.JITEmitDebugInfo =3D EmitJitDebugInfo;
+  Options.JITEmitDebugInfoToDisk =3D EmitJitDebugInfoToDisk;
+  builder.setTargetOptions(Options);
+
   EE =3D builder.create();
   if (!EE) {
     if (!ErrorMsg.empty())
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/llvm-mc/Disass=
embler.cpp
--- a/head/contrib/llvm/tools/llvm-mc/Disassembler.cpp	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/llvm/tools/llvm-mc/Disassembler.cpp	Wed Jul 25 16:21:35 =
2012 +0300
@@ -17,21 +17,18 @@
 #include "../../lib/MC/MCDisassembler/EDInst.h"
 #include "../../lib/MC/MCDisassembler/EDOperand.h"
 #include "../../lib/MC/MCDisassembler/EDToken.h"
-#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCDisassembler.h"
 #include "llvm/MC/MCInst.h"
-#include "llvm/MC/MCInstPrinter.h"
-#include "llvm/MC/MCInstrInfo.h"
-#include "llvm/MC/MCRegisterInfo.h"
+#include "llvm/MC/MCStreamer.h"
 #include "llvm/MC/MCSubtargetInfo.h"
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/ADT/Triple.h"
-#include "llvm/ADT/Twine.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryObject.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/raw_ostream.h"
+
 using namespace llvm;
=20
 typedef std::vector<std::pair<unsigned char, const char*> > ByteArrayTy;
@@ -56,8 +53,9 @@
 }
=20
 static bool PrintInsts(const MCDisassembler &DisAsm,
-                       MCInstPrinter &Printer, const ByteArrayTy &Bytes,
-                       SourceMgr &SM, raw_ostream &Out) {
+                       const ByteArrayTy &Bytes,
+                       SourceMgr &SM, raw_ostream &Out,
+                       MCStreamer &Streamer) {
   // Wrap the vector in a MemoryObject.
   VectorMemoryObject memoryObject(Bytes);
=20
@@ -87,8 +85,7 @@
       // Fall through
=20
     case MCDisassembler::Success:
-      Printer.printInst(&Inst, Out, "");
-      Out << "\n";
+      Streamer.EmitInstruction(Inst);
       break;
     }
   }
@@ -145,56 +142,22 @@
=20
 int Disassembler::disassemble(const Target &T,
                               const std::string &Triple,
-                              const std::string &Cpu,
-                              const std::string &FeaturesStr,
+                              MCSubtargetInfo &STI,
+                              MCStreamer &Streamer,
                               MemoryBuffer &Buffer,
+                              SourceMgr &SM,
                               raw_ostream &Out) {
-  // Set up disassembler.
-  OwningPtr<const MCAsmInfo> AsmInfo(T.createMCAsmInfo(Triple));
-
-  if (!AsmInfo) {
-    errs() << "error: no assembly info for target " << Triple << "\n";
-    return -1;
-  }
-
-  OwningPtr<const MCSubtargetInfo> STI(T.createMCSubtargetInfo(Triple, Cpu,
-                                                               FeaturesStr=
));
-  if (!STI) {
-    errs() << "error: no subtarget info for target " << Triple << "\n";
-    return -1;
-  }
-
-  OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler(*STI));
+  OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler(STI));
   if (!DisAsm) {
     errs() << "error: no disassembler for target " << Triple << "\n";
     return -1;
   }
=20
-  OwningPtr<const MCRegisterInfo> MRI(T.createMCRegInfo(Triple));
-  if (!MRI) {
-    errs() << "error: no register info for target " << Triple << "\n";
-    return -1;
-  }
-
-  OwningPtr<const MCInstrInfo> MII(T.createMCInstrInfo());
-  if (!MII) {
-    errs() << "error: no instruction info for target " << Triple << "\n";
-    return -1;
-  }
-
-  int AsmPrinterVariant =3D AsmInfo->getAssemblerDialect();
-  OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(AsmPrinterVariant, *As=
mInfo,
-                                                    *MII, *MRI, *STI));
-  if (!IP) {
-    errs() << "error: no instruction printer for target " << Triple << '\n=
';
-    return -1;
-  }
+  // Set up initial section manually here
+  Streamer.InitSections();
=20
   bool ErrorOccurred =3D false;
=20
-  SourceMgr SM;
-  SM.AddNewSourceBuffer(&Buffer, SMLoc());
-
   // Convert the input to a vector for disassembly.
   ByteArrayTy ByteArray;
   StringRef Str =3D Buffer.getBuffer();
@@ -202,7 +165,7 @@
   ErrorOccurred |=3D ByteArrayFromString(ByteArray, Str, SM);
=20
   if (!ByteArray.empty())
-    ErrorOccurred |=3D PrintInsts(*DisAsm, *IP, ByteArray, SM, Out);
+    ErrorOccurred |=3D PrintInsts(*DisAsm, ByteArray, SM, Out, Streamer);
=20
   return ErrorOccurred;
 }
@@ -236,12 +199,10 @@
=20
 int Disassembler::disassembleEnhanced(const std::string &TS,
                                       MemoryBuffer &Buffer,
+                                      SourceMgr &SM,
                                       raw_ostream &Out) {
   ByteArrayTy ByteArray;
   StringRef Str =3D Buffer.getBuffer();
-  SourceMgr SM;
-
-  SM.AddNewSourceBuffer(&Buffer, SMLoc());
=20
   if (ByteArrayFromString(ByteArray, Str, SM)) {
     return -1;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/llvm-mc/Disass=
embler.h
--- a/head/contrib/llvm/tools/llvm-mc/Disassembler.h	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/tools/llvm-mc/Disassembler.h	Wed Jul 25 16:21:35 20=
12 +0300
@@ -22,18 +22,23 @@
 class MemoryBuffer;
 class Target;
 class raw_ostream;
+class SourceMgr;
+class MCSubtargetInfo;
+class MCStreamer;
=20
 class Disassembler {
 public:
-  static int disassemble(const Target &target,
-                         const std::string &tripleString,
-                         const std::string &Cpu,
-                         const std::string &FeaturesStr,
-                         MemoryBuffer &buffer,
+  static int disassemble(const Target &T,
+                         const std::string &Triple,
+                         MCSubtargetInfo &STI,
+                         MCStreamer &Streamer,
+                         MemoryBuffer &Buffer,
+                         SourceMgr &SM,
                          raw_ostream &Out);
=20
   static int disassembleEnhanced(const std::string &tripleString,
                                  MemoryBuffer &buffer,
+                                 SourceMgr &SM,
                                  raw_ostream &Out);
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/llvm-mc/llvm-m=
c.cpp
--- a/head/contrib/llvm/tools/llvm-mc/llvm-mc.cpp	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/llvm/tools/llvm-mc/llvm-mc.cpp	Wed Jul 25 16:21:35 2012 =
+0300
@@ -15,6 +15,7 @@
 #include "llvm/MC/MCParser/AsmLexer.h"
 #include "llvm/MC/MCParser/MCAsmLexer.h"
 #include "llvm/MC/MCAsmBackend.h"
+#include "llvm/MC/MCAsmInfo.h"
 #include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCCodeEmitter.h"
 #include "llvm/MC/MCInstPrinter.h"
@@ -242,37 +243,11 @@
   }
 }
=20
-static int AsLexInput(const char *ProgName) {
-  OwningPtr<MemoryBuffer> BufferPtr;
-  if (error_code ec =3D MemoryBuffer::getFileOrSTDIN(InputFilename, Buffer=
Ptr)) {
-    errs() << ProgName << ": " << ec.message() << '\n';
-    return 1;
-  }
-  MemoryBuffer *Buffer =3D BufferPtr.take();
+static int AsLexInput(SourceMgr &SrcMgr, MCAsmInfo &MAI, tool_output_file =
*Out) {
=20
-  SourceMgr SrcMgr;
-
-  // Tell SrcMgr about this buffer, which is what TGParser will pick up.
-  SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
-
-  // Record the location of the include directories so that the lexer can =
find
-  // it later.
-  SrcMgr.setIncludeDirs(IncludeDirs);
-
-  const Target *TheTarget =3D GetTarget(ProgName);
-  if (!TheTarget)
-    return 1;
-
-  llvm::OwningPtr<MCAsmInfo> MAI(TheTarget->createMCAsmInfo(TripleName));
-  assert(MAI && "Unable to create target asm info!");
-
-  AsmLexer Lexer(*MAI);
+  AsmLexer Lexer(MAI);
   Lexer.setBuffer(SrcMgr.getMemoryBuffer(0));
=20
-  OwningPtr<tool_output_file> Out(GetOutputStream());
-  if (!Out)
-    return 1;
-
   bool Error =3D false;
   while (Lexer.Lex().isNot(AsmToken::Eof)) {
     AsmToken Tok =3D Lexer.getTok();
@@ -346,13 +321,49 @@
     Out->os() << "\")\n";
   }
=20
-  // Keep output if no errors.
-  if (Error =3D=3D 0) Out->keep();
-
   return Error;
 }
=20
-static int AssembleInput(const char *ProgName) {
+static int AssembleInput(const char *ProgName, const Target *TheTarget,=20
+                         SourceMgr &SrcMgr, MCContext &Ctx, MCStreamer &St=
r,
+                         MCAsmInfo &MAI, MCSubtargetInfo &STI) {
+  OwningPtr<MCAsmParser> Parser(createMCAsmParser(SrcMgr, Ctx,
+                                                  Str, MAI));
+  OwningPtr<MCTargetAsmParser> TAP(TheTarget->createMCAsmParser(STI, *Pars=
er));
+  if (!TAP) {
+    errs() << ProgName
+           << ": error: this target does not support assembly parsing.\n";
+    return 1;
+  }
+
+  Parser->setShowParsedOperands(ShowInstOperands);
+  Parser->setTargetParser(*TAP.get());
+
+  int Res =3D Parser->Run(NoInitialTextSection);
+
+  return Res;
+}
+
+int main(int argc, char **argv) {
+  // Print a stack trace if we signal out.
+  sys::PrintStackTraceOnErrorSignal();
+  PrettyStackTraceProgram X(argc, argv);
+  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+
+  // Initialize targets and assembly printers/parsers.
+  llvm::InitializeAllTargetInfos();
+  llvm::InitializeAllTargetMCs();
+  llvm::InitializeAllAsmParsers();
+  llvm::InitializeAllDisassemblers();
+
+  // Register the target printer for --version.
+  cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVers=
ion);
+
+  cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n"=
);
+  TripleName =3D Triple::normalize(TripleName);
+  setDwarfDebugFlags(argc, argv);
+
+  const char *ProgName =3D argv[0];
   const Target *TheTarget =3D GetTarget(ProgName);
   if (!TheTarget)
     return 1;
@@ -413,7 +424,6 @@
   OwningPtr<MCSubtargetInfo>
     STI(TheTarget->createMCSubtargetInfo(TripleName, MCPU, FeaturesStr));
=20
-  // FIXME: There is a bit of code duplication with addPassesToEmitFile.
   if (FileType =3D=3D OFT_AssemblyFile) {
     MCInstPrinter *IP =3D
       TheTarget->createMCInstPrinter(OutputAsmVariant, *MAI, *MCII, *MRI, =
*STI);
@@ -440,93 +450,24 @@
                                                 NoExecStack));
   }
=20
-  OwningPtr<MCAsmParser> Parser(createMCAsmParser(SrcMgr, Ctx,
-                                                  *Str.get(), *MAI));
-  OwningPtr<MCTargetAsmParser> TAP(TheTarget->createMCAsmParser(*STI, *Par=
ser));
-  if (!TAP) {
-    errs() << ProgName
-           << ": error: this target does not support assembly parsing.\n";
-    return 1;
-  }
-
-  Parser->setShowParsedOperands(ShowInstOperands);
-  Parser->setTargetParser(*TAP.get());
-
-  int Res =3D Parser->Run(NoInitialTextSection);
-
-  // Keep output if no errors.
-  if (Res =3D=3D 0) Out->keep();
-
-  return Res;
-}
-
-static int DisassembleInput(const char *ProgName, bool Enhanced) {
-  const Target *TheTarget =3D GetTarget(ProgName);
-  if (!TheTarget)
-    return 0;
-
-  OwningPtr<MemoryBuffer> Buffer;
-  if (error_code ec =3D MemoryBuffer::getFileOrSTDIN(InputFilename, Buffer=
)) {
-    errs() << ProgName << ": " << ec.message() << '\n';
-    return 1;
-  }
-
-  OwningPtr<tool_output_file> Out(GetOutputStream());
-  if (!Out)
-    return 1;
-
-  int Res;
-  if (Enhanced) {
-    Res =3D
-      Disassembler::disassembleEnhanced(TripleName, *Buffer.take(), Out->o=
s());
-  } else {
-    // Package up features to be passed to target/subtarget
-    std::string FeaturesStr;
-    if (MAttrs.size()) {
-      SubtargetFeatures Features;
-      for (unsigned i =3D 0; i !=3D MAttrs.size(); ++i)
-        Features.AddFeature(MAttrs[i]);
-      FeaturesStr =3D Features.getString();
-    }
-
-    Res =3D Disassembler::disassemble(*TheTarget, TripleName, MCPU, Featur=
esStr,
-                                    *Buffer.take(), Out->os());
+  int Res =3D 1;
+  switch (Action) {
+  case AC_AsLex:
+    Res =3D AsLexInput(SrcMgr, *MAI, Out.get());
+    break;
+  case AC_Assemble:
+    Res =3D AssembleInput(ProgName, TheTarget, SrcMgr, Ctx, *Str, *MAI, *S=
TI);
+    break;
+  case AC_Disassemble:
+    Res =3D Disassembler::disassemble(*TheTarget, TripleName, *STI, *Str,
+                                    *Buffer, SrcMgr, Out->os());
+    break;
+  case AC_EDisassemble:
+    Res =3D  Disassembler::disassembleEnhanced(TripleName, *Buffer, SrcMgr=
, Out->os());
+    break;
   }
=20
   // Keep output if no errors.
   if (Res =3D=3D 0) Out->keep();
-
   return Res;
 }
-
-
-int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal();
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
-  // Initialize targets and assembly printers/parsers.
-  llvm::InitializeAllTargetInfos();
-  llvm::InitializeAllTargetMCs();
-  llvm::InitializeAllAsmParsers();
-  llvm::InitializeAllDisassemblers();
-
-  // Register the target printer for --version.
-  cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVers=
ion);
-
-  cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n"=
);
-  TripleName =3D Triple::normalize(TripleName);
-  setDwarfDebugFlags(argc, argv);
-
-  switch (Action) {
-  case AC_AsLex:
-    return AsLexInput(argv[0]);
-  case AC_Assemble:
-    return AssembleInput(argv[0]);
-  case AC_Disassemble:
-    return DisassembleInput(argv[0], false);
-  case AC_EDisassemble:
-    return DisassembleInput(argv[0], true);
-  }
-}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/llvm-stress/ll=
vm-stress.cpp
--- a/head/contrib/llvm/tools/llvm-stress/llvm-stress.cpp	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/llvm/tools/llvm-stress/llvm-stress.cpp	Wed Jul 25 16:21:=
35 2012 +0300
@@ -412,7 +412,7 @@
     Value *Val0 =3D getRandomVectorValue();
     Value *V =3D ExtractElementInst::Create(Val0,
              ConstantInt::get(Type::getInt32Ty(BB->getContext()),
-             Ran->Rand() % cast<VectorType>(Val0->getType())->getNumElemen=
ts()),=20
+             Ran->Rand() % cast<VectorType>(Val0->getType())->getNumElemen=
ts()),
              "E", BB->getTerminator());
     return PT->push_back(V);
   }
@@ -476,7 +476,7 @@
       DestTy =3D pickVectorType(VecTy->getNumElements());
     }
=20
-    // no need to casr.
+    // no need to cast.
     if (VTy =3D=3D DestTy) return;
=20
     // Pointers:
@@ -487,9 +487,11 @@
         new BitCastInst(V, DestTy, "PC", BB->getTerminator()));
     }
=20
+    unsigned VSize =3D VTy->getScalarType()->getPrimitiveSizeInBits();
+    unsigned DestSize =3D DestTy->getScalarType()->getPrimitiveSizeInBits(=
);
+
     // Generate lots of bitcasts.
-    if ((Ran->Rand() & 1) &&
-        VTy->getPrimitiveSizeInBits() =3D=3D DestTy->getPrimitiveSizeInBit=
s()) {
+    if ((Ran->Rand() & 1) && VSize =3D=3D DestSize) {
       return PT->push_back(
         new BitCastInst(V, DestTy, "BC", BB->getTerminator()));
     }
@@ -497,11 +499,11 @@
     // Both types are integers:
     if (VTy->getScalarType()->isIntegerTy() &&
         DestTy->getScalarType()->isIntegerTy()) {
-      if (VTy->getScalarType()->getPrimitiveSizeInBits() >
-          DestTy->getScalarType()->getPrimitiveSizeInBits()) {
+      if (VSize > DestSize) {
         return PT->push_back(
           new TruncInst(V, DestTy, "Tr", BB->getTerminator()));
       } else {
+        assert(VSize < DestSize && "Different int types with the same size=
?");
         if (Ran->Rand() & 1)
           return PT->push_back(
             new ZExtInst(V, DestTy, "ZE", BB->getTerminator()));
@@ -531,14 +533,15 @@
     // Both floats.
     if (VTy->getScalarType()->isFloatingPointTy() &&
         DestTy->getScalarType()->isFloatingPointTy()) {
-      if (VTy->getScalarType()->getPrimitiveSizeInBits() >
-          DestTy->getScalarType()->getPrimitiveSizeInBits()) {
+      if (VSize > DestSize) {
         return PT->push_back(
           new FPTruncInst(V, DestTy, "Tr", BB->getTerminator()));
-      } else {
+      } else if (VSize < DestSize) {
         return PT->push_back(
           new FPExtInst(V, DestTy, "ZE", BB->getTerminator()));
       }
+      // If VSize =3D=3D DestSize, then the two types must be fp128 and pp=
c_fp128,
+      // for which there is no defined conversion. So do nothing.
     }
   }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/tools/opt/opt.cpp
--- a/head/contrib/llvm/tools/opt/opt.cpp	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/llvm/tools/opt/opt.cpp	Wed Jul 25 16:21:35 2012 +0300
@@ -114,6 +114,9 @@
 OptLevelO3("O3",
            cl::desc("Optimization level 3. Similar to llvm-gcc -O3"));
=20
+static cl::opt<std::string>
+TargetTriple("mtriple", cl::desc("Override target triple for module"));
+
 static cl::opt<bool>
 UnitAtATime("funit-at-a-time",
             cl::desc("Enable IPO. This is same as llvm-gcc's -funit-at-a-t=
ime"),
@@ -512,6 +515,10 @@
     return 1;
   }
=20
+  // If we are supposed to override the target triple, do so now.
+  if (!TargetTriple.empty())
+    M->setTargetTriple(Triple::normalize(TargetTriple));
+
   // Figure out what stream we are supposed to write to...
   OwningPtr<tool_output_file> Out;
   if (NoOutput) {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/AsmMa=
tcherEmitter.cpp
--- a/head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp	Wed Jul 25 16:=
20:13 2012 +0300
+++ b/head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp	Wed Jul 25 16:=
21:35 2012 +0300
@@ -1181,7 +1181,8 @@
   unsigned VariantCount =3D Target.getAsmParserVariantCount();
   for (unsigned VC =3D 0; VC !=3D VariantCount; ++VC) {
     Record *AsmVariant =3D Target.getAsmParserVariant(VC);
-    std::string CommentDelimiter =3D AsmVariant->getValueAsString("Comment=
Delimiter");
+    std::string CommentDelimiter =3D
+      AsmVariant->getValueAsString("CommentDelimiter");
     std::string RegisterPrefix =3D AsmVariant->getValueAsString("RegisterP=
refix");
     int AsmVariantNo =3D AsmVariant->getValueAsInt("Variant");
=20
@@ -1208,11 +1209,11 @@
           // reject it.  We reject aliases and ignore instructions for now.
           if (OI.MINumOperands !=3D 1) {
             // FIXME: Should reject these.  The ARM backend hits this with=
 $lane
-            // in a bunch of instructions. It is unclear what the right an=
swer is.
+            // in a bunch of instructions. The right answer is unclear.
             DEBUG({
                 errs() << "warning: '" << CGI.TheDef->getName() << "': "
-                       << "ignoring instruction with multi-operand tied op=
erand '"
-                       << OI.Name << "'\n";
+                     << "ignoring instruction with multi-operand tied oper=
and '"
+                     << OI.Name << "'\n";
               });
             continue;
           }
@@ -1248,8 +1249,8 @@
       // If the tblgen -match-prefix option is specified (for tblgen hacke=
rs),
       // filter the set of instruction aliases we consider, based on the t=
arget
       // instruction.
-      if (!StringRef(Alias->ResultInst->TheDef->getName()).startswith(
-                                                                      Matc=
hPrefix))
+      if (!StringRef(Alias->ResultInst->TheDef->getName())
+            .startswith( MatchPrefix))
         continue;
=20
       OwningPtr<MatchableInfo> II(new MatchableInfo(Alias));
@@ -1328,6 +1329,9 @@
     Record *Rec =3D AllTokenAliases[i];
     ClassInfo *FromClass =3D getTokenClass(Rec->getValueAsString("FromToke=
n"));
     ClassInfo *ToClass =3D getTokenClass(Rec->getValueAsString("ToToken"));
+    if (FromClass =3D=3D ToClass)
+      throw TGError(Rec->getLoc(),
+                    "error: Destination value identical to source value.");
     FromClass->SuperClasses.push_back(ToClass);
   }
=20
@@ -1868,7 +1872,8 @@
     SubtargetFeatureInfo &SFI =3D *it->second;
=20
     OS << "  if (";
-    std::string CondStorage =3D SFI.TheDef->getValueAsString("AssemblerCon=
dString");
+    std::string CondStorage =3D
+      SFI.TheDef->getValueAsString("AssemblerCondString");
     StringRef Conds =3D CondStorage;
     std::pair<StringRef,StringRef> Comma =3D Conds.split(',');
     bool First =3D true;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/AsmWr=
iterEmitter.cpp
--- a/head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -289,7 +289,8 @@
   for (unsigned i =3D 0, e =3D NumberedInstructions.size(); i !=3D e; ++i)=
 {
     AsmWriterInst *AWI =3D CGIAWIMap[NumberedInstructions[i]];
     if (AWI !=3D 0 &&
-        AWI->Operands[0].OperandType =3D=3D AsmWriterOperand::isLiteralTex=
tOperand &&
+        AWI->Operands[0].OperandType =3D=3D
+                 AsmWriterOperand::isLiteralTextOperand &&
         !AWI->Operands[0].Str.empty()) {
       std::string Str =3D AWI->Operands[0].Str;
       UnescapeString(Str);
@@ -589,7 +590,7 @@
   std::map<StringRef, unsigned> OpMap;
   std::string Result;
   std::string AsmString;
-  std::vector<Record*> ReqFeatures;
+  SmallVector<Record*, 4> ReqFeatures;
 public:
   IAPrinter(std::string R, std::string AS)
     : Result(R), AsmString(AS) {}
@@ -919,7 +920,7 @@
   O << "      }\n";
   O << "    }\n";
   O << "  }\n\n";
- =20
+
   O << "  return true;\n";
   O << "}\n\n";
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/CodeG=
enDAGPatterns.cpp
--- a/head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp	Wed Jul 25 16=
:21:35 2012 +0300
@@ -17,6 +17,7 @@
 #include "llvm/TableGen/Record.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/Twine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
 #include <algorithm>
@@ -2483,10 +2484,9 @@
     // If we decided that this is a store from the pattern, then the .td f=
ile
     // entry is redundant.
     if (MayStore)
-      fprintf(stderr,
-              "Warning: mayStore flag explicitly set on instruction '%s'"
-              " but flag already inferred from pattern.\n",
-              Inst.TheDef->getName().c_str());
+      PrintWarning(Inst.TheDef->getLoc(),
+                   "mayStore flag explicitly set on "
+                   "instruction, but flag already inferred from pattern.");
     MayStore =3D true;
   }
=20
@@ -2494,24 +2494,25 @@
     // If we decided that this is a load from the pattern, then the .td fi=
le
     // entry is redundant.
     if (MayLoad)
-      fprintf(stderr,
-              "Warning: mayLoad flag explicitly set on instruction '%s'"
-              " but flag already inferred from pattern.\n",
-              Inst.TheDef->getName().c_str());
+      PrintWarning(Inst.TheDef->getLoc(),
+                   "mayLoad flag explicitly set on "
+                   "instruction, but flag already inferred from pattern.");
     MayLoad =3D true;
   }
=20
   if (Inst.neverHasSideEffects) {
     if (HadPattern)
-      fprintf(stderr, "Warning: neverHasSideEffects set on instruction '%s=
' "
-              "which already has a pattern\n", Inst.TheDef->getName().c_st=
r());
+      PrintWarning(Inst.TheDef->getLoc(),
+                   "neverHasSideEffects flag explicitly set on "
+                   "instruction, but flag already inferred from pattern.");
     HasSideEffects =3D false;
   }
=20
   if (Inst.hasSideEffects) {
     if (HasSideEffects)
-      fprintf(stderr, "Warning: hasSideEffects set on instruction '%s' "
-              "which already inferred this.\n", Inst.TheDef->getName().c_s=
tr());
+      PrintWarning(Inst.TheDef->getLoc(),
+                   "hasSideEffects flag explicitly set on "
+                   "instruction, but flag already inferred from pattern.");
     HasSideEffects =3D true;
   }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/CodeG=
enRegisters.cpp
--- a/head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp	Wed Jul 25 16:2=
0:13 2012 +0300
+++ b/head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp	Wed Jul 25 16:2=
1:35 2012 +0300
@@ -19,6 +19,7 @@
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringExtras.h"
+#include "llvm/ADT/Twine.h"
=20
 using namespace llvm;
=20
@@ -896,11 +897,10 @@
           if (i1d->second =3D=3D Reg3) {
             // Conflicting composition? Emit a warning but allow it.
             if (CodeGenSubRegIndex *Prev =3D Idx1->addComposite(Idx2, i1d-=
>first))
-              errs() << "Warning: SubRegIndex " << Idx1->getQualifiedName()
-                     << " and " << Idx2->getQualifiedName()
-                     << " compose ambiguously as "
-                     << Prev->getQualifiedName() << " or "
-                     << i1d->first->getQualifiedName() << "\n";
+              PrintWarning(Twine("SubRegIndex") + Idx1->getQualifiedName()=
 +
+                     " and " + Idx2->getQualifiedName() +
+                     " compose ambiguously as " + Prev->getQualifiedName()=
 +
+                     " or " + i1d->first->getQualifiedName());
           }
         }
       }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/EDEmi=
tter.cpp
--- a/head/contrib/llvm/utils/TableGen/EDEmitter.cpp	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/llvm/utils/TableGen/EDEmitter.cpp	Wed Jul 25 16:21:35 20=
12 +0300
@@ -594,6 +594,7 @@
   IMM("jtblock_operand");
   IMM("nohash_imm");
   IMM("p_imm");
+  IMM("pf_imm");
   IMM("c_imm");
   IMM("coproc_option_imm");
   IMM("imod_op");
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/llvm/utils/TableGen/Regis=
terInfoEmitter.cpp
--- a/head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp	Wed Jul 25 1=
6:20:13 2012 +0300
+++ b/head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -17,22 +17,23 @@
 #include "CodeGenTarget.h"
 #include "CodeGenRegisters.h"
 #include "SequenceToOffsetTable.h"
+#include "llvm/TableGen/Error.h"
 #include "llvm/TableGen/Record.h"
 #include "llvm/ADT/BitVector.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/STLExtras.h"
+#include "llvm/ADT/Twine.h"
 #include "llvm/Support/Format.h"
 #include <algorithm>
 #include <set>
 using namespace llvm;
=20
 // runEnums - Print out enum values for all of the registers.
-void
-RegisterInfoEmitter::runEnums(raw_ostream &OS,
-                              CodeGenTarget &Target, CodeGenRegBank &Bank)=
 {
+void RegisterInfoEmitter::runEnums(raw_ostream &OS,
+                                   CodeGenTarget &Target, CodeGenRegBank &=
Bank) {
   const std::vector<CodeGenRegister*> &Registers =3D Bank.getRegisters();
=20
-  // Register enums are stored as uint16_t in the tables. Make sure we'll =
fit
+  // Register enums are stored as uint16_t in the tables. Make sure we'll =
fit.
   assert(Registers.size() <=3D 0xffff && "Too many regs to fit in tables");
=20
   std::string Namespace =3D Registers[0]->TheDef->getValueAsString("Namesp=
ace");
@@ -208,8 +209,8 @@
     std::vector<int64_t> RegNums =3D Reg->getValueAsListOfInts("DwarfNumbe=
rs");
     maxLength =3D std::max((size_t)maxLength, RegNums.size());
     if (DwarfRegNums.count(Reg))
-      errs() << "Warning: DWARF numbers for register " << getQualifiedName=
(Reg)
-             << "specified multiple times\n";
+      PrintWarning(Reg->getLoc(), Twine("DWARF numbers for register ") +
+                   getQualifiedName(Reg) + "specified multiple times");
     DwarfRegNums[Reg] =3D RegNums;
   }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/ncurses/man/curs_threads.=
3x
--- a/head/contrib/ncurses/man/curs_threads.3x	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/ncurses/man/curs_threads.3x	Wed Jul 25 16:21:35 2012 +03=
00
@@ -45,9 +45,9 @@
 .br
 \fBint set_tabsize(int size);\fR
 .br
-\fBint use_screen(SCREEN *scr, NCURSES_WINDOW_CB func, void *data);\fR
+\fBint use_screen(SCREEN *scr, NCURSES_SCREEN_CB func, void *data);\fR
 .br
-\fBint use_window(WINDOW *win, NCURSES_SCREEN_CB func, void *data);\fR
+\fBint use_window(WINDOW *win, NCURSES_WINDOW_CB func, void *data);\fR
 .br
 .SH DESCRIPTION
 This implementation can be configured to provide rudimentary support
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/netcat/FREEBSD-vendor
--- a/head/contrib/netcat/FREEBSD-vendor	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/netcat/FREEBSD-vendor	Wed Jul 25 16:21:35 2012 +0300
@@ -1,5 +1,5 @@
-# $FreeBSD$
+# $FreeBSD: head/contrib/netcat/FREEBSD-vendor 235038 2012-05-04 21:06:53Z=
 delphij $
 Project:	netcat (aka src/usr.bin/nc in OpenBSD)
 ProjectURL:	http://www.openbsd.org/
-Version:	4.7
+Version:	5.1
 License:	BSD
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/netcat/nc.1
--- a/head/contrib/netcat/nc.1	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/netcat/nc.1	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-.\"     $OpenBSD: nc.1,v 1.57 2011/01/09 22:16:46 jeremy Exp $
+.\"     $OpenBSD: nc.1,v 1.60 2012/02/07 12:11:43 lum Exp $
 .\"
 .\" Copyright (c) 1996 David Sacerdote
 .\" All rights reserved.
@@ -25,9 +25,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE =
OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: head/contrib/netcat/nc.1 221793 2011-05-11 21:52:26Z delphij=
 $
+.\" $FreeBSD: head/contrib/netcat/nc.1 235037 2012-05-04 21:03:39Z delphij=
 $
 .\"
-.Dd January 8, 2011
+.Dd October 4, 2011
 .Dt NC 1
 .Os
 .Sh NAME
@@ -45,7 +45,7 @@
 .Op Fl P Ar proxy_username
 .Op Fl p Ar source_port
 .Op Fl s Ar source
-.Op Fl T Ar ToS
+.Op Fl T Ar toskeyword
 .Op Fl V Ar rtable
 .Op Fl w Ar timeout
 .Op Fl X Ar proxy_protocol
@@ -186,14 +186,21 @@
 It is an error to use this option in conjunction with the
 .Fl l
 option.
-.It Fl T Ar ToS
-Specifies IP Type of Service (ToS) for the connection.
-Valid values are the tokens
-.Dq lowdelay ,
-.Dq throughput ,
-.Dq reliability ,
-or an 8-bit hexadecimal value preceded by
-.Dq 0x .
+.It Fl T Ar toskeyword
+Change IPv4 TOS value.
+.Ar toskeyword
+may be one of
+.Ar critical ,
+.Ar inetcontrol ,
+.Ar lowdelay ,
+.Ar netcontrol ,
+.Ar throughput ,
+.Ar reliability ,
+or one of the DiffServ Code Points:
+.Ar ef ,
+.Ar af11 ... af43 ,
+.Ar cs0 ... cs7 ;
+or a number in either hex or decimal.
 .It Fl t
 Causes
 .Nm
@@ -227,9 +234,9 @@
 .Nm
 give more verbose output.
 .It Fl w Ar timeout
-If a connection and stdin are idle for more than
+Connections which cannot be established or are idle timeout after
 .Ar timeout
-seconds, then the connection is silently closed.
+seconds.
 The
 .Fl w
 flag has no effect on the
@@ -480,8 +487,15 @@
 Rewritten with IPv6 support by
 .An Eric Jackson Aq ericj at monkey.org .
 .Sh CAVEATS
-UDP port scans will always succeed
-(i.e. report the port as open),
-rendering the
+UDP port scans using the
 .Fl uz
-combination of flags relatively useless.
+combination of flags will always report success irrespective of
+the target machine's state.
+However,
+in conjunction with a traffic sniffer either on the target machine
+or an intermediary device,
+the
+.Fl uz
+combination could be useful for communications diagnostics.
+Note that the amount of UDP traffic generated may be limited either
+due to hardware resources and/or configuration settings.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/netcat/netcat.c
--- a/head/contrib/netcat/netcat.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/netcat/netcat.c	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-/* $OpenBSD: netcat.c,v 1.101 2011/06/21 17:31:07 mikeb Exp $ */
+/* $OpenBSD: netcat.c,v 1.105 2012/02/09 06:25:35 lum Exp $ */
 /*
  * Copyright (c) 2001 Eric Jackson <ericj at monkey.org>
  *
@@ -25,7 +25,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: head/contrib/netcat/netcat.c 231852 2012-02-17 02:39:58Z bz $
+ * $FreeBSD: head/contrib/netcat/netcat.c 235037 2012-05-04 21:03:39Z delp=
hij $
  */
=20
 /*
@@ -107,6 +107,7 @@
 int	local_listen(char *, char *, struct addrinfo);
 void	readwrite(int);
 int	remote_connect(const char *, const char *, struct addrinfo);
+int	timeout_connect(int, const struct sockaddr *, socklen_t);
 int	socks_connect(const char *, const char *, struct addrinfo,
 	    const char *, const char *, struct addrinfo, int, const char *);
 int	udptest(int);
@@ -114,7 +115,7 @@
 int	unix_connect(char *);
 int	unix_listen(char *);
 void	set_common_sockopts(int);
-int	parse_iptos(char *);
+int	map_tos(char *, int *);
 void	usage(int);
=20
 #ifdef IPSEC
@@ -281,7 +282,18 @@
 			Sflag =3D 1;
 			break;
 		case 'T':
-			Tflag =3D parse_iptos(optarg);
+			errstr =3D NULL;
+			errno =3D 0;
+			if (map_tos(optarg, &Tflag))
+				break;
+			if (strlen(optarg) > 1 && optarg[0] =3D=3D '0' &&
+			    optarg[1] =3D=3D 'x')
+				Tflag =3D (int)strtol(optarg, NULL, 16);
+			else
+				Tflag =3D (int)strtonum(optarg, 0, 255,
+				    &errstr);
+			if (Tflag < 0 || Tflag > 255 || errstr || errno)
+				errx(1, "illegal tos value %s", optarg);
 			break;
 		default:
 			usage(1);
@@ -633,7 +645,7 @@
=20
 		set_common_sockopts(s);
=20
-		if (connect(s, res0->ai_addr, res0->ai_addrlen) =3D=3D 0)
+		if (timeout_connect(s, res0->ai_addr, res0->ai_addrlen) =3D=3D 0)
 			break;
 		else if (vflag)
 			warn("connect to %s port %s (%s) failed", host, port,
@@ -648,6 +660,43 @@
 	return (s);
 }
=20
+int
+timeout_connect(int s, const struct sockaddr *name, socklen_t namelen)
+{
+	struct pollfd pfd;
+	socklen_t optlen;
+	int flags, optval;
+	int ret;
+
+	if (timeout !=3D -1) {
+		flags =3D fcntl(s, F_GETFL, 0);
+		if (fcntl(s, F_SETFL, flags | O_NONBLOCK) =3D=3D -1)
+			err(1, "set non-blocking mode");
+	}
+
+	if ((ret =3D connect(s, name, namelen)) !=3D 0 && errno =3D=3D EINPROGRES=
S) {
+		pfd.fd =3D s;
+		pfd.events =3D POLLOUT;
+		if ((ret =3D poll(&pfd, 1, timeout)) =3D=3D 1) {
+			optlen =3D sizeof(optval);
+			if ((ret =3D getsockopt(s, SOL_SOCKET, SO_ERROR,
+			    &optval, &optlen)) =3D=3D 0) {
+				errno =3D optval;
+				ret =3D optval =3D=3D 0 ? 0 : -1;
+			}
+		} else if (ret =3D=3D 0) {
+			errno =3D ETIMEDOUT;
+			ret =3D -1;
+		} else
+			err(1, "poll failed");
+	}
+
+	if (timeout !=3D -1 && fcntl(s, F_SETFL, flags) =3D=3D -1)
+		err(1, "restoring flags");
+
+	return (ret);
+}
+
 /*
  * local_listen()
  * Returns a socket listening on a local port, binds to specified source
@@ -818,7 +867,7 @@
=20
 /*
  * build_ports()
- * Build an array or ports in portlist[], listing each port
+ * Build an array of ports in portlist[], listing each port
  * that we should try to connect to.
  */
 void
@@ -830,9 +879,6 @@
 	int x =3D 0;
=20
 	if ((n =3D strchr(p, '-')) !=3D NULL) {
-		if (lflag)
-			errx(1, "Cannot use -l with multiple ports!");
-
 		*n =3D '\0';
 		n++;
=20
@@ -884,8 +930,7 @@
 /*
  * udptest()
  * Do a few writes to see if the UDP port is there.
- * XXX - Better way of doing this? Doesn't work for IPv6.
- * Also fails after around 100 ports checked.
+ * Fails once PF state table is full.
  */
 int
 udptest(int s)
@@ -946,20 +991,51 @@
 }
=20
 int
-parse_iptos(char *s)
+map_tos(char *s, int *val)
 {
-	int tos =3D -1;
+	/* DiffServ Codepoints and other TOS mappings */
+	const struct toskeywords {
+		const char	*keyword;
+		int		 val;
+	} *t, toskeywords[] =3D {
+		{ "af11",		IPTOS_DSCP_AF11 },
+		{ "af12",		IPTOS_DSCP_AF12 },
+		{ "af13",		IPTOS_DSCP_AF13 },
+		{ "af21",		IPTOS_DSCP_AF21 },
+		{ "af22",		IPTOS_DSCP_AF22 },
+		{ "af23",		IPTOS_DSCP_AF23 },
+		{ "af31",		IPTOS_DSCP_AF31 },
+		{ "af32",		IPTOS_DSCP_AF32 },
+		{ "af33",		IPTOS_DSCP_AF33 },
+		{ "af41",		IPTOS_DSCP_AF41 },
+		{ "af42",		IPTOS_DSCP_AF42 },
+		{ "af43",		IPTOS_DSCP_AF43 },
+		{ "critical",		IPTOS_PREC_CRITIC_ECP },
+		{ "cs0",		IPTOS_DSCP_CS0 },
+		{ "cs1",		IPTOS_DSCP_CS1 },
+		{ "cs2",		IPTOS_DSCP_CS2 },
+		{ "cs3",		IPTOS_DSCP_CS3 },
+		{ "cs4",		IPTOS_DSCP_CS4 },
+		{ "cs5",		IPTOS_DSCP_CS5 },
+		{ "cs6",		IPTOS_DSCP_CS6 },
+		{ "cs7",		IPTOS_DSCP_CS7 },
+		{ "ef",			IPTOS_DSCP_EF },
+		{ "inetcontrol",	IPTOS_PREC_INTERNETCONTROL },
+		{ "lowdelay",		IPTOS_LOWDELAY },
+		{ "netcontrol",		IPTOS_PREC_NETCONTROL },
+		{ "reliability",	IPTOS_RELIABILITY },
+		{ "throughput",		IPTOS_THROUGHPUT },
+		{ NULL, 		-1 },
+	};
=20
-	if (strcmp(s, "lowdelay") =3D=3D 0)
-		return (IPTOS_LOWDELAY);
-	if (strcmp(s, "throughput") =3D=3D 0)
-		return (IPTOS_THROUGHPUT);
-	if (strcmp(s, "reliability") =3D=3D 0)
-		return (IPTOS_RELIABILITY);
+	for (t =3D toskeywords; t->keyword !=3D NULL; t++) {
+		if (strcmp(s, t->keyword) =3D=3D 0) {
+			*val =3D t->val;
+			return (1);
+		}
+	}
=20
-	if (sscanf(s, "0x%x", &tos) !=3D 1 || tos < 0 || tos > 0xff)
-		errx(1, "invalid IP Type of Service");
-	return (tos);
+	return (0);
 }
=20
 void
@@ -990,7 +1066,7 @@
 	\t-r		Randomize remote ports\n\
 	\t-S		Enable the TCP MD5 signature option\n\
 	\t-s addr\t	Local source address\n\
-	\t-T ToS\t	Set IP Type of Service\n\
+	\t-T toskeyword\tSet IP Type of Service\n\
 	\t-t		Answer TELNET negotiation\n\
 	\t-U		Use UNIX domain socket\n\
 	\t-u		UDP mode\n\
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/CREDITS
--- a/head/contrib/openpam/CREDITS	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/CREDITS	Wed Jul 25 16:21:35 2012 +0300
@@ -16,16 +16,21 @@
 	Brian Fundakowski Feldman <green at freebsd.org>
 	Christos Zoulas <christos at netbsd.org>
 	Daniel Richard G. <skunk at iskunk.org>
-	Darren J. Moffat <Darren.Moffat at sun.com>
+	Darren J. Moffat <darren.moffat at sun.com>
 	Dmitry V. Levin <ldv at altlinux.org>
+	Don Lewis <truckman at freebsd.org>
 	Emmanuel Dreyfus <manu at netbsd.org>
 	Eric Melville <eric at freebsd.org>
-	Gary Winiger <Gary.Winiger at sun.com>
+	Gary Winiger <gary.winiger at sun.com>
+	Gleb Smirnoff <glebius at freebsd.org>
 	Hubert Feyrer <hubert at feyrer.de>
+	Jason Evans <jasone at freebsd.org>
 	Joe Marcus Clarke <marcus at freebsd.org>
 	Juli Mallett <jmallett at freebsd.org>
 	J=C3=B6rg Sonnenberger <joerg at britannica.bec.de>
+	Ma=C3=ABlle Lesage <lesage.maelle at gmail.com>
 	Mark Murray <markm at freebsd.org>
+	Matthias Drochner <drochner at netbsd.org>
 	Mike Petullo <mike at flyn.org>
 	Mikhail Teterin <mi at aldan.algebra.com>
 	Mikko Ty=C3=B6l=C3=A4j=C3=A4rvi <mbsd at pacbell.net>
@@ -38,4 +43,4 @@
 	Wojciech A. Koszek <wkoszek at freebsd.org>
 	Yar Tikhiy <yar at freebsd.org>
=20
-$Id: CREDITS 498 2011-11-21 16:27:04Z des $
+$Id: CREDITS 587 2012-04-08 11:12:10Z des $
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/HISTORY
--- a/head/contrib/openpam/HISTORY	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/HISTORY	Wed Jul 25 16:21:35 2012 +0300
@@ -1,3 +1,51 @@
+OpenPAM Micrampelis						2012-05-26
+
+ - FEATURE: Add an openpam_readword(3) function which reads the next
+   word from an input stream, applying shell quoting and escaping
+   rules.  Add numerous unit tests for openpam_readword(3).
+
+ - FEATURE: Add an openpam_readlinev(3) function which uses the
+   openpam_readword(3) function to read words from an input stream one
+   at a time until it reaches an unquoted, unescaped newline, and
+   returns an array of those words.  Add several unit tests for
+   openpam_readlinev(3).
+
+ - FEATURE: Add a PAM_HOST item which pam_start(3) initializes to the
+   machine's hostname.  This was implemented in Lycopsida but
+   inadvertantly left out of the release notes.
+
+ - FEATURE: In pam_get_authtok(3), if neither the application nor the
+   module have specified a prompt and PAM_HOST and PAM_RHOST are both
+   defined but not equal, use a different default prompt that includes
+   PAM_USER and PAM_HOST.
+
+ - ENHANCE: Rewrite the policy parser to used openpam_readlinev(),
+   which greatly simplifies the code.
+
+ - ENHANCE: The previous implementation of the policy parser relied on
+   the openpam_readline(3) function, which (by design) munges
+   whitespace and understands neither quotes nor backslash escapes.
+   As a result of the aforementioned rewrite, whitespace, quotes and
+   backslash escapes in policy files are now handled in a consistent
+   and predictable manner.
+
+ - ENHANCE: On platforms that have it, use fdlopen(3) to load modules.
+   This closes the race between the ownership / permission check and
+   the dlopen(3) call.
+
+ - ENHANCE: Reduce the amount of pointless error messages generated
+   while searching for a module.
+
+ - ENHANCE: Numerous documentation improvements, both in content and
+   formatting.
+
+ - BUGFIX: A patch incorporated in Lycopsida inadvertantly changed
+   OpenPAM's behavior when several policies exist for the same
+   service, from ignoring all but the first to concatenating them all.
+   Revert to the original behavior.
+
+ - BUGFIX: Plug a memory leak in the policy parser.
+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
 OpenPAM Lycopsida						2011-12-18
=20
  - ENHANCE: removed static build autodetection, which didn't work
@@ -269,7 +317,7 @@
  - ENHANCE: Add openpam_free_data(), a generic cleanup function for
    pam_set_data() consumers.
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-OpenPAM	Centaury						2002-03-14
+OpenPAM Centaury						2002-03-14
=20
  - BUGFIX: Add missing #include <string.h> to openpam_log.c.
=20
@@ -308,7 +356,7 @@
    module with the same version number as the library itself to one
    with no version number at all.
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-OpenPAM	Cantaloupe						2002-02-22
+OpenPAM Cantaloupe						2002-02-22
=20
  - BUGFIX: The proper use of PAM_SYMBOL_ERR is to indicate an invalid
    argument to pam_[gs]et_item(3), not to indicate dlsym(3) failures.
@@ -338,7 +386,7 @@
  - ENHANCE: openpam_get_authtok() now respects the echo_pass,
    try_first_pass, and use_first_pass options.
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-OpenPAM	Caliopsis						2002-02-13
+OpenPAM Caliopsis						2002-02-13
=20
 Fixed a number of bugs in the previous release, including:
   - a number of bugs in and related to pam_[gs]et_item(3)
@@ -349,8 +397,8 @@
   - missing 'continue' in openpam_dispatch.c caused successes to be
     counted as failures
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-OpenPAM	Calamite						2002-02-09
+OpenPAM Calamite						2002-02-09
=20
 First (beta) release.
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D
-$Id: HISTORY 504 2011-12-18 14:11:12Z des $
+$Id: HISTORY 609 2012-05-26 13:57:45Z des $
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/LICENSE
--- a/head/contrib/openpam/LICENSE	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/LICENSE	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,6 @@
=20
 Copyright (c) 2002-2003 Networks Associates Technology, Inc.
-Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+Copyright (c) 2004-2012 Dag-Erling Sm=C3=B8rgrav
 All rights reserved.
=20
 This software was developed for the FreeBSD Project by ThinkSec AS and
@@ -32,4 +32,4 @@
 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGE.
=20
-$Id: LICENSE 437 2011-09-13 12:00:13Z des $
+$Id: LICENSE 546 2012-03-31 23:13:20Z des $
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/Makefile.am
--- a/head/contrib/openpam/Makefile.am	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/Makefile.am	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-# $Id: Makefile.am 428 2010-03-09 17:32:17Z des $
+# $Id: Makefile.am 549 2012-04-01 20:38:30Z des $
=20
 ACLOCAL_AMFLAGS =3D -I m4
=20
@@ -8,6 +8,8 @@
 SUBDIRS +=3D doc
 endif
=20
+SUBDIRS +=3D t
+
 EXTRA_DIST =3D \
 	CREDITS \
 	HISTORY \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/Makefile.in
--- a/head/contrib/openpam/Makefile.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -15,7 +15,7 @@
=20
 @SET_MAKE@
=20
-# $Id: Makefile.am 428 2010-03-09 17:32:17Z des $
+# $Id: Makefile.am 549 2012-04-01 20:38:30Z des $
 VPATH =3D @srcdir@
 pkgdatadir =3D $(datadir)/@PACKAGE@
 pkgincludedir =3D $(includedir)/@PACKAGE@
@@ -39,8 +39,8 @@
 subdir =3D .
 DIST_COMMON =3D README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure INSTALL config.guess config.sub \
-	depcomp install-sh ltmain.sh missing
+	$(srcdir)/pamgdb.in $(top_srcdir)/configure INSTALL TODO \
+	config.guess config.sub depcomp install-sh ltmain.sh missing
 ACLOCAL_M4 =3D $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps =3D $(top_srcdir)/configure.ac
 am__configure_deps =3D $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -49,7 +49,7 @@
  configure.lineno config.status.lineno
 mkinstalldirs =3D $(install_sh) -d
 CONFIG_HEADER =3D config.h
-CONFIG_CLEAN_FILES =3D
+CONFIG_CLEAN_FILES =3D pamgdb
 CONFIG_CLEAN_VPATH_FILES =3D
 SOURCES =3D
 DIST_SOURCES =3D
@@ -67,7 +67,7 @@
 	distdir dist dist-all distcheck
 ETAGS =3D etags
 CTAGS =3D ctags
-DIST_SUBDIRS =3D lib bin modules include doc
+DIST_SUBDIRS =3D lib bin modules include doc t
 DISTFILES =3D $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir =3D $(PACKAGE)-$(VERSION)
 top_distdir =3D $(distdir)
@@ -222,7 +222,7 @@
 top_builddir =3D @top_builddir@
 top_srcdir =3D @top_srcdir@
 ACLOCAL_AMFLAGS =3D -I m4
-SUBDIRS =3D lib bin modules include $(am__append_1)
+SUBDIRS =3D lib bin modules include $(am__append_1) t
 EXTRA_DIST =3D \
 	CREDITS \
 	HISTORY \
@@ -288,6 +288,8 @@
=20
 distclean-hdr:
 	-rm -f config.h stamp-h1
+pamgdb: $(top_builddir)/config.status $(srcdir)/pamgdb.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
=20
 mostlyclean-libtool:
 	-rm -f *.lo
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/RELNOTES
--- a/head/contrib/openpam/RELNOTES	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/RELNOTES	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,6 @@
=20
-		 Release notes for OpenPAM Lycopsida
-		 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
+		Release notes for OpenPAM Micrampelis
+		=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=20
 This release corresponds to the code used in FreeBSD HEAD as of the
 release date, and is also expected to work on almost any POSIX-like
@@ -19,6 +19,9 @@
 application developers.  It also includes a command-line application
 (pamtest) which can be used to test policies and modules.
=20
+Unit tests for limited portions of the library can be found in the t
+subdirectory.
+
 Please direct bug reports and inquiries to <des at des.no>.
=20
-$Id: RELNOTES 506 2011-12-18 14:25:12Z des $
+$Id: RELNOTES 609 2012-05-26 13:57:45Z des $
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/TODO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/TODO	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,13 @@
+Before the next release:
+
+ - Complete the transition from PAM_LOG_DEBUG to PAM_LOG_LIBDEBUG.
+
+Whenever:
+
+ - Implement mechanism to enable / disable optional features.  Use it
+   to disable strict error checking so pamtest and unit tests can do
+   things that we don't allow in production.
+
+ - Rewrite the module-loading code.
+
+$Id: TODO 592 2012-04-08 13:19:51Z des $
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/aclocal.m4
--- a/head/contrib/openpam/aclocal.m4	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/aclocal.m4	Wed Jul 25 16:21:35 2012 +0300
@@ -22,8 +22,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -32,8 +32,8 @@
=20
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -167,6 +167,8 @@
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
=20
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build syst=
em])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -652,7 +654,7 @@
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
=20
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
=20
@@ -816,6 +818,7 @@
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -837,6 +840,29 @@
 ])# _LT_LANG
=20
=20
+m4_ifndef([AC_PROG_GO], [
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -867,6 +893,10 @@
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
=20
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -969,7 +999,13 @@
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=3D$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_resul=
t =3D 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=3Dyes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -977,6 +1013,7 @@
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=3Dno
@@ -988,6 +1025,7 @@
 	[lt_cv_ld_exported_symbols_list=3Dno])
 	LDFLAGS=3D"$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=3Dno
       cat > conftest.c << _LT_EOF
@@ -1005,7 +1043,9 @@
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_loa=
d,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./li=
bconftest.a 2>conftest.err
       _lt_result=3D$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result =
=3D 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load=
 conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=3Dyes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1050,8 +1090,8 @@
 ])
=20
=20
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -1062,6 +1102,8 @@
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=3Dunsupported
   if test "$lt_cv_ld_force_load" =3D "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)=3D'`for conv in $convenience\"=
\"; do test  -n \"$conv\" && new_convenience=3D\"$new_convenience ${wl}-for=
ce_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=3Dyes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=3Dyes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=3D''
   fi
@@ -1345,14 +1387,27 @@
     CFLAGS=3D"$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD=3D"${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD=3D"${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD=3D"${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=3D"${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD=3D"${LD-ld} -64"
@@ -1429,13 +1484,13 @@
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB -t \$tool_oldli=
b"
     ;;
   *)
-    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds=3D"$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds=3D"$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
=20
 case $host_os in
@@ -1615,6 +1670,11 @@
     lt_cv_sys_max_cmd_len=3D196608
     ;;
=20
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=3D8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running conf=
igure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1654,7 +1714,7 @@
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/=
null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         =3D "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i !=3D 17 # 1/2 MB should be enough
       do
@@ -2200,7 +2260,7 @@
=20
 case $host_os in
 aix3*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix $libna=
me.a'
   shlibpath_var=3DLIBPATH
=20
@@ -2209,7 +2269,7 @@
   ;;
=20
 aix[[4-9]]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   hardcode_into_libs=3Dyes
@@ -2274,7 +2334,7 @@
   ;;
=20
 bsdi[[45]]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
@@ -2413,7 +2473,7 @@
   ;;
=20
 dgux*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname$shared_ext'
@@ -2466,17 +2526,18 @@
   ;;
=20
 gnu*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
+  shlibpath_overrides_runpath=3Dno
   hardcode_into_libs=3Dyes
   ;;
=20
 haiku*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   dynamic_linker=3D"$host_os runtime_loader"
@@ -2537,7 +2598,7 @@
   ;;
=20
 interix[[3-9]]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2553,7 +2614,7 @@
     nonstopux*) version_type=3Dnonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" =3D yes; then
-		version_type=3Dlinux
+		version_type=3Dlinux # correct to gnu/linux during the next big refactor
 	else
 		version_type=3Dirix
 	fi ;;
@@ -2590,9 +2651,9 @@
   dynamic_linker=3Dno
   ;;
=20
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2655,7 +2716,7 @@
   ;;
=20
 newsos6)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=3DLD_LIBRARY_PATH
   shlibpath_overrides_runpath=3Dyes
@@ -2724,7 +2785,7 @@
   ;;
=20
 solaris*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2749,7 +2810,7 @@
   ;;
=20
 sysv4 | sysv4.3*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
@@ -2773,7 +2834,7 @@
=20
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=3Dlinux
+    version_type=3Dlinux # correct to gnu/linux during the next big refact=
or
     library_names_spec=3D'$libname${shared_ext}.$versuffix $libname${share=
d_ext}.$major $libname${shared_ext}'
     soname_spec=3D'$libname${shared_ext}.$major'
     shlibpath_var=3DLD_LIBRARY_PATH
@@ -2804,7 +2865,7 @@
=20
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host =3D GNU/Linux.
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2814,7 +2875,7 @@
   ;;
=20
 uts4*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
@@ -3236,7 +3297,7 @@
   lt_cv_deplibs_check_method=3Dpass_all
   ;;
=20
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=3Dpass_all
   ;;
@@ -3656,6 +3717,7 @@
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe=3D"$AWK ['"\
 "     {last_section=3Dsection; section=3D\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=3D1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4240,7 +4302,9 @@
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D'-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D"-Xcompiler $_LT_TAGVAR(lt_=
prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -4332,18 +4396,33 @@
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3=
]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)=3D'-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)=3D'-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D'-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)=3D'-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D'-Wl,'
 	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D'-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)=3D'-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=3D'-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)=3D'-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)=3D'-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -4503,7 +4582,9 @@
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)=3D'_NULL_IMPORT_DESCRIPTOR|_IMPORT_D=
ESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)=3D'$NM $libobjs $convenience | $=
global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 =
DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]=
][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=3D['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLO=
BAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -4528,7 +4609,6 @@
   _LT_TAGVAR(hardcode_direct, $1)=3Dno
   _LT_TAGVAR(hardcode_direct_absolute, $1)=3Dno
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D
   _LT_TAGVAR(hardcode_libdir_separator, $1)=3D
   _LT_TAGVAR(hardcode_minus_L, $1)=3Dno
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=3Dunsupported
@@ -4779,8 +4859,7 @@
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)=3D'--whole-archive$convenience =
--no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D'-rpath $libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D'${wl}-rpath ${wl}$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)=3D'$LD -shared $libobjs $deplibs $linker_f=
lags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" =3D xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)=3D'echo "{ global:" > $output_obj=
dir/$libname.ver~
@@ -5075,6 +5154,7 @@
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)=3D'true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=3Dyes
+	_LT_TAGVAR(exclude_expsyms, $1)=3D'_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRI=
PTOR_.*'
 	_LT_TAGVAR(export_symbols_cmds, $1)=3D'$NM $libobjs $convenience | $globa=
l_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/=
'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_=
symbols'
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)=3D'chmod 644 $oldlib'
@@ -5172,7 +5252,6 @@
       fi
       if test "$with_gnu_ld" =3D no; then
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D'${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D'+b $libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=3D:
 	_LT_TAGVAR(hardcode_direct, $1)=3Dyes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=3Dyes
@@ -5614,9 +5693,6 @@
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -5770,7 +5846,6 @@
 _LT_TAGVAR(hardcode_direct, $1)=3Dno
 _LT_TAGVAR(hardcode_direct_absolute, $1)=3Dno
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D
 _LT_TAGVAR(hardcode_libdir_separator, $1)=3D
 _LT_TAGVAR(hardcode_minus_L, $1)=3Dno
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=3Dunsupported
@@ -6901,12 +6976,18 @@
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
=20
 _lt_libdeps_save_CFLAGS=3D$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS=3D"$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS=3D"$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS=3D"$CFLAGS -fno-use-linker-plugin" ;;
 esac
=20
 dnl Parse the compiler output and extract the necessary
@@ -7103,7 +7184,6 @@
 _LT_TAGVAR(hardcode_direct, $1)=3Dno
 _LT_TAGVAR(hardcode_direct_absolute, $1)=3Dno
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D
 _LT_TAGVAR(hardcode_libdir_separator, $1)=3D
 _LT_TAGVAR(hardcode_minus_L, $1)=3Dno
 _LT_TAGVAR(hardcode_automatic, $1)=3Dno
@@ -7236,7 +7316,6 @@
 _LT_TAGVAR(hardcode_direct, $1)=3Dno
 _LT_TAGVAR(hardcode_direct_absolute, $1)=3Dno
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=3D
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=3D
 _LT_TAGVAR(hardcode_libdir_separator, $1)=3D
 _LT_TAGVAR(hardcode_minus_L, $1)=3Dno
 _LT_TAGVAR(hardcode_automatic, $1)=3Dno
@@ -7419,6 +7498,73 @@
 ])# _LT_LANG_GCJ_CONFIG
=20
=20
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONF=
IG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=3Dgo
+
+# Object file extension for compiled Go test sources.
+objext=3Do
+_LT_TAGVAR(objext, $1)=3D$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=3D"package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=3D'package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=3D$CC
+lt_save_CFLAGS=3D$CFLAGS
+lt_save_GCC=3D$GCC
+GCC=3Dyes
+CC=3D${GOC-"gccgo"}
+CFLAGS=3D$GOFLAGS
+compiler=3D$CC
+_LT_TAGVAR(compiler, $1)=3D$CC
+_LT_TAGVAR(LD, $1)=3D"$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=3Dno
+
+_LT_TAGVAR(old_archive_cmds, $1)=3D$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=3D$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=3D$reload_cmds
+
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=3D$lt_save_GCC
+CC=3D$lt_save_CC
+CFLAGS=3D$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -7488,6 +7634,13 @@
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
=20
=20
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
@@ -8152,9 +8305,24 @@
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=3DPKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=3Duse both@:>@])],
-    [pic_mode=3D"$withval"],
+    [lt_p=3D${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=3D$withval ;;
+    *)
+      pic_mode=3Ddefault
+      # Look at the argument we got.  We use all the common list separator=
s.
+      lt_save_ifs=3D"$IFS"; IFS=3D"${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS=3D"$lt_save_ifs"
+	if test "X$lt_pkg" =3D "X$lt_p"; then
+	  pic_mode=3Dyes
+	fi
+      done
+      IFS=3D"$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=3Ddefault])
=20
 test -z "$pic_mode" && pic_mode=3Dm4_default([$1], [default])
@@ -8326,15 +8494,15 @@
=20
 # @configure_input@
=20
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
=20
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
=20
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version=3D'2.4'
-macro_revision=3D'1.3293'
+[macro_version=3D'2.4.2'
+macro_revision=3D'1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/Makefile.am
--- a/head/contrib/openpam/bin/Makefile.am	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/bin/Makefile.am	Wed Jul 25 16:21:35 2012 +0300
@@ -1,6 +1,6 @@
-# $Id: Makefile.am 467 2011-11-02 23:42:21Z des $
+# $Id: Makefile.am 538 2012-03-31 17:04:29Z des $
=20
-SUBDIRS =3D
+SUBDIRS =3D openpam_dump_policy
=20
 if WITH_PAMTEST
 SUBDIRS +=3D pamtest
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/Makefile.in
--- a/head/contrib/openpam/bin/Makefile.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/bin/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -15,7 +15,7 @@
=20
 @SET_MAKE@
=20
-# $Id: Makefile.am 467 2011-11-02 23:42:21Z des $
+# $Id: Makefile.am 538 2012-03-31 17:04:29Z des $
 VPATH =3D @srcdir@
 pkgdatadir =3D $(datadir)/@PACKAGE@
 pkgincludedir =3D $(includedir)/@PACKAGE@
@@ -63,7 +63,7 @@
 	distdir
 ETAGS =3D etags
 CTAGS =3D ctags
-DIST_SUBDIRS =3D pamtest su
+DIST_SUBDIRS =3D openpam_dump_policy pamtest su
 DISTFILES =3D $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize =3D \
   dir0=3D`pwd`; \
@@ -207,7 +207,7 @@
 top_build_prefix =3D @top_build_prefix@
 top_builddir =3D @top_builddir@
 top_srcdir =3D @top_srcdir@
-SUBDIRS =3D $(am__append_1) $(am__append_2)
+SUBDIRS =3D openpam_dump_policy $(am__append_1) $(am__append_2)
 all: all-recursive
=20
 .SUFFIXES:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/openpam_dump_=
policy/Makefile.am
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/bin/openpam_dump_policy/Makefile.am	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -0,0 +1,7 @@
+# $Id: Makefile.am 538 2012-03-31 17:04:29Z des $
+
+INCLUDES =3D -I$(top_srcdir)/include -I$(top_srcdir)/lib
+
+noinst_PROGRAMS =3D openpam_dump_policy
+openpam_dump_policy_SOURCES =3D openpam_dump_policy.c
+openpam_dump_policy_LDADD =3D $(top_builddir)/lib/libpam.la
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/openpam_dump_=
policy/Makefile.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/bin/openpam_dump_policy/Makefile.in	Wed Jul 25 1=
6:21:35 2012 +0300
@@ -0,0 +1,474 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 538 2012-03-31 17:04:29Z des $
+
+VPATH =3D @srcdir@
+pkgdatadir =3D $(datadir)/@PACKAGE@
+pkgincludedir =3D $(includedir)/@PACKAGE@
+pkglibdir =3D $(libdir)/@PACKAGE@
+pkglibexecdir =3D $(libexecdir)/@PACKAGE@
+am__cd =3D CDPATH=3D"$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA =3D $(install_sh) -c -m 644
+install_sh_PROGRAM =3D $(install_sh) -c
+install_sh_SCRIPT =3D $(install_sh) -c
+INSTALL_HEADER =3D $(INSTALL_DATA)
+transform =3D $(program_transform_name)
+NORMAL_INSTALL =3D :
+PRE_INSTALL =3D :
+POST_INSTALL =3D :
+NORMAL_UNINSTALL =3D :
+PRE_UNINSTALL =3D :
+POST_UNINSTALL =3D :
+build_triplet =3D @build@
+host_triplet =3D @host@
+noinst_PROGRAMS =3D openpam_dump_policy$(EXEEXT)
+subdir =3D bin/openpam_dump_policy
+DIST_COMMON =3D $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 =3D $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps =3D $(top_srcdir)/configure.ac
+am__configure_deps =3D $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs =3D $(install_sh) -d
+CONFIG_HEADER =3D $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =3D
+CONFIG_CLEAN_VPATH_FILES =3D
+PROGRAMS =3D $(noinst_PROGRAMS)
+am_openpam_dump_policy_OBJECTS =3D openpam_dump_policy.$(OBJEXT)
+openpam_dump_policy_OBJECTS =3D $(am_openpam_dump_policy_OBJECTS)
+openpam_dump_policy_DEPENDENCIES =3D $(top_builddir)/lib/libpam.la
+DEFAULT_INCLUDES =3D -I. at am__isrc@ -I$(top_builddir)
+depcomp =3D $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe =3D depfiles
+am__mv =3D mv -f
+COMPILE =3D $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE =3D $(LIBTOOL) --tag=3DCC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=3Dcompile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD =3D $(CC)
+LINK =3D $(LIBTOOL) --tag=3DCC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=3Dlink $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+SOURCES =3D $(openpam_dump_policy_SOURCES)
+DIST_SOURCES =3D $(openpam_dump_policy_SOURCES)
+ETAGS =3D etags
+CTAGS =3D ctags
+DISTFILES =3D $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL =3D @ACLOCAL@
+AMTAR =3D @AMTAR@
+AR =3D @AR@
+AUTOCONF =3D @AUTOCONF@
+AUTOHEADER =3D @AUTOHEADER@
+AUTOMAKE =3D @AUTOMAKE@
+AWK =3D @AWK@
+CC =3D @CC@
+CCDEPMODE =3D @CCDEPMODE@
+CFLAGS =3D @CFLAGS@
+CPP =3D @CPP@
+CPPFLAGS =3D @CPPFLAGS@
+CRYPT_LIBS =3D @CRYPT_LIBS@
+CYGPATH_W =3D @CYGPATH_W@
+DEFS =3D @DEFS@
+DEPDIR =3D @DEPDIR@
+DLLTOOL =3D @DLLTOOL@
+DL_LIBS =3D @DL_LIBS@
+DSYMUTIL =3D @DSYMUTIL@
+DUMPBIN =3D @DUMPBIN@
+ECHO_C =3D @ECHO_C@
+ECHO_N =3D @ECHO_N@
+ECHO_T =3D @ECHO_T@
+EGREP =3D @EGREP@
+EXEEXT =3D @EXEEXT@
+FGREP =3D @FGREP@
+GREP =3D @GREP@
+INSTALL =3D @INSTALL@
+INSTALL_DATA =3D @INSTALL_DATA@
+INSTALL_PROGRAM =3D @INSTALL_PROGRAM@
+INSTALL_SCRIPT =3D @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM =3D @INSTALL_STRIP_PROGRAM@
+LD =3D @LD@
+LDFLAGS =3D @LDFLAGS@
+LIBOBJS =3D @LIBOBJS@
+LIBS =3D @LIBS@
+LIBTOOL =3D @LIBTOOL@
+LIB_MAJ =3D @LIB_MAJ@
+LIPO =3D @LIPO@
+LN_S =3D @LN_S@
+LTLIBOBJS =3D @LTLIBOBJS@
+MAKEINFO =3D @MAKEINFO@
+MANIFEST_TOOL =3D @MANIFEST_TOOL@
+MKDIR_P =3D @MKDIR_P@
+NM =3D @NM@
+NMEDIT =3D @NMEDIT@
+OBJDUMP =3D @OBJDUMP@
+OBJEXT =3D @OBJEXT@
+OPENPAM_MODULES_DIR =3D @OPENPAM_MODULES_DIR@
+OTOOL =3D @OTOOL@
+OTOOL64 =3D @OTOOL64@
+PACKAGE =3D @PACKAGE@
+PACKAGE_BUGREPORT =3D @PACKAGE_BUGREPORT@
+PACKAGE_NAME =3D @PACKAGE_NAME@
+PACKAGE_STRING =3D @PACKAGE_STRING@
+PACKAGE_TARNAME =3D @PACKAGE_TARNAME@
+PACKAGE_URL =3D @PACKAGE_URL@
+PACKAGE_VERSION =3D @PACKAGE_VERSION@
+PATH_SEPARATOR =3D @PATH_SEPARATOR@
+RANLIB =3D @RANLIB@
+SED =3D @SED@
+SET_MAKE =3D @SET_MAKE@
+SHELL =3D @SHELL@
+STRIP =3D @STRIP@
+VERSION =3D @VERSION@
+abs_builddir =3D @abs_builddir@
+abs_srcdir =3D @abs_srcdir@
+abs_top_builddir =3D @abs_top_builddir@
+abs_top_srcdir =3D @abs_top_srcdir@
+ac_ct_AR =3D @ac_ct_AR@
+ac_ct_CC =3D @ac_ct_CC@
+ac_ct_DUMPBIN =3D @ac_ct_DUMPBIN@
+am__include =3D @am__include@
+am__leading_dot =3D @am__leading_dot@
+am__quote =3D @am__quote@
+am__tar =3D @am__tar@
+am__untar =3D @am__untar@
+bindir =3D @bindir@
+build =3D @build@
+build_alias =3D @build_alias@
+build_cpu =3D @build_cpu@
+build_os =3D @build_os@
+build_vendor =3D @build_vendor@
+builddir =3D @builddir@
+datadir =3D @datadir@
+datarootdir =3D @datarootdir@
+docdir =3D @docdir@
+dvidir =3D @dvidir@
+exec_prefix =3D @exec_prefix@
+host =3D @host@
+host_alias =3D @host_alias@
+host_cpu =3D @host_cpu@
+host_os =3D @host_os@
+host_vendor =3D @host_vendor@
+htmldir =3D @htmldir@
+includedir =3D @includedir@
+infodir =3D @infodir@
+install_sh =3D @install_sh@
+libdir =3D @libdir@
+libexecdir =3D @libexecdir@
+localedir =3D @localedir@
+localstatedir =3D @localstatedir@
+mandir =3D @mandir@
+mkdir_p =3D @mkdir_p@
+oldincludedir =3D @oldincludedir@
+pdfdir =3D @pdfdir@
+prefix =3D @prefix@
+program_transform_name =3D @program_transform_name@
+psdir =3D @psdir@
+sbindir =3D @sbindir@
+sharedstatedir =3D @sharedstatedir@
+srcdir =3D @srcdir@
+sysconfdir =3D @sysconfdir@
+target_alias =3D @target_alias@
+top_build_prefix =3D @top_build_prefix@
+top_builddir =3D @top_builddir@
+top_srcdir =3D @top_srcdir@
+INCLUDES =3D -I$(top_srcdir)/include -I$(top_srcdir)/lib
+openpam_dump_policy_SOURCES =3D openpam_dump_policy.c
+openpam_dump_policy_LDADD =3D $(top_builddir)/lib/libpam.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/openpam_dump_policy/=
Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign bin/openpam_dump_policy/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(=
am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__dep=
files_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEP=
ENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstPROGRAMS:
+	@list=3D'$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=3D`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+openpam_dump_policy$(EXEEXT): $(openpam_dump_policy_OBJECTS) $(openpam_dum=
p_policy_DEPENDENCIES)=20
+	@rm -f openpam_dump_policy$(EXEEXT)
+	$(LINK) $(openpam_dump_policy_OBJECTS) $(openpam_dump_policy_LDADD) $(LIB=
S)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_dump_policy.Po at am=
__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o =
$@ $<
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dno=
 @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o =
$@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dno=
 @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -=
o $@ $<
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dye=
s @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list=3D'$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=3D`pwd`; \
+	list=3D'$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=3D$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list=3D'$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=3D`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=3D`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=3D`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list=3D'$(DISTFILES)'; \
+	  dist_files=3D`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=3D.; else d=3D$(srcdir); fi=
; \
+	  if test -d $$d/$$file; then \
+	    dir=3D`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} =
\;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d !=3D $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} =
\;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM=3D"$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM=3D"$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=3D-s=
 \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=3DSTRIPPROG=3D'$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . =3D "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f=
 $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/openpam_dump_=
policy/openpam_dump_policy.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/bin/openpam_dump_policy/openpam_dump_policy.c	We=
d Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,202 @@
+/*-
+ * Copyright (c) 2011 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_dump_policy.c 582 2012-04-06 23:23:35Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <security/pam_appl.h>
+
+#include "openpam_impl.h"
+
+static char *
+openpam_chain_name(const char *service, pam_facility_t fclt)
+{
+	const char *facility =3D pam_facility_name[fclt];
+	char *name;
+
+	if (asprintf(&name, "pam_%s_%s", service, facility) =3D=3D -1)
+		return (NULL);
+	return (name);
+}
+
+static char *
+openpam_facility_index_name(pam_facility_t fclt)
+{
+	const char *facility =3D pam_facility_name[fclt];
+	char *name, *p;
+
+	if (asprintf(&name, "PAM_%s", facility) =3D=3D -1)
+		return (NULL);
+	for (p =3D name + 4; *p; ++p)
+		*p =3D toupper(*p);
+	return (name);
+}
+
+int
+openpam_dump_chain(const char *name, pam_chain_t *chain)
+{
+	char *modname, **opt, *p;
+	int i;
+
+	for (i =3D 0; chain !=3D NULL; ++i, chain =3D chain->next) {
+		/* declare the module's struct pam_module */
+		modname =3D strrchr(chain->module->path, '/');
+		modname =3D strdup(modname ? modname : chain->module->path);
+		if (modname =3D=3D NULL)
+			return (PAM_BUF_ERR);
+		for (p =3D modname; *p && *p !=3D '.'; ++p)
+			/* nothing */ ;
+		*p =3D '\0';
+		printf("extern struct pam_module %s_pam_module;\n", modname);
+		/* module arguments */
+		printf("static char *%s_%d_optv[] =3D {\n", name, i);
+		for (opt =3D chain->optv; *opt; ++opt) {
+			printf("\t\"");
+			for (p =3D *opt; *p; ++p) {
+				if (isprint((unsigned char)*p) && *p !=3D '"')
+					printf("%c", *p);
+				else
+					printf("\\x%02x", (unsigned char)*p);
+			}
+			printf("\",\n");
+		}
+		printf("\tNULL,\n");
+		printf("};\n");
+		/* next module in chain */
+		if (chain->next !=3D NULL)
+			printf("static pam_chain_t %s_%d;\n", name, i + 1);
+		/* chain entry */
+		printf("static pam_chain_t %s_%d =3D {\n", name, i);
+		printf("\t.module =3D &%s_pam_module,\n", modname);
+		printf("\t.flag =3D 0x%08x,\n", chain->flag);
+		printf("\t.optc =3D %d,\n", chain->optc);
+		printf("\t.optv =3D %s_%d_optv,\n", name, i);
+		if (chain->next)
+			printf("\t.next =3D &%s_%d,\n", name, i + 1);
+		else
+			printf("\t.next =3D NULL,\n");
+		printf("};\n");
+		free(modname);
+	}
+	return (PAM_SUCCESS);
+}
+
+int
+openpam_dump_policy(const char *service)
+{
+	pam_handle_t *pamh;
+	char *name;
+	int fclt, ret;
+
+	if ((pamh =3D calloc(1, sizeof *pamh)) =3D=3D NULL)
+		return (PAM_BUF_ERR);
+	if ((ret =3D openpam_configure(pamh, service)) !=3D PAM_SUCCESS)
+		return (ret);
+	for (fclt =3D 0; fclt < PAM_NUM_FACILITIES; ++fclt) {
+		if (pamh->chains[fclt] !=3D NULL) {
+			if ((name =3D openpam_chain_name(service, fclt)) =3D=3D NULL)
+				return (PAM_BUF_ERR);
+			ret =3D openpam_dump_chain(name, pamh->chains[fclt]);
+			free(name);
+			if (ret !=3D PAM_SUCCESS)
+				return (ret);
+		}
+	}
+	printf("static pam_policy_t pam_%s_policy =3D {\n", service);
+	printf("\t.service =3D \"%s\",\n", service);
+	printf("\t.chains =3D {\n");
+	for (fclt =3D 0; fclt < PAM_NUM_FACILITIES; ++fclt) {
+		if ((name =3D openpam_facility_index_name(fclt)) =3D=3D NULL)
+			return (PAM_BUF_ERR);
+		printf("\t\t[%s] =3D ", name);
+		free(name);
+		if (pamh->chains[fclt] !=3D NULL) {
+			if ((name =3D openpam_chain_name(service, fclt)) =3D=3D NULL)
+				return (PAM_BUF_ERR);
+			printf("&%s_0,\n", name);
+			free(name);
+		} else {
+			printf("NULL,\n");
+		}
+	}
+	printf("\t},\n");
+	printf("};\n");
+	free(pamh);
+	return (PAM_SUCCESS);
+}
+
+static void
+usage(void)
+{
+
+	fprintf(stderr, "usage: openpam_dump_policy [-d] policy ...\n");
+	exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+	int i, opt;
+
+	while ((opt =3D getopt(argc, argv, "d")) !=3D -1)
+		switch (opt) {
+		case 'd':
+			openpam_debug =3D 1;
+			break;
+		default:
+			usage();
+		}
+
+	argc -=3D optind;
+	argv +=3D optind;
+
+	if (argc < 1)
+		usage();
+
+	printf("#include <security/pam_appl.h>\n");
+	printf("#include \"openpam_impl.h\"\n");
+	for (i =3D 0; i < argc; ++i)
+		openpam_dump_policy(argv[i]);
+	printf("pam_policy_t *pam_embedded_policies[] =3D {\n");
+	for (i =3D 0; i < argc; ++i)
+		printf("\t&pam_%s_policy,\n", argv[i]);
+	printf("\tNULL,\n");
+	printf("};\n");
+	exit(0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/pamtest/pamte=
st.1
--- a/head/contrib/openpam/bin/pamtest/pamtest.1	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/bin/pamtest/pamtest.1	Wed Jul 25 16:21:35 2012 +=
0300
@@ -10,6 +10,9 @@
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
 .\"
 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -23,9 +26,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: pamtest.1 471 2011-11-03 09:44:40Z des $
+.\" $Id: pamtest.1 610 2012-05-26 14:03:45Z des $
 .\"
-.Dd November 2, 2011
+.Dd May 26, 2012
 .Dt PAMTEST 1
 .Os
 .Sh NAME
@@ -33,7 +36,7 @@
 .Nd PAM policy tester
 .Sh SYNOPSYS
 .Nm
-.Op Fl dksv
+.Op Fl dkMPsv
 .Op Fl H Ar rhost
 .Op Fl h Ar host
 .Op Fl t Ar tty
@@ -116,6 +119,11 @@
 .Xr gethostname 3 .
 .It Fl k
 Keep going even if one of the commands fails.
+.It Fl M
+Disable path, ownership and permission checks on module files.
+.It Fl P
+Disable service name validation and path, ownership and permission
+checks on policy files.
 .It Fl s
 Set the
 .Dv PAM_SILENT
@@ -149,14 +157,14 @@
 pamtest -v system auth account change setcred open close unsetcred
 .Ed
 .Sh SEE ALSO
-.Xr openpam 3
-.Xr pam 3
+.Xr openpam 3 ,
+.Xr pam 3 ,
 .Xr pam.conf 5
 .Sh AUTHORS
 The
 .Nm
 utility and this manual page were written by
-.An Dag-Erling Sm\(/orgrav Aq des at FreeBSD.org .
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
 .Sh BUGS
 The
 .Nm
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/pamtest/pamte=
st.c
--- a/head/contrib/openpam/bin/pamtest/pamtest.c	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/bin/pamtest/pamtest.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: pamtest.c 472 2011-11-03 09:46:52Z des $
+ * $Id: pamtest.c 595 2012-04-14 14:28:35Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -261,8 +264,8 @@
 usage(void)
 {
=20
-	fprintf(stderr, "usage: pamtest [-dksv] %s\n",
-	    "[-H rhost] [-h host] [-t tty] [-U ruser] [-u user] service");
+	fprintf(stderr, "usage: pamtest %s service command ...\n",
+	    "[-dkMPsv] [-H rhost] [-h host] [-t tty] [-U ruser] [-u user]");
 	exit(1);
 }
=20
@@ -297,7 +300,7 @@
 	int pame;
 	int opt;
=20
-	while ((opt =3D getopt(argc, argv, "dH:h:kst:U:u:v")) !=3D -1)
+	while ((opt =3D getopt(argc, argv, "dH:h:kMPst:U:u:v")) !=3D -1)
 		switch (opt) {
 		case 'd':
 			openpam_debug++;
@@ -311,6 +314,14 @@
 		case 'k':
 			keepatit =3D 1;
 			break;
+		case 'M':
+			openpam_set_feature(OPENPAM_RESTRICT_MODULE_NAME, 0);
+			openpam_set_feature(OPENPAM_VERIFY_MODULE_FILE, 0);
+			break;
+		case 'P':
+			openpam_set_feature(OPENPAM_RESTRICT_SERVICE_NAME, 0);
+			openpam_set_feature(OPENPAM_VERIFY_POLICY_FILE, 0);
+			break;
 		case 's':
 			silent =3D PAM_SILENT;
 			break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/bin/su/su.1
--- a/head/contrib/openpam/bin/su/su.1	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/bin/su/su.1	Wed Jul 25 16:21:35 2012 +0300
@@ -10,6 +10,9 @@
 .\" 2. Redistributions in binary form must reproduce the above copyright
 .\"    notice, this list of conditions and the following disclaimer in the
 .\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
 .\"
 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -23,9 +26,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: su.1 458 2011-11-02 13:10:25Z des $
+.\" $Id: su.1 610 2012-05-26 14:03:45Z des $
 .\"
-.Dd November 2, 2011
+.Dd May 26, 2012
 .Dt SU 1
 .Os
 .Sh NAME
@@ -53,10 +56,10 @@
 utility is provided with the OpenPAM library as a sample application
 and should not be used in production systems.
 .Sh SEE ALSO
-.Xr openpam 3
+.Xr openpam 3 ,
 .Xr pam 3
 .Sh AUTHORS
 The
 .Nm
 utility and this manual page were written by
-.An Dag-Erling Sm\(/orgrav Aq des at FreeBSD.org .
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/config.h.in
--- a/head/contrib/openpam/config.h.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/config.h.in	Wed Jul 25 16:21:35 2012 +0300
@@ -9,6 +9,9 @@
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
=20
+/* Define to 1 if you have the `fdlopen' function. */
+#undef HAVE_FDLOPEN
+
 /* Define to 1 if you have the `fpurge' function. */
 #undef HAVE_FPURGE
=20
@@ -36,6 +39,9 @@
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
=20
+/* Define to 1 if you have the `strlcat' function. */
+#undef HAVE_STRLCAT
+
 /* Define to 1 if you have the `strlcmp' function. */
 #undef HAVE_STRLCMP
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/configure
--- a/head/contrib/openpam/configure	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/configure	Wed Jul 25 16:21:35 2012 +0300
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.ac Id: configure.ac 507 2011-12-18 14:43:40Z des .
+# From configure.ac Id: configure.ac 610 2012-05-26 14:03:45Z des .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for OpenPAM 20111218.
+# Generated by GNU Autoconf 2.68 for OpenPAM 20120526.
 #
 # Report bugs to <des at des.no>.
 #
@@ -570,8 +570,8 @@
 # Identity of this package.
 PACKAGE_NAME=3D'OpenPAM'
 PACKAGE_TARNAME=3D'openpam'
-PACKAGE_VERSION=3D'20111218'
-PACKAGE_STRING=3D'OpenPAM 20111218'
+PACKAGE_VERSION=3D'20120526'
+PACKAGE_STRING=3D'OpenPAM 20120526'
 PACKAGE_BUGREPORT=3D'des at des.no'
 PACKAGE_URL=3D''
=20
@@ -1308,7 +1308,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures OpenPAM 20111218 to adapt to many kinds of systems.
+\`configure' configures OpenPAM 20120526 to adapt to many kinds of systems.
=20
 Usage: $0 [OPTION]... [VAR=3DVALUE]...
=20
@@ -1378,7 +1378,7 @@
=20
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of OpenPAM 20111218:";;
+     short | recursive ) echo "Configuration of OpenPAM 20120526:";;
    esac
   cat <<\_ACEOF
=20
@@ -1405,7 +1405,7 @@
 Optional Packages:
   --with-PACKAGE[=3DARG]    use PACKAGE [ARG=3Dyes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=3Dno)
-  --with-pic              try to use only PIC/non-PIC objects [default=3Du=
se
+  --with-pic[=3DPKGS]       try to use only PIC/non-PIC objects [default=
=3Duse
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=3Dno]
   --with-sysroot=3DDIR Search for dependent libraries within DIR
@@ -1492,7 +1492,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-OpenPAM configure 20111218
+OpenPAM configure 20120526
 generated by GNU Autoconf 2.68
=20
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1861,7 +1861,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
=20
-It was created by OpenPAM $as_me 20111218, which was
+It was created by OpenPAM $as_me 20120526, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
=20
   $ $0 $@
@@ -2678,7 +2678,7 @@
=20
 # Define the identity of the package.
  PACKAGE=3D'openpam'
- VERSION=3D'20111218'
+ VERSION=3D'20120526'
=20
=20
 cat >>confdefs.h <<_ACEOF
@@ -4631,8 +4631,8 @@
=20
=20
=20
-macro_version=3D'2.4'
-macro_revision=3D'1.3293'
+macro_version=3D'2.4.2'
+macro_revision=3D'1.3337'
=20
=20
=20
@@ -5347,6 +5347,11 @@
     lt_cv_sys_max_cmd_len=3D196608
     ;;
=20
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=3D8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running conf=
igure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -5386,7 +5391,7 @@
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/=
null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         =3D "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i !=3D 17 # 1/2 MB should be enough
       do
@@ -5815,7 +5820,7 @@
   lt_cv_deplibs_check_method=3Dpass_all
   ;;
=20
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=3Dpass_all
   ;;
@@ -6455,13 +6460,13 @@
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB -t \$tool_oldli=
b"
     ;;
   *)
-    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds=3D"$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds=3D"$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds=3D"$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
=20
 case $host_os in
@@ -6608,6 +6613,7 @@
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe=3D"$AWK '"\
 "     {last_section=3Dsection; section=3D\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=3D1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -6996,7 +7002,7 @@
     CFLAGS=3D"$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } =
>&5
@@ -7007,7 +7013,20 @@
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD=3D"${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD=3D"${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD=3D"${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD=3D"${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD=3D"${LD-ld} -64"
@@ -7647,7 +7666,13 @@
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=3D$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_resul=
t =3D 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=3Dyes
 	else
 	  cat conftest.err >&5
@@ -7658,6 +7683,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mo=
d" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbol=
s_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -7690,6 +7716,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbol=
s_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load link=
er flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -7711,7 +7738,9 @@
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_loa=
d,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./li=
bconftest.a 2>conftest.err
       _lt_result=3D$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result =
=3D 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load=
 conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=3Dyes
       else
 	cat conftest.err >&5
@@ -7847,7 +7876,22 @@
=20
 # Check whether --with-pic was given.
 if test "${with_pic+set}" =3D set; then :
-  withval=3D$with_pic; pic_mode=3D"$withval"
+  withval=3D$with_pic; lt_p=3D${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=3D$withval ;;
+    *)
+      pic_mode=3Ddefault
+      # Look at the argument we got.  We use all the common list separator=
s.
+      lt_save_ifs=3D"$IFS"; IFS=3D"${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS=3D"$lt_save_ifs"
+	if test "X$lt_pkg" =3D "X$lt_p"; then
+	  pic_mode=3Dyes
+	fi
+      done
+      IFS=3D"$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=3Ddefault
 fi
@@ -7925,6 +7969,10 @@
=20
=20
=20
+
+
+
+
 test -z "$LN_S" && LN_S=3D"ln -s"
=20
=20
@@ -8380,7 +8428,9 @@
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl=3D'-Xlinker '
-      lt_prog_compiler_pic=3D'-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic=3D"-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -8471,18 +8521,33 @@
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic=3D'-KPIC'
 	  lt_prog_compiler_static=3D'-Bstatic'
 	  lt_prog_compiler_wl=3D''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic=3D'-KPIC'
+	  lt_prog_compiler_static=3D'-Bstatic'
+	  lt_prog_compiler_wl=3D'-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic=3D'-KPIC'
 	  lt_prog_compiler_static=3D'-Bstatic'
 	  lt_prog_compiler_wl=3D'-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl=3D'-Wl,'
+	  lt_prog_compiler_pic=3D'-fPIC'
+	  lt_prog_compiler_static=3D'-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl=3D'-Wl,'
+	  lt_prog_compiler_pic=3D'-fpic'
+	  lt_prog_compiler_static=3D'-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -8844,7 +8909,6 @@
   hardcode_direct=3Dno
   hardcode_direct_absolute=3Dno
   hardcode_libdir_flag_spec=3D
-  hardcode_libdir_flag_spec_ld=3D
   hardcode_libdir_separator=3D
   hardcode_minus_L=3Dno
   hardcode_shlibpath_var=3Dunsupported
@@ -9094,8 +9158,7 @@
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec=3D'--whole-archive$convenience --no-whole-archi=
ve'
-	  hardcode_libdir_flag_spec=3D
-	  hardcode_libdir_flag_spec_ld=3D'-rpath $libdir'
+	  hardcode_libdir_flag_spec=3D'${wl}-rpath ${wl}$libdir'
 	  archive_cmds=3D'$LD -shared $libobjs $deplibs $linker_flags -soname $so=
name -o $lib'
 	  if test "x$supports_anon_versioning" =3D xyes; then
 	    archive_expsym_cmds=3D'echo "{ global:" > $output_objdir/$libname.ver~
@@ -9474,6 +9537,7 @@
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )=3D'true'
 	enable_shared_with_static_runtimes=3Dyes
+	exclude_expsyms=3D'_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds=3D'$NM $libobjs $convenience | $global_symbol_pipe | =
$SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AI=
TW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds=3D'chmod 644 $oldlib'
@@ -9519,6 +9583,7 @@
   hardcode_shlibpath_var=3Dunsupported
   if test "$lt_cv_ld_force_load" =3D "yes"; then
     whole_archive_flag_spec=3D'`for conv in $convenience\"\"; do test  -n =
\"$conv\" && new_convenience=3D\"$new_convenience ${wl}-force_load,$conv\";=
 done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=3D''
   fi
@@ -9598,7 +9663,6 @@
       fi
       if test "$with_gnu_ld" =3D no; then
 	hardcode_libdir_flag_spec=3D'${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld=3D'+b $libdir'
 	hardcode_libdir_separator=3D:
 	hardcode_direct=3Dyes
 	hardcode_direct_absolute=3Dyes
@@ -10222,11 +10286,6 @@
=20
=20
=20
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker charact=
eristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
=20
@@ -10316,7 +10375,7 @@
=20
 case $host_os in
 aix3*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix $libna=
me.a'
   shlibpath_var=3DLIBPATH
=20
@@ -10325,7 +10384,7 @@
   ;;
=20
 aix[4-9]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   hardcode_into_libs=3Dyes
@@ -10390,7 +10449,7 @@
   ;;
=20
 bsdi[45]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
@@ -10529,7 +10588,7 @@
   ;;
=20
 dgux*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname$shared_ext'
@@ -10582,17 +10641,18 @@
   ;;
=20
 gnu*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
+  shlibpath_overrides_runpath=3Dno
   hardcode_into_libs=3Dyes
   ;;
=20
 haiku*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   dynamic_linker=3D"$host_os runtime_loader"
@@ -10653,7 +10713,7 @@
   ;;
=20
 interix[3-9]*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -10669,7 +10729,7 @@
     nonstopux*) version_type=3Dnonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" =3D yes; then
-		version_type=3Dlinux
+		version_type=3Dlinux # correct to gnu/linux during the next big refactor
 	else
 		version_type=3Dirix
 	fi ;;
@@ -10706,9 +10766,9 @@
   dynamic_linker=3Dno
   ;;
=20
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10790,7 +10850,7 @@
   ;;
=20
 newsos6)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=3DLD_LIBRARY_PATH
   shlibpath_overrides_runpath=3Dyes
@@ -10859,7 +10919,7 @@
   ;;
=20
 solaris*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10884,7 +10944,7 @@
   ;;
=20
 sysv4 | sysv4.3*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
@@ -10908,7 +10968,7 @@
=20
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=3Dlinux
+    version_type=3Dlinux # correct to gnu/linux during the next big refact=
or
     library_names_spec=3D'$libname${shared_ext}.$versuffix $libname${share=
d_ext}.$major $libname${shared_ext}'
     soname_spec=3D'$libname${shared_ext}.$major'
     shlibpath_var=3DLD_LIBRARY_PATH
@@ -10939,7 +10999,7 @@
=20
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host =3D GNU/Linux.
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   need_lib_prefix=3Dno
   need_version=3Dno
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10949,7 +11009,7 @@
   ;;
=20
 uts4*)
-  version_type=3Dlinux
+  version_type=3Dlinux # correct to gnu/linux during the next big refactor
   library_names_spec=3D'${libname}${release}${shared_ext}$versuffix ${libn=
ame}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec=3D'${libname}${release}${shared_ext}$major'
   shlibpath_var=3DLD_LIBRARY_PATH
@@ -11731,6 +11791,8 @@
=20
=20
=20
+
+
         ac_config_commands=3D"$ac_config_commands libtool"
=20
=20
@@ -11875,7 +11937,7 @@
 done
=20
=20
-for ac_func in fpurge strlcmp strlcpy
+for ac_func in fdlopen fpurge strlcat strlcmp strlcpy
 do :
   as_ac_var=3D`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -12006,7 +12068,9 @@
 fi
=20
=20
-ac_config_files=3D"$ac_config_files bin/Makefile bin/pamtest/Makefile bin/=
su/Makefile include/Makefile include/security/Makefile lib/Makefile modules=
/Makefile modules/pam_unix/Makefile modules/pam_deny/Makefile modules/pam_p=
ermit/Makefile doc/Makefile doc/man/Makefile Makefile"
+ac_config_files=3D"$ac_config_files Makefile bin/Makefile bin/openpam_dump=
_policy/Makefile bin/pamtest/Makefile bin/su/Makefile doc/Makefile doc/man/=
Makefile include/Makefile include/security/Makefile lib/Makefile modules/Ma=
kefile modules/pam_deny/Makefile modules/pam_permit/Makefile modules/pam_un=
ix/Makefile t/Makefile"
+
+ac_config_files=3D"$ac_config_files pamgdb"
=20
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -12558,7 +12622,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log=3D"
-This file was extended by OpenPAM $as_me 20111218, which was
+This file was extended by OpenPAM $as_me 20120526, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
=20
   CONFIG_FILES    =3D $CONFIG_FILES
@@ -12624,7 +12688,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=3D1
 ac_cs_config=3D"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]=
/\\\\&/g'`"
 ac_cs_version=3D"\\
-OpenPAM config.status 20111218
+OpenPAM config.status 20120526
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
=20
@@ -12761,6 +12825,7 @@
 enable_fast_install=3D'`$ECHO "$enable_fast_install" | $SED "$delay_single=
_quote_subst"`'
 SHELL=3D'`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO=3D'`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR=3D'`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_sub=
st"`'
 host_alias=3D'`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host=3D'`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os=3D'`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -12843,7 +12908,6 @@
 allow_undefined_flag=3D'`$ECHO "$allow_undefined_flag" | $SED "$delay_sing=
le_quote_subst"`'
 no_undefined_flag=3D'`$ECHO "$no_undefined_flag" | $SED "$delay_single_quo=
te_subst"`'
 hardcode_libdir_flag_spec=3D'`$ECHO "$hardcode_libdir_flag_spec" | $SED "$=
delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld=3D'`$ECHO "$hardcode_libdir_flag_spec_ld" | $=
SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator=3D'`$ECHO "$hardcode_libdir_separator" | $SED "$=
delay_single_quote_subst"`'
 hardcode_direct=3D'`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_s=
ubst"`'
 hardcode_direct_absolute=3D'`$ECHO "$hardcode_direct_absolute" | $SED "$de=
lay_single_quote_subst"`'
@@ -12899,6 +12963,7 @@
 # Quote evaled strings.
 for var in SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -12949,7 +13014,6 @@
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -13033,19 +13097,22 @@
     "config.h") CONFIG_HEADERS=3D"$CONFIG_HEADERS config.h" ;;
     "depfiles") CONFIG_COMMANDS=3D"$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS=3D"$CONFIG_COMMANDS libtool" ;;
+    "Makefile") CONFIG_FILES=3D"$CONFIG_FILES Makefile" ;;
     "bin/Makefile") CONFIG_FILES=3D"$CONFIG_FILES bin/Makefile" ;;
+    "bin/openpam_dump_policy/Makefile") CONFIG_FILES=3D"$CONFIG_FILES bin/=
openpam_dump_policy/Makefile" ;;
     "bin/pamtest/Makefile") CONFIG_FILES=3D"$CONFIG_FILES bin/pamtest/Make=
file" ;;
     "bin/su/Makefile") CONFIG_FILES=3D"$CONFIG_FILES bin/su/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES=3D"$CONFIG_FILES doc/Makefile" ;;
+    "doc/man/Makefile") CONFIG_FILES=3D"$CONFIG_FILES doc/man/Makefile" ;;
     "include/Makefile") CONFIG_FILES=3D"$CONFIG_FILES include/Makefile" ;;
     "include/security/Makefile") CONFIG_FILES=3D"$CONFIG_FILES include/sec=
urity/Makefile" ;;
     "lib/Makefile") CONFIG_FILES=3D"$CONFIG_FILES lib/Makefile" ;;
     "modules/Makefile") CONFIG_FILES=3D"$CONFIG_FILES modules/Makefile" ;;
-    "modules/pam_unix/Makefile") CONFIG_FILES=3D"$CONFIG_FILES modules/pam=
_unix/Makefile" ;;
     "modules/pam_deny/Makefile") CONFIG_FILES=3D"$CONFIG_FILES modules/pam=
_deny/Makefile" ;;
     "modules/pam_permit/Makefile") CONFIG_FILES=3D"$CONFIG_FILES modules/p=
am_permit/Makefile" ;;
-    "doc/Makefile") CONFIG_FILES=3D"$CONFIG_FILES doc/Makefile" ;;
-    "doc/man/Makefile") CONFIG_FILES=3D"$CONFIG_FILES doc/man/Makefile" ;;
-    "Makefile") CONFIG_FILES=3D"$CONFIG_FILES Makefile" ;;
+    "modules/pam_unix/Makefile") CONFIG_FILES=3D"$CONFIG_FILES modules/pam=
_unix/Makefile" ;;
+    "t/Makefile") CONFIG_FILES=3D"$CONFIG_FILES t/Makefile" ;;
+    "pamgdb") CONFIG_FILES=3D"$CONFIG_FILES pamgdb" ;;
=20
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -13757,8 +13824,8 @@
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -13812,6 +13879,9 @@
 # An echo program that protects backslashes.
 ECHO=3D$lt_ECHO
=20
+# The PATH separator for the build system.
+PATH_SEPARATOR=3D$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=3D$host_alias
 host=3D$host
@@ -14113,10 +14183,6 @@
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=3D$lt_hardcode_libdir_flag_spec
=20
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=3D$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=3D$lt_hardcode_libdir_separator
=20
@@ -14367,6 +14433,7 @@
   chmod +x "$ofile"
=20
  ;;
+    "pamgdb":F) chmod +x pamgdb ;;
=20
   esac
 done # for ac_tag
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/configure.ac
--- a/head/contrib/openpam/configure.ac	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/configure.ac	Wed Jul 25 16:21:35 2012 +0300
@@ -1,8 +1,8 @@
-dnl $Id: configure.ac 507 2011-12-18 14:43:40Z des $
+dnl $Id: configure.ac 610 2012-05-26 14:03:45Z des $
=20
 AC_PREREQ([2.62])
-AC_REVISION([$Id: configure.ac 507 2011-12-18 14:43:40Z des $])
-AC_INIT([OpenPAM], [20111218], [des at des.no])
+AC_REVISION([$Id: configure.ac 610 2012-05-26 14:03:45Z des $])
+AC_INIT([OpenPAM], [20120526], [des at des.no])
 AC_CONFIG_SRCDIR([lib/pam_start.c])
 AC_CONFIG_MACRO_DIR([m4])
 AM_INIT_AUTOMAKE([foreign])
@@ -83,7 +83,7 @@
=20
 AC_CHECK_HEADERS([crypt.h])
=20
-AC_CHECK_FUNCS([fpurge strlcmp strlcpy])
+AC_CHECK_FUNCS([fdlopen fpurge strlcat strlcmp strlcpy])
=20
 saved_LIBS=3D"${LIBS}"
 LIBS=3D""
@@ -110,18 +110,21 @@
     [CFLAGS=3D"${CFLAGS} -Werror"])
=20
 AC_CONFIG_FILES([
+    Makefile
     bin/Makefile
+    bin/openpam_dump_policy/Makefile
     bin/pamtest/Makefile
     bin/su/Makefile
+    doc/Makefile
+    doc/man/Makefile
     include/Makefile
     include/security/Makefile
     lib/Makefile
     modules/Makefile
-    modules/pam_unix/Makefile
     modules/pam_deny/Makefile
     modules/pam_permit/Makefile
-    doc/Makefile
-    doc/man/Makefile
-    Makefile
+    modules/pam_unix/Makefile
+    t/Makefile
 ])
+AC_CONFIG_FILES([pamgdb],[chmod +x pamgdb])
 AC_OUTPUT
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/Makefile.=
am
--- a/head/contrib/openpam/doc/man/Makefile.am	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/doc/man/Makefile.am	Wed Jul 25 16:21:35 2012 +03=
00
@@ -1,4 +1,4 @@
-# $Id: Makefile.am 455 2011-10-29 18:31:11Z des $
+# $Id: Makefile.am 594 2012-04-14 14:18:41Z des $
=20
 NULL =3D
=20
@@ -38,12 +38,17 @@
 	openpam_borrow_cred.3 \
 	openpam_free_data.3 \
 	openpam_free_envlist.3 \
+	openpam_get_feature.3 \
 	openpam_get_option.3 \
 	openpam_log.3 \
 	openpam_nullconv.3 \
 	openpam_readline.3 \
+	openpam_readlinev.3 \
+	openpam_readword.3 \
 	openpam_restore_cred.3 \
+	openpam_set_feature.3 \
 	openpam_set_option.3 \
+	openpam_straddch.3 \
 	openpam_subst.3 \
 	openpam_ttyconv.3 \
 	pam_error.3 \
@@ -68,17 +73,17 @@
=20
 GENDOC =3D $(top_srcdir)/misc/gendoc.pl
=20
-SRCDIR =3D $(top_srcdir)/lib
+LIBSRCDIR =3D $(top_srcdir)/lib
=20
-VPATH =3D $(SRCDIR)
+VPATH =3D $(LIBSRCDIR) $(srcdir)
=20
 SUFFIXES =3D .3
=20
 .c.3: $(GENDOC)
 	perl -w $(GENDOC) $<
=20
-openpam.3: $(OMAN) $(GENDOC) openpam.man
+openpam.3: $(OMAN) $(GENDOC) $(srcdir)/openpam.man
 	perl -w $(GENDOC) -o $(abs_srcdir)/$(OMAN) <$(srcdir)/openpam.man
=20
-pam.3: $(PMAN) $(GENDOC) pam.man
+pam.3: $(PMAN) $(GENDOC) $(srcdir)/pam.man
 	perl -w $(GENDOC) -p $(abs_srcdir)/$(PMAN) <$(srcdir)/pam.man
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/Makefile.=
in
--- a/head/contrib/openpam/doc/man/Makefile.in	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/doc/man/Makefile.in	Wed Jul 25 16:21:35 2012 +03=
00
@@ -15,7 +15,7 @@
=20
 @SET_MAKE@
=20
-# $Id: Makefile.am 455 2011-10-29 18:31:11Z des $
+# $Id: Makefile.am 594 2012-04-14 14:18:41Z des $
 pkgdatadir =3D $(datadir)/@PACKAGE@
 pkgincludedir =3D $(includedir)/@PACKAGE@
 pkglibdir =3D $(libdir)/@PACKAGE@
@@ -74,7 +74,7 @@
 NROFF =3D nroff
 MANS =3D $(dist_man3_MANS) $(dist_man5_MANS)
 DISTFILES =3D $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-VPATH =3D $(SRCDIR)
+VPATH =3D $(LIBSRCDIR) $(srcdir)
 ACLOCAL =3D @ACLOCAL@
 AMTAR =3D @AMTAR@
 AR =3D @AR@
@@ -232,12 +232,17 @@
 	openpam_borrow_cred.3 \
 	openpam_free_data.3 \
 	openpam_free_envlist.3 \
+	openpam_get_feature.3 \
 	openpam_get_option.3 \
 	openpam_log.3 \
 	openpam_nullconv.3 \
 	openpam_readline.3 \
+	openpam_readlinev.3 \
+	openpam_readword.3 \
 	openpam_restore_cred.3 \
+	openpam_set_feature.3 \
 	openpam_set_option.3 \
+	openpam_straddch.3 \
 	openpam_subst.3 \
 	openpam_ttyconv.3 \
 	pam_error.3 \
@@ -256,7 +261,7 @@
 dist_man5_MANS =3D pam.conf.5
 CLEANFILES =3D $(ALLCMAN) openpam.3 pam.3
 GENDOC =3D $(top_srcdir)/misc/gendoc.pl
-SRCDIR =3D $(top_srcdir)/lib
+LIBSRCDIR =3D $(top_srcdir)/lib
 SUFFIXES =3D .3
 all: all-am
=20
@@ -536,10 +541,10 @@
 .c.3: $(GENDOC)
 	perl -w $(GENDOC) $<
=20
-openpam.3: $(OMAN) $(GENDOC) openpam.man
+openpam.3: $(OMAN) $(GENDOC) $(srcdir)/openpam.man
 	perl -w $(GENDOC) -o $(abs_srcdir)/$(OMAN) <$(srcdir)/openpam.man
=20
-pam.3: $(PMAN) $(GENDOC) pam.man
+pam.3: $(PMAN) $(GENDOC) $(srcdir)/pam.man
 	perl -w $(GENDOC) -p $(abs_srcdir)/$(PMAN) <$(srcdir)/pam.man
=20
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam.3
--- a/head/contrib/openpam/doc/man/openpam.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam.3	Wed Jul 25 16:21:35 2012 +0300
@@ -34,19 +34,24 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM 3
 .Os
 .Sh NAME
 .Nm openpam_borrow_cred ,
 .Nm openpam_free_data ,
 .Nm openpam_free_envlist ,
+.Nm openpam_get_feature ,
 .Nm openpam_get_option ,
 .Nm openpam_log ,
 .Nm openpam_nullconv ,
 .Nm openpam_readline ,
+.Nm openpam_readlinev ,
+.Nm openpam_readword ,
 .Nm openpam_restore_cred ,
+.Nm openpam_set_feature ,
 .Nm openpam_set_option ,
+.Nm openpam_straddch ,
 .Nm openpam_subst ,
 .Nm openpam_ttyconv ,
 .Nm pam_error ,
@@ -68,6 +73,8 @@
 .Fn openpam_free_data "pam_handle_t *pamh" "void *data" "int status"
 .Ft "void"
 .Fn openpam_free_envlist "char **envlist"
+.Ft "int"
+.Fn openpam_get_feature "int feature" "int *onoff"
 .Ft "const char *"
 .Fn openpam_get_option "pam_handle_t *pamh" "const char *option"
 .Ft "void"
@@ -76,11 +83,19 @@
 .Fn openpam_nullconv "int n" "const struct pam_message **msg" "struct pam_=
response **resp" "void *data"
 .Ft "char *"
 .Fn openpam_readline "FILE *f" "int *lineno" "size_t *lenp"
+.Ft "char **"
+.Fn openpam_readlinev "FILE *f" "int *lineno" "int *lenp"
+.Ft "char *"
+.Fn openpam_readword "FILE *f" "int *lineno" "size_t *lenp"
 .Ft "int"
 .Fn openpam_restore_cred "pam_handle_t *pamh"
 .Ft "int"
+.Fn openpam_set_feature "int feature" "int onoff"
+.Ft "int"
 .Fn openpam_set_option "pam_handle_t *pamh" "const char *option" "const ch=
ar *value"
 .Ft "int"
+.Fn openpam_straddch "char **str" "size_t *size" "size_t *len" "int ch"
+.Ft "int"
 .Fn openpam_subst "const pam_handle_t *pamh" "char *buf" "size_t *bufsize"=
 "const char *template"
 .Ft "int"
 .Fn openpam_ttyconv "int n" "const struct pam_message **msg" "struct pam_r=
esponse **resp" "void *data"
@@ -117,12 +132,17 @@
 .Xr openpam_borrow_cred 3 ,
 .Xr openpam_free_data 3 ,
 .Xr openpam_free_envlist 3 ,
+.Xr openpam_get_feature 3 ,
 .Xr openpam_get_option 3 ,
 .Xr openpam_log 3 ,
 .Xr openpam_nullconv 3 ,
 .Xr openpam_readline 3 ,
+.Xr openpam_readlinev 3 ,
+.Xr openpam_readword 3 ,
 .Xr openpam_restore_cred 3 ,
+.Xr openpam_set_feature 3 ,
 .Xr openpam_set_option 3 ,
+.Xr openpam_straddch 3 ,
 .Xr openpam_subst 3 ,
 .Xr openpam_ttyconv 3 ,
 .Xr pam_error 3 ,
@@ -146,3 +166,6 @@
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.
+.Pp
+The OpenPAM library is maintained by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_b=
orrow_cred.3
--- a/head/contrib/openpam/doc/man/openpam_borrow_cred.3	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_borrow_cred.3	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_BORROW_CRED 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_borrow_cred "pam_handle_t *pamh" "const struct passwd *pwd"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_borrow_cred
 function saves the current credentials and
 switches to those of the user specified by its
 .Fa pwd
@@ -62,7 +62,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_borrow_cred
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -81,15 +81,15 @@
 .Xr pam_strerror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_borrow_cred
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_borrow_cred
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_f=
ree_data.3
--- a/head/contrib/openpam/doc/man/openpam_free_data.3	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_free_data.3	Wed Jul 25 16:21:35 =
2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_FREE_DATA 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_free_data "pam_handle_t *pamh" "void *data" "int status"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_free_data
 function is a cleanup function suitable for
 passing to
 .Xr pam_set_data 3 .
@@ -64,15 +64,15 @@
 .Xr pam_set_data 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_free_data
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_free_data
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_f=
ree_envlist.3
--- a/head/contrib/openpam/doc/man/openpam_free_envlist.3	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_free_envlist.3	Wed Jul 25 16:21:=
35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_FREE_ENVLIST 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_free_envlist "char **envlist"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_free_envlist
 function is a convenience function which
 frees all the environment variables in an environment list, and the
 list itself.
@@ -62,12 +62,11 @@
 .Xr pam_getenvlist 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_free_envlist
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
-.Fx
-Project by
-.An Dag-Erling Sm\(/orgrav Aq des at FreeBSD.org .
+.Fn openpam_free_envlist
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_g=
et_feature.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/doc/man/openpam_get_feature.3	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,105 @@
+.\"-
+.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc.
+.\" Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by ThinkSec AS and
+.\" Network Associates Laboratories, the Security Research Division of
+.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+.\" ("CBOSS"), as part of the DARPA CHATS research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN=
TIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST=
RICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY =
WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dd May 26, 2012
+.Dt OPENPAM_GET_FEATURE 3
+.Os
+.Sh NAME
+.Nm openpam_get_feature
+.Nd query the state of an optional feature
+.Sh LIBRARY
+.Lb libpam
+.Sh SYNOPSIS
+.In sys/types.h
+.In security/pam_appl.h
+.In security/openpam.h
+.Ft "int"
+.Fn openpam_get_feature "int feature" "int *onoff"
+.Sh DESCRIPTION
+.Bf Sy
+This function is experimental and may be modified or removed in a future r=
elease without further warning.
+.Ef
+.Pp
+The
+.Fn openpam_get_feature
+function stores the current state of the
+specified feature in the variable pointed to by its
+.Fa onoff
+argument.
+.Pp
+The following features are recognized:
+.Bl -tag -width 18n
+.It Dv OPENPAM_RESTRICT_SERVICE_NAME
+Disallow path separators in service names.
+This feature is enabled by default.
+Disabling it allows the application to specify the path to
+the desired policy file directly.
+.It Dv OPENPAM_VERIFY_POLICY_FILE
+Verify the ownership and permissions of the policy file
+and the path leading up to it.
+This feature is enabled by default.
+.It Dv OPENPAM_RESTRICT_MODULE_NAME
+Disallow path separators in module names.
+This feature is disabled by default.
+Enabling it prevents the use of modules in non-standard
+locations.
+.It Dv OPENPAM_VERIFY_MODULE_FILE
+Verify the ownership and permissions of each loadable
+module and the path leading up to it.
+This feature is enabled by default.
+.El
+.Sh RETURN VALUES
+The
+.Fn openpam_get_feature
+function returns one of the following values:
+.Bl -tag -width 18n
+.It Bq Er PAM_SYMBOL_ERR
+Invalid symbol.
+.El
+.Sh SEE ALSO
+.Xr openpam_set_feature 3 ,
+.Xr pam 3 ,
+.Xr pam_strerror 3
+.Sh STANDARDS
+The
+.Fn openpam_get_feature
+function is an OpenPAM extension.
+.Sh AUTHORS
+The
+.Fn openpam_get_feature
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_g=
et_option.3
--- a/head/contrib/openpam/doc/man/openpam_get_option.3	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_get_option.3	Wed Jul 25 16:21:35=
 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_GET_OPTION 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_get_option "pam_handle_t *pamh" "const char *option"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_get_option
 function returns the value of the specified
 option in the context of the currently executing service module, or
 .Dv NULL
@@ -58,7 +58,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_get_option
 function returns
 .Dv NULL
 on failure.
@@ -67,15 +67,15 @@
 .Xr pam 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_get_option
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_get_option
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_l=
og.3
--- a/head/contrib/openpam/doc/man/openpam_log.3	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/doc/man/openpam_log.3	Wed Jul 25 16:21:35 2012 +=
0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_LOG 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_log "int level" "const char *fmt" "..."
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_log
 function logs messages using
 .Xr syslog 3 .
 It is primarily intended for internal use by the library and modules.
@@ -60,6 +60,9 @@
 argument indicates the importance of the message.
 The following levels are defined:
 .Bl -tag -width 18n
+.It Dv PAM_LOG_LIBDEBUG
+Debugging messages.
+For internal use only.
 .It Dv PAM_LOG_DEBUG
 Debugging messages.
 These messages are normally not logged unless the global
@@ -101,15 +104,15 @@
 .Xr syslog 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_log
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_log
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_n=
ullconv.3
--- a/head/contrib/openpam/doc/man/openpam_nullconv.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_nullconv.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_NULLCONV 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_nullconv "int n" "const struct pam_message **msg" "struct pam_=
response **resp" "void *data"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_nullconv
 function is a null conversation function suitable
 for applications that want to use PAM but don't support interactive
 dialog with the user.
@@ -71,7 +71,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_nullconv
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_CONV_ERR
@@ -88,15 +88,15 @@
 .Xr pam_vprompt 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_nullconv
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_nullconv
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_r=
eadline.3
--- a/head/contrib/openpam/doc/man/openpam_readline.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_readline.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_READLINE 3
 .Os
 .Sh NAME
@@ -44,27 +44,32 @@
 .Lb libpam
 .Sh SYNOPSIS
 .In sys/types.h
+.In stdio.h
 .In security/pam_appl.h
 .In security/openpam.h
 .Ft "char *"
 .Fn openpam_readline "FILE *f" "int *lineno" "size_t *lenp"
 .Sh DESCRIPTION
+.Bf Sy
+This function is deprecated and may be removed in a future release without=
 further warning.
 The
-.Nm
+.Fn openpam_readlinev
+function may be used to achieve similar results.
+.Ef
+.Pp
+The
+.Fn openpam_readline
 function reads a line from a file, and returns it
 in a NUL-terminated buffer allocated with
 .Xr malloc 3 .
 .Pp
 The
-.Nm
+.Fn openpam_readline
 function performs a certain amount of processing
 on the data it reads:
 .Bl -bullet
 .It
-Comments (introduced by a hash sign) are stripped, as is leading and
-trailing whitespace.
-.It
-Any amount of linear whitespace is collapsed to a single space.
+Comments (introduced by a hash sign) are stripped.
 .It
 Blank lines are ignored.
 .It
@@ -89,27 +94,28 @@
 The caller is responsible for releasing the returned buffer by passing
 it to
 .Xr free 3 .
+.Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_readline
 function returns
 .Dv NULL
 on failure.
 .Sh SEE ALSO
-.Xr free 3 ,
-.Xr malloc 3 ,
+.Xr openpam_readlinev 3 ,
+.Xr openpam_readword 3 ,
 .Xr pam 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_readline
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_readline
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_r=
eadlinev.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/doc/man/openpam_readlinev.3	Wed Jul 25 16:21:35 =
2012 +0300
@@ -0,0 +1,159 @@
+.\"-
+.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc.
+.\" Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by ThinkSec AS and
+.\" Network Associates Laboratories, the Security Research Division of
+.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+.\" ("CBOSS"), as part of the DARPA CHATS research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN=
TIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST=
RICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY =
WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dd May 26, 2012
+.Dt OPENPAM_READLINEV 3
+.Os
+.Sh NAME
+.Nm openpam_readlinev
+.Nd read a line from a file and split it into words
+.Sh LIBRARY
+.Lb libpam
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdio.h
+.In security/pam_appl.h
+.In security/openpam.h
+.Ft "char **"
+.Fn openpam_readlinev "FILE *f" "int *lineno" "int *lenp"
+.Sh DESCRIPTION
+The
+.Fn openpam_readlinev
+function reads a line from a file, splits it
+into words according to the rules described in the
+.Xr openpam_readword 3
+manual page, and returns a list of those words.
+.Pp
+If
+.Fa lineno
+is not
+.Dv NULL ,
+the integer variable it points to is
+incremented every time a newline character is read.
+This includes quoted or escaped newline characters and the newline
+character at the end of the line.
+.Pp
+If
+.Fa lenp
+is not
+.Dv NULL ,
+the number of words on the line is stored in the
+variable to which it points.
+.Sh RETURN VALUES
+If successful, the
+.Fn openpam_readlinev
+function returns a pointer to a
+dynamically allocated array of pointers to individual dynamically
+allocated NUL-terminated strings, each containing a single word, in the
+order in which they were encountered on the line.
+The array is terminated by a
+.Dv NULL
+pointer.
+.Pp
+The caller is responsible for freeing both the array and the individual
+strings by passing each of them to
+.Xr free 3 .
+.Pp
+If the end of the line was reached before any words were read,
+.Fn openpam_readlinev
+returns a pointer to a dynamically allocated array
+containing a single
+.Dv NULL
+pointer.
+.Pp
+The
+.Fn openpam_readlinev
+function can fail and return
+.Dv NULL
+for one of
+four reasons:
+.Bl -bullet
+.It
+The end of the file was reached before any words were read;
+.Va errno
+is
+zero,
+.Xr ferror 3
+returns zero, and
+.Xr feof 3
+returns a non-zero value.
+.It
+The end of the file was reached while a quote or backslash escape
+was in effect;
+.Va errno
+is set to
+.Dv EINVAL ,
+.Xr ferror 3
+returns zero, and
+.Xr feof 3
+returns a non-zero value.
+.It
+An error occurred while reading from the file;
+.Va errno
+is non-zero,
+.Xr ferror 3
+returns a non-zero value and
+.Xr feof 3
+returns zero.
+.It
+A
+.Xr malloc 3
+or
+.Xr realloc 3
+call failed;
+.Va errno
+is set to
+.Dv ENOMEM ,
+.Xr ferror 3
+returns a non-zero value, and
+.Xr feof 3
+may or may not return
+a non-zero value.
+.El
+.Sh SEE ALSO
+.Xr openpam_readline 3 ,
+.Xr openpam_readword 3 ,
+.Xr pam 3
+.Sh STANDARDS
+The
+.Fn openpam_readlinev
+function is an OpenPAM extension.
+.Sh AUTHORS
+The
+.Fn openpam_readlinev
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_r=
eadword.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/doc/man/openpam_readword.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,152 @@
+.\"-
+.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc.
+.\" Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by ThinkSec AS and
+.\" Network Associates Laboratories, the Security Research Division of
+.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+.\" ("CBOSS"), as part of the DARPA CHATS research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN=
TIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST=
RICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY =
WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dd May 26, 2012
+.Dt OPENPAM_READWORD 3
+.Os
+.Sh NAME
+.Nm openpam_readword
+.Nd read a word from a file, respecting shell quoting rules
+.Sh LIBRARY
+.Lb libpam
+.Sh SYNOPSIS
+.In sys/types.h
+.In stdio.h
+.In security/pam_appl.h
+.In security/openpam.h
+.Ft "char *"
+.Fn openpam_readword "FILE *f" "int *lineno" "size_t *lenp"
+.Sh DESCRIPTION
+The
+.Fn openpam_readword
+function reads the next word from a file, and
+returns it in a NUL-terminated buffer allocated with
+.Xr malloc 3 .
+.Pp
+A word is a sequence of non-whitespace characters.
+However, whitespace characters can be included in a word if quoted or
+escaped according to the following rules:
+.Bl -bullet
+.It
+An unescaped single or double quote introduces a quoted string,
+which ends when the same quote character is encountered a second
+time.
+The quotes themselves are stripped.
+.It
+Within a single- or double-quoted string, all whitespace characters,
+including the newline character, are preserved as-is.
+.It
+Outside a quoted string, a backslash escapes the next character,
+which is preserved as-is, unless that character is a newline, in
+which case it is discarded and reading continues at the beginning of
+the next line as if the backslash and newline had not been there.
+In all cases, the backslash itself is discarded.
+.It
+Within a single-quoted string, double quotes and backslashes are
+preserved as-is.
+.It
+Within a double-quoted string, a single quote is preserved as-is,
+and a backslash is preserved as-is unless used to escape a double
+quote.
+.El
+.Pp
+In addition, if the first non-whitespace character on the line is a
+hash character (#), the rest of the line is discarded.
+If a hash character occurs within a word, however, it is preserved
+as-is.
+A backslash at the end of a comment does cause line continuation.
+.Pp
+If
+.Fa lineno
+is not
+.Dv NULL ,
+the integer variable it points to is
+incremented every time a quoted or escaped newline character is read.
+.Pp
+If
+.Fa lenp
+is not
+.Dv NULL ,
+the length of the word (after quotes and
+backslashes have been removed) is stored in the variable it points to.
+.Sh RETURN VALUES
+If successful, the
+.Fn openpam_readword
+function returns a pointer to a
+dynamically allocated NUL-terminated string containing the first word
+encountered on the line.
+.Pp
+The caller is responsible for releasing the returned buffer by passing
+it to
+.Xr free 3 .
+.Pp
+If
+.Fn openpam_readword
+reaches the end of the line or file before any
+characters are copied to the word, it returns
+.Dv NULL .
+In the former
+case, the newline is pushed back to the file.
+.Pp
+If
+.Fn openpam_readword
+reaches the end of the file while a quote or
+backslash escape is in effect, it sets
+.Va errno
+to
+.Dv EINVAL
+and returns
+.Dv NULL .
+.Sh IMPLEMENTATION NOTES
+The parsing rules are intended to be equivalent to the normal POSIX
+shell quoting rules.
+Any discrepancy is a bug and should be reported to the author along
+with sample input that can be used to reproduce the error.
+.Pp
+.Sh SEE ALSO
+.Xr openpam_readline 3 ,
+.Xr openpam_readlinev 3 ,
+.Xr pam 3
+.Sh STANDARDS
+The
+.Fn openpam_readword
+function is an OpenPAM extension.
+.Sh AUTHORS
+The
+.Fn openpam_readword
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_r=
estore_cred.3
--- a/head/contrib/openpam/doc/man/openpam_restore_cred.3	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_restore_cred.3	Wed Jul 25 16:21:=
35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_RESTORE_CRED 3
 .Os
 .Sh NAME
@@ -50,13 +50,13 @@
 .Fn openpam_restore_cred "pam_handle_t *pamh"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_restore_cred
 function restores the credentials saved by
 .Xr openpam_borrow_cred 3 .
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_restore_cred
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_NO_MODULE_DATA
@@ -73,15 +73,15 @@
 .Xr pam_strerror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_restore_cred
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_restore_cred
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_s=
et_feature.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/doc/man/openpam_set_feature.3	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -0,0 +1,87 @@
+.\"-
+.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc.
+.\" Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by ThinkSec AS and
+.\" Network Associates Laboratories, the Security Research Division of
+.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+.\" ("CBOSS"), as part of the DARPA CHATS research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN=
TIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST=
RICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY =
WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dd May 26, 2012
+.Dt OPENPAM_SET_FEATURE 3
+.Os
+.Sh NAME
+.Nm openpam_set_feature
+.Nd enable or disable an optional feature
+.Sh LIBRARY
+.Lb libpam
+.Sh SYNOPSIS
+.In sys/types.h
+.In security/pam_appl.h
+.In security/openpam.h
+.Ft "int"
+.Fn openpam_set_feature "int feature" "int onoff"
+.Sh DESCRIPTION
+.Bf Sy
+This function is experimental and may be modified or removed in a future r=
elease without further warning.
+.Ef
+.Pp
+The
+.Fn openpam_set_feature
+function sets the state of the specified
+feature to the value specified by the
+.Fa onoff
+argument.
+See
+.Xr openpam_get_feature 3
+for a list of recognized features.
+.Pp
+.Sh RETURN VALUES
+The
+.Fn openpam_set_feature
+function returns one of the following values:
+.Bl -tag -width 18n
+.It Bq Er PAM_SYMBOL_ERR
+Invalid symbol.
+.El
+.Sh SEE ALSO
+.Xr openpam_get_feature 3 ,
+.Xr pam 3 ,
+.Xr pam_strerror 3
+.Sh STANDARDS
+The
+.Fn openpam_set_feature
+function is an OpenPAM extension.
+.Sh AUTHORS
+The
+.Fn openpam_set_feature
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_s=
et_option.3
--- a/head/contrib/openpam/doc/man/openpam_set_option.3	Wed Jul 25 16:20:13=
 2012 +0300
+++ b/head/contrib/openpam/doc/man/openpam_set_option.3	Wed Jul 25 16:21:35=
 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_SET_OPTION 3
 .Os
 .Sh NAME
@@ -50,13 +50,13 @@
 .Fn openpam_set_option "pam_handle_t *pamh" "const char *option" "const ch=
ar *value"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_set_option
 function sets the specified option in the
 context of the currently executing service module.
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_set_option
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -70,15 +70,15 @@
 .Xr pam_strerror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_set_option
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_set_option
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_s=
traddch.3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/doc/man/openpam_straddch.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -0,0 +1,122 @@
+.\"-
+.\" Copyright (c) 2001-2003 Networks Associates Technology, Inc.
+.\" Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by ThinkSec AS and
+.\" Network Associates Laboratories, the Security Research Division of
+.\" Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+.\" ("CBOSS"), as part of the DARPA CHATS research program.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote
+.\"    products derived from this software without specific prior written
+.\"    permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR=
POSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN=
TIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST=
RICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY =
WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Id$
+.\"
+.Dd May 26, 2012
+.Dt OPENPAM_STRADDCH 3
+.Os
+.Sh NAME
+.Nm openpam_straddch
+.Nd add a character to a string, expanding the buffer if needed
+.Sh LIBRARY
+.Lb libpam
+.Sh SYNOPSIS
+.In sys/types.h
+.In security/pam_appl.h
+.In security/openpam.h
+.Ft "int"
+.Fn openpam_straddch "char **str" "size_t *size" "size_t *len" "int ch"
+.Sh DESCRIPTION
+The
+.Fn openpam_straddch
+function appends a character to a dynamically
+allocated NUL-terminated buffer, reallocating the buffer as needed.
+.Pp
+The
+.Fa str
+argument points to a variable containing either a pointer to
+an existing buffer or
+.Dv NULL .
+If the value of the variable pointed to by
+.Fa str
+is
+.Dv NULL ,
+a new buffer
+is allocated.
+.Pp
+The
+.Fa size
+and
+.Fa len
+argument point to variables used to hold the size
+of the buffer and the length of the string it contains, respectively.
+.Pp
+If a new buffer is allocated or an existing buffer is reallocated to
+make room for the additional character,
+.Fa str
+and
+.Fa size
+are updated
+accordingly.
+.Pp
+The
+.Fn openpam_straddch
+function ensures that the buffer is always
+NUL-terminated.
+.Pp
+If the
+.Fn openpam_straddch
+function is successful, it increments the
+integer variable pointed to by
+.Fa len
+and returns 0.
+Otherwise, it leaves the variables pointed to by
+.Fa str ,
+.Fa size
+and
+.Fa len
+unmodified, sets
+.Va errno
+to
+.Dv ENOMEM
+and returns -1.
+.Pp
+.Sh RETURN VALUES
+The
+.Fn openpam_straddch
+function returns 0 on success and -1 on failure.
+.Sh SEE ALSO
+.Xr pam 3 ,
+.Xr pam_strerror 3
+.Sh STANDARDS
+The
+.Fn openpam_straddch
+function is an OpenPAM extension.
+.Sh AUTHORS
+The
+.Fn openpam_straddch
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_s=
ubst.3
--- a/head/contrib/openpam/doc/man/openpam_subst.3	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/openpam/doc/man/openpam_subst.3	Wed Jul 25 16:21:35 2012=
 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_SUBST 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn openpam_subst "const pam_handle_t *pamh" "char *buf" "size_t *bufsize"=
 "const char *template"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_subst
 function expands a string, substituting PAM item
 values for all occurrences of specific substitution codes.
 The
@@ -73,12 +73,12 @@
 .Fa bufsize
 is updated to reflect the amount of space required to
 hold the entire string, and
-.Nm
+.Fn openpam_subst
 returns
 .Dv PAM_TRY_AGAIN .
 .Pp
 If
-.Nm
+.Fn openpam_subst
 fails for any other reason, the
 .Fa bufsize
 argument is
@@ -112,10 +112,9 @@
 .Dv PAM_USER
 item.
 .El
-.Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_subst
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_SYSTEM_ERR
@@ -131,12 +130,11 @@
 .Xr pam_strerror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_subst
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
-.Fx
-Project by
-.An Dag-Erling Sm\(/orgrav Aq des at FreeBSD.org .
+.Fn openpam_subst
+function and this manual page were
+developed by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/openpam_t=
tyconv.3
--- a/head/contrib/openpam/doc/man/openpam_ttyconv.3	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/openpam/doc/man/openpam_ttyconv.3	Wed Jul 25 16:21:35 20=
12 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt OPENPAM_TTYCONV 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn openpam_ttyconv "int n" "const struct pam_message **msg" "struct pam_r=
esponse **resp" "void *data"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn openpam_ttyconv
 function is a standard conversation function
 suitable for use on TTY devices.
 It should be adequate for the needs of most text-based interactive
 programs.
 .Pp
 The
-.Nm
+.Fn openpam_ttyconv
 function allows the application to specify a
 timeout for user input by setting the global integer variable
 .Va openpam_ttyconv_timeout
@@ -65,7 +65,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn openpam_ttyconv
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -83,15 +83,15 @@
 .Xr pam_vprompt 3
 .Sh STANDARDS
 The
-.Nm
+.Fn openpam_ttyconv
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn openpam_ttyconv
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam.3
--- a/head/contrib/openpam/doc/man/pam.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam.3	Wed Jul 25 16:21:35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM 3
 .Os
 .Sh NAME
@@ -291,3 +291,6 @@
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.
+.Pp
+The OpenPAM library is maintained by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam.conf.5
--- a/head/contrib/openpam/doc/man/pam.conf.5	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam.conf.5	Wed Jul 25 16:21:35 2012 +0300
@@ -26,9 +26,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: pam.conf.5 485 2011-11-03 16:57:37Z des $
+.\" $Id: pam.conf.5 610 2012-05-26 14:03:45Z des $
 .\"
-.Dd November 3, 2011
+.Dd May 26, 2012
 .Dt PAM.CONF 5
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Pp
 If none of these locations contains a policy for the given service,
 the
-.Dv default
+.Dq Dv other
 policy is used instead, if it exists.
 .Pp
 Entries in per-service policy files must be of one of the two forms
@@ -177,5 +177,5 @@
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.
 .Pp
-This manual page was written by
-.An Dag-Erling Sm\(/orgrav Aq des at FreeBSD.org .
+The OpenPAM library is maintained by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_acct_=
mgmt.3
--- a/head/contrib/openpam/doc/man/pam_acct_mgmt.3	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/openpam/doc/man/pam_acct_mgmt.3	Wed Jul 25 16:21:35 2012=
 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_ACCT_MGMT 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_acct_mgmt "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_acct_mgmt
 function verifies and enforces account restrictions
 after the user has been authenticated.
 .Pp
@@ -65,12 +65,12 @@
 .El
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_acct_mgmt
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_acct_mgmt
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -104,11 +104,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_acct_mgmt
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_authe=
nticate.3
--- a/head/contrib/openpam/doc/man/pam_authenticate.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/pam_authenticate.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_AUTHENTICATE 3
 .Os
 .Sh NAME
@@ -49,14 +49,14 @@
 .Fn pam_authenticate "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_authenticate
 function attempts to authenticate the user
 associated with the pam context specified by the
 .Fa pamh
 argument.
 .Pp
 The application is free to call
-.Nm
+.Fn pam_authenticate
 as many times as it
 wishes, but some modules may maintain an internal retry counter and
 return
@@ -75,12 +75,12 @@
 .El
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_authenticate
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_authenticate
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -118,11 +118,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_authenticate
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_chaut=
htok.3
--- a/head/contrib/openpam/doc/man/pam_chauthtok.3	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/openpam/doc/man/pam_chauthtok.3	Wed Jul 25 16:21:35 2012=
 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_CHAUTHTOK 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_chauthtok "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_chauthtok
 function attempts to change the authentication token
 for the user associated with the pam context specified by the
 .Fa pamh
@@ -67,12 +67,12 @@
 .El
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_chauthtok
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_chauthtok
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -110,11 +110,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_chauthtok
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_close=
_session.3
--- a/head/contrib/openpam/doc/man/pam_close_session.3	Wed Jul 25 16:20:13 =
2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_close_session.3	Wed Jul 25 16:21:35 =
2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_CLOSE_SESSION 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_close_session "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_close_session
 function tears down the user session previously
 set up by
 .Xr pam_open_session 3 .
@@ -64,12 +64,12 @@
 .El
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_close_session
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_close_session
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -100,11 +100,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_close_session
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_conv.3
--- a/head/contrib/openpam/doc/man/pam_conv.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_conv.3	Wed Jul 25 16:21:35 2012 +0300
@@ -32,9 +32,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: pam_conv.3 437 2011-09-13 12:00:13Z des $
+.\" $Id: pam_conv.3 610 2012-05-26 14:03:45Z des $
 .\"
-.Dd June 16, 2005
+.Dd May 26, 2012
 .Dt PAM_CONV 3
 .Os
 .Sh NAME
@@ -181,3 +181,6 @@
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.
+.Pp
+The OpenPAM library is maintained by
+.An Dag-Erling Sm\(/orgrav Aq des at des.no .
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_end.3
--- a/head/contrib/openpam/doc/man/pam_end.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_end.3	Wed Jul 25 16:21:35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_END 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_end "pam_handle_t *pamh" "int status"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_end
 function terminates a PAM transaction and destroys the
 corresponding PAM context, releasing all resources allocated to it.
 .Pp
@@ -57,11 +57,10 @@
 .Fa status
 argument should be set to the error code returned by the
 last API call before the call to
-.Nm
-.
+.Fn pam_end .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_end
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_SYSTEM_ERR
@@ -77,11 +76,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_end
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_error=
.3
--- a/head/contrib/openpam/doc/man/pam_error.3	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/doc/man/pam_error.3	Wed Jul 25 16:21:35 2012 +03=
00
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_ERROR 3
 .Os
 .Sh NAME
@@ -49,13 +49,13 @@
 .Fn pam_error "const pam_handle_t *pamh" "const char *fmt" "..."
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_error
 function displays an error message through the
 intermediary of the given PAM context's conversation function.
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_error
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -73,15 +73,15 @@
 .Xr pam_verror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_error
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_error
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_get_a=
uthtok.3
--- a/head/contrib/openpam/doc/man/pam_get_authtok.3	Wed Jul 25 16:20:13 20=
12 +0300
+++ b/head/contrib/openpam/doc/man/pam_get_authtok.3	Wed Jul 25 16:21:35 20=
12 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GET_AUTHTOK 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_get_authtok "pam_handle_t *pamh" "int item" "const char **authtok"=
 "const char *prompt"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_get_authtok
 function returns the cached authentication token,
 or prompts the user if no token is currently cached.
 Either way, a pointer to the authentication token is stored in the
@@ -89,7 +89,7 @@
 passed to the conversation function.
 .Pp
 If
-.Nm
+.Fn pam_get_authtok
 is called from a module and the
 .Dv authtok_prompt
 /
@@ -110,17 +110,17 @@
 and there is a non-null
 .Dv PAM_OLDAUTHTOK
 item,
-.Nm
+.Fn pam_get_authtok
 will ask the user to confirm the new token by
 retyping it.
 If there is a mismatch,
-.Nm
+.Fn pam_get_authtok
 will return
 .Dv PAM_TRY_AGAIN .
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_get_authtok
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -140,15 +140,15 @@
 .Xr pam_strerror 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_get_authtok
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_get_authtok
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_get_d=
ata.3
--- a/head/contrib/openpam/doc/man/pam_get_data.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_get_data.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GET_DATA 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_get_data "const pam_handle_t *pamh" "const char *module_data_name"=
 "const void **data"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_get_data
 function looks up the opaque object associated with
 the string specified by the
 .Fa module_data_name
@@ -61,7 +61,7 @@
 .Fa data
 argument.
 If
-.Nm
+.Fn pam_get_data
 fails, the
 .Fa data
 argument is untouched.
@@ -72,7 +72,7 @@
 data that are meaningful only to a particular service module.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_get_data
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_NO_MODULE_DATA
@@ -91,11 +91,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_get_data
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_get_i=
tem.3
--- a/head/contrib/openpam/doc/man/pam_get_item.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_get_item.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GET_ITEM 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_get_item "const pam_handle_t *pamh" "int item_type" "const void **=
item"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_get_item
 function stores a pointer to the item specified by
 the
 .Fa item_type
@@ -60,7 +60,7 @@
 .Fa pamh
 argument.
 If
-.Nm
+.Fn pam_get_item
 fails, the
 .Fa item
 argument is untouched.
@@ -107,7 +107,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_get_item
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_SYMBOL_ERR
@@ -127,11 +127,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_get_item
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_get_u=
ser.3
--- a/head/contrib/openpam/doc/man/pam_get_user.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_get_user.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GET_USER 3
 .Os
 .Sh NAME
@@ -49,13 +49,13 @@
 .Fn pam_get_user "pam_handle_t *pamh" "const char **user" "const char *pro=
mpt"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_get_user
 function returns the name of the target user, as
 specified to
 .Xr pam_start 3 .
 If no user was specified, nor set using
 .Xr pam_set_item 3 ,
-.Nm
+.Fn pam_get_user
 will prompt for a user name.
 Either way, a pointer to the user name is stored in the location
 pointed to by the
@@ -80,7 +80,7 @@
 passed to the conversation function.
 .Pp
 If
-.Nm
+.Fn pam_get_user
 is called from a module and the
 .Dv user_prompt
 option is
@@ -93,7 +93,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_get_user
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -118,11 +118,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_get_user
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_geten=
v.3
--- a/head/contrib/openpam/doc/man/pam_getenv.3	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/openpam/doc/man/pam_getenv.3	Wed Jul 25 16:21:35 2012 +0=
300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GETENV 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_getenv "pam_handle_t *pamh" "const char *name"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_getenv
 function returns the value of an environment variable.
 Its semantics are similar to those of
 .Xr getenv 3 ,
@@ -58,7 +58,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_getenv
 function returns
 .Dv NULL
 on failure.
@@ -75,11 +75,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_getenv
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_geten=
vlist.3
--- a/head/contrib/openpam/doc/man/pam_getenvlist.3	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/openpam/doc/man/pam_getenvlist.3	Wed Jul 25 16:21:35 201=
2 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_GETENVLIST 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_getenvlist "pam_handle_t *pamh"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_getenvlist
 function returns a copy of the given PAM context's
 environment list as a pointer to an array of strings.
 The last element in the array is
@@ -77,7 +77,7 @@
 .Ed
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_getenvlist
 function returns
 .Dv NULL
 on failure.
@@ -96,11 +96,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_getenvlist
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_info.3
--- a/head/contrib/openpam/doc/man/pam_info.3	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_info.3	Wed Jul 25 16:21:35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_INFO 3
 .Os
 .Sh NAME
@@ -49,13 +49,13 @@
 .Fn pam_info "const pam_handle_t *pamh" "const char *fmt" "..."
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_info
 function displays an informational message through the
 intermediary of the given PAM context's conversation function.
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_info
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -73,15 +73,15 @@
 .Xr pam_vinfo 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_info
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_info
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_open_=
session.3
--- a/head/contrib/openpam/doc/man/pam_open_session.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/pam_open_session.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_OPEN_SESSION 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_open_session "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_open_session
 sets up a user session for a previously
 authenticated user.
 The session should later be torn down by a call to
@@ -65,12 +65,12 @@
 .El
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_open_session
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_open_session
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -101,11 +101,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_open_session
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_promp=
t.3
--- a/head/contrib/openpam/doc/man/pam_prompt.3	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/openpam/doc/man/pam_prompt.3	Wed Jul 25 16:21:35 2012 +0=
300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_PROMPT 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_prompt "const pam_handle_t *pamh" "int style" "char **resp" "const=
 char *fmt" "..."
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_prompt
 function constructs a message from the specified format
 string and arguments and passes it to the given PAM context's
 conversation function.
@@ -67,7 +67,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_prompt
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -85,15 +85,15 @@
 .Xr pam_vprompt 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_prompt
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_prompt
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_puten=
v.3
--- a/head/contrib/openpam/doc/man/pam_putenv.3	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/openpam/doc/man/pam_putenv.3	Wed Jul 25 16:21:35 2012 +0=
300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_PUTENV 3
 .Os
 .Sh NAME
@@ -49,8 +49,8 @@
 .Fn pam_putenv "pam_handle_t *pamh" "const char *namevalue"
 .Sh DESCRIPTION
 The
-.Nm
-function sets a environment variable.
+.Fn pam_putenv
+function sets an environment variable.
 Its semantics are similar to those of
 .Xr putenv 3 ,
 but it modifies the PAM
@@ -58,7 +58,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_putenv
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -80,11 +80,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_putenv
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_set_d=
ata.3
--- a/head/contrib/openpam/doc/man/pam_set_data.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_set_data.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SET_DATA 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_set_data "pam_handle_t *pamh" "const char *module_data_name" "void=
 *data" "void (*cleanup)(pam_handle_t *pamh, void *data, int pam_end_status=
)"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_set_data
 function associates a pointer to an opaque object
 with an arbitrary string specified by the
 .Fa module_data_name
@@ -71,7 +71,7 @@
 data that are meaningful only to a particular service module.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_set_data
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -90,11 +90,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_set_data
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_set_i=
tem.3
--- a/head/contrib/openpam/doc/man/pam_set_item.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_set_item.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SET_ITEM 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_set_item "pam_handle_t *pamh" "int item_type" "const void *item"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_set_item
 function sets the item specified by the
 .Fa item_type
 argument to a copy of the object pointed to by the
@@ -63,7 +63,7 @@
 for a list of recognized item types.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_set_item
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -84,11 +84,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_set_item
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_setcr=
ed.3
--- a/head/contrib/openpam/doc/man/pam_setcred.3	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/doc/man/pam_setcred.3	Wed Jul 25 16:21:35 2012 +=
0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SETCRED 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_setcred "pam_handle_t *pamh" "int flags"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_setcred
 function manages the application's credentials.
 .Pp
 The
@@ -72,12 +72,12 @@
 The latter four are mutually exclusive.
 .Pp
 If any other bits are set,
-.Nm
+.Fn pam_setcred
 will return
 .Dv PAM_SYMBOL_ERR .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_setcred
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -113,11 +113,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_setcred
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_seten=
v.3
--- a/head/contrib/openpam/doc/man/pam_setenv.3	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/openpam/doc/man/pam_setenv.3	Wed Jul 25 16:21:35 2012 +0=
300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SETENV 3
 .Os
 .Sh NAME
@@ -49,8 +49,8 @@
 .Fn pam_setenv "pam_handle_t *pamh" "const char *name" "const char *value"=
 "int overwrite"
 .Sh DESCRIPTION
 The
-.Nm
-function sets a environment variable.
+.Fn pam_setenv
+function sets an environment variable.
 Its semantics are similar to those of
 .Xr setenv 3 ,
 but it modifies the PAM
@@ -58,7 +58,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_setenv
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -75,15 +75,15 @@
 .Xr setenv 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_setenv
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_setenv
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_ac=
ct_mgmt.3
--- a/head/contrib/openpam/doc/man/pam_sm_acct_mgmt.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_acct_mgmt.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_ACCT_MGMT 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn pam_sm_acct_mgmt "pam_handle_t *pamh" "int flags" "int argc" "const ch=
ar **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_acct_mgmt
 function is the service module's implementation
 of the
 .Xr pam_acct_mgmt 3
 API function.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_acct_mgmt
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -94,11 +94,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_acct_mgmt
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_au=
thenticate.3
--- a/head/contrib/openpam/doc/man/pam_sm_authenticate.3	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_authenticate.3	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_AUTHENTICATE 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn pam_sm_authenticate "pam_handle_t *pamh" "int flags" "int argc" "const=
 char **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_authenticate
 function is the service module's
 implementation of the
 .Xr pam_authenticate 3
 API function.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_authenticate
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -96,11 +96,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_authenticate
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_ch=
authtok.3
--- a/head/contrib/openpam/doc/man/pam_sm_chauthtok.3	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_chauthtok.3	Wed Jul 25 16:21:35 2=
012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_CHAUTHTOK 3
 .Os
 .Sh NAME
@@ -50,7 +50,7 @@
 .Fn pam_sm_chauthtok "pam_handle_t *pamh" "int flags" "int argc" "const ch=
ar **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_chauthtok
 function is the service module's implementation
 of the
 .Xr pam_chauthtok 3
@@ -67,7 +67,7 @@
 flag set.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_chauthtok
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -106,11 +106,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_chauthtok
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_cl=
ose_session.3
--- a/head/contrib/openpam/doc/man/pam_sm_close_session.3	Wed Jul 25 16:20:=
13 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_close_session.3	Wed Jul 25 16:21:=
35 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_CLOSE_SESSION 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn pam_sm_close_session "pam_handle_t *pamh" "int flags" "int args" "cons=
t char **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_close_session
 function is the service module's
 implementation of the
 .Xr pam_close_session 3
 API function.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_close_session
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -88,11 +88,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_close_session
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_op=
en_session.3
--- a/head/contrib/openpam/doc/man/pam_sm_open_session.3	Wed Jul 25 16:20:1=
3 2012 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_open_session.3	Wed Jul 25 16:21:3=
5 2012 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_OPEN_SESSION 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn pam_sm_open_session "pam_handle_t *pamh" "int flags" "int argc" "const=
 char **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_open_session
 function is the service module's
 implementation of the
 .Xr pam_open_session 3
 API function.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_open_session
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -88,11 +88,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_open_session
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_sm_se=
tcred.3
--- a/head/contrib/openpam/doc/man/pam_sm_setcred.3	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/openpam/doc/man/pam_sm_setcred.3	Wed Jul 25 16:21:35 201=
2 +0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_SM_SETCRED 3
 .Os
 .Sh NAME
@@ -50,14 +50,14 @@
 .Fn pam_sm_setcred "pam_handle_t *pamh" "int flags" "int argc" "const char=
 **argv"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_sm_setcred
 function is the service module's implementation of
 the
 .Xr pam_setcred 3
 API function.
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_sm_setcred
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_ABORT
@@ -94,11 +94,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_sm_setcred
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_start=
.3
--- a/head/contrib/openpam/doc/man/pam_start.3	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/doc/man/pam_start.3	Wed Jul 25 16:21:35 2012 +03=
00
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_START 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_start "const char *service" "const char *user" "const struct pam_c=
onv *pam_conv" "pam_handle_t **pamh"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_start
 function creates and initializes a PAM context.
 .Pp
 The
@@ -78,7 +78,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_start
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -99,11 +99,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_start
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_strer=
ror.3
--- a/head/contrib/openpam/doc/man/pam_strerror.3	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/doc/man/pam_strerror.3	Wed Jul 25 16:21:35 2012 =
+0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_STRERROR 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_strerror "const pam_handle_t *pamh" "int error_number"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_strerror
 function returns a pointer to a string containing a
 textual description of the error indicated by the
 .Fa error_number
@@ -64,7 +64,7 @@
 .Dv NULL .
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_strerror
 function returns
 .Dv NULL
 on failure.
@@ -78,11 +78,11 @@
 .Re
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_strerror
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_verro=
r.3
--- a/head/contrib/openpam/doc/man/pam_verror.3	Wed Jul 25 16:20:13 2012 +0=
300
+++ b/head/contrib/openpam/doc/man/pam_verror.3	Wed Jul 25 16:21:35 2012 +0=
300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_VERROR 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_verror "const pam_handle_t *pamh" "const char *fmt" "va_list ap"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_verror
 function passes its arguments to
 .Xr pam_vprompt 3
 with a
@@ -59,7 +59,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_verror
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -77,15 +77,15 @@
 .Xr pam_vprompt 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_verror
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_verror
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_vinfo=
.3
--- a/head/contrib/openpam/doc/man/pam_vinfo.3	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/doc/man/pam_vinfo.3	Wed Jul 25 16:21:35 2012 +03=
00
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_VINFO 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_vinfo "const pam_handle_t *pamh" "const char *fmt" "va_list ap"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_vinfo
 function passes its arguments to
 .Xr pam_vprompt 3
 with a
@@ -59,7 +59,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_vinfo
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -77,15 +77,15 @@
 .Xr pam_vprompt 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_vinfo
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_vinfo
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/doc/man/pam_vprom=
pt.3
--- a/head/contrib/openpam/doc/man/pam_vprompt.3	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/doc/man/pam_vprompt.3	Wed Jul 25 16:21:35 2012 +=
0300
@@ -34,7 +34,7 @@
 .\"
 .\" $Id$
 .\"
-.Dd December 18, 2011
+.Dd May 26, 2012
 .Dt PAM_VPROMPT 3
 .Os
 .Sh NAME
@@ -49,7 +49,7 @@
 .Fn pam_vprompt "const pam_handle_t *pamh" "int style" "char **resp" "cons=
t char *fmt" "va_list ap"
 .Sh DESCRIPTION
 The
-.Nm
+.Fn pam_vprompt
 function constructs a string from the
 .Fa fmt
 and
@@ -93,7 +93,7 @@
 .Pp
 .Sh RETURN VALUES
 The
-.Nm
+.Fn pam_vprompt
 function returns one of the following values:
 .Bl -tag -width 18n
 .It Bq Er PAM_BUF_ERR
@@ -114,15 +114,15 @@
 .Xr vsnprintf 3
 .Sh STANDARDS
 The
-.Nm
+.Fn pam_vprompt
 function is an OpenPAM extension.
 .Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
+.Fn pam_vprompt
+function and this manual page were
+developed for the
 .Fx
-Project by
-ThinkSec AS and Network Associates Laboratories, the
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/include/security/=
openpam.h
--- a/head/contrib/openpam/include/security/openpam.h	Wed Jul 25 16:20:13 2=
012 +0300
+++ b/head/contrib/openpam/include/security/openpam.h	Wed Jul 25 16:21:35 2=
012 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam.h 455 2011-10-29 18:31:11Z des $
+ * $Id: openpam.h 605 2012-04-20 11:05:10Z des $
  */
=20
 #ifndef SECURITY_OPENPAM_H_INCLUDED
@@ -157,12 +157,49 @@
 	int *_lineno,
 	size_t *_lenp)
 	OPENPAM_NONNULL((1));
+
+char **
+openpam_readlinev(FILE *_f,
+	int *_lineno,
+	int *_lenp)
+	OPENPAM_NONNULL((1));
+
+char *
+openpam_readword(FILE *_f,
+	int *_lineno,
+	size_t *_lenp)
+	OPENPAM_NONNULL((1));
 #endif
=20
+int
+openpam_straddch(char **_str,
+	size_t *_sizep,
+	size_t *_lenp,
+	int ch)
+	OPENPAM_NONNULL((1));
+
+/*
+ * Enable / disable optional features
+ */
+enum {
+	OPENPAM_RESTRICT_SERVICE_NAME,
+	OPENPAM_VERIFY_POLICY_FILE,
+	OPENPAM_RESTRICT_MODULE_NAME,
+	OPENPAM_VERIFY_MODULE_FILE,
+	OPENPAM_NUM_FEATURES
+};
+
+int
+openpam_set_feature(int _feature, int _onoff);
+
+int
+openpam_get_feature(int _feature, int *_onoff);
+
 /*
  * Log levels
  */
 enum {
+	PAM_LOG_LIBDEBUG =3D -1,
 	PAM_LOG_DEBUG,
 	PAM_LOG_VERBOSE,
 	PAM_LOG_NOTICE,
@@ -196,8 +233,8 @@
 void
 openpam_log(int _level,
 	const char *_format,
- 	...)
- 	OPENPAM_FORMAT ((__printf__, 2, 3))
+	...)
+	OPENPAM_FORMAT ((__printf__, 2, 3))
 	OPENPAM_NONNULL((2));
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/include/security/=
openpam_version.h
--- a/head/contrib/openpam/include/security/openpam_version.h	Wed Jul 25 16=
:20:13 2012 +0300
+++ b/head/contrib/openpam/include/security/openpam_version.h	Wed Jul 25 16=
:21:35 2012 +0300
@@ -32,14 +32,14 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_version.h 505 2011-12-18 14:13:08Z des $
+ * $Id: openpam_version.h 609 2012-05-26 13:57:45Z des $
  */
=20
 #ifndef SECURITY_OPENPAM_VERSION_H_INCLUDED
 #define SECURITY_OPENPAM_VERSION_H_INCLUDED
=20
 #define OPENPAM
-#define OPENPAM_VERSION	20111218
-#define OPENPAM_RELEASE	"Lycopsida"
+#define OPENPAM_VERSION	20120526
+#define OPENPAM_RELEASE	"Micrampelis"
=20
 #endif /* !SECURITY_OPENPAM_VERSION_H_INCLUDED */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/Makefile.am
--- a/head/contrib/openpam/lib/Makefile.am	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/Makefile.am	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-# $Id: Makefile.am 499 2011-11-22 11:51:50Z des $
+# $Id: Makefile.am 602 2012-04-15 17:31:15Z des $
=20
 NULL =3D
=20
@@ -8,8 +8,11 @@
=20
 noinst_HEADERS =3D \
 	openpam_constants.h \
+	openpam_ctype.h \
 	openpam_debug.h \
+	openpam_features.h \
 	openpam_impl.h \
+	openpam_strlcat.h \
 	openpam_strlcmp.h \
 	openpam_strlcpy.h
=20
@@ -20,17 +23,23 @@
 	openpam_constants.c \
 	openpam_dispatch.c \
 	openpam_dynamic.c \
+	openpam_features.c \
 	openpam_findenv.c \
 	openpam_free_data.c \
 	openpam_free_envlist.c \
+	openpam_get_feature.c \
 	openpam_get_option.c \
 	openpam_load.c \
 	openpam_log.c \
 	openpam_nullconv.c \
 	openpam_readline.c \
+	openpam_readlinev.c \
+	openpam_readword.c \
 	openpam_restore_cred.c \
 	openpam_set_option.c \
+	openpam_set_feature.c \
 	openpam_static.c \
+	openpam_straddch.c \
 	openpam_subst.c \
 	openpam_ttyconv.c \
 	pam_acct_mgmt.c \
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/Makefile.in
--- a/head/contrib/openpam/lib/Makefile.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -15,7 +15,7 @@
=20
 @SET_MAKE@
=20
-# $Id: Makefile.am 499 2011-11-22 11:51:50Z des $
+# $Id: Makefile.am 602 2012-04-15 17:31:15Z des $
=20
=20
 VPATH =3D @srcdir@
@@ -76,11 +76,13 @@
 am_libpam_la_OBJECTS =3D openpam_borrow_cred.lo \
 	openpam_check_owner_perms.lo openpam_configure.lo \
 	openpam_constants.lo openpam_dispatch.lo openpam_dynamic.lo \
-	openpam_findenv.lo openpam_free_data.lo \
-	openpam_free_envlist.lo openpam_get_option.lo openpam_load.lo \
-	openpam_log.lo openpam_nullconv.lo openpam_readline.lo \
-	openpam_restore_cred.lo openpam_set_option.lo \
-	openpam_static.lo openpam_subst.lo openpam_ttyconv.lo \
+	openpam_features.lo openpam_findenv.lo openpam_free_data.lo \
+	openpam_free_envlist.lo openpam_get_feature.lo \
+	openpam_get_option.lo openpam_load.lo openpam_log.lo \
+	openpam_nullconv.lo openpam_readline.lo openpam_readlinev.lo \
+	openpam_readword.lo openpam_restore_cred.lo \
+	openpam_set_option.lo openpam_set_feature.lo openpam_static.lo \
+	openpam_straddch.lo openpam_subst.lo openpam_ttyconv.lo \
 	pam_acct_mgmt.lo pam_authenticate.lo pam_chauthtok.lo \
 	pam_close_session.lo pam_end.lo pam_error.lo \
 	pam_get_authtok.lo pam_get_data.lo pam_get_item.lo \
@@ -234,8 +236,11 @@
 lib_LTLIBRARIES =3D libpam.la
 noinst_HEADERS =3D \
 	openpam_constants.h \
+	openpam_ctype.h \
 	openpam_debug.h \
+	openpam_features.h \
 	openpam_impl.h \
+	openpam_strlcat.h \
 	openpam_strlcmp.h \
 	openpam_strlcpy.h
=20
@@ -246,17 +251,23 @@
 	openpam_constants.c \
 	openpam_dispatch.c \
 	openpam_dynamic.c \
+	openpam_features.c \
 	openpam_findenv.c \
 	openpam_free_data.c \
 	openpam_free_envlist.c \
+	openpam_get_feature.c \
 	openpam_get_option.c \
 	openpam_load.c \
 	openpam_log.c \
 	openpam_nullconv.c \
 	openpam_readline.c \
+	openpam_readlinev.c \
+	openpam_readword.c \
 	openpam_restore_cred.c \
 	openpam_set_option.c \
+	openpam_set_feature.c \
 	openpam_static.c \
+	openpam_straddch.c \
 	openpam_subst.c \
 	openpam_ttyconv.c \
 	pam_acct_mgmt.c \
@@ -387,17 +398,23 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_constants.Plo at am_=
_quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_dispatch.Plo at am__=
quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_dynamic.Plo at am__q=
uote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_features.Plo at am__=
quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_findenv.Plo at am__q=
uote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_free_data.Plo at am_=
_quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_free_envlist.Plo@=
am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_get_feature.Plo at a=
m__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_get_option.Plo at am=
__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_load.Plo at am__quot=
e@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_log.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_nullconv.Plo at am__=
quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_readline.Plo at am__=
quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_readlinev.Plo at am_=
_quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_readword.Plo at am__=
quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_restore_cred.Plo@=
am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_set_feature.Plo at a=
m__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_set_option.Plo at am=
__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_static.Plo at am__qu=
ote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_straddch.Plo at am__=
quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_subst.Plo at am__quo=
te@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/openpam_ttyconv.Plo at am__q=
uote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pam_acct_mgmt.Plo at am__quo=
te@
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_check=
_owner_perms.c
--- a/head/contrib/openpam/lib/openpam_check_owner_perms.c	Wed Jul 25 16:20=
:13 2012 +0300
+++ b/head/contrib/openpam/lib/openpam_check_owner_perms.c	Wed Jul 25 16:21=
:35 2012 +0300
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_check_owner_perms.c 499 2011-11-22 11:51:50Z des $
+ * $Id: openpam_check_owner_perms.c 543 2012-03-31 22:11:34Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -67,6 +70,12 @@
 		errno =3D serrno;
 		return (-1);
 	}
+	if (!S_ISREG(sb.st_mode)) {
+		openpam_log(PAM_LOG_ERROR,
+		    "%s: not a regular file", name);
+		errno =3D EINVAL;
+		return (-1);
+	}
 	if ((sb.st_uid !=3D root && sb.st_uid !=3D arbitrator) ||
 	    (sb.st_mode & (S_IWGRP|S_IWOTH)) !=3D 0) {
 		openpam_log(PAM_LOG_ERROR,
@@ -84,7 +93,7 @@
  * up to it are owned by either root or the arbitrator and that they are
  * not writable by group or other.
  *
- * Note that openpam_check_file_owner_perms() should be used instead if
+ * Note that openpam_check_desc_owner_perms() should be used instead if
  * possible to avoid a race between the ownership / permission check and
  * the actual open().
  */
@@ -95,8 +104,9 @@
 	uid_t root, arbitrator;
 	char pathbuf[PATH_MAX];
 	struct stat sb;
-	int len, serrno;
+	int len, serrno, tip;
=20
+	tip =3D 1;
 	root =3D 0;
 	arbitrator =3D geteuid();
 	if (realpath(path, pathbuf) =3D=3D NULL)
@@ -111,6 +121,12 @@
 			}
 			return (-1);
 		}
+		if (tip && !S_ISREG(sb.st_mode)) {
+			openpam_log(PAM_LOG_ERROR,
+			    "%s: not a regular file", pathbuf);
+			errno =3D EINVAL;
+			return (-1);
+		}
 		if ((sb.st_uid !=3D root && sb.st_uid !=3D arbitrator) ||
 		    (sb.st_mode & (S_IWGRP|S_IWOTH)) !=3D 0) {
 			openpam_log(PAM_LOG_ERROR,
@@ -120,6 +136,7 @@
 		}
 		while (--len > 0 && pathbuf[len] !=3D '/')
 			pathbuf[len] =3D '\0';
+		tip =3D 0;
 	}
 	return (0);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_confi=
gure.c
--- a/head/contrib/openpam/lib/openpam_configure.c	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/openpam/lib/openpam_configure.c	Wed Jul 25 16:21:35 2012=
 +0300
@@ -1,6 +1,6 @@
 /*-
  * Copyright (c) 2001-2003 Networks Associates Technology, Inc.
- * Copyright (c) 2004-2011 Dag-Erling Sm=C3=B8rgrav
+ * Copyright (c) 2004-2012 Dag-Erling Sm=C3=B8rgrav
  * All rights reserved.
  *
  * This software was developed for the FreeBSD Project by ThinkSec AS and
@@ -32,13 +32,15 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_configure.c 500 2011-11-22 12:07:03Z des $
+ * $Id: openpam_configure.c 612 2012-05-26 23:02:55Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
=20
+#include <sys/param.h>
+
 #include <ctype.h>
 #include <errno.h>
 #include <stdio.h>
@@ -48,389 +50,183 @@
 #include <security/pam_appl.h>
=20
 #include "openpam_impl.h"
-#include "openpam_strlcmp.h"
+#include "openpam_ctype.h"
+#include "openpam_strlcat.h"
+#include "openpam_strlcpy.h"
=20
 static int openpam_load_chain(pam_handle_t *, const char *, pam_facility_t=
);
=20
 /*
- * Evaluates to non-zero if the argument is a linear whitespace character.
- */
-#define is_lws(ch)				\
-	(ch =3D=3D ' ' || ch =3D=3D '\t')
-
-/*
- * Evaluates to non-zero if the argument is a printable ASCII character.
- * Assumes that the execution character set is a superset of ASCII.
- */
-#define is_p(ch) \
-	(ch >=3D '!' && ch <=3D '~')
-
-/*
- * Returns non-zero if the argument belongs to the POSIX Portable Filename
- * Character Set.  Assumes that the execution character set is a superset
- * of ASCII.
- */
-#define is_pfcs(ch)				\
-	((ch >=3D '0' && ch <=3D '9') ||		\
-	 (ch >=3D 'A' && ch <=3D 'Z') ||		\
-	 (ch >=3D 'a' && ch <=3D 'z') ||		\
-	 ch =3D=3D '.' || ch =3D=3D '_' || ch =3D=3D '-')
-
-/*
- * Parse the service name.
+ * Validate a service name.
  *
- * Returns the length of the service name, or 0 if the end of the string
- * was reached or a disallowed non-whitespace character was encountered.
- *
- * If parse_service_name() is successful, it updates *service to point to
- * the first character of the service name and *line to point one
- * character past the end.  If it reaches the end of the string, it
- * updates *line to point to the terminating NUL character and leaves
- * *service unmodified.  In all other cases, it leaves both *line and
- * *service unmodified.
- *
- * Allowed characters are all characters in the POSIX portable filename
- * character set.
+ * Returns a non-zero value if the argument points to a NUL-terminated
+ * string consisting entirely of characters in the POSIX portable filename
+ * character set, excluding the path separator character.
  */
 static int
-parse_service_name(char **line, char **service)
+valid_service_name(const char *name)
 {
-	char *b, *e;
+	const char *p;
=20
-	for (b =3D *line; *b && is_lws(*b); ++b)
-		/* nothing */ ;
-	if (!*b) {
-		*line =3D b;
-		return (0);
+	if (OPENPAM_FEATURE(RESTRICT_SERVICE_NAME)) {
+		/* path separator not allowed */
+		for (p =3D name; *p !=3D '\0'; ++p)
+			if (!is_pfcs(*p))
+				return (0);
+	} else {
+		/* path separator allowed */
+		for (p =3D name; *p !=3D '\0'; ++p)
+			if (!is_pfcs(*p) && *p !=3D '/')
+				return (0);
 	}
-	for (e =3D b; *e && !is_lws(*e); ++e)
-		if (!is_pfcs(*e))
-			return (0);
-	if (e =3D=3D b)
-		return (0);
-	*line =3D e;
-	*service =3D b;
-	return (e - b);
+	return (1);
 }
=20
 /*
  * Parse the facility name.
  *
- * Returns the corresponding pam_facility_t value, or -1 if the end of the
- * string was reached, a disallowed non-whitespace character was
- * encountered, or the first word was not a recognized facility name.
- *
- * If parse_facility_name() is successful, it updates *line to point one
- * character past the end of the facility name.  If it reaches the end of
- * the string, it updates *line to point to the terminating NUL character.
- * In all other cases, it leaves *line unmodified.
+ * Returns the corresponding pam_facility_t value, or -1 if the argument
+ * is not a valid facility name.
  */
 static pam_facility_t
-parse_facility_name(char **line)
+parse_facility_name(const char *name)
 {
-	char *b, *e;
 	int i;
=20
-	for (b =3D *line; *b && is_lws(*b); ++b)
-		/* nothing */ ;
-	if (!*b) {
-		*line =3D b;
-		return ((pam_facility_t)-1);
-	}
-	for (e =3D b; *e && !is_lws(*e); ++e)
-		/* nothing */ ;
-	if (e =3D=3D b)
-		return ((pam_facility_t)-1);
 	for (i =3D 0; i < PAM_NUM_FACILITIES; ++i)
-		if (strlcmp(pam_facility_name[i], b, e - b) =3D=3D 0)
-			break;
-	if (i =3D=3D PAM_NUM_FACILITIES)
-		return ((pam_facility_t)-1);
-	*line =3D e;
-	return (i);
-}
-
-/*
- * Parse the word "include".
- *
- * If the next word on the line is "include", parse_include() updates
- * *line to point one character past "include" and returns 1.  Otherwise,
- * it leaves *line unmodified and returns 0.
- */
-static int
-parse_include(char **line)
-{
-	char *b, *e;
-
-	for (b =3D *line; *b && is_lws(*b); ++b)
-		/* nothing */ ;
-	if (!*b) {
-		*line =3D b;
-		return (-1);
-	}
-	for (e =3D b; *e && !is_lws(*e); ++e)
-		/* nothing */ ;
-	if (e =3D=3D b)
-		return (0);
-	if (strlcmp("include", b, e - b) !=3D 0)
-		return (0);
-	*line =3D e;
-	return (1);
+		if (strcmp(pam_facility_name[i], name) =3D=3D 0)
+			return (i);
+	return ((pam_facility_t)-1);
 }
=20
 /*
  * Parse the control flag.
  *
- * Returns the corresponding pam_control_t value, or -1 if the end of the
- * string was reached, a disallowed non-whitespace character was
- * encountered, or the first word was not a recognized control flag.
- *
- * If parse_control_flag() is successful, it updates *line to point one
- * character past the end of the control flag.  If it reaches the end of
- * the string, it updates *line to point to the terminating NUL character.
- * In all other cases, it leaves *line unmodified.
+ * Returns the corresponding pam_control_t value, or -1 if the argument is
+ * not a valid control flag name.
  */
 static pam_control_t
-parse_control_flag(char **line)
+parse_control_flag(const char *name)
 {
-	char *b, *e;
 	int i;
=20
-	for (b =3D *line; *b && is_lws(*b); ++b)
-		/* nothing */ ;
-	if (!*b) {
-		*line =3D b;
-		return ((pam_control_t)-1);
-	}
-	for (e =3D b; *e && !is_lws(*e); ++e)
-		/* nothing */ ;
-	if (e =3D=3D b)
-		return ((pam_control_t)-1);
 	for (i =3D 0; i < PAM_NUM_CONTROL_FLAGS; ++i)
-		if (strlcmp(pam_control_flag_name[i], b, e - b) =3D=3D 0)
-			break;
-	if (i =3D=3D PAM_NUM_CONTROL_FLAGS)
-		return ((pam_control_t)-1);
-	*line =3D e;
-	return (i);
+		if (strcmp(pam_control_flag_name[i], name) =3D=3D 0)
+			return (i);
+	return ((pam_control_t)-1);
 }
=20
 /*
- * Parse a file name.
+ * Validate a file name.
  *
- * Returns the length of the file name, or 0 if the end of the string was
- * reached or a disallowed non-whitespace character was encountered.
- *
- * If parse_filename() is successful, it updates *filename to point to the
- * first character of the filename and *line to point one character past
- * the end.  If it reaches the end of the string, it updates *line to
- * point to the terminating NUL character and leaves *filename unmodified.
- * In all other cases, it leaves both *line and *filename unmodified.
- *
- * Allowed characters are all characters in the POSIX portable filename
- * character set, plus the path separator (forward slash).
+ * Returns a non-zero value if the argument points to a NUL-terminated
+ * string consisting entirely of characters in the POSIX portable filename
+ * character set, including the path separator character.
  */
 static int
-parse_filename(char **line, char **filename)
+valid_module_name(const char *name)
 {
-	char *b, *e;
+	const char *p;
=20
-	for (b =3D *line; *b && is_lws(*b); ++b)
-		/* nothing */ ;
-	if (!*b) {
-		*line =3D b;
-		return (0);
+	if (OPENPAM_FEATURE(RESTRICT_MODULE_NAME)) {
+		/* path separator not allowed */
+		for (p =3D name; *p !=3D '\0'; ++p)
+			if (!is_pfcs(*p))
+				return (0);
+	} else {
+		/* path separator allowed */
+		for (p =3D name; *p !=3D '\0'; ++p)
+			if (!is_pfcs(*p) && *p !=3D '/')
+				return (0);
 	}
-	for (e =3D b; *e && !is_lws(*e); ++e)
-		if (!is_pfcs(*e) && *e !=3D '/')
-			return (0);
-	if (e =3D=3D b)
-		return (0);
-	*line =3D e;
-	*filename =3D b;
-	return (e - b);
-}
-
-/*
- * Parse an option.
- *
- * Returns a dynamically allocated string containing the next module
- * option, or NULL if the end of the string was reached or a disallowed
- * non-whitespace character was encountered.
- *
- * If parse_option() is successful, it updates *line to point one
- * character past the end of the option.  If it reaches the end of the
- * string, it updates *line to point to the terminating NUL character.  In
- * all other cases, it leaves *line unmodified.
- *
- * If parse_option() fails to allocate memory, it will return NULL and set
- * errno to a non-zero value.
- *
- * Allowed characters for option names are all characters in the POSIX
- * portable filename character set.  Allowed characters for option values
- * are any printable non-whitespace characters.  The option value may be
- * quoted in either single or double quotes, in which case space
- * characters and whichever quote character was not used are allowed.
- * Note that the entire value must be quoted, not just part of it.
- */
-static char *
-parse_option(char **line)
-{
-	char *nb, *ne, *vb, *ve;
-	unsigned char q =3D 0;
-	char *option;
-	size_t size;
-
-	errno =3D 0;
-	for (nb =3D *line; *nb && is_lws(*nb); ++nb)
-		/* nothing */ ;
-	if (!*nb) {
-		*line =3D nb;
-		return (NULL);
-	}
-	for (ne =3D nb; *ne && !is_lws(*ne) && *ne !=3D '=3D'; ++ne)
-		if (!is_pfcs(*ne))
-			return (NULL);
-	if (ne =3D=3D nb)
-		return (NULL);
-	if (*ne =3D=3D '=3D') {
-		vb =3D ne + 1;
-		if (*vb =3D=3D '"' || *vb =3D=3D '\'')
-			q =3D *vb++;
-		for (ve =3D vb;
-		     *ve && *ve !=3D q && (is_p(*ve) || (q && is_lws(*ve)));
-		     ++ve)
-			/* nothing */ ;
-		if (q && *ve !=3D q)
-			/* non-printable character or missing endquote */
-			return (NULL);
-		if (q && *(ve + 1) && !is_lws(*(ve + 1)))
-			/* garbage after value */
-			return (NULL);
-	} else {
-		vb =3D ve =3D ne;
-	}
-	size =3D (ne - nb) + 1;
-	if (ve > vb)
-		size +=3D (ve - vb) + 1;
-	if ((option =3D malloc(size)) =3D=3D NULL)
-		return (NULL);
-	strncpy(option, nb, ne - nb);
-	if (ve > vb) {
-		option[ne - nb] =3D '=3D';
-		strncpy(option + (ne - nb) + 1, vb, ve - vb);
-	}
-	option[size - 1] =3D '\0';
-	*line =3D q ? ve + 1 : ve;
-	return (option);
-}
-
-/*
- * Consume trailing whitespace.
- *
- * If there are no non-whitespace characters left on the line, parse_eol()
- * updates *line to point at the terminating NUL character and returns 0.
- * Otherwise, it leaves *line unmodified and returns a non-zero value.
- */
-static int
-parse_eol(char **line)
-{
-	char *p;
-
-	for (p =3D *line; *p && is_lws(*p); ++p)
-		/* nothing */ ;
-	if (*p)
-		return ((unsigned char)*p);
-	*line =3D p;
-	return (0);
+	return (1);
 }
=20
 typedef enum { pam_conf_style, pam_d_style } openpam_style_t;
=20
 /*
  * Extracts given chains from a policy file.
+ *
+ * Returns the number of policy entries which were found for the specified
+ * service and facility, or -1 if a system error occurred or a syntax
+ * error was encountered.
  */
 static int
 openpam_parse_chain(pam_handle_t *pamh,
 	const char *service,
 	pam_facility_t facility,
+	FILE *f,
 	const char *filename,
 	openpam_style_t style)
 {
 	pam_chain_t *this, **next;
 	pam_facility_t fclt;
 	pam_control_t ctlf;
-	char *line0, *line, *str, *name;
-	char *option, **optv;
-	int len, lineno, ret;
-	FILE *f;
+	char *name, *servicename, *modulename;
+	int count, lineno, ret, serrno;
+	char **wordv, *word;
+	int i, wordc;
=20
-	if ((f =3D fopen(filename, "r")) =3D=3D NULL) {
-		openpam_log(errno =3D=3D ENOENT ? PAM_LOG_DEBUG : PAM_LOG_NOTICE,
-		    "%s: %m", filename);
-		return (PAM_SUCCESS);
-	}
-	if (openpam_check_desc_owner_perms(filename, fileno(f)) !=3D 0) {
-		fclose(f);
-		return (PAM_SYSTEM_ERR);
-	}
+	count =3D 0;
 	this =3D NULL;
 	name =3D NULL;
 	lineno =3D 0;
-	while ((line0 =3D line =3D openpam_readline(f, &lineno, NULL)) !=3D NULL)=
 {
-		/* get service name if necessary */
-		if (style =3D=3D pam_conf_style) {
-			if ((len =3D parse_service_name(&line, &str)) =3D=3D 0) {
-				openpam_log(PAM_LOG_NOTICE,
-				    "%s(%d): invalid service name (ignored)",
-				    filename, lineno);
-				FREE(line0);
-				continue;
-			}
-			if (strlcmp(service, str, len) !=3D 0) {
-				FREE(line0);
-				continue;
-			}
+	wordc =3D 0;
+	wordv =3D NULL;
+	while ((wordv =3D openpam_readlinev(f, &lineno, &wordc)) !=3D NULL) {
+		/* blank line? */
+		if (wordc =3D=3D 0) {
+			FREEV(wordc, wordv);
+			continue;
+		}
+		i =3D 0;
+
+		/* check service name if necessary */
+		if (style =3D=3D pam_conf_style &&
+		    strcmp(wordv[i++], service) !=3D 0) {
+			FREEV(wordc, wordv);
+			continue;
 		}
=20
-		/* get facility name */
-		if ((fclt =3D parse_facility_name(&line)) =3D=3D (pam_facility_t)-1) {
+		/* check facility name */
+		if ((word =3D wordv[i++]) =3D=3D NULL ||
+		    (fclt =3D parse_facility_name(word)) =3D=3D (pam_facility_t)-1) {
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid facility",
 			    filename, lineno);
 			goto fail;
 		}
 		if (facility !=3D fclt && facility !=3D PAM_FACILITY_ANY) {
-			FREE(line0);
+			FREEV(wordc, wordv);
 			continue;
 		}
=20
 		/* check for "include" */
-		if (parse_include(&line)) {
-			if ((len =3D parse_service_name(&line, &str)) =3D=3D 0) {
+		if ((word =3D wordv[i++]) !=3D NULL &&
+		    strcmp(word, "include") =3D=3D 0) {
+			if ((servicename =3D wordv[i++]) =3D=3D NULL ||
+			    !valid_service_name(servicename)) {
 				openpam_log(PAM_LOG_ERROR,
-				    "%s(%d): missing or invalid filename",
+				    "%s(%d): missing or invalid service name",
 				    filename, lineno);
 				goto fail;
 			}
-			if ((name =3D strndup(str, len)) =3D=3D NULL)
-				goto syserr;
-			if (parse_eol(&line) !=3D 0) {
+			if (wordv[i] !=3D NULL) {
 				openpam_log(PAM_LOG_ERROR,
 				    "%s(%d): garbage at end of line",
 				    filename, lineno);
 				goto fail;
 			}
-			ret =3D openpam_load_chain(pamh, name, fclt);
-			FREE(name);
-			if (ret !=3D PAM_SUCCESS)
+			ret =3D openpam_load_chain(pamh, servicename, fclt);
+			FREEV(wordc, wordv);
+			if (ret < 0)
 				goto fail;
-			FREE(line0);
 			continue;
 		}
=20
 		/* get control flag */
-		if ((ctlf =3D parse_control_flag(&line)) =3D=3D (pam_control_t)-1) {
+		if (word =3D=3D NULL || /* same word we compared to "include" */
+		    (ctlf =3D parse_control_flag(word)) =3D=3D (pam_control_t)-1) {
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid control flag",
 			    filename, lineno);
@@ -438,45 +234,41 @@
 		}
=20
 		/* get module name */
-		if ((len =3D parse_filename(&line, &str)) =3D=3D 0) {
+		if ((modulename =3D wordv[i++]) =3D=3D NULL ||
+		    !valid_module_name(modulename)) {
 			openpam_log(PAM_LOG_ERROR,
 			    "%s(%d): missing or invalid module name",
 			    filename, lineno);
 			goto fail;
 		}
-		if ((name =3D strndup(str, len)) =3D=3D NULL)
-			goto syserr;
=20
 		/* allocate new entry */
 		if ((this =3D calloc(1, sizeof *this)) =3D=3D NULL)
 			goto syserr;
 		this->flag =3D ctlf;
=20
-		/* get module options */
-		if ((this->optv =3D malloc(sizeof *optv)) =3D=3D NULL)
-			goto syserr;
-		this->optc =3D 0;
-		while ((option =3D parse_option(&line)) !=3D NULL) {
-			optv =3D realloc(this->optv,
-			    (this->optc + 2) * sizeof *optv);
-			if (optv =3D=3D NULL)
-				goto syserr;
-			this->optv =3D optv;
-			this->optv[this->optc++] =3D option;
+		/* load module */
+		if ((this->module =3D openpam_load_module(modulename)) =3D=3D NULL)
+			goto fail;
+
+		/*
+		 * The remaining items in wordv are the module's
+		 * arguments.  We could set this->optv =3D wordv + i, but
+		 * then free(this->optv) wouldn't work.  Instead, we free
+		 * the words we've already consumed, shift the rest up,
+		 * and clear the tail end of the array.
+		 */
+		this->optc =3D wordc - i;
+		for (i =3D 0; i < wordc - this->optc; ++i) {
+			FREE(wordv[i]);
 		}
-		this->optv[this->optc] =3D NULL;
-		if (*line !=3D '\0') {
-			openpam_log(PAM_LOG_ERROR,
-			    "%s(%d): syntax error in module options",
-			    filename, lineno);
-			goto fail;
+		for (i =3D 0; i < this->optc; ++i) {
+			wordv[i] =3D wordv[wordc - this->optc + i];
+			wordv[wordc - this->optc + i] =3D NULL;
 		}
-
-		/* load module */
-		this->module =3D openpam_load_module(name);
-		FREE(name);
-		if (this->module =3D=3D NULL)
-			goto fail;
+		this->optv =3D wordv;
+		wordv =3D NULL;
+		wordc =3D 0;
=20
 		/* hook it up */
 		for (next =3D &pamh->chains[fclt]; *next !=3D NULL;
@@ -484,27 +276,36 @@
 			/* nothing */ ;
 		*next =3D this;
 		this =3D NULL;
-
-		/* next please... */
-		FREE(line0);
+		++count;
 	}
+	/*
+	 * The loop ended because openpam_readword() returned NULL, which
+	 * can happen for four different reasons: an I/O error (ferror(f)
+	 * is true), a memory allocation failure (ferror(f) is false,
+	 * errno is non-zero)
+	 */
+	if (ferror(f) || errno !=3D 0)
+		goto syserr;
 	if (!feof(f))
-		goto syserr;
+		goto fail;
 	fclose(f);
-	return (PAM_SUCCESS);
+	return (count);
 syserr:
+	serrno =3D errno;
 	openpam_log(PAM_LOG_ERROR, "%s: %m", filename);
+	errno =3D serrno;
+	/* fall through */
 fail:
-	if (this && this->optc) {
-		while (this->optc--)
-			FREE(this->optv[this->optc]);
-		FREE(this->optv);
-	}
+	serrno =3D errno;
+	if (this && this->optc && this->optv)
+		FREEV(this->optc, this->optv);
 	FREE(this);
-	FREE(line);
+	FREEV(wordc, wordv);
+	FREE(wordv);
 	FREE(name);
 	fclose(f);
-	return (PAM_SYSTEM_ERR);
+	errno =3D serrno;
+	return (-1);
 }
=20
 static const char *openpam_policy_path[] =3D {
@@ -516,44 +317,110 @@
 };
=20
 /*
+ * Read the specified chains from the specified file.
+ *
+ * Returns 0 if the file exists but does not contain any matching lines.
+ *
+ * Returns -1 and sets errno to ENOENT if the file does not exist.
+ *
+ * Returns -1 and sets errno to some other non-zero value if the file
+ * exists but is unsafe or unreadable, or an I/O error occurs.
+ */
+static int
+openpam_load_file(pam_handle_t *pamh,
+	const char *service,
+	pam_facility_t facility,
+	const char *filename,
+	openpam_style_t style)
+{
+	FILE *f;
+	int ret, serrno;
+
+	/* attempt to open the file */
+	if ((f =3D fopen(filename, "r")) =3D=3D NULL) {
+		serrno =3D errno;
+		openpam_log(errno =3D=3D ENOENT ? PAM_LOG_DEBUG : PAM_LOG_ERROR,
+		    "%s: %m", filename);
+		errno =3D serrno;
+		RETURNN(-1);
+	} else {
+		openpam_log(PAM_LOG_DEBUG, "found %s", filename);
+	}
+
+	/* verify type, ownership and permissions */
+	if (OPENPAM_FEATURE(VERIFY_POLICY_FILE) &&
+	    openpam_check_desc_owner_perms(filename, fileno(f)) !=3D 0) {
+		/* already logged the cause */
+		serrno =3D errno;
+		fclose(f);
+		errno =3D serrno;
+		RETURNN(-1);
+	}
+
+	/* parse the file */
+	ret =3D openpam_parse_chain(pamh, service, facility,
+	    f, filename, style);
+	RETURNN(ret);
+}
+
+/*
  * Locates the policy file for a given service and reads the given chains
  * from it.
+ *
+ * Returns the number of policy entries which were found for the specified
+ * service and facility, or -1 if a system error occurred or a syntax
+ * error was encountered.
  */
 static int
 openpam_load_chain(pam_handle_t *pamh,
 	const char *service,
 	pam_facility_t facility)
 {
-	const char **path;
-	char *filename;
+	const char *p, **path;
+	char filename[PATH_MAX];
 	size_t len;
+	openpam_style_t style;
 	int ret;
=20
-	/* don't allow to escape from policy_path */
-	if (strchr(service, '/')) {
-		openpam_log(PAM_LOG_ERROR, "invalid service name: %s",
-		    service);
-		return (-PAM_SYSTEM_ERR);
+	ENTERS(facility < 0 ? "any" : pam_facility_name[facility]);
+
+	/* either absolute or relative to cwd */
+	if (strchr(service, '/') !=3D NULL) {
+		if ((p =3D strrchr(service, '.')) !=3D NULL && strcmp(p, ".conf") =3D=3D=
 0)
+			style =3D pam_conf_style;
+		else
+			style =3D pam_d_style;
+		ret =3D openpam_load_file(pamh, service, facility,
+		    service, style);
+		RETURNN(ret);
 	}
=20
+	/* search standard locations */
 	for (path =3D openpam_policy_path; *path !=3D NULL; ++path) {
-		len =3D strlen(*path);
-		if ((*path)[len - 1] =3D=3D '/') {
-			if (asprintf(&filename, "%s%s", *path, service) < 0) {
-				openpam_log(PAM_LOG_ERROR, "asprintf(): %m");
-				return (PAM_BUF_ERR);
+		/* construct filename */
+		len =3D strlcpy(filename, *path, sizeof filename);
+		if (filename[len - 1] =3D=3D '/') {
+			len =3D strlcat(filename, service, sizeof filename);
+			if (len >=3D sizeof filename) {
+				errno =3D ENAMETOOLONG;
+				RETURNN(-1);
 			}
-			ret =3D openpam_parse_chain(pamh, service, facility,
-			    filename, pam_d_style);
-			FREE(filename);
+			style =3D pam_d_style;
 		} else {
-			ret =3D openpam_parse_chain(pamh, service, facility,
-			    *path, pam_conf_style);
+			style =3D pam_conf_style;
 		}
-		if (ret !=3D PAM_SUCCESS)
-			return (ret);
+		ret =3D openpam_load_file(pamh, service, facility,
+		    filename, style);
+		/* the file exists, but an error occurred */
+		if (ret =3D=3D -1 && errno !=3D ENOENT)
+			RETURNN(ret);
+		/* in pam.d style, an empty file counts as a hit */
+		if (ret =3D=3D 0 && style =3D=3D pam_d_style)
+			RETURNN(ret);
 	}
-	return (PAM_SUCCESS);
+
+	/* no hit */
+	RETURNN(0);
 }
=20
 /*
@@ -567,25 +434,27 @@
 	const char *service)
 {
 	pam_facility_t fclt;
-	const char *p;
+	int serrno;
=20
-	for (p =3D service; *p; ++p)
-		if (!is_pfcs(*p))
-			return (PAM_SYSTEM_ERR);
-
-	if (openpam_load_chain(pamh, service, PAM_FACILITY_ANY) !=3D PAM_SUCCESS)
+	ENTERS(service);
+	if (!valid_service_name(service)) {
+		openpam_log(PAM_LOG_ERROR, "invalid service name");
+		RETURNC(PAM_SYSTEM_ERR);
+	}
+	if (openpam_load_chain(pamh, service, PAM_FACILITY_ANY) < 0)
 		goto load_err;
-
 	for (fclt =3D 0; fclt < PAM_NUM_FACILITIES; ++fclt) {
 		if (pamh->chains[fclt] !=3D NULL)
 			continue;
-		if (openpam_load_chain(pamh, PAM_OTHER, fclt) !=3D PAM_SUCCESS)
+		if (openpam_load_chain(pamh, PAM_OTHER, fclt) < 0)
 			goto load_err;
 	}
-	return (PAM_SUCCESS);
+	RETURNC(PAM_SUCCESS);
 load_err:
+	serrno =3D errno;
 	openpam_clear_chains(pamh->chains);
-	return (PAM_SYSTEM_ERR);
+	errno =3D serrno;
+	RETURNC(PAM_SYSTEM_ERR);
 }
=20
 /*
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_const=
ants.h
--- a/head/contrib/openpam/lib/openpam_constants.h	Wed Jul 25 16:20:13 2012=
 +0300
+++ b/head/contrib/openpam/lib/openpam_constants.h	Wed Jul 25 16:21:35 2012=
 +0300
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,11 +27,11 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_constants.h 491 2011-11-12 00:12:32Z des $
+ * $Id: openpam_constants.h 606 2012-04-20 11:06:38Z des $
  */
=20
-#ifndef OPENPAM_CONSTANTS_INCLUDED
-#define OPENPAM_CONSTANTS_INCLUDED
+#ifndef OPENPAM_CONSTANTS_H_INCLUDED
+#define OPENPAM_CONSTANTS_H_INCLUDED
=20
 extern const char *pam_err_name[PAM_NUM_ERRORS];
 extern const char *pam_item_name[PAM_NUM_ITEMS];
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_ctype=
.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_ctype.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_ctype.h 578 2012-04-06 00:45:59Z des $
+ */
+
+#ifndef OPENPAM_CTYPE_H_INCLUDED
+#define OPENPAM_CTYPE_H_INCLUDED
+
+/*
+ * Evaluates to non-zero if the argument is a linear whitespace character.
+ * For the purposes of this macro, the definition of linear whitespace is
+ * extended to include the form feed and carraige return characters.
+ */
+#define is_lws(ch)				\
+	(ch =3D=3D ' ' || ch =3D=3D '\t' || ch =3D=3D '\f' || ch =3D=3D '\r')
+
+/*
+ * Evaluates to non-zero if the argument is a whitespace character.
+ */
+#define is_ws(ch)				\
+	(is_lws(ch) || ch =3D=3D '\n')
+
+/*
+ * Evaluates to non-zero if the argument is a printable ASCII character.
+ * Assumes that the execution character set is a superset of ASCII.
+ */
+#define is_p(ch) \
+	(ch >=3D '!' && ch <=3D '~')
+
+/*
+ * Returns non-zero if the argument belongs to the POSIX Portable Filename
+ * Character Set.  Assumes that the execution character set is a superset
+ * of ASCII.
+ */
+#define is_pfcs(ch)				\
+	((ch >=3D '0' && ch <=3D '9') ||		\
+	 (ch >=3D 'A' && ch <=3D 'Z') ||		\
+	 (ch >=3D 'a' && ch <=3D 'z') ||		\
+	 ch =3D=3D '.' || ch =3D=3D '_' || ch =3D=3D '-')
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_debug=
.h
--- a/head/contrib/openpam/lib/openpam_debug.h	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/lib/openpam_debug.h	Wed Jul 25 16:21:35 2012 +03=
00
@@ -32,60 +32,68 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_debug.h 491 2011-11-12 00:12:32Z des $
+ * $Id: openpam_debug.h 606 2012-04-20 11:06:38Z des $
  */
=20
-#ifndef OPENPAM_DEBUG_INCLUDED
-#define OPENPAM_DEBUG_INCLUDED
+#ifndef OPENPAM_DEBUG_H_INCLUDED
+#define OPENPAM_DEBUG_H_INCLUDED
=20
 #ifdef OPENPAM_DEBUG
-#define ENTER() openpam_log(PAM_LOG_DEBUG, "entering")
+#define ENTER() openpam_log(PAM_LOG_LIBDEBUG, "entering")
 #define ENTERI(i) do { \
 	int i_ =3D (i); \
 	if (i_ > 0 && i_ < PAM_NUM_ITEMS) \
-		openpam_log(PAM_LOG_DEBUG, "entering: %s", pam_item_name[i_]); \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: %s", pam_item_name[i_]); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "entering: %d", i_); \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", i_); \
 } while (0)
 #define ENTERN(n) do { \
 	int n_ =3D (n); \
-	openpam_log(PAM_LOG_DEBUG, "entering: %d", n_); \
+	openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", n_); \
 } while (0)
 #define ENTERS(s) do { \
 	const char *s_ =3D (s); \
 	if (s_ =3D=3D NULL) \
-		openpam_log(PAM_LOG_DEBUG, "entering: NULL"); \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "entering: '%s'", s_); \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: '%s'", s_); \
 } while (0)
-#define	RETURNV() openpam_log(PAM_LOG_DEBUG, "returning")
+#define ENTERF(f) do { \
+	int f_ =3D (f); \
+	if (f_ >=3D 0 && f_ <=3D OPENPAM_NUM_FEATURES) \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: %s", \
+		    openpam_features[f_].name); \
+	else \
+		openpam_log(PAM_LOG_LIBDEBUG, "entering: %d", f_); \
+} while (0)
+#define	RETURNV() openpam_log(PAM_LOG_LIBDEBUG, "returning")
 #define RETURNC(c) do { \
 	int c_ =3D (c); \
 	if (c_ >=3D 0 && c_ < PAM_NUM_ERRORS) \
-		openpam_log(PAM_LOG_DEBUG, "returning %s", pam_err_name[c_]); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning %s", pam_err_name[c_]); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning %d!", c_); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning %d!", c_); \
 	return (c_); \
 } while (0)
 #define	RETURNN(n) do { \
 	int n_ =3D (n); \
-	openpam_log(PAM_LOG_DEBUG, "returning %d", n_); \
+	openpam_log(PAM_LOG_LIBDEBUG, "returning %d", n_); \
 	return (n_); \
 } while (0)
 #define	RETURNP(p) do { \
-	const void *p_ =3D (p); \
+	void *p_ =3D (p); \
 	if (p_ =3D=3D NULL) \
-		openpam_log(PAM_LOG_DEBUG, "returning NULL"); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning %p", p_); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning %p", p_); \
 	return (p_); \
 } while (0)
 #define	RETURNS(s) do { \
 	const char *s_ =3D (s); \
 	if (s_ =3D=3D NULL) \
-		openpam_log(PAM_LOG_DEBUG, "returning NULL"); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning '%s'", s_); \
+		openpam_log(PAM_LOG_LIBDEBUG, "returning '%s'", s_); \
 	return (s_); \
 } while (0)
 #else
@@ -93,6 +101,7 @@
 #define ENTERI(i)
 #define ENTERN(n)
 #define ENTERS(s)
+#define ENTERF(f)
 #define RETURNV() return
 #define RETURNC(c) return (c)
 #define RETURNN(n) return (n)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_dynam=
ic.c
--- a/head/contrib/openpam/lib/openpam_dynamic.c	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/lib/openpam_dynamic.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_dynamic.c 502 2011-12-18 13:59:22Z des $
+ * $Id: openpam_dynamic.c 607 2012-04-20 11:09:37Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -40,6 +40,7 @@
 #endif
=20
 #include <dlfcn.h>
+#include <fcntl.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -60,15 +61,50 @@
  * Perform sanity checks and attempt to load a module
  */
=20
+#ifdef HAVE_FDLOPEN
 static void *
 try_dlopen(const char *modfn)
 {
+	void *dlh;
+	int fd;
=20
-	if (openpam_check_path_owner_perms(modfn) !=3D 0)
+	if ((fd =3D open(modfn, O_RDONLY)) < 0)
 		return (NULL);
-	return (dlopen(modfn, RTLD_NOW));
+	if (OPENPAM_FEATURE(VERIFY_MODULE_FILE) &&
+	    openpam_check_desc_owner_perms(modfn, fd) !=3D 0) {
+		close(fd);
+		return (NULL);
+	}
+	if ((dlh =3D fdlopen(fd, RTLD_NOW)) =3D=3D NULL) {
+		openpam_log(PAM_LOG_ERROR, "%s: %s", modfn, dlerror());
+		close(fd);
+		errno =3D 0;
+		return (NULL);
+	}
+	close(fd);
+	return (dlh);
 }
-   =20
+#else
+static void *
+try_dlopen(const char *modfn)
+{
+	int check_module_file;
+	void *dlh;
+
+	openpam_get_feature(OPENPAM_VERIFY_MODULE_FILE,
+	    &check_module_file);
+	if (check_module_file &&
+	    openpam_check_path_owner_perms(modfn) !=3D 0)
+		return (NULL);
+	if ((dlh =3D dlopen(modfn, RTLD_NOW)) =3D=3D NULL) {
+		openpam_log(PAM_LOG_ERROR, "%s: %s", modfn, dlerror());
+		errno =3D 0;
+		return (NULL);
+	}
+	return (dlh);
+}
+#endif
+
 /*
  * OpenPAM internal
  *
@@ -100,9 +136,6 @@
 		*strrchr(vpath, '.') =3D '\0';
 		dlh =3D try_dlopen(vpath);
 	}
-	serrno =3D errno;
-	FREE(vpath);
-	errno =3D serrno;
 	if (dlh =3D=3D NULL)
 		goto err;
 	if ((module =3D calloc(1, sizeof *module)) =3D=3D NULL)
@@ -112,19 +145,41 @@
 	module->dlh =3D dlh;
 	dlmodule =3D dlsym(dlh, "_pam_module");
 	for (i =3D 0; i < PAM_NUM_PRIMITIVES; ++i) {
-		module->func[i] =3D dlmodule ? dlmodule->func[i] :
-		    (pam_func_t)dlsym(dlh, pam_sm_func_name[i]);
-		if (module->func[i] =3D=3D NULL)
-			openpam_log(PAM_LOG_DEBUG, "%s: %s(): %s",
-			    path, pam_sm_func_name[i], dlerror());
+		if (dlmodule) {
+			module->func[i] =3D dlmodule->func[i];
+		} else {
+			module->func[i] =3D
+			    (pam_func_t)dlsym(dlh, pam_sm_func_name[i]);
+			/*
+			 * This openpam_log() call is a major source of
+			 * log spam, and the cases that matter are caught
+			 * and logged in openpam_dispatch().  This would
+			 * be less problematic if dlerror() returned an
+			 * error code so we could log an error only when
+			 * dlsym() failed for a reason other than "no such
+			 * symbol".
+			 */
+#if 0
+			if (module->func[i] =3D=3D NULL)
+				openpam_log(PAM_LOG_DEBUG, "%s: %s(): %s",
+				    path, pam_sm_func_name[i], dlerror());
+#endif
+		}
 	}
+	FREE(vpath);
 	return (module);
 buf_err:
+	serrno =3D errno;
 	if (dlh !=3D NULL)
 		dlclose(dlh);
 	FREE(module);
+	errno =3D serrno;
 err:
-	openpam_log(PAM_LOG_ERROR, "%m");
+	serrno =3D errno;
+	if (errno !=3D 0)
+		openpam_log(PAM_LOG_ERROR, "%s: %m", vpath);
+	FREE(vpath);
+	errno =3D serrno;
 	return (NULL);
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_featu=
res.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_features.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,69 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_features.c 608 2012-05-17 16:00:13Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <security/pam_appl.h>
+
+#include "openpam_impl.h"
+
+#define STRUCT_OPENPAM_FEATURE(name, descr, dflt)	\
+	[OPENPAM_##name] =3D {				\
+		"OPENPAM_" #name,			\
+		descr,					\
+		dflt					\
+	}
+
+struct openpam_feature openpam_features[OPENPAM_NUM_FEATURES] =3D {
+	STRUCT_OPENPAM_FEATURE(
+	    RESTRICT_SERVICE_NAME,
+	    "Disallow path separators in service names",
+	    1
+	),
+	STRUCT_OPENPAM_FEATURE(
+	    VERIFY_POLICY_FILE,
+	    "Verify ownership and permissions of policy files",
+	    1
+	),
+	STRUCT_OPENPAM_FEATURE(
+	    RESTRICT_MODULE_NAME,
+	    "Disallow path separators in module names",
+	    0
+	),
+	STRUCT_OPENPAM_FEATURE(
+	    VERIFY_MODULE_FILE,
+	    "Verify ownership and permissions of module files",
+	    1
+	),
+};
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_featu=
res.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_features.h	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id$
+ */
+
+#ifndef OPENPAM_FEATURES_H_INCLUDED
+#define OPENPAM_FEATURES_H_INCLUDED
+
+struct openpam_feature {
+	const char *name;
+	const char *desc;
+	int onoff;
+};
+
+extern struct openpam_feature openpam_features[OPENPAM_NUM_FEATURES];
+
+/* shortcut for internal use */
+#define OPENPAM_FEATURE(f) \
+	openpam_features[OPENPAM_##f].onoff
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_get_f=
eature.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_get_feature.c	Wed Jul 25 16:21:35 20=
12 +0300
@@ -0,0 +1,99 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_get_feature.c 608 2012-05-17 16:00:13Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <security/pam_appl.h>
+#include <security/openpam.h>
+
+#include "openpam_impl.h"
+
+/*
+ * OpenPAM extension
+ *
+ * Query the state of an optional feature.
+ */
+
+int
+openpam_get_feature(int feature, int *onoff)
+{
+
+	ENTERF(feature);
+	if (feature < 0 || feature >=3D OPENPAM_NUM_FEATURES)
+		RETURNC(PAM_SYMBOL_ERR);
+	*onoff =3D openpam_features[feature].onoff;
+	RETURNC(PAM_SUCCESS);
+}
+
+/*
+ * Error codes:
+ *
+ *	PAM_SYMBOL_ERR
+ */
+
+/**
+ * EXPERIMENTAL
+ *
+ * The =3Dopenpam_get_feature function stores the current state of the
+ * specified feature in the variable pointed to by its =3Donoff argument.
+ *
+ * The following features are recognized:
+ *
+ *	=3DOPENPAM_RESTRICT_SERVICE_NAME:
+ *		Disallow path separators in service names.
+ *		This feature is enabled by default.
+ *		Disabling it allows the application to specify the path to
+ *		the desired policy file directly.
+ *
+ *	=3DOPENPAM_VERIFY_POLICY_FILE:
+ *		Verify the ownership and permissions of the policy file
+ *		and the path leading up to it.
+ *		This feature is enabled by default.
+ *
+ *	=3DOPENPAM_RESTRICT_MODULE_NAME:
+ *		Disallow path separators in module names.
+ *		This feature is disabled by default.
+ *		Enabling it prevents the use of modules in non-standard
+ *		locations.
+ *
+ *	=3DOPENPAM_VERIFY_MODULE_FILE:
+ *		Verify the ownership and permissions of each loadable
+ *		module and the path leading up to it.
+ *		This feature is enabled by default.
+ *
+ *
+ * >openpam_set_feature
+ *
+ * AUTHOR DES
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_get_o=
ption.c
--- a/head/contrib/openpam/lib/openpam_get_option.c	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/openpam/lib/openpam_get_option.c	Wed Jul 25 16:21:35 201=
2 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_get_option.c 482 2011-11-03 16:33:02Z des $
+ * $Id: openpam_get_option.c 531 2012-03-31 14:24:37Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -44,7 +44,6 @@
 #include <string.h>
=20
 #include <security/pam_appl.h>
-#include <security/openpam.h>
=20
 #include "openpam_impl.h"
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_impl.h
--- a/head/contrib/openpam/lib/openpam_impl.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/openpam_impl.h	Wed Jul 25 16:21:35 2012 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_impl.h 499 2011-11-22 11:51:50Z des $
+ * $Id: openpam_impl.h 594 2012-04-14 14:18:41Z des $
  */
=20
 #ifndef OPENPAM_IMPL_H_INCLUDED
@@ -157,9 +157,23 @@
 #endif
 pam_module_t	*openpam_dynamic(const char *);
=20
-#define	FREE(p) do { free((p)); (p) =3D NULL; } while (0)
+#define	FREE(p)					\
+	do {					\
+		free(p);			\
+		(p) =3D NULL;			\
+	} while (0)
+
+#define FREEV(c, v)				\
+	do {					\
+		while (c) {			\
+			--(c);			\
+			FREE((v)[(c)]);		\
+		}				\
+		FREE(v);			\
+	} while (0)
=20
 #include "openpam_constants.h"
 #include "openpam_debug.h"
+#include "openpam_features.h"
=20
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_load.c
--- a/head/contrib/openpam/lib/openpam_load.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/openpam_load.c	Wed Jul 25 16:21:35 2012 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_load.c 491 2011-11-12 00:12:32Z des $
+ * $Id: openpam_load.c 547 2012-04-01 15:01:21Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -108,9 +108,7 @@
 		return;
 	openpam_destroy_chain(chain->next);
 	chain->next =3D NULL;
-	while (chain->optc--)
-		FREE(chain->optv[chain->optc]);
-	FREE(chain->optv);
+	FREEV(chain->optc, chain->optv);
 	openpam_release_module(chain->module);
 	chain->module =3D NULL;
 	FREE(chain);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_log.c
--- a/head/contrib/openpam/lib/openpam_log.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/openpam_log.c	Wed Jul 25 16:21:35 2012 +0300
@@ -32,18 +32,17 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_log.c 437 2011-09-13 12:00:13Z des $
+ * $Id: openpam_log.c 544 2012-03-31 22:47:15Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
=20
-#include <ctype.h>
+#include <errno.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <syslog.h>
=20
 #include <security/pam_appl.h>
@@ -71,6 +70,7 @@
 	int priority;
=20
 	switch (level) {
+	case PAM_LOG_LIBDEBUG:
 	case PAM_LOG_DEBUG:
 		if (!openpam_debug)
 			return;
@@ -100,8 +100,10 @@
 	va_list ap;
 	char *format;
 	int priority;
+	int serrno;
=20
 	switch (level) {
+	case PAM_LOG_LIBDEBUG:
 	case PAM_LOG_DEBUG:
 		if (!openpam_debug)
 			return;
@@ -119,10 +121,13 @@
 		break;
 	}
 	va_start(ap, fmt);
+	serrno =3D errno;
 	if (asprintf(&format, "in %s(): %s", func, fmt) > 0) {
+		errno =3D serrno;
 		vsyslog(priority, format, ap);
 		FREE(format);
 	} else {
+		errno =3D serrno;
 		vsyslog(priority, fmt, ap);
 	}
 	va_end(ap);
@@ -137,6 +142,9 @@
  * The =3Dlevel argument indicates the importance of the message.
  * The following levels are defined:
  *
+ *	=3DPAM_LOG_LIBDEBUG:
+ *		Debugging messages.
+ *		For internal use only.
  *	=3DPAM_LOG_DEBUG:
  *		Debugging messages.
  *		These messages are normally not logged unless the global
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_readl=
ine.c
--- a/head/contrib/openpam/lib/openpam_readline.c	Wed Jul 25 16:20:13 2012 =
+0300
+++ b/head/contrib/openpam/lib/openpam_readline.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_readline.c 473 2011-11-03 10:48:25Z des $
+ * $Id: openpam_readline.c 596 2012-04-14 14:52:40Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -44,6 +44,7 @@
 #include <stdlib.h>
=20
 #include <security/pam_appl.h>
+
 #include "openpam_impl.h"
=20
 #define MIN_LINE_LENGTH 128
@@ -61,22 +62,11 @@
 	size_t len, size;
 	int ch;
=20
-	if ((line =3D malloc(MIN_LINE_LENGTH)) =3D=3D NULL)
+	if ((line =3D malloc(size =3D MIN_LINE_LENGTH)) =3D=3D NULL) {
+		openpam_log(PAM_LOG_ERROR, "malloc(): %m");
 		return (NULL);
-	size =3D MIN_LINE_LENGTH;
+	}
 	len =3D 0;
-
-#define line_putch(ch) do { \
-	if (len >=3D size - 1) { \
-		char *tmp =3D realloc(line, size *=3D 2); \
-		if (tmp =3D=3D NULL) \
-			goto fail; \
-		line =3D tmp; \
-	} \
-	line[len++] =3D ch; \
-	line[len] =3D '\0'; \
-} while (0)
-
 	for (;;) {
 		ch =3D fgetc(f);
 		/* strip comment */
@@ -105,26 +95,15 @@
 			/* done */
 			break;
 		}
-		/* whitespace */
-		if (isspace(ch)) {
-			/* ignore leading whitespace */
-			/* collapse linear whitespace */
-			if (len > 0 && line[len - 1] !=3D ' ')
-				line_putch(' ');
-			continue;
-		}
 		/* anything else */
-		line_putch(ch);
+		if (openpam_straddch(&line, &size, &len, ch) !=3D 0)
+			goto fail;
 	}
-
-	/* remove trailing whitespace */
-	while (len > 0 && isspace((unsigned char)line[len - 1]))
-		--len;
-	line[len] =3D '\0';
 	if (len =3D=3D 0)
 		goto fail;
 	if (lenp !=3D NULL)
 		*lenp =3D len;
+	openpam_log(PAM_LOG_LIBDEBUG, "returning '%s'", line);
 	return (line);
 fail:
 	FREE(line);
@@ -132,16 +111,18 @@
 }
=20
 /**
+ * DEPRECATED openpam_readlinev
+ *
  * The =3Dopenpam_readline function reads a line from a file, and returns =
it
- * in a NUL-terminated buffer allocated with =3Dmalloc.
+ * in a NUL-terminated buffer allocated with =3D!malloc.
  *
  * The =3Dopenpam_readline function performs a certain amount of processing
  * on the data it reads:
  *
- *  - Comments (introduced by a hash sign) are stripped, as is leading and
- *    trailing whitespace.
- *  - Any amount of linear whitespace is collapsed to a single space.
+ *  - Comments (introduced by a hash sign) are stripped.
+ *
  *  - Blank lines are ignored.
+ *
  *  - If a line ends in a backslash, the backslash is stripped and the
  *    next line is appended.
  *
@@ -152,5 +133,8 @@
  * terminating NUL character) is stored in the variable it points to.
  *
  * The caller is responsible for releasing the returned buffer by passing
- * it to =3Dfree.
+ * it to =3D!free.
+ *
+ * >openpam_readlinev
+ * >openpam_readword
  */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_readl=
inev.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_readlinev.c	Wed Jul 25 16:21:35 2012=
 +0300
@@ -0,0 +1,156 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_readlinev.c 588 2012-04-08 11:52:25Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <security/pam_appl.h>
+
+#include "openpam_impl.h"
+
+#define MIN_WORDV_SIZE	32
+
+/*
+ * OpenPAM extension
+ *
+ * Read a line from a file and split it into words.
+ */
+
+char **
+openpam_readlinev(FILE *f, int *lineno, int *lenp)
+{
+	char *word, **wordv, **tmp;
+	size_t wordlen, wordvsize;
+	int ch, serrno, wordvlen;
+
+	wordvsize =3D MIN_WORDV_SIZE;
+	wordvlen =3D 0;
+	if ((wordv =3D malloc(wordvsize * sizeof *wordv)) =3D=3D NULL) {
+		openpam_log(PAM_LOG_ERROR, "malloc(): %m");
+		errno =3D ENOMEM;
+		return (NULL);
+	}
+	wordv[wordvlen] =3D NULL;
+	while ((word =3D openpam_readword(f, lineno, &wordlen)) !=3D NULL) {
+		if ((unsigned int)wordvlen + 1 >=3D wordvsize) {
+			/* need to expand the array */
+			wordvsize *=3D 2;
+			tmp =3D realloc(wordv, wordvsize * sizeof *wordv);
+			if (tmp =3D=3D NULL) {
+				openpam_log(PAM_LOG_ERROR, "malloc(): %m");
+				errno =3D ENOMEM;
+				break;
+			}
+			wordv =3D tmp;
+		}
+		/* insert our word */
+		wordv[wordvlen++] =3D word;
+		wordv[wordvlen] =3D NULL;
+	}
+	if (errno !=3D 0) {
+		/* I/O error or out of memory */
+		serrno =3D errno;
+		while (wordvlen--)
+			free(wordv[wordvlen]);
+		free(wordv);
+		errno =3D serrno;
+		return (NULL);
+	}
+	/* assert(!ferror(f)) */
+	ch =3D fgetc(f);
+	/* assert(ch =3D=3D EOF || ch =3D=3D '\n') */
+	if (ch =3D=3D EOF && wordvlen =3D=3D 0) {
+		free(wordv);
+		return (NULL);
+	}
+	if (ch =3D=3D '\n' && lineno !=3D NULL)
+		++*lineno;
+	if (lenp !=3D NULL)
+		*lenp =3D wordvlen;
+	return (wordv);
+}
+
+/**
+ * The =3Dopenpam_readlinev function reads a line from a file, splits it
+ * into words according to the rules described in the =3Dopenpam_readword
+ * manual page, and returns a list of those words.
+ *
+ * If =3Dlineno is not =3DNULL, the integer variable it points to is
+ * incremented every time a newline character is read.
+ * This includes quoted or escaped newline characters and the newline
+ * character at the end of the line.
+ *
+ * If =3Dlenp is not =3DNULL, the number of words on the line is stored in=
 the
+ * variable to which it points.
+ *
+ * RETURN VALUES
+ *
+ * If successful, the =3Dopenpam_readlinev function returns a pointer to a
+ * dynamically allocated array of pointers to individual dynamically
+ * allocated NUL-terminated strings, each containing a single word, in the
+ * order in which they were encountered on the line.
+ * The array is terminated by a =3DNULL pointer.
+ *
+ * The caller is responsible for freeing both the array and the individual
+ * strings by passing each of them to =3D!free.
+ *
+ * If the end of the line was reached before any words were read,
+ * =3Dopenpam_readlinev returns a pointer to a dynamically allocated array
+ * containing a single =3DNULL pointer.
+ *
+ * The =3Dopenpam_readlinev function can fail and return =3DNULL for one of
+ * four reasons:
+ *
+ *  - The end of the file was reached before any words were read; :errno is
+ *    zero, =3D!ferror returns zero, and =3D!feof returns a non-zero value.
+ *
+ *  - The end of the file was reached while a quote or backslash escape
+ *    was in effect; :errno is set to =3DEINVAL, =3D!ferror returns zero, =
and
+ *    =3D!feof returns a non-zero value.
+ *
+ *  - An error occurred while reading from the file; :errno is non-zero,
+ *    =3D!ferror returns a non-zero value and =3D!feof returns zero.
+ *
+ *  - A =3D!malloc or =3D!realloc call failed; :errno is set to =3DENOMEM,
+ *    =3D!ferror returns a non-zero value, and =3D!feof may or may not ret=
urn
+ *    a non-zero value.
+ *
+ * >openpam_readline
+ * >openpam_readword
+ *
+ * AUTHOR DES
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_readw=
ord.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_readword.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,207 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_readword.c 588 2012-04-08 11:52:25Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <security/pam_appl.h>
+
+#include "openpam_impl.h"
+#include "openpam_ctype.h"
+
+#define MIN_WORD_SIZE	32
+
+/*
+ * OpenPAM extension
+ *
+ * Read a word from a file, respecting shell quoting rules.
+ */
+
+char *
+openpam_readword(FILE *f, int *lineno, size_t *lenp)
+{
+	char *word;
+	size_t size, len;
+	int ch, comment, escape, quote;
+	int serrno;
+
+	errno =3D 0;
+
+	/* skip initial whitespace */
+	comment =3D 0;
+	while ((ch =3D getc(f)) !=3D EOF && ch !=3D '\n') {
+		if (ch =3D=3D '#')
+			comment =3D 1;
+		if (!is_lws(ch) && !comment)
+			break;
+	}
+	if (ch =3D=3D EOF)
+		return (NULL);
+	ungetc(ch, f);
+	if (ch =3D=3D '\n')
+		return (NULL);
+
+	word =3D NULL;
+	size =3D len =3D 0;
+	escape =3D quote =3D 0;
+	while ((ch =3D fgetc(f)) !=3D EOF && (!is_ws(ch) || quote || escape)) {
+		if (ch =3D=3D '\\' && !escape && quote !=3D '\'') {
+			/* escape next character */
+			escape =3D ch;
+		} else if ((ch =3D=3D '\'' || ch =3D=3D '"') && !quote && !escape) {
+			/* begin quote */
+			quote =3D ch;
+			/* edge case: empty quoted string */
+			if (word =3D=3D NULL && (word =3D malloc(1)) =3D=3D NULL) {
+				openpam_log(PAM_LOG_ERROR, "malloc(): %m");
+				errno =3D ENOMEM;
+				return (NULL);
+			}
+			*word =3D '\0';
+			size =3D 1;
+		} else if (ch =3D=3D quote && !escape) {
+			/* end quote */
+			quote =3D 0;
+		} else if (ch =3D=3D '\n' && escape && quote !=3D '\'') {
+			/* line continuation */
+			escape =3D 0;
+		} else {
+			if (escape && quote && ch !=3D '\\' && ch !=3D quote &&
+			    openpam_straddch(&word, &size, &len, '\\') !=3D 0) {
+				free(word);
+				errno =3D ENOMEM;
+				return (NULL);
+			}
+			if (openpam_straddch(&word, &size, &len, ch) !=3D 0) {
+				free(word);
+				errno =3D ENOMEM;
+				return (NULL);
+			}
+			escape =3D 0;
+		}
+		if (lineno !=3D NULL && ch =3D=3D '\n')
+			++*lineno;
+	}
+	if (ch =3D=3D EOF && ferror(f)) {
+		serrno =3D errno;
+		free(word);
+		errno =3D serrno;
+		return (NULL);
+	}
+	if (ch =3D=3D EOF && (escape || quote)) {
+		/* Missing escaped character or closing quote. */
+		openpam_log(PAM_LOG_ERROR, "unexpected end of file");
+		free(word);
+		errno =3D EINVAL;
+		return (NULL);
+	}
+	ungetc(ch, f);
+	if (lenp !=3D NULL)
+		*lenp =3D len;
+	return (word);
+}
+
+/**
+ * The =3Dopenpam_readword function reads the next word from a file, and
+ * returns it in a NUL-terminated buffer allocated with =3D!malloc.
+ *
+ * A word is a sequence of non-whitespace characters.
+ * However, whitespace characters can be included in a word if quoted or
+ * escaped according to the following rules:
+ *
+ *  - An unescaped single or double quote introduces a quoted string,
+ *    which ends when the same quote character is encountered a second
+ *    time.
+ *    The quotes themselves are stripped.
+ *
+ *  - Within a single- or double-quoted string, all whitespace characters,
+ *    including the newline character, are preserved as-is.
+ *
+ *  - Outside a quoted string, a backslash escapes the next character,
+ *    which is preserved as-is, unless that character is a newline, in
+ *    which case it is discarded and reading continues at the beginning of
+ *    the next line as if the backslash and newline had not been there.
+ *    In all cases, the backslash itself is discarded.
+ *
+ *  - Within a single-quoted string, double quotes and backslashes are
+ *    preserved as-is.
+ *
+ *  - Within a double-quoted string, a single quote is preserved as-is,
+ *    and a backslash is preserved as-is unless used to escape a double
+ *    quote.
+ *
+ * In addition, if the first non-whitespace character on the line is a
+ * hash character (#), the rest of the line is discarded.
+ * If a hash character occurs within a word, however, it is preserved
+ * as-is.
+ * A backslash at the end of a comment does cause line continuation.
+ *
+ * If =3Dlineno is not =3DNULL, the integer variable it points to is
+ * incremented every time a quoted or escaped newline character is read.
+ *
+ * If =3Dlenp is not =3DNULL, the length of the word (after quotes and
+ * backslashes have been removed) is stored in the variable it points to.
+ *
+ * RETURN VALUES
+ *
+ * If successful, the =3Dopenpam_readword function returns a pointer to a
+ * dynamically allocated NUL-terminated string containing the first word
+ * encountered on the line.
+ *
+ * The caller is responsible for releasing the returned buffer by passing
+ * it to =3D!free.
+ *
+ * If =3Dopenpam_readword reaches the end of the line or file before any
+ * characters are copied to the word, it returns =3DNULL.  In the former
+ * case, the newline is pushed back to the file.
+ *
+ * If =3Dopenpam_readword reaches the end of the file while a quote or
+ * backslash escape is in effect, it sets :errno to =3DEINVAL and returns
+ * =3DNULL.
+ *
+ * IMPLEMENTATION NOTES
+ *
+ * The parsing rules are intended to be equivalent to the normal POSIX
+ * shell quoting rules.
+ * Any discrepancy is a bug and should be reported to the author along
+ * with sample input that can be used to reproduce the error.
+ *
+ * >openpam_readline
+ * >openpam_readlinev
+ *
+ * AUTHOR DES
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_set_f=
eature.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_set_feature.c	Wed Jul 25 16:21:35 20=
12 +0300
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_set_feature.c 608 2012-05-17 16:00:13Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <security/pam_appl.h>
+#include <security/openpam.h>
+
+#include "openpam_impl.h"
+
+/*
+ * OpenPAM extension
+ *
+ * Enable or disable an optional feature.
+ */
+
+int
+openpam_set_feature(int feature, int onoff)
+{
+
+	ENTERF(feature);
+	if (feature < 0 || feature >=3D OPENPAM_NUM_FEATURES)
+		RETURNC(PAM_SYMBOL_ERR);
+	openpam_features[feature].onoff =3D onoff;
+	RETURNC(PAM_SUCCESS);
+}
+
+/*
+ * Error codes:
+ *
+ *	PAM_SYMBOL_ERR
+ */
+
+/**
+ * EXPERIMENTAL
+ *
+ * The =3Dopenpam_set_feature function sets the state of the specified
+ * feature to the value specified by the =3Donoff argument.
+ * See =3Dopenpam_get_feature for a list of recognized features.
+ *
+ * >openpam_get_feature
+ *
+ * AUTHOR DES
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_set_o=
ption.c
--- a/head/contrib/openpam/lib/openpam_set_option.c	Wed Jul 25 16:20:13 201=
2 +0300
+++ b/head/contrib/openpam/lib/openpam_set_option.c	Wed Jul 25 16:21:35 201=
2 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_set_option.c 482 2011-11-03 16:33:02Z des $
+ * $Id: openpam_set_option.c 532 2012-03-31 14:24:53Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -46,7 +46,6 @@
 #include <string.h>
=20
 #include <security/pam_appl.h>
-#include <security/openpam.h>
=20
 #include "openpam_impl.h"
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_strad=
dch.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_straddch.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,111 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_straddch.c 568 2012-04-05 14:35:53Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <errno.h>
+#include <stdlib.h>
+
+#include <security/pam_appl.h>
+
+#include "openpam_impl.h"
+
+#define MIN_STR_SIZE	32
+
+/*
+ * OpenPAM extension
+ *
+ * Add a character to a string, expanding the buffer if needed.
+ */
+
+int
+openpam_straddch(char **str, size_t *size, size_t *len, int ch)
+{
+	size_t tmpsize;
+	char *tmpstr;
+
+	if (*str =3D=3D NULL) {
+		/* initial allocation */
+		tmpsize =3D MIN_STR_SIZE;
+		if ((tmpstr =3D malloc(tmpsize)) =3D=3D NULL) {
+			openpam_log(PAM_LOG_ERROR, "malloc(): %m");
+			errno =3D ENOMEM;
+			return (-1);
+		}
+		*str =3D tmpstr;
+		*size =3D tmpsize;
+		*len =3D 0;
+	} else if (*len + 1 >=3D *size) {
+		/* additional space required */
+		tmpsize =3D *size * 2;
+		if ((tmpstr =3D realloc(*str, tmpsize)) =3D=3D NULL) {
+			openpam_log(PAM_LOG_ERROR, "realloc(): %m");
+			errno =3D ENOMEM;
+			return (-1);
+		}
+		*size =3D tmpsize;
+		*str =3D tmpstr;
+	}
+	(*str)[*len] =3D ch;
+	++*len;
+	(*str)[*len] =3D '\0';
+	return (0);
+}
+
+/**
+ * The =3Dopenpam_straddch function appends a character to a dynamically
+ * allocated NUL-terminated buffer, reallocating the buffer as needed.
+ *
+ * The =3Dstr argument points to a variable containing either a pointer to
+ * an existing buffer or =3DNULL.
+ * If the value of the variable pointed to by =3Dstr is =3DNULL, a new buf=
fer
+ * is allocated.
+ *
+ * The =3Dsize and =3Dlen argument point to variables used to hold the size
+ * of the buffer and the length of the string it contains, respectively.
+ *
+ * If a new buffer is allocated or an existing buffer is reallocated to
+ * make room for the additional character, =3Dstr and =3Dsize are updated
+ * accordingly.
+ *
+ * The =3Dopenpam_straddch function ensures that the buffer is always
+ * NUL-terminated.
+ *
+ * If the =3Dopenpam_straddch function is successful, it increments the
+ * integer variable pointed to by =3Dlen and returns 0.
+ * Otherwise, it leaves the variables pointed to by =3Dstr, =3Dsize and =
=3Dlen
+ * unmodified, sets :errno to =3DENOMEM and returns -1.
+ *
+ * AUTHOR DES
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_strlc=
at.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/lib/openpam_strlcat.h	Wed Jul 25 16:21:35 2012 +=
0300
@@ -0,0 +1,54 @@
+/*-
+ * Copyright (c) 2011 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: openpam_strlcat.h 578 2012-04-06 00:45:59Z des $
+ */
+
+#ifndef OPENPAM_STRLCAT_H_INCLUDED
+#define OPENPAM_STRLCAT_H_INCLUDED
+
+#ifndef HAVE_STRLCAT
+/* like strcat(3), but always NUL-terminates; returns strlen(src) */
+static size_t
+strlcat(char *dst, const char *src, size_t size)
+{
+	size_t len;
+
+	for (len =3D 0; *dst && size > 1; ++len, --size)
+		dst++;
+	for (; *src && size > 1; ++len, --size)
+		*dst++ =3D *src++;
+	*dst =3D '\0';
+	while (*src)
+		++len, ++src;
+	return (len);
+}
+#endif
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_strlc=
mp.h
--- a/head/contrib/openpam/lib/openpam_strlcmp.h	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/lib/openpam_strlcmp.h	Wed Jul 25 16:21:35 2012 +=
0300
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_strlcmp.h 475 2011-11-03 15:29:24Z des $
+ * $Id: openpam_strlcmp.h 578 2012-04-06 00:45:59Z des $
  */
=20
 #ifndef OPENPAM_STRLCMP_H_INCLUDED
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_strlc=
py.h
--- a/head/contrib/openpam/lib/openpam_strlcpy.h	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/lib/openpam_strlcpy.h	Wed Jul 25 16:21:35 2012 +=
0300
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_strlcpy.h 492 2011-11-20 02:04:17Z des $
+ * $Id: openpam_strlcpy.h 578 2012-04-06 00:45:59Z des $
  */
=20
 #ifndef OPENPAM_STRLCPY_H_INCLUDED
@@ -32,7 +35,7 @@
=20
 #ifndef HAVE_STRLCPY
 /* like strcpy(3), but always NUL-terminates; returns strlen(src) */
-size_t
+static size_t
 strlcpy(char *dst, const char *src, size_t size)
 {
 	size_t len;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_subst=
.c
--- a/head/contrib/openpam/lib/openpam_subst.c	Wed Jul 25 16:20:13 2012 +03=
00
+++ b/head/contrib/openpam/lib/openpam_subst.c	Wed Jul 25 16:21:35 2012 +03=
00
@@ -11,6 +11,9 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -24,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_subst.c 461 2011-11-02 14:00:38Z des $
+ * $Id: openpam_subst.c 543 2012-03-31 22:11:34Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/openpam_ttyco=
nv.c
--- a/head/contrib/openpam/lib/openpam_ttyconv.c	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/lib/openpam_ttyconv.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openpam_ttyconv.c 437 2011-09-13 12:00:13Z des $
+ * $Id: openpam_ttyconv.c 527 2012-02-26 03:23:59Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -69,17 +69,17 @@
 {
 	char buf[PAM_MAX_RESP_SIZE];
 	struct sigaction action, saved_action;
-	sigset_t saved_sigset, sigset;
+	sigset_t saved_sigset, the_sigset;
 	unsigned int saved_alarm;
 	int eof, error, fd;
 	size_t len;
 	char *retval;
 	char ch;
=20
-	sigemptyset(&sigset);
-	sigaddset(&sigset, SIGINT);
-	sigaddset(&sigset, SIGTSTP);
-	sigprocmask(SIG_SETMASK, &sigset, &saved_sigset);
+	sigemptyset(&the_sigset);
+	sigaddset(&the_sigset, SIGINT);
+	sigaddset(&the_sigset, SIGTSTP);
+	sigprocmask(SIG_SETMASK, &the_sigset, &saved_sigset);
 	action.sa_handler =3D &timeout;
 	action.sa_flags =3D 0;
 	sigemptyset(&action.sa_mask);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/pam_get_autht=
ok.c
--- a/head/contrib/openpam/lib/pam_get_authtok.c	Wed Jul 25 16:20:13 2012 +=
0300
+++ b/head/contrib/openpam/lib/pam_get_authtok.c	Wed Jul 25 16:21:35 2012 +=
0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: pam_get_authtok.c 455 2011-10-29 18:31:11Z des $
+ * $Id: pam_get_authtok.c 510 2011-12-31 13:14:23Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -50,6 +50,7 @@
 #include "openpam_impl.h"
=20
 static const char authtok_prompt[] =3D "Password:";
+static const char authtok_prompt_remote[] =3D "Password for %u@%h:";
 static const char oldauthtok_prompt[] =3D "Old Password:";
 static const char newauthtok_prompt[] =3D "New Password:";
=20
@@ -69,6 +70,7 @@
 	size_t prompt_size;
 	const void *oldauthtok, *prevauthtok, *promptp;
 	const char *prompt_option, *default_prompt;
+	const void *lhost, *rhost;
 	char *resp, *resp2;
 	int pitem, r, style, twice;
=20
@@ -82,6 +84,14 @@
 		pitem =3D PAM_AUTHTOK_PROMPT;
 		prompt_option =3D "authtok_prompt";
 		default_prompt =3D authtok_prompt;
+		r =3D pam_get_item(pamh, PAM_RHOST, &rhost);
+		if (r =3D=3D PAM_SUCCESS && rhost !=3D NULL) {
+			r =3D pam_get_item(pamh, PAM_HOST, &lhost);
+			if (r =3D=3D PAM_SUCCESS && lhost !=3D NULL) {
+				if (strcmp(rhost, lhost) !=3D 0)
+					default_prompt =3D authtok_prompt_remote;
+			}
+		}
 		r =3D pam_get_item(pamh, PAM_OLDAUTHTOK, &oldauthtok);
 		if (r =3D=3D PAM_SUCCESS && oldauthtok !=3D NULL) {
 			default_prompt =3D newauthtok_prompt;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/pam_putenv.c
--- a/head/contrib/openpam/lib/pam_putenv.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/pam_putenv.c	Wed Jul 25 16:21:35 2012 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: pam_putenv.c 437 2011-09-13 12:00:13Z des $
+ * $Id: pam_putenv.c 539 2012-03-31 20:53:22Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -102,7 +102,7 @@
  */
=20
 /**
- * The =3Dpam_putenv function sets a environment variable.
+ * The =3Dpam_putenv function sets an environment variable.
  * Its semantics are similar to those of =3Dputenv, but it modifies the PAM
  * context's environment list instead of the application's.
  *
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/lib/pam_setenv.c
--- a/head/contrib/openpam/lib/pam_setenv.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/lib/pam_setenv.c	Wed Jul 25 16:21:35 2012 +0300
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: pam_setenv.c 437 2011-09-13 12:00:13Z des $
+ * $Id: pam_setenv.c 539 2012-03-31 20:53:22Z des $
  */
=20
 #ifdef HAVE_CONFIG_H
@@ -92,7 +92,7 @@
  */
=20
 /**
- * The =3Dpam_setenv function sets a environment variable.
+ * The =3Dpam_setenv function sets an environment variable.
  * Its semantics are similar to those of =3Dsetenv, but it modifies the PAM
  * context's environment list instead of the application's.
  *
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/ltmain.sh
--- a/head/contrib/openpam/ltmain.sh	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/ltmain.sh	Wed Jul 25 16:21:35 2012 +0300
@@ -1,9 +1,9 @@
=20
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
=20
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is =
NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPO=
SE.
=20
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=3DTAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4
+#         $progname:	(GNU libtool) 2.4.2
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -79,9 +80,9 @@
=20
 PROGRAM=3Dlibtool
 PACKAGE=3Dlibtool
-VERSION=3D2.4
+VERSION=3D2.4.2
 TIMESTAMP=3D""
-package_revision=3D1.3293
+package_revision=3D1.3337
=20
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@
=20
 : ${CP=3D"cp -f"}
 test "${ECHO+set}" =3D set || ECHO=3D${as_echo-'printf %s\n'}
-: ${EGREP=3D"grep -E"}
-: ${FGREP=3D"grep -F"}
-: ${GREP=3D"grep"}
-: ${LN_S=3D"ln -s"}
 : ${MAKE=3D"make"}
 : ${MKDIR=3D"mkdir"}
 : ${MV=3D"mv -f"}
 : ${RM=3D"rm -f"}
-: ${SED=3D"sed"}
 : ${SHELL=3D"${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed=3D"$SED -e 1s/^X//"}
=20
@@ -387,7 +383,7 @@
      ;;
   *)
      save_IFS=3D"$IFS"
-     IFS=3D:
+     IFS=3D${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS=3D"$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@
 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
 	s*\$LD*'"$LD"'*
 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SE=
D 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SE=
D 1q`"'/
 	p
 	d
      }
@@ -1052,6 +1048,7 @@
 opt_help=3Dfalse
 opt_help_all=3Dfalse
 opt_silent=3D:
+opt_warning=3D:
 opt_verbose=3D:
 opt_silent=3Dfalse
 opt_verbose=3Dfalse
@@ -1120,6 +1117,10 @@
 			opt_silent=3Dfalse
 func_append preserve_args " $opt"
 			;;
+      --no-warning|--no-warn)
+			opt_warning=3Dfalse
+func_append preserve_args " $opt"
+			;;
       --no-verbose)
 			opt_verbose=3Dfalse
 func_append preserve_args " $opt"
@@ -2089,7 +2090,7 @@
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=3D$func_xform_result
       ;;
@@ -3231,11 +3232,13 @@
=20
       # Set up the ranlib parameters.
       oldlib=3D"$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=3D$func_to_tool_file_result
=20
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
=20
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
=20
       # Do each command in the postinstall commands.
@@ -3500,7 +3503,7 @@
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=3D" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=3D" $pic_flag"  ;;
@@ -4015,14 +4018,17 @@
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
=20
@@ -5090,9 +5096,15 @@
 {
 EOF
 	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5677,7 +5689,8 @@
 	continue
 	;;
=20
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-th=
reads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=3D*)
 	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
@@ -6181,7 +6194,8 @@
 	lib=3D
 	found=3Dno
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=3D*)
 	  if test "$linkmode,$pass" =3D "prog,link"; then
 	    compile_deplibs=3D"$deplib $compile_deplibs"
 	    finalize_deplibs=3D"$deplib $finalize_deplibs"
@@ -6882,7 +6896,7 @@
 	         test "$hardcode_direct_absolute" =3D no; then
 		add=3D"$dir/$linklib"
 	      elif test "$hardcode_minus_L" =3D yes; then
-		add_dir=3D"-L$dir"
+		add_dir=3D"-L$absdir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -7367,6 +7381,7 @@
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
 	  darwin|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=3D$func_arith_result
@@ -7483,7 +7498,7 @@
 	  versuffix=3D"$major.$revision"
 	  ;;
=20
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=3D.$func_arith_result
 	  versuffix=3D"$major.$age.$revision"
@@ -8071,6 +8086,11 @@
=20
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" =3D yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl=3D ;;
+        esac
 	if test "$hardcode_into_libs" =3D yes; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=3D
@@ -8101,7 +8121,7 @@
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -8109,11 +8129,7 @@
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
 	    libdir=3D"$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=3D\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=3D\"$hardcode_libdir_flag_spec\"
-	    fi
+	    eval "dep_rpath=3D\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
@@ -9203,6 +9219,8 @@
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=3D$func_to_tool_file_result
 	eval cmds=3D\"$old_archive_cmds\"
=20
 	func_len " $cmds"
@@ -9312,7 +9330,8 @@
 	      *.la)
 		func_basename "$deplib"
 		name=3D"$func_basename_result"
-		eval libdir=3D`${SED} -n -e 's/^libdir=3D\(.*\)$/\1/p' $deplib`
+		func_resolve_sysroot "$deplib"
+		eval libdir=3D`${SED} -n -e 's/^libdir=3D\(.*\)$/\1/p' $func_resolve_sys=
root_result`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=3D}$libdir/$name"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/misc/gendoc.pl
--- a/head/contrib/openpam/misc/gendoc.pl	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/openpam/misc/gendoc.pl	Wed Jul 25 16:21:35 2012 +0300
@@ -33,7 +33,7 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 #
-# $Id: gendoc.pl 465 2011-11-02 20:34:26Z des $
+# $Id: gendoc.pl 599 2012-04-14 15:06:41Z des $
 #
=20
 use strict;
@@ -81,12 +81,15 @@
 .\\\"";
=20
 %AUTHORS =3D (
-    THINKSEC =3D> "ThinkSec AS and Network Associates Laboratories, the
+    THINKSEC =3D> "developed for the
+.Fx
+Project by ThinkSec AS and Network Associates Laboratories, the
 Security Research Division of Network Associates, Inc.\\& under
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.",
-    DES =3D> ".An Dag-Erling Sm\\(/orgrav Aq des\@FreeBSD.org .",
+    DES =3D> "developed by
+.An Dag-Erling Sm\\(/orgrav Aq des\@des.no .",
 );
=20
 %PAMERR =3D (
@@ -136,6 +139,9 @@
     my $inlist;
     my $intaglist;
     my $inliteral;
+    my $customrv;
+    my $deprecated;
+    my $experimental;
     my %xref;
     my @errors;
     my $author;
@@ -154,10 +160,18 @@
 	if ($source =3D~ m/^ \* NOPARSE\s*$/m);
=20
     $author =3D 'THINKSEC';
-    if ($source =3D~ s/^ \* AUTHOR\s+(.*?)\s*$//m) {
+    if ($source =3D~ s/^ \* AUTHOR\s+(\w*)\s*$//m) {
 	$author =3D $1;
     }
=20
+    if ($source =3D~ s/^ \* DEPRECATED\s*(\w*)\s*$//m) {
+	$deprecated =3D $1 // 0;
+    }
+
+    if ($source =3D~ s/^ \* EXPERIMENTAL\s*$//m) {
+	$experimental =3D 1;
+    }
+
     $func =3D $fn;
     $func =3D~ s,^(?:.*/)?([^/]+)\.c$,$1,;
     if ($source !~ m,\n \* ([\S ]+)\n \*/\n\n([\S ]+)\n$func\((.*?)\)\n\{,=
s) {
@@ -195,7 +209,7 @@
     # separate argument names with |
     $argnames =3D~ s/\" \"/|/g;
     # and surround with ()
-    $argnames =3D~ s/^\"(.*)\"$/($1)/;
+    $argnames =3D~ s/^\"(.*)\"$/$1/;
     # $argnames is now a regexp that matches argument names
     $inliteral =3D $inlist =3D $intaglist =3D 0;
     foreach (split("\n", $source)) {
@@ -211,12 +225,19 @@
 	s/\\(.)/$1/gs;
 	if (m/^$/) {
 	    # paragraph separator
+	    if ($inlist || $intaglist) {
+		# either a blank line between list items, or a blank
+		# line after the final list item.  The latter case
+		# will be handled further down.
+		next;
+	    }
+	    if ($man =3D~ m/\n\.Sh [^\n]+\n$/s) {
+		# a blank line after a section header
+		next;
+	    }
 	    if ($man ne "" && $man !~ m/\.Pp\n$/s) {
 		if ($inliteral) {
 		    $man .=3D "\0\n";
-		} elsif ($inlist || $intaglist) {
-		    $man .=3D ".El\n.Pp\n";
-		    $inlist =3D $intaglist =3D 0;
 		} else {
 		    $man .=3D ".Pp\n";
 		}
@@ -229,6 +250,14 @@
 	    ++$xref{$sect}->{$page};
 	    next;
 	}
+	if (s/^([A-Z][0-9A-Z -]+)$/.Sh $1/) {
+	    if ($1 eq "RETURN VALUES") {
+		$customrv =3D $1;
+	    }
+	    $man =3D~ s/\n\.Pp$/\n/s;
+	    $man .=3D "$_\n";
+	    next;
+	}
 	if (s/^\s+-\s+//) {
 	    # item in bullet list
 	    if ($inliteral) {
@@ -286,11 +315,12 @@
 	    $man .=3D "$_\n";
 	    next;
 	}
-	s/\s*=3D$func\b\s*/\n.Nm\n/gs;
-	s/\s*=3D$argnames\b\s*/\n.Fa $1\n/gs;
+	s/\s*=3D($func)\b\s*/\n.Fn $1\n/gs;
+	s/\s*=3D($argnames)\b\s*/\n.Fa $1\n/gs;
 	s/\s*=3D(struct \w+(?: \*)?)\b\s*/\n.Vt $1\n/gs;
 	s/\s*:([a-z_]+)\b\s*/\n.Va $1\n/gs;
 	s/\s*;([a-z_]+)\b\s*/\n.Dv $1\n/gs;
+	s/\s*=3D!([a-z_]+)\b\s*/\n.Xr $1 3\n/gs;
 	while (s/\s*=3D([a-z_]+)\b\s*/\n.Xr $1 3\n/s) {
 	    ++$xref{3}->{$1};
 	}
@@ -311,7 +341,7 @@
 	    $inliteral =3D 0;
 	}
 	$man =3D~ s/\%/\\&\%/gs;
-	$man =3D~ s/(\n\.[A-Z][a-z] [\w ]+)\n([\.,:;-]\S*)\s*/$1 $2\n/gs;
+	$man =3D~ s/(\n\.[A-Z][a-z] [\w ]+)\n([.,:;-])\s+/$1 $2\n/gs;
 	$man =3D~ s/\s*$/\n/gm;
 	$man =3D~ s/\n+/\n/gs;
 	$man =3D~ s/\0//gs;
@@ -331,6 +361,9 @@
 	'xref'		=3D> \%xref,
 	'errors'	=3D> \@errors,
 	'author'	=3D> $author,
+	'customrv'	=3D> $customrv,
+	'deprecated'	=3D> $deprecated,
+	'experimental'	=3D> $experimental,
     };
     if ($source =3D~ m/^ \* NODOC\s*$/m) {
 	$FUNCTIONS{$func}->{'nodoc'} =3D 1;
@@ -437,49 +470,75 @@
 .Lb libpam
 .Sh SYNOPSIS
 .In sys/types.h
-.In security/pam_appl.h
+";
+    if ($func->{'args'} =3D~ m/\bFILE \*\b/) {
+	$mdoc .=3D ".In stdio.h\n";
+    }
+    $mdoc .=3D ".In security/pam_appl.h
 ";
     if ($func->{'name'} =3D~ m/_sm_/) {
-	$mdoc .=3D ".In security/pam_modules.h\n"
+	$mdoc .=3D ".In security/pam_modules.h\n";
     }
     if ($func->{'name'} =3D~ m/openpam/) {
-	$mdoc .=3D ".In security/openpam.h\n"
+	$mdoc .=3D ".In security/openpam.h\n";
     }
     $mdoc .=3D ".Ft \"$func->{'type'}\"
 .Fn $func->{'name'} $func->{'args'}
 .Sh DESCRIPTION
-$func->{'man'}
 ";
-    if ($func->{'type'} eq "int") {
+    if (defined($func->{'deprecated'})) {
+	$mdoc .=3D ".Bf Sy\n" .
+	    "This function is deprecated and may be removed " .
+	    "in a future release without further warning.\n";
+	if ($func->{'deprecated'}) {
+	    $mdoc .=3D "The\n.Fn $func->{'deprecated'}\nfunction " .
+		"may be used to achieve similar results.\n";
+	}
+	$mdoc .=3D ".Ef\n.Pp\n";
+    }
+    if ($func->{'experimental'}) {
+	$mdoc .=3D ".Bf Sy\n" .
+	    "This function is experimental and may be modified or removed " .
+	    "in a future release without further warning.\n";
+	$mdoc .=3D ".Ef\n.Pp\n";
+    }
+    $mdoc .=3D "$func->{'man'}\n";
+    my @errors =3D @{$func->{'errors'}};
+    if ($func->{'customrv'}) {
+	# leave it
+    } elsif ($func->{'type'} eq "int" && @errors) {
 	$mdoc .=3D ".Sh RETURN VALUES
 The
-.Nm
+.Fn $func->{'name'}
 function returns one of the following values:
 .Bl -tag -width 18n
 ";
-	my @errors =3D @{$func->{'errors'}};
-	warn("$func->{'name'}(): no error specification\n")
-	    unless(@errors);
 	foreach (@errors) {
 	    $mdoc .=3D ".It Bq Er $_\n$PAMERR{$_}.\n";
 	}
 	$mdoc .=3D ".El\n";
-    } else {
-	if ($func->{'type'} =3D~ m/\*$/) {
-	    $mdoc .=3D ".Sh RETURN VALUES
+    } elsif ($func->{'type'} eq "int") {
+	$mdoc .=3D ".Sh RETURN VALUES
 The
-.Nm
+.Fn $func->{'name'}
+function returns 0 on success and -1 on failure.
+";
+    } elsif ($func->{'type'} =3D~ m/\*$/) {
+	$mdoc .=3D ".Sh RETURN VALUES
+The
+.Fn $func->{'name'}
 function returns
 .Dv NULL
 on failure.
 ";
-	}
+    } elsif ($func->{'type'} ne "void") {
+	warn("$func->{'name'}(): no error specification\n");
     }
     $mdoc .=3D ".Sh SEE ALSO\n" . genxref($func->{'xref'});
     $mdoc .=3D ".Sh STANDARDS\n";
     if ($func->{'openpam'}) {
 	$mdoc .=3D "The
-.Nm
+.Fn $func->{'name'}
 function is an OpenPAM extension.
 ";
     } else {
@@ -491,10 +550,9 @@
     }
     $mdoc .=3D ".Sh AUTHORS
 The
-.Nm
-function and this manual page were developed for the
-.Fx
-Project by\n" . $AUTHORS{$func->{'author'} // 'THINKSEC_DARPA'} . "\n";
+.Fn $func->{'name'}
+function and this manual page were\n";
+    $mdoc .=3D $AUTHORS{$func->{'author'} // 'THINKSEC_DARPA'} . "\n";
     $fn =3D "$func->{'name'}.3";
     if (open(FILE, ">", $fn)) {
 	print(FILE $mdoc);
@@ -608,6 +666,9 @@
 DARPA/SPAWAR contract N66001-01-C-8035
 .Pq Dq CBOSS ,
 as part of the DARPA CHATS research program.
+.Pp
+The OpenPAM library is maintained by
+.An Dag-Erling Sm\\(/orgrav Aq des\@des.no .
 ";
     close(FILE);
 }
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/pamgdb.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/pamgdb.in	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# $Id: pamgdb.in 583 2012-04-07 18:56:13Z des $
+#
+
+srcdir=3D"@abs_top_srcdir@"
+builddir=3D"@abs_top_builddir@"
+
+# Make sure we get the right version of libpam
+pam_libdir=3D"${builddir}/lib/.libs"
+LD_LIBRARY_PATH=3D"${pam_libdir}:${LD_LIBRARY_PATH}"
+LD_LIBRARY_PATH=3D"${LD_LIBRARY_PATH%:}"
+export LD_LIBRARY_PATH
+
+# DWIM, assuming that the first positional argument is the name of the
+# program to debug rather than a gdb option.
+prog=3D"$1"
+if expr "${prog}" : ".*/.*" >/dev/null ; then
+	# The first argument is an absolute or relative path.  There
+	# is a good chance that it points to the wrapper script
+	# generated by libtool rather than the actual binary.
+	altprog=3D"${prog%/*}/.libs/${prog##*/}"
+	if [ -x "${altprog}" ] ; then
+		shift
+		set "${altprog}" "$@"
+	fi
+elif expr "${prog}" : "[a-z.-][a-z.-]*" >/dev/null ; then
+	# The first argument is just the name of the program.  Look for
+	# it in the build directory.
+	for libdir in $(find "${builddir}" -type d -name .libs -print) ; do
+		altprog=3D"${libdir}/${prog}"
+		if [ -x "${altprog}" ] ; then
+			shift
+			set "${altprog}" "$@"
+			break
+		fi
+	done
+fi
+
+# Let's go!
+exec gdb "$@"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/Makefile.am
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/Makefile.am	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,16 @@
+# $Id: Makefile.am 572 2012-04-05 15:41:44Z des $
+
+INCLUDES =3D -I$(top_srcdir)/include -I$(top_srcdir)/lib
+
+noinst_HEADERS =3D t.h
+
+# tests
+TESTS =3D t_openpam_readword t_openpam_readlinev
+check_PROGRAMS =3D $(TESTS)
+
+# libt - common support code
+check_LIBRARIES =3D libt.a
+libt_a_SOURCES =3D t_main.c
+
+# link with libpam and libt
+LDADD =3D libt.a $(top_builddir)/lib/libpam.la
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/Makefile.in
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,605 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# $Id: Makefile.am 572 2012-04-05 15:41:44Z des $
+
+VPATH =3D @srcdir@
+pkgdatadir =3D $(datadir)/@PACKAGE@
+pkgincludedir =3D $(includedir)/@PACKAGE@
+pkglibdir =3D $(libdir)/@PACKAGE@
+pkglibexecdir =3D $(libexecdir)/@PACKAGE@
+am__cd =3D CDPATH=3D"$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA =3D $(install_sh) -c -m 644
+install_sh_PROGRAM =3D $(install_sh) -c
+install_sh_SCRIPT =3D $(install_sh) -c
+INSTALL_HEADER =3D $(INSTALL_DATA)
+transform =3D $(program_transform_name)
+NORMAL_INSTALL =3D :
+PRE_INSTALL =3D :
+POST_INSTALL =3D :
+NORMAL_UNINSTALL =3D :
+PRE_UNINSTALL =3D :
+POST_UNINSTALL =3D :
+build_triplet =3D @build@
+host_triplet =3D @host@
+TESTS =3D t_openpam_readword$(EXEEXT) t_openpam_readlinev$(EXEEXT)
+check_PROGRAMS =3D $(am__EXEEXT_1)
+subdir =3D t
+DIST_COMMON =3D $(noinst_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in
+ACLOCAL_M4 =3D $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps =3D $(top_srcdir)/configure.ac
+am__configure_deps =3D $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs =3D $(install_sh) -d
+CONFIG_HEADER =3D $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =3D
+CONFIG_CLEAN_VPATH_FILES =3D
+ARFLAGS =3D cru
+libt_a_AR =3D $(AR) $(ARFLAGS)
+libt_a_LIBADD =3D
+am_libt_a_OBJECTS =3D t_main.$(OBJEXT)
+libt_a_OBJECTS =3D $(am_libt_a_OBJECTS)
+am__EXEEXT_1 =3D t_openpam_readword$(EXEEXT) \
+	t_openpam_readlinev$(EXEEXT)
+t_openpam_readlinev_SOURCES =3D t_openpam_readlinev.c
+t_openpam_readlinev_OBJECTS =3D t_openpam_readlinev.$(OBJEXT)
+t_openpam_readlinev_LDADD =3D $(LDADD)
+t_openpam_readlinev_DEPENDENCIES =3D libt.a \
+	$(top_builddir)/lib/libpam.la
+t_openpam_readword_SOURCES =3D t_openpam_readword.c
+t_openpam_readword_OBJECTS =3D t_openpam_readword.$(OBJEXT)
+t_openpam_readword_LDADD =3D $(LDADD)
+t_openpam_readword_DEPENDENCIES =3D libt.a $(top_builddir)/lib/libpam.la
+DEFAULT_INCLUDES =3D -I. at am__isrc@ -I$(top_builddir)
+depcomp =3D $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe =3D depfiles
+am__mv =3D mv -f
+COMPILE =3D $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE =3D $(LIBTOOL) --tag=3DCC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=3Dcompile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD =3D $(CC)
+LINK =3D $(LIBTOOL) --tag=3DCC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=3Dlink $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+SOURCES =3D $(libt_a_SOURCES) t_openpam_readlinev.c t_openpam_readword.c
+DIST_SOURCES =3D $(libt_a_SOURCES) t_openpam_readlinev.c \
+	t_openpam_readword.c
+HEADERS =3D $(noinst_HEADERS)
+ETAGS =3D etags
+CTAGS =3D ctags
+am__tty_colors =3D \
+red=3D; grn=3D; lgn=3D; blu=3D; std=3D
+DISTFILES =3D $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL =3D @ACLOCAL@
+AMTAR =3D @AMTAR@
+AR =3D @AR@
+AUTOCONF =3D @AUTOCONF@
+AUTOHEADER =3D @AUTOHEADER@
+AUTOMAKE =3D @AUTOMAKE@
+AWK =3D @AWK@
+CC =3D @CC@
+CCDEPMODE =3D @CCDEPMODE@
+CFLAGS =3D @CFLAGS@
+CPP =3D @CPP@
+CPPFLAGS =3D @CPPFLAGS@
+CRYPT_LIBS =3D @CRYPT_LIBS@
+CYGPATH_W =3D @CYGPATH_W@
+DEFS =3D @DEFS@
+DEPDIR =3D @DEPDIR@
+DLLTOOL =3D @DLLTOOL@
+DL_LIBS =3D @DL_LIBS@
+DSYMUTIL =3D @DSYMUTIL@
+DUMPBIN =3D @DUMPBIN@
+ECHO_C =3D @ECHO_C@
+ECHO_N =3D @ECHO_N@
+ECHO_T =3D @ECHO_T@
+EGREP =3D @EGREP@
+EXEEXT =3D @EXEEXT@
+FGREP =3D @FGREP@
+GREP =3D @GREP@
+INSTALL =3D @INSTALL@
+INSTALL_DATA =3D @INSTALL_DATA@
+INSTALL_PROGRAM =3D @INSTALL_PROGRAM@
+INSTALL_SCRIPT =3D @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM =3D @INSTALL_STRIP_PROGRAM@
+LD =3D @LD@
+LDFLAGS =3D @LDFLAGS@
+LIBOBJS =3D @LIBOBJS@
+LIBS =3D @LIBS@
+LIBTOOL =3D @LIBTOOL@
+LIB_MAJ =3D @LIB_MAJ@
+LIPO =3D @LIPO@
+LN_S =3D @LN_S@
+LTLIBOBJS =3D @LTLIBOBJS@
+MAKEINFO =3D @MAKEINFO@
+MANIFEST_TOOL =3D @MANIFEST_TOOL@
+MKDIR_P =3D @MKDIR_P@
+NM =3D @NM@
+NMEDIT =3D @NMEDIT@
+OBJDUMP =3D @OBJDUMP@
+OBJEXT =3D @OBJEXT@
+OPENPAM_MODULES_DIR =3D @OPENPAM_MODULES_DIR@
+OTOOL =3D @OTOOL@
+OTOOL64 =3D @OTOOL64@
+PACKAGE =3D @PACKAGE@
+PACKAGE_BUGREPORT =3D @PACKAGE_BUGREPORT@
+PACKAGE_NAME =3D @PACKAGE_NAME@
+PACKAGE_STRING =3D @PACKAGE_STRING@
+PACKAGE_TARNAME =3D @PACKAGE_TARNAME@
+PACKAGE_URL =3D @PACKAGE_URL@
+PACKAGE_VERSION =3D @PACKAGE_VERSION@
+PATH_SEPARATOR =3D @PATH_SEPARATOR@
+RANLIB =3D @RANLIB@
+SED =3D @SED@
+SET_MAKE =3D @SET_MAKE@
+SHELL =3D @SHELL@
+STRIP =3D @STRIP@
+VERSION =3D @VERSION@
+abs_builddir =3D @abs_builddir@
+abs_srcdir =3D @abs_srcdir@
+abs_top_builddir =3D @abs_top_builddir@
+abs_top_srcdir =3D @abs_top_srcdir@
+ac_ct_AR =3D @ac_ct_AR@
+ac_ct_CC =3D @ac_ct_CC@
+ac_ct_DUMPBIN =3D @ac_ct_DUMPBIN@
+am__include =3D @am__include@
+am__leading_dot =3D @am__leading_dot@
+am__quote =3D @am__quote@
+am__tar =3D @am__tar@
+am__untar =3D @am__untar@
+bindir =3D @bindir@
+build =3D @build@
+build_alias =3D @build_alias@
+build_cpu =3D @build_cpu@
+build_os =3D @build_os@
+build_vendor =3D @build_vendor@
+builddir =3D @builddir@
+datadir =3D @datadir@
+datarootdir =3D @datarootdir@
+docdir =3D @docdir@
+dvidir =3D @dvidir@
+exec_prefix =3D @exec_prefix@
+host =3D @host@
+host_alias =3D @host_alias@
+host_cpu =3D @host_cpu@
+host_os =3D @host_os@
+host_vendor =3D @host_vendor@
+htmldir =3D @htmldir@
+includedir =3D @includedir@
+infodir =3D @infodir@
+install_sh =3D @install_sh@
+libdir =3D @libdir@
+libexecdir =3D @libexecdir@
+localedir =3D @localedir@
+localstatedir =3D @localstatedir@
+mandir =3D @mandir@
+mkdir_p =3D @mkdir_p@
+oldincludedir =3D @oldincludedir@
+pdfdir =3D @pdfdir@
+prefix =3D @prefix@
+program_transform_name =3D @program_transform_name@
+psdir =3D @psdir@
+sbindir =3D @sbindir@
+sharedstatedir =3D @sharedstatedir@
+srcdir =3D @srcdir@
+sysconfdir =3D @sysconfdir@
+target_alias =3D @target_alias@
+top_build_prefix =3D @top_build_prefix@
+top_builddir =3D @top_builddir@
+top_srcdir =3D @top_srcdir@
+INCLUDES =3D -I$(top_srcdir)/include -I$(top_srcdir)/lib
+noinst_HEADERS =3D t.h
+
+# libt - common support code
+check_LIBRARIES =3D libt.a
+libt_a_SOURCES =3D t_main.c
+
+# link with libpam and libt
+LDADD =3D libt.a $(top_builddir)/lib/libpam.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign t/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign t/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(=
am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__dep=
files_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEP=
ENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-checkLIBRARIES:
+	-test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES)
+libt.a: $(libt_a_OBJECTS) $(libt_a_DEPENDENCIES)=20
+	-rm -f libt.a
+	$(libt_a_AR) libt.a $(libt_a_OBJECTS) $(libt_a_LIBADD)
+	$(RANLIB) libt.a
+
+clean-checkPROGRAMS:
+	@list=3D'$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=3D`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+t_openpam_readlinev$(EXEEXT): $(t_openpam_readlinev_OBJECTS) $(t_openpam_r=
eadlinev_DEPENDENCIES)=20
+	@rm -f t_openpam_readlinev$(EXEEXT)
+	$(LINK) $(t_openpam_readlinev_OBJECTS) $(t_openpam_readlinev_LDADD) $(LIB=
S)
+t_openpam_readword$(EXEEXT): $(t_openpam_readword_OBJECTS) $(t_openpam_rea=
dword_DEPENDENCIES)=20
+	@rm -f t_openpam_readword$(EXEEXT)
+	$(LINK) $(t_openpam_readword_OBJECTS) $(t_openpam_readword_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_openpam_readlinev.Po at am=
__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/t_openpam_readword.Po at am_=
_quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o =
$@ $<
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dno=
 @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o =
$@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dno=
 @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -=
o $@ $<
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source=3D'$<' object=3D'$@' libtool=3Dye=
s @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom=
p) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list=3D'$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=3D`pwd`; \
+	list=3D'$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=3D$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list=3D'$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=3D`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] =3D 1; nonempty =3D 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=3D`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=3D0; all=3D0; xfail=3D0; xpass=3D0; skip=3D0; \
+	srcdir=3D$(srcdir); export srcdir; \
+	list=3D' $(TESTS) '; \
+	$(am__tty_colors); \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=3D./; \
+	    elif test -f $$tst; then dir=3D; \
+	    else dir=3D"$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=3D`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xpass=3D`expr $$xpass + 1`; \
+		failed=3D`expr $$failed + 1`; \
+		col=3D$$red; res=3DXPASS; \
+	      ;; \
+	      *) \
+		col=3D$$grn; res=3DPASS; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=3D`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xfail=3D`expr $$xfail + 1`; \
+		col=3D$$lgn; res=3DXFAIL; \
+	      ;; \
+	      *) \
+		failed=3D`expr $$failed + 1`; \
+		col=3D$$red; res=3DFAIL; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=3D`expr $$skip + 1`; \
+	      col=3D$$blu; res=3DSKIP; \
+	    fi; \
+	    echo "$${col}$$res$${std}: $$tst"; \
+	  done; \
+	  if test "$$all" -eq 1; then \
+	    tests=3D"test"; \
+	    All=3D""; \
+	  else \
+	    tests=3D"tests"; \
+	    All=3D"All "; \
+	  fi; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner=3D"$$All$$all $$tests passed"; \
+	    else \
+	      if test "$$xfail" -eq 1; then failures=3Dfailure; else failures=3Df=
ailures; fi; \
+	      banner=3D"$$All$$all $$tests behaved as expected ($$xfail expected =
$$failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner=3D"$$failed of $$all $$tests failed"; \
+	    else \
+	      if test "$$xpass" -eq 1; then passes=3Dpass; else passes=3Dpasses; =
fi; \
+	      banner=3D"$$failed of $$all $$tests did not behave as expected ($$x=
pass unexpected $$passes)"; \
+	    fi; \
+	  fi; \
+	  dashes=3D"$$banner"; \
+	  skipped=3D""; \
+	  if test "$$skip" -ne 0; then \
+	    if test "$$skip" -eq 1; then \
+	      skipped=3D"($$skip test was not run)"; \
+	    else \
+	      skipped=3D"($$skip tests were not run)"; \
+	    fi; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes=3D"$$skipped"; \
+	  fi; \
+	  report=3D""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report=3D"Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes=3D"$$report"; \
+	  fi; \
+	  dashes=3D`echo "$$dashes" | sed s/./=3D/g`; \
+	  if test "$$failed" -eq 0; then \
+	    echo "$$grn$$dashes"; \
+	  else \
+	    echo "$$red$$dashes"; \
+	  fi; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes$$std"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+distdir: $(DISTFILES)
+	@srcdirstrip=3D`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=3D`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list=3D'$(DISTFILES)'; \
+	  dist_files=3D`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=3D.; else d=3D$(srcdir); fi=
; \
+	  if test -d $$d/$$file; then \
+	    dir=3D`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} =
\;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d !=3D $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} =
\;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM=3D"$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM=3D"$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=3D-s=
 \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=3DSTRIPPROG=3D'$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . =3D "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f=
 $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
+	clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/t.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/t.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: t.h 578 2012-04-06 00:45:59Z des $
+ */
+
+#ifndef T_H_INCLUDED
+#define T_H_INCLUDED
+
+#include <security/openpam_attr.h>
+
+struct t_test {
+	int (*func)(void);
+	const char *desc;
+};
+
+#define T_FUNC(n, d)				\
+	static int t_ ## n ## _func(void);	\
+	static const struct t_test t_ ## n =3D	\
+	    { t_ ## n ## _func, d };		\
+	static int t_ ## n ## _func(void)
+
+#define T(n)					\
+	&t_ ## n
+
+extern const char *t_progname;
+
+const struct t_test **t_prepare(int, char **);
+void t_cleanup(void);
+
+void t_verbose(const char *, ...)
+	OPENPAM_FORMAT((__printf__, 1, 2));
+
+#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/t_main.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/t_main.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,119 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: t_main.c 578 2012-04-06 00:45:59Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <err.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "t.h"
+
+const char *t_progname;
+
+static int verbose;
+
+void
+t_verbose(const char *fmt, ...)
+{
+	va_list ap;
+
+	if (verbose) {
+		va_start(ap, fmt);
+		vfprintf(stderr, fmt, ap);
+		va_end(ap);
+	}
+}
+
+static void
+usage(void)
+{
+
+	fprintf(stderr, "usage: [-v] %s\n", t_progname);
+	exit(1);
+}
+
+int
+main(int argc, char *argv[])
+{
+	const struct t_test **t_plan;
+	const char *desc;
+	int n, pass, fail;
+	int opt;
+
+	if ((t_progname =3D strrchr(argv[0], '/')) !=3D NULL)
+		t_progname++; /* one past the slash */
+	else
+		t_progname =3D argv[0];
+
+	while ((opt =3D getopt(argc, argv, "v")) !=3D -1)
+		switch (opt) {
+		case 'v':
+			verbose =3D 1;
+			break;
+		default:
+			usage();
+		}
+
+	argc -=3D optind;
+	argv +=3D optind;
+
+	/* prepare the test plan */
+	if ((t_plan =3D t_prepare(argc, argv)) =3D=3D NULL)
+		errx(1, "no plan\n");
+
+	/* count the tests */
+	for (n =3D 0; t_plan[n] !=3D NULL; ++n)
+		/* nothing */;
+	printf("1..%d\n", n);
+
+	/* run the tests */
+	for (n =3D pass =3D fail =3D 0; t_plan[n] !=3D NULL; ++n) {
+		desc =3D t_plan[n]->desc ? t_plan[n]->desc : "no description";
+		if ((*t_plan[n]->func)()) {
+			printf("ok %d - %s\n", n + 1, desc);
+			++pass;
+		} else {
+			printf("not ok %d - %s\n", n + 1, desc);
+			++fail;
+		}
+	}
+
+	/* clean up and exit */
+	t_cleanup();
+	exit(fail > 0 ? 1 : 0);
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/t_openpam_readl=
inev.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/t_openpam_readlinev.c	Wed Jul 25 16:21:35 2012=
 +0300
@@ -0,0 +1,342 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: t_openpam_readlinev.c 581 2012-04-06 01:08:37Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <security/pam_appl.h>
+#include <security/openpam.h>
+
+#include "openpam_impl.h"
+#include "t.h"
+
+static char filename[1024];
+static FILE *f;
+
+/*
+ * Open the temp file and immediately unlink it so it doesn't leak in case
+ * of premature exit.
+ */
+static void
+orlv_open(void)
+{
+	int fd;
+
+	if ((fd =3D open(filename, O_RDWR|O_CREAT|O_TRUNC, 0600)) < 0)
+		err(1, "%s(): %s", __func__, filename);
+	if ((f =3D fdopen(fd, "r+")) =3D=3D NULL)
+		err(1, "%s(): %s", __func__, filename);
+	if (unlink(filename) < 0)
+		err(1, "%s(): %s", __func__, filename);
+}
+
+/*
+ * Write text to the temp file.
+ */
+static void
+orlv_output(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	vfprintf(f, fmt, ap);
+	va_end(ap);
+	if (ferror(f))
+		err(1, "%s", filename);
+}
+
+/*
+ * Rewind the temp file.
+ */
+static void
+orlv_rewind(void)
+{
+
+	errno =3D 0;
+	rewind(f);
+	if (errno !=3D 0)
+		err(1, "%s(): %s", __func__, filename);
+}
+
+/*
+ * Read a line from the temp file and verify that the result matches our
+ * expectations: whether a line was read at all, how many and which words
+ * it contained, how many lines were read (in case of quoted or escaped
+ * newlines) and whether we reached the end of the file.
+ */
+static int
+orlv_expect(const char **expectedv, int lines, int eof)
+{
+	int expectedc, gotc, i, lineno =3D 0;
+	char **gotv;
+
+	expectedc =3D 0;
+	if (expectedv !=3D NULL)
+		while (expectedv[expectedc] !=3D NULL)
+			++expectedc;
+	gotv =3D openpam_readlinev(f, &lineno, &gotc);
+	if (ferror(f))
+		err(1, "%s(): %s", __func__, filename);
+	if (expectedv !=3D NULL && gotv =3D=3D NULL) {
+		t_verbose("expected %d words, got nothing\n", expectedc);
+		return (0);
+	}
+	if (expectedv =3D=3D NULL && gotv !=3D NULL) {
+		t_verbose("expected nothing, got %d words\n", gotc);
+		FREEV(gotc, gotv);
+		return (0);
+	}
+	if (expectedv !=3D NULL && gotv !=3D NULL) {
+		if (expectedc !=3D gotc) {
+			t_verbose("expected %d words, got %d\n",
+			    expectedc, gotc);
+			FREEV(gotc, gotv);
+			return (0);
+		}
+		for (i =3D 0; i < gotc; ++i) {
+			if (strcmp(expectedv[i], gotv[i]) !=3D 0) {
+				t_verbose("word %d: expected <<%s>>, "
+				    "got <<%s>>\n", i, expectedv[i], gotv[i]);
+				FREEV(gotc, gotv);
+				return (0);
+			}
+		}
+		FREEV(gotc, gotv);
+	}
+	if (lineno !=3D lines) {
+		t_verbose("expected to advance %d lines, advanced %d lines\n",
+		    lines, lineno);
+		return (0);
+	}
+	if (eof && !feof(f)) {
+		t_verbose("expected EOF, but didn't get it\n");
+		return (0);
+	}
+	if (!eof && feof(f)) {
+		t_verbose("didn't expect EOF, but got it anyway\n");
+		return (0);
+	}
+	return (1);
+}
+
+/*
+ * Close the temp file.
+ */
+void
+orlv_close(void)
+{
+
+	if (fclose(f) !=3D 0)
+		err(1, "%s(): %s", __func__, filename);
+	f =3D NULL;
+}
+=0C
+/*************************************************************************=
**
+ * Commonly-used lines
+ */
+
+static const char *empty[] =3D {
+	NULL
+};
+
+static const char *hello[] =3D {
+	"hello",
+	NULL
+};
+
+static const char *hello_world[] =3D {
+	"hello",
+	"world",
+	NULL
+};
+
+=0C
+/*************************************************************************=
**
+ * Lines without words
+ */
+
+T_FUNC(empty_input, "empty input")
+{
+	int ret;
+
+	orlv_open();
+	ret =3D orlv_expect(NULL, 0 /*lines*/, 1 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(empty_line, "empty line")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output("\n");
+	orlv_rewind();
+	ret =3D orlv_expect(empty, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(unterminated_empty_line, "unterminated empty line")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output(" ");
+	orlv_rewind();
+	ret =3D orlv_expect(NULL, 0 /*lines*/, 1 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(whitespace, "whitespace")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output(" \n");
+	orlv_rewind();
+	ret =3D orlv_expect(empty, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(comment, "comment")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output("# comment\n");
+	orlv_rewind();
+	ret =3D orlv_expect(empty, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(whitespace_before_comment, "whitespace before comment")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output(" # comment\n");
+	orlv_rewind();
+	ret =3D orlv_expect(empty, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Simple words
+ */
+
+T_FUNC(one_word, "one word")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output("hello\n");
+	orlv_rewind();
+	ret =3D orlv_expect(hello, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(two_words, "two words")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output("hello world\n");
+	orlv_rewind();
+	ret =3D orlv_expect(hello_world, 1 /*lines*/, 0 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+T_FUNC(unterminated_line, "unterminated line")
+{
+	int ret;
+
+	orlv_open();
+	orlv_output("hello world");
+	orlv_rewind();
+	ret =3D orlv_expect(hello_world, 0 /*lines*/, 1 /*eof*/);
+	orlv_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Boilerplate
+ */
+
+const struct t_test *t_plan[] =3D {
+	T(empty_input),
+	T(empty_line),
+	T(unterminated_empty_line),
+	T(whitespace),
+	T(comment),
+	T(whitespace_before_comment),
+
+	T(one_word),
+	T(two_words),
+	T(unterminated_line),
+
+	NULL
+};
+
+const struct t_test **
+t_prepare(int argc, char *argv[])
+{
+
+	(void)argc;
+	(void)argv;
+	snprintf(filename, sizeof filename, "%s.%d.tmp", t_progname, getpid());
+	if (filename =3D=3D NULL)
+		err(1, "asprintf()");
+	return (t_plan);
+}
+
+void
+t_cleanup(void)
+{
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/openpam/t/t_openpam_readw=
ord.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/openpam/t/t_openpam_readword.c	Wed Jul 25 16:21:35 2012 =
+0300
@@ -0,0 +1,829 @@
+/*-
+ * Copyright (c) 2012 Dag-Erling Sm=C3=B8rgrav
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ *    products derived from this software without specific prior written
+ *    permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: t_openpam_readword.c 584 2012-04-07 22:47:16Z des $
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <security/pam_appl.h>
+#include <security/openpam.h>
+
+#include "t.h"
+
+static char filename[1024];
+static FILE *f;
+
+/*
+ * Open the temp file and immediately unlink it so it doesn't leak in case
+ * of premature exit.
+ */
+static void
+orw_open(void)
+{
+	int fd;
+
+	if ((fd =3D open(filename, O_RDWR|O_CREAT|O_TRUNC, 0600)) < 0)
+		err(1, "%s(): %s", __func__, filename);
+	if ((f =3D fdopen(fd, "r+")) =3D=3D NULL)
+		err(1, "%s(): %s", __func__, filename);
+	if (unlink(filename) < 0)
+		err(1, "%s(): %s", __func__, filename);
+}
+
+/*
+ * Write text to the temp file.
+ */
+static void
+orw_output(const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	vfprintf(f, fmt, ap);
+	va_end(ap);
+	if (ferror(f))
+		err(1, "%s", filename);
+}
+
+/*
+ * Rewind the temp file.
+ */
+static void
+orw_rewind(void)
+{
+
+	errno =3D 0;
+	rewind(f);
+	if (errno !=3D 0)
+		err(1, "%s(): %s", __func__, filename);
+}
+
+/*
+ * Read a word from the temp file and verify that the result matches our
+ * expectations: whether a word was read at all, how many lines were read
+ * (in case of quoted or escaped newlines), whether we reached the end of
+ * the file and whether we reached the end of the line.
+ */
+static int
+orw_expect(const char *expected, int lines, int eof, int eol)
+{
+	int ch, lineno =3D 0;
+	char *got;
+	size_t len;
+
+	got =3D openpam_readword(f, &lineno, &len);
+	if (ferror(f))
+		err(1, "%s(): %s", __func__, filename);
+	if (expected !=3D NULL && got =3D=3D NULL) {
+		t_verbose("expected <<%s>>, got nothing\n", expected);
+		return (0);
+	}
+	if (expected =3D=3D NULL && got !=3D NULL) {
+		t_verbose("expected nothing, got <<%s>>\n", got);
+		return (0);
+	}
+	if (expected !=3D NULL && got !=3D NULL && strcmp(expected, got) !=3D 0) {
+		t_verbose("expected <<%s>>, got <<%s>>\n", expected, got);
+		return (0);
+	}
+	if (lineno !=3D lines) {
+		t_verbose("expected to advance %d lines, advanced %d lines\n",
+		    lines, lineno);
+		return (0);
+	}
+	if (eof && !feof(f)) {
+		t_verbose("expected EOF, but didn't get it\n");
+		return (0);
+	}
+	if (!eof && feof(f)) {
+		t_verbose("didn't expect EOF, but got it anyway\n");
+		return (0);
+	}
+	ch =3D fgetc(f);
+	if (ferror(f))
+		err(1, "%s(): %s", __func__, filename);
+	if (eol && ch !=3D '\n') {
+		t_verbose("expected EOL, but didn't get it\n");
+		return (0);
+	}
+	if (!eol && ch =3D=3D '\n') {
+		t_verbose("didn't expect EOL, but got it anyway\n");
+		return (0);
+	}
+	if (ch !=3D EOF)
+		ungetc(ch, f);
+	return (1);
+}
+
+/*
+ * Close the temp file.
+ */
+void
+orw_close(void)
+{
+
+	if (fclose(f) !=3D 0)
+		err(1, "%s(): %s", __func__, filename);
+	f =3D NULL;
+}
+
+=0C
+/*************************************************************************=
**
+ * Lines without words
+ */
+
+T_FUNC(empty_input, "empty input")
+{
+	int ret;
+
+	orw_open();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(empty_line, "empty line")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(unterminated_line, "unterminated line")
+{
+	int ret;
+
+	orw_open();
+	orw_output(" ");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_whitespace, "single whitespace")
+{
+	int ret;
+
+	orw_open();
+	orw_output(" \n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(multiple_whitespace, "multiple whitespace")
+{
+	int ret;
+
+	orw_open();
+	orw_output(" \t\r\n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(comment, "comment")
+{
+	int ret;
+
+	orw_open();
+	orw_output("# comment\n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(whitespace_before_comment, "whitespace before comment")
+{
+	int ret;
+
+	orw_open();
+	orw_output(" # comment\n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Simple cases - no quotes or escapes
+ */
+
+T_FUNC(single_word, "single word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output("%s\n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_whitespace_before_word, "single whitespace before word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output(" %s\n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(double_whitespace_before_word, "double whitespace before word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output("  %s\n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_whitespace_after_word, "single whitespace after word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output("%s \n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(double_whitespace_after_word, "double whitespace after word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output("%s  \n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(comment_after_word, "comment after word")
+{
+	const char *word =3D "hello";
+	int ret;
+
+	orw_open();
+	orw_output("%s # comment\n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(word_containing_hash, "word containing hash")
+{
+	const char *word =3D "hello#world";
+	int ret;
+
+	orw_open();
+	orw_output("%s\n", word);
+	orw_rewind();
+	ret =3D orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(two_words, "two words")
+{
+	const char *word[] =3D { "hello", "world" };
+	int ret;
+
+	orw_open();
+	orw_output("%s %s\n", word[0], word[1]);
+	orw_rewind();
+	ret =3D orw_expect(word[0], 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect(word[1], 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Escapes
+ */
+
+T_FUNC(naked_escape, "naked escape")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_escape, "escaped escape")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\\\\n");
+	orw_rewind();
+	ret =3D orw_expect("\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_whitespace, "escaped whitespace")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\  \\\t \\\r \\\n\n");
+	orw_rewind();
+	ret =3D orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    /* this last one is a line continuation */
+	    orw_expect(NULL, 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_newline_before_word, "escaped newline before word")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\\nhello world\n");
+	orw_rewind();
+	ret =3D orw_expect("hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_newline_within_word, "escaped newline within word")
+{
+	int ret;
+
+	orw_open();
+	orw_output("hello\\\nworld\n");
+	orw_rewind();
+	ret =3D orw_expect("helloworld", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_newline_after_word, "escaped newline after word")
+{
+	int ret;
+
+	orw_open();
+	orw_output("hello\\\n world\n");
+	orw_rewind();
+	ret =3D orw_expect("hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_letter, "escaped letter")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\z\n");
+	orw_rewind();
+	ret =3D orw_expect("z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Quotes
+ */
+
+T_FUNC(naked_single_quote, "naked single quote")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(naked_double_quote, "naked double quote")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(empty_single_quotes, "empty single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("''\n");
+	orw_rewind();
+	ret =3D orw_expect("", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(empty_double_quotes, "empty double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\"\n");
+	orw_rewind();
+	ret =3D orw_expect("", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_quotes_within_double_quotes, "single quotes within double qu=
otes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"' '\"\n");
+	orw_rewind();
+	ret =3D orw_expect("' '", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(double_quotes_within_single_quotes, "double quotes within single qu=
otes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\" \"'\n");
+	orw_rewind();
+	ret =3D orw_expect("\" \"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_quoted_whitespace, "single-quoted whitespace")
+{
+	int ret;
+
+	orw_open();
+	orw_output("' ' '\t' '\r' '\n'\n");
+	orw_rewind();
+	ret =3D orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(double_quoted_whitespace, "double-quoted whitespace")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\" \" \"\t\" \"\r\" \"\n\"\n");
+	orw_rewind();
+	ret =3D orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(single_quoted_words, "single-quoted words")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'hello world'\n");
+	orw_rewind();
+	ret =3D orw_expect("hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(double_quoted_words, "double-quoted words")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"hello world\"\n");
+	orw_rewind();
+	ret =3D orw_expect("hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Combinations of escape and quotes
+ */
+
+T_FUNC(escaped_single_quote,
+    "escaped single quote")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\'\n");
+	orw_rewind();
+	ret =3D orw_expect("'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_double_quote,
+    "escaped double quote")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\\\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_whitespace_within_single_quotes,
+    "escaped whitespace within single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\\ ' '\\\t' '\\\r' '\\\n'\n");
+	orw_rewind();
+	ret =3D orw_expect("\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\\\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_whitespace_within_double_quotes,
+    "escaped whitespace within double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\\ \" \"\\\t\" \"\\\r\" \"\\\n\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    orw_expect("\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
+	    /* this last one is a line continuation */
+	    orw_expect("", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_letter_within_single_quotes,
+    "escaped letter within single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\\z'\n");
+	orw_rewind();
+	ret =3D orw_expect("\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_letter_within_double_quotes,
+    "escaped letter within double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\\z\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_escape_within_single_quotes,
+    "escaped escape within single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\\\\'\n");
+	orw_rewind();
+	ret =3D orw_expect("\\\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_escape_within_double_quotes,
+    "escaped escape within double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\\\\\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_single_quote_within_single_quotes,
+    "escaped single quote within single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\\''\n");
+	orw_rewind();
+	ret =3D orw_expect(NULL, 1 /*lines*/, 1 /*eof*/, 0 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_double_quote_within_single_quotes,
+    "escaped double quote within single quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("'\\\"'\n");
+	orw_rewind();
+	ret =3D orw_expect("\\\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_single_quote_within_double_quotes,
+    "escaped single quote within double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\\'\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\\'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+T_FUNC(escaped_double_quote_within_double_quotes,
+    "escaped double quote within double quotes")
+{
+	int ret;
+
+	orw_open();
+	orw_output("\"\\\"\"\n");
+	orw_rewind();
+	ret =3D orw_expect("\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
+	orw_close();
+	return (ret);
+}
+
+=0C
+/*************************************************************************=
**
+ * Boilerplate
+ */
+
+const struct t_test *t_plan[] =3D {
+	T(empty_input),
+	T(empty_line),
+	T(single_whitespace),
+	T(multiple_whitespace),
+	T(comment),
+	T(whitespace_before_comment),
+
+	T(single_word),
+	T(single_whitespace_before_word),
+	T(double_whitespace_before_word),
+	T(single_whitespace_after_word),
+	T(double_whitespace_after_word),
+	T(comment_after_word),
+	T(word_containing_hash),
+	T(two_words),
+
+	T(naked_escape),
+	T(escaped_escape),
+	T(escaped_whitespace),
+	T(escaped_newline_before_word),
+	T(escaped_newline_within_word),
+	T(escaped_newline_after_word),
+	T(escaped_letter),
+
+	T(naked_single_quote),
+	T(naked_double_quote),
+	T(empty_single_quotes),
+	T(empty_double_quotes),
+	T(single_quotes_within_double_quotes),
+	T(double_quotes_within_single_quotes),
+	T(single_quoted_whitespace),
+	T(double_quoted_whitespace),
+	T(single_quoted_words),
+	T(double_quoted_words),
+
+	T(escaped_single_quote),
+	T(escaped_double_quote),
+	T(escaped_whitespace_within_single_quotes),
+	T(escaped_whitespace_within_double_quotes),
+	T(escaped_letter_within_single_quotes),
+	T(escaped_letter_within_double_quotes),
+	T(escaped_escape_within_single_quotes),
+	T(escaped_escape_within_double_quotes),
+	T(escaped_single_quote_within_single_quotes),
+	T(escaped_double_quote_within_single_quotes),
+	T(escaped_single_quote_within_double_quotes),
+	T(escaped_double_quote_within_double_quotes),
+
+	NULL
+};
+
+const struct t_test **
+t_prepare(int argc, char *argv[])
+{
+
+	(void)argc;
+	(void)argv;
+	snprintf(filename, sizeof filename, "%s.%d.tmp", t_progname, getpid());
+	if (filename =3D=3D NULL)
+		err(1, "asprintf()");
+	return (t_plan);
+}
+
+void
+t_cleanup(void)
+{
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/CHANGES
--- a/head/contrib/tcpdump/CHANGES	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/CHANGES	Wed Jul 25 16:21:35 2012 +0300
@@ -1,3 +1,64 @@
+Friday  December 9, 2011.  guy at alum.mit.edu.
+  Summary for 4.2.1 tcpdump release
+	Only build the Babel printer if IPv6 is enabled.
+	Support Babel on port 6696 as well as 6697.
+	Include ppi.h in release tarball.
+	Include all the test files in the release tarball, and don't
+	 "include" test files that no longer exist.
+	Don't assume we have <rpc/rpc.h> - check for it.
+	Support "-T carp" as a way of dissecting IP protocol 112 as CARP
+	 rather than VRRP.
+	Support Hilscher NetAnalyzer link-layer header format.
+	Constify some pointers and fix compiler warnings.
+	Get rid of never-true test.
+	Fix an unintended fall-through in a case statement in the ARP
+	 printer.
+	Fix several cases where sizeof(sizeof(XXX)) was used when just
+	 sizeof(XXX) was intended.
+	Make stricter sanity checks in the ES-IS printer.
+	Get rid of some GCCisms that caused builds to fai with compilers
+	 that don't support them.
+	Fix typo in man page.
+	Added length checks to Babel printer.
+
+Sunday  July 24, 2011.  mcr at sandelman.ca.
+  Summary for 4.2.+
+	merged 802.15.4 decoder from Dmitry Eremin-Solenikov <dbaryshkov
+	  at gmail dot com>
+        updates to forces for new port numbers
+        Use "-H", not "-h", for the 802.11s option. (-h always help)
+        Better ICMPv6 checksum handling.
+        add support for the RPKI/Router Protocol, per -ietf-sidr-rpki-rtr-=
12
+        get rid of uuencoded pcap test files, git can do binary.
+        sFlow changes for 64-bit counters.
+        fixes for PPI packet header handling and printing.
+        Add DCB Exchange protocol (DCBX) version 1.01.
+        Babel dissector, from Juliusz Chroboczek and Gr=C3=A9goire Henry.
+        improvements to radiotap for rate values > 127.
+        Many improvements to ForCES decode, including fix SCTP TML port
+        updated RPL type code to RPL-17 draft
+        Improve printout of DHCPv6 options.
+        added support and test case for QinQ (802.1q VLAN) packets
+        Handle DLT_IEEE802_15_4_NOFCS like DLT_IEEE802_15_4.
+        Build fixes for Sparc and other machines with alignment restrictio=
ns.
+        Merged changes from Debian package.
+        PGM: Add ACK decoding and add PGMCC DATA and FEEDBACK options.
+        Build fixes for OSX (Snow Leopard and others)
+        Add support for IEEE 802.15.4 packets
+
+Tue.    July 20, 2010.  guy at alum.mit.edu.
+  Summary for 4.1.2 tcpdump release
+	If -U is specified, flush the file after creating it, so it's
+	  not zero-length
+	Fix TCP flags output description, and some typoes, in the man
+	  page
+	Add a -h flag, and only attempt to recognize 802.11s mesh
+	  headers if it's set
+	When printing the link-layer type list, send *all* output to
+	  stderr
+	Include the CFLAGS setting when configure was run in the
+	  compiler flags
+
 Thu.	April 1, 2010.  guy at alum.mit.edu.
   Summary for 4.1.1 tcpdump release
 	Fix build on systems with PF, such as FreeBSD and OpenBSD.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/CREDITS
--- a/head/contrib/tcpdump/CREDITS	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/CREDITS	Wed Jul 25 16:21:35 2012 +0300
@@ -1,189 +1,203 @@
 This file lists people who have contributed to tcpdump:
=20
 The current maintainers:
-	Bill Fenner			<fenner at research dot att dot com>
-        David Young                     <dyoung at pobox dot com>
-	Fulvio Risso			<risso at polito dot it>
-	Guy Harris	 		<guy at alum dot mit dot edu>
-	Hannes Gredler			<hannes at juniper dot net>
-	Michael Richardson	 	<mcr at sandelman dot ottawa dot on dot ca>
+    Bill Fenner                   <fenner at research dot att dot com>
+    David Young                   <dyoung at pobox dot com>
+    Fulvio Risso                  <risso at polito dot it>
+    Guy Harris                    <guy at alum dot mit dot edu>
+    Hannes Gredler                <hannes at juniper dot net>
+    Michael Richardson            <mcr at sandelman dot ottawa dot on dot =
ca>
=20
 Additional people who have contributed patches:
=20
-        Aaron Campbell                  <aaron at arbor dot net>
-	Alfredo Andres			<aandres at s21sec dot com>
-	Albert Chin			<china at thewrittenword dot com>
-	Ananth Suryanarayana 		<anantha at juniper dot net>
-        Andrea Bittau                   <a dot bittau at cs dot ucl dot ac=
 dot uk>
-	Andrew Brown			<atatat at atatdot dot net>
-	Andrew Church			<andrew at users dot sourceforge dot net>
-	Andrew Hintz			<adhintz at users dot sourceforge dot net>
-	Andrew Silent			<andrew at nording dot ru>
-	Andrew Tridgell			<tridge at linuxcare dot com>
-        Andy Heffernan                  <ahh at juniper dot net>
-	Arkadiusz Miskiewicz 		<misiek at pld dot org dot pl>
-	Armando L. Caro Jr. 		<acaro at mail dot eecis dot udel dot edu>
-	Arnaldo Carvalho de Melo	<acme at ghostprotocols dot net>
-	Ben Byer			<bushing at sourceforge dot net>
-	Atsushi Onoe			<onoe at netbsd dot org>
-	Ben Smithurst			<ben at scientia dot demon dot co dot uk>
-	Bert Vermeulen			<bert at biot dot com>
-	Bjoern A. Zeeb			<bzeeb at Zabbadoz dot NeT>
-	Brent L. Bates			<blbates at vigyan dot com>
-	Brian Ginsbach			<ginsbach at cray dot com>
-	Bruce M. Simpson		<bms at spc dot org>
-	Carles Kishimoto Bisbe          <ckishimo at ac dot upc dot es>
-	Charlie Lenahan			<clenahan at fortresstech dot com>
-	Charles M. Hannum		<mycroft at netbsd dot org>
-	Chris Cogdon			<chris at cogdon dot org>
-	Chris G. Demetriou		<cgd at netbsd dot org>
-	Christian Sievers		<c_s at users dot sourceforge dot net>
-	Chris Jepeway			<jepeway at blasted-heath dot com>
-	Chris Larson			<clarson at kergoth dot com>
-	Craig Rodrigues			<rodrigc at mediaone dot net>
-	Crist J. Clark			<cjclark at alum dot mit dot edu>
-	Daniel Hagerty 			<hag at ai dot mit dot edu>
-	Darren Reed			<darrenr at reed dot wattle dot id dot au>
-	David Binderman			<d dot binderman at virgin dot net>
-	David Horn			<dhorn2000 at gmail dot com>
-	David Smith			<dsmith at redhat dot com>
-	David Young			<dyoung at ojctech dot com>
-	Don Ebright			<Don dot Ebright at compuware dot com>
-	Eddie Kohler			<xexd at sourceforge dot net>
-	Elmar Kirchner			<elmar at juniper dot net>
-	Fang Wang			<fangwang at sourceforge dot net>
-	Florent Drouin			<Florent dot Drouin at alcatel-lucent dot fr>
-	Florian Forster			<octo at verplant dot org>
-	Francis Dupont			<Francis dot Dupont at enst-bretagne dot fr>
-	Francisco Matias Cuenca-Acuna	<mcuenca at george dot rutgers dot edu>
-	Francois-Xavier Le Bail		<fx dot lebail at yahoo dot com>
-	Frank Volf			<volf at oasis dot IAEhv dot nl>
-	Fulvio Risso			<risso at polito dot it>
-	George Bakos			<gbakos at ists dot dartmouth dot edu>
-	Gerald Combs			<gerald at ethereal dot com>
-        Gerrit Renker                   <gerrit at erg dot abdn dot ac dot=
 uk>
-	Gert Doering			<gert at greenie dot muc dot de>
-	Greg Minshall			<minshall at acm dot org>
-        Greg Stark                      <gsstark at mit dot edu>
-	Gilbert Ramirez Jr.		<gram at xiexie dot org>
-	Gisle Vanem			<giva at bgnett dot no>
-        Hannes Viertel                  <hviertel at juniper dot net>
-	Hank Leininger			<tcpdump-workers at progressive-comp dot com>
-	Harry Raaymakers		<harryr at connect dot com dot au>
-	Heinz-Ado Arnolds		<Ado dot Arnolds at dhm-systems dot de>
-	Hendrik Scholz			<hendrik at scholz dot net>
-	Ian McDonald			<imcdnzl at gmail dot com>
-	Ilpo J=C3=A4rvinen			<ilpo dot jarvinen at helsinki dot fi>
-	Jacek Tobiasz			<Jacek dot Tobiasz at atm dot com dot pl>
-	Jakob Schlyter			<jakob at openbsd dot org>
-	Jamal Hadi Salim 		<hadi at cyberus dot ca>
-	Jan Oravec			<wsx at wsx6 dot net>
-	Jason R. Thorpe			<thorpej at netbsd dot org>
-	Jefferson Ogata 		<jogata at nodc dot noaa dot gov>
-	Jeffrey Hutzelman		<jhutz at cmu dot edu>
-	Jesper Peterson			<jesper at endace dot com>
-	Jim Hutchins			<jim at ca dot sandia dot gov>
-        Jonathan Heusser                <jonny at drugphish dot ch>
-	Tatuya Jinmei			<jinmei at kame dot net>
-	Jo=C3=A3o Medeiros			<ignotus21 at sourceforge dot net>
-	Joerg Mayer			<jmayer at loplof.de>
-	J=C3=B8rgen Thomsen			<jth at jth dot net>=20
-	Julian Cowley			<julian at lava dot net>
-	Kaarthik Sivakumar		<kaarthik at torrentnet dot com>
-	Karl Norby			<karl-norby at sourceforge dot net>
-	Kazushi Sugyo			<sugyo at pb dot jp dot nec dot com>
-	Kelly Carmichael		<kcarmich at ipapp dot com>
-	Ken Hornstein			<kenh at cmf dot nrl dot navy dot mil>
-	Kevin Steves			<stevesk at pobox dot com>
-	Klaus Klein			<kleink at reziprozitaet dot de>
- 	Kris Kennaway			<kris at freebsd dot org>
-	Krzysztof Halasa		<khc at pm dot waw dot pl>
-	Larry Lile			<lile at stdio dot com>
-	Lennert Buytenhek 		<buytenh at gnu dot org>
-	Loris Degioanni			<loris at netgroup-serv dot polito dot it>
-	Love H=C3=B6rnquist-=C3=85strand		<lha at stacken dot kth dot se>
-	Lucas C. Villa Real		<lucasvr at us dot ibm dot com>
-	Luis Martin Garcia		<luis dot mgarc at gmail dot com>
-	Maciej W. Rozycki		<macro at ds2 dot pg dot gda dot pl>
-	Manu Pathak			<mapathak at cisco dot com>
-	Marc Binderberger		<mbind at sourceforge dot net>
-	Marc A. Lehmann			<pcg at goof dot com>
-	Mark Ellzey Thomas		<mark at ackers dot net>
-	Marko Kiiskila			<carnil at cs dot tut dot fi>
-	Markus Sch=C3=B6pflin		<schoepflin at sourceforge dot net>
-	Marshall Rose			<mrose at dbc dot mtview dot ca dot us>
-	Martin Husemann			<martin at netbsd dot org>
-	Max Laier			<max at love2party dot net>
-	Michael A. Meffie III		<meffie at sourceforge dot net>
-	Michael Madore			<mmadore at turbolinux dot com>
-	Michael Riepe			<too-tired at sourceforge dot net>
-	Michael Shalayeff		<mickey at openbsd dot org>
-	Michael Shields			<shields at msrl dot com>
-	Michael T. Stolarchuk		<mts at off dot to>
-	Michele "mydecay" Marchetto	<smarchetto1 at tin dot it>
-	Mike Frysinger			<vapier at gmail dot com>
-	Monroe Williams 		<monroe at pobox dot com>
-	Motonori Shindo			<mshindo at mshindo dot net>
-	Nathan J. Williams		<nathanw at MIT dot EDU>
-	Nathaniel Couper-Noles		<Nathaniel at isi1 dot tccisi dot com>
-	Neil T. Spring			<bluehal at users dot sourceforge dot net>
-	Niels Provos			<provos at openbsd dot org>
-	Nickolai Zeldovich		<kolya at MIT dot EDU>
-        Nicolas Ferrero                 <toorop at babylo dot net>
-	Noritoshi Demizu		<demizu at users dot sourceforge dot net>
-	Olaf Kirch 			<okir at caldera dot de>
-	Onno van der Linden		<onno at simplex dot nl>
-	Paolo Abeni			<paolo dot abeni at email dot it>
-	Pascal Hennequin 		<pascal dot hennequin at int-evry dot fr>
-	Pasvorn Boonmark		<boonmark at juniper dot net>
-	Paul Mundt			<lethal at linux-sh dot org>
-	Paul S. Traina			<pst at freebsd dot org>
-	Pavlin Radoslavov		<pavlin at icir dot org>
-	Pekka Savola 			<pekkas at netcore dot fi>=09
-	Peter Fales			<peter at fales-lorenz dot net>
-	Peter Jeremy			<peter dot jeremy at alcatel dot com dot au>
-					<pfhunt at users dot sourceforge dot net>
-	Peter Volkov			<pva at gentoo dot org>
-	Phil Wood			<cpw at lanl dot gov>
-	Rafal Maszkowski		<rzm at icm dot edu dot pl>
-	Randy Sofia			<rsofia at users dot sourceforge dot net>
-	Raphael Raimbault		<raphael dot raimbault at netasq dot com>
-	Rick Cheng                      <rcheng at juniper dot net>
-	Rick Jones			<rick dot jones2 at hp dot com>
-	Rick Watson			<watsonrick at users dot sourceforge dot net>
-	Rob Braun			<bbraun at synack dot net>
-	Robert Edmonds			<stu-42 at sourceforge dot net>
-	Roderick Schertler		<roderick at argon dot org>
-	Sagun Shakya			<sagun dot shakya at sun dot com>
-	Sami Farin			<safari at iki dot fi>
-	Scott Rose			<syberpunk at users dot sourceforge dot net>
-	Sebastian Krahmer		<krahmer at cs dot uni-potsdam dot de>
-	Sebastien Raveau		<sebastien dot raveau at epita dot fr>
-	Sebastien Vincent		<svincent at idems dot fr>
-	Sepherosa Ziehau		<sepherosa at gmail dot com>
-	Seth Webster			<swebster at sst dot ll dot mit dot edu>
-	Shinsuke Suzuki			<suz at kame dot net>
-	Steinar Haug			<sthaug at nethelp dot no>
-        Swaminathan Chandrasekaran      <chander at juniper dot net>
-	Takashi Yamamoto		<yamt at mwd dot biglobe dot ne dot jp>
-	Terry Kennedy			<terry at tmk dot com>
-	Timo Koskiahde
-	Tony Li				<tli at procket dot com>
-	Toshihiro Kanda			<candy at fct dot kgc dot co dot jp>
-	Uns Lider			<unslider at miranda dot org>
-	Victor Oppleman			<oppleman at users dot sourceforge dot net>
-	Wesley Griffin			<wgriffin at users dot sourceforge dot net>
-	Wesley Shields			<wxs at FreeBSD dot org>
-	Wilbert de Graaf		<wilbertdg at hetnet dot nl>
-	Will Drewry			<will at alum dot bu dot edu>
-	William J. Hulley		<bill dot hulley at gmail dot com>
-	Yen Yen Lim
-	Yoshifumi Nishida
+    A Costa                       <agcosta at gis dot net>
+    Aaron Campbell                <aaron at arbor dot net>
+    Alfredo Andres                <aandres at s21sec dot com>
+    Albert Chin                   <china at thewrittenword dot com>
+    Ananth Suryanarayana          <anantha at juniper dot net>
+    Andrea Bittau                 <a dot bittau at cs dot ucl dot ac dot u=
k>
+    Andrew Brown                  <atatat at atatdot dot net>
+    Andrew Church                 <andrew at users dot sourceforge dot net>
+    Andrew Hintz                  <adhintz at users dot sourceforge dot ne=
t>
+    Andrew Nording                <andrew at nording dot ru>
+    Andrew Tridgell               <tridge at linuxcare dot com>
+    Andy Heffernan                <ahh at juniper dot net>
+    Anton Bernal                  <anton at juniper dot net>
+    Arkadiusz Miskiewicz          <misiek at pld dot org dot pl>
+    Armando L. Caro Jr.           <acaro at mail dot eecis dot udel dot ed=
u>
+    Arnaldo Carvalho de Melo      <acme at ghostprotocols dot net>
+    Ben Byer                      <bushing at sourceforge dot net>
+    Atsushi Onoe                  <onoe at netbsd dot org>
+    Ben Smithurst                 <ben at scientia dot demon dot co dot uk>
+    Bert Vermeulen                <bert at biot dot com>
+    Bjoern A. Zeeb                <bzeeb at Zabbadoz dot NeT>
+    Brent L. Bates                <blbates at vigyan dot com>
+    Brian Ginsbach                <ginsbach at cray dot com>
+    Bruce M. Simpson              <bms at spc dot org>
+    Carles Kishimoto Bisbe        <ckishimo at ac dot upc dot es>
+    Charlie Lenahan               <clenahan at fortresstech dot com>
+    Charles M. Hannum             <mycroft at netbsd dot org>
+    Chris Cogdon                  <chris at cogdon dot org>
+    Chris G. Demetriou            <cgd at netbsd dot org>
+    Chris Jepeway                 <jepeway at blasted-heath dot com>
+    Chris Larson                  <clarson at kergoth dot com>
+    Christian Sievers             <c_s at users dot sourceforge dot net>
+    Christophe Rhodes             <csr21 at cantab dot net>
+    Craig Rodrigues               <rodrigc at mediaone dot net>
+    Crist J. Clark                <cjclark at alum dot mit dot edu>
+    Daniel Hagerty                <hag at ai dot mit dot edu>
+    Darren Reed                   <darrenr at reed dot wattle dot id dot a=
u>
+    David Binderman               <d dot binderman at virgin dot net>
+    David Horn                    <dhorn2000 at gmail dot com>
+    David Smith                   <dsmith at redhat dot com>
+    David Young                   <dyoung at ojctech dot com>
+    Dmitry Eremin-Solenikov       <dbaryshkov at gmail dot com>
+    Don Ebright                   <Don dot Ebright at compuware dot com>
+    Eddie Kohler                  <xexd at sourceforge dot net>
+    Elmar Kirchner                <elmar at juniper dot net>
+    Fang Wang                     <fangwang at sourceforge dot net>
+    Florent Drouin                <Florent dot Drouin at alcatel-lucent do=
t fr>
+    Florian Forster               <octo at verplant dot org>
+    Francis Dupont                <Francis dot Dupont at enst-bretagne dot=
 fr>
+    Francisco Matias Cuenca-Acuna <mcuenca at george dot rutgers dot edu>
+    Francois-Xavier Le Bail       <fx dot lebail at yahoo dot com>
+    Frank Volf                    <volf at oasis dot IAEhv dot nl>
+    Fulvio Risso                  <risso at polito dot it>
+    George Bakos                  <gbakos at ists dot dartmouth dot edu>
+    Gerald Combs                  <gerald at ethereal dot com>
+    Gerrit Renker                 <gerrit at erg dot abdn dot ac dot uk>
+    Gert Doering                  <gert at greenie dot muc dot de>
+    Greg Minshall                 <minshall at acm dot org>
+    Greg Stark                    <gsstark at mit dot edu>
+    Gr=C3=A9goire Henry                <henry at pps.jussieu.fr>
+    Gilbert Ramirez Jr.           <gram at xiexie dot org>
+    Gisle Vanem                   <gvanem at broadpark dot no>
+    Hannes Viertel                <hviertel at juniper dot net>
+    Hank Leininger                <tcpdump-workers at progressive-comp dot=
 com>
+    Harry Raaymakers              <harryr at connect dot com dot au>
+    Heinz-Ado Arnolds             <Ado dot Arnolds at dhm-systems dot de>
+    Hendrik Scholz                <hendrik at scholz dot net>
+    Ian McDonald                  <imcdnzl at gmail dot com>
+    Ilpo J=C3=A4rvinen                 <ilpo dot jarvinen at helsinki dot =
fi>
+    Jacek Tobiasz                 <Jacek dot Tobiasz at atm dot com dot pl>
+    Jakob Schlyter                <jakob at openbsd dot org>
+    Jamal Hadi Salim              <hadi at cyberus dot ca>
+    Jan Oravec                    <wsx at wsx6 dot net>
+    Jason R. Thorpe               <thorpej at netbsd dot org>
+    Jefferson Ogata               <jogata at nodc dot noaa dot gov>
+    Jeffrey Hutzelman             <jhutz at cmu dot edu>
+    Jesper Peterson               <jesper at endace dot com>
+    Jim Hutchins                  <jim at ca dot sandia dot gov>
+    Jonathan Heusser              <jonny at drugphish dot ch>
+    Tatuya Jinmei                 <jinmei at kame dot net>
+    Jo=C3=A3o Medeiros                 <ignotus21 at sourceforge dot net>
+    Joerg Mayer                   <jmayer at loplof.de>
+    J=C3=B8rgen Thomsen                <jth at jth dot net>=20
+    Julian Cowley                 <julian at lava dot net>
+    Juliusz Chroboczek            <jch at pps.jussieu.fr>
+    Kaarthik Sivakumar            <kaarthik at torrentnet dot com>
+    Kaladhar Musunuru             <kaladharm at sourceforge dot net>
+    Karl Norby                    <karl-norby at sourceforge dot net>
+    Kazushi Sugyo                 <sugyo at pb dot jp dot nec dot com>
+    Kelly Carmichael              <kcarmich at ipapp dot com>
+    Ken Hornstein                 <kenh at cmf dot nrl dot navy dot mil>
+    Kevin Steves                  <stevesk at pobox dot com>
+    Klaus Klein                   <kleink at reziprozitaet dot de>
+    Kris Kennaway                 <kris at freebsd dot org>
+    Krzysztof Halasa              <khc at pm dot waw dot pl>
+    Larry Lile                    <lile at stdio dot com>
+    Lennert Buytenhek             <buytenh at gnu dot org>
+    Loris Degioanni               <loris at netgroup-serv dot polito dot i=
t>
+    Love H=C3=B6rnquist-=C3=85strand        <lha at stacken dot kth dot se>
+    Lucas C. Villa Real           <lucasvr at us dot ibm dot com>
+    Luis MartinGarcia             <luis dot mgarc at gmail dot com>
+    Maciej W. Rozycki             <macro at ds2 dot pg dot gda dot pl>
+    Manu Pathak                   <mapathak at cisco dot com>
+    Marc Binderberger             <mbind at sourceforge dot net>
+    Marc A. Lehmann               <pcg at goof dot com>
+    Mark Ellzey Thomas            <mark at ackers dot net>
+    Marko Kiiskila                <carnil at cs dot tut dot fi>
+    Markus Sch=C3=B6pflin              <schoepflin at sourceforge dot net>
+    Marshall Rose                 <mrose at dbc dot mtview dot ca dot us>
+    Martin Husemann               <martin at netbsd dot org>
+    Max Laier                     <max at love2party dot net>
+    Michael A. Meffie III         <meffie at sourceforge dot net>
+    Michael Madore                <mmadore at turbolinux dot com>
+    Michael Riepe                 <too-tired at sourceforge dot net>
+    Michael Shalayeff             <mickey at openbsd dot org>
+    Michael Shields               <shields at msrl dot com>
+    Michael T. Stolarchuk         <mts at off dot to>
+    Michal Sekletar               <msekleta at redhat dot com>
+    Michele "mydecay" Marchetto   <smarchetto1 at tin dot it>
+    Mike Frysinger                <vapier at gmail dot com>
+    Minto Jeyananth               <minto at juniper dot net>
+    Monroe Williams               <monroe at pobox dot com>
+    Motonori Shindo               <mshindo at mshindo dot net>
+    Nathan J. Williams            <nathanw at MIT dot EDU>
+    Nathaniel Couper-Noles        <Nathaniel at isi1 dot tccisi dot com>
+    Neil T. Spring                <bluehal at users dot sourceforge dot ne=
t>
+    Niels Provos                  <provos at openbsd dot org>
+    Nickolai Zeldovich            <kolya at MIT dot EDU>
+    Nicolas Ferrero               <toorop at babylo dot net>
+    Noritoshi Demizu              <demizu at users dot sourceforge dot net>
+    Olaf Kirch                    <okir at caldera dot de>
+    Onno van der Linden           <onno at simplex dot nl>
+    Paolo Abeni                   <paolo dot abeni at email dot it>
+    Pascal Hennequin              <pascal dot hennequin at int-evry dot fr>
+    Pasvorn Boonmark              <boonmark at juniper dot net>
+    Paul Ferrell                  <pflarr at sourceforge dot net>
+    Paul Mundt                    <lethal at linux-sh dot org>
+    Paul S. Traina                <pst at freebsd dot org>
+    Pavlin Radoslavov             <pavlin at icir dot org>
+    Pawel Worach                  <pawel dot worach at gmail dot com>
+    Pekka Savola                  <pekkas at netcore dot fi>   =20
+    Peter Fales                   <peter at fales-lorenz dot net>
+    Peter Jeremy                  <peter dot jeremy at alcatel dot com dot=
 au>
+                                  <pfhunt at users dot sourceforge dot net>
+    Peter Volkov                  <pva at gentoo dot org>
+    Phil Wood                     <cpw at lanl dot gov>
+    Rafal Maszkowski              <rzm at icm dot edu dot pl>
+    Randy Sofia                   <rsofia at users dot sourceforge dot net>
+    Raphael Raimbault             <raphael dot raimbault at netasq dot com>
+    Rick Cheng                    <rcheng at juniper dot net>
+    Rick Jones                    <rick dot jones2 at hp dot com>
+    Rick Watson                   <watsonrick at users dot sourceforge dot=
 net>
+    Rob Braun                     <bbraun at synack dot net>
+    Robert Edmonds                <stu-42 at sourceforge dot net>
+    Roderick Schertler            <roderick at argon dot org>
+    Romain Francoise              <rfrancoise at debian dot org>
+    Sagun Shakya                  <sagun dot shakya at sun dot com>
+    Sami Farin                    <safari at iki dot fi>
+    Scott Mcmillan                <scott.a.mcmillan at intel dot com>
+    Scott Rose                    <syberpunk at users dot sourceforge dot =
net>
+    Sebastian Krahmer             <krahmer at cs dot uni-potsdam dot de>
+    Sebastien Raveau              <sebastien dot raveau at epita dot fr>
+    Sebastien Vincent             <svincent at idems dot fr>
+    Sepherosa Ziehau              <sepherosa at gmail dot com>
+    Seth Webster                  <swebster at sst dot ll dot mit dot edu>
+    Shinsuke Suzuki               <suz at kame dot net>
+    Steinar Haug                  <sthaug at nethelp dot no>
+    Swaminathan Chandrasekaran    <chander at juniper dot net>
+    Takashi Yamamoto              <yamt at mwd dot biglobe dot ne dot jp>
+    Terry Kennedy                 <terry at tmk dot com>
+    Timo Koskiahde
+    Tony Li                       <tli at procket dot com>
+    Toshihiro Kanda               <candy at fct dot kgc dot co dot jp>
+    Uns Lider                     <unslider at miranda dot org>
+    Victor Oppleman               <oppleman at users dot sourceforge dot n=
et>
+    Weesan Lee                    <weesan at juniper dot net>
+    Wesley Griffin                <wgriffin at users dot sourceforge dot n=
et>
+    Wesley Shields                <wxs at FreeBSD dot org>
+    Wilbert de Graaf              <wilbertdg at hetnet dot nl>
+    Will Drewry                   <will at alum dot bu dot edu>
+    William J. Hulley             <bill dot hulley at gmail dot com>
+    Yen Yen Lim
+    Yoshifumi Nishida
=20
 The original LBL crew:
-	Steve McCanne
-	Craig Leres
-	Van Jacobson
+    Steve McCanne
+    Craig Leres
+    Van Jacobson
=20
 Past maintainers:
-	Jun-ichiro itojun Hagino	<itojun at iijlab dot net>
+    Jun-ichiro itojun Hagino      <itojun at iijlab dot net>
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/Makefile.in
--- a/head/contrib/tcpdump/Makefile.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/Makefile.in	Wed Jul 25 16:21:35 2012 +0300
@@ -26,6 +26,7 @@
 # Top level hierarchy
 prefix =3D @prefix@
 exec_prefix =3D @exec_prefix@
+datarootdir =3D @datarootdir@
 # Pathname of directory to install the binary
 sbindir =3D @sbindir@
 # Pathname of directory to install the man page
@@ -46,7 +47,8 @@
 DEFS =3D @DEFS@ @CPPFLAGS@ @V_DEFS@
=20
 # Standard CFLAGS
-CFLAGS =3D $(CCOPT) $(DEFS) $(INCLS)
+CFLAGS =3D @CFLAGS@
+FULL_CFLAGS =3D $(CCOPT) $(DEFS) $(INCLS) $(CFLAGS)
=20
 # Standard LDFLAGS
 LDFLAGS =3D @LDFLAGS@
@@ -64,15 +66,15 @@
 # problem if you don't own the file but can write to the directory.
 .c.o:
 	@rm -f $@
-	$(CC) $(CFLAGS) -c $(srcdir)/$*.c
+	$(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
=20
 CSRC =3D	addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ip=
proto.c \
-        nlpid.c l2vpn.c machdep.c parsenfsfh.c \
-	print-802_11.c print-ap1394.c print-ah.c print-arcnet.c \
-	print-aodv.c print-arp.c print-ascii.c print-atalk.c print-atm.c \
-	print-beep.c print-bfd.c print-bgp.c print-bootp.c print-bt.c \
-	print-cdp.c print-cfm.c print-chdlc.c print-cip.c print-cnfp.c \
-	print-dccp.c print-decnet.c \
+        nlpid.c l2vpn.c machdep.c parsenfsfh.c in_cksum.c \
+	print-802_11.c print-802_15_4.c print-ap1394.c print-ah.c \
+	print-arcnet.c print-aodv.c print-arp.c print-ascii.c print-atalk.c \
+	print-atm.c print-beep.c print-bfd.c print-bgp.c \
+	print-bootp.c print-bt.c print-carp.c print-cdp.c print-cfm.c \
+	print-chdlc.c print-cip.c print-cnfp.c print-dccp.c print-decnet.c \
 	print-domain.c print-dtp.c print-dvmrp.c print-enc.c print-egp.c \
 	print-eap.c print-eigrp.c\
 	print-esp.c print-ether.c print-fddi.c print-fr.c \
@@ -83,8 +85,9 @@
         print-lmp.c print-lspping.c print-lwapp.c \
 	print-lwres.c print-mobile.c print-mpcp.c print-mpls.c print-msdp.c \
 	print-nfs.c print-ntp.c print-null.c print-olsr.c print-ospf.c \
-	print-pgm.c print-pim.c print-ppp.c print-pppoe.c print-pptp.c \
-	print-radius.c print-raw.c print-rip.c print-rrcp.c print-rsvp.c \
+	print-pgm.c print-pim.c \
+	print-ppi.c print-ppp.c print-pppoe.c print-pptp.c \
+	print-radius.c print-raw.c print-rip.c print-rpki-rtr.c print-rrcp.c prin=
t-rsvp.c \
 	print-rx.c print-sctp.c print-sflow.c print-sip.c print-sl.c print-sll.c \
 	print-slow.c print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \
 	print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \
@@ -165,6 +168,7 @@
 	oui.h \
 	pcap-missing.h \
 	pmap_prot.h \
+	ppi.h \
 	ppp.h \
 	route6d.h \
 	rpc_auth.h \
@@ -226,16 +230,12 @@
 	lbl/os-ultrix4.h \
 	makemib \
 	missing/addrinfo.h \
-	missing/addrsize.h \
-	missing/bittypes.h \
 	missing/dlnames.c \
 	missing/datalinks.c \
 	missing/getnameinfo.c \
 	missing/inet_aton.c \
 	missing/inet_ntop.c \
 	missing/inet_pton.c \
-	missing/resolv6.h \
-	missing/resolv_ext.h \
 	missing/snprintf.c \
 	missing/sockstorage.h \
 	missing/strdup.c \
@@ -245,6 +245,7 @@
 	mkdep \
 	packetdat.awk \
 	pcap_dump_ftell.c \
+	print-babel.c \
 	print-dhcp6.c \
 	print-frag6.c \
 	print-icmp6.c \
@@ -262,12 +263,18 @@
 	stime.awk \
 	strcasecmp.c \
 	tcpdump.1.in \
-	tests/02-sunrise-sunset-esp.puu \
-	tests/08-sunrise-sunset-aes.puu \
-	tests/08-sunrise-sunset-esp2.puu \
+	tests/02-sunrise-sunset-esp.pcap \
+	tests/08-sunrise-sunset-aes.pcap \
+	tests/08-sunrise-sunset-esp2.pcap \
+	tests/QinQpacket.out \
+	tests/QinQpacket.pcap \
+	tests/QinQpacketv.out \
 	tests/TESTLIST \
 	tests/TESTonce \
 	tests/TESTrun.sh \
+	tests/babel.pcap \
+	tests/babel1.out \
+	tests/babel1v.out \
 	tests/bgp-infinite-loop.pcap \
 	tests/bgp_vpn_attrset.out \
 	tests/bgp_vpn_attrset.pcap \
@@ -279,8 +286,8 @@
 	tests/e1000g.pcap \
 	tests/eapon1.gdbinit \
 	tests/eapon1.out \
-	tests/eapon1.puu \
-	tests/eapon2.puu \
+	tests/eapon1.pcap \
+	tests/empty.uu \
 	tests/esp-secrets.txt \
 	tests/esp0.out \
 	tests/esp1.gdbinit \
@@ -292,61 +299,57 @@
 	tests/esp5.gdbinit \
 	tests/esp5.out \
 	tests/espudp1.out \
-	tests/espudp1.puu \
+	tests/espudp1.pcap \
 	tests/forces1.out \
 	tests/forces1.pcap \
 	tests/forces1vvv.out \
 	tests/forces1vvvv.out \
 	tests/forces2.out \
-	tests/forces2.pcap \
 	tests/forces2v.out \
 	tests/forces2vv.out \
-	tests/ikev2.puu \
+	tests/forces3vvv.out \
 	tests/ikev2four.out \
-	tests/ikev2four.puu \
+	tests/ikev2four.pcap \
 	tests/ikev2fourv.out \
 	tests/ikev2fourv4.out \
 	tests/ikev2pI2-secrets.txt \
 	tests/ikev2pI2.out \
-	tests/ikev2pI2.puu \
-	tests/isakmp-delete-segfault.puu \
-	tests/isakmp-identification-segfault.puu \
-	tests/isakmp-pointer-loop.puu \
+	tests/ikev2pI2.pcap \
+	tests/isakmp-delete-segfault.pcap \
+	tests/isakmp-identification-segfault.pcap \
+	tests/isakmp-pointer-loop.pcap \
 	tests/isakmp1.out \
 	tests/isakmp2.out \
 	tests/isakmp3.out \
 	tests/isakmp4.out \
-	tests/isakmp4500.puu \
+	tests/isakmp4500.pcap \
 	tests/isis-infinite-loop.pcap \
 	tests/ldp-infinite-loop.pcap \
 	tests/lmp.out \
-	tests/lmp.puu \
+	tests/lmp.pcap \
 	tests/lmp.sh \
 	tests/lspping-fec-ldp.pcap \
 	tests/lspping-fec-rsvp.pcap \
 	tests/mpls-ldp-hello.out \
-	tests/mpls-ldp-hello.puu \
+	tests/mpls-ldp-hello.pcap \
 	tests/mpls-traceroute.pcap \
 	tests/ospf-gmpls.out \
-	tests/ospf-gmpls.puu \
+	tests/ospf-gmpls.pcap \
 	tests/print-A.out \
 	tests/print-AA.out \
 	tests/print-capX.out \
 	tests/print-capXX.out \
-	tests/print-flags.puu \
+	tests/print-flags.pcap \
 	tests/print-flags.sh \
 	tests/print-x.out \
 	tests/print-xx.out \
 	tests/rsvp-infinite-loop.pcap \
+	tests/sflow_multiple_counter_30_pdus.out \
+	tests/sflow_multiple_counter_30_pdus.pcap \
 	vfprintf.c \
-	win32/Include/Arpa/tftp.h \
 	win32/Include/errno.h \
 	win32/Include/getopt.h \
-	win32/Include/inetprivate.h \
-	win32/Include/telnet.h \
 	win32/Include/w32_fzs.h \
-	win32/Include/Netinet/in_systm.h \
-	win32/Include/Netinet/ip.h \
 	win32/Src/getopt.c \
 	win32/prj/GNUmakefile \
 	win32/prj/WinDump.dsp \
@@ -356,7 +359,7 @@
=20
 $(PROG): $(OBJ) @V_PCAPDEP@
 	@rm -f $@
-	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
+	$(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
=20
 $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ)
 	@rm -f $@
@@ -364,30 +367,30 @@
 	$(RANLIB) $@
=20
 datalinks.o: $(srcdir)/missing/datalinks.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c
 dlnames.o: $(srcdir)/missing/dlnames.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c
 getnameinfo.o: $(srcdir)/missing/getnameinfo.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c
 getaddrinfo.o: $(srcdir)/missing/getaddrinfo.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c
 inet_pton.o: $(srcdir)/missing/inet_pton.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c
 inet_ntop.o: $(srcdir)/missing/inet_ntop.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c
 inet_aton.o: $(srcdir)/missing/inet_aton.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c
 snprintf.o: $(srcdir)/missing/snprintf.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
 strlcat.o: $(srcdir)/missing/strlcat.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c
 strlcpy.o: $(srcdir)/missing/strlcpy.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c
 strsep.o: $(srcdir)/missing/strsep.c
-	$(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c
+	$(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c
=20
 version.o: version.c
-	$(CC) $(CFLAGS) -c version.c
+	$(CC) $(FULL_CFLAGS) -c version.c
=20
 version.c: $(srcdir)/VERSION
 	@rm -f $@
@@ -423,9 +426,9 @@
 distclean:
 	rm -f $(CLEANFILES) Makefile config.cache config.log config.status \
 	    config.h gnuc.h os-proto.h stamp-h stamp-h.in $(PROG).1
+	rm -rf autom4te.cache
=20
 check: tcpdump
-	uudecode --help || (echo "No uudecode program found, not running tests"; =
echo "apt-get/rpm install sharutils?"; exit 1)
 	(cd tests && ./TESTrun.sh)
=20
 tags: $(TAGFILES)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/VERSION
--- a/head/contrib/tcpdump/VERSION	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/VERSION	Wed Jul 25 16:21:35 2012 +0300
@@ -1,1 +1,1 @@
-4.1.1
+4.2.1
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/acconfig.h
--- a/head/contrib/tcpdump/acconfig.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/acconfig.h	Wed Jul 25 16:21:35 2012 +0300
@@ -8,12 +8,6 @@
 /* Define if you enable support for the libsmi. */
 #undef LIBSMI
=20
-/* define if you have struct __res_state_ext */
-#undef HAVE_RES_STATE_EXT
-
-/* define if your struct __res_state has the nsort member */
-#undef HAVE_NEW_RES_STATE
-
 /* define if you have the addrinfo function. */
 #undef HAVE_ADDRINFO
=20
@@ -23,15 +17,6 @@
 /* define ifyou have the h_errno variable. */
 #undef HAVE_H_ERRNO
=20
-/* define if IN6ADDRSZ is defined (XXX not used!) */
-#undef HAVE_IN6ADDRSZ
-
-/* define if INADDRSZ is defined (XXX not used!) */
-#undef HAVE_INADDRSZ
-
-/* define if RES_USE_INET6 is defined */
-#undef HAVE_RES_USE_INET6
-
 /* define if you have struct sockaddr_storage */
 #undef HAVE_SOCKADDR_STORAGE
=20
@@ -68,9 +53,6 @@
 /* define if you have getrpcbynumber() */
 #undef HAVE_GETRPCBYNUMBER
=20
-/* AIX hack. */
-#undef _SUN
-
 /* Workaround for missing 64-bit formats */
 #undef PRId64
 #undef PRIo64
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/addrtoname.c
--- a/head/contrib/tcpdump/addrtoname.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/addrtoname.c	Wed Jul 25 16:21:35 2012 +0300
@@ -21,7 +21,7 @@
  *  Internet, ethernet, port, and protocol string to address
  *  and address to string conversion routines
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/addrtoname.c 235530 2012-05-17 05:11:57Z=
 delphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
@@ -510,6 +510,34 @@
 }
=20
 const char *
+le64addr_string(const u_char *ep)
+{
+	const unsigned int len =3D 8;
+	register u_int i;
+	register char *cp;
+	register struct enamemem *tp;
+	char buf[BUFSIZE];
+
+	tp =3D lookup_bytestring(ep, len);
+	if (tp->e_name)
+		return (tp->e_name);
+
+	cp =3D buf;
+	for (i =3D len; i > 0 ; --i) {
+		*cp++ =3D hex[*(ep + i - 1) >> 4];
+		*cp++ =3D hex[*(ep + i - 1) & 0xf];
+		*cp++ =3D ':';
+	}
+	cp --;
+
+	*cp =3D '\0';
+
+	tp->e_name =3D strdup(buf);
+
+	return (tp->e_name);
+}
+
+const char *
 linkaddr_string(const u_char *ep, const unsigned int type, const unsigned =
int len)
 {
 	register u_int i;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/addrtoname.h
--- a/head/contrib/tcpdump/addrtoname.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/addrtoname.h	Wed Jul 25 16:21:35 2012 +0300
@@ -34,6 +34,7 @@
=20
 extern const char *linkaddr_string(const u_char *, const unsigned int, con=
st unsigned int);
 extern const char *etheraddr_string(const u_char *);
+extern const char *le64addr_string(const u_char *);
 extern const char *etherproto_string(u_short);
 extern const char *tcpport_string(u_short);
 extern const char *udpport_string(u_short);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/bootp.h
--- a/head/contrib/tcpdump/bootp.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/bootp.h	Wed Jul 25 16:21:35 2012 +0300
@@ -37,7 +37,7 @@
 	u_int8_t	bp_sname[64];	/* server host name */
 	u_int8_t	bp_file[128];	/* boot file name */
 	u_int8_t	bp_vend[64];	/* vendor-specific area */
-};
+} UNALIGNED;
=20
 /*
  * UDP port numbers, server and client.
@@ -217,7 +217,7 @@
 	struct in_addr	v_ins1, v_ins2; /* IEN-116 name servers */
 	struct in_addr	v_ts1, v_ts2;	/* Time servers */
 	u_int8_t	v_unused[24];	/* currently unused */
-};
+} UNALIGNED;
=20
=20
 /* v_flags values */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/config.h.in
--- a/head/contrib/tcpdump/config.h.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/config.h.in	Wed Jul 25 16:21:35 2012 +0300
@@ -8,12 +8,6 @@
 /* Define if you enable support for the libsmi. */
 #undef LIBSMI
=20
-/* define if you have struct __res_state_ext */
-#undef HAVE_RES_STATE_EXT
-
-/* define if your struct __res_state has the nsort member */
-#undef HAVE_NEW_RES_STATE
-
 /* define if you have the addrinfo function. */
 #undef HAVE_ADDRINFO
=20
@@ -23,15 +17,6 @@
 /* define ifyou have the h_errno variable. */
 #undef HAVE_H_ERRNO
=20
-/* define if IN6ADDRSZ is defined (XXX not used!) */
-#undef HAVE_IN6ADDRSZ
-
-/* define if INADDRSZ is defined (XXX not used!) */
-#undef HAVE_INADDRSZ
-
-/* define if RES_USE_INET6 is defined */
-#undef HAVE_RES_USE_INET6
-
 /* define if you have struct sockaddr_storage */
 #undef HAVE_SOCKADDR_STORAGE
=20
@@ -68,9 +53,6 @@
 /* define if you have getrpcbynumber() */
 #undef HAVE_GETRPCBYNUMBER
=20
-/* AIX hack. */
-#undef _SUN
-
 /* Workaround for missing 64-bit formats */
 #undef PRId64
 #undef PRIo64
@@ -108,6 +90,9 @@
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
=20
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
 /* Define to 1 if you have the `getnameinfo' function. */
 #undef HAVE_GETNAMEINFO
=20
@@ -165,6 +150,9 @@
 /* Define to 1 if you have the `pcap_lib_version' function. */
 #undef HAVE_PCAP_LIB_VERSION
=20
+/* Define to 1 if you have the `pcap_set_tstamp_type' function. */
+#undef HAVE_PCAP_SET_TSTAMP_TYPE
+
 /* Define to 1 if you have the <pcap/usb.h> header file. */
 #undef HAVE_PCAP_USB_H
=20
@@ -174,6 +162,9 @@
 /* Define to 1 if you have the <rpc/rpcent.h> header file. */
 #undef HAVE_RPC_RPCENT_H
=20
+/* Define to 1 if you have the <rpc/rpc.h> header file. */
+#undef HAVE_RPC_RPC_H
+
 /* Define to 1 if you have the `setlinebuf' function. */
 #undef HAVE_SETLINEBUF
=20
@@ -237,6 +228,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
=20
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
 /* Define to 1 if you have the `vfprintf' function. */
 #undef HAVE_VFPRINTF
=20
@@ -276,21 +270,6 @@
 /* return value of signal handlers */
 #undef RETSIGVAL
=20
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `long long', as computed by sizeof. */
-#undef SIZEOF_LONG_LONG
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
=20
@@ -303,6 +282,9 @@
 /* needed on HP-UX */
 #undef _HPUX_SOURCE
=20
+/* define on AIX to get certain functions */
+#undef _SUN
+
 /* define if your compiler allows __attribute__((format)) to be applied to
    function pointers */
 #undef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/configure
--- a/head/contrib/tcpdump/configure	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/configure	Wed Jul 25 16:21:35 2012 +0300
@@ -1267,6 +1267,7 @@
 Optional Features:
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=
=3Dno)
   --enable-FEATURE[=3DARG]  include FEATURE [ARG=3Dyes]
+  --disable-universal     don't build universal on OS X
   --enable-smb            enable possibly-buggy SMB printer default=3Dyes
   --disable-smb           disable possibly-buggy SMB printer
   --enable-ipv6           enable ipv6 (with ipv4) support
@@ -1845,7 +1846,7 @@
     V_CCOPT=3D"-O"
     V_INCLS=3D""
     if test "${srcdir}" !=3D "." ; then
-	    V_INCLS=3D"-I\$(srcdir)"
+	    V_INCLS=3D"-I$srcdir"
     fi
     if test "${CFLAGS+set}" =3D set; then
 	    LBL_CFLAGS=3D"$CFLAGS"
@@ -3217,7 +3218,8 @@
 else
=20
 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+
+  /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
@@ -3290,7 +3292,8 @@
 else
=20
 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+
+  /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
@@ -3986,7 +3989,8 @@
=20
=20
=20
-for ac_header in fcntl.h rpc/rpcent.h netdnet/dnetdb.h
+
+for ac_header in fcntl.h rpc/rpc.h rpc/rpcent.h netdnet/dnetdb.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -4387,6 +4391,36 @@
=20
 case "$host_os" in
=20
+darwin*)
+	# Check whether --enable-universal was given.
+if test "${enable_universal+set}" =3D set; then
+  enableval=3D$enable_universal;
+fi
+
+	if test "$enable_universal" !=3D "no"; then
+		case "$host_os" in
+
+		darwin9.*)
+			#
+			# Leopard.  Build for x86 and 32-bit PowerPC, with
+			# x86 first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch i386 -arch ppc"
+			LDFLAGS=3D"$LDFLAGS -arch i386 -arch ppc"
+			;;
+
+		darwin10.*)
+			#
+			# Snow Leopard.  Build for x86-64 and x86, with
+			# x86-64 first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386"
+			;;
+		esac
+	fi
+	;;
+
 linux*)
 	{ echo "$as_me:$LINENO: checking Linux kernel version" >&5
 echo $ECHO_N "checking Linux kernel version... $ECHO_C" >&6; }
@@ -4807,7 +4841,7 @@
   enableval=3D$enable_ipv6;  case "$enableval" in
 yes)   { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
-       LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripn=
g.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LO=
CALSRC"
+       LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripn=
g.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c pri=
nt-babel.c $LOCALSRC"
        cat >>confdefs.h <<\_ACEOF
 #define INET6 1
 _ACEOF
@@ -4867,7 +4901,7 @@
   (exit $ac_status); }; }; then
    { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
-  LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c p=
rint-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSR=
C"
+  LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c p=
rint-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c print-ba=
bel.c $LOCALSRC"
   cat >>confdefs.h <<\_ACEOF
 #define INET6 1
 _ACEOF
@@ -5467,2032 +5501,6 @@
=20
 fi
=20
-{ echo "$as_me:$LINENO: checking for char" >&5
-echo $ECHO_N "checking for char... $ECHO_C" >&6; }
-if test "${ac_cv_type_char+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef char ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_char=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_char=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
-echo "${ECHO_T}$ac_cv_type_char" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >=3D 0]];'.
-# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of char" >&5
-echo $ECHO_N "checking size of char... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_char+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" =3D yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D0 ac_mid=3D0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
< 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D-1 ac_mid=3D-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=3D`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D ac_hi=3D
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" !=3D "x$ac_hi"; do
-  ac_mid=3D`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_char=3D$ac_lo;;
-'') if test "$ac_cv_type_char" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_char=3D0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef char ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_))=
; }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type=
_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f =3D fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i =3D longval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i =3D ulongval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) !=3D 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_char=3D`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_char" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (char)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_char=3D0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conft=
est.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
-echo "${ECHO_T}$ac_cv_sizeof_char" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
-
-
-{ echo "$as_me:$LINENO: checking for short" >&5
-echo $ECHO_N "checking for short... $ECHO_C" >&6; }
-if test "${ac_cv_type_short+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef short ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_short=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_short=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
-echo "${ECHO_T}$ac_cv_type_short" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >=3D 0]];'.
-# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of short" >&5
-echo $ECHO_N "checking size of short... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_short+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" =3D yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D0 ac_mid=3D0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
< 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D-1 ac_mid=3D-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=3D`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D ac_hi=3D
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" !=3D "x$ac_hi"; do
-  ac_mid=3D`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_short=3D$ac_lo;;
-'') if test "$ac_cv_type_short" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_short=3D0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef short ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_))=
; }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type=
_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f =3D fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i =3D longval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i =3D ulongval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) !=3D 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_short=3D`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_short" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_short=3D0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conft=
est.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
-echo "${ECHO_T}$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
-{ echo "$as_me:$LINENO: checking for int" >&5
-echo $ECHO_N "checking for int... $ECHO_C" >&6; }
-if test "${ac_cv_type_int+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef int ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
-echo "${ECHO_T}$ac_cv_type_int" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >=3D 0]];'.
-# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of int" >&5
-echo $ECHO_N "checking size of int... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_int+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" =3D yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D0 ac_mid=3D0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
< 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D-1 ac_mid=3D-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=3D`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D ac_hi=3D
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" !=3D "x$ac_hi"; do
-  ac_mid=3D`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int=3D$ac_lo;;
-'') if test "$ac_cv_type_int" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_int=3D0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_))=
; }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type=
_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f =3D fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i =3D longval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i =3D ulongval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) !=3D 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_int=3D`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_int" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_int=3D0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conft=
est.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
-{ echo "$as_me:$LINENO: checking for long" >&5
-echo $ECHO_N "checking for long... $ECHO_C" >&6; }
-if test "${ac_cv_type_long+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef long ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_long=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_long=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
-echo "${ECHO_T}$ac_cv_type_long" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >=3D 0]];'.
-# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of long" >&5
-echo $ECHO_N "checking size of long... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_long+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" =3D yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D0 ac_mid=3D0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
< 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D-1 ac_mid=3D-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=3D`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D ac_hi=3D
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" !=3D "x$ac_hi"; do
-  ac_mid=3D`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long=3D$ac_lo;;
-'') if test "$ac_cv_type_long" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long=3D0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_))=
; }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type=
_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f =3D fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i =3D longval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i =3D ulongval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) !=3D 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_long=3D`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_long" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long=3D0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conft=
est.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-{ echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
-if test "${ac_cv_type_long_long+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef long long ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_long_long=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_long_long=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
-
-# The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >=3D 0]];'.
-# This bug is HP SR number 8606223364.
-{ echo "$as_me:$LINENO: checking size of long long" >&5
-echo $ECHO_N "checking size of long long... $ECHO_C" >&6; }
-if test "${ac_cv_sizeof_long_long+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" =3D yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D0 ac_mid=3D0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr $ac_mid + 1`
-			if test $ac_lo -le $ac_mid; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
< 0)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D-1 ac_mid=3D-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
>=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=3D$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_hi=3D`expr '(' $ac_mid ')' - 1`
-			if test $ac_mid -le $ac_hi; then
-			  ac_lo=3D ac_hi=3D
-			  break
-			fi
-			ac_mid=3D`expr 2 '*' $ac_mid`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D ac_hi=3D
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" !=3D "x$ac_hi"; do
-  ac_mid=3D`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) =
<=3D $ac_mid)];
-test_array [0] =3D 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=3D$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_lo=3D`expr '(' $ac_mid ')' + 1`
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long_long=3D$ac_lo;;
-'') if test "$ac_cv_type_long_long" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long_long=3D0
-   fi ;;
-esac
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-   typedef long long ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_))=
; }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type=
_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f =3D fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i =3D longval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i =3D ulongval ();
-      if (i !=3D ((long int) (sizeof (ac__type_sizeof_))))
-	return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) !=3D 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try=3D"$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && { ac_try=3D'./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=3D$?
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_long_long=3D`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-if test "$ac_cv_type_long_long" =3D yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long_long=3D0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conft=
est.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
-
-
-
=20
 	{ echo "$as_me:$LINENO: checking for addrinfo" >&5
 echo $ECHO_N "checking for addrinfo... $ECHO_C" >&6; }
@@ -7706,326 +5714,6 @@
 fi
=20
=20
-	ac_cv_addrsz=3Dyes
-	{ echo "$as_me:$LINENO: checking for INADDRSZ" >&5
-echo $ECHO_N "checking for INADDRSZ... $ECHO_C" >&6; }
-	if test "${ac_cv_inaddrsz+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#		include <arpa/nameser.h>
-int
-main ()
-{
-int a =3D INADDRSZ
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_inaddrsz=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_inaddrsz=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_inaddrsz" >&5
-echo "${ECHO_T}$ac_cv_inaddrsz" >&6; }
-	if test $ac_cv_inaddrsz =3D yes; then
-		cat >>confdefs.h <<\_ACEOF
-#define HAVE_INADDRSZ 1
-_ACEOF
-
-	else
-		ac_cv_addrsz=3Dno
-	fi
-	{ echo "$as_me:$LINENO: checking for IN6ADDRSZ" >&5
-echo $ECHO_N "checking for IN6ADDRSZ... $ECHO_C" >&6; }
-	if test "${ac_cv_in6addrsz+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#		include <arpa/nameser.h>
-int
-main ()
-{
-int a =3D IN6ADDRSZ
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_in6addrsz=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_in6addrsz=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_in6addrsz" >&5
-echo "${ECHO_T}$ac_cv_in6addrsz" >&6; }
-	if test $ac_cv_in6addrsz =3D yes; then
-		cat >>confdefs.h <<\_ACEOF
-#define HAVE_IN6ADDRSZ 1
-_ACEOF
-
-	else
-		ac_cv_addrsz=3Dno
-	fi
-
-if test "$ac_cv_addrsz" =3D no; then
-	missing_includes=3Dyes
-fi
-
-
-	{ echo "$as_me:$LINENO: checking for RES_USE_INET6" >&5
-echo $ECHO_N "checking for RES_USE_INET6... $ECHO_C" >&6; }
-	if test "${ac_cv_res_inet6+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#		include <sys/types.h>
-#		include <netinet/in.h>
-#		include <resolv.h>
-int
-main ()
-{
-int a =3D RES_USE_INET6
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_res_inet6=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_res_inet6=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_res_inet6" >&5
-echo "${ECHO_T}$ac_cv_res_inet6" >&6; }
-	if test $ac_cv_res_inet6 =3D yes; then
-		cat >>confdefs.h <<\_ACEOF
-#define HAVE_RES_USE_INET6 1
-_ACEOF
-
-	fi
-
-if test "$ac_cv_res_inet6" =3D no; then
-	missing_includes=3Dyes
-fi
-
-
-	{ echo "$as_me:$LINENO: checking for res_state_ext" >&5
-echo $ECHO_N "checking for res_state_ext... $ECHO_C" >&6; }
-	if test "${ac_cv_res_state_ext+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#		include <sys/types.h>
-#		include <netinet/in.h>
-#		include <netinet6/in6.h>
-#		include <resolv.h>
-int
-main ()
-{
-struct __res_state_ext e
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_res_state_ext=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_res_state_ext=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_res_state_ext" >&5
-echo "${ECHO_T}$ac_cv_res_state_ext" >&6; }
-	if test $ac_cv_res_state_ext =3D yes; then
-		cat >>confdefs.h <<\_ACEOF
-#define HAVE_RES_STATE_EXT 1
-_ACEOF
-
-	fi
-
-if test "$ac_cv_res_state_ext" =3D no; then
-	missing_includes=3Dyes
-fi
-
-
-	{ echo "$as_me:$LINENO: checking for nsort in res_state" >&5
-echo $ECHO_N "checking for nsort in res_state... $ECHO_C" >&6; }
-	if test "${ac_cv_res_state+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#		include <sys/types.h>
-#		include <netinet/in.h>
-#		include <netinet6/in6.h>
-#		include <resolv.h>
-int
-main ()
-{
-struct __res_state e; e.nsort =3D 0
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_res_state=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_res_state=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-	{ echo "$as_me:$LINENO: result: $ac_cv_res_state" >&5
-echo "${ECHO_T}$ac_cv_res_state" >&6; }
-	if test $ac_cv_res_state =3D yes; then
-		cat >>confdefs.h <<\_ACEOF
-#define HAVE_NEW_RES_STATE 1
-_ACEOF
-
-	fi
-
-
-
-
=20
=20
=20
@@ -8133,7 +5821,9 @@
=20
=20
=20
-for ac_func in strftime
+
+
+for ac_func in fork vfork strftime
 do
 as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -9465,8 +7155,9 @@
 	    #
 	    # Look for pcap-config.
 	    #
-	    # Extract the first word of "pcap-config", so it can be a program nam=
e with args.
-set dummy pcap-config; ac_word=3D$2
+	    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pcap-config", so it can be=
 a program name with args.
+set dummy ${ac_tool_prefix}pcap-config; ac_word=3D$2
 { echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
 if test "${ac_cv_path_PCAP_CONFIG+set}" =3D set; then
@@ -9505,13 +7196,82 @@
 fi
=20
=20
+fi
+if test -z "$ac_cv_path_PCAP_CONFIG"; then
+  ac_pt_PCAP_CONFIG=3D$PCAP_CONFIG
+  # Extract the first word of "pcap-config", so it can be a program name w=
ith args.
+set dummy pcap-config; ac_word=3D$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_ac_pt_PCAP_CONFIG+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ac_pt_PCAP_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PCAP_CONFIG=3D"$ac_pt_PCAP_CONFIG" # Let the user overr=
ide the test with a path.
+  ;;
+  *)
+  as_save_IFS=3D$IFS; IFS=3D$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=3D$as_save_IFS
+  test -z "$as_dir" && as_dir=3D.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_w=
ord$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PCAP_CONFIG=3D"$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=3D$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PCAP_CONFIG=3D$ac_cv_path_ac_pt_PCAP_CONFIG
+if test -n "$ac_pt_PCAP_CONFIG"; then
+  { echo "$as_me:$LINENO: result: $ac_pt_PCAP_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PCAP_CONFIG" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_pt_PCAP_CONFIG" =3D x; then
+    PCAP_CONFIG=3D""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect c=
ross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=3Dyes ;;
+esac
+    PCAP_CONFIG=3D$ac_pt_PCAP_CONFIG
+  fi
+else
+  PCAP_CONFIG=3D"$ac_cv_path_PCAP_CONFIG"
+fi
+
 	    if test -n "$PCAP_CONFIG" ; then
 		#
 		# Found - use it to get the include flags for
 		# libpcap and the flags to link with libpcap.
 		#
-		V_INCLS=3D"`\"$PCAP_CONFIG\" --cflags` $V_INCLS"
-		libpcap=3D"`\"$PCAP_CONFIG\" --libs`"
+		# Please read section 11.6 "Shell Substitutions"
+		# in the autoconf manual before doing anything
+		# to this that involves quoting.  Especially note
+		# the statement "There is just no portable way to use
+		# double-quoted strings inside double-quoted back-quoted
+		# expressions (pfew!)."
+		#
+		cflags=3D`"$PCAP_CONFIG" --cflags`
+		V_INCLS=3D"$cflags $V_INCLS"
+		libpcap=3D`"$PCAP_CONFIG" --libs`
 	    else
 		#
 		# Not found; look for pcap.
@@ -9659,9 +7419,17 @@
 		# The libpcap directory has a pcap-config script.
 		# Use it to get any additioal libraries needed
 		# to link with the libpcap archive library in
-		# that directory
+		# that directory.
 		#
-		libpcap=3D"$libpcap `\"$PCAP_CONFIG\" --additional-libs --static`"
+		# Please read section 11.6 "Shell Substitutions"
+		# in the autoconf manual before doing anything
+		# to this that involves quoting.  Especially note
+		# the statement "There is just no portable way to use
+		# double-quoted strings inside double-quoted back-quoted
+		# expressions (pfew!)."
+		#
+		additional_libs=3D`"$PCAP_CONFIG" --additional-libs --static`
+		libpcap=3D"$libpcap $additional_libs"
 	    fi
     fi
     LIBS=3D"$libpcap $LIBS"
@@ -9700,6 +7468,100 @@
 	esac
     fi
=20
+                                    { echo "$as_me:$LINENO: checking for p=
cap_loop" >&5
+echo $ECHO_N "checking for pcap_loop... $ECHO_C" >&6; }
+if test "${ac_cv_func_pcap_loop+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define pcap_loop to an innocuous variant, in case <limits.h> declares p=
cap_loop.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define pcap_loop innocuous_pcap_loop
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char pcap_loop (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef pcap_loop
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pcap_loop ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_pcap_loop || defined __stub___pcap_loop
+choke me
+#endif
+
+int
+main ()
+{
+return pcap_loop ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_pcap_loop=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_pcap_loop=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_pcap_loop" >&5
+echo "${ECHO_T}$ac_cv_func_pcap_loop" >&6; }
+if test $ac_cv_func_pcap_loop =3D yes; then
+  :
+else
+
+	    { { echo "$as_me:$LINENO: error: Report this to tcpdump-workers at lists=
.tcpdump.org, and include the
+config.log file in your report" >&5
+echo "$as_me: error: Report this to tcpdump-workers at lists.tcpdump.org, and=
 include the
+config.log file in your report" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+
+
                         { echo "$as_me:$LINENO: checking for pcap_list_dat=
alinks" >&5
 echo $ECHO_N "checking for pcap_list_datalinks... $ECHO_C" >&6; }
 if test "${ac_cv_func_pcap_list_datalinks+set}" =3D set; then
@@ -11173,7 +9035,9 @@
=20
 #
 # Do we have the new open API?  Check for pcap_create, and assume that,
-# if we do, we also have pcap_activate() and the other new routines.
+# if we do, we also have pcap_activate() and the other new routines
+# introduced in libpcap 1.0.0.
+#
=20
 for ac_func in pcap_create
 do
@@ -11268,6 +9132,106 @@
 fi
 done
=20
+if test $ac_cv_func_pcap_create =3D "yes" ; then
+	#
+	# OK, do we have pcap_set_tstamp_type?  If so, assume we have
+	# pcap_list_tstamp_types and pcap_free_tstamp_types as well.
+	#
+
+for ac_func in pcap_set_tstamp_type
+do
+as_ac_var=3D`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_var; eval "test \"\${$as_var+set}\" =3D set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $a=
c_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try=3D"$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+fi
=20
=20
=20
@@ -11734,7 +9698,8 @@
 case "$host_os" in
=20
 aix*)
-		cat >>confdefs.h <<\_ACEOF
+
+cat >>confdefs.h <<\_ACEOF
 #define _SUN 1
 _ACEOF
=20
@@ -11783,14 +9748,8 @@
 	V_GROUP=3Dbpf
 fi
=20
-#
-# Check for some headers introduced in later versions of libpcap
-# and used by some printers.
-#
-savedcppflags=3D"$CPPFLAGS"
-CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
-
-for ac_header in pcap/bluetooth.h
+
+for ac_header in sys/bitypes.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -11930,7 +9889,549 @@
 done
=20
=20
-for ac_header in pcap/usb.h
+{ echo "$as_me:$LINENO: checking for int8_t" >&5
+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_int8_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef int8_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_int8_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_int8_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_int8_t" >&6; }
+if test $ac_cv_type_int8_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define int8_t signed char
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for u_int8_t" >&5
+echo $ECHO_N "checking for u_int8_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_u_int8_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef u_int8_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_u_int8_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_u_int8_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_int8_t" >&6; }
+if test $ac_cv_type_u_int8_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define u_int8_t unsigned char
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for int16_t" >&5
+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_int16_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef int16_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_int16_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_int16_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_int16_t" >&6; }
+if test $ac_cv_type_int16_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define int16_t short
+_ACEOF
+
+	$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+fi
+
+{ echo "$as_me:$LINENO: checking for u_int16_t" >&5
+echo $ECHO_N "checking for u_int16_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_u_int16_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef u_int16_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_u_int16_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_u_int16_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_int16_t" >&6; }
+if test $ac_cv_type_u_int16_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define u_int16_t unsigned short
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_int32_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef int32_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_int32_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_int32_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6; }
+if test $ac_cv_type_int32_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define int32_t int
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for u_int32_t" >&5
+echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_u_int32_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef u_int32_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_u_int32_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_u_int32_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6; }
+if test $ac_cv_type_u_int32_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define u_int32_t unsigned int
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for int64_t" >&5
+echo $ECHO_N "checking for int64_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_int64_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef int64_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_int64_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_int64_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
+echo "${ECHO_T}$ac_cv_type_int64_t" >&6; }
+if test $ac_cv_type_int64_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define int64_t long long
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for u_int64_t" >&5
+echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_u_int64_t+set}" =3D set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+
+typedef u_int64_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_u_int64_t=3Dyes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_u_int64_t=3Dno
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
+echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6; }
+if test $ac_cv_type_u_int64_t =3D yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define u_int64_t unsigned long long
+_ACEOF
+
+fi
+
+
+#
+# We can't just check for <inttypes.h> - some systems have one that
+# doesn't define all the PRI[doxu]64 macros.
+#
+
+for ac_header in inttypes.h
 do
 as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
@@ -12065,830 +10566,6 @@
 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
=20
-fi
-
-done
-
-CPPFLAGS=3D"$savedcppflags"
-
-
-for ac_header in sys/bitypes.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=3Dno
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
-    ac_header_preproc=3Dyes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=3D\$ac_header_preproc"
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-{ echo "$as_me:$LINENO: checking for int8_t" >&5
-echo $ECHO_N "checking for int8_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_int8_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef int8_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int8_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int8_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
-echo "${ECHO_T}$ac_cv_type_int8_t" >&6; }
-if test $ac_cv_type_int8_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define int8_t signed char
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for u_int8_t" >&5
-echo $ECHO_N "checking for u_int8_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_u_int8_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef u_int8_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_u_int8_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_u_int8_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int8_t" >&6; }
-if test $ac_cv_type_u_int8_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define u_int8_t unsigned char
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for int16_t" >&5
-echo $ECHO_N "checking for int16_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_int16_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-typedef int16_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int16_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int16_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
-echo "${ECHO_T}$ac_cv_type_int16_t" >&6; }
-if test $ac_cv_type_int16_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define int16_t short
-_ACEOF
-
-	$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-fi
-
-{ echo "$as_me:$LINENO: checking for u_int16_t" >&5
-echo $ECHO_N "checking for u_int16_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_u_int16_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef u_int16_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_u_int16_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_u_int16_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int16_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int16_t" >&6; }
-if test $ac_cv_type_u_int16_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define u_int16_t unsigned short
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for int32_t" >&5
-echo $ECHO_N "checking for int32_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_int32_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef int32_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int32_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int32_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
-echo "${ECHO_T}$ac_cv_type_int32_t" >&6; }
-if test $ac_cv_type_int32_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define int32_t int
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for u_int32_t" >&5
-echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_u_int32_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef u_int32_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_u_int32_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_u_int32_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6; }
-if test $ac_cv_type_u_int32_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define u_int32_t unsigned int
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_int64_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef int64_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int64_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_int64_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
-echo "${ECHO_T}$ac_cv_type_int64_t" >&6; }
-if test $ac_cv_type_int64_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define int64_t long long
-_ACEOF
-
-fi
-
-{ echo "$as_me:$LINENO: checking for u_int64_t" >&5
-echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6; }
-if test "${ac_cv_type_u_int64_t+set}" =3D set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#ifdef HAVE_SYS_BITYPES_H
-#include <sys/bitypes.h>
-#endif
-
-typedef u_int64_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_u_int64_t=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_u_int64_t=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6; }
-if test $ac_cv_type_u_int64_t =3D yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define u_int64_t unsigned long long
-_ACEOF
-
-fi
-
-
-#
-# We can't just check for <inttypes.h> - some systems have one that
-# doesn't define all the PRI[doxu]64 macros.
-#
-
-for ac_header in inttypes.h
-do
-as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try=3D"$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=3Dno
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try=3D"$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
-  *) ac_try_echo=3D$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=3D$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=3Dyes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=3Dno
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,=
 rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t=
he preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi=
ler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" =
>&2;}
-    ac_header_preproc=3Dyes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com=
piled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing pre=
requisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite head=
ers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document=
ation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But=
 Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Com=
piled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr=
ocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu=
lt" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil=
er will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p=
recedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=3D\$ac_header_preproc"
-fi
-ac_res=3D`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
     #
     # OK, we have inttypes.h, but does it define those macros?
     #
@@ -13364,6 +11041,133 @@
=20
 fi
=20
+#
+# Check for some headers introduced in later versions of libpcap
+# and used by some printers.
+#
+# Those headers use the {u_}intN_t types, so we must do this after
+# we check for what's needed to get them defined.
+#
+savedcppflags=3D"$CPPFLAGS"
+CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
+
+for ac_header in pcap/bluetooth.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <tcpdump-stdinc.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in pcap/usb.h
+do
+as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=3D$as_ac_Header; eval "test \"\${$as_var+set}\" =3D set"; }; t=
hen
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <tcpdump-stdinc.h>
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try=3D"$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=3D\$ac_try;;
+  *) ac_try_echo=3D$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=3D$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? =3D $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=3Dyes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=3Dno"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=3D`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` =3D yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+CPPFLAGS=3D"$savedcppflags"
+
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a pr=
ogram name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=3D$2
@@ -13944,6 +11748,7 @@
 fi
=20
=20
+		savedppflags=3D"$CPPLAGS"
 		CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
=20
 for ac_header in openssl/evp.h
@@ -14085,6 +11890,7 @@
=20
 done
=20
+		CPPFLAGS=3D"$savedcppflags"
 	else
 		#
 		# Not found.  Did the user explicitly ask for it?
@@ -14100,8 +11906,8 @@
 fi
=20
 if test "$missing_includes" =3D "yes"; then
-	CPPFLAGS=3D"$CPPFLAGS -I\$(srcdir)/missing"
-	V_INCLS=3D"$V_INCLS -I\$(srcdir)/missing"
+	CPPFLAGS=3D"$CPPFLAGS -I$srcdir/missing"
+	V_INCLS=3D"$V_INCLS -I$srcdir/missing"
 fi
=20
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/configure.in
--- a/head/contrib/tcpdump/configure.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/configure.in	Wed Jul 25 16:21:35 2012 +0300
@@ -29,7 +29,7 @@
 if test "$ac_cv___attribute__" =3D "yes"; then
 	AC_C___ATTRIBUTE___FORMAT_FUNCTION_POINTER
 fi
-AC_CHECK_HEADERS(fcntl.h rpc/rpcent.h netdnet/dnetdb.h)
+AC_CHECK_HEADERS(fcntl.h rpc/rpc.h rpc/rpcent.h netdnet/dnetdb.h)
 AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
 #include <sys/socket.h>
 #include <net/if.h>])
@@ -60,6 +60,33 @@
=20
 case "$host_os" in
=20
+darwin*)
+	AC_ARG_ENABLE(universal,
+	AC_HELP_STRING([--disable-universal],[don't build universal on OS X]))
+	if test "$enable_universal" !=3D "no"; then
+		case "$host_os" in
+
+		darwin9.*)
+			#
+			# Leopard.  Build for x86 and 32-bit PowerPC, with
+			# x86 first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch i386 -arch ppc"
+			LDFLAGS=3D"$LDFLAGS -arch i386 -arch ppc"
+			;;
+
+		darwin10.*)
+			#
+			# Snow Leopard.  Build for x86-64 and x86, with
+			# x86-64 first.  (That's what Apple does.)
+			#
+			V_CCOPT=3D"$V_CCOPT -arch x86_64 -arch i386"
+			LDFLAGS=3D"$LDFLAGS -arch x86_64 -arch i386"
+			;;
+		esac
+	fi
+	;;
+
 linux*)
 	AC_MSG_CHECKING(Linux kernel version)
  	if test "$cross_compiling" =3D yes; then
@@ -172,7 +199,7 @@
   --disable-ipv6          disable ipv6 support],
 [ case "$enableval" in
 yes)   AC_MSG_RESULT(yes)
-       LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripn=
g.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LO=
CALSRC"
+       LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripn=
g.c print-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c pri=
nt-babel.c $LOCALSRC"
        AC_DEFINE(INET6)
        ipv6=3Dyes
        ;;
@@ -194,7 +221,7 @@
 }
 ],
 [ AC_MSG_RESULT(yes)
-  LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c p=
rint-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c $LOCALSR=
C"
+  LOCALSRC=3D"print-ip6.c print-ip6opts.c print-mobility.c print-ripng.c p=
rint-icmp6.c print-frag6.c print-rt6.c print-ospf6.c print-dhcp6.c print-ba=
bel.c $LOCALSRC"
   AC_DEFINE(INET6)
   ipv6=3Dyes],
 [ AC_MSG_RESULT(no)
@@ -468,15 +495,6 @@
 fi
=20
 dnl
-dnl check sizeof basic types.
-dnl They're very likely to be wrong for cross-compiling.
-AC_CHECK_SIZEOF(char, 1)
-AC_CHECK_SIZEOF(short, 2)
-AC_CHECK_SIZEOF(int, 4)
-AC_CHECK_SIZEOF(long, 4)
-AC_CHECK_SIZEOF(long long, 8)
-
-dnl
 dnl Checks for addrinfo structure
 AC_STRUCT_ADDRINFO(ac_cv_addrinfo)
 if test "$ac_cv_addrinfo" =3D no; then
@@ -504,34 +522,8 @@
 	missing_includes=3Dyes
 fi
=20
-dnl
-dnl Checks for IN[6]ADDRSZ
-AC_CHECK_ADDRSZ(ac_cv_addrsz)
-if test "$ac_cv_addrsz" =3D no; then
-	missing_includes=3Dyes
-fi
-
-dnl
-dnl Checks for RES_USE_INET6
-AC_CHECK_RES_USE_INET6(ac_cv_res_inet6)
-if test "$ac_cv_res_inet6" =3D no; then
-	missing_includes=3Dyes
-fi
-
-dnl
-dnl Checks for res_state_ext structure
-AC_STRUCT_RES_STATE_EXT(ac_cv_res_state_ext)
-if test "$ac_cv_res_state_ext" =3D no; then
-	missing_includes=3Dyes
-fi
-
-dnl
-dnl Checks if res_state structure has nsort member.
-AC_STRUCT_RES_STATE(ac_cv_res_state)
-
-
 AC_REPLACE_FUNCS(vfprintf strcasecmp strlcat strlcpy strdup strsep)
-AC_CHECK_FUNCS(strftime)
+AC_CHECK_FUNCS(fork vfork strftime)
 AC_CHECK_FUNCS(setlinebuf alarm)
=20
 needsnprintf=3Dno
@@ -723,8 +715,17 @@
=20
 #
 # Do we have the new open API?  Check for pcap_create, and assume that,
-# if we do, we also have pcap_activate() and the other new routines.
+# if we do, we also have pcap_activate() and the other new routines
+# introduced in libpcap 1.0.0.
+#
 AC_CHECK_FUNCS(pcap_create)
+if test $ac_cv_func_pcap_create =3D "yes" ; then
+	#
+	# OK, do we have pcap_set_tstamp_type?  If so, assume we have
+	# pcap_list_tstamp_types and pcap_free_tstamp_types as well.
+	#
+	AC_CHECK_FUNCS(pcap_set_tstamp_type)
+fi
=20
 AC_CHECK_FUNCS(pcap_findalldevs pcap_dump_flush pcap_lib_version)
 if test $ac_cv_func_pcap_findalldevs =3D "yes" ; then
@@ -803,7 +804,7 @@
=20
 aix*)
 	dnl Workaround to enable certain features
-	AC_DEFINE(_SUN)
+	AC_DEFINE(_SUN,1,[define on AIX to get certain functions])
 	;;
=20
 hpux*)
@@ -849,16 +850,6 @@
 	V_GROUP=3Dbpf
 fi
=20
-#
-# Check for some headers introduced in later versions of libpcap
-# and used by some printers.
-#
-savedcppflags=3D"$CPPFLAGS"
-CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
-AC_CHECK_HEADERS(pcap/bluetooth.h)
-AC_CHECK_HEADERS(pcap/usb.h)
-CPPFLAGS=3D"$savedcppflags"
-
 AC_CHECK_HEADERS(sys/bitypes.h)
=20
 AC_CHECK_TYPE([int8_t], ,
@@ -980,6 +971,19 @@
     ])
 fi
=20
+#
+# Check for some headers introduced in later versions of libpcap
+# and used by some printers.
+#
+# Those headers use the {u_}intN_t types, so we must do this after
+# we check for what's needed to get them defined.
+#
+savedcppflags=3D"$CPPFLAGS"
+CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
+AC_CHECK_HEADERS(pcap/bluetooth.h,,,[#include <tcpdump-stdinc.h>])
+AC_CHECK_HEADERS(pcap/usb.h,,,[#include <tcpdump-stdinc.h>])
+CPPFLAGS=3D"$savedcppflags"
+
 AC_PROG_RANLIB
=20
 AC_LBL_DEVEL(V_CCOPT)
@@ -1063,8 +1067,10 @@
 		fi
 		AC_CHECK_LIB(crypto, DES_cbc_encrypt)
=20
+		savedppflags=3D"$CPPLAGS"
 		CPPFLAGS=3D"$CPPFLAGS $V_INCLS"
 		AC_CHECK_HEADERS(openssl/evp.h)
+		CPPFLAGS=3D"$savedcppflags"
 	else
 		#
 		# Not found.  Did the user explicitly ask for it?
@@ -1079,8 +1085,8 @@
 dnl
 dnl set additional include path if necessary
 if test "$missing_includes" =3D "yes"; then
-	CPPFLAGS=3D"$CPPFLAGS -I\$(srcdir)/missing"
-	V_INCLS=3D"$V_INCLS -I\$(srcdir)/missing"
+	CPPFLAGS=3D"$CPPFLAGS -I$srcdir/missing"
+	V_INCLS=3D"$V_INCLS -I$srcdir/missing"
 fi
=20
 AC_SUBST(V_CCOPT)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/cpack.c
--- a/head/contrib/tcpdump/cpack.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/cpack.c	Wed Jul 25 16:21:35 2012 +0300
@@ -38,7 +38,7 @@
 #include "cpack.h"
 #include "extract.h"
=20
-static u_int8_t *
+u_int8_t *
 cpack_next_boundary(u_int8_t *buf, u_int8_t *p, size_t alignment)
 {
 	size_t misalignment =3D (size_t)(p - buf) % alignment;
@@ -53,7 +53,7 @@
  * wordsize bytes remain in the buffer after the boundary.  Otherwise,
  * return a pointer to the boundary.
  */
-static u_int8_t *
+u_int8_t *
 cpack_align_and_reserve(struct cpack_state *cs, size_t wordsize)
 {
 	u_int8_t *next;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/cpack.h
--- a/head/contrib/tcpdump/cpack.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/cpack.h	Wed Jul 25 16:21:35 2012 +0300
@@ -43,6 +43,9 @@
 int cpack_uint32(struct cpack_state *, u_int32_t *);
 int cpack_uint64(struct cpack_state *, u_int64_t *);
=20
+u_int8_t *cpack_next_boundary(u_int8_t *buf, u_int8_t *p, size_t alignment=
);
+u_int8_t *cpack_align_and_reserve(struct cpack_state *cs, size_t wordsize);
+
 #define cpack_int8(__s, __p)	cpack_uint8((__s),  (u_int8_t*)(__p))
 #define cpack_int16(__s, __p)	cpack_uint16((__s), (u_int16_t*)(__p))
 #define cpack_int32(__s, __p)	cpack_uint32((__s), (u_int32_t*)(__p))
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ethertype.h
--- a/head/contrib/tcpdump/ethertype.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ethertype.h	Wed Jul 25 16:21:35 2012 +0300
@@ -19,7 +19,7 @@
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * @(#) $Header: /tcpdump/master/tcpdump/ethertype.h,v 1.30 2008-02-06 10:=
47:53 guy Exp $ (LBL)
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/ethertype.h 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 /*
@@ -104,6 +104,20 @@
 #ifndef	ETHERTYPE_8021Q
 #define	ETHERTYPE_8021Q		0x8100
 #endif
+
+/* see:
+        http://en.wikipedia.org/wiki/IEEE_802.1Q
+    and http://en.wikipedia.org/wiki/QinQ
+*/
+#ifndef	ETHERTYPE_8021Q9100
+#define	ETHERTYPE_8021Q9100	0x9100
+#endif
+#ifndef	ETHERTYPE_8021Q9200
+#define	ETHERTYPE_8021Q9200	0x9200
+#endif
+#ifndef	ETHERTYPE_8021QinQ
+#define	ETHERTYPE_8021QinQ      0x88a8
+#endif
 #ifndef ETHERTYPE_IPX
 #define ETHERTYPE_IPX		0x8137
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/forces.h
--- a/head/contrib/tcpdump/forces.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/forces.h	Wed Jul 25 16:21:35 2012 +0300
@@ -585,7 +585,7 @@
 		   u_int16_t op_msk, int indent);
=20
 int pdatacnt_print(register const u_char * pptr, register u_int len,
-	       u_int32_t IDcnt, u_int16_t op_msk, int indent);
+	       u_int16_t IDcnt, u_int16_t op_msk, int indent);
 int pdata_print(register const u_char * pptr, register u_int len,
 	    u_int16_t op_msk, int indent);
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ieee802_11_radio.h
--- a/head/contrib/tcpdump/ieee802_11_radio.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ieee802_11_radio.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,4 +1,4 @@
-/* $FreeBSD$ */
+/* $FreeBSD: head/contrib/tcpdump/ieee802_11_radio.h 235530 2012-05-17 05:=
11:57Z delphij $ */
 /* NetBSD: ieee802_11_radio.h,v 1.2 2006/02/26 03:04:03 dyoung Exp  */
 /* $Header: /tcpdump/master/tcpdump/ieee802_11_radio.h,v 1.3 2007-08-29 02=
:31:44 mcr Exp $ */
=20
@@ -158,6 +158,10 @@
  *      Unitless indication of the Rx/Tx antenna for this packet.
  *      The first antenna is antenna 0.
  *
+ * IEEE80211_RADIOTAP_RX_FLAGS          u_int16_t       bitmap
+ *
+ *     Properties of received frames. See flags defined below.
+ *
  * IEEE80211_RADIOTAP_XCHANNEL          u_int32_t	bitmap
  *					u_int16_t	MHz
  *					u_int8_t	channel number
@@ -168,6 +172,25 @@
  *	finally the maximum regulatory transmit power cap in .5 dBm
  *	units.  This property supersedes IEEE80211_RADIOTAP_CHANNEL
  *	and only one of the two should be present.
+ *
+ * IEEE80211_RADIOTAP_MCS		u_int8_t	known
+ *					u_int8_t	flags
+ *					u_int8_t	mcs
+ *
+ *	Bitset indicating which fields have known values, followed
+ *	by bitset of flag values, followed by the MCS rate index as
+ *	in IEEE 802.11n.
+ *
+ * IEEE80211_RADIOTAP_VENDOR_NAMESPACE
+ *					u_int8_t  OUI[3]
+ *                                   u_int8_t  subspace
+ *                                   u_int16_t length
+ *
+ *     The Vendor Namespace Field contains three sub-fields. The first
+ *     sub-field is 3 bytes long. It contains the vendor's IEEE 802
+ *     Organizationally Unique Identifier (OUI). The fourth byte is a
+ *     vendor-specific "namespace selector."
+ *
  */
 enum ieee80211_radiotap_type {
 	IEEE80211_RADIOTAP_TSFT =3D 0,
@@ -184,8 +207,12 @@
 	IEEE80211_RADIOTAP_ANTENNA =3D 11,
 	IEEE80211_RADIOTAP_DB_ANTSIGNAL =3D 12,
 	IEEE80211_RADIOTAP_DB_ANTNOISE =3D 13,
+	IEEE80211_RADIOTAP_RX_FLAGS =3D 14,
 	/* NB: gap for netbsd definitions */
 	IEEE80211_RADIOTAP_XCHANNEL =3D 18,
+	IEEE80211_RADIOTAP_MCS =3D 19,
+	IEEE80211_RADIOTAP_NAMESPACE =3D 29,
+	IEEE80211_RADIOTAP_VENDOR_NAMESPACE =3D 30,
 	IEEE80211_RADIOTAP_EXT =3D 31
 };
=20
@@ -206,6 +233,19 @@
 #define	IEEE80211_CHAN_HT40U	0x20000	/* HT 40 channel w/ ext above */
 #define	IEEE80211_CHAN_HT40D	0x40000	/* HT 40 channel w/ ext below */
=20
+/* Useful combinations of channel characteristics, borrowed from Ethereal =
*/
+#define IEEE80211_CHAN_A \
+        (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM)
+#define IEEE80211_CHAN_B \
+        (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK)
+#define IEEE80211_CHAN_G \
+        (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN)
+#define IEEE80211_CHAN_TA \
+        (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO)
+#define IEEE80211_CHAN_TG \
+        (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN  | IEEE80211_CHAN_TURBO)
+
+
 /* For IEEE80211_RADIOTAP_FLAGS */
 #define	IEEE80211_RADIOTAP_F_CFP	0x01	/* sent/received
 						 * during CFP
@@ -226,6 +266,26 @@
 						 * (to 32-bit boundary)
 						 */
 #define	IEEE80211_RADIOTAP_F_BADFCS	0x40	/* does not pass FCS check */
-#define	IEEE80211_RADIOTAP_F_SHORTGI	0x80	/* HT short GI */
+
+/* For IEEE80211_RADIOTAP_RX_FLAGS */
+#define IEEE80211_RADIOTAP_F_RX_BADFCS	0x0001	/* frame failed crc check */
+#define IEEE80211_RADIOTAP_F_RX_PLCP_CRC	0x0002	/* frame failed PLCP CRC c=
heck */
+
+/* For IEEE80211_RADIOTAP_MCS known */
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_KNOWN		0x01
+#define IEEE80211_RADIOTAP_MCS_MCS_INDEX_KNOWN		0x02	/* MCS index field */
+#define IEEE80211_RADIOTAP_MCS_GUARD_INTERVAL_KNOWN	0x04
+#define IEEE80211_RADIOTAP_MCS_HT_FORMAT_KNOWN		0x08
+#define IEEE80211_RADIOTAP_MCS_FEC_TYPE_KNOWN		0x10
+
+/* For IEEE80211_RADIOTAP_MCS flags */
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_MASK	0x03
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_20	0
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_40	1
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_20L	2
+#define IEEE80211_RADIOTAP_MCS_BANDWIDTH_20U	3
+#define IEEE80211_RADIOTAP_MCS_SHORT_GI		0x04 /* short guard interval */
+#define IEEE80211_RADIOTAP_MCS_HT_GREENFIELD	0x08
+#define IEEE80211_RADIOTAP_MCS_FEC_LDPC		0x10
=20
 #endif /* _NET_IF_IEEE80211RADIOTAP_H_ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/in_cksum.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/in_cksum.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,200 @@
+/* in_cksum.c
+ * 4.4-Lite-2 Internet checksum routine, modified to take a vector of
+ * pointers/lengths giving the pieces to be checksummed.  Also using
+ * Tahoe/CGI version of ADDCARRY(x) macro instead of from portable version.
+ */
+
+/*
+ * Copyright (c) 1988, 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)in_cksum.c	8.1 (Berkeley) 6/10/93
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include "interface.h"
+
+/*
+ * Checksum routine for Internet Protocol family headers (Portable Version=
).
+ *
+ * This routine is very heavily used in the network
+ * code and should be modified for each CPU to be as fast as possible.
+ */
+
+#define ADDCARRY(x)  {if ((x) > 65535) (x) -=3D 65535;}
+#define REDUCE {l_util.l =3D sum; sum =3D l_util.s[0] + l_util.s[1]; ADDCA=
RRY(sum);}
+
+u_int16_t
+in_cksum(const struct cksum_vec *vec, int veclen)
+{
+	register const u_int16_t *w;
+	register int sum =3D 0;
+	register int mlen =3D 0;
+	int byte_swapped =3D 0;
+
+	union {
+		u_int8_t	c[2];
+		u_int16_t	s;
+	} s_util;
+	union {
+		u_int16_t	s[2];
+		u_int32_t	l;
+	} l_util;
+
+	for (; veclen !=3D 0; vec++, veclen--) {
+		if (vec->len =3D=3D 0)
+			continue;
+		w =3D (const u_int16_t *)(void *)vec->ptr;
+		if (mlen =3D=3D -1) {
+			/*
+			 * The first byte of this chunk is the continuation
+			 * of a word spanning between this chunk and the
+			 * last chunk.
+			 *
+			 * s_util.c[0] is already saved when scanning previous
+			 * chunk.
+			 */
+			s_util.c[1] =3D *(const u_int8_t *)w;
+			sum +=3D s_util.s;
+			w =3D (const u_int16_t *)(void *)((const u_int8_t *)w + 1);
+			mlen =3D vec->len - 1;
+		} else
+			mlen =3D vec->len;
+		/*
+		 * Force to even boundary.
+		 */
+		if ((1 & (unsigned long) w) && (mlen > 0)) {
+			REDUCE;
+			sum <<=3D 8;
+			s_util.c[0] =3D *(const u_int8_t *)w;
+			w =3D (const u_int16_t *)(void *)((const u_int8_t *)w + 1);
+			mlen--;
+			byte_swapped =3D 1;
+		}
+		/*
+		 * Unroll the loop to make overhead from
+		 * branches &c small.
+		 */
+		while ((mlen -=3D 32) >=3D 0) {
+			sum +=3D w[0]; sum +=3D w[1]; sum +=3D w[2]; sum +=3D w[3];
+			sum +=3D w[4]; sum +=3D w[5]; sum +=3D w[6]; sum +=3D w[7];
+			sum +=3D w[8]; sum +=3D w[9]; sum +=3D w[10]; sum +=3D w[11];
+			sum +=3D w[12]; sum +=3D w[13]; sum +=3D w[14]; sum +=3D w[15];
+			w +=3D 16;
+		}
+		mlen +=3D 32;
+		while ((mlen -=3D 8) >=3D 0) {
+			sum +=3D w[0]; sum +=3D w[1]; sum +=3D w[2]; sum +=3D w[3];
+			w +=3D 4;
+		}
+		mlen +=3D 8;
+		if (mlen =3D=3D 0 && byte_swapped =3D=3D 0)
+			continue;
+		REDUCE;
+		while ((mlen -=3D 2) >=3D 0) {
+			sum +=3D *w++;
+		}
+		if (byte_swapped) {
+			REDUCE;
+			sum <<=3D 8;
+			byte_swapped =3D 0;
+			if (mlen =3D=3D -1) {
+				s_util.c[1] =3D *(const u_int8_t *)w;
+				sum +=3D s_util.s;
+				mlen =3D 0;
+			} else
+				mlen =3D -1;
+		} else if (mlen =3D=3D -1)
+			s_util.c[0] =3D *(const u_int8_t *)w;
+	}
+	if (mlen =3D=3D -1) {
+		/* The last mbuf has odd # of bytes. Follow the
+		   standard (the odd byte may be shifted left by 8 bits
+		   or not as determined by endian-ness of the machine) */
+		s_util.c[1] =3D 0;
+		sum +=3D s_util.s;
+	}
+	REDUCE;
+	return (~sum & 0xffff);
+}
+
+/*
+ * Given the host-byte-order value of the checksum field in a packet
+ * header, and the network-byte-order computed checksum of the data
+ * that the checksum covers (including the checksum itself), compute
+ * what the checksum field *should* have been.
+ */
+u_int16_t
+in_cksum_shouldbe(u_int16_t sum, u_int16_t computed_sum)
+{
+	u_int32_t shouldbe;
+
+	/*
+	 * The value that should have gone into the checksum field
+	 * is the negative of the value gotten by summing up everything
+	 * *but* the checksum field.
+	 *
+	 * We can compute that by subtracting the value of the checksum
+	 * field from the sum of all the data in the packet, and then
+	 * computing the negative of that value.
+	 *
+	 * "sum" is the value of the checksum field, and "computed_sum"
+	 * is the negative of the sum of all the data in the packets,
+	 * so that's -(-computed_sum - sum), or (sum + computed_sum).
+	 *
+	 * All the arithmetic in question is one's complement, so the
+	 * addition must include an end-around carry; we do this by
+	 * doing the arithmetic in 32 bits (with no sign-extension),
+	 * and then adding the upper 16 bits of the sum, which contain
+	 * the carry, to the lower 16 bits of the sum, and then do it
+	 * again in case *that* sum produced a carry.
+	 *
+	 * As RFC 1071 notes, the checksum can be computed without
+	 * byte-swapping the 16-bit words; summing 16-bit words
+	 * on a big-endian machine gives a big-endian checksum, which
+	 * can be directly stuffed into the big-endian checksum fields
+	 * in protocol headers, and summing words on a little-endian
+	 * machine gives a little-endian checksum, which must be
+	 * byte-swapped before being stuffed into a big-endian checksum
+	 * field.
+	 *
+	 * "computed_sum" is a network-byte-order value, so we must put
+	 * it in host byte order before subtracting it from the
+	 * host-byte-order value from the header; the adjusted checksum
+	 * will be in host byte order, which is what we'll return.
+	 */
+	shouldbe =3D sum;
+	shouldbe +=3D ntohs(computed_sum);
+	shouldbe =3D (shouldbe & 0xFFFF) + (shouldbe >> 16);
+	shouldbe =3D (shouldbe & 0xFFFF) + (shouldbe >> 16);
+	return shouldbe;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/interface.h
--- a/head/contrib/tcpdump/interface.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/interface.h	Wed Jul 25 16:21:35 2012 +0300
@@ -28,10 +28,6 @@
 #include "os-proto.h"
 #endif
=20
-#ifndef HAVE___ATTRIBUTE__
-#define __attribute__(x)
-#endif
-
 /* snprintf et al */
=20
 #include <stdarg.h>
@@ -74,6 +70,7 @@
 #define PT_CNFP		7	/* Cisco NetFlow protocol */
 #define PT_TFTP		8	/* trivial file transfer protocol */
 #define PT_AODV		9	/* Ad-hoc On-demand Distance Vector Protocol */
+#define PT_CARP         10      /* Common Address Redundancy Protocol */
=20
 #ifndef min
 #define min(a,b) ((a)>(b)?(b):(a))
@@ -166,7 +163,6 @@
 extern void hex_print_with_offset(const char *, const u_char *, u_int, u_i=
nt);
 extern void hex_print(const char *, const u_char *, u_int);
 extern void telnet_print(const u_char *, u_int);
-extern int ethertype_print(u_short, const u_char *, u_int, u_int);
 extern int llc_print(const u_char *, u_int, u_int, const u_char *,
 	const u_char *, u_short *);
 extern int snap_print(const u_char *, u_int, u_int, u_int);
@@ -189,9 +185,6 @@
 extern u_int pflog_if_print(const struct pcap_pkthdr *, const u_char *);
 extern u_int arcnet_if_print(const struct pcap_pkthdr *, const u_char *);
 extern u_int arcnet_linux_if_print(const struct pcap_pkthdr *, const u_cha=
r *);
-extern void ether_print(const u_char *, u_int, u_int,
-    void (*)(const u_char *), const u_char *);
-extern u_int ether_if_print(const struct pcap_pkthdr *, const u_char *);
 extern u_int token_print(const u_char *, u_int, u_int);
 extern u_int token_if_print(const struct pcap_pkthdr *, const u_char *);
 extern void fddi_print(const u_char *, u_int, u_int);
@@ -231,6 +224,7 @@
 extern void rsvp_print(const u_char *, u_int);
 extern void ldp_print(const u_char *, u_int);
 extern void lldp_print(const u_char *, u_int);
+extern void rpki_rtr_print(const u_char *, u_int);
 extern void lmp_print(const u_char *, u_int);
 extern void lspping_print(const u_char *, u_int);
 extern void lwapp_control_print(const u_char *, u_int, int);
@@ -297,6 +291,7 @@
 extern void print_data(const unsigned char *, int);
 extern void l2tp_print(const u_char *, u_int);
 extern void vrrp_print(const u_char *, u_int, int);
+extern void carp_print(const u_char *, u_int, int);
 extern void slow_print(const u_char *, u_int);
 extern void sflow_print(const u_char *, u_int);
 extern void mpcp_print(const u_char *, u_int);
@@ -322,10 +317,9 @@
 extern u_int usb_linux_48_byte_print(const struct pcap_pkthdr *, const u_c=
har *);
 extern u_int usb_linux_64_byte_print(const struct pcap_pkthdr *, const u_c=
har *);
=20
+
 #ifdef INET6
-extern void ip6_print(const u_char *, u_int);
 extern void ip6_opt_print(const u_char *, int);
-extern int nextproto6_cksum(const struct ip6_hdr *, const u_short *, u_int=
, u_int);
 extern int hbhopt_print(const u_char *);
 extern int dstopt_print(const u_char *);
 extern int frag6_print(const u_char *, const u_char *);
@@ -334,9 +328,15 @@
 extern int rt6_print(const u_char *, const u_char *);
 extern void ospf6_print(const u_char *, u_int);
 extern void dhcp6_print(const u_char *, u_int);
+extern void babel_print(const u_char *, u_int);
 extern int mask62plen(const u_char *);
 #endif /*INET6*/
-extern u_short in_cksum(const u_short *, register u_int, int);
+
+struct cksum_vec {
+	const u_int8_t	*ptr;
+	int		len;
+};
+extern u_int16_t in_cksum(const struct cksum_vec *, int);
 extern u_int16_t in_cksum_shouldbe(u_int16_t, u_int16_t);
=20
 #ifndef HAVE_BPF_DUMP
@@ -356,6 +356,7 @@
 #define bflag gndo->ndo_bflag=20
 #define eflag gndo->ndo_eflag=20
 #define fflag gndo->ndo_fflag=20
+#define jflag gndo->ndo_jflag
 #define Kflag gndo->ndo_Kflag=20
 #define nflag gndo->ndo_nflag=20
 #define Nflag gndo->ndo_Nflag=20
@@ -384,6 +385,7 @@
 #define Cflag_count gndo->ndo_Cflag_count
 #define Gflag_count gndo->ndo_Gflag_count
 #define Gflag_time gndo->ndo_Gflag_time=20
+#define Hflag gndo->ndo_Hflag
 #define snaplen     gndo->ndo_snaplen
 #define snapend     gndo->ndo_snapend
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ip.h
--- a/head/contrib/tcpdump/ip.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ip.h	Wed Jul 25 16:21:35 2012 +0300
@@ -62,7 +62,7 @@
 	u_int8_t	ip_p;		/* protocol */
 	u_int16_t	ip_sum;		/* checksum */
 	struct	in_addr ip_src,ip_dst;	/* source and dest address */
-};
+} UNALIGNED;
=20
 #define	IP_MAXPACKET	65535		/* maximum packet size */
=20
@@ -134,7 +134,7 @@
 			u_int32_t ipt_time;
 		} ipt_ta[1];
 	} ipt_timestamp;
-};
+} UNALIGNED;
=20
 /* flag bits for ipt_flg */
 #define	IPOPT_TS_TSONLY		0		/* timestamps only */
@@ -161,4 +161,4 @@
 #define	IP_MSS		576		/* default maximum segment size */
=20
 /* in print-ip.c */
-extern u_int32_t ip_finddst(const struct ip *);
+extern int nextproto4_cksum(const struct ip *, const u_int8_t *, u_int, u_=
int);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ip6.h
--- a/head/contrib/tcpdump/ip6.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ip6.h	Wed Jul 25 16:21:35 2012 +0300
@@ -86,21 +86,7 @@
 	} ip6_ctlun;
 	struct in6_addr ip6_src;	/* source address */
 	struct in6_addr ip6_dst;	/* destination address */
-};
-
-/*
- * Pseudo header, used for higher layer checksumming.
- */
-union ip6_pseudo_hdr {
-    struct {
-	struct in6_addr ph_src;
-	struct in6_addr ph_dst;
-	u_int32_t	ph_len;
-	u_int8_t	ph_zero[3];
-	u_int8_t	ph_nxt;
-    } ph;
-    u_int16_t pa[20];
-};
+} UNALIGNED;
=20
 #define ip6_vfc		ip6_ctlun.ip6_un2_vfc
 #define ip6_flow	ip6_ctlun.ip6_un1.ip6_un1_flow
@@ -123,25 +109,23 @@
  */
=20
 struct	ip6_ext {
-	u_char	ip6e_nxt;
-	u_char	ip6e_len;
-};
+	u_int8_t ip6e_nxt;
+	u_int8_t ip6e_len;
+} UNALIGNED;
=20
 /* Hop-by-Hop options header */
-/* XXX should we pad it to force alignment on an 8-byte boundary? */
 struct ip6_hbh {
 	u_int8_t ip6h_nxt;	/* next header */
 	u_int8_t ip6h_len;	/* length in units of 8 octets */
 	/* followed by options */
-};
+} UNALIGNED;
=20
 /* Destination options header */
-/* XXX should we pad it to force alignment on an 8-byte boundary? */
 struct ip6_dest {
 	u_int8_t ip6d_nxt;	/* next header */
 	u_int8_t ip6d_len;	/* length in units of 8 octets */
 	/* followed by options */
-};
+} UNALIGNED;
=20
 /* Option types and related macros */
 #define IP6OPT_PAD1		0x00	/* 00 0 00000 */
@@ -177,7 +161,7 @@
 	u_int8_t  ip6r_type;	/* routing type */
 	u_int8_t  ip6r_segleft;	/* segments left */
 	/* followed by routing type specific data */
-};
+} UNALIGNED;
=20
 /* Type 0 Routing header */
 struct ip6_rthdr0 {
@@ -188,7 +172,7 @@
 	u_int8_t  ip6r0_reserved;	/* reserved field */
 	u_int8_t  ip6r0_slmap[3];	/* strict/loose bit map */
 	struct in6_addr ip6r0_addr[1];	/* up to 23 addresses */
-};
+} UNALIGNED;
=20
 /* Fragment header */
 struct ip6_frag {
@@ -196,10 +180,13 @@
 	u_int8_t  ip6f_reserved;	/* reserved field */
 	u_int16_t ip6f_offlg;		/* offset, reserved, and flag */
 	u_int32_t ip6f_ident;		/* identification */
-};
+} UNALIGNED;
=20
 #define IP6F_OFF_MASK		0xfff8	/* mask out offset from ip6f_offlg */
 #define IP6F_RESERVED_MASK	0x0006	/* reserved bits in ip6f_offlg */
 #define IP6F_MORE_FRAG		0x0001	/* more-fragments flag */
=20
+/* in print-ip6.c */
+extern int nextproto6_cksum(const struct ip6_hdr *, const u_int8_t *, u_in=
t, u_int);
+
 #endif /* not _NETINET_IP6_H_ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ipproto.c
--- a/head/contrib/tcpdump/ipproto.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ipproto.c	Wed Jul 25 16:21:35 2012 +0300
@@ -55,6 +55,7 @@
     { IPPROTO_PGM, "PGM" },
     { IPPROTO_SCTP, "SCTP" },
     { IPPROTO_MOBILITY, "Mobility" },
+    { IPPROTO_CARP, "CARP" },
     { 0, NULL }
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ipproto.h
--- a/head/contrib/tcpdump/ipproto.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ipproto.h	Wed Jul 25 16:21:35 2012 +0300
@@ -34,7 +34,7 @@
  *
  * From:
  *	@(#)in.h	8.3 (Berkeley) 1/3/94
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/ipproto.h 235530 2012-05-17 05:11:57Z de=
lphij $
  * FreeBSD: src/sys/netinet/in.h,v 1.38.2.3 1999/08/29 16:29:34 peter Exp
  */
=20
@@ -134,6 +134,9 @@
 #ifndef IPPROTO_VRRP
 #define IPPROTO_VRRP		112
 #endif
+#ifndef IPPROTO_CARP
+#define IPPROTO_CARP		112
+#endif
 #ifndef IPPROTO_PGM
 #define IPPROTO_PGM             113
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/missing/addrsize.h
--- a/head/contrib/tcpdump/missing/addrsize.h	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef INADDRSZ
-#define INADDRSZ 4		/* IPv4 T_A */
-#endif
-
-#ifndef IN6ADDRSZ
-#define IN6ADDRSZ	16	/* IPv6 T_AAAA */
-#endif
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/missing/bittypes.h
--- a/head/contrib/tcpdump/missing/bittypes.h	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef HAVE_U_INT8_T
-
-#if SIZEOF_CHAR =3D=3D 1
-typedef unsigned char u_int8_t;
-#elif SIZEOF_INT =3D=3D 1
-typedef unsigned int u_int8_t;
-#else  /* XXX */
-#error "there's no appropriate type for u_int8_t"
-#endif
-
-#endif /* HAVE_U_INT8_T */
-
-#ifndef HAVE_U_INT16_T
-
-#if SIZEOF_SHORT =3D=3D 2
-typedef unsigned short u_int16_t;
-#elif SIZEOF_INT =3D=3D 2
-typedef unsigned int u_int16_t;
-#elif SIZEOF_CHAR =3D=3D 2
-typedef unsigned char u_int16_t;
-#else  /* XXX */
-#error "there's no appropriate type for u_int16_t"
-#endif
-
-#endif /* HAVE_U_INT16_T */
-
-#ifndef HAVE_U_INT32_T
-
-#if SIZEOF_INT =3D=3D 4
-typedef unsigned int u_int32_t;
-#elif SIZEOF_LONG =3D=3D 4
-typedef unsigned long u_int32_t;
-#elif SIZEOF_SHORT =3D=3D 4
-typedef unsigned short u_int32_t;
-#else  /* XXX */
-#error "there's no appropriate type for u_int32_t"
-#endif
-
-#endif /* HAVE_U_INT32_T */
-
-#ifndef HAVE_U_INT64_T
-
-#if SIZEOF_LONG_LONG =3D=3D 8
-typedef unsigned long long u_int64_t;
-#elif defined(_MSC_EXTENSIONS)
-typedef unsigned _int64 u_int64_t;
-#elif SIZEOF_INT =3D=3D 8
-typedef unsigned int u_int64_t;
-#elif SIZEOF_LONG =3D=3D 8
-typedef unsigned long u_int64_t;
-#elif SIZEOF_SHORT =3D=3D 8
-typedef unsigned short u_int64_t;
-#else  /* XXX */
-#error "there's no appropriate type for u_int64_t"
-#endif
-
-#endif /* HAVE_U_INT64_T */
-
-#ifndef PRId64
-#ifdef _MSC_EXTENSIONS
-#define PRId64	"I64d"
-#else /* _MSC_EXTENSIONS */
-#define PRId64	"lld"
-#endif /* _MSC_EXTENSIONS */
-#endif /* PRId64 */
-
-#ifndef PRIo64
-#ifdef _MSC_EXTENSIONS
-#define PRIo64	"I64o"
-#else /* _MSC_EXTENSIONS */
-#define PRIo64	"llo"
-#endif /* _MSC_EXTENSIONS */
-#endif /* PRIo64 */
-
-#ifndef PRIx64
-#ifdef _MSC_EXTENSIONS
-#define PRIx64	"I64x"
-#else /* _MSC_EXTENSIONS */
-#define PRIx64	"llx"
-#endif /* _MSC_EXTENSIONS */
-#endif /* PRIx64 */
-
-#ifndef PRIu64
-#ifdef _MSC_EXTENSIONS
-#define PRIu64	"I64u"
-#else /* _MSC_EXTENSIONS */
-#define PRIu64	"llu"
-#endif /* _MSC_EXTENSIONS */
-#endif /* PRIu64 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/missing/resolv6.h
--- a/head/contrib/tcpdump/missing/resolv6.h	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-/*
- * Resolver options for IPv6.
- * XXX: this should be in an offical include file. There may be conflicts.=
..
- */
-#ifndef HAVE_RES_USE_INET6
-#define	RES_USE_INET6	0x80000000	/* use/map IPv6 in gethostbyname() */
-#endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/missing/resolv_ex=
t.h
--- a/head/contrib/tcpdump/missing/resolv_ext.h	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef MAXRESOLVSORT		/* XXX */
-#define	MAXRESOLVSORT		10	/* number of net to sort on */
-#endif
-
-#ifndef HAVE_RES_STATE_EXT
-struct __res_state_ext {
-	struct sockaddr_storage nsaddr_list[MAXNS];
-	struct {
-		int af;		/* address family for addr, mask */
-		union {
-			struct in_addr ina;
-#ifdef INET6
-			struct in6_addr in6a;
-#endif
-		} addr, mask;
-	} sort_list[MAXRESOLVSORT];
-};
-#endif
-
-extern struct __res_state_ext _res_ext;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/netdissect.h
--- a/head/contrib/tcpdump/netdissect.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/netdissect.h	Wed Jul 25 16:21:35 2012 +0300
@@ -107,6 +107,7 @@
   int ndo_Iflag;		/* rfmon (monitor) mode */
   int ndo_Oflag;                /* run filter code optimizer */
   int ndo_dlt;                  /* if !=3D -1, ask libpcap for the DLT it =
names*/
+  int ndo_jflag;                /* packet time stamp source */
   int ndo_pflag;                /* don't go promiscuous */
=20
   int ndo_Cflag;                /* rotate dump files after this many bytes=
 */=20
@@ -116,6 +117,7 @@
   time_t ndo_Gflag_time;    /* The last time_t the dump file was rotated. =
*/
   int ndo_Wflag;          /* recycle output files after this number of fil=
es */
   int ndo_WflagChars;
+  int ndo_Hflag;		/* dissect 802.11s draft mesh standard */
   int ndo_suppress_default_print; /* don't use default_print() for unknown=
 packet types */
   const char *ndo_dltname;
=20
@@ -157,7 +159,7 @@
   void (*ndo_error)(netdissect_options *,
 		    const char *fmt, ...)
 #ifdef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS
-		     __attribute__ ((format (printf, 2, 3)))
+		     __attribute__ ((noreturn, format (printf, 2, 3)))
 #endif
 		     ;
   void (*ndo_warning)(netdissect_options *,
@@ -252,6 +254,9 @@
 extern void safeputchar(int);
 extern void safeputs(const char *, int);
=20
+#define PLURAL_SUFFIX(n) \
+	(((n) !=3D 1) ? "s" : "")
+
 #if 0
 extern const char *isonsap_string(netdissect_options *, const u_char *);
 extern const char *protoid_string(netdissect_options *, const u_char *);
@@ -263,6 +268,12 @@
=20
 #include <pcap.h>
=20
+typedef u_int (*if_ndo_printer)(struct netdissect_options *ndo,
+				const struct pcap_pkthdr *, const u_char *);
+typedef u_int (*if_printer)(const struct pcap_pkthdr *, const u_char *);
+
+extern if_ndo_printer lookup_ndo_printer(int);
+extern if_printer lookup_printer(int);
=20
 extern void eap_print(netdissect_options *,const u_char *, u_int);
 extern int esp_print(netdissect_options *,
@@ -281,6 +292,22 @@
 			   const u_char *bp2);
 extern void rrcp_print(netdissect_options *,const u_char *, u_int);
=20
+extern void ether_print(netdissect_options *,
+                        const u_char *, u_int, u_int,
+                        void (*)(netdissect_options *, const u_char *),
+                        const u_char *);
+
+extern u_int ether_if_print(netdissect_options *,=20
+                            const struct pcap_pkthdr *,const u_char *);
+extern u_int netanalyzer_if_print(netdissect_options *,=20
+                                  const struct pcap_pkthdr *,const u_char =
*);
+extern u_int netanalyzer_transparent_if_print(netdissect_options *,=20
+                                              const struct pcap_pkthdr *,
+                                              const u_char *);
+
+extern int ethertype_print(netdissect_options *,u_short, const u_char *,
+			     u_int, u_int);
+
 /* stuff that has not yet been rototiled */
 #if 0
 extern void ascii_print(netdissect_options *,u_int);
@@ -291,8 +318,6 @@
 				  u_int, u_int);
 extern void hex_print(netdissect_options *,const char *, u_int);
 extern void telnet_print(netdissect_options *,const u_char *, u_int);
-extern int ethertype_print(netdissect_options *,u_short, const u_char *,
-			     u_int, u_int);
 extern int llc_print(netdissect_options *,
 		     const u_char *, u_int, u_int, const u_char *,
 		     const u_char *, u_short *);
@@ -319,7 +344,6 @@
 		      const u_char *);
=20
 extern void arcnet_if_print(u_char*,const struct pcap_pkthdr *,const u_cha=
r *);
-extern void ether_if_print(u_char *,const struct pcap_pkthdr *,const u_cha=
r *);
 extern void token_if_print(u_char *,const struct pcap_pkthdr *,const u_cha=
r *);
 extern void fddi_if_print(u_char *,const struct pcap_pkthdr *, const u_cha=
r *);
=20
@@ -333,6 +357,7 @@
 		       register const u_char *, u_int);
 extern void igrp_print(netdissect_options *,const u_char *, u_int,
 		       const u_char *);
+extern int nextproto4_cksum(const struct ip *, const u_int8_t *, u_int, u_=
int);
 extern void ipN_print(netdissect_options *,const u_char *, u_int);
 extern void ipx_print(netdissect_options *,const u_char *, u_int);
 extern void isoclns_print(netdissect_options *,const u_char *,
@@ -378,6 +403,7 @@
 			 const struct pcap_pkthdr *, const u_char *);
=20
 extern void rip_print(netdissect_options *,const u_char *, u_int);
+extern void rpki_rtr_print(netdissect_options *,const u_char *, u_int);
=20
 extern void sctp_print(netdissect_options *ndo,
 		       const u_char *bp, const u_char *bp2,      =20
@@ -424,6 +450,8 @@
 extern void lcp_print(netdissect_options *,const u_char *, u_int);
 extern void vrrp_print(netdissect_options *,const u_char *bp,
 		       u_int len, int ttl);
+extern void carp_print(netdissect_options *,const u_char *bp,
+		       u_int len, int ttl);
 extern void cdp_print(netdissect_options *,const u_char *,
 		      u_int, u_int, const u_char *, const u_char *);
 extern void stp_print(netdissect_options *,const u_char *p, u_int length);
@@ -433,12 +461,15 @@
 #endif
=20
 extern u_int ipnet_if_print(netdissect_options *,const struct pcap_pkthdr =
*, const u_char *);
+extern u_int ppi_if_print(netdissect_options *,const struct pcap_pkthdr *,=
 const u_char *);
=20
-#if 0
+extern u_int ieee802_15_4_if_print(netdissect_options *,const struct pcap_=
pkthdr *, const u_char *);
+
 #ifdef INET6
 extern void ip6_print(netdissect_options *,const u_char *, u_int);
+#if 0
 extern void ip6_opt_print(netdissect_options *,const u_char *, int);
-extern int nextproto6_cksum(const struct ip6_hdr *, const u_short *, u_int=
, u_int);
+extern int nextproto6_cksum(const struct ip6_hdr *, const u_int8_t *, u_in=
t, u_int);
 extern int hbhopt_print(netdissect_options *,const u_char *);
 extern int dstopt_print(netdissect_options *,const u_char *);
 extern int frag6_print(netdissect_options *,const u_char *,
@@ -453,11 +484,17 @@
=20
 extern void zephyr_print(netdissect_options * ndo,
 			 const u_char *cp, int length);
+#endif /* 0 */
=20
 #endif /*INET6*/
-extern u_short in_cksum(const u_short *,
-			register u_int, int);
=20
+#if 0
+struct cksum_vec {
+	const u_int8_t	*ptr;
+	int		len;
+};
+extern u_int16_t in_cksum(const struct cksum_vec *, int);
+extern u_int16_t in_cksum_shouldbe(u_int16_t, u_int16_t);
 #endif
=20
 extern void esp_print_decodesecret(netdissect_options *ndo);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ospf.h
--- a/head/contrib/tcpdump/ospf.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/ospf.h	Wed Jul 25 16:21:35 2012 +0300
@@ -324,5 +324,5 @@
 #define	ospf_lsa	ospf_un.un_lsa
=20
 /* Functions shared by ospf and ospf6 */
-extern int ospf_print_te_lsa(u_int8_t *, u_int);
-extern int ospf_print_grace_lsa(u_int8_t *, u_int);
+extern int ospf_print_te_lsa(const u_int8_t *, u_int);
+extern int ospf_print_grace_lsa(const u_int8_t *, u_int);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/oui.c
--- a/head/contrib/tcpdump/oui.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/oui.c	Wed Jul 25 16:21:35 2012 +0300
@@ -42,6 +42,7 @@
     { OUI_IEEE_8021_PRIVATE, "IEEE 802.1 Private"},
     { OUI_IEEE_8023_PRIVATE, "IEEE 802.3 Private"},
     { OUI_TIA, "ANSI/TIA"},
+    { OUI_DCBX, "DCBX"},
     { 0, NULL }
 };
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/oui.h
--- a/head/contrib/tcpdump/oui.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/oui.h	Wed Jul 25 16:21:35 2012 +0300
@@ -30,6 +30,7 @@
 #define OUI_IEEE_8021_PRIVATE 0x0080c2      /* IEEE 802.1 Organisation Spe=
cific - Annex F */
 #define OUI_IEEE_8023_PRIVATE 0x00120f      /* IEEE 802.3 Organisation Spe=
cific - Annex G */
 #define OUI_TIA         0x0012bb        /* TIA - Telecommunications Indust=
ry Association - ANSI/TIA-1057- 2006 */
+#define OUI_DCBX        0x001B21        /* DCBX */
=20
 /*
  * These are SMI Network Management Private Enterprise Codes for
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/ppi.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/ppi.h	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,9 @@
+typedef struct ppi_header {
+	uint8_t		ppi_ver;
+	uint8_t		ppi_flags;
+	uint16_t	ppi_len;
+	uint32_t	ppi_dlt;
+} ppi_header_t;
+
+#define	PPI_HDRLEN	8
+
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-802_11.c
--- a/head/contrib/tcpdump/print-802_11.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-802_11.c	Wed Jul 25 16:21:35 2012 +0300
@@ -46,6 +46,15 @@
 #include "ieee802_11.h"
 #include "ieee802_11_radio.h"
=20
+/* Radiotap state */
+/*  This is used to save state when parsing/processing parameters */
+struct radiotap_state
+{
+	u_int32_t	present;
+
+	u_int8_t	rate;
+};
+
 #define PRINT_SSID(p) \
 	if (p.ssid_present) { \
 		printf(" ("); \
@@ -74,26 +83,403 @@
 	printf("%s", \
 	    CAPABILITY_PRIVACY(p.capability_info) ? ", PRIVACY" : "" );
=20
-static const int ieee80211_htrates[16] =3D {
-	13,		/* IFM_IEEE80211_MCS0 */
-	26,		/* IFM_IEEE80211_MCS1 */
-	39,		/* IFM_IEEE80211_MCS2 */
-	52,		/* IFM_IEEE80211_MCS3 */
-	78,		/* IFM_IEEE80211_MCS4 */
-	104,		/* IFM_IEEE80211_MCS5 */
-	117,		/* IFM_IEEE80211_MCS6 */
-	130,		/* IFM_IEEE80211_MCS7 */
-	26,		/* IFM_IEEE80211_MCS8 */
-	52,		/* IFM_IEEE80211_MCS9 */
-	78,		/* IFM_IEEE80211_MCS10 */
-	104,		/* IFM_IEEE80211_MCS11 */
-	156,		/* IFM_IEEE80211_MCS12 */
-	208,		/* IFM_IEEE80211_MCS13 */
-	234,		/* IFM_IEEE80211_MCS14 */
-	260,		/* IFM_IEEE80211_MCS15 */
+#define MAX_MCS_INDEX	76
+
+/*
+ * Indices are:
+ *
+ *	the MCS index (0-76);
+ *
+ *	0 for 20 MHz, 1 for 40 MHz;
+ *
+ *	0 for a long guard interval, 1 for a short guard interval.
+ */
+static const float ieee80211_float_htrates[MAX_MCS_INDEX+1][2][2] =3D {
+	/* MCS  0  */
+	{	/* 20 Mhz */ {    6.5,		/* SGI */    7.2, },
+		/* 40 Mhz */ {   13.5,		/* SGI */   15.0, },
+	},
+
+	/* MCS  1  */
+	{	/* 20 Mhz */ {   13.0,		/* SGI */   14.4, },
+		/* 40 Mhz */ {   27.0,		/* SGI */   30.0, },
+	},
+
+	/* MCS  2  */
+	{	/* 20 Mhz */ {   19.5,		/* SGI */   21.7, },
+		/* 40 Mhz */ {   40.5,		/* SGI */   45.0, },
+	},
+
+	/* MCS  3  */
+	{	/* 20 Mhz */ {   26.0,		/* SGI */   28.9, },
+		/* 40 Mhz */ {   54.0,		/* SGI */   60.0, },
+	},
+
+	/* MCS  4  */
+	{	/* 20 Mhz */ {   39.0,		/* SGI */   43.3, },
+		/* 40 Mhz */ {   81.0,		/* SGI */   90.0, },
+	},
+
+	/* MCS  5  */
+	{	/* 20 Mhz */ {   52.0,		/* SGI */   57.8, },
+		/* 40 Mhz */ {  108.0,		/* SGI */  120.0, },
+	},
+
+	/* MCS  6  */
+	{	/* 20 Mhz */ {   58.5,		/* SGI */   65.0, },
+		/* 40 Mhz */ {  121.5,		/* SGI */  135.0, },
+	},
+
+	/* MCS  7  */
+	{	/* 20 Mhz */ {   65.0,		/* SGI */   72.2, },
+		/* 40 Mhz */ {   135.0,		/* SGI */  150.0, },
+	},
+
+	/* MCS  8  */
+	{	/* 20 Mhz */ {   13.0,		/* SGI */   14.4, },
+		/* 40 Mhz */ {   27.0,		/* SGI */   30.0, },
+	},
+
+	/* MCS  9  */
+	{	/* 20 Mhz */ {   26.0,		/* SGI */   28.9, },
+		/* 40 Mhz */ {   54.0,		/* SGI */   60.0, },
+	},
+
+	/* MCS 10  */
+	{	/* 20 Mhz */ {   39.0,		/* SGI */   43.3, },
+		/* 40 Mhz */ {   81.0,		/* SGI */   90.0, },
+	},
+
+	/* MCS 11  */
+	{	/* 20 Mhz */ {   52.0,		/* SGI */   57.8, },
+		/* 40 Mhz */ {  108.0,		/* SGI */  120.0, },
+	},
+
+	/* MCS 12  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 13  */
+	{	/* 20 Mhz */ {  104.0,		/* SGI */  115.6, },
+		/* 40 Mhz */ {  216.0,		/* SGI */  240.0, },
+	},
+
+	/* MCS 14  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 15  */
+	{	/* 20 Mhz */ {  130.0,		/* SGI */  144.4, },
+		/* 40 Mhz */ {  270.0,		/* SGI */  300.0, },
+	},
+
+	/* MCS 16  */
+	{	/* 20 Mhz */ {   19.5,		/* SGI */   21.7, },
+		/* 40 Mhz */ {   40.5,		/* SGI */   45.0, },
+	},
+
+	/* MCS 17  */
+	{	/* 20 Mhz */ {   39.0,		/* SGI */   43.3, },
+		/* 40 Mhz */ {   81.0,		/* SGI */   90.0, },
+	},
+
+	/* MCS 18  */
+	{	/* 20 Mhz */ {   58.5,		/* SGI */   65.0, },
+		/* 40 Mhz */ {  121.5,		/* SGI */  135.0, },
+	},
+
+	/* MCS 19  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 20  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 21  */
+	{	/* 20 Mhz */ {  156.0,		/* SGI */  173.3, },
+		/* 40 Mhz */ {  324.0,		/* SGI */  360.0, },
+	},
+
+	/* MCS 22  */
+	{	/* 20 Mhz */ {  175.5,		/* SGI */  195.0, },
+		/* 40 Mhz */ {  364.5,		/* SGI */  405.0, },
+	},
+
+	/* MCS 23  */
+	{	/* 20 Mhz */ {  195.0,		/* SGI */  216.7, },
+		/* 40 Mhz */ {  405.0,		/* SGI */  450.0, },
+	},
+
+	/* MCS 24  */
+	{	/* 20 Mhz */ {   26.0,		/* SGI */   28.9, },
+		/* 40 Mhz */ {   54.0,		/* SGI */   60.0, },
+	},
+
+	/* MCS 25  */
+	{	/* 20 Mhz */ {   52.0,		/* SGI */   57.8, },
+		/* 40 Mhz */ {  108.0,		/* SGI */  120.0, },
+	},
+
+	/* MCS 26  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 27  */
+	{	/* 20 Mhz */ {  104.0,		/* SGI */  115.6, },
+		/* 40 Mhz */ {  216.0,		/* SGI */  240.0, },
+	},
+
+	/* MCS 28  */
+	{	/* 20 Mhz */ {  156.0,		/* SGI */  173.3, },
+		/* 40 Mhz */ {  324.0,		/* SGI */  360.0, },
+	},
+
+	/* MCS 29  */
+	{	/* 20 Mhz */ {  208.0,		/* SGI */  231.1, },
+		/* 40 Mhz */ {  432.0,		/* SGI */  480.0, },
+	},
+
+	/* MCS 30  */
+	{	/* 20 Mhz */ {  234.0,		/* SGI */  260.0, },
+		/* 40 Mhz */ {  486.0,		/* SGI */  540.0, },
+	},
+
+	/* MCS 31  */
+	{	/* 20 Mhz */ {  260.0,		/* SGI */  288.9, },
+		/* 40 Mhz */ {  540.0,		/* SGI */  600.0, },
+	},
+
+	/* MCS 32  */
+	{	/* 20 Mhz */ {    0.0,		/* SGI */    0.0, }, /* not valid */
+		/* 40 Mhz */ {    6.0,		/* SGI */    6.7, },
+	},
+
+	/* MCS 33  */
+	{	/* 20 Mhz */ {   39.0,		/* SGI */   43.3, },
+		/* 40 Mhz */ {   81.0,		/* SGI */   90.0, },
+	},
+
+	/* MCS 34  */
+	{	/* 20 Mhz */ {   52.0,		/* SGI */   57.8, },
+		/* 40 Mhz */ {  108.0,		/* SGI */  120.0, },
+	},
+
+	/* MCS 35  */
+	{	/* 20 Mhz */ {   65.0,		/* SGI */   72.2, },
+		/* 40 Mhz */ {  135.0,		/* SGI */  150.0, },
+	},
+
+	/* MCS 36  */
+	{	/* 20 Mhz */ {   58.5,		/* SGI */   65.0, },
+		/* 40 Mhz */ {  121.5,		/* SGI */  135.0, },
+	},
+
+	/* MCS 37  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 38  */
+	{	/* 20 Mhz */ {   97.5,		/* SGI */  108.3, },
+		/* 40 Mhz */ {  202.5,		/* SGI */  225.0, },
+	},
+
+	/* MCS 39  */
+	{	/* 20 Mhz */ {   52.0,		/* SGI */   57.8, },
+		/* 40 Mhz */ {  108.0,		/* SGI */  120.0, },
+	},
+
+	/* MCS 40  */
+	{	/* 20 Mhz */ {   65.0,		/* SGI */   72.2, },
+		/* 40 Mhz */ {  135.0,		/* SGI */  150.0, },
+	},
+
+	/* MCS 41  */
+	{	/* 20 Mhz */ {   65.0,		/* SGI */   72.2, },
+		/* 40 Mhz */ {  135.0,		/* SGI */  150.0, },
+	},
+
+	/* MCS 42  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 43  */
+	{	/* 20 Mhz */ {   91.0,		/* SGI */  101.1, },
+		/* 40 Mhz */ {  189.0,		/* SGI */  210.0, },
+	},
+
+	/* MCS 44  */
+	{	/* 20 Mhz */ {   91.0,		/* SGI */  101.1, },
+		/* 40 Mhz */ {  189.0,		/* SGI */  210.0, },
+	},
+
+	/* MCS 45  */
+	{	/* 20 Mhz */ {  104.0,		/* SGI */  115.6, },
+		/* 40 Mhz */ {  216.0,		/* SGI */  240.0, },
+	},
+
+	/* MCS 46  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 47  */
+	{	/* 20 Mhz */ {   97.5,		/* SGI */  108.3, },
+		/* 40 Mhz */ {  202.5,		/* SGI */  225.0, },
+	},
+
+	/* MCS 48  */
+	{	/* 20 Mhz */ {   97.5,		/* SGI */  108.3, },
+		/* 40 Mhz */ {  202.5,		/* SGI */  225.0, },
+	},
+
+	/* MCS 49  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 50  */
+	{	/* 20 Mhz */ {  136.5,		/* SGI */  151.7, },
+		/* 40 Mhz */ {  283.5,		/* SGI */  315.0, },
+	},
+
+	/* MCS 51  */
+	{	/* 20 Mhz */ {  136.5,		/* SGI */  151.7, },
+		/* 40 Mhz */ {  283.5,		/* SGI */  315.0, },
+	},
+
+	/* MCS 52  */
+	{	/* 20 Mhz */ {  156.0,		/* SGI */  173.3, },
+		/* 40 Mhz */ {  324.0,		/* SGI */  360.0, },
+	},
+
+	/* MCS 53  */
+	{	/* 20 Mhz */ {   65.0,		/* SGI */   72.2, },
+		/* 40 Mhz */ {  135.0,		/* SGI */  150.0, },
+	},
+
+	/* MCS 54  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 55  */
+	{	/* 20 Mhz */ {   91.0,		/* SGI */  101.1, },
+		/* 40 Mhz */ {  189.0,		/* SGI */  210.0, },
+	},
+
+	/* MCS 56  */
+	{	/* 20 Mhz */ {   78.0,		/* SGI */   86.7, },
+		/* 40 Mhz */ {  162.0,		/* SGI */  180.0, },
+	},
+
+	/* MCS 57  */
+	{	/* 20 Mhz */ {   91.0,		/* SGI */  101.1, },
+		/* 40 Mhz */ {  189.0,		/* SGI */  210.0, },
+	},
+
+	/* MCS 58  */
+	{	/* 20 Mhz */ {  104.0,		/* SGI */  115.6, },
+		/* 40 Mhz */ {  216.0,		/* SGI */  240.0, },
+	},
+
+	/* MCS 59  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 60  */
+	{	/* 20 Mhz */ {  104.0,		/* SGI */  115.6, },
+		/* 40 Mhz */ {  216.0,		/* SGI */  240.0, },
+	},
+
+	/* MCS 61  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 62  */
+	{	/* 20 Mhz */ {  130.0,		/* SGI */  144.4, },
+		/* 40 Mhz */ {  270.0,		/* SGI */  300.0, },
+	},
+
+	/* MCS 63  */
+	{	/* 20 Mhz */ {  130.0,		/* SGI */  144.4, },
+		/* 40 Mhz */ {  270.0,		/* SGI */  300.0, },
+	},
+
+	/* MCS 64  */
+	{	/* 20 Mhz */ {  143.0,		/* SGI */  158.9, },
+		/* 40 Mhz */ {  297.0,		/* SGI */  330.0, },
+	},
+
+	/* MCS 65  */
+	{	/* 20 Mhz */ {   97.5,		/* SGI */  108.3, },
+		/* 40 Mhz */ {  202.5,		/* SGI */  225.0, },
+	},
+
+	/* MCS 66  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 67  */
+	{	/* 20 Mhz */ {  136.5,		/* SGI */  151.7, },
+		/* 40 Mhz */ {  283.5,		/* SGI */  315.0, },
+	},
+
+	/* MCS 68  */
+	{	/* 20 Mhz */ {  117.0,		/* SGI */  130.0, },
+		/* 40 Mhz */ {  243.0,		/* SGI */  270.0, },
+	},
+
+	/* MCS 69  */
+	{	/* 20 Mhz */ {  136.5,		/* SGI */  151.7, },
+		/* 40 Mhz */ {  283.5,		/* SGI */  315.0, },
+	},
+
+	/* MCS 70  */
+	{	/* 20 Mhz */ {  156.0,		/* SGI */  173.3, },
+		/* 40 Mhz */ {  324.0,		/* SGI */  360.0, },
+	},
+
+	/* MCS 71  */
+	{	/* 20 Mhz */ {  175.5,		/* SGI */  195.0, },
+		/* 40 Mhz */ {  364.5,		/* SGI */  405.0, },
+	},
+
+	/* MCS 72  */
+	{	/* 20 Mhz */ {  156.0,		/* SGI */  173.3, },
+		/* 40 Mhz */ {  324.0,		/* SGI */  360.0, },
+	},
+
+	/* MCS 73  */
+	{	/* 20 Mhz */ {  175.5,		/* SGI */  195.0, },
+		/* 40 Mhz */ {  364.5,		/* SGI */  405.0, },
+	},
+
+	/* MCS 74  */
+	{	/* 20 Mhz */ {  195.0,		/* SGI */  216.7, },
+		/* 40 Mhz */ {  405.0,		/* SGI */  450.0, },
+	},
+
+	/* MCS 75  */
+	{	/* 20 Mhz */ {  195.0,		/* SGI */  216.7, },
+		/* 40 Mhz */ {  405.0,		/* SGI */  450.0, },
+	},
+
+	/* MCS 76  */
+	{	/* 20 Mhz */ {  214.5,		/* SGI */  238.3, },
+		/* 40 Mhz */ {  445.5,		/* SGI */  495.0, },
+	},
 };
-#define PRINT_HT_RATE(_sep, _r, _suf) \
-	printf("%s%.1f%s", _sep, (.5 * ieee80211_htrates[(_r) & 0xf]), _suf)
=20
 static const char *auth_alg_text[]=3D{"Open System","Shared Key","EAP"};
 #define NUM_AUTH_ALGS	(sizeof auth_alg_text / sizeof auth_alg_text[0])
@@ -269,6 +655,7 @@
 parse_elements(struct mgmt_body_t *pbody, const u_char *p, int offset,
     u_int length)
 {
+	u_int elementlen;
 	struct ssid_t ssid;
 	struct challenge_t challenge;
 	struct rates_t rates;
@@ -487,12 +874,13 @@
 				return 0;
 			if (length < 2)
 				return 0;
-			if (!TTEST2(*(p + offset + 2), *(p + offset + 1)))
+			elementlen =3D *(p + offset + 1);
+			if (!TTEST2(*(p + offset + 2), elementlen))
 				return 0;
-			if (length < (u_int)(*(p + offset + 1) + 2))
+			if (length < elementlen + 2)
 				return 0;
-			offset +=3D *(p + offset + 1) + 2;
-			length -=3D *(p + offset + 1) + 2;
+			offset +=3D elementlen + 2;
+			length -=3D elementlen + 2;
 			break;
 		}
 	}
@@ -1321,7 +1709,8 @@
 	hdrlen =3D extract_header_length(fc);
 	if (pad)
 		hdrlen =3D roundup2(hdrlen, 4);
-	if (FC_TYPE(fc) =3D=3D T_DATA && DATA_FRAME_IS_QOS(FC_SUBTYPE(fc))) {
+	if (Hflag && FC_TYPE(fc) =3D=3D T_DATA &&
+	    DATA_FRAME_IS_QOS(FC_SUBTYPE(fc))) {
 		meshdrlen =3D extract_mesh_header_length(p+hdrlen);
 		hdrlen +=3D meshdrlen;
 	} else
@@ -1461,7 +1850,8 @@
 }
=20
 static int
-print_radiotap_field(struct cpack_state *s, u_int32_t bit, u_int8_t *flags)
+print_radiotap_field(struct cpack_state *s, u_int32_t bit, u_int8_t *flags,
+						struct radiotap_state *state, u_int32_t presentflags)
 {
 	union {
 		int8_t		i8;
@@ -1476,9 +1866,18 @@
 	switch (bit) {
 	case IEEE80211_RADIOTAP_FLAGS:
 		rc =3D cpack_uint8(s, &u.u8);
+		if (rc !=3D 0)
+			break;
 		*flags =3D u.u8;
 		break;
 	case IEEE80211_RADIOTAP_RATE:
+		rc =3D cpack_uint8(s, &u.u8);
+		if (rc !=3D 0)
+			break;
+
+		/* Save state rate */
+		state->rate =3D u.u8;
+		break;
 	case IEEE80211_RADIOTAP_DB_ANTSIGNAL:
 	case IEEE80211_RADIOTAP_DB_ANTNOISE:
 	case IEEE80211_RADIOTAP_ANTENNA:
@@ -1497,6 +1896,7 @@
 	case IEEE80211_RADIOTAP_FHSS:
 	case IEEE80211_RADIOTAP_LOCK_QUALITY:
 	case IEEE80211_RADIOTAP_TX_ATTENUATION:
+	case IEEE80211_RADIOTAP_RX_FLAGS:
 		rc =3D cpack_uint16(s, &u.u16);
 		break;
 	case IEEE80211_RADIOTAP_DB_TX_ATTENUATION:
@@ -1520,6 +1920,45 @@
 			break;
 		rc =3D cpack_uint8(s, &u4.u8);
 		break;
+	case IEEE80211_RADIOTAP_MCS:
+		rc =3D cpack_uint8(s, &u.u8);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint8(s, &u2.u8);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint8(s, &u3.u8);
+		break;
+	case IEEE80211_RADIOTAP_VENDOR_NAMESPACE: {
+		u_int8_t vns[3];
+		u_int16_t length;
+		u_int8_t subspace;
+
+		if ((cpack_align_and_reserve(s, 2)) =3D=3D NULL) {
+			rc =3D -1;
+			break;
+		}
+
+		rc =3D cpack_uint8(s, &vns[0]);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint8(s, &vns[1]);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint8(s, &vns[2]);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint8(s, &subspace);
+		if (rc !=3D 0)
+			break;
+		rc =3D cpack_uint16(s, &length);
+		if (rc !=3D 0)
+			break;
+
+		/* Skip up to length */
+		s->c_next +=3D length;
+		break;
+	}
 	default:
 		/* this bit indicates a field whose
 		 * size we do not know, so we cannot
@@ -1534,18 +1973,64 @@
 		return rc;
 	}
=20
+	/* Preserve the state present flags */
+	state->present =3D presentflags;
+
 	switch (bit) {
 	case IEEE80211_RADIOTAP_CHANNEL:
+		/*
+		 * If CHANNEL and XCHANNEL are both present, skip
+		 * CHANNEL.
+		 */
+		if (presentflags & (1 << IEEE80211_RADIOTAP_XCHANNEL))
+			break;
 		print_chaninfo(u.u16, u2.u16);
 		break;
 	case IEEE80211_RADIOTAP_FHSS:
 		printf("fhset %d fhpat %d ", u.u16 & 0xff, (u.u16 >> 8) & 0xff);
 		break;
 	case IEEE80211_RADIOTAP_RATE:
-		if (u.u8 & 0x80)
-			PRINT_HT_RATE("", u.u8, " Mb/s ");
-		else
-			PRINT_RATE("", u.u8, " Mb/s ");
+		/*
+		 * XXX On FreeBSD rate & 0x80 means we have an MCS. On
+		 * Linux and AirPcap it does not.  (What about
+		 * Mac OS X, NetBSD, OpenBSD, and DragonFly BSD?)
+		 *
+		 * This is an issue either for proprietary extensions
+		 * to 11a or 11g, which do exist, or for 11n
+		 * implementations that stuff a rate value into
+		 * this field, which also appear to exist.
+		 *
+		 * We currently handle that by assuming that
+		 * if the 0x80 bit is set *and* the remaining
+		 * bits have a value between 0 and 15 it's
+		 * an MCS value, otherwise it's a rate.  If
+		 * there are cases where systems that use
+		 * "0x80 + MCS index" for MCS indices > 15,
+		 * or stuff a rate value here between 64 and
+		 * 71.5 Mb/s in here, we'll need a preference
+		 * setting.  Such rates do exist, e.g. 11n
+		 * MCS 7 at 20 MHz with a long guard interval.
+		 */
+		if (u.u8 >=3D 0x80 && u.u8 <=3D 0x8f) {
+			/*
+			 * XXX - we don't know the channel width
+			 * or guard interval length, so we can't
+			 * convert this to a data rate.
+			 *
+			 * If you want us to show a data rate,
+			 * use the MCS field, not the Rate field;
+			 * the MCS field includes not only the
+			 * MCS index, it also includes bandwidth
+			 * and guard interval information.
+			 *
+			 * XXX - can we get the channel width
+			 * from XChannel and the guard interval
+			 * information from Flags, at least on
+			 * FreeBSD?
+			 */
+			printf("MCS %u ", u.u8 & 0x7f);
+		} else
+			printf("%2.1f Mb/s ", .5*u.u8);
 		break;
 	case IEEE80211_RADIOTAP_DBM_ANTSIGNAL:
 		printf("%ddB signal ", u.i8);
@@ -1589,9 +2074,89 @@
 	case IEEE80211_RADIOTAP_TSFT:
 		printf("%" PRIu64 "us tsft ", u.u64);
 		break;
+	case IEEE80211_RADIOTAP_RX_FLAGS:
+		/* Do nothing for now */
+		break;
 	case IEEE80211_RADIOTAP_XCHANNEL:
 		print_chaninfo(u2.u16, u.u32);
 		break;
+	case IEEE80211_RADIOTAP_MCS: {
+		static const char *bandwidth[4] =3D {
+			"20 MHz",
+			"40 MHz",
+			"20 MHz (L)",
+			"20 MHz (U)"
+		};
+		float htrate;
+
+		if (u.u8 & IEEE80211_RADIOTAP_MCS_MCS_INDEX_KNOWN) {
+			/*
+			 * We know the MCS index.
+			 */
+			if (u3.u8 <=3D MAX_MCS_INDEX) {
+				/*
+				 * And it's in-range.
+				 */
+				if (u.u8 & (IEEE80211_RADIOTAP_MCS_BANDWIDTH_KNOWN|IEEE80211_RADIOTAP_=
MCS_GUARD_INTERVAL_KNOWN)) {
+					/*
+					 * And we know both the bandwidth and
+					 * the guard interval, so we can look
+					 * up the rate.
+					 */
+					htrate =3D=20
+						ieee80211_float_htrates \
+							[u3.u8] \
+							[((u2.u8 & IEEE80211_RADIOTAP_MCS_BANDWIDTH_MASK) =3D=3D IEEE80211_=
RADIOTAP_MCS_BANDWIDTH_40 ? 1 : 0)] \
+							[((u2.u8 & IEEE80211_RADIOTAP_MCS_SHORT_GI) ? 1 : 0)];
+				} else {
+					/*
+					 * We don't know both the bandwidth
+					 * and the guard interval, so we can
+					 * only report the MCS index.
+					 */
+					htrate =3D 0.0;
+				}
+			} else {
+				/*
+				 * The MCS value is out of range.
+				 */
+				htrate =3D 0.0;
+			}
+			if (htrate !=3D 0.0) {
+				/*
+				 * We have the rate.
+				 * Print it.
+				 */
+				printf("%.1f Mb/s MCS %u ", htrate, u3.u8);
+			} else {
+				/*
+				 * We at least have the MCS index.
+				 * Print it.
+				 */
+				printf("MCS %u ", u3.u8);
+			}
+		}
+		if (u.u8 & IEEE80211_RADIOTAP_MCS_BANDWIDTH_KNOWN) {
+			printf("%s ",
+				bandwidth[u2.u8 & IEEE80211_RADIOTAP_MCS_BANDWIDTH_MASK]);
+		}
+		if (u.u8 & IEEE80211_RADIOTAP_MCS_GUARD_INTERVAL_KNOWN) {
+			printf("%s GI ",
+				(u2.u8 & IEEE80211_RADIOTAP_MCS_SHORT_GI) ?
+				"short" : "lon");
+		}
+		if (u.u8 & IEEE80211_RADIOTAP_MCS_HT_FORMAT_KNOWN) {
+			printf("%s ",
+				(u2.u8 & IEEE80211_RADIOTAP_MCS_HT_GREENFIELD) ?
+				"greenfield" : "mixed");
+		}
+		if (u.u8 & IEEE80211_RADIOTAP_MCS_FEC_TYPE_KNOWN) {
+			printf("%s FEC ",
+				(u2.u8 & IEEE80211_RADIOTAP_MCS_FEC_LDPC) ?
+				"LDPC" : "BCC");
+		}
+		break;
+		}
 	}
 	return 0;
 }
@@ -1611,6 +2176,7 @@
 	struct cpack_state cpacker;
 	struct ieee80211_radiotap_header *hdr;
 	u_int32_t present, next_present;
+	u_int32_t presentflags =3D 0;
 	u_int32_t *presentp, *last_presentp;
 	enum ieee80211_radiotap_type bit;
 	int bit0;
@@ -1619,6 +2185,7 @@
 	u_int8_t flags;
 	int pad;
 	u_int fcslen;
+	struct radiotap_state state;
=20
 	if (caplen < sizeof(*hdr)) {
 		printf("[|802.11]");
@@ -1660,6 +2227,11 @@
 	fcslen =3D 0;
 	for (bit0 =3D 0, presentp =3D &hdr->it_present; presentp <=3D last_presen=
tp;
 	     presentp++, bit0 +=3D 32) {
+		presentflags =3D EXTRACT_LE_32BITS(presentp);
+
+		/* Clear state. */
+		memset(&state, 0, sizeof(state));
+
 		for (present =3D EXTRACT_LE_32BITS(presentp); present;
 		     present =3D next_present) {
 			/* clear the least significant bit that is set */
@@ -1669,16 +2241,16 @@
 			bit =3D (enum ieee80211_radiotap_type)
 			    (bit0 + BITNO_32(present ^ next_present));
=20
-			if (print_radiotap_field(&cpacker, bit, &flags) !=3D 0)
+			if (print_radiotap_field(&cpacker, bit, &flags, &state, presentflags) !=
=3D 0)
 				goto out;
 		}
 	}
=20
+out:
 	if (flags & IEEE80211_RADIOTAP_F_DATAPAD)
 		pad =3D 1;	/* Atheros padding */
 	if (flags & IEEE80211_RADIOTAP_F_FCS)
 		fcslen =3D 4;	/* FCS at end of packet */
-out:
 	return len + ieee802_11_print(p + len, length - len, caplen - len, pad,
 	    fcslen);
 #undef BITNO_32
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-802_15_4.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/print-802_15_4.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2009
+ * 	Siemens AG, All rights reserved.
+ * 	Dmitry Eremin-Solenikov (dbaryshkov at gmail.com)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (=
2)
+ * distributions including binary code include the above copyright notice =
and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials menti=
oning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of Califor=
nia,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <pcap.h>
+#include <string.h>
+
+#include "interface.h"
+#include "addrtoname.h"
+
+#include "extract.h"
+
+static const char *ftypes[] =3D {
+	"Beacon",			/* 0 */
+	"Data",				/* 1 */
+	"ACK",				/* 2 */
+	"Command",			/* 3 */
+	"Reserved",			/* 4 */
+	"Reserved",			/* 5 */
+	"Reserved",			/* 6 */
+	"Reserved",			/* 7 */
+};
+
+static int
+extract_header_length(u_int16_t fc)
+{
+	int len =3D 0;
+
+	switch ((fc >> 10) & 0x3) {
+	case 0x00:
+		if (fc & (1 << 6)) /* intra-PAN with none dest addr */
+			return -1;
+		break;
+	case 0x01:
+		return -1;
+	case 0x02:
+		len +=3D 4;
+		break;
+	case 0x03:
+		len +=3D 10;
+		break;
+	}
+
+	switch ((fc >> 14) & 0x3) {
+	case 0x00:
+		break;
+	case 0x01:
+		return -1;
+	case 0x02:
+		len +=3D 4;
+		break;
+	case 0x03:
+		len +=3D 10;
+		break;
+	}
+
+	if (fc & (1 << 6)) {
+		if (len < 2)
+			return -1;
+		len -=3D 2;
+	}
+
+	return len;
+}
+
+
+u_int
+ieee802_15_4_if_print(struct netdissect_options *ndo,
+                      const struct pcap_pkthdr *h, const u_char *p)
+{
+	u_int caplen =3D h->caplen;
+	int hdrlen;
+	u_int16_t fc;
+	u_int8_t seq;
+
+	if (caplen < 3) {
+		ND_PRINT((ndo, "[|802.15.4] %x", caplen));
+		return caplen;
+	}
+
+	fc =3D EXTRACT_LE_16BITS(p);
+	hdrlen =3D extract_header_length(fc);
+
+	seq =3D EXTRACT_LE_8BITS(p + 2);
+
+	p +=3D 3;
+	caplen -=3D 3;
+
+	ND_PRINT((ndo,"IEEE 802.15.4 %s packet ", ftypes[fc & 0x7]));
+	if (vflag)
+		ND_PRINT((ndo,"seq %02x ", seq));
+	if (hdrlen =3D=3D -1) {
+		ND_PRINT((ndo,"malformed! "));
+		return caplen;
+	}
+
+
+	if (!vflag) {
+		p+=3D hdrlen;
+		caplen -=3D hdrlen;
+	} else {
+		u_int16_t panid =3D 0;
+
+		switch ((fc >> 10) & 0x3) {
+		case 0x00:
+			ND_PRINT((ndo,"none "));
+			break;
+		case 0x01:
+			ND_PRINT((ndo,"reserved destination addressing mode"));
+			return 0;
+		case 0x02:
+			panid =3D EXTRACT_LE_16BITS(p);
+			p +=3D 2;
+			ND_PRINT((ndo,"%04x:%04x ", panid, EXTRACT_LE_16BITS(p)));
+			p +=3D 2;
+			break;
+		case 0x03:
+			panid =3D EXTRACT_LE_16BITS(p);
+			p +=3D 2;
+			ND_PRINT((ndo,"%04x:%s ", panid, le64addr_string(p)));
+			p +=3D 8;
+			break;
+		}
+		ND_PRINT((ndo,"< ");
+
+		switch ((fc >> 14) & 0x3) {
+		case 0x00:
+			ND_PRINT((ndo,"none "));
+			break;
+		case 0x01:
+			ND_PRINT((ndo,"reserved source addressing mode"));
+			return 0;
+		case 0x02:
+			if (!(fc & (1 << 6))) {
+				panid =3D EXTRACT_LE_16BITS(p);
+				p +=3D 2;
+			}
+			ND_PRINT((ndo,"%04x:%04x ", panid, EXTRACT_LE_16BITS(p)));
+			p +=3D 2;
+			break;
+		case 0x03:
+			if (!(fc & (1 << 6))) {
+				panid =3D EXTRACT_LE_16BITS(p);
+				p +=3D 2;
+			}
+                        ND_PRINT((ndo,"%04x:%s ", panid, le64addr_string(p=
))));
+			p +=3D 8;
+			break;
+		}
+
+		caplen -=3D hdrlen;
+	}
+
+	if (!suppress_default_print)
+		(ndo->ndo_default_print)(ndo, p, caplen);
+
+	return 0;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ap1394.c
--- a/head/contrib/tcpdump/print-ap1394.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ap1394.c	Wed Jul 25 16:21:35 2012 +0300
@@ -106,7 +106,7 @@
 	p +=3D FIREWIRE_HDRLEN;
=20
 	ether_type =3D EXTRACT_16BITS(&fp->firewire_type);
-	if (ethertype_print(ether_type, p, length, caplen) =3D=3D 0) {
+	if (ethertype_print(gndo, ether_type, p, length, caplen) =3D=3D 0) {
 		/* ether_type not known, print raw packet */
 		if (!eflag)
 			ap1394_hdr_print((u_char *)fp, length + FIREWIRE_HDRLEN);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-arcnet.c
--- a/head/contrib/tcpdump/print-arcnet.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-arcnet.c	Wed Jul 25 16:21:35 2012 +0300
@@ -265,14 +265,14 @@
=20
 #ifdef INET6
 	case ARCTYPE_INET6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		return (1);
 #endif /*INET6*/
=20
 	case ARCTYPE_ARP_OLD:
 	case ARCTYPE_ARP:
 	case ARCTYPE_REVARP:
-	  arp_print(gndo, p, length, caplen);
+		arp_print(gndo, p, length, caplen);
 		return (1);
=20
 	case ARCTYPE_ATALK:	/* XXX was this ever used? */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-arp.c
--- a/head/contrib/tcpdump/print-arp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-arp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-arp.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -320,6 +320,7 @@
             return;
         case ARPHRD_FRELAY:
             linkaddr =3D LINKADDR_FRELAY;
+            break;
         default:
             linkaddr =3D LINKADDR_ETHER;
             break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-atalk.c
--- a/head/contrib/tcpdump/print-atalk.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-atalk.c	Wed Jul 25 16:21:35 2012 +0300
@@ -20,7 +20,7 @@
  *
  * Format and print AppleTalk packets.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-atalk.c 235530 2012-05-17 05:11:57=
Z delphij $
  */
=20
 #ifndef lint
@@ -101,30 +101,19 @@
 	u_short snet;
 	u_int hdrlen;
=20
-#if 0
-	/*
-	 * Our packet is on a 4-byte boundary, as we're either called
-	 * directly from a top-level link-layer printer (ltalk_if_print)
-	 * or from the UDP printer.  The LLAP+DDP header is a multiple
-	 * of 4 bytes in length, so the DDP payload is also on a 4-byte
-	 * boundary, and we don't need to align it before calling
-	 * "ddp_print()".
-	 */
+	if (length < sizeof(*lp)) {
+		(void)printf(" [|llap %u]", length);
+		return (length);
+	}
 	lp =3D (const struct LAP *)bp;
 	bp +=3D sizeof(*lp);
 	length -=3D sizeof(*lp);
-#else
-	{
-		static struct LAP lp_ =3D {0, 0, lapDDP};
-		lp =3D &lp_;
-	}
-#endif
 	hdrlen =3D sizeof(*lp);
 	switch (lp->type) {
=20
 	case lapShortDDP:
 		if (length < ddpSSize) {
-			(void)printf(" [|sddp %d]", length);
+			(void)printf(" [|sddp %u]", length);
 			return (length);
 		}
 		sdp =3D (const struct atShortDDP *)bp;
@@ -140,7 +129,7 @@
=20
 	case lapDDP:
 		if (length < ddpSize) {
-			(void)printf(" [|ddp %d]", length);
+			(void)printf(" [|ddp %u]", length);
 			return (length);
 		}
 		dp =3D (const struct atDDP *)bp;
@@ -163,7 +152,7 @@
 #endif
=20
 	default:
-		printf("%d > %d at-lap#%d %d",
+		printf("%d > %d at-lap#%d %u",
 		    lp->src, lp->dst, lp->type, length);
 		break;
 	}
@@ -185,7 +174,7 @@
             printf("AT ");
=20
 	if (length < ddpSize) {
-		(void)printf(" [|ddp %d]", length);
+		(void)printf(" [|ddp %u]", length);
 		return;
 	}
 	dp =3D (const struct atDDP *)bp;
@@ -274,6 +263,10 @@
 		fputs(tstr, stdout);
 		return;
 	}
+	if (length < sizeof(*ap)) {
+		(void)printf(" [|atp %u]", length);
+		return;
+	}
 	length -=3D sizeof(*ap);
 	switch (ap->control & 0xc0) {
=20
@@ -285,7 +278,7 @@
 		atp_bitmap_print(ap->bitmap);
=20
 		if (length !=3D 0)
-			(void)printf(" [len=3D%d]", length);
+			(void)printf(" [len=3D%u]", length);
=20
 		switch (ap->control & (atpEOM|atpSTS)) {
 		case atpEOM:
@@ -301,7 +294,7 @@
 		break;
=20
 	case atpRspCode:
-		(void)printf(" atp-resp%s%d:%d (%d)",
+		(void)printf(" atp-resp%s%d:%d (%u)",
 			     ap->control & atpEOM? "*" : " ",
 			     EXTRACT_16BITS(&ap->transID), ap->bitmap, length);
 		switch (ap->control & (atpXO|atpSTS)) {
@@ -324,7 +317,7 @@
=20
 		/* length should be zero */
 		if (length)
-			(void)printf(" [len=3D%d]", length);
+			(void)printf(" [len=3D%u]", length);
=20
 		/* there shouldn't be any control flags */
 		if (ap->control & (atpXO|atpEOM|atpSTS)) {
@@ -346,7 +339,7 @@
 		break;
=20
 	default:
-		(void)printf(" atp-0x%x  %d (%d)", ap->control,
+		(void)printf(" atp-0x%x  %d (%u)", ap->control,
 			     EXTRACT_16BITS(&ap->transID), length);
 		break;
 	}
@@ -396,14 +389,14 @@
 	const u_char *ep;
=20
 	if (length < nbpHeaderSize) {
-		(void)printf(" truncated-nbp %d", length);
+		(void)printf(" truncated-nbp %u", length);
 		return;
 	}
=20
 	length -=3D nbpHeaderSize;
 	if (length < 8) {
 		/* must be room for at least one tuple */
-		(void)printf(" truncated-nbp %d", length + nbpHeaderSize);
+		(void)printf(" truncated-nbp %u", length + nbpHeaderSize);
 		return;
 	}
 	/* ep points to end of available data */
@@ -448,7 +441,7 @@
 		break;
=20
 	default:
-		(void)printf(" nbp-0x%x  %d (%d)", np->control, np->id,
+		(void)printf(" nbp-0x%x  %d (%u)", np->control, np->id,
 				length);
 		break;
 	}
@@ -560,19 +553,17 @@
 	if (first && (first =3D 0, !nflag)
 	    && (fp =3D fopen("/etc/atalk.names", "r"))) {
 		char line[256];
-		int i1, i2, i3;
+		int i1, i2;
=20
 		while (fgets(line, sizeof(line), fp)) {
 			if (line[0] =3D=3D '\n' || line[0] =3D=3D 0 || line[0] =3D=3D '#')
 				continue;
-			if (sscanf(line, "%d.%d.%d %256s", &i1, &i2, &i3,
-				     nambuf) =3D=3D 4)
+			if (sscanf(line, "%d.%d %256s", &i1, &i2, nambuf) =3D=3D 3)
 				/* got a hostname. */
-				i3 |=3D ((i1 << 8) | i2) << 8;
-			else if (sscanf(line, "%d.%d %256s", &i1, &i2,
-					nambuf) =3D=3D 3)
+				i2 |=3D (i1 << 8);
+			else if (sscanf(line, "%d %256s", &i1, nambuf) =3D=3D 2)
 				/* got a net name */
-				i3 =3D (((i1 << 8) | i2) << 8) | 255;
+				i2 =3D (i1 << 8) | 255;
 			else
 				continue;
=20
@@ -605,11 +596,9 @@
 	tp->addr =3D (atnet << 8) | athost;
 	tp->nxt =3D newhnamemem();
 	if (athost !=3D 255)
-		(void)snprintf(nambuf, sizeof(nambuf), "%d.%d.%d",
-		    atnet >> 8, atnet & 0xff, athost);
+		(void)snprintf(nambuf, sizeof(nambuf), "%d.%d", atnet, athost);
 	else
-		(void)snprintf(nambuf, sizeof(nambuf), "%d.%d", atnet >> 8,
-		    atnet & 0xff);
+		(void)snprintf(nambuf, sizeof(nambuf), "%d", atnet);
 	tp->name =3D strdup(nambuf);
=20
 	return (tp->name);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-atm.c
--- a/head/contrib/tcpdump/print-atm.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-atm.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-atm.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
@@ -272,10 +272,12 @@
 		printf(":%s ",
 		    tok2str(msgtype2str, "msgtype#%d", p[MSG_TYPE_POS]));
=20
-		if (caplen < CALL_REF_POS+3) {
-			printf("[|atm]");
-			return;
-		}
+		/*
+		 * The call reference comes before the message type,
+		 * so if we know we have the message type, which we
+		 * do from the caplen test above, we also know we have
+		 * the call reference.
+		 */
 		call_ref =3D EXTRACT_24BITS(&p[CALL_REF_POS]);
 		printf("CALL_REF:0x%06x", call_ref);
 	} else {
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-babel.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/print-babel.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,414 @@
+/*
+ * Copyright (c) 2007-2011 Gr=C3=A9goire Henry, Juliusz Chroboczek
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURP=
OSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENT=
IAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STR=
ICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY W=
AY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "addrtoname.h"
+#include "interface.h"
+#include "extract.h"
+
+static void babel_print_v2(const u_char *cp, u_int length);
+
+void
+babel_print(const u_char *cp, u_int length) {
+    printf("babel");
+
+    TCHECK2(*cp, 4);
+
+    if(cp[0] !=3D 42) {
+        printf(" malformed header");
+        return;
+    } else {
+        printf(" %d", cp[1]);
+    }
+
+    switch(cp[1]) {
+    case 2:
+        babel_print_v2(cp,length);
+        break;
+    default:
+        printf(" unknown version");
+        break;
+    }
+
+    return;
+
+ trunc:
+    printf(" [|babel]");
+    return;
+}
+
+#define MESSAGE_PAD1 0
+#define MESSAGE_PADN 1
+#define MESSAGE_ACK_REQ 2
+#define MESSAGE_ACK 3
+#define MESSAGE_HELLO 4
+#define MESSAGE_IHU 5
+#define MESSAGE_ROUTER_ID 6
+#define MESSAGE_NH 7
+#define MESSAGE_UPDATE 8
+#define MESSAGE_REQUEST 9
+#define MESSAGE_MH_REQUEST 10
+
+static const char *
+format_id(const u_char *id)
+{
+    static char buf[25];
+    snprintf(buf, 25, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
+             id[0], id[1], id[2], id[3], id[4], id[5], id[6], id[7]);
+    buf[24] =3D '\0';
+    return buf;
+}
+
+static const unsigned char v4prefix[16] =3D
+    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0 };
+
+static const char *
+format_prefix(const u_char *prefix, unsigned char plen)
+{
+    static char buf[50];
+    if(plen >=3D 96 && memcmp(prefix, v4prefix, 12) =3D=3D 0)
+        snprintf(buf, 50, "%s/%u", ipaddr_string(prefix + 12), plen - 96);
+    else
+        snprintf(buf, 50, "%s/%u", ip6addr_string(prefix), plen);
+    buf[49] =3D '\0';
+    return buf;
+}
+
+static const char *
+format_address(const u_char *prefix)
+{
+    if(memcmp(prefix, v4prefix, 12) =3D=3D 0)
+        return ipaddr_string(prefix + 12);
+    else
+        return ip6addr_string(prefix);
+}
+
+static int
+network_prefix(int ae, int plen, unsigned int omitted,
+               const unsigned char *p, const unsigned char *dp,
+               unsigned int len, unsigned char *p_r)
+{
+    unsigned pb;
+    unsigned char prefix[16];
+
+    if(plen >=3D 0)
+        pb =3D (plen + 7) / 8;
+    else if(ae =3D=3D 1)
+        pb =3D 4;
+    else
+        pb =3D 16;
+
+    if(pb > 16)
+        return -1;
+
+    memset(prefix, 0, 16);
+
+    switch(ae) {
+    case 0: break;
+    case 1:
+        if(omitted > 4 || pb > 4 || (pb > omitted && len < pb - omitted))
+            return -1;
+        memcpy(prefix, v4prefix, 12);
+        if(omitted) {
+            if (dp =3D=3D NULL) return -1;
+            memcpy(prefix, dp, 12 + omitted);
+        }
+        if(pb > omitted) memcpy(prefix + 12 + omitted, p, pb - omitted);
+        break;
+    case 2:
+        if(omitted > 16 || (pb > omitted && len < pb - omitted))
+            return -1;
+        if(omitted) {
+            if (dp =3D=3D NULL) return -1;
+            memcpy(prefix, dp, omitted);
+        }
+        if(pb > omitted) memcpy(prefix + omitted, p, pb - omitted);
+        break;
+    case 3:
+        if(pb > 8 && len < pb - 8) return -1;
+        prefix[0] =3D 0xfe;
+        prefix[1] =3D 0x80;
+        if(pb > 8) memcpy(prefix + 8, p, pb - 8);
+        break;
+    default:
+        return -1;
+    }
+
+    memcpy(p_r, prefix, 16);
+    return 1;
+}
+
+static int
+network_address(int ae, const unsigned char *a, unsigned int len,
+                unsigned char *a_r)
+{
+    return network_prefix(ae, -1, 0, a, NULL, len, a_r);
+}
+
+#define ICHECK(i, l) \
+	if ((i) + (l) > bodylen || (i) + (l) > length) goto corrupt;
+
+static void
+babel_print_v2(const u_char *cp, u_int length) {
+    u_int i;
+    u_short bodylen;
+    u_char v4_prefix[16] =3D
+        {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, 0, 0, 0, 0 };
+    u_char v6_prefix[16] =3D {0};
+
+    TCHECK2(*cp, 4);
+    if (length < 4)
+        goto corrupt;
+    bodylen =3D EXTRACT_16BITS(cp + 2);
+    printf(" (%u)", bodylen);
+
+    /* Process the TLVs in the body */
+    i =3D 0;
+    while(i < bodylen) {
+        const u_char *message;
+        u_char type, len;
+
+        message =3D cp + 4 + i;
+        TCHECK2(*message, 2);
+        ICHECK(i, 2);
+        type =3D message[0];
+        len =3D message[1];
+
+        TCHECK2(*message, 2 + len);
+        ICHECK(i, 2 + len);
+
+        switch(type) {
+        case MESSAGE_PAD1: {
+            if(!vflag)
+                printf(" pad1");
+            else
+                printf("\n\tPad 1");
+        }
+            break;
+
+        case MESSAGE_PADN: {
+            if(!vflag)
+                printf(" padN");
+            else
+                printf("\n\tPad %d", len + 2);
+        }
+            break;
+
+        case MESSAGE_ACK_REQ: {
+            u_short nonce, interval;
+            if(!vflag)
+                printf(" ack-req");
+            else {
+                printf("\n\tAcknowledgment Request ");
+                if(len < 6) goto corrupt;
+                nonce =3D EXTRACT_16BITS(message + 4);
+                interval =3D EXTRACT_16BITS(message + 6);
+                printf("%04x %d", nonce, interval);
+            }
+        }
+            break;
+
+        case MESSAGE_ACK: {
+            u_short nonce;
+            if(!vflag)
+                printf(" ack");
+            else {
+                printf("\n\tAcknowledgment ");
+                if(len < 2) goto corrupt;
+                nonce =3D EXTRACT_16BITS(message + 2);
+                printf("%04x", nonce);
+            }
+        }
+            break;
+
+        case MESSAGE_HELLO:  {
+            u_short seqno, interval;
+            if(!vflag)
+                printf(" hello");
+            else {
+                printf("\n\tHello ");
+                if(len < 6) goto corrupt;
+                seqno =3D EXTRACT_16BITS(message + 4);
+                interval =3D EXTRACT_16BITS(message + 6);
+                printf("seqno %u interval %u", seqno, interval);
+            }
+        }
+            break;
+
+        case MESSAGE_IHU: {
+            unsigned short txcost, interval;
+            if(!vflag)
+                printf(" ihu");
+            else {
+                u_char address[16];
+                int rc;
+                printf("\n\tIHU ");
+                if(len < 6) goto corrupt;
+                txcost =3D EXTRACT_16BITS(message + 4);
+                interval =3D EXTRACT_16BITS(message + 6);
+                rc =3D network_address(message[2], message + 8, len - 6, a=
ddress);
+                if(rc < 0) { printf("[|babel]"); break; }
+                printf("%s txcost %u interval %d",
+                       format_address(address), txcost, interval);
+            }
+        }
+            break;
+
+        case MESSAGE_ROUTER_ID: {
+            if(!vflag)
+                printf(" router-id");
+            else {
+                printf("\n\tRouter Id");
+                if(len < 10) goto corrupt;
+                printf(" %s", format_id(message + 4));
+            }
+        }
+            break;
+
+        case MESSAGE_NH: {
+            if(!vflag)
+                printf(" nh");
+            else {
+                int rc;
+                u_char nh[16];
+                printf("\n\tNext Hop");
+                if(len < 2) goto corrupt;
+                rc =3D network_address(message[2], message + 4, len - 2, n=
h);
+                if(rc < 0) goto corrupt;
+                printf(" %s", format_address(nh));
+            }
+        }
+            break;
+
+        case MESSAGE_UPDATE: {
+            if(!vflag) {
+                printf(" update");
+                if(len < 1)
+                    printf("/truncated");
+                else
+                    printf("%s%s%s",
+                           (message[3] & 0x80) ? "/prefix": "",
+                           (message[3] & 0x40) ? "/id" : "",
+                           (message[3] & 0x3f) ? "/unknown" : "");
+            } else {
+                u_short interval, seqno, metric;
+                u_char plen;
+                int rc;
+                u_char prefix[16];
+                printf("\n\tUpdate");
+                if(len < 10) goto corrupt;
+                plen =3D message[4] + (message[2] =3D=3D 1 ? 96 : 0);
+                rc =3D network_prefix(message[2], message[4], message[5],
+                                    message + 12,
+                                    message[2] =3D=3D 1 ? v4_prefix : v6_p=
refix,
+                                    len - 10, prefix);
+                if(rc < 0) goto corrupt;
+                interval =3D EXTRACT_16BITS(message + 6);
+                seqno =3D EXTRACT_16BITS(message + 8);
+                metric =3D EXTRACT_16BITS(message + 10);
+                printf("%s%s%s %s metric %u seqno %u interval %u",
+                       (message[3] & 0x80) ? "/prefix": "",
+                       (message[3] & 0x40) ? "/id" : "",
+                       (message[3] & 0x3f) ? "/unknown" : "",
+                       format_prefix(prefix, plen),
+                       metric, seqno, interval);
+                if(message[3] & 0x80) {
+                    if(message[2] =3D=3D 1)
+                        memcpy(v4_prefix, prefix, 16);
+                    else
+                        memcpy(v6_prefix, prefix, 16);
+                }
+            }
+        }
+            break;
+
+        case MESSAGE_REQUEST: {
+            if(!vflag)
+                printf(" request");
+            else {
+                int rc;
+                u_char prefix[16], plen;
+                printf("\n\tRequest ");
+                if(len < 2) goto corrupt;
+                plen =3D message[3] + (message[2] =3D=3D 1 ? 96 : 0);
+                rc =3D network_prefix(message[2], message[3], 0,
+                                    message + 4, NULL, len - 2, prefix);
+                if(rc < 0) goto corrupt;
+                plen =3D message[3] + (message[2] =3D=3D 1 ? 96 : 0);
+                printf("for %s",
+                       message[2] =3D=3D 0 ? "any" : format_prefix(prefix,=
 plen));
+            }
+        }
+            break;
+
+        case MESSAGE_MH_REQUEST : {
+            if(!vflag)
+                printf(" mh-request");
+            else {
+                int rc;
+                u_short seqno;
+                u_char prefix[16], plen;
+                printf("\n\tMH-Request ");
+                if(len < 14) goto corrupt;
+                seqno =3D EXTRACT_16BITS(message + 4);
+                rc =3D network_prefix(message[2], message[3], 0,
+                                    message + 16, NULL, len - 14, prefix);
+                if(rc < 0) goto corrupt;
+                plen =3D message[3] + (message[2] =3D=3D 1 ? 96 : 0);
+                printf("(%u hops) for %s seqno %u id %s",
+                       message[6], format_prefix(prefix, plen),
+                       seqno, format_id(message + 8));
+            }
+        }
+            break;
+        default:
+            if(!vflag)
+                printf(" unknown");
+            else
+                printf("\n\tUnknown message type %d", type);
+        }
+        i +=3D len + 2;
+    }
+    return;
+
+ trunc:
+    printf(" [|babel]");
+    return;
+
+ corrupt:
+    printf(" (corrupt)");
+    return;
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-bgp.c
--- a/head/contrib/tcpdump/print-bgp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-bgp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -401,8 +401,11 @@
=20
 #define BGP_EXT_COM_L2INFO      0x800a  /* draft-kompella-ppvpn-l2vpn */
=20
-#define BGP_EXT_COM_SOURCE_AS   0x0009  /* draft-ietf-l3vpn-2547bis-mcast-=
bgp-02.txt */
-#define BGP_EXT_COM_VRF_RT_IMP  0x010a  /* draft-ietf-l3vpn-2547bis-mcast-=
bgp-02.txt */
+#define BGP_EXT_COM_SOURCE_AS   0x0009  /* RFC-ietf-l3vpn-2547bis-mcast-bg=
p-08.txt */
+#define BGP_EXT_COM_VRF_RT_IMP  0x010b  /* RFC-ietf-l3vpn-2547bis-mcast-bg=
p-08.txt */
+#define BGP_EXT_COM_L2VPN_RT_0  0x000a  /* L2VPN Identifier,Format AS(2byt=
es):AN(4bytes) */
+#define BGP_EXT_COM_L2VPN_RT_1  0xF10a  /* L2VPN Identifier,Format IP addr=
ess:AN(2bytes) */
+
=20
 /* http://www.cisco.com/en/US/tech/tk436/tk428/technologies_tech_note09186=
a00801eb09a.shtml  */
 #define BGP_EXT_COM_EIGRP_GEN   0x8800
@@ -443,6 +446,8 @@
     { BGP_EXT_COM_EIGRP_EXT_REMPROTO_REMMETRIC , "eigrp-external-route (re=
mote-proto, remote-metric)" },
     { BGP_EXT_COM_SOURCE_AS, "source-AS" },
     { BGP_EXT_COM_VRF_RT_IMP, "vrf-route-import"},
+    { BGP_EXT_COM_L2VPN_RT_0, "l2vpn-id"},
+    { BGP_EXT_COM_L2VPN_RT_1, "l2vpn-id"},
     { 0, NULL},
 };
=20
@@ -951,57 +956,84 @@
         plen=3DEXTRACT_16BITS(pptr);
         tlen=3Dplen;
         pptr+=3D2;
-	TCHECK2(pptr[0],15);
-	buf[0]=3D'\0';
-        strlen=3Dsnprintf(buf, buflen, "RD: %s, CE-ID: %u, Label-Block Off=
set: %u, Label Base %u",
-                        bgp_vpn_rd_print(pptr),
-                        EXTRACT_16BITS(pptr+8),
-                        EXTRACT_16BITS(pptr+10),
-                        EXTRACT_24BITS(pptr+12)>>4); /* the label is offse=
tted by 4 bits so lets shift it right */
-        UPDATE_BUF_BUFLEN(buf, buflen, strlen);
-        pptr+=3D15;
-        tlen-=3D15;
+	/* Old and new L2VPN NLRI share AFI/SAFI
+         *   -> Assume a 12 Byte-length NLRI is auto-discovery-only
+         *      and > 17 as old format. Complain for the middle case
+         */
+        if (plen=3D=3D12) {=20
+	    /* assume AD-only with RD, BGPNH */
+	    TCHECK2(pptr[0],12);
+	    buf[0]=3D'\0';
+	    strlen=3Dsnprintf(buf, buflen, "RD: %s, BGPNH: %s",
+			    bgp_vpn_rd_print(pptr),=20
+			    /* need something like getname() here */
+			    getname(pptr+8)
+			    );
+	    UPDATE_BUF_BUFLEN(buf, buflen, strlen);
+	    pptr+=3D12;
+	    tlen-=3D12;
+	    return plen;
+        } else if (plen>17) {=20
+	    /* assume old format */
+	    /* RD, ID, LBLKOFF, LBLBASE */
=20
-        /* ok now the variable part - lets read out TLVs*/
-        while (tlen>0) {
-            if (tlen < 3)
-                return -1;
-            TCHECK2(pptr[0], 3);
-            tlv_type=3D*pptr++;
-            tlv_len=3DEXTRACT_16BITS(pptr);
-            ttlv_len=3Dtlv_len;
-            pptr+=3D2;
+	    TCHECK2(pptr[0],15);
+	    buf[0]=3D'\0';
+	    strlen=3Dsnprintf(buf, buflen, "RD: %s, CE-ID: %u, Label-Block Offset=
: %u, Label Base %u",
+			    bgp_vpn_rd_print(pptr),
+			    EXTRACT_16BITS(pptr+8),
+			    EXTRACT_16BITS(pptr+10),
+			    EXTRACT_24BITS(pptr+12)>>4); /* the label is offsetted by 4 bits so=
 lets shift it right */
+	    UPDATE_BUF_BUFLEN(buf, buflen, strlen);
+	    pptr+=3D15;
+	    tlen-=3D15;
=20
-            switch(tlv_type) {
-            case 1:
-                if (buflen!=3D0) {
-                    strlen=3Dsnprintf(buf,buflen, "\n\t\tcircuit status ve=
ctor (%u) length: %u: 0x",
-                                    tlv_type,
-                                    tlv_len);
-                    UPDATE_BUF_BUFLEN(buf, buflen, strlen);
-                }
-                ttlv_len=3Dttlv_len/8+1; /* how many bytes do we need to r=
ead ? */
-                while (ttlv_len>0) {
-                    TCHECK(pptr[0]);
-                    if (buflen!=3D0) {
-                        strlen=3Dsnprintf(buf,buflen, "%02x",*pptr++);
-                        UPDATE_BUF_BUFLEN(buf, buflen, strlen);
-                    }
-                    ttlv_len--;
-                }
-                break;
-            default:
-                if (buflen!=3D0) {
-                    strlen=3Dsnprintf(buf,buflen, "\n\t\tunknown TLV #%u, =
length: %u",
-                                    tlv_type,
-                                    tlv_len);
-                    UPDATE_BUF_BUFLEN(buf, buflen, strlen);
-                }
-                break;
-            }
-            tlen-=3D(tlv_len<<3); /* the tlv-length is expressed in bits s=
o lets shift it right */
+	    /* ok now the variable part - lets read out TLVs*/
+	    while (tlen>0) {
+		if (tlen < 3)
+		    return -1;
+		TCHECK2(pptr[0], 3);
+		tlv_type=3D*pptr++;
+		tlv_len=3DEXTRACT_16BITS(pptr);
+		ttlv_len=3Dtlv_len;
+		pptr+=3D2;
+
+		switch(tlv_type) {
+		case 1:
+		    if (buflen!=3D0) {
+			strlen=3Dsnprintf(buf,buflen, "\n\t\tcircuit status vector (%u) length:=
 %u: 0x",
+					tlv_type,
+					tlv_len);
+			UPDATE_BUF_BUFLEN(buf, buflen, strlen);
+		    }
+		    ttlv_len=3Dttlv_len/8+1; /* how many bytes do we need to read ? */
+		    while (ttlv_len>0) {
+			TCHECK(pptr[0]);
+			if (buflen!=3D0) {
+			    strlen=3Dsnprintf(buf,buflen, "%02x",*pptr++);
+			    UPDATE_BUF_BUFLEN(buf, buflen, strlen);
+			}
+			ttlv_len--;
+		    }
+		    break;
+		default:
+		    if (buflen!=3D0) {
+			strlen=3Dsnprintf(buf,buflen, "\n\t\tunknown TLV #%u, length: %u",
+					tlv_type,
+					tlv_len);
+			UPDATE_BUF_BUFLEN(buf, buflen, strlen);
+		    }
+		    break;
+		}
+		tlen-=3D(tlv_len<<3); /* the tlv-length is expressed in bits so lets shi=
ft it right */
+	    }
+	    return plen+2;
+	   =20
+        } else {
+	    /* complain bitterly ? */
+	    /* fall through */
+            goto trunc;
         }
-        return plen+2;
=20
 trunc:
         return -2;
@@ -1939,6 +1971,7 @@
                     switch(extd_comm) {
                     case BGP_EXT_COM_RT_0:
                     case BGP_EXT_COM_RO_0:
+                    case BGP_EXT_COM_L2VPN_RT_0:
                         printf(": %u:%u (=3D %s)",
                                EXTRACT_16BITS(tptr+2),
                                EXTRACT_32BITS(tptr+4),
@@ -1946,6 +1979,7 @@
                         break;
                     case BGP_EXT_COM_RT_1:
                     case BGP_EXT_COM_RO_1:
+                    case BGP_EXT_COM_L2VPN_RT_1:
                     case BGP_EXT_COM_VRF_RT_IMP:
                         printf(": %s:%u",
                                getname(tptr+2),
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-carp.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/print-carp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,88 @@
+/*	$OpenBSD: print-carp.c,v 1.6 2009/10/27 23:59:55 deraadt Exp $	*/
+
+/*
+ * Copyright (c) 2000 William C. Fenner.
+ *                All rights reserved.
+ *
+ * Kevin Steves <ks at hp.se> July 2000
+ * Modified to:
+ * - print version, type string and packet length
+ * - print IP address count if > 1 (-v)
+ * - verify checksum (-v)
+ * - print authentication string (-v)
+ *
+ * Copyright (c) 2011 Advanced Computing Technologies
+ * George V. Neille-Neil
+ *
+ * Modified to:
+ * - work correctly with CARP
+ * - compile into the latest tcpdump
+ * - print out the counter
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code
+ * distributions retain the above copyright notice and this paragraph
+ * in its entirety, and (2) distributions including binary code include
+ * the above copyright notice and this paragraph in its entirety in
+ * the documentation or other materials provided with the distribution.
+ * The name of William C. Fenner may not be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission.  THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+ * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <netinet/in.h>
+
+#include "interface.h"
+#include "extract.h"
+#include "addrtoname.h"
+
+void
+carp_print(register const u_char *bp, register u_int len, int ttl)
+{
+	int version, type;
+	const char *type_s;
+
+	TCHECK(bp[0]);
+	version =3D (bp[0] & 0xf0) >> 4;
+	type =3D bp[0] & 0x0f;
+	if (type =3D=3D 1)
+		type_s =3D "advertise";
+	else
+		type_s =3D "unknown";
+	printf("CARPv%d-%s %d: ", version, type_s, len);
+	if (ttl !=3D 255)
+		printf("[ttl=3D%d!] ", ttl);
+	if (version !=3D 2 || type !=3D 1)
+		return;
+	TCHECK(bp[2]);
+	TCHECK(bp[5]);
+	printf("vhid=3D%d advbase=3D%d advskew=3D%d authlen=3D%d ",
+	    bp[1], bp[5], bp[2], bp[3]);
+	if (vflag) {
+		struct cksum_vec vec[1];
+		vec[0].ptr =3D (const u_int8_t *)bp;
+		vec[0].len =3D len;
+		if (TTEST2(bp[0], len) && in_cksum(vec, 1))
+			printf(" (bad carp cksum %x!)",
+				EXTRACT_16BITS(&bp[6]));
+	}
+	printf("counter=3D%" PRIu64, EXTRACT_64BITS(&bp[8]));
+
+	return;
+trunc:
+	printf("[|carp]");
+}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-cdp.c
--- a/head/contrib/tcpdump/print-cdp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-cdp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -124,7 +124,7 @@
                                tok2str(cdp_tlv_values,"unknown field type"=
, type),
                                type,
                                len,
-                               len>1 ? "s" : ""); /* plural */
+                               PLURAL_SUFFIX(len)); /* plural */
=20
                     switch (type) {
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-chdlc.c
--- a/head/contrib/tcpdump/print-chdlc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-chdlc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -85,7 +85,7 @@
 		break;
 #ifdef INET6
 	case ETHERTYPE_IPV6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif
 	case CHDLC_TYPE_SLARP:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-dccp.c
--- a/head/contrib/tcpdump/print-dccp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-dccp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -60,7 +60,7 @@
 	"check data checksum",
 };
=20
-static inline int dccp_csum_coverage(const struct dccp_hdr* dh, u_int len)
+static inline u_int dccp_csum_coverage(const struct dccp_hdr* dh, u_int le=
n)
 {
 	u_int cov;
 =09
@@ -73,61 +73,15 @@
 static int dccp_cksum(const struct ip *ip,
 	const struct dccp_hdr *dh, u_int len)
 {
-	int cov =3D dccp_csum_coverage(dh, len);
-	union phu {
-		struct phdr {
-			u_int32_t src;
-			u_int32_t dst;
-			u_char mbz;
-			u_char proto;
-			u_int16_t len;
-		} ph;
-		u_int16_t pa[6];
-	} phu;
-	const u_int16_t *sp;
-
-	/* pseudo-header.. */
-	phu.ph.mbz =3D 0;
-	phu.ph.len =3D htons(len);
-	phu.ph.proto =3D IPPROTO_DCCP;
-	memcpy(&phu.ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
-	if (IP_HL(ip) =3D=3D 5)
-		memcpy(&phu.ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
-	else
-		phu.ph.dst =3D ip_finddst(ip);
-
-	sp =3D &phu.pa[0];
-	return in_cksum((u_short *)dh, cov, sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]);
+	return nextproto4_cksum(ip, (const u_int8_t *)(void *)dh,
+	    dccp_csum_coverage(dh, len), IPPROTO_DCCP);
 }
=20
 #ifdef INET6
 static int dccp6_cksum(const struct ip6_hdr *ip6, const struct dccp_hdr *d=
h, u_int len)
 {
-	size_t i;
-	u_int32_t sum =3D 0;
-	int cov =3D dccp_csum_coverage(dh, len);
-	union {
-		struct {
-			struct in6_addr ph_src;
-			struct in6_addr ph_dst;
-			u_int32_t   ph_len;
-			u_int8_t    ph_zero[3];
-			u_int8_t    ph_nxt;
-		} ph;
-		u_int16_t pa[20];
-	} phu;
-
-	/* pseudo-header */
-	memset(&phu, 0, sizeof(phu));
-	phu.ph.ph_src =3D ip6->ip6_src;
-	phu.ph.ph_dst =3D ip6->ip6_dst;
-	phu.ph.ph_len =3D htonl(len);
-	phu.ph.ph_nxt =3D IPPROTO_DCCP;
-
-	for (i =3D 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++)
-		sum +=3D phu.pa[i];
-
-	return in_cksum((u_short *)dh, cov, sum);
+	return nextproto6_cksum(ip6, (const u_int8_t *)(void *)dh,
+	    dccp_csum_coverage(dh, len), IPPROTO_DCCP);
 }
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-dhcp6.c
--- a/head/contrib/tcpdump/print-dhcp6.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-dhcp6.c	Wed Jul 25 16:21:35 2012 +0300
@@ -229,15 +229,15 @@
 	case DH6OPT_SIP_SERVER_A:
 		return "SIP-servers-address";
 	case DH6OPT_DNS:
-		return "DNS";
+		return "DNS-server";
 	case DH6OPT_DNSNAME:
-		return "DNS-name";
+		return "DNS-search-list";
 	case DH6OPT_IA_PD:
 		return "IA_PD";
 	case DH6OPT_IA_PD_PREFIX:
 		return "IA_PD-prefix";
 	case DH6OPT_NTP_SERVERS:
-		return "NTP-Server";
+		return "NTP-server";
 	case DH6OPT_LIFETIME:
 		return "lifetime";
 	case DH6OPT_NIS_SERVERS:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-enc.c
--- a/head/contrib/tcpdump/print-enc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-enc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -80,7 +80,7 @@
 		break;
 #ifdef INET6
 	case AF_INET6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif /*INET6*/
 	}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ether.c
--- a/head/contrib/tcpdump/print-ether.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ether.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,13 +18,14 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-ether.c 235530 2012-05-17 05:11:57=
Z delphij $
  */
 #ifndef lint
 static const char rcsid[] _U_ =3D
     "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.106 2008-02-0=
6 10:47:53 guy Exp $ (LBL)";
 #endif
=20
+#define NETDISSECT_REWORKED
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -47,6 +48,9 @@
     { ETHERTYPE_MPLS_MULTI,	"MPLS multicast" },
     { ETHERTYPE_IPV6,		"IPv6" },
     { ETHERTYPE_8021Q,		"802.1Q" },
+    { ETHERTYPE_8021Q9100,	"802.1Q-9100" },
+    { ETHERTYPE_8021QinQ,	"802.1Q-QinQ" },
+    { ETHERTYPE_8021Q9200,	"802.1Q-9200" },
     { ETHERTYPE_VMAN,		"VMAN" },
     { ETHERTYPE_PUP,            "PUP" },
     { ETHERTYPE_ARP,            "ARP"},
@@ -86,33 +90,34 @@
 };
=20
 static inline void
-ether_hdr_print(register const u_char *bp, u_int length)
+ether_hdr_print(netdissect_options *ndo,
+                const u_char *bp, u_int length)
 {
 	register const struct ether_header *ep;
 	u_int16_t ether_type;
=20
 	ep =3D (const struct ether_header *)bp;
=20
-	(void)printf("%s > %s",
+	(void)ND_PRINT((ndo, "%s > %s",
 		     etheraddr_string(ESRC(ep)),
-		     etheraddr_string(EDST(ep)));
+		     etheraddr_string(EDST(ep))));
=20
 	ether_type =3D EXTRACT_16BITS(&ep->ether_type);
-	if (!qflag) {
+	if (!ndo->ndo_qflag) {
 	        if (ether_type <=3D ETHERMTU)
-		          (void)printf(", 802.3");
+		          (void)ND_PRINT((ndo, ", 802.3"));
                 else=20
-		          (void)printf(", ethertype %s (0x%04x)",
+		          (void)ND_PRINT((ndo, ", ethertype %s (0x%04x)",
 				       tok2str(ethertype_values,"Unknown", ether_type),
-                                       ether_type);
+                                       ether_type));
         } else {
                 if (ether_type <=3D ETHERMTU)
-                          (void)printf(", 802.3");
+                          (void)ND_PRINT((ndo, ", 802.3"));
                 else=20
-                          (void)printf(", %s", tok2str(ethertype_values,"U=
nknown Ethertype (0x%04x)", ether_type));
+                          (void)ND_PRINT((ndo, ", %s", tok2str(ethertype_v=
alues,"Unknown Ethertype (0x%04x)", ether_type)));
         }
=20
-	(void)printf(", length %u: ", length);
+	(void)ND_PRINT((ndo, ", length %u: ", length));
 }
=20
 /*
@@ -122,8 +127,9 @@
  * frame's protocol, and an argument to pass to that function.
  */
 void
-ether_print(const u_char *p, u_int length, u_int caplen,
-    void (*print_encap_header)(const u_char *), const u_char *encap_header=
_arg)
+ether_print(netdissect_options *ndo,
+            const u_char *p, u_int length, u_int caplen,
+            void (*print_encap_header)(netdissect_options *ndo, const u_ch=
ar *), const u_char *encap_header_arg)
 {
 	struct ether_header *ep;
 	u_int orig_length;
@@ -131,14 +137,14 @@
 	u_short extracted_ether_type;
=20
 	if (caplen < ETHER_HDRLEN || length < ETHER_HDRLEN) {
-		printf("[|ether]");
+		ND_PRINT((ndo, "[|ether]"));
 		return;
 	}
=20
-	if (eflag) {
+	if (ndo->ndo_eflag) {
 		if (print_encap_header !=3D NULL)
-			(*print_encap_header)(encap_header_arg);
-		ether_hdr_print(p, length);
+			(*print_encap_header)(ndo, encap_header_arg);
+		ether_hdr_print(ndo, p, length);
 	}
 	orig_length =3D length;
=20
@@ -158,36 +164,39 @@
 		if (llc_print(p, length, caplen, ESRC(ep), EDST(ep),
 		    &extracted_ether_type) =3D=3D 0) {
 			/* ether_type not known, print raw packet */
-			if (!eflag) {
+			if (!ndo->ndo_eflag) {
 				if (print_encap_header !=3D NULL)
-					(*print_encap_header)(encap_header_arg);
-				ether_hdr_print((u_char *)ep, orig_length);
+					(*print_encap_header)(ndo, encap_header_arg);
+				ether_hdr_print(ndo, (u_char *)ep, orig_length);
 			}
=20
-			if (!suppress_default_print)
-				default_print(p, caplen);
+			if (!ndo->ndo_suppress_default_print)
+				ndo->ndo_default_print(ndo, p, caplen);
 		}
-	} else if (ether_type =3D=3D ETHERTYPE_8021Q) {
+	} else if (ether_type =3D=3D ETHERTYPE_8021Q  ||
+                ether_type =3D=3D ETHERTYPE_8021Q9100 ||
+                ether_type =3D=3D ETHERTYPE_8021Q9200 ||
+                ether_type =3D=3D ETHERTYPE_8021QinQ) {
 		/*
 		 * Print VLAN information, and then go back and process
 		 * the enclosed type field.
 		 */
 		if (caplen < 4 || length < 4) {
-			printf("[|vlan]");
+			ND_PRINT((ndo, "[|vlan]"));
 			return;
 		}
-	        if (eflag) {
+	        if (ndo->ndo_eflag) {
 	        	u_int16_t tag =3D EXTRACT_16BITS(p);
=20
-			printf("vlan %u, p %u%s, ",
+			ND_PRINT((ndo, "vlan %u, p %u%s, ",
 			    tag & 0xfff,
 			    tag >> 13,
-			    (tag & 0x1000) ? ", CFI" : "");
+			    (tag & 0x1000) ? ", CFI" : ""));
 		}
=20
 		ether_type =3D EXTRACT_16BITS(p + 2);
-		if (eflag && ether_type > ETHERMTU)
-			printf("ethertype %s, ", tok2str(ethertype_values,"0x%04x", ether_type)=
);
+		if (ndo->ndo_eflag && ether_type > ETHERMTU)
+			ND_PRINT((ndo, "ethertype %s, ", tok2str(ethertype_values,"0x%04x", eth=
er_type)));
 		p +=3D 4;
 		length -=3D 4;
 		caplen -=3D 4;
@@ -206,26 +215,26 @@
 		if (llc_print(p, length, caplen, ESRC(ep), EDST(ep),
 		    &extracted_ether_type) =3D=3D 0) {
 			/* ether_type not known, print raw packet */
-			if (!eflag) {
+			if (!ndo->ndo_eflag) {
 				if (print_encap_header !=3D NULL)
-					(*print_encap_header)(encap_header_arg);
-				ether_hdr_print((u_char *)ep, orig_length);
+					(*print_encap_header)(ndo, encap_header_arg);
+				ether_hdr_print(ndo, (u_char *)ep, orig_length);
 			}
=20
-			if (!suppress_default_print)
-				default_print(p, caplen);
+			if (!ndo->ndo_suppress_default_print)
+				ndo->ndo_default_print(ndo, p, caplen);
 		}
 	} else {
-		if (ethertype_print(ether_type, p, length, caplen) =3D=3D 0) {
+		if (ethertype_print(ndo, ether_type, p, length, caplen) =3D=3D 0) {
 			/* ether_type not known, print raw packet */
-			if (!eflag) {
+			if (!ndo->ndo_eflag) {
 				if (print_encap_header !=3D NULL)
-					(*print_encap_header)(encap_header_arg);
-				ether_hdr_print((u_char *)ep, orig_length);
+					(*print_encap_header)(ndo, encap_header_arg);
+				ether_hdr_print(ndo, (u_char *)ep, orig_length);
 			}
=20
-			if (!suppress_default_print)
-				default_print(p, caplen);
+			if (!ndo->ndo_suppress_default_print)
+				ndo->ndo_default_print(ndo, p, caplen);
 		}
 	}
 }
@@ -237,14 +246,72 @@
  * is the number of bytes actually captured.
  */
 u_int
-ether_if_print(const struct pcap_pkthdr *h, const u_char *p)
+ether_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
+               const u_char *p)
 {
-	ether_print(p, h->len, h->caplen, NULL, NULL);
+	ether_print(ndo, p, h->len, h->caplen, NULL, NULL);
=20
 	return (ETHER_HDRLEN);
 }
=20
 /*
+ * This is the top level routine of the printer.  'p' points
+ * to the ether header of the packet, 'h->ts' is the timestamp,
+ * 'h->len' is the length of the packet off the wire, and 'h->caplen'
+ * is the number of bytes actually captured.
+ *
+ * This is for DLT_NETANALYZER, which has a 4-byte pseudo-header
+ * before the Ethernet header.
+ */
+u_int
+netanalyzer_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h,
+                     const u_char *p)
+{
+	/*
+	 * Fail if we don't have enough data for the Hilscher pseudo-header.
+	 */
+	if (h->len < 4 || h->caplen < 4) {
+		printf("[|netanalyzer]");
+		return (h->caplen);
+	}
+
+	/* Skip the pseudo-header. */
+	ether_print(ndo, p + 4, h->len - 4, h->caplen - 4, NULL, NULL);
+
+	return (4 + ETHER_HDRLEN);
+}
+
+/*
+ * This is the top level routine of the printer.  'p' points
+ * to the ether header of the packet, 'h->ts' is the timestamp,
+ * 'h->len' is the length of the packet off the wire, and 'h->caplen'
+ * is the number of bytes actually captured.
+ *
+ * This is for DLT_NETANALYZER_TRANSPARENT, which has a 4-byte
+ * pseudo-header, a 7-byte Ethernet preamble, and a 1-byte Ethernet SOF
+ * before the Ethernet header.
+ */
+u_int
+netanalyzer_transparent_if_print(netdissect_options *ndo,
+                                 const struct pcap_pkthdr *h,
+                                 const u_char *p)
+{
+	/*
+	 * Fail if we don't have enough data for the Hilscher pseudo-header,
+	 * preamble, and SOF.
+	 */
+	if (h->len < 12 || h->caplen < 12) {
+		printf("[|netanalyzer-transparent]");
+		return (h->caplen);
+	}
+
+	/* Skip the pseudo-header, preamble, and SOF. */
+	ether_print(ndo, p + 12, h->len - 12, h->caplen - 12, NULL, NULL);
+
+	return (12 + ETHER_HDRLEN);
+}
+
+/*
  * Prints the packet payload, given an Ethernet type code for the payload's
  * protocol.
  *
@@ -252,85 +319,87 @@
  */
=20
 int
-ethertype_print(u_short ether_type, const u_char *p, u_int length, u_int c=
aplen)
+ethertype_print(netdissect_options *ndo,
+                u_short ether_type, const u_char *p,
+                u_int length, u_int caplen)
 {
 	switch (ether_type) {
=20
 	case ETHERTYPE_IP:
-	        ip_print(gndo, p, length);
+	        ip_print(ndo, p, length);
 		return (1);
=20
 #ifdef INET6
 	case ETHERTYPE_IPV6:
-		ip6_print(p, length);
+		ip6_print(ndo, p, length);
 		return (1);
 #endif /*INET6*/
=20
 	case ETHERTYPE_ARP:
 	case ETHERTYPE_REVARP:
-  	        arp_print(gndo, p, length, caplen);
+  	        arp_print(ndo, p, length, caplen);
 		return (1);
=20
 	case ETHERTYPE_DN:
-		decnet_print(p, length, caplen);
+		decnet_print(/*ndo,*/p, length, caplen);
 		return (1);
=20
 	case ETHERTYPE_ATALK:
-		if (vflag)
+		if (ndo->ndo_vflag)
 			fputs("et1 ", stdout);
-		atalk_print(p, length);
+		atalk_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_AARP:
-		aarp_print(p, length);
+		aarp_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_IPX:
-		printf("(NOV-ETHII) ");
-		ipx_print(p, length);
+		ND_PRINT((ndo, "(NOV-ETHII) "));
+		ipx_print(/*ndo,*/p, length);
 		return (1);
=20
         case ETHERTYPE_ISO:
-                isoclns_print(p+1, length-1, length-1);
+                isoclns_print(/*ndo,*/p+1, length-1, length-1);
                 return(1);
=20
 	case ETHERTYPE_PPPOED:
 	case ETHERTYPE_PPPOES:
 	case ETHERTYPE_PPPOED2:
 	case ETHERTYPE_PPPOES2:
-		pppoe_print(p, length);
+		pppoe_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_EAPOL:
-	        eap_print(gndo, p, length);
+	        eap_print(ndo, p, length);
 		return (1);
=20
 	case ETHERTYPE_RRCP:
-	        rrcp_print(gndo, p - 14 , length + 14);
+	        rrcp_print(ndo, p - 14 , length + 14);
 		return (1);
=20
 	case ETHERTYPE_PPP:
 		if (length) {
 			printf(": ");
-			ppp_print(p, length);
+			ppp_print(/*ndo,*/p, length);
 		}
 		return (1);
=20
 	case ETHERTYPE_MPCP:
-	        mpcp_print(p, length);
+	        mpcp_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_SLOW:
-	        slow_print(p, length);
+	        slow_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_CFM:
 	case ETHERTYPE_CFM_OLD:
-	        cfm_print(p, length);
+	        cfm_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_LLDP:
-	        lldp_print(p, length);
+	        lldp_print(/*ndo,*/p, length);
 		return (1);
=20
         case ETHERTYPE_LOOPBACK:
@@ -338,7 +407,7 @@
=20
 	case ETHERTYPE_MPLS:
 	case ETHERTYPE_MPLS_MULTI:
-		mpls_print(p, length);
+		mpls_print(/*ndo,*/p, length);
 		return (1);
=20
 	case ETHERTYPE_LAT:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-forces.c
--- a/head/contrib/tcpdump/print-forces.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-forces.c	Wed Jul 25 16:21:35 2012 +0300
@@ -213,7 +213,7 @@
=20
 int
 pdatacnt_print(register const u_char * pptr, register u_int len,
-	       u_int32_t IDcnt, u_int16_t op_msk, int indent)
+	       u_int16_t IDcnt, u_int16_t op_msk, int indent)
 {
 	u_int i;
 	int rc;
@@ -270,7 +270,7 @@
 			if (vflag >=3D 3 && ops->v !=3D F_TLV_PDAT) {
 				if (pad)
 					printf
-					    ("%s %s (Length %d DataLen %d pad %d Bytes)\n",
+					    ("%s  %s (Length %d DataLen %d pad %d Bytes)\n",
 					     ib, ops->s, EXTRACT_16BITS(&pdtlv->length),
 					     tll, pad);
 				else
@@ -285,6 +285,7 @@
 			rc =3D ops->print((const u_char *)pdtlv,
 					tll + pad + TLV_HDRL, op_msk,
 					indent + 2);
+			len -=3D (TLV_HDRL + pad + tll);
 		} else {
 			printf("Invalid path data content type 0x%x len %d\n",
 			       type, EXTRACT_16BITS(&pdtlv->length));
@@ -298,7 +299,7 @@
 			}
 		}
 	}
-	return 0;
+	return len;
=20
 trunc:
 	fputs("[|forces]", stdout);
@@ -312,6 +313,8 @@
 	const struct pathdata_h *pdh =3D (struct pathdata_h *)pptr;
 	char *ib =3D indent_pr(indent, 0);
 	u_int minsize =3D 0;
+	int more_pd =3D 0;
+	u_int16_t idcnt =3D 0;
=20
 	TCHECK(*pdh);
 	if (len < sizeof(struct pathdata_h))
@@ -326,7 +329,8 @@
 	}
 	pptr +=3D sizeof(struct pathdata_h);
 	len -=3D sizeof(struct pathdata_h);
-	minsize =3D EXTRACT_16BITS(&pdh->pIDcnt) * 4;
+	idcnt =3D EXTRACT_16BITS(&pdh->pIDcnt);
+	minsize =3D idcnt * 4;
 	if (len < minsize) {
 		printf("\t\t\ttruncated IDs expected %uB got %uB\n", minsize,
 		       len);
@@ -334,7 +338,15 @@
 		printf("]\n");
 		return -1;
 	}
-	return pdatacnt_print(pptr, len, EXTRACT_16BITS(&pdh->pIDcnt), op_msk, in=
dent);
+	more_pd =3D pdatacnt_print(pptr, len, idcnt, op_msk, indent);
+	if (more_pd > 0) {
+		int consumed =3D len - more_pd;
+		pptr +=3D consumed;
+		len =3D more_pd;=20
+		/* XXX: Argh, recurse some more */
+		return recpdoptlv_print(pptr, len, op_msk, indent+1);
+	} else
+		return 0;
=20
 trunc:
 	fputs("[|forces]", stdout);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-fr.c
--- a/head/contrib/tcpdump/print-fr.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-fr.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-fr.c 235530 2012-05-17 05:11:57Z d=
elphij $
  */
=20
 #ifndef lint
@@ -258,7 +258,7 @@
                 if (eflag)
                     fr_hdr_print(length, addr_len, dlci, flags, extracted_=
ethertype);
=20
-                if (ethertype_print(extracted_ethertype,
+                if (ethertype_print(gndo, extracted_ethertype,
                                       p+addr_len+ETHERTYPE_LEN,
                                       length-addr_len-ETHERTYPE_LEN,
                                       length-addr_len-ETHERTYPE_LEN) =3D=
=3D 0)
@@ -288,7 +288,7 @@
=20
 #ifdef INET6
 	case NLPID_IP6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif
 	case NLPID_CLNP:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-gre.c
--- a/head/contrib/tcpdump/print-gre.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-gre.c	Wed Jul 25 16:21:35 2012 +0300
@@ -210,7 +210,7 @@
 		break;
 #ifdef INET6
 	case ETHERTYPE_IPV6:
-		ip6_print(bp, len);
+		ip6_print(gndo, bp, len);
 		break;
 #endif
 	case ETHERTYPE_MPLS:
@@ -226,7 +226,7 @@
 		isoclns_print(bp, len, len);
 		break;
 	case ETHERTYPE_TEB:
-		ether_print(bp, len, len, NULL, NULL);
+		ether_print(gndo, bp, len, len, NULL, NULL);
 		break;
 	default:
 		printf("gre-proto-0x%x", prot);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-icmp.c
--- a/head/contrib/tcpdump/print-icmp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-icmp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-icmp.c 235530 2012-05-17 05:11:57Z=
 delphij $
  */
=20
 #ifndef lint
@@ -348,6 +348,7 @@
 	const struct icmp_mpls_ext_object_header_t *icmp_mpls_ext_object_header;
 	u_int hlen, dport, mtu, obj_tlen, obj_class_num, obj_ctype;
 	char buf[MAXHOSTNAMELEN + 100];
+	struct cksum_vec vec[1];
=20
 	dp =3D (struct icmp *)bp;
         ext_dp =3D (struct icmp_ext_t *)bp;
@@ -562,8 +563,11 @@
 	(void)printf("ICMP %s, length %u", str, plen);
 	if (vflag && !fragmented) { /* don't attempt checksumming if this is a fr=
ag */
 		u_int16_t sum, icmp_sum;
+		struct cksum_vec vec[1];
 		if (TTEST2(*bp, plen)) {
-			sum =3D in_cksum((u_short*)dp, plen, 0);
+			vec[0].ptr =3D (const u_int8_t *)(void *)dp;
+			vec[0].len =3D plen;
+			sum =3D in_cksum(vec, 1);
 			if (sum !=3D 0) {
 				icmp_sum =3D EXTRACT_16BITS(&dp->icmp_cksum);
 				(void)printf(" (wrong icmp cksum %x (->%x)!)",
@@ -600,10 +604,12 @@
              * to check if an extension header is present. This is expedie=
nt,
              * however not all implementations set the length field proper.
              */
-            if (!ext_dp->icmp_length &&
-                in_cksum((const u_short *)&ext_dp->icmp_ext_version_res,
-                         plen - ICMP_EXTD_MINLEN, 0)) {
-                return;
+            if (!ext_dp->icmp_length) {
+                vec[0].ptr =3D (const u_int8_t *)(void *)&ext_dp->icmp_ext=
_version_res;
+                vec[0].len =3D plen - ICMP_EXTD_MINLEN;
+                if (in_cksum(vec, 1)) {
+                    return;
+                }
             }
=20
             printf("\n\tMPLS extension v%u",
@@ -619,10 +625,11 @@
             }
=20
             hlen =3D plen - ICMP_EXTD_MINLEN;
+            vec[0].ptr =3D (const u_int8_t *)(void *)&ext_dp->icmp_ext_ver=
sion_res;
+            vec[0].len =3D hlen;
             printf(", checksum 0x%04x (%scorrect), length %u",
                    EXTRACT_16BITS(ext_dp->icmp_ext_checksum),
-                   in_cksum((const u_short *)&ext_dp->icmp_ext_version_res,
-                            plen - ICMP_EXTD_MINLEN, 0) ? "in" : "",
+                   in_cksum(vec, 1) ? "in" : "",
                    hlen);
=20
             hlen -=3D 4; /* subtract common header size */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-icmp6.c
--- a/head/contrib/tcpdump/print-icmp6.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-icmp6.c	Wed Jul 25 16:21:35 2012 +0300
@@ -197,50 +197,20 @@
 static int icmp6_cksum(const struct ip6_hdr *ip6, const struct icmp6_hdr *=
icp,
 	u_int len)
 {
-	size_t i;
-	register const u_int16_t *sp;
-	u_int32_t sum;
-	union {
-		struct {
-			struct in6_addr ph_src;
-			struct in6_addr ph_dst;
-			u_int32_t	ph_len;
-			u_int8_t	ph_zero[3];
-			u_int8_t	ph_nxt;
-		} ph;
-		u_int16_t pa[20];
-	} phu;
-
-	/* pseudo-header */
-	memset(&phu, 0, sizeof(phu));
-	phu.ph.ph_src =3D ip6->ip6_src;
-	phu.ph.ph_dst =3D ip6->ip6_dst;
-	phu.ph.ph_len =3D htonl(len);
-	phu.ph.ph_nxt =3D IPPROTO_ICMPV6;
-
-	sum =3D 0;
-	for (i =3D 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++)
-		sum +=3D phu.pa[i];
-
-	sp =3D (const u_int16_t *)icp;
-
-	for (i =3D 0; i < (len & ~1); i +=3D 2)
-		sum +=3D *sp++;
-
-	if (len & 1)
-		sum +=3D htons((*(const u_int8_t *)sp) << 8);
-
-	while (sum > 0xffff)
-		sum =3D (sum & 0xffff) + (sum >> 16);
-	sum =3D ~sum & 0xffff;
-
-	return (sum);
+	return (nextproto6_cksum(ip6, (const u_int8_t *)(void *)icp, len,
+	    IPPROTO_ICMPV6));
 }
=20
 enum ND_RPL_CODE {
-        ND_RPL_DAG_IS=3D0x01,
-        ND_RPL_DAG_IO=3D0x02,
-        ND_RPL_DAO   =3D0x04
+        ND_RPL_DIS   =3D0x00,
+        ND_RPL_DIO   =3D0x01,
+        ND_RPL_DAO   =3D0x02,
+        ND_RPL_DAO_ACK=3D0x03,
+        ND_RPL_SDIS  =3D0x80,
+        ND_RPL_SDIO  =3D0x81,
+        ND_RPL_SDAO  =3D0x82,
+        ND_RPL_SDAO_ACK=3D0x83,
+        ND_RPL_SCC   =3D0x8A,
 };
=20
 enum ND_RPL_DIO_FLAGS {
@@ -266,17 +236,25 @@
           const u_char *bp, u_int length _U_)
 {
         struct nd_rpl_dio *dio =3D (struct nd_rpl_dio *)bp;
+        int secured =3D hdr->icmp6_code & 0x80;
+        int basecode=3D hdr->icmp6_code & 0x7f;
=20
         ND_TCHECK(dio->rpl_dagid);
=20
-        switch(hdr->icmp6_code) {
-        case ND_RPL_DAG_IS:
-                ND_PRINT((ndo, ", DAG Information Solicitation"));
+        if(secured) {
+                ND_PRINT((ndo, ", (SEC)"));
+        } else {
+                ND_PRINT((ndo, ", (CLR)"));
+        }
+               =20
+        switch(basecode) {
+        case ND_RPL_DIS:
+                ND_PRINT((ndo, "DODAG Information Solicitation"));
                 if(ndo->ndo_vflag) {
                 }
                 break;
-        case ND_RPL_DAG_IO:
-                ND_PRINT((ndo, ", DAG Information Object"));
+        case ND_RPL_DIO:
+                ND_PRINT((ndo, "DODAG Information Object"));
                 if(ndo->ndo_vflag) {
                         char dagid[65];
                         char *d =3D dagid;
@@ -299,12 +277,17 @@
                 }
                 break;
         case ND_RPL_DAO:
-                ND_PRINT((ndo, ", Destination Advertisement Object"));
+                ND_PRINT((ndo, "Destination Advertisement Object"));
+                if(ndo->ndo_vflag) {
+                }
+                break;
+        case ND_RPL_DAO_ACK:
+                ND_PRINT((ndo, "Destination Advertisement Object Ack"));
                 if(ndo->ndo_vflag) {
                 }
                 break;
         default:
-                ND_PRINT((ndo, ", RPL message, unknown code %u",hdr->icmp6=
_code));
+                ND_PRINT((ndo, "RPL message, unknown code %u",hdr->icmp6_c=
ode));
                 break;
         }
 	return;
@@ -336,12 +319,15 @@
 	TCHECK(dp->icmp6_cksum);
=20
 	if (vflag && !fragmented) {
-		int sum =3D dp->icmp6_cksum;
+		u_int16_t sum, udp_sum;
=20
 		if (TTEST2(bp[0], length)) {
+			udp_sum =3D EXTRACT_16BITS(&dp->icmp6_cksum);
 			sum =3D icmp6_cksum(ip, dp, length);
 			if (sum !=3D 0)
-				(void)printf("[bad icmp6 cksum %x!] ", sum);
+				(void)printf("[bad icmp6 cksum 0x%04x -> 0x%04x!] ",
+				    udp_sum,
+				    in_cksum_shouldbe(udp_sum, sum));
 			else
 				(void)printf("[icmp6 sum ok] ");
 		}
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-igmp.c
--- a/head/contrib/tcpdump/print-igmp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-igmp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -259,6 +259,8 @@
 void
 igmp_print(register const u_char *bp, register u_int len)
 {
+    struct cksum_vec vec[1];
+
     if (qflag) {
         (void)printf("igmp");
         return;
@@ -327,7 +329,9 @@
=20
     if (vflag && TTEST2(bp[0], len)) {
         /* Check the IGMP checksum */
-        if (in_cksum((const u_short*)bp, len, 0))
+        vec[0].ptr =3D bp;
+        vec[0].len =3D len;
+        if (in_cksum(vec, 1))
             printf(" bad igmp cksum %x!", EXTRACT_16BITS(&bp[2]));
     }
     return;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ip.c
--- a/head/contrib/tcpdump/print-ip.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ip.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-ip.c 235530 2012-05-17 05:11:57Z d=
elphij $
  */
=20
 #ifndef lint
@@ -89,7 +89,7 @@
  * This is used for UDP and TCP pseudo-header in the checksum
  * calculation.
  */
-u_int32_t
+static u_int32_t
 ip_finddst(const struct ip *ip)
 {
 	int length;
@@ -131,6 +131,39 @@
 	return retval;
 }
=20
+/*
+ * Compute a V4-style checksum by building a pseudoheader.
+ */
+int
+nextproto4_cksum(const struct ip *ip, const u_int8_t *data,
+		 u_int len, u_int next_proto)
+{
+	struct phdr {
+		u_int32_t src;
+		u_int32_t dst;
+		u_char mbz;
+		u_char proto;
+		u_int16_t len;
+	} ph;
+	struct cksum_vec vec[2];
+
+	/* pseudo-header.. */
+	ph.len =3D htons((u_int16_t)len);
+	ph.mbz =3D 0;
+	ph.proto =3D next_proto;
+	memcpy(&ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
+	if (IP_HL(ip) =3D=3D 5)
+		memcpy(&ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
+	else
+		ph.dst =3D ip_finddst(ip);
+
+	vec[0].ptr =3D (const u_int8_t *)(void *)&ph;
+	vec[0].len =3D sizeof(ph);
+	vec[1].ptr =3D data;
+	vec[1].len =3D len;
+	return (in_cksum(vec, 2));
+}
+
 static void
 ip_printts(register const u_char *cp, u_int length)
 {
@@ -270,92 +303,6 @@
 	printf("[|ip]");
 }
=20
-/*
- * compute an IP header checksum.
- * don't modifiy the packet.
- */
-u_short
-in_cksum(const u_short *addr, register u_int len, int csum)
-{
-	int nleft =3D len;
-	const u_short *w =3D addr;
-	u_short answer;
-	int sum =3D csum;
-
-	/*
-	 *  Our algorithm is simple, using a 32 bit accumulator (sum),
-	 *  we add sequential 16 bit words to it, and at the end, fold
-	 *  back all the carry bits from the top 16 bits into the lower
-	 *  16 bits.
-	 */
-	while (nleft > 1)  {
-		sum +=3D *w++;
-		nleft -=3D 2;
-	}
-	if (nleft =3D=3D 1)
-		sum +=3D htons(*(u_char *)w<<8);
-
-	/*
-	 * add back carry outs from top 16 bits to low 16 bits
-	 */
-	sum =3D (sum >> 16) + (sum & 0xffff);	/* add hi 16 to low 16 */
-	sum +=3D (sum >> 16);			/* add carry */
-	answer =3D ~sum;				/* truncate to 16 bits */
-	return (answer);
-}
-
-/*
- * Given the host-byte-order value of the checksum field in a packet
- * header, and the network-byte-order computed checksum of the data
- * that the checksum covers (including the checksum itself), compute
- * what the checksum field *should* have been.
- */
-u_int16_t
-in_cksum_shouldbe(u_int16_t sum, u_int16_t computed_sum)
-{
-	u_int32_t shouldbe;
-
-	/*
-	 * The value that should have gone into the checksum field
-	 * is the negative of the value gotten by summing up everything
-	 * *but* the checksum field.
-	 *
-	 * We can compute that by subtracting the value of the checksum
-	 * field from the sum of all the data in the packet, and then
-	 * computing the negative of that value.
-	 *
-	 * "sum" is the value of the checksum field, and "computed_sum"
-	 * is the negative of the sum of all the data in the packets,
-	 * so that's -(-computed_sum - sum), or (sum + computed_sum).
-	 *
-	 * All the arithmetic in question is one's complement, so the
-	 * addition must include an end-around carry; we do this by
-	 * doing the arithmetic in 32 bits (with no sign-extension),
-	 * and then adding the upper 16 bits of the sum, which contain
-	 * the carry, to the lower 16 bits of the sum, and then do it
-	 * again in case *that* sum produced a carry.
-	 *
-	 * As RFC 1071 notes, the checksum can be computed without
-	 * byte-swapping the 16-bit words; summing 16-bit words
-	 * on a big-endian machine gives a big-endian checksum, which
-	 * can be directly stuffed into the big-endian checksum fields
-	 * in protocol headers, and summing words on a little-endian
-	 * machine gives a little-endian checksum, which must be
-	 * byte-swapped before being stuffed into a big-endian checksum
-	 * field.
-	 *
-	 * "computed_sum" is a network-byte-order value, so we must put
-	 * it in host byte order before subtracting it from the
-	 * host-byte-order value from the header; the adjusted checksum
-	 * will be in host byte order, which is what we'll return.
-	 */
-	shouldbe =3D sum;
-	shouldbe +=3D ntohs(computed_sum);
-	shouldbe =3D (shouldbe & 0xFFFF) + (shouldbe >> 16);
-	shouldbe =3D (shouldbe & 0xFFFF) + (shouldbe >> 16);
-	return shouldbe;
-}
-
 #define IP_RES 0x8000
=20
 static struct tok ip_frag_values[] =3D {
@@ -378,6 +325,7 @@
 	       struct ip_print_demux_state *ipds)
 {
 	struct protoent *proto;
+	struct cksum_vec vec[1];
=20
 again:
 	switch (ipds->nh) {
@@ -482,7 +430,7 @@
=20
 	case IPPROTO_IPV4:
 		/* DVMRP multicast tunnel (ip-in-ip encapsulation) */
-		ip_print(gndo, ipds->cp, ipds->len);
+		ip_print(ndo, ipds->cp, ipds->len);
 		if (! vflag) {
 			ND_PRINT((ndo, " (ipip-proto-4)"));
 			return;
@@ -492,7 +440,7 @@
 #ifdef INET6
 	case IPPROTO_IPV6:
 		/* ip6-in-ip encapsulation */
-		ip6_print(ipds->cp, ipds->len);
+		ip6_print(ndo, ipds->cp, ipds->len);
 		break;
 #endif /*INET6*/
=20
@@ -510,12 +458,25 @@
 		break;
=20
 	case IPPROTO_PIM:
-		pim_print(ipds->cp,  ipds->len,
-			  in_cksum((const u_short*)ipds->cp, ipds->len, 0));
+		vec[0].ptr =3D ipds->cp;
+		vec[0].len =3D ipds->len;
+		pim_print(ipds->cp, ipds->len, in_cksum(vec, 1));
 		break;
=20
 	case IPPROTO_VRRP:
-		vrrp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl);
+		if (packettype =3D=3D PT_CARP) {
+			if (vflag)
+				(void)printf("carp %s > %s: ",
+					     ipaddr_string(&ipds->ip->ip_src),
+					     ipaddr_string(&ipds->ip->ip_dst));
+			carp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl);
+		} else {
+			if (vflag)
+				(void)printf("vrrp %s > %s: ",
+					     ipaddr_string(&ipds->ip->ip_src),
+					     ipaddr_string(&ipds->ip->ip_dst));
+			vrrp_print(ipds->cp, ipds->len, ipds->ip->ip_ttl);
+		}
 		break;
=20
 	case IPPROTO_PGM:
@@ -563,6 +524,7 @@
 	struct ip_print_demux_state *ipds=3D&ipd;
 	const u_char *ipend;
 	u_int hlen;
+	struct cksum_vec vec[1];
 	u_int16_t sum, ip_sum;
 	struct protoent *proto;
=20
@@ -575,7 +537,7 @@
         else if (!eflag)
 	    printf("IP ");
=20
-	if ((u_char *)(ipds->ip + 1) > snapend) {
+	if ((u_char *)(ipds->ip + 1) > ndo->ndo_snapend) {
 		printf("[|ip]");
 		return;
 	}
@@ -613,8 +575,8 @@
 	 * Cut off the snapshot length to the end of the IP payload.
 	 */
 	ipend =3D bp + ipds->len;
-	if (ipend < snapend)
-		snapend =3D ipend;
+	if (ipend < ndo->ndo_snapend)
+		ndo->ndo_snapend =3D ipend;
=20
 	ipds->len -=3D hlen;
=20
@@ -660,8 +622,10 @@
                 printf(")");
             }
=20
-	    if (!Kflag && (u_char *)ipds->ip + hlen <=3D snapend) {
-	        sum =3D in_cksum((const u_short *)ipds->ip, hlen, 0);
+	    if (!Kflag && (u_char *)ipds->ip + hlen <=3D ndo->ndo_snapend) {
+	        vec[0].ptr =3D (const u_int8_t *)(void *)ipds->ip;
+	        vec[0].len =3D hlen;
+	        sum =3D in_cksum(vec, 1);
 		if (sum !=3D 0) {
 		    ip_sum =3D EXTRACT_16BITS(&ipds->ip->ip_sum);
 		    (void)printf(", bad cksum %x (->%x)!", ip_sum,
@@ -724,7 +688,7 @@
 		return;
 #ifdef INET6
 	case 6:
-		ip6_print (bp, length);
+		ip6_print (gndo, bp, length);
 		return;
 #endif
 	default:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ip6.c
--- a/head/contrib/tcpdump/print-ip6.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ip6.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-ip6.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -50,32 +50,38 @@
  * Compute a V6-style checksum by building a pseudoheader.
  */
 int
-nextproto6_cksum(const struct ip6_hdr *ip6, const u_short *data,
+nextproto6_cksum(const struct ip6_hdr *ip6, const u_int8_t *data,
 		 u_int len, u_int next_proto)
 {
-        size_t i;
-        u_int32_t sum =3D 0;
-	union ip6_pseudo_hdr phu;
+        struct {
+                struct in6_addr ph_src;
+                struct in6_addr ph_dst;
+                u_int32_t       ph_len;
+                u_int8_t        ph_zero[3];
+                u_int8_t        ph_nxt;
+        } ph;
+        struct cksum_vec vec[2];
=20
         /* pseudo-header */
-        memset(&phu, 0, sizeof(phu));
-        phu.ph.ph_src =3D ip6->ip6_src;
-        phu.ph.ph_dst =3D ip6->ip6_dst;
-        phu.ph.ph_len =3D htonl(len);
-        phu.ph.ph_nxt =3D next_proto;
+        memset(&ph, 0, sizeof(ph));
+        ph.ph_src =3D ip6->ip6_src;
+        ph.ph_dst =3D ip6->ip6_dst;
+        ph.ph_len =3D htonl(len);
+        ph.ph_nxt =3D next_proto;
=20
-        for (i =3D 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++) {
-                sum +=3D phu.pa[i];
-	}
+        vec[0].ptr =3D (const u_int8_t *)(void *)&ph;
+        vec[0].len =3D sizeof(ph);
+        vec[1].ptr =3D data;
+        vec[1].len =3D len;
=20
-        return in_cksum(data, len, sum);
+        return in_cksum(vec, 2);
 }
=20
 /*
  * print an IP6 datagram.
  */
 void
-ip6_print(register const u_char *bp, register u_int length)
+ip6_print(netdissect_options *ndo, const u_char *bp, u_int length)
 {
 	register const struct ip6_hdr *ip6;
 	register int advance;
@@ -91,62 +97,62 @@
=20
 	TCHECK(*ip6);
 	if (length < sizeof (struct ip6_hdr)) {
-		(void)printf("truncated-ip6 %u", length);
+		(void)ND_PRINT((ndo, "truncated-ip6 %u", length));
 		return;
 	}
=20
-        if (!eflag)
-            printf("IP6 ");
+        if (!ndo->ndo_eflag)
+            ND_PRINT((ndo, "IP6 "));
=20
 	payload_len =3D EXTRACT_16BITS(&ip6->ip6_plen);
 	len =3D payload_len + sizeof(struct ip6_hdr);
 	if (length < len)
-		(void)printf("truncated-ip6 - %u bytes missing!",
-			len - length);
+		(void)ND_PRINT((ndo, "truncated-ip6 - %u bytes missing!",
+			len - length));
=20
-        if (vflag) {
+        if (ndo->ndo_vflag) {
             flow =3D EXTRACT_32BITS(&ip6->ip6_flow);
-            printf("(");
+            ND_PRINT((ndo, "("));
 #if 0
             /* rfc1883 */
             if (flow & 0x0f000000)
-		(void)printf("pri 0x%02x, ", (flow & 0x0f000000) >> 24);
+		(void)ND_PRINT((ndo, "pri 0x%02x, ", (flow & 0x0f000000) >> 24));
             if (flow & 0x00ffffff)
-		(void)printf("flowlabel 0x%06x, ", flow & 0x00ffffff);
+		(void)ND_PRINT((ndo, "flowlabel 0x%06x, ", flow & 0x00ffffff));
 #else
             /* RFC 2460 */
             if (flow & 0x0ff00000)
-		(void)printf("class 0x%02x, ", (flow & 0x0ff00000) >> 20);
+		(void)ND_PRINT((ndo, "class 0x%02x, ", (flow & 0x0ff00000) >> 20));
             if (flow & 0x000fffff)
-		(void)printf("flowlabel 0x%05x, ", flow & 0x000fffff);
+		(void)ND_PRINT((ndo, "flowlabel 0x%05x, ", flow & 0x000fffff));
 #endif
=20
-            (void)printf("hlim %u, next-header %s (%u) payload length: %u)=
 ",
+            (void)ND_PRINT((ndo, "hlim %u, next-header %s (%u) payload len=
gth: %u) ",
                          ip6->ip6_hlim,
                          tok2str(ipproto_values,"unknown",ip6->ip6_nxt),
                          ip6->ip6_nxt,
-                         payload_len);
+                         payload_len));
         }
=20
 	/*
 	 * Cut off the snapshot length to the end of the IP payload.
 	 */
 	ipend =3D bp + len;
-	if (ipend < snapend)
-		snapend =3D ipend;
+	if (ipend < ndo->ndo_snapend)
+		ndo->ndo_snapend =3D ipend;
=20
 	cp =3D (const u_char *)ip6;
 	advance =3D sizeof(struct ip6_hdr);
 	nh =3D ip6->ip6_nxt;
-	while (cp < snapend && advance > 0) {
+	while (cp < ndo->ndo_snapend && advance > 0) {
 		cp +=3D advance;
 		len -=3D advance;
=20
 		if (cp =3D=3D (const u_char *)(ip6 + 1) &&
 		    nh !=3D IPPROTO_TCP && nh !=3D IPPROTO_UDP &&
 		    nh !=3D IPPROTO_DCCP && nh !=3D IPPROTO_SCTP) {
-			(void)printf("%s > %s: ", ip6addr_string(&ip6->ip6_src),
-				     ip6addr_string(&ip6->ip6_dst));
+			(void)ND_PRINT((ndo, "%s > %s: ", ip6addr_string(&ip6->ip6_src),
+				     ip6addr_string(&ip6->ip6_dst)));
 		}
=20
 		switch (nh) {
@@ -160,7 +166,7 @@
 			break;
 		case IPPROTO_FRAGMENT:
 			advance =3D frag6_print(cp, (const u_char *)ip6);
-			if (snapend <=3D cp + advance)
+			if (ndo->ndo_snapend <=3D cp + advance)
 				return;
 			nh =3D *cp;
 			fragmented =3D 1;
@@ -198,7 +204,7 @@
 			udp_print(cp, len, (const u_char *)ip6, fragmented);
 			return;
 		case IPPROTO_ICMPV6:
-			icmp6_print(gndo, cp, len, (const u_char *)ip6, fragmented);
+			icmp6_print(ndo, cp, len, (const u_char *)ip6, fragmented);
 			return;
 		case IPPROTO_AH:
 			advance =3D ah_print(cp);
@@ -207,7 +213,7 @@
 		case IPPROTO_ESP:
 		    {
 			int enh, padlen;
-			advance =3D esp_print(gndo, cp, len, (const u_char *)ip6, &enh, &padlen=
);
+			advance =3D esp_print(ndo, cp, len, (const u_char *)ip6, &enh, &padlen);
 			nh =3D enh & 0xff;
 			len -=3D padlen;
 			break;
@@ -221,7 +227,7 @@
 		    }
=20
 		case IPPROTO_PIM:
-			pim_print(cp, len, nextproto6_cksum(ip6, (u_short *)cp, len,
+			pim_print(cp, len, nextproto6_cksum(ip6, cp, len,
 							    IPPROTO_PIM));
 			return;
=20
@@ -230,11 +236,11 @@
 			return;
=20
 		case IPPROTO_IPV6:
-			ip6_print(cp, len);
+			ip6_print(ndo, cp, len);
 			return;
=20
 		case IPPROTO_IPV4:
-		        ip_print(gndo, cp, len);
+		        ip_print(ndo, cp, len);
 			return;
=20
                 case IPPROTO_PGM:
@@ -250,18 +256,18 @@
 			return;
=20
 		case IPPROTO_NONE:
-			(void)printf("no next header");
+			(void)ND_PRINT((ndo, "no next header"));
 			return;
=20
 		default:
-			(void)printf("ip-proto-%d %d", nh, len);
+			(void)ND_PRINT((ndo, "ip-proto-%d %d", nh, len));
 			return;
 		}
 	}
=20
 	return;
 trunc:
-	(void)printf("[|ip6]");
+	(void)ND_PRINT((ndo, "[|ip6]"));
 }
=20
 #endif /* INET6 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ipnet.c
--- a/head/contrib/tcpdump/print-ipnet.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ipnet.c	Wed Jul 25 16:21:35 2012 +0300
@@ -69,7 +69,7 @@
=20
 #ifdef INET6
 	case IPH_AF_INET6:
-		ip6_print(p, length);
+		ip6_print(ndo, p, length);
 		break;
 #endif /*INET6*/
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ipx.c
--- a/head/contrib/tcpdump/print-ipx.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ipx.c	Wed Jul 25 16:21:35 2012 +0300
@@ -21,7 +21,7 @@
  * Format and print Novell IPX packets.
  * Contributed by Brad Parker (brad at fcr.com).
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-ipx.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -198,7 +198,7 @@
 	(void)printf("ipx-rip-req");
 	if (length > 0) {
 	    TCHECK(ipx[3]);
-	    (void)printf(" %u/%d.%d", EXTRACT_32BITS(&ipx[0]),
+	    (void)printf(" %08x/%d.%d", EXTRACT_32BITS(&ipx[0]),
 			 EXTRACT_16BITS(&ipx[2]), EXTRACT_16BITS(&ipx[3]));
 	}
 	break;
@@ -206,7 +206,7 @@
 	(void)printf("ipx-rip-resp");
 	for (i =3D 0; i < 50 && length > 0; i++) {
 	    TCHECK(ipx[3]);
-	    (void)printf(" %u/%d.%d", EXTRACT_32BITS(&ipx[0]),
+	    (void)printf(" %08x/%d.%d", EXTRACT_32BITS(&ipx[0]),
 			 EXTRACT_16BITS(&ipx[2]), EXTRACT_16BITS(&ipx[3]));
=20
 	    ipx +=3D 4;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-isoclns.c
--- a/head/contrib/tcpdump/print-isoclns.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-isoclns.c	Wed Jul 25 16:21:35 2012 +0300
@@ -23,7 +23,7 @@
  * Extensively modified by Hannes Gredler (hannes at juniper.net) for more
  * complete IS-IS & CLNP support.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-isoclns.c 235530 2012-05-17 05:11:=
57Z delphij $
  */
=20
 #ifndef lint
@@ -395,12 +395,14 @@
 };
=20
 #define ISIS_SUBTLV_AUTH_SIMPLE        1
+#define ISIS_SUBTLV_AUTH_GENERIC       3 /* rfc 5310 */
 #define ISIS_SUBTLV_AUTH_MD5          54
 #define ISIS_SUBTLV_AUTH_MD5_LEN      16
 #define ISIS_SUBTLV_AUTH_PRIVATE     255
=20
 static struct tok isis_subtlv_auth_values[] =3D {
     { ISIS_SUBTLV_AUTH_SIMPLE,	"simple text password"},
+    { ISIS_SUBTLV_AUTH_GENERIC, "Generic Crypto key-id"},
     { ISIS_SUBTLV_AUTH_MD5,	"HMAC-MD5 password"},
     { ISIS_SUBTLV_AUTH_PRIVATE,	"Routing Domain private password"},
     { 0, NULL }
@@ -441,8 +443,8 @@
 #define ISIS_MASK_MTFLAGS(x)               ((x)&0xf000)
=20
 static struct tok isis_mt_flag_values[] =3D {
-    { 0x4000,                  "sub-TLVs present"},
-    { 0x8000,                  "ATT bit set"},
+    { 0x4000,                  "ATT bit set"},
+    { 0x8000,                  "Overload bit set"},
     { 0, NULL}
 };
=20
@@ -618,10 +620,6 @@
=20
 void isoclns_print(const u_int8_t *p, u_int length, u_int caplen)
 {
-	const struct isis_common_header *header;
-
-	header =3D (const struct isis_common_header *)p;
-
         if (caplen <=3D 1) { /* enough bytes on the wire ? */
             printf("|OSI");
             return;
@@ -664,7 +662,7 @@
=20
 #ifdef INET6
         case NLPID_IP6:
-                ip6_print(p+1, length-1);
+                ip6_print(gndo, p+1, length-1);
                 break;
 #endif
=20
@@ -1179,15 +1177,15 @@
 	}
=20
         /* now walk the options */
-        while (li >=3D 2) {
+        while (li !=3D 0) {
             u_int op, opli;
             const u_int8_t *tptr;
            =20
-            TCHECK2(*pptr, 2);
             if (li < 2) {
                 printf(", bad opts/li");
                 return;
             }
+            TCHECK2(*pptr, 2);
             op =3D *pptr++;
             opli =3D *pptr++;
             li -=3D 2;
@@ -1206,8 +1204,11 @@
             switch (op) {
=20
             case ESIS_OPTION_ES_CONF_TIME:
-                TCHECK2(*pptr, 2);
-                printf("%us", EXTRACT_16BITS(tptr));
+                if (opli =3D=3D 2) {
+                    TCHECK2(*pptr, 2);
+                    printf("%us", EXTRACT_16BITS(tptr));
+                } else
+                    printf("(bad length)");
                 break;
=20
             case ESIS_OPTION_PROTOCOLS:
@@ -1779,7 +1780,7 @@
     u_int8_t pdu_type, max_area, id_length, tlv_type, tlv_len, tmp, alen, =
lan_alen, prefix_len;
     u_int8_t ext_is_len, ext_ip_len, mt_len;
     const u_int8_t *optr, *pptr, *tptr;
-    u_short packet_len,pdu_len;
+    u_short packet_len,pdu_len, key_id;
     u_int i,vendor_id;
     int sigcheck;
=20
@@ -2378,6 +2379,15 @@
                 printf(" (%s)", tok2str(signature_check_values, "Unknown",=
 sigcheck));
=20
 		break;
+            case ISIS_SUBTLV_AUTH_GENERIC:
+                key_id =3D EXTRACT_16BITS((tptr+1));
+                printf("%u, password: ", key_id);=20
+                for(i=3D1 + sizeof(u_int16_t);i<tlv_len;i++) {
+                    if (!TTEST2(*(tptr+i), 1))
+                        goto trunctlv;
+                    printf("%02x",*(tptr+i));
+                }
+                break;
 	    case ISIS_SUBTLV_AUTH_PRIVATE:
 	    default:
 		if(!print_unknown_data(tptr+1,"\n\t\t  ",tlv_len-1))
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-juniper.c
--- a/head/contrib/tcpdump/print-juniper.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-juniper.c	Wed Jul 25 16:21:35 2012 +0300
@@ -486,7 +486,7 @@
             break;
 #ifdef INET6
         case JUNIPER_PROTO_IPV6:
-            ip6_print(p, l2info.length);
+            ip6_print(gndo, p, l2info.length);
             break;
 #endif /* INET6 */
         default:
@@ -647,7 +647,7 @@
=20
         p+=3Dl2info.header_len;
         /* this DLT contains nothing but raw ethernet frames */
-        ether_print(p, l2info.length, l2info.caplen, NULL, NULL);
+        ether_print(gndo, p, l2info.length, l2info.caplen, NULL, NULL);
         return l2info.header_len;
 }
 #endif
@@ -664,7 +664,7 @@
=20
         p+=3Dl2info.header_len;
         /* this DLT contains nothing but raw Ethernet frames */
-        ether_print(p, l2info.length, l2info.caplen, NULL, NULL);
+        ether_print(gndo, p, l2info.length, l2info.caplen, NULL, NULL);
         return l2info.header_len;
 }
 #endif
@@ -736,7 +736,7 @@
         extracted_ethertype =3D EXTRACT_16BITS(p);
         /* this DLT contains nothing but raw PPPoE frames,
          * prepended with a type field*/
-        if (ethertype_print(extracted_ethertype,
+        if (ethertype_print(gndo, extracted_ethertype,
                               p+ETHERTYPE_LEN,
                               l2info.length-ETHERTYPE_LEN,
                               l2info.caplen-ETHERTYPE_LEN) =3D=3D 0)
@@ -779,7 +779,7 @@
             return l2info.header_len;
 #ifdef INET6
         case JUNIPER_LSQ_L3_PROTO_IPV6:
-            ip6_print(p,l2info.length);
+            ip6_print(gndo, p,l2info.length);
             return l2info.header_len;
 #endif
         case JUNIPER_LSQ_L3_PROTO_MPLS:
@@ -834,7 +834,7 @@
                 return l2info.header_len;
 #ifdef INET6
             case JUNIPER_LSQ_L3_PROTO_IPV6:
-                ip6_print(p,l2info.length);
+                ip6_print(gndo, p,l2info.length);
                 return l2info.header_len;
 #endif
             case JUNIPER_LSQ_L3_PROTO_MPLS:
@@ -987,7 +987,7 @@
=20
         if (l2info.direction !=3D JUNIPER_BPF_PKT_IN && /* ether-over-1483=
 encaps ? */
             (EXTRACT_32BITS(l2info.cookie) & ATM2_GAP_COUNT_MASK)) {
-            ether_print(p, l2info.length, l2info.caplen, NULL, NULL);
+            ether_print(gndo, p, l2info.length, l2info.caplen, NULL, NULL);
             return l2info.header_len;
         }
=20
@@ -1073,7 +1073,7 @@
     case 0x6d:
     case 0x6e:
     case 0x6f:
-        ip6_print(p, length);
+        ip6_print(gndo, p, length);
         break;
 #endif
     default:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-lane.c
--- a/head/contrib/tcpdump/print-lane.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-lane.c	Wed Jul 25 16:21:35 2012 +0300
@@ -61,9 +61,9 @@
 };
=20
 static void
-lane_hdr_print(const u_char *bp)
+lane_hdr_print(netdissect_options *ndo, const u_char *bp)
 {
-	(void)printf("lecid:%x ", EXTRACT_16BITS(bp));
+	(void)ND_PRINT((ndo, "lecid:%x ", EXTRACT_16BITS(bp)));
 }
=20
 /*
@@ -106,7 +106,7 @@
 	 * Now print the encapsulated frame, under the assumption
 	 * that it's an Ethernet frame.
 	 */
-	ether_print(p, length, caplen, lane_hdr_print, p - 2);
+	ether_print(gndo, p, length, caplen, lane_hdr_print, p - 2);
 }
=20
 u_int
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-llc.c
--- a/head/contrib/tcpdump/print-llc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-llc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -21,7 +21,7 @@
  * Code by Matt Thomas, Digital Equipment Corporation
  *	with an awful lot of hacking by Jeffrey Mogul, DECWRL
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-llc.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -419,7 +419,7 @@
 		 * Cisco hardware; the protocol ID is
 		 * an Ethernet protocol type.
 		 */
-		ret =3D ethertype_print(et, p, length, caplen);
+		ret =3D ethertype_print(gndo, et, p, length, caplen);
 		if (ret)
 			return (ret);
 		break;
@@ -434,7 +434,7 @@
 			 * but used 0x000000 and an Ethernet
 			 * packet type for AARP packets.
 			 */
-			ret =3D ethertype_print(et, p, length, caplen);
+			ret =3D ethertype_print(gndo, et, p, length, caplen);
 			if (ret)
 				return (ret);
 		}
@@ -481,7 +481,7 @@
 			/*
 			 * What remains is an Ethernet packet.
 			 */
-			ether_print(p, length, caplen, NULL, NULL);
+			ether_print(gndo, p, length, caplen, NULL, NULL);
 			return (1);
=20
 		case PID_RFC2684_802_5_FCS:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-lldp.c
--- a/head/contrib/tcpdump/print-lldp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-lldp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -12,10 +12,11 @@
  * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  * FOR A PARTICULAR PURPOSE.
  *
- * support for the IEEE Link Discovery Protocol as per 802.1ab
+ * support for the IEEE Link Discovery Protocol as per 802.1AB
  *
  * Original code by Hannes Gredler (hannes at juniper.net)
  * IEEE and TIA extensions by Carles Kishimoto <carles.kishimoto at gmail.com>
+ * DCBX extensions by Kaladhar Musunuru <kaladharm at sourceforge.net>
  */
=20
 #ifndef lint
@@ -542,6 +543,23 @@
 };
=20
 /*
+ * DCBX protocol subtypes.
+ */
+#define LLDP_DCBX_SUBTYPE_1                1
+#define LLDP_DCBX_SUBTYPE_2                2
+
+static const struct tok lldp_dcbx_subtype_values[] =3D {
+    { LLDP_DCBX_SUBTYPE_1, "DCB Capability Exchange Protocol Rev 1" },
+    { LLDP_DCBX_SUBTYPE_2, "DCB Capability Exchange Protocol Rev 1.01" },
+    { 0, NULL}
+};
+
+#define LLDP_DCBX_CONTROL_TLV                1
+#define LLDP_DCBX_PRIORITY_GROUPS_TLV        2
+#define LLDP_DCBX_PRIORITY_FLOW_CONTROL_TLV  3
+#define LLDP_DCBX_APPLICATION_TLV            4
+
+/*
  * Interface numbering subtypes.
  */
 #define LLDP_INTF_NUMB_IFX_SUBTYPE         2
@@ -556,13 +574,17 @@
 #define LLDP_INTF_NUM_LEN                  5
=20
 /*
- * Print IEEE private extensions. (802.1 annex F)
+ * Print IEEE 802.1 private extensions. (802.1AB annex E)
  */
 static int
-lldp_private_8021_print(const u_char *tptr)
+lldp_private_8021_print(const u_char *tptr, u_int tlv_len)
 {
     int subtype, hexdump =3D FALSE;
+    u_int sublen;
=20
+    if (tlv_len < 4) {
+        return hexdump;
+    }
     subtype =3D *(tptr+3);
=20
     printf("\n\t  %s Subtype (%u)",
@@ -571,24 +593,47 @@
=20
     switch (subtype) {
     case LLDP_PRIVATE_8021_SUBTYPE_PORT_VLAN_ID:
+        if (tlv_len < 6) {
+            return hexdump;
+        }
         printf("\n\t    port vlan id (PVID): %u",
                EXTRACT_16BITS(tptr+4));
         break;
     case LLDP_PRIVATE_8021_SUBTYPE_PROTOCOL_VLAN_ID:
+        if (tlv_len < 7) {
+            return hexdump;
+        }
         printf("\n\t    port and protocol vlan id (PPVID): %u, flags [%s] =
(0x%02x)",
                EXTRACT_16BITS(tptr+5),
 	       bittok2str(lldp_8021_port_protocol_id_values, "none", *(tptr+4)),
 	       *(tptr+4));
         break;
     case LLDP_PRIVATE_8021_SUBTYPE_VLAN_NAME:
+        if (tlv_len < 6) {
+            return hexdump;
+        }
         printf("\n\t    vlan id (VID): %u",
                EXTRACT_16BITS(tptr+4));
+        if (tlv_len < 7) {
+            return hexdump;
+        }
+        sublen =3D *(tptr+6);
+        if (tlv_len < 7+sublen) {
+            return hexdump;
+        }
         printf("\n\t    vlan name: ");
-        safeputs((const char *)tptr+7, *(tptr+6));
+        safeputs((const char *)tptr+7, sublen);
         break;
     case LLDP_PRIVATE_8021_SUBTYPE_PROTOCOL_IDENTITY:
+        if (tlv_len < 5) {
+            return hexdump;
+        }
+        sublen =3D *(tptr+4);
+        if (tlv_len < 5+sublen) {
+            return hexdump;
+        }
         printf("\n\t    protocol identity: ");
-        safeputs((const char *)tptr+5, *(tptr+4));
+        safeputs((const char *)tptr+5, sublen);
         break;
=20
     default:
@@ -600,13 +645,16 @@
 }
=20
 /*
- * Print IEEE private extensions. (802.3)
+ * Print IEEE 802.3 private extensions. (802.3bc)
  */
 static int
-lldp_private_8023_print(const u_char *tptr)
+lldp_private_8023_print(const u_char *tptr, u_int tlv_len)
 {
     int subtype, hexdump =3D FALSE;
=20
+    if (tlv_len < 4) {
+        return hexdump;
+    }
     subtype =3D *(tptr+3);
=20
     printf("\n\t  %s Subtype (%u)",
@@ -615,6 +663,9 @@
=20
     switch (subtype) {
     case LLDP_PRIVATE_8023_SUBTYPE_MACPHY:
+        if (tlv_len < 9) {
+            return hexdump;
+        }
         printf("\n\t    autonegotiation [%s] (0x%02x)",
                bittok2str(lldp_8023_autonegotiation_values, "none", *(tptr=
+4)),
                *(tptr+4));
@@ -627,6 +678,9 @@
         break;
=20
     case LLDP_PRIVATE_8023_SUBTYPE_MDIPOWER:
+        if (tlv_len < 7) {
+            return hexdump;
+        }
         printf("\n\t    MDI power support [%s], power pair %s, power class=
 %s",
                bittok2str(lldp_mdi_values, "none", *(tptr+4)),
                tok2str(lldp_mdi_power_pairs_values, "unknown", *(tptr+5)),
@@ -634,6 +688,9 @@
         break;
=20
     case LLDP_PRIVATE_8023_SUBTYPE_LINKAGGR:
+        if (tlv_len < 9) {
+            return hexdump;
+        }
         printf("\n\t    aggregation status [%s], aggregation port ID %u",
                bittok2str(lldp_aggregation_values, "none", *(tptr+4)),
                EXTRACT_32BITS(tptr+5));
@@ -674,8 +731,12 @@
     int subtype, hexdump =3D FALSE;
     u_int8_t location_format;
     u_int16_t power_val;
-    u_int8_t lci_len, ca_type, ca_len;
+    u_int lci_len;
+    u_int8_t ca_type, ca_len;
=20
+    if (tlv_len < 4) {
+        return hexdump;
+    }
     subtype =3D *(tptr+3);
=20
     printf("\n\t  %s Subtype (%u)",
@@ -684,6 +745,9 @@
=20
     switch (subtype) {
     case LLDP_PRIVATE_TIA_SUBTYPE_CAPABILITIES:
+        if (tlv_len < 7) {
+            return hexdump;
+        }
         printf("\n\t    Media capabilities [%s] (0x%04x)",
                bittok2str(lldp_tia_capabilities_values, "none",
                           EXTRACT_16BITS(tptr+4)), EXTRACT_16BITS(tptr+4));
@@ -693,6 +757,9 @@
         break;
=20
     case LLDP_PRIVATE_TIA_SUBTYPE_NETWORK_POLICY:
+        if (tlv_len < 8) {
+            return hexdump;
+        }
         printf("\n\t    Application type [%s] (0x%02x)",
                tok2str(lldp_tia_application_type_values, "none", *(tptr+4)=
),
                *(tptr+4));
@@ -707,6 +774,9 @@
         break;
=20
     case LLDP_PRIVATE_TIA_SUBTYPE_LOCAL_ID:
+        if (tlv_len < 5) {
+            return hexdump;
+        }
         location_format =3D *(tptr+4);
         printf("\n\t    Location data format %s (0x%02x)",
                tok2str(lldp_tia_location_data_format_values, "unknown", lo=
cation_format),
@@ -714,6 +784,9 @@
=20
         switch (location_format) {
         case LLDP_TIA_LOCATION_DATA_FORMAT_COORDINATE_BASED:
+            if (tlv_len < 21) {
+                return hexdump;
+            }
             printf("\n\t    Latitude resolution %u, latitude value %" PRIu=
64,
                    (*(tptr+5)>>2), lldp_extract_latlon(tptr+5));
             printf("\n\t    Longitude resolution %u, longitude value %" PR=
Iu64,
@@ -730,7 +803,16 @@
             break;
=20
         case LLDP_TIA_LOCATION_DATA_FORMAT_CIVIC_ADDRESS:
+            if (tlv_len < 6) {
+                return hexdump;
+            }
             lci_len =3D *(tptr+5);
+            if (lci_len < 3) {
+                return hexdump;
+            }
+            if (tlv_len < 7+lci_len) {
+                return hexdump;
+            }
             printf("\n\t    LCI length %u, LCI what %s (0x%02x), Country-c=
ode ",
                    lci_len,
                    tok2str(lldp_tia_location_lci_what_values, "unknown", *=
(tptr+6)),
@@ -744,6 +826,9 @@
=20
             /* Decode each civic address element */=09
             while (lci_len > 0) {
+                if (lci_len < 2) {
+                    return hexdump;
+                }
 		ca_type =3D *(tptr);
                 ca_len =3D *(tptr+1);
=20
@@ -758,6 +843,9 @@
 		if ( ca_type =3D=3D 0 || ca_len =3D=3D 0) {
                     return hexdump;
 		}
+		if (lci_len < ca_len) {
+		    return hexdump;
+		}
=20
                 safeputs((const char *)tptr, ca_len);
                 tptr +=3D ca_len;
@@ -777,6 +865,9 @@
         break;
=20
     case LLDP_PRIVATE_TIA_SUBTYPE_EXTENDED_POWER_MDI:
+        if (tlv_len < 7) {
+            return hexdump;
+        }
         printf("\n\t    Power type [%s]",
                (*(tptr+4)&0xC0>>6) ? "PD device" : "PSE device");
         printf(", Power source [%s]",
@@ -812,24 +903,196 @@
     return hexdump;
 }
=20
+/*
+ * Print DCBX Protocol fields (V 1.01).
+ */
+static int
+lldp_private_dcbx_print(const u_char *pptr, u_int len)
+{
+    int subtype, hexdump =3D FALSE;
+    u_int8_t tval;
+    u_int16_t tlv;
+    u_int32_t i, pgval, uval;
+    u_int tlen, tlv_type, tlv_len;
+    const u_char *tptr, *mptr;
+
+    if (len < 4) {
+        return hexdump;
+    }
+    subtype =3D *(pptr+3);
+
+    printf("\n\t  %s Subtype (%u)",
+           tok2str(lldp_dcbx_subtype_values, "unknown", subtype),
+           subtype);
+
+    /* by passing old version */
+    if (subtype =3D=3D LLDP_DCBX_SUBTYPE_1)
+	return TRUE;
+
+    tptr =3D pptr + 4;
+    tlen =3D len - 4;
+
+    while (tlen >=3D sizeof(tlv)) {
+
+        TCHECK2(*tptr, sizeof(tlv));
+
+        tlv =3D EXTRACT_16BITS(tptr);
+
+        tlv_type =3D LLDP_EXTRACT_TYPE(tlv);
+        tlv_len =3D LLDP_EXTRACT_LEN(tlv);
+        hexdump =3D FALSE;
+
+        tlen -=3D sizeof(tlv);
+        tptr +=3D sizeof(tlv);
+
+        /* loop check */
+        if (!tlv_type || !tlv_len) {
+            break;
+        }
+
+        TCHECK2(*tptr, tlv_len);
+        if (tlen < tlv_len) {
+            goto trunc;
+        }
+
+	/* decode every tlv */
+        switch (tlv_type) {
+        case LLDP_DCBX_CONTROL_TLV:
+            if (tlv_len < 10) {
+                goto trunc;
+            }
+	    printf("\n\t    Control - Protocol Control (type 0x%x, length %d)",
+		LLDP_DCBX_CONTROL_TLV, tlv_len);
+	    printf("\n\t      Oper_Version: %d", *tptr);
+	    printf("\n\t      Max_Version: %d", *(tptr+1));
+	    printf("\n\t      Sequence Number: %d", EXTRACT_32BITS(tptr+2));
+	    printf("\n\t      Acknowledgement Number: %d",
+					EXTRACT_32BITS(tptr+6));
+	    break;
+        case LLDP_DCBX_PRIORITY_GROUPS_TLV:
+            if (tlv_len < 17) {
+                goto trunc;
+            }
+	    printf("\n\t    Feature - Priority Group (type 0x%x, length %d)",
+		LLDP_DCBX_PRIORITY_GROUPS_TLV, tlv_len);
+	    printf("\n\t      Oper_Version: %d", *tptr);
+	    printf("\n\t      Max_Version: %d", *(tptr+1));
+	    printf("\n\t      Info block(0x%02X): ", *(tptr+2));
+	    tval =3D *(tptr+2);
+	    printf("Enable bit: %d, Willing bit: %d, Error Bit: %d",
+		(tval &  0x80) ? 1 : 0, (tval &  0x40) ? 1 : 0,
+		(tval &  0x20) ? 1 : 0);
+	    printf("\n\t      SubType: %d", *(tptr+3));
+	    printf("\n\t      Priority Allocation");
+
+	    pgval =3D EXTRACT_32BITS(tptr+4);
+	    for (i =3D 0; i <=3D 7; i++) {
+		tval =3D *(tptr+4+(i/2));
+		printf("\n\t          PgId_%d: %d",
+			i, (pgval >> (28-4*i)) & 0xF);
+	    }
+	    printf("\n\t      Priority Group Allocation");
+	    for (i =3D 0; i <=3D 7; i++)
+		printf("\n\t          Pg percentage[%d]: %d", i, *(tptr+8+i));
+	    printf("\n\t      NumTCsSupported: %d", *(tptr+8+8));
+	    break;
+        case LLDP_DCBX_PRIORITY_FLOW_CONTROL_TLV:
+            if (tlv_len < 6) {
+                goto trunc;
+            }
+	    printf("\n\t    Feature - Priority Flow Control");
+	    printf(" (type 0x%x, length %d)",
+		LLDP_DCBX_PRIORITY_FLOW_CONTROL_TLV, tlv_len);
+	    printf("\n\t      Oper_Version: %d", *tptr);
+	    printf("\n\t      Max_Version: %d", *(tptr+1));
+	    printf("\n\t      Info block(0x%02X): ", *(tptr+2));
+	    tval =3D *(tptr+2);
+	    printf("Enable bit: %d, Willing bit: %d, Error Bit: %d",
+		(tval &  0x80) ? 1 : 0, (tval &  0x40) ? 1 : 0,
+		(tval &  0x20) ? 1 : 0);
+	    printf("\n\t      SubType: %d", *(tptr+3));
+	    tval =3D *(tptr+4);
+	    printf("\n\t      PFC Config (0x%02X)", *(tptr+4));
+	    for (i =3D 0; i <=3D 7; i++)
+		printf("\n\t          Priority Bit %d: %s",
+		    i, (tval & (1 << i)) ? "Enabled" : "Disabled");
+	    printf("\n\t      NumTCPFCSupported: %d", *(tptr+5));
+	    break;
+        case LLDP_DCBX_APPLICATION_TLV:
+            if (tlv_len < 4) {
+                goto trunc;
+            }
+	    printf("\n\t    Feature - Application (type 0x%x, length %d)",
+		LLDP_DCBX_APPLICATION_TLV, tlv_len);
+	    printf("\n\t      Oper_Version: %d", *tptr);
+	    printf("\n\t      Max_Version: %d", *(tptr+1));
+	    printf("\n\t      Info block(0x%02X): ", *(tptr+2));
+	    tval =3D *(tptr+2);
+	    printf("Enable bit: %d, Willing bit: %d, Error Bit: %d",
+		(tval &  0x80) ? 1 : 0, (tval &  0x40) ? 1 : 0,
+		(tval &  0x20) ? 1 : 0);
+	    printf("\n\t      SubType: %d", *(tptr+3));
+	    tval =3D tlv_len - 4;
+	    mptr =3D tptr + 4;
+	    while (tval >=3D 6) {
+		printf("\n\t      Application Value");
+		printf("\n\t          Application Protocol ID: 0x%04x",
+			EXTRACT_16BITS(mptr));
+		uval =3D EXTRACT_24BITS(mptr+2);
+		printf("\n\t          SF (0x%x) Application Protocol ID is %s",
+			(uval >> 22),
+			(uval >> 22) ? "Socket Number" : "L2 EtherType");
+		printf("\n\t          OUI: 0x%06x", uval & 0x3fffff);
+		printf("\n\t          User Priority Map: 0x%02x", *(mptr+5));
+		tval =3D tval - 6;
+		mptr =3D mptr + 6;
+	    }
+	    break;
+	default:
+	    hexdump =3D TRUE;
+	    break;
+	}
+
+        /* do we also want to see a hex dump ? */
+        if (vflag > 1 || (vflag && hexdump)) {
+	    print_unknown_data(tptr,"\n\t    ", tlv_len);
+        }
+
+        tlen -=3D tlv_len;
+        tptr +=3D tlv_len;
+    }
+
+ trunc:
+    return hexdump;
+}
+
 static char *
-lldp_network_addr_print(const u_char *tptr) {
+lldp_network_addr_print(const u_char *tptr, u_int len) {
=20
     u_int8_t af;
     static char buf[BUFSIZE];
     const char * (*pfunc)(const u_char *);
=20
+    if (len < 1)
+      return NULL;
+    len--;
     af =3D *tptr;
     switch (af) {
     case AFNUM_INET:
+        if (len < 4)
+          return NULL;
         pfunc =3D getname;=20
         break;
 #ifdef INET6
     case AFNUM_INET6:
+        if (len < 16)
+          return NULL;
         pfunc =3D getname6;
         break;
 #endif
     case AFNUM_802:
+        if (len < 6)
+          return NULL;
         pfunc =3D etheraddr_string;
         break;
     default:
@@ -854,10 +1117,14 @@
     u_int8_t mgmt_addr_len, intf_num_subtype, oid_len;
     const u_char *tptr;
     u_int tlen;
+    char *mgmt_addr;
    =20
     tlen =3D len;
     tptr =3D pptr;
=20
+    if (tlen < 1) {
+        return 0;
+    }
     mgmt_addr_len =3D *tptr++;
     tlen--;
=20
@@ -865,9 +1132,12 @@
         return 0;
     }
=20
+    mgmt_addr =3D lldp_network_addr_print(tptr, mgmt_addr_len);
+    if (mgmt_addr =3D=3D NULL) {
+        return 0;
+    }
     printf("\n\t  Management Address length %u, %s",
-           mgmt_addr_len,
-           lldp_network_addr_print(tptr));
+           mgmt_addr_len, mgmt_addr);
     tptr +=3D mgmt_addr_len;
     tlen -=3D mgmt_addr_len;
=20
@@ -890,6 +1160,9 @@
     if (tlen) {
         oid_len =3D *tptr;
=20
+        if (tlen < oid_len) {
+            return 0;
+        }
         if (oid_len) {
             printf("\n\t  OID length %u", oid_len);
             safeputs((const char *)tptr+1, oid_len);
@@ -906,6 +1179,7 @@
     u_int16_t tlv, cap, ena_cap;
     u_int oui, tlen, hexdump, tlv_type, tlv_len;
     const u_char *tptr;
+    char *network_addr;
    =20
     tptr =3D pptr;
     tlen =3D len;
@@ -939,16 +1213,111 @@
         }
=20
         TCHECK2(*tptr, tlv_len);
+        if (tlen < tlv_len) {
+            goto trunc;
+        }
=20
         switch (tlv_type) {
+
+        case LLDP_CHASSIS_ID_TLV:
+            if (vflag) {
+                if (tlv_len < 2) {
+                    goto trunc;
+                }
+                subtype =3D *tptr;
+                printf("\n\t  Subtype %s (%u): ",
+                       tok2str(lldp_chassis_subtype_values, "Unknown", sub=
type),
+                       subtype);
+
+                switch (subtype) {
+                case LLDP_CHASSIS_MAC_ADDR_SUBTYPE:
+                    if (tlv_len < 1+6) {
+                        goto trunc;
+                    }
+                    printf("%s", etheraddr_string(tptr+1));
+                    break;
+
+                case LLDP_CHASSIS_INTF_NAME_SUBTYPE: /* fall through */
+                case LLDP_CHASSIS_LOCAL_SUBTYPE:
+                case LLDP_CHASSIS_CHASSIS_COMP_SUBTYPE:
+                case LLDP_CHASSIS_INTF_ALIAS_SUBTYPE:
+                case LLDP_CHASSIS_PORT_COMP_SUBTYPE:
+                    safeputs((const char *)tptr+1, tlv_len-1);
+                    break;
+
+                case LLDP_CHASSIS_NETWORK_ADDR_SUBTYPE:
+                    network_addr =3D lldp_network_addr_print(tptr+1, tlv_l=
en-1);
+                    if (network_addr =3D=3D NULL) {
+                        goto trunc;
+                    }
+                    printf("%s", network_addr);
+                    break;
+
+                default:
+                    hexdump =3D TRUE;
+                    break;
+                }
+            }
+            break;
+
+        case LLDP_PORT_ID_TLV:
+            if (vflag) {
+                if (tlv_len < 2) {
+                    goto trunc;
+                }
+                subtype =3D *tptr;
+                printf("\n\t  Subtype %s (%u): ",
+                       tok2str(lldp_port_subtype_values, "Unknown", subtyp=
e),
+                       subtype);
+
+                switch (subtype) {
+                case LLDP_PORT_MAC_ADDR_SUBTYPE:
+                    if (tlv_len < 1+6) {
+                        goto trunc;
+                    }
+                    printf("%s", etheraddr_string(tptr+1));
+                    break;
+
+                case LLDP_PORT_INTF_NAME_SUBTYPE: /* fall through */
+                case LLDP_PORT_LOCAL_SUBTYPE:
+                case LLDP_PORT_AGENT_CIRC_ID_SUBTYPE:
+                case LLDP_PORT_INTF_ALIAS_SUBTYPE:
+                case LLDP_PORT_PORT_COMP_SUBTYPE:
+                    safeputs((const char *)tptr+1, tlv_len-1);
+                    break;
+
+                case LLDP_PORT_NETWORK_ADDR_SUBTYPE:
+                    network_addr =3D lldp_network_addr_print(tptr+1, tlv_l=
en-1);
+                    if (network_addr =3D=3D NULL) {
+                        goto trunc;
+                    }
+                    printf("%s", network_addr);
+                    break;
+
+                default:
+                    hexdump =3D TRUE;
+                    break;
+                }
+            }
+            break;
+
         case LLDP_TTL_TLV:
             if (vflag) {
+                if (tlv_len < 2) {
+                    goto trunc;
+                }
                 printf(": TTL %us", EXTRACT_16BITS(tptr));
             }
             break;
=20
+        case LLDP_PORT_DESCR_TLV:
+            if (vflag) {
+                printf(": ");
+                safeputs((const char *)tptr, tlv_len);
+            }
+            break;
+
         case LLDP_SYSTEM_NAME_TLV:
-
             /*
              * The system name is also print in non-verbose mode
              * similar to the CDP printer.
@@ -963,13 +1332,6 @@
             }
             break;
=20
-        case LLDP_PORT_DESCR_TLV:
-            if (vflag) {
-                printf(": ");
-                safeputs((const char *)tptr, tlv_len);
-            }
-            break;
-
         case LLDP_SYSTEM_DESCR_TLV:
             if (vflag) {
                 printf("\n\t  ");
@@ -977,93 +1339,17 @@
             }
             break;
=20
-
-        case LLDP_CHASSIS_ID_TLV:
-            if (vflag) {
-                subtype =3D *tptr;
-                printf("\n\t  Subtype %s (%u): ",
-                       tok2str(lldp_chassis_subtype_values, "Unknown", sub=
type),
-                       subtype);
-
-                switch (subtype) {
-                case LLDP_CHASSIS_MAC_ADDR_SUBTYPE:
-                    printf("%s", etheraddr_string(tptr+1));
-                    break;
-
-                case LLDP_CHASSIS_INTF_NAME_SUBTYPE: /* fall through */
-                case LLDP_CHASSIS_LOCAL_SUBTYPE:
-                case LLDP_CHASSIS_CHASSIS_COMP_SUBTYPE:
-                case LLDP_CHASSIS_INTF_ALIAS_SUBTYPE:
-                case LLDP_CHASSIS_PORT_COMP_SUBTYPE:
-                    safeputs((const char *)tptr+1, tlv_len-1);
-                    break;
-
-                case LLDP_CHASSIS_NETWORK_ADDR_SUBTYPE:
-                    printf("%s", lldp_network_addr_print(tptr+1));
-                    break;
-
-                default:
-                    hexdump =3D TRUE;
-                    break;
-                }
-            }
-            break;
-
-        case LLDP_PORT_ID_TLV:
-            if (vflag) {
-                subtype =3D *tptr;
-                printf("\n\t  Subtype %s (%u): ",
-                       tok2str(lldp_port_subtype_values, "Unknown", subtyp=
e),
-                       subtype);
-
-                switch (subtype) {
-                case LLDP_PORT_MAC_ADDR_SUBTYPE:
-                    printf("%s", etheraddr_string(tptr+1));
-                    break;
-
-                case LLDP_PORT_INTF_NAME_SUBTYPE: /* fall through */
-                case LLDP_PORT_LOCAL_SUBTYPE:
-                case LLDP_PORT_AGENT_CIRC_ID_SUBTYPE:
-                case LLDP_PORT_INTF_ALIAS_SUBTYPE:
-                case LLDP_PORT_PORT_COMP_SUBTYPE:
-                    safeputs((const char *)tptr+1, tlv_len-1);
-                    break;
-
-                case LLDP_PORT_NETWORK_ADDR_SUBTYPE:
-                    printf("%s", lldp_network_addr_print(tptr+1));
-                    break;
-
-                default:
-                    hexdump =3D TRUE;
-                    break;
-                }
-            }
-            break;
-
-        case LLDP_PRIVATE_TLV:
-            if (vflag) {
-                oui =3D EXTRACT_24BITS(tptr);
-                printf(": OUI %s (0x%06x)", tok2str(oui_values, "Unknown",=
 oui), oui);
-               =20
-                switch (oui) {
-                case OUI_IEEE_8021_PRIVATE:
-                    hexdump =3D lldp_private_8021_print(tptr);
-                    break;
-                case OUI_IEEE_8023_PRIVATE:
-                    hexdump =3D lldp_private_8023_print(tptr);
-                    break;
-                case OUI_TIA:
-                    hexdump =3D lldp_private_tia_print(tptr, tlv_len);
-                    break;
-                default:
-                    hexdump =3D TRUE;
-                    break;
-                }
-            }
-            break;
-
         case LLDP_SYSTEM_CAP_TLV:
             if (vflag) {
+                /*
+                 * XXX - IEEE Std 802.1AB-2009 says the first octet
+                 * if a chassis ID subtype, with the system
+                 * capabilities and enabled capabilities following
+                 * it.
+                 */
+                if (tlv_len < 4) {
+                    goto trunc;
+                }
                 cap =3D EXTRACT_16BITS(tptr);
                 ena_cap =3D EXTRACT_16BITS(tptr+2);
                 printf("\n\t  System  Capabilities [%s] (0x%04x)",
@@ -1075,12 +1361,40 @@
=20
         case LLDP_MGMT_ADDR_TLV:
             if (vflag) {
-                if (!lldp_mgmt_addr_tlv_print(tptr, tlen)) {
+                if (!lldp_mgmt_addr_tlv_print(tptr, tlv_len)) {
                     goto trunc;
                 }
             }
             break;
=20
+        case LLDP_PRIVATE_TLV:
+            if (vflag) {
+                if (tlv_len < 3) {
+                    goto trunc;
+                }
+                oui =3D EXTRACT_24BITS(tptr);
+                printf(": OUI %s (0x%06x)", tok2str(oui_values, "Unknown",=
 oui), oui);
+               =20
+                switch (oui) {
+                case OUI_IEEE_8021_PRIVATE:
+                    hexdump =3D lldp_private_8021_print(tptr, tlv_len);
+                    break;
+                case OUI_IEEE_8023_PRIVATE:
+                    hexdump =3D lldp_private_8023_print(tptr, tlv_len);
+                    break;
+                case OUI_TIA:
+                    hexdump =3D lldp_private_tia_print(tptr, tlv_len);
+                    break;
+                case OUI_DCBX:
+                    hexdump =3D lldp_private_dcbx_print(tptr, tlv_len);
+                    break;
+                default:
+                    hexdump =3D TRUE;
+                    break;
+                }
+            }
+            break;
+
         default:
             hexdump =3D TRUE;
             break;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-mobile.c
--- a/head/contrib/tcpdump/print-mobile.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-mobile.c	Wed Jul 25 16:21:35 2012 +0300
@@ -72,6 +72,7 @@
 {
 	const u_char *cp =3D bp +8 ;
 	const struct mobile_ip *mob;
+	struct cksum_vec vec[1];
 	u_short proto,crc;
 	u_char osp =3D0;			/* old source address present */
=20
@@ -101,7 +102,9 @@
 		(void)printf("> %s ",ipaddr_string(&mob->odst));
 		(void)printf("(oproto=3D%d)",proto>>8);
 	}
-	if (in_cksum((u_short *)mob, osp ? 12 : 8, 0)!=3D0) {
+	vec[0].ptr =3D (const u_int8_t *)(void *)mob;
+	vec[0].len =3D osp ? 12 : 8;
+	if (in_cksum(vec, 1)!=3D0) {
 		(void)printf(" (bad checksum %d)",crc);
 	}
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-mpls.c
--- a/head/contrib/tcpdump/print-mpls.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-mpls.c	Wed Jul 25 16:21:35 2012 +0300
@@ -54,6 +54,13 @@
 /*15*/	"rsvd",
 };
=20
+enum mpls_packet_type {
+	PT_UNKNOWN,
+	PT_IPV4,
+	PT_IPV6,
+	PT_OSI
+};
+
 /*
  * RFC3032: MPLS label stack encoding
  */
@@ -62,7 +69,8 @@
 {
 	const u_char *p;
 	u_int32_t label_entry;
-        u_int16_t label_stack_depth =3D 0;
+	u_int16_t label_stack_depth =3D 0;
+	enum mpls_packet_type pt =3D PT_UNKNOWN;
=20
 	p =3D bp;
 	printf("MPLS");
@@ -70,9 +78,9 @@
 		TCHECK2(*p, sizeof(label_entry));
 		label_entry =3D EXTRACT_32BITS(p);
 		printf("%s(label %u",
-                       label_stack_depth ? "\n\t" : " ",
-                       MPLS_LABEL(label_entry));
-                label_stack_depth++;
+		       (label_stack_depth && vflag) ? "\n\t" : " ",
+       		       MPLS_LABEL(label_entry));
+		label_stack_depth++;
 		if (vflag &&
 		    MPLS_LABEL(label_entry) < sizeof(mpls_labelname) / sizeof(mpls_label=
name[0]))
 			printf(" (%s)", mpls_labelname[MPLS_LABEL(label_entry)]);
@@ -84,97 +92,127 @@
 		p +=3D sizeof(label_entry);
 	} while (!MPLS_STACK(label_entry));
=20
+	/*
+	 * Try to figure out the packet type.
+	 */
 	switch (MPLS_LABEL(label_entry)) {
+
 	case 0:	/* IPv4 explicit NULL label */
-        case 3:	/* IPv4 implicit NULL label */
-                if (vflag>0) {
-                        printf("\n\t");
-                        ip_print(gndo, p, length - (p - bp));
-                }
-                else printf(", IP, length: %u",length);
+	case 3:	/* IPv4 implicit NULL label */
+		pt =3D PT_IPV4;
 		break;
-#ifdef INET6
+
 	case 2:	/* IPv6 explicit NULL label */
-                if (vflag>0) {
-                        printf("\n\t");
-                        ip6_print(p, length - (p - bp));
-                }
-                else printf(", IPv6, length: %u",length);
+		pt =3D PT_IPV6;
 		break;
-#endif
+
 	default:
 		/*
 		 * Generally there's no indication of protocol in MPLS label
-		 * encoding, however draft-hsmit-isis-aal5mux-00.txt describes
-                 * a technique that looks at the first payload byte if the=
 BOS (bottom of stack)
-                 * bit is set and tries to determine the network layer pro=
tocol
-                 * 0x45-0x4f is IPv4
-                 * 0x60-0x6f is IPv6
-                 * 0x81-0x83 is OSI (CLNP,ES-IS,IS-IS)
-                 * this technique is sometimes known as NULL encapsulation
-                 * and decoding is particularly useful for control-plane t=
raffic [BGP]
-                 * which cisco by default sends MPLS encapsulated
+		 * encoding.
+		 *
+		 * However, draft-hsmit-isis-aal5mux-00.txt describes a
+		 * technique for encapsulating IS-IS and IP traffic on the
+		 * same ATM virtual circuit; you look at the first payload
+		 * byte to determine the network layer protocol, based on
+		 * the fact that
+		 *
+		 *	1) the first byte of an IP header is 0x45-0x4f
+		 *	   for IPv4 and 0x60-0x6f for IPv6;
+		 *
+		 *	2) the first byte of an OSI CLNP packet is 0x81,
+		 *	   the first byte of an OSI ES-IS packet is 0x82,
+		 *	   and the first byte of an OSI IS-IS packet is
+		 *	   0x83;
+		 *
+		 * so the network layer protocol can be inferred from the
+		 * first byte of the packet, if the protocol is one of the
+		 * ones listed above.
+		 *
+		 * Cisco sends control-plane traffic MPLS-encapsulated in
+		 * this fashion.
 		 */
+		switch(*p) {
=20
-                if (MPLS_STACK(label_entry)) { /* only do this if the stac=
k bit is set */
-                    switch(*p) {
-                    case 0x45:
-                    case 0x46:
-                    case 0x47:
-                    case 0x48:
-                    case 0x49:
-                    case 0x4a:
-                    case 0x4b:
-                    case 0x4c:
-                    case 0x4d:
-                    case 0x4e:
-                    case 0x4f:
-		        if (vflag>0) {
-                            printf("\n\t");
-                            ip_print(gndo, p, length - (p - bp));
-			    }
-                        else printf(", IP, length: %u",length);
-                        break;
+		case 0x45:
+		case 0x46:
+		case 0x47:
+		case 0x48:
+		case 0x49:
+		case 0x4a:
+		case 0x4b:
+		case 0x4c:
+		case 0x4d:
+		case 0x4e:
+		case 0x4f:
+			pt =3D PT_IPV4;
+			break;
+			=09
+		case 0x60:
+		case 0x61:
+		case 0x62:
+		case 0x63:
+		case 0x64:
+		case 0x65:
+		case 0x66:
+		case 0x67:
+		case 0x68:
+		case 0x69:
+		case 0x6a:
+		case 0x6b:
+		case 0x6c:
+		case 0x6d:
+		case 0x6e:
+		case 0x6f:
+			pt =3D PT_IPV6;
+			break;
+
+		case 0x81:
+		case 0x82:
+		case 0x83:
+			pt =3D PT_OSI;
+			break;
+
+		default:
+			/* ok bail out - we did not figure out what it is*/
+			break;
+		}
+	}
+
+	/*
+	 * Print the payload.
+	 */
+	if (pt =3D=3D PT_UNKNOWN) {
+		if (!suppress_default_print)
+			default_print(p, length - (p - bp));
+		return;
+	}
+	if (vflag)
+		printf("\n\t");
+	else
+		printf(" ");
+	switch (pt) {
+
+	case PT_IPV4:
+		ip_print(gndo, p, length - (p - bp));
+		break;
+
+	case PT_IPV6:
 #ifdef INET6
-                    case 0x60:
-                    case 0x61:
-                    case 0x62:
-                    case 0x63:
-                    case 0x64:
-                    case 0x65:
-                    case 0x66:
-                    case 0x67:
-                    case 0x68:
-                    case 0x69:
-                    case 0x6a:
-                    case 0x6b:
-                    case 0x6c:
-                    case 0x6d:
-                    case 0x6e:
-                    case 0x6f:
-		        if (vflag>0) {
-                            printf("\n\t");
-                            ip6_print(p, length - (p - bp));
-                            }
-			else printf(", IPv6, length: %u",length);
-                        break;
+		ip6_print(gndo, p, length - (p - bp));
+#else
+		printf("IPv6, length: %u", length);
 #endif
-                    case 0x81:
-                    case 0x82:
-                    case 0x83:
-		        if (vflag>0) {
-                            printf("\n\t");
-                            isoclns_print(p, length - (p - bp), length - (=
p - bp));
-			    }
-			else printf(", OSI, length: %u",length);
-                        break;
-                    default:
-                        /* ok bail out - we did not figure out what it is*/
-                        break;
-                    }
-                }
-                return;
+		break;
+
+	case PT_OSI:
+		isoclns_print(p, length - (p - bp), length - (p - bp));
+		break;
+
+	default:
+		break;
 	}
+	return;
=20
 trunc:
 	printf("[|MPLS]");
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-null.c
--- a/head/contrib/tcpdump/print-null.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-null.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-null.c 235530 2012-05-17 05:11:57Z=
 delphij $
  */
=20
 #ifndef lint
@@ -127,7 +127,7 @@
 	case BSD_AFNUM_INET6_BSD:
 	case BSD_AFNUM_INET6_FREEBSD:
 	case BSD_AFNUM_INET6_DARWIN:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ospf.c
--- a/head/contrib/tcpdump/print-ospf.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ospf.c	Wed Jul 25 16:21:35 2012 +0300
@@ -197,7 +197,7 @@
 static int ospf_decode_lls(const struct ospfhdr *, register u_int);
=20
 int
-ospf_print_grace_lsa (u_int8_t *tptr, u_int ls_length) {
+ospf_print_grace_lsa (const u_int8_t *tptr, u_int ls_length) {
=20
     u_int tlv_type, tlv_length;
=20
@@ -279,7 +279,7 @@
 }
=20
 int
-ospf_print_te_lsa (u_int8_t *tptr, u_int ls_length) {
+ospf_print_te_lsa (const u_int8_t *tptr, u_int ls_length) {
=20
     u_int tlv_type, tlv_length, subtlv_type, subtlv_length;
     u_int priority_level, te_class, count_srlg;
@@ -1028,7 +1028,7 @@
                 lsap =3D op->ospf_lsu.lsu_lsa;
                 TCHECK(op->ospf_lsu.lsu_count);
                 lsa_count_max =3D EXTRACT_32BITS(&op->ospf_lsu.lsu_count);
-                printf(", %d LSA%s",lsa_count_max, lsa_count_max > 1 ? "s"=
 : "");
+                printf(", %d LSA%s",lsa_count_max, PLURAL_SUFFIX(lsa_count=
_max));
                 for (lsa_count=3D1;lsa_count <=3D lsa_count_max;lsa_count+=
+) {
                     printf("\n\t  LSA #%u",lsa_count);
                         lsap =3D (const struct lsa *)ospf_print_lsa(lsap);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-pflog.c
--- a/head/contrib/tcpdump/print-pflog.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-pflog.c	Wed Jul 25 16:21:35 2012 +0300
@@ -162,7 +162,7 @@
 #if OPENBSD_AF_INET6 !=3D AF_INET6
 		case OPENBSD_AF_INET6:		/* XXX: read pcap files */
 #endif
-			ip6_print(p, length);
+			ip6_print(gndo, p, length);
 			break;
 #endif
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-pgm.c
--- a/head/contrib/tcpdump/print-pgm.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-pgm.c	Wed Jul 25 16:21:35 2012 +0300
@@ -72,6 +72,12 @@
     /* ... options */
 };
=20
+struct pgm_ack {
+    u_int32_t	pgma_rx_max_seq;
+    u_int32_t	pgma_bitmap;
+    /* ... options */
+};
+
 struct pgm_poll {
     u_int32_t	pgmp_seq;
     u_int16_t	pgmp_round;
@@ -133,6 +139,9 @@
 #define PGM_OPT_RST             0x0F
 #define PGM_OPT_CR		0x10
 #define PGM_OPT_CRQST		0x11
+
+#define PGM_OPT_PGMCC_DATA	0x12
+#define PGM_OPT_PGMCC_FEEDBACK	0x13
     =20
 #define PGM_OPT_MASK		0x7f
=20
@@ -446,6 +455,17 @@
 	    break;
 	}
=20
+	case PGM_ACK: {
+	    struct pgm_ack *ack;
+
+	    ack =3D (struct pgm_ack *)(pgm + 1);
+	    TCHECK(*ack);
+	    (void)printf("ACK seq %u",
+			 EXTRACT_32BITS(&ack->pgma_rx_max_seq));
+	    bp =3D (u_char *) (ack + 1);
+	    break;
+	}
+
 	case PGM_SPMR:
 	    (void)printf("SPMR");
 	    break;
@@ -736,6 +756,74 @@
 		    opts_len -=3D 4;
 		    break;
=20
+		case PGM_OPT_PGMCC_DATA:
+		    flags1 =3D *bp++;
+		    flags2 =3D *bp++;
+		    offset =3D EXTRACT_32BITS(bp);
+		    bp +=3D sizeof(u_int32_t);
+		    switch (EXTRACT_16BITS(bp)) {
+		    case AFI_IP:
+			addr_size =3D sizeof(struct in_addr);
+			nla_af =3D AF_INET;
+			break;
+#ifdef INET6
+		    case AFI_IP6:
+			addr_size =3D sizeof(struct in6_addr);
+			nla_af =3D AF_INET6;
+			break;
+#endif
+		    default:
+			goto trunc;
+			break;
+		    }
+		    bp +=3D (2 * sizeof(u_int16_t));
+		    if (opt_len !=3D 12 + addr_size) {
+			(void)printf("[Bad OPT_PGMCC_DATA option, length %u !=3D 12 + address s=
ize]", opt_len);
+			return;
+		    }
+		    TCHECK2(*bp, addr_size);
+		    nla =3D bp;
+		    bp +=3D addr_size;
+
+		    inet_ntop(nla_af, nla, nla_buf, sizeof(nla_buf));
+		    (void)printf(" PGMCC DATA %u %s", offset, (char*)nla);
+		    opts_len -=3D 16;
+		    break;
+
+		case PGM_OPT_PGMCC_FEEDBACK:
+		    flags1 =3D *bp++;
+		    flags2 =3D *bp++;
+		    offset =3D EXTRACT_32BITS(bp);
+		    bp +=3D sizeof(u_int32_t);
+		    switch (EXTRACT_16BITS(bp)) {
+		    case AFI_IP:
+			addr_size =3D sizeof(struct in_addr);
+			nla_af =3D AF_INET;
+			break;
+#ifdef INET6
+		    case AFI_IP6:
+			addr_size =3D sizeof(struct in6_addr);
+			nla_af =3D AF_INET6;
+			break;
+#endif
+		    default:
+			goto trunc;
+			break;
+		    }
+		    bp +=3D (2 * sizeof(u_int16_t));
+		    if (opt_len !=3D 12 + addr_size) {
+			(void)printf("[Bad OPT_PGMCC_FEEDBACK option, length %u !=3D 12 + addre=
ss size]", opt_len);
+			return;
+		    }
+		    TCHECK2(*bp, addr_size);
+		    nla =3D bp;
+		    bp +=3D addr_size;
+
+		    inet_ntop(nla_af, nla, nla_buf, sizeof(nla_buf));
+		    (void)printf(" PGMCC FEEDBACK %u %s", offset, (char*)nla);
+		    opts_len -=3D 16;
+		    break;
+
 		default:
 		    (void)printf(" OPT_%02X [%d] ", opt_type, opt_len);
 		    bp +=3D opt_len;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-pim.c
--- a/head/contrib/tcpdump/print-pim.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-pim.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-pim.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -31,7 +31,15 @@
 #endif
=20
 #include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
 #include "interface.h"
+#include "addrtoname.h"
+#include "extract.h"
+
+#include "ip.h"
=20
 #define PIMV2_TYPE_HELLO         0
 #define PIMV2_TYPE_REGISTER      1
@@ -110,16 +118,6 @@
 	u_short	pim_cksum;	/* IP style check sum */
 };
=20
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "extract.h"
-
-#include "ip.h"
-
 static void pimv2_print(register const u_char *bp, register u_int len, u_i=
nt cksum);
=20
 static void
@@ -401,8 +399,12 @@
 			TCHECK2(bp[0], 6);
 			(void)printf("%c%s%s/%d", s, bp[0] & 1 ? "!" : "",
 			    ipaddr_string(&bp[2]), bp[1]);
-			if (bp[0] & 0xfe)
-				(void)printf("[rsvd=3D0x%02x]", bp[0] & 0xfe);
+			if (bp[0] & 0x02) {
+			    (void)printf(" bidir");
+			}
+			if (bp[0] & 0xfc) {
+			    (void)printf("[rsvd=3D0x%02x]", bp[0] & 0xfc);
+			}
 			s =3D ',';
 			bp +=3D 6; len -=3D 6;
 		}
@@ -770,7 +772,7 @@
 			break;
 #ifdef INET6
 		case 6:	/* IPv6 */
-			ip6_print(bp, len);
+			ip6_print(gndo, bp, len);
 			break;
 #endif
                 default:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ppi.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/print-ppi.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,104 @@
+/*
+ * Oracle
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <pcap.h>
+
+#include "netdissect.h"
+#include "interface.h"
+#include "extract.h"
+#include "ppi.h"
+
+#ifdef DLT_PPI
+
+static inline void
+ppi_header_print(struct netdissect_options *ndo, const u_char *bp, u_int l=
ength)
+{
+	const ppi_header_t *hdr;
+	u_int32_t dlt;
+	u_int16_t len;
+
+	hdr =3D (const ppi_header_t *)bp;
+
+	len =3D EXTRACT_16BITS(&hdr->ppi_len);
+	dlt =3D EXTRACT_32BITS(&hdr->ppi_dlt);
+
+	if (!ndo->ndo_qflag) {
+		ND_PRINT((ndo,", V.%d DLT %s (%d) len %d", hdr->ppi_ver,
+			  pcap_datalink_val_to_name(dlt), dlt,
+                          len));
+        } else {
+		ND_PRINT((ndo,", %s", pcap_datalink_val_to_name(dlt)));
+        }
+
+	ND_PRINT((ndo, ", length %u: ", length));
+}
+
+static void
+ppi_print(struct netdissect_options *ndo,
+               const struct pcap_pkthdr *h, const u_char *p)
+{
+	if_ndo_printer ndo_printer;
+        if_printer printer;
+	ppi_header_t *hdr;
+	u_int caplen =3D h->caplen;
+	u_int length =3D h->len;
+	u_int32_t dlt;
+
+	if (caplen < sizeof(ppi_header_t)) {
+		ND_PRINT((ndo, "[|ppi]"));
+		return;
+	}
+	hdr =3D (ppi_header_t *)p;
+	dlt =3D EXTRACT_32BITS(&hdr->ppi_dlt);
+
+	if (ndo->ndo_eflag)
+		ppi_header_print(ndo, p, length);
+
+	length -=3D sizeof(ppi_header_t);
+	caplen -=3D sizeof(ppi_header_t);
+	p +=3D sizeof(ppi_header_t);
+
+	if ((printer =3D lookup_printer(dlt)) !=3D NULL) {
+		printer(h, p);
+	} else if ((ndo_printer =3D lookup_ndo_printer(dlt)) !=3D NULL) {
+		ndo_printer(ndo, h, p);
+	} else {
+		if (!ndo->ndo_eflag)
+			ppi_header_print(ndo, (u_char *)hdr,
+					length + sizeof(ppi_header_t));
+
+		if (!ndo->ndo_suppress_default_print)
+			ndo->ndo_default_print(ndo, p, caplen);
+	}
+}
+
+/*
+ * This is the top level routine of the printer.  'p' points
+ * to the ether header of the packet, 'h->ts' is the timestamp,
+ * 'h->len' is the length of the packet off the wire, and 'h->caplen'
+ * is the number of bytes actually captured.
+ */
+u_int
+ppi_if_print(struct netdissect_options *ndo,
+               const struct pcap_pkthdr *h, const u_char *p)
+{
+	ppi_print(ndo, h, p);
+
+	return (sizeof(ppi_header_t));
+}
+
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 8
+ * End:
+ */
+
+#endif /* DLT_PPI */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-ppp.c
--- a/head/contrib/tcpdump/print-ppp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-ppp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -21,7 +21,7 @@
  * Extensively modified by Motonori Shindo (mshindo at mshindo.net) for more
  * complete PPP support.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-ppp.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 /*
@@ -1305,11 +1305,11 @@
 		goto cleanup;
 #ifdef INET6
         case PPP_IPV6:
-            ip6_print(b+1, t - b - 1);
-            goto cleanup;
+		ip6_print(gndo, b+1, t - b - 1);
+		goto cleanup;
 #endif
         default: /* no luck - try next guess */
-            break;
+		break;
         }
=20
         proto =3D EXTRACT_16BITS(b); /* next guess - load two octets */
@@ -1370,7 +1370,7 @@
 #ifdef INET6
 	case ETHERTYPE_IPV6:	/*XXX*/
 	case PPP_IPV6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif
 	case ETHERTYPE_IPX:	/*XXX*/
@@ -1677,11 +1677,11 @@
 			p +=3D hdrlength;
 			switch (ptype) {
 			case PPP_IP:
-				ip_print(p, length);
+				ip_print(gndo, p, length);
 				break;
 #ifdef INET6
 			case PPP_IPV6:
-				ip6_print(p, length);
+				ip6_print(gndo, p, length);
 				break;
 #endif
 			case PPP_MPLS_UCAST:
@@ -1696,11 +1696,11 @@
 			p +=3D hdrlength;
 			switch (ptype) {
 			case PPP_IP:
-				ip_print(p, length);
+				ip_print(gndo, p, length);
 				break;
 #ifdef INET6
 			case PPP_IPV6:
-				ip6_print(p, length);
+				ip6_print(gndo, p, length);
 				break;
 #endif
 			case PPP_MPLS_UCAST:
@@ -1732,12 +1732,12 @@
 		break;
 #ifdef INET6
 	case PPP_IPV6:
-		ip6_print(p, length);
+		ip6_print(gndo, p, length);
 		break;
 #endif
         case PPP_MPLS_UCAST:
         case PPP_MPLS_MCAST:
-                mpls_print(p, length);
+                mpls_print(gndo, p, length);
                 break;
 	default:
 		printf("%s ", tok2str(ppptype2str, "unknown PPP protocol (0x%04x)", ptyp=
e));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-rpki-rtr.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/head/contrib/tcpdump/print-rpki-rtr.c	Wed Jul 25 16:21:35 2012 +0300
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 1998-2011 The TCPDUMP project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code
+ * distributions retain the above copyright notice and this paragraph
+ * in its entirety, and (2) distributions including binary code include
+ * the above copyright notice and this paragraph in its entirety in
+ * the documentation or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND
+ * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+ * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ *
+ * support for the The RPKI/Router Protocol Protocol as per draft-ietf-sid=
r-rpki-rtr-12
+ *
+ * Original code by Hannes Gredler (hannes at juniper.net)
+ */
+
+#ifndef lint
+static const char rcsid[] _U_ =3D
+"@(#) $Header: /tcpdump/master/tcpdump/print-rpki_rtr.c,v 1.10 2008-03-20 =
09:30:56 hannes Exp $";
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <tcpdump-stdinc.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "interface.h"
+#include "extract.h"
+#include "addrtoname.h"
+
+/*
+ * RPKI/Router PDU header
+ *
+ * Here's what the PDU header looks like.
+ * The length does include the version and length fields.
+ */
+typedef struct rpki_rtr_pdu_ {
+    u_char version;		/* Version number */
+    u_char pdu_type;		/* PDU type */
+    union {
+	u_char cache_nonce[2];	/* Cache Nonce */
+	u_char error_code[2];	/* Error code */
+    } u;
+    u_char length[4];
+} rpki_rtr_pdu;
+#define RPKI_RTR_PDU_OVERHEAD (offsetof(rpki_rtr_pdu, rpki_rtr_pdu_msg))
+
+/*
+ * IPv4 Prefix PDU.
+ */
+typedef struct rpki_rtr_pdu_ipv4_prefix_ {
+    rpki_rtr_pdu pdu_header;
+    u_char flags;
+    u_char prefix_length;
+    u_char max_length;
+    u_char zero;
+    u_char prefix[4];
+    u_char as[4];
+} rpki_rtr_pdu_ipv4_prefix;
+
+/*
+ * IPv6 Prefix PDU.
+ */
+typedef struct rpki_rtr_pdu_ipv6_prefix_ {
+    rpki_rtr_pdu pdu_header;
+    u_char flags;
+    u_char prefix_length;
+    u_char max_length;
+    u_char zero;
+    u_char prefix[16];
+    u_char as[4];
+} rpki_rtr_pdu_ipv6_prefix;
+
+/*
+ * Error report PDU.
+ */
+typedef struct rpki_rtr_pdu_error_report_ {
+    rpki_rtr_pdu pdu_header;
+    u_char encapsulated_pdu_length[4]; /* Encapsulated PDU length */
+} rpki_rtr_pdu_error_report;
+
+/*
+ * PDU type codes
+ */
+#define RPKI_RTR_SERIAL_NOTIFY_PDU	0
+#define RPKI_RTR_SERIAL_QUERY_PDU	1
+#define RPKI_RTR_RESET_QUERY_PDU	2
+#define RPKI_RTR_CACHE_RESPONSE_PDU	3
+#define RPKI_RTR_IPV4_PREFIX_PDU	4
+#define RPKI_RTR_IPV6_PREFIX_PDU	6
+#define RPKI_RTR_END_OF_DATA_PDU	7
+#define RPKI_RTR_CACHE_RESET_PDU	8
+#define RPKI_RTR_ERROR_REPORT_PDU	10
+
+static const struct tok rpki_rtr_pdu_values[] =3D {
+    { RPKI_RTR_SERIAL_NOTIFY_PDU, "Serial Notify" },
+    { RPKI_RTR_SERIAL_QUERY_PDU, "Serial Query" },
+    { RPKI_RTR_RESET_QUERY_PDU, "Reset Query" },
+    { RPKI_RTR_CACHE_RESPONSE_PDU, "Cache Response" },
+    { RPKI_RTR_IPV4_PREFIX_PDU, "IPV4 Prefix" },
+    { RPKI_RTR_IPV6_PREFIX_PDU, "IPV6 Prefix" },
+    { RPKI_RTR_END_OF_DATA_PDU, "End of Data" },
+    { RPKI_RTR_CACHE_RESET_PDU, "Cache Reset" },
+    { RPKI_RTR_ERROR_REPORT_PDU, "Error Report" },
+    { 0, NULL}
+};
+
+static const struct tok rpki_rtr_error_codes[] =3D {
+    { 0, "Corrupt Data" },
+    { 1, "Internal Error" },
+    { 2, "No Data Available" },
+    { 3, "Invalid Request" },
+    { 4, "Unsupported Protocol Version" },
+    { 5, "Unsupported PDU Type" },
+    { 6, "Withdrawal of Unknown Record" },
+    { 7, "Duplicate Announcement Received" },
+    { 0, NULL}
+};
+
+/*
+ * Build a identation string for a given identation level.
+ * XXX this should be really in util.c
+ */
+static char *
+indent_string (u_int indent)
+{
+    static char buf[20];
+    u_int idx;
+
+    idx =3D 0;
+    buf[idx] =3D '\0';
+
+    /*
+     * Does the static buffer fit ?
+     */
+    if (sizeof(buf) < ((indent/8) + (indent %8) + 2)) {
+	return buf;
+    }
+
+    /*
+     * Heading newline.
+     */
+    buf[idx] =3D '\n';
+    idx++;
+
+    while (indent >=3D 8) {
+	buf[idx] =3D '\t';
+	idx++;
+	indent -=3D 8;
+    }
+
+    while (indent > 0) {
+	buf[idx] =3D ' ';
+	idx++;
+	indent--;
+    }
+
+    /*
+     * Trailing zero.
+     */
+    buf[idx] =3D '\0';
+   =20
+    return buf;
+}
+
+/*
+ * Print a single PDU.
+ */
+static void
+rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
+{
+    const rpki_rtr_pdu *pdu_header;
+    u_int pdu_type, pdu_len, hexdump;
+    const u_char *msg;
+
+    pdu_header =3D (rpki_rtr_pdu *)tptr;
+    pdu_type =3D pdu_header->pdu_type;
+    pdu_len =3D EXTRACT_32BITS(pdu_header->length);
+    hexdump =3D FALSE;
+
+    printf("%sRPKI-RTRv%u, %s PDU (%u), length: %u",
+	   indent_string(8),
+	   pdu_header->version,
+	   tok2str(rpki_rtr_pdu_values, "Unknown", pdu_type),
+	   pdu_type, pdu_len);
+
+    switch (pdu_type) {
+
+	/*
+	 * The following PDUs share the message format.
+	 */
+    case RPKI_RTR_SERIAL_NOTIFY_PDU:
+    case RPKI_RTR_SERIAL_QUERY_PDU:
+    case RPKI_RTR_END_OF_DATA_PDU:
+        msg =3D (const u_char *)(pdu_header + 1);
+	printf("%sCache-Nonce: 0x%04x, Serial: %u",
+	       indent_string(indent+2),
+	       EXTRACT_16BITS(pdu_header->u.cache_nonce),
+	       EXTRACT_32BITS(msg));
+	break;
+
+	/*
+	 * The following PDUs share the message format.
+	 */
+    case RPKI_RTR_RESET_QUERY_PDU:
+    case RPKI_RTR_CACHE_RESET_PDU:
+
+	/*
+	 * Zero payload PDUs.
+	 */
+	break;
+
+    case RPKI_RTR_CACHE_RESPONSE_PDU:
+	printf("%sCache-Nonce: 0x%04x",
+	       indent_string(indent+2),
+	       EXTRACT_16BITS(pdu_header->u.cache_nonce));
+	break;
+
+    case RPKI_RTR_IPV4_PREFIX_PDU:
+	{
+	    rpki_rtr_pdu_ipv4_prefix *pdu;
+
+	    pdu =3D (rpki_rtr_pdu_ipv4_prefix *)tptr;
+	    printf("%sIPv4 Prefix %s/%u-%u, origin-as %u, flags 0x%02x",
+		   indent_string(indent+2),
+		   ipaddr_string(pdu->prefix),
+		   pdu->prefix_length, pdu->max_length,
+		   EXTRACT_32BITS(pdu->as), pdu->flags);
+	}
+	break;
+
+#ifdef INET6
+    case RPKI_RTR_IPV6_PREFIX_PDU:
+	{
+	    rpki_rtr_pdu_ipv6_prefix *pdu;
+
+	    pdu =3D (rpki_rtr_pdu_ipv6_prefix *)tptr;
+	    printf("%sIPv6 Prefix %s/%u-%u, origin-as %u, flags 0x%02x",
+		   indent_string(indent+2),
+		   ip6addr_string(pdu->prefix),
+		   pdu->prefix_length, pdu->max_length,
+		   EXTRACT_32BITS(pdu->as), pdu->flags);
+	}
+	break;
+#endif
+
+    case RPKI_RTR_ERROR_REPORT_PDU:
+	{
+	    rpki_rtr_pdu_error_report *pdu;
+	    u_int encapsulated_pdu_length, text_length, tlen, error_code;
+	    u_char buf[80];
+
+	    pdu =3D (rpki_rtr_pdu_error_report *)tptr;
+	    encapsulated_pdu_length =3D EXTRACT_32BITS(pdu->encapsulated_pdu_leng=
th);
+	    tlen =3D pdu_len;
+
+	    error_code =3D EXTRACT_16BITS(pdu->pdu_header.u.error_code);
+	    printf("%sError code: %s (%u), Encapsulated PDU length: %u",
+		   indent_string(indent+2),
+		   tok2str(rpki_rtr_error_codes, "Unknown", error_code),
+		   error_code, encapsulated_pdu_length);
+
+	    tptr +=3D sizeof(*pdu);
+	    tlen -=3D sizeof(*pdu);
+
+	    /*
+	     * Recurse if there is an encapsulated PDU.
+	     */
+	    if (encapsulated_pdu_length &&
+		(encapsulated_pdu_length <=3D tlen)) {
+		printf("%s-----encapsulated PDU-----", indent_string(indent+4));
+		rpki_rtr_pdu_print(tptr, indent+2);
+	    }
+
+	    tptr +=3D encapsulated_pdu_length;
+	    tlen -=3D encapsulated_pdu_length;
+
+	    /*
+	     * Extract, trail-zero and print the Error message.
+	     */=20
+	    text_length =3D 0;
+	    if (tlen > 4) {
+		text_length =3D EXTRACT_32BITS(tptr);
+		tptr +=3D 4;
+		tlen -=3D 4;
+	    }
+	    if (text_length && (text_length <=3D tlen )) {
+		memcpy(buf, tptr, MIN(sizeof(buf)-1, text_length));
+		buf[text_length] =3D '\0';
+		printf("%sError text: %s", indent_string(indent+2), buf);
+	    }
+	}
+	break;
+
+    default:
+
+	/*
+	 * Unknown data, please hexdump.
+	 */=20
+	hexdump =3D TRUE;
+    }
+
+    /* do we also want to see a hex dump ? */
+    if (vflag > 1 || (vflag && hexdump)) {
+	print_unknown_data(tptr,"\n\t  ", pdu_len);
+    }
+}
+
+void
+rpki_rtr_print(register const u_char *pptr, register u_int len) {
+
+    u_int tlen, pdu_type, pdu_len;
+    const u_char *tptr;
+    const rpki_rtr_pdu *pdu_header;
+   =20
+    tptr =3D pptr;
+    tlen =3D len;
+
+    if (!vflag) {
+	printf(", RPKI-RTR");
+	return;
+    }
+
+    while (tlen >=3D sizeof(rpki_rtr_pdu)) {
+
+        TCHECK2(*tptr, sizeof(rpki_rtr_pdu));
+
+	pdu_header =3D (rpki_rtr_pdu *)tptr;
+        pdu_type =3D pdu_header->pdu_type;
+        pdu_len =3D EXTRACT_32BITS(pdu_header->length);
+
+        /* infinite loop check */
+        if (!pdu_type || !pdu_len) {
+            break;
+        }
+
+        TCHECK2(*tptr, pdu_len);
+        if (tlen < pdu_len) {
+            goto trunc;
+        }
+
+	/*
+	 * Print the PDU.
+	 */
+	rpki_rtr_pdu_print(tptr, 8);
+
+        tlen -=3D pdu_len;
+        tptr +=3D pdu_len;
+    }
+    return;
+ trunc:
+    printf("\n\t[|RPKI-RTR]");
+}
+
+/*
+ * Local Variables:
+ * c-style: whitesmith
+ * c-basic-offset: 4
+ * End:
+ */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-rrcp.c
--- a/head/contrib/tcpdump/print-rrcp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-rrcp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -111,8 +111,8 @@
 	if (rrcp_opcode=3D=3D1 || rrcp_opcode=3D=3D2){
 	    ND_TCHECK2(*(rrcp + RRCP_REG_ADDR_OFFSET), 6);
     	    ND_PRINT((ndo, " addr=3D0x%04x, data=3D0x%08x",
-		     EXTRACT_16BITS(rrcp + RRCP_REG_ADDR_OFFSET),
-		     EXTRACT_32BITS(rrcp + RRCP_REG_DATA_OFFSET)));
+                     EXTRACT_LE_16BITS(rrcp + RRCP_REG_ADDR_OFFSET),
+                     EXTRACT_LE_32BITS(rrcp + RRCP_REG_DATA_OFFSET)));
 	}
 	if (rrcp_proto=3D=3D1){
 	    ND_TCHECK2(*(rrcp + RRCP_AUTHKEY_OFFSET), 2);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-sctp.c
--- a/head/contrib/tcpdump/print-sctp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-sctp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -59,9 +59,9 @@
 #include "ip6.h"
 #endif
=20
-#define CHAN_HP 6700
-#define CHAN_MP 6701
-#define CHAN_LP 6702
+#define CHAN_HP 6704
+#define CHAN_MP 6705
+#define CHAN_LP 6706
=20
 struct tok ForCES_channels[] =3D {
 	{ CHAN_HP, "ForCES HP" },
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-sflow.c
--- a/head/contrib/tcpdump/print-sflow.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-sflow.c	Wed Jul 25 16:21:35 2012 +0300
@@ -15,6 +15,8 @@
  * The SFLOW protocol as per http://www.sflow.org/developers/specification=
s.php
  *
  * Original code by Carles Kishimoto <carles.kishimoto at gmail.com>
+ *
+ * Expansion and refactoring by Rick Jones <rick.jones2 at hp.com>
  */
=20
 #ifndef lint
@@ -87,6 +89,18 @@
     { 0, NULL}
 };
=20
+struct sflow_flow_sample_t {
+    u_int8_t    seqnum[4];
+    u_int8_t    typesource[4];
+    u_int8_t    rate[4];
+    u_int8_t    pool[4];
+    u_int8_t    drops[4];
+    u_int8_t    in_interface[4];
+    u_int8_t    out_interface[4];
+    u_int8_t    records[4];
+
+};
+
 struct sflow_expanded_flow_sample_t {
     u_int8_t    seqnum[4];
     u_int8_t    type[4];
@@ -156,6 +170,36 @@
     u_int8_t    header_size[4];
 };
=20
+struct sflow_ethernet_frame_t {
+    u_int8_t length[4];
+    u_int8_t src_mac[8];
+    u_int8_t dst_mac[8];
+    u_int8_t type[4];
+};
+
+struct sflow_extended_switch_data_t {
+    u_int8_t src_vlan[4];
+    u_int8_t src_pri[4];
+    u_int8_t dst_vlan[4];
+    u_int8_t dst_pri[4];
+};
+
+struct sflow_counter_record_t {
+    u_int8_t    format[4];
+    u_int8_t    length[4];
+};
+
+struct sflow_flow_record_t {
+    u_int8_t    format[4];
+    u_int8_t    length[4];
+};
+
+struct sflow_counter_sample_t {
+    u_int8_t    seqnum[4];
+    u_int8_t    typesource[4];
+    u_int8_t    records[4];
+};
+
 struct sflow_expanded_counter_sample_t {
     u_int8_t    seqnum[4];
     u_int8_t    type[4];
@@ -259,24 +303,525 @@
     u_int8_t    discards[4];
 };
=20
+static int
+print_sflow_counter_generic(const u_char *pointer, u_int len) {
+
+    const struct sflow_generic_counter_t *sflow_gen_counter;
+
+    if (len < sizeof(struct sflow_generic_counter_t))
+	return 1;
+
+
+    sflow_gen_counter =3D (const struct sflow_generic_counter_t *)pointer;
+    printf("\n\t      ifindex %u, iftype %u, ifspeed %" PRIu64 ", ifdirect=
ion %u (%s)",
+	   EXTRACT_32BITS(sflow_gen_counter->ifindex),
+	   EXTRACT_32BITS(sflow_gen_counter->iftype),
+	   EXTRACT_64BITS(sflow_gen_counter->ifspeed),
+	   EXTRACT_32BITS(sflow_gen_counter->ifdirection),
+	   tok2str(sflow_iface_direction_values, "Unknown",
+		   EXTRACT_32BITS(sflow_gen_counter->ifdirection)));
+    printf("\n\t      ifstatus %u, adminstatus: %s, operstatus: %s",
+	   EXTRACT_32BITS(sflow_gen_counter->ifstatus),
+	   EXTRACT_32BITS(sflow_gen_counter->ifstatus)&1 ? "up" : "down",
+	   (EXTRACT_32BITS(sflow_gen_counter->ifstatus)>>1)&1 ? "up" : "down");
+    printf("\n\t      In octets %" PRIu64
+	   ", unicast pkts %u, multicast pkts %u, broadcast pkts %u, discards %u",
+	   EXTRACT_64BITS(sflow_gen_counter->ifinoctets),
+	   EXTRACT_32BITS(sflow_gen_counter->ifinunicastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifinmulticastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifinbroadcastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifindiscards));
+    printf("\n\t      In errors %u, unknown protos %u",
+	   EXTRACT_32BITS(sflow_gen_counter->ifinerrors),
+	   EXTRACT_32BITS(sflow_gen_counter->ifinunkownprotos));
+    printf("\n\t      Out octets %" PRIu64
+	   ", unicast pkts %u, multicast pkts %u, broadcast pkts %u, discards %u",
+	   EXTRACT_64BITS(sflow_gen_counter->ifoutoctets),
+	   EXTRACT_32BITS(sflow_gen_counter->ifoutunicastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifoutmulticastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifoutbroadcastpkts),
+	   EXTRACT_32BITS(sflow_gen_counter->ifoutdiscards));
+    printf("\n\t      Out errors %u, promisc mode %u",=20
+	   EXTRACT_32BITS(sflow_gen_counter->ifouterrors),
+	   EXTRACT_32BITS(sflow_gen_counter->ifpromiscmode));
+
+    return 0;
+}
+
+static int
+print_sflow_counter_ethernet(const u_char *pointer, u_int len){
+
+    const struct sflow_ethernet_counter_t *sflow_eth_counter;
+
+    if (len < sizeof(struct sflow_ethernet_counter_t))
+	return 1;
+
+    sflow_eth_counter =3D (const struct sflow_ethernet_counter_t *)pointer;
+    printf("\n\t      align errors %u, fcs errors %u, single collision %u,=
 multiple collision %u, test error %u",
+	   EXTRACT_32BITS(sflow_eth_counter->alignerrors),
+	   EXTRACT_32BITS(sflow_eth_counter->fcserrors),
+	   EXTRACT_32BITS(sflow_eth_counter->single_collision_frames),
+	   EXTRACT_32BITS(sflow_eth_counter->multiple_collision_frames),
+	   EXTRACT_32BITS(sflow_eth_counter->test_errors));
+    printf("\n\t      deferred %u, late collision %u, excessive collision =
%u, mac trans error %u",=20
+	   EXTRACT_32BITS(sflow_eth_counter->deferred_transmissions),
+	   EXTRACT_32BITS(sflow_eth_counter->late_collisions),
+	   EXTRACT_32BITS(sflow_eth_counter->excessive_collisions),
+	   EXTRACT_32BITS(sflow_eth_counter->mac_transmit_errors));
+    printf("\n\t      carrier error %u, frames too long %u, mac receive er=
rors %u, symbol errors %u",=09
+	   EXTRACT_32BITS(sflow_eth_counter->carrier_sense_errors),
+	   EXTRACT_32BITS(sflow_eth_counter->frame_too_longs),
+	   EXTRACT_32BITS(sflow_eth_counter->mac_receive_errors),
+	   EXTRACT_32BITS(sflow_eth_counter->symbol_errors));
+
+    return 0;
+}
+
+static int
+print_sflow_counter_token_ring(const u_char *pointer _U_, u_int len _U_) {
+
+    return 0;
+}
+
+static int
+print_sflow_counter_basevg(const u_char *pointer, u_int len) {
+
+    const struct sflow_100basevg_counter_t *sflow_100basevg_counter;
+
+    if (len < sizeof(struct sflow_100basevg_counter_t))
+	return 1;
+
+    sflow_100basevg_counter =3D (const struct sflow_100basevg_counter_t *)=
pointer;
+    printf("\n\t      in high prio frames %u, in high prio octets %" PRIu6=
4,
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_highpriority_frames),
+	   EXTRACT_64BITS(sflow_100basevg_counter->in_highpriority_octets));
+    printf("\n\t      in norm prio frames %u, in norm prio octets %" PRIu6=
4,
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_normpriority_frames),
+	   EXTRACT_64BITS(sflow_100basevg_counter->in_normpriority_octets));
+    printf("\n\t      in ipm errors %u, oversized %u, in data errors %u, n=
ull addressed frames %u",
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_ipmerrors),
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_oversized),
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_data_errors),
+	   EXTRACT_32BITS(sflow_100basevg_counter->in_null_addressed_frames));
+    printf("\n\t      out high prio frames %u, out high prio octets %" PRI=
u64
+	   ", trans into frames %u",
+	   EXTRACT_32BITS(sflow_100basevg_counter->out_highpriority_frames),
+	   EXTRACT_64BITS(sflow_100basevg_counter->out_highpriority_octets),
+	   EXTRACT_32BITS(sflow_100basevg_counter->transitioninto_frames));
+    printf("\n\t      in hc high prio octets %" PRIu64
+	   ", in hc norm prio octets %" PRIu64
+	   ", out hc high prio octets %" PRIu64,
+	   EXTRACT_64BITS(sflow_100basevg_counter->hc_in_highpriority_octets),
+	   EXTRACT_64BITS(sflow_100basevg_counter->hc_in_normpriority_octets),
+	   EXTRACT_64BITS(sflow_100basevg_counter->hc_out_highpriority_octets));
+
+    return 0;
+}
+
+static int
+print_sflow_counter_vlan(const u_char *pointer, u_int len) {
+
+    const struct sflow_vlan_counter_t *sflow_vlan_counter;
+   =20
+    if (len < sizeof(struct sflow_vlan_counter_t))
+	return 1;
+
+    sflow_vlan_counter =3D (const struct sflow_vlan_counter_t *)pointer;
+    printf("\n\t      vlan_id %u, octets %" PRIu64
+	   ", unicast_pkt %u, multicast_pkt %u, broadcast_pkt %u, discards %u",
+	   EXTRACT_32BITS(sflow_vlan_counter->vlan_id),
+	   EXTRACT_64BITS(sflow_vlan_counter->octets),
+	   EXTRACT_32BITS(sflow_vlan_counter->unicast_pkt),
+	   EXTRACT_32BITS(sflow_vlan_counter->multicast_pkt),
+	   EXTRACT_32BITS(sflow_vlan_counter->broadcast_pkt),
+	   EXTRACT_32BITS(sflow_vlan_counter->discards));
+
+    return 0;
+}
+
+struct sflow_processor_counter_t {
+    u_int8_t five_sec_util[4];
+    u_int8_t one_min_util[4];
+    u_int8_t five_min_util[4];
+    u_int8_t total_memory[8];
+    u_int8_t free_memory[8];
+};
+
+static int
+print_sflow_counter_processor(const u_char *pointer, u_int len) {
+
+    const struct sflow_processor_counter_t *sflow_processor_counter;
+
+    if (len < sizeof(struct sflow_processor_counter_t))
+	return 1;
+
+    sflow_processor_counter =3D (const struct sflow_processor_counter_t *)=
pointer;
+    printf("\n\t      5sec %u, 1min %u, 5min %u, total_mem %" PRIu64
+	   ", total_mem %" PRIu64,
+	   EXTRACT_32BITS(sflow_processor_counter->five_sec_util),
+	   EXTRACT_32BITS(sflow_processor_counter->one_min_util),
+	   EXTRACT_32BITS(sflow_processor_counter->five_min_util),
+	   EXTRACT_64BITS(sflow_processor_counter->total_memory),
+	   EXTRACT_64BITS(sflow_processor_counter->free_memory));
+
+    return 0;
+}
+
+static int
+sflow_print_counter_records(const u_char *pointer, u_int len, u_int record=
s) {
+
+    u_int nrecords;
+    const u_char *tptr;
+    u_int tlen;
+    u_int counter_type;
+    u_int counter_len;
+    u_int enterprise;
+    const struct sflow_counter_record_t *sflow_counter_record;
+
+    nrecords =3D records;
+    tptr =3D pointer;
+    tlen =3D len;
+
+    while (nrecords > 0) {
+	/* do we have the "header?" */
+	if (tlen < sizeof(struct sflow_counter_record_t))
+	    return 1;
+	sflow_counter_record =3D (const struct sflow_counter_record_t *)tptr;
+
+	enterprise =3D EXTRACT_32BITS(sflow_counter_record->format);
+	counter_type =3D enterprise & 0x0FFF;
+	enterprise =3D enterprise >> 20;
+	counter_len  =3D EXTRACT_32BITS(sflow_counter_record->length);
+	printf("\n\t    enterprise %u, %s (%u) length %u",
+	       enterprise,
+	       (enterprise =3D=3D 0) ? tok2str(sflow_counter_type_values,"Unknown=
",counter_type) : "Unknown",
+	       counter_type,
+	       counter_len);
+
+	tptr +=3D sizeof(struct sflow_counter_record_t);
+	tlen -=3D sizeof(struct sflow_counter_record_t);
+
+	if (tlen < counter_len)
+	    return 1;
+	if (enterprise =3D=3D 0) {
+	    switch (counter_type) {
+	    case SFLOW_COUNTER_GENERIC:
+		if (print_sflow_counter_generic(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_COUNTER_ETHERNET:
+		if (print_sflow_counter_ethernet(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_COUNTER_TOKEN_RING:
+		if (print_sflow_counter_token_ring(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_COUNTER_BASEVG:
+		if (print_sflow_counter_basevg(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_COUNTER_VLAN:
+		if (print_sflow_counter_vlan(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_COUNTER_PROCESSOR:
+		if (print_sflow_counter_processor(tptr,tlen))
+		    return 1;
+		break;
+	    default:
+		if (vflag <=3D 1)
+		    print_unknown_data(tptr, "\n\t\t", counter_len);
+		break;
+	    }
+	}
+	tptr +=3D counter_len;
+	tlen -=3D counter_len;
+	nrecords--;
+=09
+    }
+
+    return 0;
+}
+
+
+static int
+sflow_print_counter_sample(const u_char *pointer, u_int len) {
+
+    const struct sflow_counter_sample_t *sflow_counter_sample;
+    u_int           nrecords;
+    u_int           typesource;
+    u_int           type;
+    u_int           index;
+
+
+    if (len < sizeof(struct sflow_counter_sample_t))
+	return 1;
+
+    sflow_counter_sample =3D (const struct sflow_counter_sample_t *)pointe=
r;
+
+    typesource =3D EXTRACT_32BITS(sflow_counter_sample->typesource);
+    nrecords   =3D EXTRACT_32BITS(sflow_counter_sample->records);
+    type =3D typesource >> 24;
+    index =3D typesource & 0x0FFF;
+   =20
+    printf(" seqnum %u, type %u, idx %u, records %u",
+	   EXTRACT_32BITS(sflow_counter_sample->seqnum),
+	   type,
+	   index,
+	   nrecords);
+
+    return sflow_print_counter_records(pointer + sizeof(struct sflow_count=
er_sample_t),
+				       len - sizeof(struct sflow_counter_sample_t),
+				       nrecords);
+
+}
+
+static int
+sflow_print_expanded_counter_sample(const u_char *pointer, u_int len) {
+
+    const struct sflow_expanded_counter_sample_t *sflow_expanded_counter_s=
ample;
+    u_int           nrecords;
+
+
+    if (len < sizeof(struct sflow_expanded_counter_sample_t))
+	return 1;
+
+    sflow_expanded_counter_sample =3D (const struct sflow_expanded_counter=
_sample_t *)pointer;
+
+    nrecords =3D EXTRACT_32BITS(sflow_expanded_counter_sample->records);
+
+    printf(" seqnum %u, type %u, idx %u, records %u",
+	   EXTRACT_32BITS(sflow_expanded_counter_sample->seqnum),
+	   EXTRACT_32BITS(sflow_expanded_counter_sample->type),
+	   EXTRACT_32BITS(sflow_expanded_counter_sample->index),
+	   nrecords);
+   =20
+    return sflow_print_counter_records(pointer + sizeof(struct sflow_expan=
ded_counter_sample_t),
+				       len - sizeof(struct sflow_expanded_counter_sample_t),
+				       nrecords);
+
+}
+
+static int
+print_sflow_raw_packet(const u_char *pointer, u_int len) {
+
+    const struct sflow_expanded_flow_raw_t *sflow_flow_raw;
+
+    if (len < sizeof(struct sflow_expanded_flow_raw_t))
+	return 1;
+
+    sflow_flow_raw =3D (const struct sflow_expanded_flow_raw_t *)pointer;
+    printf("\n\t      protocol %s (%u), length %u, stripped bytes %u, head=
er_size %u",
+	   tok2str(sflow_flow_raw_protocol_values,"Unknown",EXTRACT_32BITS(sflow_=
flow_raw->protocol)),
+	   EXTRACT_32BITS(sflow_flow_raw->protocol),
+	   EXTRACT_32BITS(sflow_flow_raw->length),
+	   EXTRACT_32BITS(sflow_flow_raw->stripped_bytes),
+	   EXTRACT_32BITS(sflow_flow_raw->header_size));
+
+    /* QUESTION - should we attempt to print the raw header itself?
+       assuming of course there is wnough data present to do so... */
+
+    return 0;
+}
+
+static int
+print_sflow_ethernet_frame(const u_char *pointer, u_int len) {
+
+    const struct sflow_ethernet_frame_t *sflow_ethernet_frame;
+
+    if (len < sizeof(struct sflow_ethernet_frame_t))
+	return 1;
+
+    sflow_ethernet_frame =3D (const struct sflow_ethernet_frame_t *)pointe=
r;
+
+    printf("\n\t      frame len %u, type %u",
+	   EXTRACT_32BITS(sflow_ethernet_frame->length),
+	   EXTRACT_32BITS(sflow_ethernet_frame->type));
+
+    return 0;
+}
+
+static int
+print_sflow_extended_switch_data(const u_char *pointer, u_int len) {
+
+    const struct sflow_extended_switch_data_t *sflow_extended_sw_data;
+
+    if (len < sizeof(struct sflow_extended_switch_data_t))
+	return 1;
+
+    sflow_extended_sw_data =3D (const struct sflow_extended_switch_data_t =
*)pointer;
+    printf("\n\t      src vlan %u, src pri %u, dst vlan %u, dst pri %u",
+	   EXTRACT_32BITS(sflow_extended_sw_data->src_vlan),
+	   EXTRACT_32BITS(sflow_extended_sw_data->src_pri),
+	   EXTRACT_32BITS(sflow_extended_sw_data->dst_vlan),
+	   EXTRACT_32BITS(sflow_extended_sw_data->dst_pri));
+
+    return 0;
+}
+
+static int
+sflow_print_flow_records(const u_char *pointer, u_int len, u_int records) {
+
+    u_int nrecords;
+    const u_char *tptr;
+    u_int tlen;
+    u_int flow_type;
+    u_int enterprise;
+    u_int flow_len;
+    const struct sflow_flow_record_t *sflow_flow_record;
+
+    nrecords =3D records;
+    tptr =3D pointer;
+    tlen =3D len;
+
+    while (nrecords > 0) {
+	/* do we have the "header?" */
+	if (tlen < sizeof(struct sflow_flow_record_t))
+	    return 1;
+
+	sflow_flow_record =3D (const struct sflow_flow_record_t *)tptr;
+
+	/* so, the funky encoding means we cannot blythly mask-off
+	   bits, we must also check the enterprise. */
+=09
+	enterprise =3D EXTRACT_32BITS(sflow_flow_record->format);
+	flow_type =3D enterprise & 0x0FFF;
+	enterprise =3D enterprise >> 12;
+	flow_len  =3D EXTRACT_32BITS(sflow_flow_record->length);
+	printf("\n\t    enterprise %u %s (%u) length %u",
+	       enterprise,
+	       (enterprise =3D=3D 0) ? tok2str(sflow_flow_type_values,"Unknown",f=
low_type) : "Unknown",
+	       flow_type,
+	       flow_len);
+
+	tptr +=3D sizeof(struct sflow_flow_record_t);
+	tlen -=3D sizeof(struct sflow_flow_record_t);
+
+	if (tlen < flow_len)
+	    return 1;
+
+	if (enterprise =3D=3D 0) {
+	    switch (flow_type) {
+	    case SFLOW_FLOW_RAW_PACKET:
+		if (print_sflow_raw_packet(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_FLOW_EXTENDED_SWITCH_DATA:
+		if (print_sflow_extended_switch_data(tptr,tlen))
+		    return 1;
+		break;
+	    case SFLOW_FLOW_ETHERNET_FRAME:
+		if (print_sflow_ethernet_frame(tptr,tlen))
+		    return 1;
+		break;
+		/* FIXME these need a decoder */
+	    case SFLOW_FLOW_IPV4_DATA:
+	    case SFLOW_FLOW_IPV6_DATA:
+	    case SFLOW_FLOW_EXTENDED_ROUTER_DATA:
+	    case SFLOW_FLOW_EXTENDED_GATEWAY_DATA:
+	    case SFLOW_FLOW_EXTENDED_USER_DATA:
+	    case SFLOW_FLOW_EXTENDED_URL_DATA:
+	    case SFLOW_FLOW_EXTENDED_MPLS_DATA:
+	    case SFLOW_FLOW_EXTENDED_NAT_DATA:
+	    case SFLOW_FLOW_EXTENDED_MPLS_TUNNEL:
+	    case SFLOW_FLOW_EXTENDED_MPLS_VC:
+	    case SFLOW_FLOW_EXTENDED_MPLS_FEC:
+	    case SFLOW_FLOW_EXTENDED_MPLS_LVP_FEC:
+	    case SFLOW_FLOW_EXTENDED_VLAN_TUNNEL:
+		break;
+	    default:
+		if (vflag <=3D 1)
+		    print_unknown_data(tptr, "\n\t\t", flow_len);
+		break;
+	    }
+	}
+	tptr +=3D flow_len;
+	tlen -=3D flow_len;
+	nrecords--;
+
+    }
+
+    return 0;
+}
+
+static int
+sflow_print_flow_sample(const u_char *pointer, u_int len) {
+
+    const struct sflow_flow_sample_t *sflow_flow_sample;
+    u_int          nrecords;
+    u_int          typesource;
+    u_int          type;
+    u_int          index;
+
+    if (len < sizeof(struct sflow_flow_sample_t))
+	return 1;
+
+    sflow_flow_sample =3D (struct sflow_flow_sample_t *)pointer;
+
+    typesource =3D EXTRACT_32BITS(sflow_flow_sample->typesource);
+    nrecords =3D EXTRACT_32BITS(sflow_flow_sample->records);
+    type =3D typesource >> 24;
+    index =3D typesource & 0x0FFF;
+
+    printf(" seqnum %u, type %u, idx %u, rate %u, pool %u, drops %u, input=
 %u output %u records %u",
+	   EXTRACT_32BITS(sflow_flow_sample->seqnum),
+	   type,
+	   index,
+	   EXTRACT_32BITS(sflow_flow_sample->rate),
+	   EXTRACT_32BITS(sflow_flow_sample->pool),
+	   EXTRACT_32BITS(sflow_flow_sample->drops),
+	   EXTRACT_32BITS(sflow_flow_sample->in_interface),
+	   EXTRACT_32BITS(sflow_flow_sample->out_interface),
+	   nrecords);
+
+    return sflow_print_flow_records(pointer + sizeof(struct sflow_flow_sam=
ple_t),
+				    len - sizeof(struct sflow_flow_sample_t),
+				    nrecords);
+
+}
+
+static int
+sflow_print_expanded_flow_sample(const u_char *pointer, u_int len) {
+
+    const struct sflow_expanded_flow_sample_t *sflow_expanded_flow_sample;
+    u_int nrecords;
+
+    if (len < sizeof(struct sflow_expanded_flow_sample_t))
+	return 1;
+
+    sflow_expanded_flow_sample =3D (const struct sflow_expanded_flow_sampl=
e_t *)pointer;
+
+    nrecords =3D EXTRACT_32BITS(sflow_expanded_flow_sample->records);
+
+    printf(" seqnum %u, type %u, idx %u, rate %u, pool %u, drops %u, recor=
ds %u",
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->seqnum),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->type),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->index),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->rate),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->pool),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->drops),
+	   EXTRACT_32BITS(sflow_expanded_flow_sample->records));
+   =20
+    return sflow_print_flow_records(pointer + sizeof(struct sflow_expanded=
_flow_sample_t),
+				    len - sizeof(struct sflow_expanded_flow_sample_t),
+				    nrecords);
+
+}
+
 void
 sflow_print(const u_char *pptr, u_int len) {
=20
     const struct sflow_datagram_t *sflow_datagram;
     const struct sflow_sample_header *sflow_sample;
-    const struct sflow_expanded_flow_sample_t *sflow_expanded_flow_sample;
-    const struct sflow_expanded_flow_raw_t *sflow_flow_raw;
-    const struct sflow_expanded_counter_sample_t *sflow_expanded_counter_s=
ample;
-    const struct sflow_generic_counter_t *sflow_gen_counter;
-    const struct sflow_ethernet_counter_t *sflow_eth_counter;
-    const struct sflow_100basevg_counter_t *sflow_100basevg_counter;
-    const struct sflow_vlan_counter_t *sflow_vlan_counter;
+
     const u_char *tptr;
-    int tlen;
+    u_int tlen;
     u_int32_t sflow_sample_type, sflow_sample_len;
-    int nsamples, nrecords, counter_len, counter_type, flow_len, flow_type;
+    u_int32_t nsamples;
=20
-    tptr=3Dpptr;
+
+    tptr =3D pptr;
     tlen =3D len;
     sflow_datagram =3D (const struct sflow_datagram_t *)pptr;
     TCHECK(*sflow_datagram);
@@ -313,16 +858,21 @@
            len);
=20
     /* skip Common header */
-    tptr+=3Dsizeof(const struct sflow_datagram_t);
-    tlen-=3Dsizeof(const struct sflow_datagram_t);
+    tptr +=3D sizeof(const struct sflow_datagram_t);
+    tlen -=3D sizeof(const struct sflow_datagram_t);
=20
     while (nsamples > 0 && tlen > 0) {
         sflow_sample =3D (const struct sflow_sample_header *)tptr;
+        TCHECK(*sflow_sample);
+
         sflow_sample_type =3D (EXTRACT_32BITS(sflow_sample->format)&0x0FFF=
);
         sflow_sample_len =3D EXTRACT_32BITS(sflow_sample->len);
=20
-        tptr+=3Dsizeof(struct sflow_sample_header);
-        tlen-=3Dsizeof(struct sflow_sample_header);
+	if (tlen < sizeof(struct sflow_sample_header))
+	    goto trunc;
+
+        tptr +=3D sizeof(struct sflow_sample_header);
+        tlen -=3D sizeof(struct sflow_sample_header);
  =20
         printf("\n\t%s (%u), length %u,",
                tok2str(sflow_format_values, "Unknown", sflow_sample_type),
@@ -334,226 +884,33 @@
             return;
         }
=20
+	if (tlen < sflow_sample_len)
+	    goto trunc;
+
         /* did we capture enough for fully decoding the sample ? */
-        if (!TTEST2(*tptr, sflow_sample_len))=20
-            goto trunc;
+        TCHECK2(*tptr, sflow_sample_len);
=20
 	switch(sflow_sample_type) {
-        case SFLOW_FLOW_SAMPLE:				/* XXX */
+        case SFLOW_FLOW_SAMPLE:
+	    if (sflow_print_flow_sample(tptr,tlen))
+		goto trunc;
             break;
=20
-        case SFLOW_COUNTER_SAMPLE:			/* XXX */
+        case SFLOW_COUNTER_SAMPLE:
+	    if (sflow_print_counter_sample(tptr,tlen))
+		goto trunc;
             break;
=20
         case SFLOW_EXPANDED_FLOW_SAMPLE:
-            sflow_expanded_flow_sample =3D (const struct sflow_expanded_fl=
ow_sample_t *)tptr;
-            nrecords =3D EXTRACT_32BITS(sflow_expanded_flow_sample->record=
s);
-
-            printf(" seqnum %u, type %u, idx %u, rate %u, pool %u, drops %=
u, records %u",
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->seqnum),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->type),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->index),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->rate),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->pool),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->drops),
-                   EXTRACT_32BITS(sflow_expanded_flow_sample->records));
-
-            tptr+=3D sizeof(struct sflow_expanded_flow_sample_t);
-            tlen-=3D sizeof(struct sflow_expanded_flow_sample_t);
-=09
-            while ( nrecords > 0 && tlen > 0) {
-			=09
-                /* decode Flow record - 2 bytes */
-                flow_type =3D EXTRACT_32BITS(tptr)&0x0FFF;
-                flow_len =3D EXTRACT_32BITS(tptr+4);
-                printf("\n\t  %s (%u) length %u",
-                       tok2str(sflow_flow_type_values,"Unknown",flow_type),
-                       flow_type,
-                       flow_len);
-
-                tptr +=3D 8;
-                tlen -=3D 8;
-
-                /* did we capture enough for fully decoding the flow ? */
-                if (!TTEST2(*tptr, flow_len))
-                    goto trunc;
-
-                switch(flow_type) {
-                case SFLOW_FLOW_RAW_PACKET:
-                    sflow_flow_raw =3D (const struct sflow_expanded_flow_r=
aw_t *)tptr;
-                    printf("\n\t    protocol %s (%u), length %u, stripped =
bytes %u, header_size %u",
-                           tok2str(sflow_flow_raw_protocol_values,"Unknown=
",EXTRACT_32BITS(sflow_flow_raw->protocol)),
-                           EXTRACT_32BITS(sflow_flow_raw->protocol),
-                           EXTRACT_32BITS(sflow_flow_raw->length),
-                           EXTRACT_32BITS(sflow_flow_raw->stripped_bytes),
-                           EXTRACT_32BITS(sflow_flow_raw->header_size));
-                    break;
-
-                    /*
-                     * FIXME those are the defined flow types that lack a =
decoder
-                     */
-                case SFLOW_FLOW_ETHERNET_FRAME:
-                case SFLOW_FLOW_IPV4_DATA:
-                case SFLOW_FLOW_IPV6_DATA:
-                case SFLOW_FLOW_EXTENDED_SWITCH_DATA:
-                case SFLOW_FLOW_EXTENDED_ROUTER_DATA:
-                case SFLOW_FLOW_EXTENDED_GATEWAY_DATA:
-                case SFLOW_FLOW_EXTENDED_USER_DATA:
-                case SFLOW_FLOW_EXTENDED_URL_DATA:
-                case SFLOW_FLOW_EXTENDED_MPLS_DATA:
-                case SFLOW_FLOW_EXTENDED_NAT_DATA:
-                case SFLOW_FLOW_EXTENDED_MPLS_TUNNEL:
-                case SFLOW_FLOW_EXTENDED_MPLS_VC:
-                case SFLOW_FLOW_EXTENDED_MPLS_FEC:
-                case SFLOW_FLOW_EXTENDED_MPLS_LVP_FEC:
-                case SFLOW_FLOW_EXTENDED_VLAN_TUNNEL:
-                    break;
-                default:
-                    if (vflag <=3D 1)
-                        print_unknown_data(tptr, "\n\t      ", flow_len);
-                    break;
-
-                }
-                tptr +=3D flow_len;
-                tlen -=3D flow_len;
-                nrecords--;
-            }
-            break;
+	    if (sflow_print_expanded_flow_sample(tptr,tlen))
+		goto trunc;
+	    break;
=20
         case SFLOW_EXPANDED_COUNTER_SAMPLE:
-            sflow_expanded_counter_sample =3D (const struct sflow_expanded=
_counter_sample_t *)tptr;
-            nrecords =3D EXTRACT_32BITS(sflow_expanded_counter_sample->rec=
ords);
+	    if (sflow_print_expanded_counter_sample(tptr,tlen))
+		goto trunc;
+	    break;
=20
-            printf(" seqnum %u, type %u, idx %u, records %u",
-                   EXTRACT_32BITS(sflow_expanded_counter_sample->seqnum),
-                   EXTRACT_32BITS(sflow_expanded_counter_sample->type),
-                   EXTRACT_32BITS(sflow_expanded_counter_sample->index),
-                   nrecords);
-
-            tptr+=3D sizeof(struct sflow_expanded_counter_sample_t);
-            tlen-=3D sizeof(struct sflow_expanded_counter_sample_t);
-
-            while ( nrecords > 0 && tlen > 0) {
-
-                /* decode counter record - 2 bytes */
-                counter_type =3D EXTRACT_32BITS(tptr)&0x0FFF;		=09
-                counter_len =3D EXTRACT_32BITS(tptr+4);
-                printf("\n\t    %s (%u) length %u",
-                       tok2str(sflow_counter_type_values,"Unknown",counter=
_type),
-                       counter_type,
-                       counter_len);
-
-                tptr +=3D 8;
-                tlen -=3D 8;
-
-                /* did we capture enough for fully decoding the counter ? =
*/
-                if (!TTEST2(*tptr, counter_len))
-                    goto trunc;
-
-                switch(counter_type) {
-                case SFLOW_COUNTER_GENERIC:		=09
-                    sflow_gen_counter =3D (const struct sflow_generic_coun=
ter_t *)tptr;
-                    printf("\n\t      ifindex %u, iftype %u, ifspeed %u, i=
fdirection %u (%s)",
-                           EXTRACT_32BITS(sflow_gen_counter->ifindex),
-                           EXTRACT_32BITS(sflow_gen_counter->iftype),
-                           EXTRACT_32BITS(sflow_gen_counter->ifspeed),
-                           EXTRACT_32BITS(sflow_gen_counter->ifdirection),
-                           tok2str(sflow_iface_direction_values, "Unknown",
-                                   EXTRACT_32BITS(sflow_gen_counter->ifdir=
ection)));
-                    printf("\n\t      ifstatus %u, adminstatus: %s, operst=
atus: %s",
-                           EXTRACT_32BITS(sflow_gen_counter->ifstatus),
-                           EXTRACT_32BITS(sflow_gen_counter->ifstatus)&1 ?=
 "up" : "down",
-                           (EXTRACT_32BITS(sflow_gen_counter->ifstatus)>>1=
)&1 ? "up" : "down");
-                    printf("\n\t      In octets %" PRIu64
-                           ", unicast pkts %u, multicast pkts %u, broadcas=
t pkts %u, discards %u",
-                           EXTRACT_64BITS(sflow_gen_counter->ifinoctets),
-                           EXTRACT_32BITS(sflow_gen_counter->ifinunicastpk=
ts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifinmulticast=
pkts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifinbroadcast=
pkts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifindiscards)=
);
-                    printf("\n\t      In errors %u, unknown protos %u",
-                           EXTRACT_32BITS(sflow_gen_counter->ifinerrors),
-                           EXTRACT_32BITS(sflow_gen_counter->ifinunkownpro=
tos));
-                    printf("\n\t      Out octets %" PRIu64
-                           ", unicast pkts %u, multicast pkts %u, broadcas=
t pkts %u, discards %u",
-                           EXTRACT_64BITS(sflow_gen_counter->ifoutoctets),
-                           EXTRACT_32BITS(sflow_gen_counter->ifoutunicastp=
kts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifoutmulticas=
tpkts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifoutbroadcas=
tpkts),
-                           EXTRACT_32BITS(sflow_gen_counter->ifoutdiscards=
));
-                    printf("\n\t      Out errors %u, promisc mode %u",=20
-                           EXTRACT_32BITS(sflow_gen_counter->ifouterrors),
-                           EXTRACT_32BITS(sflow_gen_counter->ifpromiscmode=
));
-                    break;
-                case SFLOW_COUNTER_ETHERNET:
-                    sflow_eth_counter =3D (const struct sflow_ethernet_cou=
nter_t *)tptr;
-                    printf("\n\t      align errors %u, fcs errors %u, sing=
le collision %u, multiple collision %u, test error %u",
-                           EXTRACT_32BITS(sflow_eth_counter->alignerrors),
-                           EXTRACT_32BITS(sflow_eth_counter->fcserrors),
-                           EXTRACT_32BITS(sflow_eth_counter->single_collis=
ion_frames),
-                           EXTRACT_32BITS(sflow_eth_counter->multiple_coll=
ision_frames),
-                           EXTRACT_32BITS(sflow_eth_counter->test_errors));
-                    printf("\n\t      deferred %u, late collision %u, exce=
ssive collision %u, mac trans error %u",=20
-                           EXTRACT_32BITS(sflow_eth_counter->deferred_tran=
smissions),
-                           EXTRACT_32BITS(sflow_eth_counter->late_collisio=
ns),
-                           EXTRACT_32BITS(sflow_eth_counter->excessive_col=
lisions),
-                           EXTRACT_32BITS(sflow_eth_counter->mac_transmit_=
errors));
-                    printf("\n\t      carrier error %u, frames too long %u=
, mac receive errors %u, symbol errors %u",=09
-                           EXTRACT_32BITS(sflow_eth_counter->carrier_sense=
_errors),
-                           EXTRACT_32BITS(sflow_eth_counter->frame_too_lon=
gs),
-                           EXTRACT_32BITS(sflow_eth_counter->mac_receive_e=
rrors),
-                           EXTRACT_32BITS(sflow_eth_counter->symbol_errors=
));
-                    break;
-                case SFLOW_COUNTER_TOKEN_RING:			/* XXX */
-                    break;
-                case SFLOW_COUNTER_BASEVG:
-                    sflow_100basevg_counter =3D (const struct sflow_100bas=
evg_counter_t *)tptr;
-                    printf("\n\t      in high prio frames %u, in high prio=
 octets %" PRIu64,
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_high=
priority_frames),
-                           EXTRACT_64BITS(sflow_100basevg_counter->in_high=
priority_octets));
-                    printf("\n\t      in norm prio frames %u, in norm prio=
 octets %" PRIu64,
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_norm=
priority_frames),
-                           EXTRACT_64BITS(sflow_100basevg_counter->in_norm=
priority_octets));
-                    printf("\n\t      in ipm errors %u, oversized %u, in d=
ata errors %u, null addressed frames %u",
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_ipme=
rrors),
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_over=
sized),
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_data=
_errors),
-                           EXTRACT_32BITS(sflow_100basevg_counter->in_null=
_addressed_frames));
-                    printf("\n\t      out high prio frames %u, out high pr=
io octets %" PRIu64
-                           ", trans into frames %u",
-                           EXTRACT_32BITS(sflow_100basevg_counter->out_hig=
hpriority_frames),
-                           EXTRACT_64BITS(sflow_100basevg_counter->out_hig=
hpriority_octets),
-                           EXTRACT_32BITS(sflow_100basevg_counter->transit=
ioninto_frames));
-                    printf("\n\t      in hc high prio octets %" PRIu64
-                           ", in hc norm prio octets %" PRIu64
-                           ", out hc high prio octets %" PRIu64,
-                           EXTRACT_64BITS(sflow_100basevg_counter->hc_in_h=
ighpriority_octets),
-                           EXTRACT_64BITS(sflow_100basevg_counter->hc_in_n=
ormpriority_octets),
-                           EXTRACT_64BITS(sflow_100basevg_counter->hc_out_=
highpriority_octets));
-                    break;
-                case SFLOW_COUNTER_VLAN:
-                    sflow_vlan_counter =3D (const struct sflow_vlan_counte=
r_t *)tptr;
-                    printf("\n\t      vlan_id %u, octets %" PRIu64
-                           ", unicast_pkt %u, multicast_pkt %u, broadcast_=
pkt %u, discards %u",
-                           EXTRACT_32BITS(sflow_vlan_counter->vlan_id),
-                           EXTRACT_64BITS(sflow_vlan_counter->octets),
-                           EXTRACT_32BITS(sflow_vlan_counter->unicast_pkt),
-                           EXTRACT_32BITS(sflow_vlan_counter->multicast_pk=
t),
-                           EXTRACT_32BITS(sflow_vlan_counter->broadcast_pk=
t),
-                           EXTRACT_32BITS(sflow_vlan_counter->discards));
-                    break;
-                case SFLOW_COUNTER_PROCESSOR:			/* XXX */
-                    break;
-                default:
-                    if (vflag <=3D 1)
-                        print_unknown_data(tptr, "\n\t\t", counter_len);
-                    break;
-                }
-                tptr +=3D counter_len;
-                tlen -=3D counter_len;
-                nrecords--;
-            }
-            break;
         default:
             if (vflag <=3D 1)
                 print_unknown_data(tptr, "\n\t    ", sflow_sample_len);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-sl.c
--- a/head/contrib/tcpdump/print-sl.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-sl.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-sl.c 235530 2012-05-17 05:11:57Z d=
elphij $
  */
=20
 #ifndef lint
@@ -75,7 +75,7 @@
 		break;
 #ifdef INET6
 	case 6:
-		ip6_print((u_char *)ip, length);
+		ip6_print(gndo, (u_char *)ip, length);
 		break;
 #endif
 	default:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-sll.c
--- a/head/contrib/tcpdump/print-sll.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-sll.c	Wed Jul 25 16:21:35 2012 +0300
@@ -218,7 +218,7 @@
 		caplen -=3D 4;
 		goto recurse;
 	} else {
-		if (ethertype_print(ether_type, p, length, caplen) =3D=3D 0) {
+		if (ethertype_print(gndo, ether_type, p, length, caplen) =3D=3D 0) {
 			/* ether_type not known, print raw packet */
 			if (!eflag)
 				sll_print(sllp, length + SLL_HDR_LEN);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-sunrpc.c
--- a/head/contrib/tcpdump/print-sunrpc.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-sunrpc.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-sunrpc.c 235530 2012-05-17 05:11:5=
7Z delphij $
  */
=20
 #ifndef lint
@@ -47,12 +47,12 @@
=20
 #include <tcpdump-stdinc.h>
=20
-#ifdef HAVE_GETRPCBYNUMBER
+#if defined(HAVE_GETRPCBYNUMBER) && defined(HAVE_RPC_RPC_H)
 #include <rpc/rpc.h>
 #ifdef HAVE_RPC_RPCENT_H
 #include <rpc/rpcent.h>
 #endif /* HAVE_RPC_RPCENT_H */
-#endif /* HAVE_GETRPCBYNUMBER */
+#endif /* defined(HAVE_GETRPCBYNUMBER) && defined(HAVE_RPC_RPC_H) */
=20
 #include <stdio.h>
 #include <string.h>
@@ -153,7 +153,7 @@
 progstr(prog)
 	u_int32_t prog;
 {
-#ifdef HAVE_GETRPCBYNUMBER
+#if defined(HAVE_GETRPCBYNUMBER) && defined(HAVE_RPC_RPC_H)
 	register struct rpcent *rp;
 #endif
 	static char buf[32];
@@ -161,12 +161,12 @@
=20
 	if (lastprog !=3D 0 && prog =3D=3D lastprog)
 		return (buf);
-#ifdef HAVE_GETRPCBYNUMBER
+#if defined(HAVE_GETRPCBYNUMBER) && defined(HAVE_RPC_RPC_H)
 	rp =3D getrpcbynumber(prog);
 	if (rp =3D=3D NULL)
 #endif
 		(void) snprintf(buf, sizeof(buf), "#%u", prog);
-#ifdef HAVE_GETRPCBYNUMBER
+#if defined(HAVE_GETRPCBYNUMBER) && defined(HAVE_RPC_RPC_H)
 	else
 		strlcpy(buf, rp->r_name, sizeof(buf));
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-symantec.c
--- a/head/contrib/tcpdump/print-symantec.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-symantec.c	Wed Jul 25 16:21:35 2012 +0300
@@ -107,7 +107,7 @@
=20
 		if (!suppress_default_print)
 			default_print(p, caplen);
-	} else if (ethertype_print(ether_type, p, length, caplen) =3D=3D 0) {
+	} else if (ethertype_print(gndo, ether_type, p, length, caplen) =3D=3D 0)=
 {
 		/* ether_type not known, print raw packet */
 		if (!eflag)
 			symantec_hdr_print((u_char *)sp, length + sizeof (struct symantec_heade=
r));
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-tcp.c
--- a/head/contrib/tcpdump/print-tcp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-tcp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -129,31 +129,8 @@
 		     register const struct tcphdr *tp,
 		     register u_int len)
 {
-        union phu {
-                struct phdr {
-                        u_int32_t src;
-                        u_int32_t dst;
-                        u_char mbz;
-                        u_char proto;
-                        u_int16_t len;
-                } ph;
-                u_int16_t pa[6];
-        } phu;
-        const u_int16_t *sp;
-
-        /* pseudo-header.. */
-        phu.ph.len =3D htons((u_int16_t)len);
-        phu.ph.mbz =3D 0;
-        phu.ph.proto =3D IPPROTO_TCP;
-        memcpy(&phu.ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
-        if (IP_HL(ip) =3D=3D 5)
-                memcpy(&phu.ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
-        else
-                phu.ph.dst =3D ip_finddst(ip);
-
-        sp =3D &phu.pa[0];
-        return in_cksum((u_short *)tp, len,
-                        sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]);
+	return (nextproto4_cksum(ip, (const u_int8_t *)tp, len,
+	    IPPROTO_TCP));
 }
=20
 void
@@ -294,7 +271,6 @@
                  * both directions).
                  */
 #ifdef INET6
-                memset(&tha, 0, sizeof(tha));
                 rev =3D 0;
                 if (ip6) {
                         src =3D &ip6->ip6_src;
@@ -315,6 +291,27 @@
                                 tha.port =3D sport << 16 | dport;
                         }
                 } else {
+                        /*
+                         * Zero out the tha structure; the src and dst
+                         * fields are big enough to hold an IPv6
+                         * address, but we only have IPv4 addresses
+                         * and thus must clear out the remaining 124
+                         * bits.
+                         *
+                         * XXX - should we just clear those bytes after
+                         * copying the IPv4 addresses, rather than
+                         * zeroing out the entire structure and then
+                         * overwriting some of the zeroes?
+                         *
+                         * XXX - this could fail if we see TCP packets
+                         * with an IPv6 address with the lower 124 bits
+                         * all zero and also see TCP packes with an
+                         * IPv4 address with the same 32 bits as the
+                         * upper 32 bits of the IPv6 address in question.
+                         * Can that happen?  Is it likely enough to be
+                         * an issue?
+                         */
+                        memset(&tha, 0, sizeof(tha));
                         src =3D &ip->ip_src;
                         dst =3D &ip->ip_dst;
                         if (sport > dport)
@@ -393,34 +390,40 @@
                 return;
         }
=20
-        if (IP_V(ip) =3D=3D 4 && vflag && !Kflag && !fragmented) {
+        if (vflag && !Kflag && !fragmented) {
+                /* Check the checksum, if possible. */
                 u_int16_t sum, tcp_sum;
-                if (TTEST2(tp->th_sport, length)) {
-                        sum =3D tcp_cksum(ip, tp, length);
=20
-                        (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->=
th_sum));
-                        if (sum !=3D 0) {
+                if (IP_V(ip) =3D=3D 4) {
+                        if (TTEST2(tp->th_sport, length)) {
+                                sum =3D tcp_cksum(ip, tp, length);
                                 tcp_sum =3D EXTRACT_16BITS(&tp->th_sum);
-                                (void)printf(" (incorrect -> 0x%04x)",in_c=
ksum_shouldbe(tcp_sum, sum));
-                        } else
-                                (void)printf(" (correct)");
+
+                                (void)printf(", cksum 0x%04x", tcp_sum);
+                                if (sum !=3D 0)
+                                        (void)printf(" (incorrect -> 0x%04=
x)",
+                                            in_cksum_shouldbe(tcp_sum, sum=
));
+                                else
+                                        (void)printf(" (correct)");
+                        }
                 }
+#ifdef INET6
+                else if (IP_V(ip) =3D=3D 6 && ip6->ip6_plen) {
+                        if (TTEST2(tp->th_sport, length)) {
+                                sum =3D nextproto6_cksum(ip6, (const u_int=
8_t *)tp, length, IPPROTO_TCP);
+                                tcp_sum =3D EXTRACT_16BITS(&tp->th_sum);
+
+                                (void)printf(", cksum 0x%04x", tcp_sum);
+                                if (sum !=3D 0)
+                                        (void)printf(" (incorrect -> 0x%04=
x)",
+                                            in_cksum_shouldbe(tcp_sum, sum=
));
+                                else
+                                        (void)printf(" (correct)");
+
+                        }
+                }
+#endif
         }
-#ifdef INET6
-        if (IP_V(ip) =3D=3D 6 && ip6->ip6_plen && vflag && !Kflag && !frag=
mented) {
-                u_int16_t sum,tcp_sum;
-                if (TTEST2(tp->th_sport, length)) {
-                        sum =3D nextproto6_cksum(ip6, (u_short *)tp, lengt=
h, IPPROTO_TCP);
-                        (void)printf(", cksum 0x%04x",EXTRACT_16BITS(&tp->=
th_sum));
-                        if (sum !=3D 0) {
-                                tcp_sum =3D EXTRACT_16BITS(&tp->th_sum);
-                                (void)printf(" (incorrect -> 0x%04x)",in_c=
ksum_shouldbe(tcp_sum, sum));
-                        } else
-                                (void)printf(" (correct)");
-
-                }
-        }
-#endif
=20
         length -=3D hlen;
         if (vflag > 1 || length > 0 || flags & (TH_SYN | TH_FIN | TH_RST))=
 {
@@ -661,6 +664,8 @@
                 ns_print(bp + 2, length - 2, 0);
         } else if (sport =3D=3D MSDP_PORT || dport =3D=3D MSDP_PORT) {
                 msdp_print(bp, length);
+        } else if (sport =3D=3D RPKI_RTR_PORT || dport =3D=3D RPKI_RTR_POR=
T) {
+                rpki_rtr_print(bp, length);
         }
         else if (length > 0 && (sport =3D=3D LDP_PORT || dport =3D=3D LDP_=
PORT)) {
                 ldp_print(bp, length);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-tftp.c
--- a/head/contrib/tcpdump/print-tftp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-tftp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -99,15 +99,7 @@
 	case RRQ:
 	case WRQ:
 	case OACK:
-		/*
-		 * XXX Not all arpa/tftp.h's specify th_stuff as any
-		 * array; use address of th_block instead
-		 */
-#ifdef notdef
 		p =3D (u_char *)tp->th_stuff;
-#else
-		p =3D (u_char *)&tp->th_block;
-#endif
 		putchar(' ');
 		/* Print filename or first option */
 		if (opcode !=3D OACK)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-udp.c
--- a/head/contrib/tcpdump/print-udp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-udp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/tcpdump/print-udp.c 235530 2012-05-17 05:11:57Z =
delphij $
  */
=20
 #ifndef lint
@@ -35,7 +35,6 @@
 #ifdef SEGSIZE
 #undef SEGSIZE
 #endif
-#include <arpa/tftp.h>
=20
 #include <stdio.h>
 #include <string.h>
@@ -289,75 +288,16 @@
 		     register const struct udphdr *up,
 		     register u_int len)
 {
-	union phu {
-		struct phdr {
-			u_int32_t src;
-			u_int32_t dst;
-			u_char mbz;
-			u_char proto;
-			u_int16_t len;
-		} ph;
-		u_int16_t pa[6];
-	} phu;
-	register const u_int16_t *sp;
-
-	/* pseudo-header.. */
-	phu.ph.len =3D htons((u_int16_t)len);
-	phu.ph.mbz =3D 0;
-	phu.ph.proto =3D IPPROTO_UDP;
-	memcpy(&phu.ph.src, &ip->ip_src.s_addr, sizeof(u_int32_t));
-	if (IP_HL(ip) =3D=3D 5)
-		memcpy(&phu.ph.dst, &ip->ip_dst.s_addr, sizeof(u_int32_t));
-	else
-		phu.ph.dst =3D ip_finddst(ip);
-
-	sp =3D &phu.pa[0];
-	return in_cksum((u_short *)up, len,
-			sp[0]+sp[1]+sp[2]+sp[3]+sp[4]+sp[5]);
+	return (nextproto4_cksum(ip, (const u_int8_t *)(void *)up, len,
+	    IPPROTO_UDP));
 }
=20
 #ifdef INET6
 static int udp6_cksum(const struct ip6_hdr *ip6, const struct udphdr *up,
 	u_int len)
 {
-	size_t i;
-	register const u_int16_t *sp;
-	u_int32_t sum;
-	union {
-		struct {
-			struct in6_addr ph_src;
-			struct in6_addr ph_dst;
-			u_int32_t	ph_len;
-			u_int8_t	ph_zero[3];
-			u_int8_t	ph_nxt;
-		} ph;
-		u_int16_t pa[20];
-	} phu;
-
-	/* pseudo-header */
-	memset(&phu, 0, sizeof(phu));
-	phu.ph.ph_src =3D ip6->ip6_src;
-	phu.ph.ph_dst =3D ip6->ip6_dst;
-	phu.ph.ph_len =3D htonl(len);
-	phu.ph.ph_nxt =3D IPPROTO_UDP;
-
-	sum =3D 0;
-	for (i =3D 0; i < sizeof(phu.pa) / sizeof(phu.pa[0]); i++)
-		sum +=3D phu.pa[i];
-
-	sp =3D (const u_int16_t *)up;
-
-	for (i =3D 0; i < (len & ~1); i +=3D 2)
-		sum +=3D *sp++;
-
-	if (len & 1)
-		sum +=3D htons((*(const u_int8_t *)sp) << 8);
-
-	while (sum > 0xffff)
-		sum =3D (sum & 0xffff) + (sum >> 16);
-	sum =3D ~sum & 0xffff;
-
-	return (sum);
+	return (nextproto6_cksum(ip6, (const u_int8_t *)(void *)up, len,
+	    IPPROTO_UDP));
 }
 #endif
=20
@@ -570,31 +510,46 @@
 	}
 	udpipaddr_print(ip, sport, dport);
=20
-	if (IP_V(ip) =3D=3D 4 && (vflag > 1) && !Kflag && !fragmented) {
-		int sum =3D up->uh_sum;
-		if (sum =3D=3D 0) {
-			(void)printf("[no cksum] ");
-		} else if (TTEST2(cp[0], length)) {
-			sum =3D udp_cksum(ip, up, length + sizeof(struct udphdr));
-			if (sum !=3D 0)
-				(void)printf("[bad udp cksum %x!] ", sum);
-			else
-				(void)printf("[udp sum ok] ");
+	if (vflag && !Kflag && !fragmented) {
+                /* Check the checksum, if possible. */
+                u_int16_t sum, udp_sum;
+
+		/*
+		 * XXX - do this even if vflag =3D=3D 1?
+		 * TCP does, and we do so for UDP-over-IPv6.
+		 */
+	        if (IP_V(ip) =3D=3D 4 && (vflag > 1)) {
+			udp_sum =3D EXTRACT_16BITS(&up->uh_sum);
+			if (udp_sum =3D=3D 0) {
+				(void)printf("[no cksum] ");
+			} else if (TTEST2(cp[0], length)) {
+				sum =3D udp_cksum(ip, up, length + sizeof(struct udphdr));
+
+	                        if (sum !=3D 0) {
+        	                        (void)printf("[bad udp cksum 0x%04x -> 0x=
%04x!] ",
+					    udp_sum,
+					    in_cksum_shouldbe(udp_sum, sum));
+				} else
+					(void)printf("[udp sum ok] ");
+			}
 		}
+#ifdef INET6
+		else if (IP_V(ip) =3D=3D 6 && ip6->ip6_plen) {
+			/* for IPv6, UDP checksum is mandatory */
+			if (TTEST2(cp[0], length)) {
+				sum =3D udp6_cksum(ip6, up, length + sizeof(struct udphdr));
+				udp_sum =3D EXTRACT_16BITS(&up->uh_sum);
+
+	                        if (sum !=3D 0) {
+        	                        (void)printf("[bad udp cksum 0x%04x -> 0x=
%04x!] ",
+					    udp_sum,
+					    in_cksum_shouldbe(udp_sum, sum));
+				} else
+					(void)printf("[udp sum ok] ");
+			}
+		}
+#endif
 	}
-#ifdef INET6
-	if (IP_V(ip) =3D=3D 6 && ip6->ip6_plen && vflag && !Kflag && !fragmented)=
 {
-		int sum =3D up->uh_sum;
-		/* for IPv6, UDP checksum is mandatory */
-		if (TTEST2(cp[0], length)) {
-			sum =3D udp6_cksum(ip6, up, length + sizeof(struct udphdr));
-			if (sum !=3D 0)
-				(void)printf("[bad udp cksum %x!] ", sum);
-			else
-				(void)printf("[udp sum ok] ");
-		}
-	}
-#endif
=20
 	if (!qflag) {
 #define ISPORT(p) (dport =3D=3D (p) || sport =3D=3D (p))
@@ -654,9 +609,10 @@
 #ifdef INET6
 		else if (ISPORT(RIPNG_PORT))
 			ripng_print((const u_char *)(up + 1), length);
-		else if (ISPORT(DHCP6_SERV_PORT) || ISPORT(DHCP6_CLI_PORT)) {
+		else if (ISPORT(DHCP6_SERV_PORT) || ISPORT(DHCP6_CLI_PORT))
 			dhcp6_print((const u_char *)(up + 1), length);
-		}
+		else if (ISPORT(BABEL_PORT) || ISPORT(BABEL_PORT_OLD))
+			babel_print((const u_char *)(up + 1), length);
 #endif /*INET6*/
 		/*
 		 * Kludge in test for whiteboard packets.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/print-vrrp.c
--- a/head/contrib/tcpdump/print-vrrp.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/print-vrrp.c	Wed Jul 25 16:21:35 2012 +0300
@@ -110,9 +110,15 @@
 		int i;
 		char c;
=20
-		if (TTEST2(bp[0], len) && in_cksum((const u_short*)bp, len, 0))
-			printf(", (bad vrrp cksum %x)",
-				EXTRACT_16BITS(&bp[6]));
+		if (TTEST2(bp[0], len)) {
+			struct cksum_vec vec[1];
+
+			vec[0].ptr =3D bp;
+			vec[0].len =3D len;
+			if (in_cksum(vec, 1))
+				printf(", (bad vrrp cksum %x)",
+					EXTRACT_16BITS(&bp[6]));
+		}
 		printf(", addrs");
 		if (naddrs > 1)
 			printf("(%d)", naddrs);
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tcp.h
--- a/head/contrib/tcpdump/tcp.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/tcp.h	Wed Jul 25 16:21:35 2012 +0300
@@ -105,6 +105,7 @@
 #define NFS_PORT	        2049
 #endif
 #define MSDP_PORT	        639
+#define RPKI_RTR_PORT	        2222 /* experimental up until sidr-wg regist=
ers a well-known port */
 #define LDP_PORT                646
 #ifndef SMB_PORT
 #define SMB_PORT                445
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tcpdump-stdinc.h
--- a/head/contrib/tcpdump/tcpdump-stdinc.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/tcpdump-stdinc.h	Wed Jul 25 16:21:35 2012 +0300
@@ -131,10 +131,43 @@
=20
 #endif /* WIN32 */
=20
-#ifdef INET6
-#include "ip6.h"
+#ifndef HAVE___ATTRIBUTE__
+#define __attribute__(x)
 #endif
=20
+/*
+ * Used to declare a structure unaligned, so that the C compiler,
+ * if necessary, generates code that doesn't assume alignment.
+ * This is required because there is no guarantee that the packet
+ * data we get from libpcap/WinPcap is properly aligned.
+ *
+ * This assumes that, for all compilers that support __attribute__:
+ *
+ *	1) they support __attribute__((packed));
+ *
+ *	2) for all instruction set architectures requiring strict
+ *	   alignment, declaring a structure with that attribute
+ *	   causes the compiler to generate code that handles
+ *	   misaligned 2-byte, 4-byte, and 8-byte integral
+ *	   quantities.
+ *
+ * It does not (yet) handle compilers where you can get the compiler
+ * to generate code of that sort by some other means.
+ *
+ * This is required in order to, for example, keep the compiler from
+ * generating, for
+ *
+ *	if (bp->bp_htype =3D=3D 1 && bp->bp_hlen =3D=3D 6 && bp->bp_op =3D=3D B=
OOTPREQUEST) {
+ *
+ * in print-bootp.c, code that loads the first 4-byte word of a
+ * "struct bootp", masking out the bp_hops field, and comparing the result
+ * against 0x01010600.
+ *
+ * Note: this also requires that padding be put into the structure,
+ * at least for compilers where it's implemented as __attribute__((packed)=
).
+ */
+#define UNALIGNED	__attribute__((packed))
+
 #if defined(WIN32) || defined(MSDOS)
   #define FOPEN_READ_TXT   "rt"
   #define FOPEN_READ_BIN   "rb"
@@ -147,7 +180,7 @@
   #define FOPEN_WRITE_BIN  FOPEN_WRITE_TXT
 #endif
=20
-#if defined(__GNUC__) && defined(__i386__) && !defined(__ntohl)=20
+#if defined(__GNUC__) && defined(__i386__) && !defined(__APPLE__) && !defi=
ned(__ntohl)=20
   #undef ntohl
   #undef ntohs
   #undef htonl
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tcpdump.1.in
--- a/head/contrib/tcpdump/tcpdump.1.in	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/tcpdump.1.in	Wed Jul 25 16:21:35 2012 +0300
@@ -29,7 +29,7 @@
 .na
 .B tcpdump
 [
-.B \-AbdDefIKlLnNOpqRStuUvxX
+.B \-AbdDefhHIJKlLnNOpqRStuUvxX
 ] [
 .B \-B
 .I buffer_size
@@ -56,6 +56,10 @@
 .I interface
 ]
 [
+.B \-j
+.I tstamp_type
+]
+[
 .B \-m
 .I module
 ]
@@ -256,7 +260,7 @@
 .B \-E
 Use \fIspi at ipaddr algo:secret\fP for decrypting IPsec ESP packets that
 are addressed to \fIaddr\fP and contain Security Parameter Index value
-\fIspi\fP. This combination may be repeated with comma or newline seperati=
on.
+\fIspi\fP. This combination may be repeated with comma or newline separati=
on.
 .IP
 Note that setting the secret for IPv4 ESP packets is supported at this tim=
e.
 .IP
@@ -272,7 +276,7 @@
 with cryptography enabled.
 .IP
 \fIsecret\fP is the ASCII text for ESP secret key.=20
-If preceeded by 0x, then a hex value will be read.
+If preceded by 0x, then a hex value will be read.
 .IP
 The option assumes RFC2406 ESP, not RFC1827 ESP.
 The option is only for debugging purposes, and
@@ -319,6 +323,13 @@
 .B \-C
 option, filenames will take the form of `\fIfile\fP<count>'.
 .TP
+.B \-h
+Print the tcpdump and libpcap version strings, print a usage message,
+and exit.
+.TP
+.B \-H
+Attempt to detect 802.11s draft mesh headers.
+.TP
 .B \-i
 Listen on \fIinterface\fP.
 If unspecified, \fItcpdump\fP searches the system interface list for the
@@ -359,6 +370,18 @@
 is specified, only those link-layer types available when in monitor mode
 will be shown.
 .TP
+.B \-j
+Set the time stamp type for the capture to \fItstamp_type\fP.  The names
+to use for the time stamp types are given in
+.BR pcap-tstamp-type (@MAN_MISC_INFO@);
+not all the types listed there will necessarily be valid for any given
+interface.
+.TP
+.B \-J
+List the supported time stamp types for the interface and exit.  If the
+time stamp type cannot be set for the interface, no time stamp types are
+listed.
+.TP
 .B \-K
 Don't attempt to verify IP, TCP, or UDP checksums.  This is useful for
 interfaces that perform some or all of those checksum calculation in
@@ -615,7 +638,10 @@
 and execute the command that you want.
 .TP
 .B \-Z
-Drops privileges (if root) and changes user ID to
+If
+.I tcpdump
+is running as root, after opening the capture device or input savefile,
+but before opening any savefiles for output, change the user ID to
 .I user
 and the group ID to the primary group of
 .IR user .
@@ -871,8 +897,8 @@
 \fISrc\fP and \fIdst\fP are the source and destination IP
 addresses and ports.
 \fIFlags\fP are some combination of S (SYN),
-F (FIN), P (PUSH), R (RST), W (ECN CWR) or E (ECN-Echo), or a single
-`.' (no flags).
+F (FIN), P (PUSH), R (RST), U (URG), W (ECN CWR), E (ECN-Echo) or
+`.' (ACK), or `none' if no flags are set.
 \fIData-seqno\fP describes the portion of sequence space covered
 by the data in this packet (see example below).
 \fIAck\fP is sequence number of the next data expected the other
@@ -919,8 +945,7 @@
 Csam replies with a similar packet except it includes a piggy-backed
 ack for rtsg's SYN.
 Rtsg then acks csam's SYN.
-The `.' means no
-flags were set.
+The `.' means the ACK flag was set.
 The packet contained no data so there is no data sequence number.
 Note that the ack sequence
 number is a small integer (1).
@@ -1266,7 +1291,6 @@
 If the
 `question' section doesn't contain exactly one entry, `[\fIn\fPq]'
 is printed.
-
 .HD
 SMB/CIFS decoding
 .LP
@@ -1274,19 +1298,18 @@
 on UDP/137, UDP/138 and TCP/139.
 Some primitive decoding of IPX and
 NetBEUI SMB data is also done.
-
+.LP
 By default a fairly minimal decode is done, with a much more detailed
 decode done if -v is used.
 Be warned that with -v a single SMB packet
 may take up a page or more, so only use -v if you really want all the
 gory details.
-
-For information on SMB packet formats and what all te fields mean see
+.LP
+For information on SMB packet formats and what all the fields mean see
 www.cifs.org or the pub/samba/specs/ directory on your favorite
 samba.org mirror site.
 The SMB patches were written by Andrew Tridgell
 (tridge at samba.org).
-
 .HD
 NFS Requests and Replies
 .LP
@@ -1639,7 +1662,7 @@
 serviced the `new packet' interrupt.
 .SH "SEE ALSO"
 stty(1), pcap(3PCAP), bpf(4), nit(4P), pcap-savefile(@MAN_FILE_FORMATS@),
-pcap-filter(@MAN_MISC_INFO@)
+pcap-filter(@MAN_MISC_INFO@), pcap-tstamp-type(@MAN_MISC_INFO@)
 .SH AUTHORS
 The original authors are:
 .LP
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tcpdump.c
--- a/head/contrib/tcpdump/tcpdump.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/tcpdump.c	Wed Jul 25 16:21:35 2012 +0300
@@ -33,7 +33,7 @@
     "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.283 2008-09-25 21=
:45:50 guy Exp $ (LBL)";
 #endif
=20
-/* $FreeBSD$ */
+/* $FreeBSD: head/contrib/tcpdump/tcpdump.c 235530 2012-05-17 05:11:57Z de=
lphij $ */
=20
 /*
  * tcpdump - monitor tcp/ip traffic on an ethernet.
@@ -94,6 +94,9 @@
=20
 static int dflag;			/* print filter code */
 static int Lflag;			/* list available data link types and exit */
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+static int Jflag;			/* list available time stamp types */
+#endif
 static char *zflag =3D NULL;		/* compress each savefile using a specified =
command (like gzip or bzip2) */
=20
 static int infodelay;
@@ -114,7 +117,8 @@
 static void dump_packet_and_trunc(u_char *, const struct pcap_pkthdr *, co=
nst u_char *);
 static void dump_packet(u_char *, const struct pcap_pkthdr *, const u_char=
 *);
 static void droproot(const char *, const char *);
-static void ndo_error(netdissect_options *ndo, const char *fmt, ...);
+static void ndo_error(netdissect_options *ndo, const char *fmt, ...)
+     __attribute__ ((noreturn, format (printf, 2, 3)));
 static void ndo_warning(netdissect_options *ndo, const char *fmt, ...);
=20
 #ifdef SIGINFO
@@ -132,10 +136,6 @@
 static void info(int);
 static u_int packets_captured;
=20
-typedef u_int (*if_printer)(const struct pcap_pkthdr *, const u_char *);
-typedef u_int (*if_ndo_printer)(struct netdissect_options *ndo,
-                                const struct pcap_pkthdr *, const u_char *=
);
-
 struct printer {
         if_printer f;
 	int type;
@@ -153,7 +153,6 @@
 #ifdef DLT_ARCNET_LINUX
 	{ arcnet_linux_if_print, DLT_ARCNET_LINUX },
 #endif
-	{ ether_if_print,	DLT_EN10MB },
 	{ token_if_print,	DLT_IEEE802 },
 #ifdef DLT_LANE8023
 	{ lane_if_print,        DLT_LANE8023 },
@@ -305,13 +304,29 @@
 };
=20
 static struct ndo_printer ndo_printers[] =3D {
+	{ ether_if_print,	DLT_EN10MB },
 #ifdef DLT_IPNET
 	{ ipnet_if_print,	DLT_IPNET },
 #endif
+#ifdef DLT_IEEE802_15_4
+	{ ieee802_15_4_if_print, DLT_IEEE802_15_4 },
+#endif
+#ifdef DLT_IEEE802_15_4_NOFCS
+	{ ieee802_15_4_if_print, DLT_IEEE802_15_4_NOFCS },
+#endif
+#ifdef DLT_PPI
+	{ ppi_if_print,		DLT_PPI },
+#endif
+#ifdef DLT_NETANALYZER
+	{ netanalyzer_if_print, DLT_NETANALYZER },
+#endif
+#ifdef DLT_NETANALYZER_TRANSPARENT
+	{ netanalyzer_transparent_if_print, DLT_NETANALYZER_TRANSPARENT },
+#endif
 	{ NULL,			0 },
 };
=20
-static if_printer
+if_printer
 lookup_printer(int type)
 {
 	struct printer *p;
@@ -324,7 +339,7 @@
 	/* NOTREACHED */
 }
=20
-static if_ndo_printer
+if_ndo_printer
 lookup_ndo_printer(int type)
 {
 	struct ndo_printer *p;
@@ -361,6 +376,40 @@
 	pcap_dumper_t *p;
 };
=20
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+static void
+show_tstamp_types_and_exit(const char *device, pcap_t *pd)
+{
+	int n_tstamp_types;
+	int *tstamp_types =3D 0;
+	const char *tstamp_type_name;
+	int i;
+
+	n_tstamp_types =3D pcap_list_tstamp_types(pd, &tstamp_types);
+	if (n_tstamp_types < 0)
+		error("%s", pcap_geterr(pd));
+
+	if (n_tstamp_types =3D=3D 0) {
+		fprintf(stderr, "Time stamp type cannot be set for %s\n",
+		    device);
+		exit(0);
+	}
+	fprintf(stderr, "Time stamp types for %s (use option -j to set):\n",
+	    device);
+	for (i =3D 0; i < n_tstamp_types; i++) {
+		tstamp_type_name =3D pcap_tstamp_type_val_to_name(tstamp_types[i]);
+		if (tstamp_type_name !=3D NULL) {
+			(void) fprintf(stderr, "  %s (%s)\n", tstamp_type_name,
+			    pcap_tstamp_type_val_to_description(tstamp_types[i]));
+		} else {
+			(void) fprintf(stderr, "  %d\n", tstamp_types[i]);
+		}
+	}
+	pcap_free_tstamp_types(tstamp_types);
+	exit(0);
+}
+#endif
+
 static void
 show_dlts_and_exit(const char *device, pcap_t *pd)
 {
@@ -402,13 +451,13 @@
 			if (lookup_printer(dlts[n_dlts]) =3D=3D NULL
                             && lookup_ndo_printer(dlts[n_dlts]) =3D=3D NUL=
L)
 				(void) fprintf(stderr, " (printing not supported)");
-			putchar('\n');
+			fprintf(stderr, "\n");
 		} else {
 			(void) fprintf(stderr, "  DLT %d (printing not supported)\n",
 			    dlts[n_dlts]);
 		}
 	}
-	free(dlts);
+	pcap_free_datalinks(dlts);
 	exit(0);
 }
=20
@@ -430,6 +479,16 @@
 #define I_FLAG
 #endif /* HAVE_PCAP_CREATE */
=20
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+#define j_FLAG		"j:"
+#define j_FLAG_USAGE	" [ -j tstamptype ]"
+#define J_FLAG		"J"
+#else /* PCAP_ERROR_TSTAMP_TYPE_NOTSUP */
+#define j_FLAG
+#define j_FLAG_USAGE
+#define J_FLAG
+#endif /* PCAP_ERROR_TSTAMP_TYPE_NOTSUP */
+
 #ifdef HAVE_PCAP_FINDALLDEVS
 #ifndef HAVE_PCAP_IF_T
 #undef HAVE_PCAP_FINDALLDEVS
@@ -574,6 +633,7 @@
 	if(wsockinit() !=3D 0) return 1;
 #endif /* WIN32 */
=20
+	jflag=3D-1;	/* not set */
         gndo->ndo_Oflag=3D1;
 	gndo->ndo_Rflag=3D1;
 	gndo->ndo_dlt=3D-1;
@@ -600,9 +660,8 @@
 	smiInit("tcpdump");
 #endif
=20
-	opterr =3D 0;
 	while (
-	    (op =3D getopt(argc, argv, "aAb" B_FLAG "c:C:d" D_FLAG "eE:fF:G:i:" I=
_FLAG "KlLm:M:nNOpqr:Rs:StT:u" U_FLAG "vw:W:xXy:Yz:Z:")) !=3D -1)
+	    (op =3D getopt(argc, argv, "aAb" B_FLAG "c:C:d" D_FLAG "eE:fF:G:hHi:"=
 I_FLAG j_FLAG J_FLAG "KlLm:M:nNOpqr:Rs:StT:u" U_FLAG "vw:W:xXy:Yz:Z:")) !=
=3D -1)
 		switch (op) {
=20
 		case 'a':
@@ -695,6 +754,14 @@
 			}
 			break;
=20
+		case 'h':
+			usage();
+			break;
+
+		case 'H':
+			++Hflag;
+			break;
+
 		case 'i':
 			if (optarg[0] =3D=3D '0' && optarg[1] =3D=3D 0)
 				error("Invalid adapter index");
@@ -742,6 +809,18 @@
 			break;
 #endif /* HAVE_PCAP_CREATE */
=20
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+		case 'j':
+			jflag =3D pcap_tstamp_type_name_to_val(optarg);
+			if (jflag < 0)
+				error("invalid time stamp type %s", optarg);
+			break;
+
+		case 'J':
+			Jflag++;
+			break;
+#endif
+
 		case 'l':
 #ifdef WIN32
 			/*
@@ -856,6 +935,8 @@
 				packettype =3D PT_TFTP;
 			else if (strcasecmp(optarg, "aodv") =3D=3D 0)
 				packettype =3D PT_AODV;
+			else if (strcasecmp(optarg, "carp") =3D=3D 0)
+				packettype =3D PT_CARP;
 			else
 				error("unknown packet type `%s'", optarg);
 			break;
@@ -1034,6 +1115,10 @@
 		pd =3D pcap_create(device, ebuf);
 		if (pd =3D=3D NULL)
 			error("%s", ebuf);
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+		if (Jflag)
+			show_tstamp_types_and_exit(device, pd);
+#endif
 		/*
 		 * Is this an interface that supports monitor mode?
 		 */
@@ -1043,16 +1128,16 @@
 			supports_monitor_mode =3D 0;
 		status =3D pcap_set_snaplen(pd, snaplen);
 		if (status !=3D 0)
-			error("%s: pcap_set_snaplen failed: %s",
+			error("%s: Can't set snapshot length: %s",
 			    device, pcap_statustostr(status));
 		status =3D pcap_set_promisc(pd, !pflag);
 		if (status !=3D 0)
-			error("%s: pcap_set_promisc failed: %s",
+			error("%s: Can't set promiscuous mode: %s",
 			    device, pcap_statustostr(status));
 		if (Iflag) {
 			status =3D pcap_set_rfmon(pd, 1);
 			if (status !=3D 0)
-				error("%s: pcap_set_rfmon failed: %s",
+				error("%s: Can't set monitor mode: %s",
 				    device, pcap_statustostr(status));
 		}
 		status =3D pcap_set_timeout(pd, 1000);
@@ -1062,9 +1147,17 @@
 		if (Bflag !=3D 0) {
 			status =3D pcap_set_buffer_size(pd, Bflag);
 			if (status !=3D 0)
-				error("%s: pcap_set_buffer_size failed: %s",
+				error("%s: Can't set buffer size: %s",
 				    device, pcap_statustostr(status));
 		}
+#ifdef HAVE_PCAP_SET_TSTAMP_TYPE
+                if (jflag !=3D -1) {
+			status =3D pcap_set_tstamp_type(pd, jflag);
+			if (status < 0)
+				error("%s: Can't set time stamp type: %s",
+			    	    device, pcap_statustostr(status));
+		}
+#endif
 		status =3D pcap_activate(pd);
 		if (status < 0) {
 			/*
@@ -1170,14 +1263,40 @@
 	(void)setsignal(SIGPIPE, cleanup);
 	(void)setsignal(SIGTERM, cleanup);
 	(void)setsignal(SIGINT, cleanup);
+#endif /* WIN32 */
+#if defined(HAVE_FORK) || defined(HAVE_VFORK)
 	(void)setsignal(SIGCHLD, child_cleanup);
-#endif /* WIN32 */
+#endif
 	/* Cooperate with nohup(1) */
 #ifndef WIN32=09
 	if ((oldhandler =3D setsignal(SIGHUP, cleanup)) !=3D SIG_DFL)
 		(void)setsignal(SIGHUP, oldhandler);
 #endif /* WIN32 */
=20
+#ifndef WIN32
+	/*
+	 * If a user name was specified with "-Z", attempt to switch to
+	 * that user's UID.  This would probably be used with sudo,
+	 * to allow tcpdump to be run in a special restricted
+	 * account (if you just want to allow users to open capture
+	 * devices, and can't just give users that permission,
+	 * you'd make tcpdump set-UID or set-GID).
+	 *
+	 * Tcpdump doesn't necessarily write only to one savefile;
+	 * the general only way to allow a -Z instance to write to
+	 * savefiles as the user under whose UID it's run, rather
+	 * than as the user specified with -Z, would thus be to switch
+	 * to the original user ID before opening a capture file and
+	 * then switch back to the -Z user ID after opening the savefile.
+	 * Switching to the -Z user ID only after opening the first
+	 * savefile doesn't handle the general case.
+	 */
+	if (getuid() =3D=3D 0 || geteuid() =3D=3D 0) {
+		if (username || chroot_dir)
+			droproot(username, chroot_dir);
+	}
+#endif /* WIN32 */
+
 	if (pcap_setfilter(pd, &fcode) < 0)
 		error("%s", pcap_geterr(pd));
 	if (WFileName) {
@@ -1207,6 +1326,10 @@
 			callback =3D dump_packet;
 			pcap_userdata =3D (u_char *)p;
 		}
+#ifdef HAVE_PCAP_DUMP_FLUSH
+		if (Uflag)
+			pcap_dump_flush(p);
+#endif
 	} else {
 		type =3D pcap_datalink(pd);
                 printinfo.ndo_type =3D 1;
@@ -1227,16 +1350,7 @@
 		callback =3D print_packet;
 		pcap_userdata =3D (u_char *)&printinfo;
 	}
-#ifndef WIN32
-	/*
-	 * We cannot do this earlier, because we want to be able to open
-	 * the file (if done) for writing before giving up permissions.
-	 */
-	if (getuid() =3D=3D 0 || geteuid() =3D=3D 0) {
-		if (username || chroot_dir)
-			droproot(username, chroot_dir);
-	}
-#endif /* WIN32 */
+
 #ifdef SIGINFO
 	/*
 	 * We can't get statistics when reading from a file rather
@@ -1365,13 +1479,13 @@
   On windows, we do not use a fork, so we do not care less about
   waiting a child processes to die
  */
-#ifndef WIN32
+#if defined(HAVE_FORK) || defined(HAVE_VFORK)
 static RETSIGTYPE
 child_cleanup(int signo _U_)
 {
   wait(NULL);
 }
-#endif /* WIN32 */
+#endif /* HAVE_FORK && HAVE_VFORK */
=20
 static void
 info(register int verbose)
@@ -1392,34 +1506,41 @@
 	if (!verbose)
 		fprintf(stderr, "%s: ", program_name);
=20
-	(void)fprintf(stderr, "%u packets captured", packets_captured);
+	(void)fprintf(stderr, "%u packet%s captured", packets_captured,
+	    PLURAL_SUFFIX(packets_captured));
 	if (!verbose)
 		fputs(", ", stderr);
 	else
 		putc('\n', stderr);
-	(void)fprintf(stderr, "%u packets received by filter", stat.ps_recv);
+	(void)fprintf(stderr, "%u packet%s received by filter", stat.ps_recv,
+	    PLURAL_SUFFIX(stat.ps_recv));
 	if (!verbose)
 		fputs(", ", stderr);
 	else
 		putc('\n', stderr);
-	(void)fprintf(stderr, "%u packets dropped by kernel", stat.ps_drop);
+	(void)fprintf(stderr, "%u packet%s dropped by kernel", stat.ps_drop,
+	    PLURAL_SUFFIX(stat.ps_drop));
 	if (stat.ps_ifdrop !=3D 0) {
 		if (!verbose)
 			fputs(", ", stderr);
 		else
 			putc('\n', stderr);
-		(void)fprintf(stderr, "%u packets dropped by interface\n",
-		    stat.ps_ifdrop);
+		(void)fprintf(stderr, "%u packet%s dropped by interface\n",
+		    stat.ps_ifdrop, PLURAL_SUFFIX(stat.ps_ifdrop));
 	} else
 		putc('\n', stderr);
 	infoprint =3D 0;
 }
=20
-#ifndef WIN32
+#if defined(HAVE_FORK) || defined(HAVE_VFORK)
 static void
 compress_savefile(const char *filename)
 {
+# ifdef HAVE_FORK
 	if (fork())
+# else
+	if (vfork())
+# endif
 		return;
 	/*
 	 * Set to lowest priority so that this doesn't disturb the capture
@@ -1435,15 +1556,20 @@
 			zflag,
 			filename,
 			strerror(errno));
+# ifdef HAVE_FORK
+	exit(1);
+# else
+	_exit(1);
+# endif
 }
-#else  /* WIN32 */
+#else  /* HAVE_FORK && HAVE_VFORK */
 static void
 compress_savefile(const char *filename)
 {
 	fprintf(stderr,
-		"compress_savefile failed. Functionality not implemented under windows\n=
");
+		"compress_savefile failed. Functionality not implemented under your syst=
em\n");
 }
-#endif /* WIN32 */
+#endif /* HAVE_FORK && HAVE_VFORK */
=20
 static void
 dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_c=
har *sp)
@@ -1782,17 +1908,17 @@
 #endif /* WIN32 */
 #endif /* HAVE_PCAP_LIB_VERSION */
 	(void)fprintf(stderr,
-"Usage: %s [-aAbd" D_FLAG "ef" I_FLAG "KlLnNOpqRStu" U_FLAG "vxX]" B_FLAG_=
USAGE " [ -c count ]\n", program_name);
+"Usage: %s [-aAbd" D_FLAG "efhH" I_FLAG J_FLAG "KlLnNOpqRStu" U_FLAG "vxX]=
" B_FLAG_USAGE " [ -c count ]\n", program_name);
 	(void)fprintf(stderr,
 "\t\t[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]\n");
 	(void)fprintf(stderr,
-"\t\t[ -i interface ] [ -M secret ] [ -r file ]\n");
+"\t\t[ -i interface ]" j_FLAG_USAGE " [ -M secret ]\n");
 	(void)fprintf(stderr,
-"\t\t[ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]\n");
+"\t\t[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]\n");
 	(void)fprintf(stderr,
-"\t\t[ -y datalinktype ] [ -z command ] [ -Z user ]\n");
+"\t\t[ -W filecount ] [ -y datalinktype ] [ -z command ]\n");
 	(void)fprintf(stderr,
-"\t\t[ expression ]\n");
+"\t\t[ -Z user ] [ expression ]\n");
 	exit(1);
 }
=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/02-sunrise-=
sunset-esp.puu
--- a/head/contrib/tcpdump/tests/02-sunrise-sunset-esp.puu	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-begin 644 02-sunrise-sunset-esp.pcap
-MU,.RH0(`!``````````````&```!``````````````"6````E@```!```&1D
-M11```&1D(P@`10``B/]G``!`,O:5P`$"%\`!`BT2-%9X`````4P at 12\\L)(1
-MTZ=3D(S>7($>.<3N@\_I:AY"K/TKAZJP719"NCKYP;PT(0+$"M%=3D]-X"`*8V.'
-M-'$1A]02"3N#OZI#&1R]A*1;`G8S at YFQ]<H7S))417Y9!E4:<$'CW)%VZ&_3
-M_]T`L+P1^!`PEP``````````E@```)8````0``!D9$40``!D9",(`$4``(C_
-M:```0#+VE,`!`A?``0(M$C16>`````(:<$'CW)%VZ',2KQMB at CN?'"^GJ<=3D:
-MD-0`+.V^J'2AK).'XQ_B"B8:[%A_+K[6KS2'XR[UN`,R"BJP?^].ZM#/[$)#
-M17^!D"8_[BZ>GU4Z*$7I"N$U*>J47?C-4;I>#`%6+#0%]D75YC']*Z\`````
-M`````)8```"6````$```9&1%$```9&0C"`!%``"(_VD``$`R]I/``0(7P`$"
-M+1(T5G@````#7?C-4;I>#`%@W%89?QJ#$TJ,4G\FO&HO=3DF+,,%1E(]);XI]T
-MV7W.RY$2=3DJZ1%!QCNX[;^.JD4W91;7)NJWV2MF4?7`=3D&_3OWW%V&6RIXKB75
-M#;2TWNL"A:MF!I at _5R^]L6;Z`L?E at 1:T&71G``````````"6````E@```!``
-M`&1D11```&1D(P@`10``B/]J``!`,O:2P`$"%\`!`BT2-%9X````!*MF!I at _
-M5R^]%';9*Q:S_B]]O_8FV:2K1A!]/SQHI7>OS815*I?4%/:.=3DBBJUEGJ(X8\
-M<SZ>P1E/@&P\9MR)DP3[UCWI@,MR%A$\CR]=3DG(("[CFB7AUN$AENZOO&\:7%
-M2KLW<'NP,L(I=3D!;8=3D0``````````E@```)8````0``!D9$40``!D9",(`$4`
-M`(C_:P``0#+VD<`!`A?``0(M$C16>`````5NZOO&\:7%2J12,9;LOK"-S,=3D$
-MO0]X+J(OJQED#PLBRY[\^352UZK&57<R0L9JQ:KH6`)BUN$`5]1WU@"A!8TM
-MO^)<;`-SW;1HQO$CE\#`O[W[17GW[0G&M,^T?7>6,Z<:%73AWV3:;Y/:=3D@(`
-M`````````)8```"6````$```9&1%$```9&0C"`!%``"(_VP``$`R]I#``0(7
-MP`$"+1(T5G@````&M,^T?7>6,Z=3D>N_YZQFV[H1^6\!/I*IMAOHZE\E0M.Z!X
-M#[0EG3#>%]7`]*2F?@S4X2''TK09J at NG/.HEXCE./..K^'-@":X[\?0L+B`S
-MQA\HTK\'J]:S]N6O`]\)NQD)9;H2P\K`^NX37`R5``````````"6````E@``
-M`!```&1D11```&1D(P@`10``B/]M``!`,O:/P`$"%\`!`BT2-%9X````!^6O
-M`]\)NQD)>BYZ>`/DA=3DN;A2...3-7FZOK?:5KGXBN`/E?$\[-11-$G#E;(>N"
-M+<$/YP'SM$>16LU18&Q]9)$]0)/M]:2Z#A6]-,SM*>FI/`X*K-*-:KS3IW<"
-MO(>(P(K=3D:X::SJ;O[J>0K```````````E@```)8````0``!D9$40``!D9",(
-M`$4``(C_;@``0#+VCL`!`A?``0(M$C16>`````C3IW<"O(>(P'-43;C[`MCD
-M`BMZAX]F!?'Z$8Q"5HYMVDC9"8I^O(Z4!/)`/IVD-(ZK)_52-H2XK+,(-LR)
-MM)K#XLF">KY0>C?\[MA%3F%$?ORJ@:>O]5H>?-$OQH)J<ZFOW_+K%G=3DUG0"[
-"G'T`
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/08-sunrise-=
sunset-aes.puu
--- a/head/contrib/tcpdump/tests/08-sunrise-sunset-aes.puu	Wed Jul 25 16:20=
:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-begin 644 08-sunrise-sunset-aes.pcap
-MU,.RH0(`!``````````````&```!``````````````"F````I@```!```&1D
-M11```&1D(P@`10``F/SJ``!`,OD"P`$"%\`!`BW1(T5G`````>:['.C0J(%P
-MVF'>(TU6&*"9A,`,/KS\:>DH>O_L(51)_[YY"L<H#LJ/;(BQ)=3D[*$<APY/A1
-M-"T@(`_Q&)S!C)$*7S?G3Q4H\F=3D)OYF+P at S&11%^*]S)N at L*TZ@!:&&:QFZT
-ML'#7<>9?8'?J4V:_.]B+6UR\T>39D+=3DNA;$``````````*8```"F````$```
-M9&1%$```9&0C"`!%``"8_.L``$`R^0'``0(7P`$"+=3D$C16<````";K2P<-=3DQ
-MYE]@=3D^I39K\[V$1HDU9'L,6BVK.^B4]E6QY&:?3?T)G?"RSU;X!J]]7S)<`,
-M*L!SYO^RUWR?!EIJMWU=3D5B406YL-I`]LK`^;-3%(NEY#R`ST=3DW40=3D:*[M$*8
-M#<KX)19 at .`.4_5YD^:V;G at 3>`GLTK(5ZCS"BC@``````````I@```*8````0
-M``!D9$40``!D9",(`$4``)C\[```0#+Y`,`!`A?``0(MT2-%9P````,-RO at E
-M%F`X`Y3]7F3YK9N>=3D6-;U&'6">_4H80DMY^Z9E3ZL3[ONN*L<"Z at 7(VO]XT^
-M/2JP<(/^8NTO-4\/B5AJEC4N;,\"7-&(;9AM_2G5A1C.[LBK3')P?AE;$I[)
-M!8N&RC?OTD7<V)AIU4,*E>7ELURFXRD/JD(:@RER``````````"F````I@``
-M`!```&1D11```&1D(P@`10``F/SM``!`,OC_P`$"%\`!`BW1(T5G````!(;*
-M-^_21=3DS8F&G50PJ5Y>5K%@R;)A(E<5YD'@86 at GT"-&&MHP*.A=3D?%=3D:FDZH=3D4
-M*9":>]'G'CB4%2?PJ"2^H*51\8P!9T`X3#;F+H$[<GW7=3D?K.R30-'6'L3AO8
-MR=3D:M3S$GIZ>4Z$7ZL0<\S=3DS\%`:BW9U2'@U^@D,,:.P``````````*8```"F
-M````$```9&1%$```9&0C"`!%``"8_.X``$`R^/[``0(7P`$"+=3D$C16<````%
-M,2>GIY3H1?JQ!SS-W/P4!BW&*&A[$!XGK<^M^>_X193"G"1QTWG>Q"CO25$"
-MPM+1+8[6&(17\EE\P:6-WVPT=3D911?@'-Z,,/UVZ2!QV(X4513U9]P62CJMS>
-M^ODBGHU=3D%T.H2&Z<4,8(!4,2[&A4^H=3D"L:+`=3D4G?*(7,2@``````````I@``
-M`*8````0``!D9$40``!D9",(`$4``)C\[P``0#+X_<`!`A?``0(MT2-%9P``
-M``870ZA(;IQ0Q@@%0Q+L:%3Z@*HQPZA]3STWDY#CYJGOJH)K<KVT9G61>>I'
-MEHMF"X!^G,H@,YWT7^=3D60.3/$7?AYH)G9GBD%%#,D]!EDA]B*?UE>U96+"5\
-MK=3D""/.LO'__^;$N<E@!.2&3^@U:P__8_'D^YC!41E,!@!6<K``````````"F
-M````I@```!```&1D11```&1D(P@`10``F/SP``!`,OC\P`$"%\`!`BW1(T5G
-M````!_YL2YR6`$Y(9/Z#5K#_]C_ZJU%7M?L23>I`L#D]@&G?Z7B2O#GI?NDK
-MF[7JPN,8V\H>%G+)'+%+FL*&\8+H2^KFWF5YQ:$4V!,1?G;=3DOYD;!,3YD'V(
-MW[Y!I(U=3DX9[\:L)(5GBJ,B!-5N$.CGV$VLD^R?Z,KL[AMI(ZC-P`````````
-M`*8```"F````$```9&1%$```9&0C"`!%``"8_/$``$`R^/O``0(7P`$"+=3D$C
-M16<````(PDA6>*HR($U6X0Z.?83:R;Y0<E/4SN)UX;Q:D$D%K(DZZ:^_\K$'
-MZQ81NT4KBGD#Z=3D_^`E^!HS*KHEJ!)!KE>&'2065/"*M'ELXD?1%3\L3TC.UK
-HKWB(C5O at 78>9LQ^<0Z6]F=3D:<;@[>L^;/\-6WB81[GX)<MS0B=3D>LGD@``
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/08-sunrise-=
sunset-esp2.puu
--- a/head/contrib/tcpdump/tests/08-sunrise-sunset-esp2.puu	Wed Jul 25 16:2=
0:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-begin 644 08-sunrise-sunset-esp2.pcap
-MU,.RH0(`!``````````````&```!``````````````#.````S@```!```&1D
-M11```&1D(P@`10``P"E-``!`,LQXP`$"%\`!`BT2-%9X`````4=3D!+\5+F8`+
-M[[NOU-#98*AO5\780X[VDXF at 2W8<10:J!'!Z!-[7N4CFNRKIH;PUA1SL"Y9\
-M-?_3N_,W/@*T+C/"]=3DS[`;D!/;`SR5,3+><9K.^\9N><18TY9Z\!I\S./L8R
-MFE53,S6Y5X_Z\(T)ZIUS?X$8>&(_MT1"!SV:VPP!\XU$[3S-5L)4-O"&>]`Z
-M1:./61=3D%C6`6U1/65"A&KUE902]*``````````#.````S@```!```&1D11``
-M`&1D(P@`10``P"E/``!`,LQVP`$"%\`!`BT2-%9X`````CIU^SX%;G^!GUSP
-MSA<?/8FY?L/'^2]6'&3[\-NES3E]33Z$Q]#7D9$8TFS5);?S?)ZJOP4;ZD-M
-M+0_/@#*U=3D7A9;FYR*5&/^V%MSFEM`DAZY,8'<0.9M^'::<M+M2G0LG6*S/[3
-M?T`IIJUJ[GW,L+&PH<AR&K(]^=3D[K7IMGD[`8[ONL8LD3AM`N@$S!*?=3D;*8=3D>
-ML7P6FM81),N>T/1Z'"P7H5;```````````#.````S@```!```&1D11```&1D
-M(P@`10``P"E1``!`,LQTP`$"%\`!`BT2-%9X`````R4)-P&F>HPK/?_$MTFC
-M^TOO=3D/L#W_APTK6MIH_BC*I7\L<,9(?/0M"HK3[T3F;(Y2V70$P5?D'7GFIB
-MJZ/C",S/BD!9N8GV"\.;GVME[P!@!B1"DT=3D1W0_75FMI23H!T2^C);4GY>`I
-M-2T^O_0_WU&$)&+/P)%[TQUQ-T7G%\RXYJT0HO</^*)F`^2<W8KTY.W<FK4K
-M8UC+J'.*X)NH%<UTK+K+``````````#.````S@```!```&1D11```&1D(P@`
-M10``P"E3``!`,LQRP`$"%\`!`BT2-%9X````!)`9]]SHKI[EGW4M?W8>[$=3D<
-M`@@TL1#(Y980]E*/!^2 at G`*&S9O^QMS1S?/`TL=3D5F9B(12?(145>Y2I+;+T?
-MKWUD@&.7U36]K-$[.%9CB*FK^E8>N:K/)4#$]ZO/:=3D#;MRH-)_139\,W6M4T
-M7SQ?BBX&GT,+A3#BB5^O=3D>+GKIC-4]5VBP)D-S<X2O)H[_/#M*T+&$\7PL.M
-M>7-)\W&;<@_J@,*!``````````#.````S@```!```&1D11```&1D(P@`10``
-MP"E5``!`,LQPP`$"%\`!`BT2-%9X````!0OIFA;, at 2C4HF3>5!-C(0>5LR0"
-M=3D'1\OQ.!-?@D(U0!453"<Q/!\*CDK.&OU'+WE:^7J8"AMS<@UYX*,<(&YA2Q
-MGQ(.3+0\#`!+`.TE,;\3:.<+F:?=3DT at .KOBL%VAAX9_RY$/^%$C+I*4&S<AM]
-MP*]SZ"RD'G.AJH76?SV&2HQLF+!J/QZ;.:<LB::-]+AE1+&);M^]`XZ-W2CX
-M+&CPZINP*9?>``````````#.````S@```!```&1D11```&1D(P@`10``P"E7
-M``!`,LQNP`$"%\`!`BT2-%9X````!I0M"-THEF=3D+!L=3D>A3N,\1+"'Z7(J?O0
-M.B?)(#X=3D/5F-.">%3.X'(=3DJKK:W<MZF2^8#73C[US$-O&ZZ+L:94R9E2#=3DJ=3D
-M18HP?AN`5^)A+HW6EB*5P=3DAZ(S"\TIBZ'\.=3D]4A,#18'0/R_#C:4XX_?>ZMN
-M=3DB+^Q3"(KE\1299]=3D5E,'.&U(`H9N)+>9FS/`CA*>D^>AV.-C(S\)BM&)*XM
-M^BF__^<_``````````#.````S@```!```&1D11```&1D(P@`10``P"E9``!`
-M,LQLP`$"%\`!`BT2-%9X````!R"SQ'[6%(;Q>>O+]CS6D*+AD3IMC\^MMK8[
-M:T3)KM06!G^.H\>%UAT@)X6JL9\3V.HR"+_Q^_T-O$Y_S":_TP;V,LIV1O]H
-M-G at DOL'V-5)O@%<%!#O$2V,AS at W7(&$IX.YKK]\K#>FITU)<>O42T2GKFW+^
-M\/[,>E4P[Q"+7O,Y1(R22LND[H+469(%3,SN&3:U:/I`'&R@<`<TR"-4:&8+
-MQ5SX``````````#.````S@```!```&1D11```&1D(P@`10``P"E;``!`,LQJ
-MP`$"%\`!`BT2-%9X````"*',]A6A,Q(*B+]=3D&6X&T*L^\)Z6N%,G)(.;6X-K
-MM@&4<FRJ]#IJ%Y'-^T+4[&;0;_%7HM85LR8W(>HKGOV,^#L9,QF%)W^9!VFM
-MXG'XY]CWI5VF33?7,*P?6:.PS'&[\N$7W<*=3D=3D+;P*$./4*OH&=3DO,6G!JIN>I
-M'ZDP*D&4K>SK-\/!7\Z&<&5J4%NU?NRM&25'*_"'UE3VH&?U]/V at 932UYZT\
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/TESTLIST
--- a/head/contrib/tcpdump/tests/TESTLIST	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-# BGP test
-bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -t -v=20
-
-# EAP tests
-eapon1 eapon1.pcap eapon1.out -t=20
-
-# ESP tests
-esp0 02-sunrise-sunset-esp.pcap esp0.out -t=20
-esp1 02-sunrise-sunset-esp.pcap esp1.out -t -E "0x12345678 at 192.1.2.45 3des=
-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758"=20
-esp2 08-sunrise-sunset-esp2.pcap esp2.out -t -E "0x12345678 at 192.1.2.45 3de=
s-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@=
192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f515152525454575758404=
3"
-esp3 02-sunrise-sunset-esp.pcap esp1.out -t -E "3des-cbc-hmac96:0x40434345=
45464649494a4a4c4c4f4f515152525454575758"
-esp4 08-sunrise-sunset-esp2.pcap esp2.out -t -E "file esp-secrets.txt"
-esp5 08-sunrise-sunset-aes.pcap esp5.out -t -E "file esp-secrets.txt"
-espudp1 espudp1.pcap espudp1.out -t -E "file esp-secrets.txt"
-
-# ISAKMP tests
-isakmp1 isakmp-delete-segfault.pcap isakmp1.out -t=20
-isakmp2 isakmp-pointer-loop.pcap    isakmp2.out -t
-isakmp3 isakmp-identification-segfault.pcap isakmp3.out -t -v
-isakmp4 isakmp4500.pcap             isakmp4.out -t -E "file esp-secrets.tx=
t"
-
-# LMP tests (what is it?)
-# fails right now.
-#lmp     lmp.pcap                    lmp.out -t -v -v
-
-# MPLS tests
-mpls-ldp-hello	mpls-ldp-hello.pcap	mpls-ldp-hello.out -t -v
-
-# OSPF tests
-ospf-gmpls	ospf-gmpls.pcap		ospf-gmpls.out	-t -v
-
-# IKEv2 tests
-ikev2four	ikev2four.pcap		ikev2four.out	-t -v
-ikev2fourv	ikev2four.pcap		ikev2fourv.out	-t -v -v -v=20
-ikev2fourv4	ikev2four.pcap		ikev2fourv4.out	-t -v -v -v -v
-ikev2pI2	ikev2pI2.pcap		ikev2pI2.out	-t -E "file ikev2pI2-secrets.txt" -v =
-v -v -v
-
-# IETF ROLL RPL packets
-dio01           dio.pcap                dio.out         -t -v
-
-# IPNET encapsulated site
-e1000g		e1000g.pcap		e1000g.out	-t
-
-# IETF FORCES WG packets and printer
-forces01        forces1.pcap            forces1.out     -t
-forces02        forces2.pcap            forces2.out     -t
-forces02v       forces2.pcap            forces2v.out    -t -v
-forces02vv      forces2.pcap            forces2vv.out   -t -v -v
-forces01vvv     forces1.pcap            forces1vvv.out  -t -v -v -v=20
-forces01vvvv    forces1.pcap            forces1vvvv.out -t -v -v -v -v
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/TESTonce
--- a/head/contrib/tcpdump/tests/TESTonce	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-#!/usr/bin/perl
-
-system("mkdir -p NEW DIFF");
-
-if(@ARGV =3D=3D 1) {
-  open(TESTLIST, "TESTLIST") || die "can not open TESTLIST: $!\n";
-  $wanted =3D $ARGV[0];
-  #print "Searching for test case $wanted\n";
-  while(<TESTLIST>) {
-    #print "Processing $_\n";
-    next unless (/^$wanted/);
-
-    chop;
-    ($name,$input,$output,$options)=3Dsplit(/\s+/,$_, 4);
-    last;
-  }
-  close(TESTLIST);
-
-  die "Can not find test $wanted\n" unless defined($input);
-
-} elsif(@ARGV =3D=3D 4) {
-  $name=3D$ARGV[0];
-  $input=3D$ARGV[1];
-  $output=3D$ARGV[2];
-  $options=3D$ARGV[3];
-} else {
-  print "Usage: TESTonce name [input output options]\n";
-  exit 20;
-}
-
-print "Running $name. \n";
-print "   Input: $input, OUTPUT: $output, OPTIONS: $options\n";
-
-if (! -f $input) {
-  ($puu =3D $input) =3D~ s/\.pcap/\.puu/;
-  if( -f $puu) {
-    print "Uudecoding $puu to make $input\n";
-    system("uudecode $puu");
-  }
-}
-
-print "    ";
-exec("../tcpdump -n -r $input $options | tee NEW/$output | diff -w - $outp=
ut >DIFF/$output.diff");
- at cores =3D glob("core*");
-exit 10 if (@cores > 0);
-exit 0;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/TESTrun.sh
--- a/head/contrib/tcpdump/tests/TESTrun.sh	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-#!/bin/sh
-
-mkdir -p NEW
-mkdir -p DIFF
-passed=3D0
-failed=3D0
-
-# first run any specific tests.
-for i in *.sh
-do
-  case $i in TEST*.sh) continue;; esac
-
-  if sh ./$i >DIFF/$i.result
-  then
-      echo $i: passed.
-      rm -f DIFF/$i.result
-      passed=3D$(($passed + 1))
-  else
-      echo $i: failed.
-      failed=3D$(($failed + 1))
-  fi         =20
-done=20
-
-echo $passed >.passed
-echo $failed >.failed
-
-# now run typical tests
-cat TESTLIST | while read name input output options
-do
-  case $name in
-      \#*) continue;;
-      '') continue;;
-  esac
-
-  if ./TESTonce $name $input $output "$options"
-  then
-      echo $name: passed.
-      rm -f DIFF/$output.diff
-      passed=3D$(($passed + 1))
-      echo $passed >.passed
-  else
-      echo $name: failed.
-      failed=3D$(($failed + 1))
-      echo $failed >.failed
-  fi
-done=20
-
-# I hate shells with their stupid, useless subshells.
-passed=3D`cat .passed`
-failed=3D`cat .failed`
-
-# exit with number of failing tests.
-echo=20
-echo
-printf "%4u tests failed\n" $failed
-printf "%4u tests passed\n" $passed
-echo
-echo
-exit $failed     =20
-
-
-
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/bgp-infinit=
e-loop.pcap
Binary file head/contrib/tcpdump/tests/bgp-infinite-loop.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/bgp_vpn_att=
rset.out
--- a/head/contrib/tcpdump/tests/bgp_vpn_attrset.out	Wed Jul 25 16:20:13 20=
12 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-IP (tos 0xc0, ttl 62, id 58628, offset 0, flags [none], proto TCP (6), len=
gth 173)
-    12.4.4.4.2051 > 12.1.1.1.179: Flags [P.], cksum 0xcf18 (correct), seq =
3293077573:3293077694, ack 3348108582, win 16384, options [nop,nop,TS val 3=
83131 ecr 890299], length 121: BGP, length: 121
-	Update Message (2), length: 121
-	  Origin (1), length: 1, Flags [T]: IGP
-	  AS Path (2), length: 0, Flags [T]: empty
-	  Local Preference (5), length: 4, Flags [T]: 100
-	  Extended Community (16), length: 8, Flags [OT]:=20
-	    target (0x0002), Flags [none]: 300:300 (=3D 0.0.1.44)
-	  Attribute Set (128), length: 36, Flags [OT]:=20
-	    Origin AS: 65001
-	      Origin (1), length: 1, Flags [T]: IGP
-	      AS Path (2), length: 4, Flags [T]: 5555=20
-	      Local Preference (5), length: 4, Flags [T]: 44
-	      Originator ID (9), length: 4, Flags [O]: 22.5.5.5
-	      Cluster List (10), length: 4, Flags [O]: 22.5.5.5
-	  Multi-Protocol Reach NLRI (14), length: 30, Flags [OE]:=20
-	    AFI: IPv4 (1), SAFI: labeled VPN Unicast (128)
-	    nexthop: RD: 0:0 (=3D 0.0.0.0), 12.4.4.4, nh-length: 12, no SNPA
-	      RD: 500:500 (=3D 0.0.1.244), 133.0.0.0/8, label:100208 (bottom)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/bgp_vpn_att=
rset.pcap
Binary file head/contrib/tcpdump/tests/bgp_vpn_attrset.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/chdlc-slarp=
-short.pcap
Binary file head/contrib/tcpdump/tests/chdlc-slarp-short.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/chdlc-slarp=
.pcap
Binary file head/contrib/tcpdump/tests/chdlc-slarp.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/dio.out
--- a/head/contrib/tcpdump/tests/dio.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::1000:ff:f=
e64:6423 > ff02::1: [icmp6 sum ok] ICMP6, RPL, length 24, DAG Information O=
bject [seq:10,instance:42,rank:1,dagid:thisismynicedag1]
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/dio.pcap
Binary file head/contrib/tcpdump/tests/dio.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/e1000g.out
--- a/head/contrib/tcpdump/tests/e1000g.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 0, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 0, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 1, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 1, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 2, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 2, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 3, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 3, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 4, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 4, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 5, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 5, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 6, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 6, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 7, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 7, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 8, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 8, length =
64
-IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 9, lengt=
h 64
-IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 9, length =
64
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/e1000g.pcap
Binary file head/contrib/tcpdump/tests/e1000g.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/eapon1.gdbi=
nit
--- a/head/contrib/tcpdump/tests/eapon1.gdbinit	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-set args -r eapon1.pcap
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/eapon1.out
--- a/head/contrib/tcpdump/tests/eapon1.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
-IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
-IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQU=
EST; BROADCAST
-ARP, Request who-has 192.168.1.1 tell 192.168.1.249, length 28
-ARP, Reply 192.168.1.1 is-at 00:0d:88:4f:25:91, length 46
-IP 192.168.1.249.68 > 192.168.1.1.67: BOOTP/DHCP, Request from 00:04:23:57=
:a5:7a, length 300
-EAP packet (0) v1, len 5
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-EAPOL start (1) v1, len 0
-EAP packet (0) v1, len 5
-EAP packet (0) v1, len 45
-EAP packet (0) v1, len 20
-EAP packet (0) v1, len 76
-EAP packet (0) v1, len 80
-EAP packet (0) v1, len 28
-EAP packet (0) v1, len 4
-EAPOL key (3) v1, len 57
-EAPOL key (3) v1, len 44
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-EAPOL start (1) v1, len 0
-EAP packet (0) v1, len 5
-EAP packet (0) v1, len 45
-EAP packet (0) v1, len 20
-EAP packet (0) v1, len 76
-EAP packet (0) v1, len 80
-EAP packet (0) v1, len 28
-EAP packet (0) v1, len 4
-EAPOL key (3) v1, len 57
-EAPOL key (3) v1, len 44
-ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
-ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
-ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
-IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
-IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-EAPOL start (1) v1, len 0
-EAP packet (0) v1, len 5
-EAP packet (0) v1, len 45
-EAP packet (0) v1, len 20
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-EAP packet (0) v1, len 76
-EAP packet (0) v1, len 80
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-EAP packet (0) v1, len 28
-EAP packet (0) v1, len 4
-EAPOL key (3) v1, len 57
-EAPOL key (3) v1, len 44
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRA=
TION; REQUEST; BROADCAST
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; R=
EQUEST; BROADCAST
-IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a=
5:7a, length 300
-EAPOL start (1) v1, len 0
-EAP packet (0) v1, len 5
-EAP packet (0) v1, len 45
-EAP packet (0) v1, len 20
-IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
-EAP packet (0) v1, len 76
-EAP packet (0) v1, len 80
-EAP packet (0) v1, len 28
-EAP packet (0) v1, len 4
-EAPOL key (3) v1, len 57
-EAPOL key (3) v1, len 44
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/eapon1.puu
--- a/head/contrib/tcpdump/tests/eapon1.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,368 +0,0 @@
-begin 644 eapon1.pcap
-MU,.RH0(`!````````````/__```!````"%5 at 0)*@#@#=3D````W0```/______
-M_P`$(U>E>@@`10``SSB'``"`$7Q.P*@!^<"H`?\`B@"*`+M3[!$.B1W`J`'Y
-M`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#
-M14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00#_4TU")0``````````````
-M`````````````````````!$```L```````````#H`P``````````"P!6``,`
-M`0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`"%5 at 0/2@#@#=3D
-M````W0```/_______P`$(U>E>@@`10``SSB(``"`$7Q-P*@!^<"H`?\`B@"*
-M`+L,\A$.B1[`J`'Y`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!
-M0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149&4$9004-!0@#_4TU"
-M)0```````````````````````````````````!$```L```````````#H`P``
-M````````"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353
-M,$H`"%5 at 0("C#@#[````^P```/_______P`$(U>E>@@`10``[3B)``"`$7PN
-MP*@!^<"H`?\`B@"*`-E#WA$.B1_`J`'Y`(H`PP``($5%14M&041*1$9&1$1!
-M14M#04-!0T%#04-!0T%#04%!`"!!0D%#1E!&4$5.1D1%0T9#15!&2$9$149&
-M4$9004-!0@#_4TU")0```````````````````````````````````!$``"D`
-M``````````#H`P``````````*0!6``,``0`!``(`.@!<34%)3%-,3U1<0E)/
-M5U-%``P`8.H``$%20D5)5%-'4E504$4``0`#"@`0`(!,_ at 0#1$I0.353,$H`
-M"%5 at 0/JI#@!<````7````/_______P`$(U>E>@@`10``3CB*``"`$7S,P*@!
-M^<"H`?\`B0")`#J"=3DXDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-&
-M1D9!1D%%1D-!0T%"3```(``!"55 at 0//8"@!<````7````/_______P`$(U>E
-M>@@`10``3CB-``"`$7S)P*@!^<"H`?\`B0")`#J"=3DXDA`1```0```````"!%
-M0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3```(``!"E5 at 0+,)!P!<
-M````7````/_______P`$(U>E>@@`10``3CB.``"`$7S(P*@!^<"H`?\`B0")
-M`#J"=3DXDA`1```0```````"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!
-M0T%"3```(``!"E5 at 0, at N#`#S````\P```/_______P`$(U>E>@@`10``Y3B/
-M``"`$7PPP*@!^<"H`?\`B@"*`-'GIA$.B2+`J`'Y`(H`NP``($5%14M&041*
-M1$9&1$1!14M#04-!0T%#04-!0T%#04-!`"!%0D9#14-%1D5*1D5&1$5(1D-&
-M1D9!1D%%1D-!0T%"3P#_4TU")0``````````````````````````````````
-M`!$``"$```````````#H`P``````````(0!6``,``0````(`,@!<34%)3%-,
-M3U1<0E)/5U-%``\`@/P*`$1*4#DU4S!*``!R`&\`<P`%`0,0!0`/`56J``U5
-M8$!5%0<`7````%P```#_______\`!"-7I7H(`$4``$XXE```@!%\PL"H`?G`
-MJ`'_`(D`B0`Z at G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&
-M049!149#04-!0DP``"```0Y58$`>10,`7````%P```#_______\`!"-7I7H(
-M`$4``$XXE0``@!%\P<"H`?G`J`'_`(D`B0`Z at G")*`$0``$````````@14)&
-M0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```0Y58$!0N`X`7```
-M`%P```#_______\`!"-7I7H(`$4``$XXE@``@!%\P,"H`?G`J`'_`(D`B0`Z
-M at G")*`$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!
-M0DP``"```0]58$#*.`<`*@```"H```#_______\`!"-7I7H(!@`!"``&!``!
-M``0C5Z5ZP*@!^0```````,"H`0$/56!`%UD'`#P````\``````0C5Z5Z``V(
-M3R61"`8``0@`!@0``@`-B$\ED<"H`0$`!"-7I7K`J`'Y````````````````
-M````````#U5 at 0"E9!P!6`0``5@$````-B$\ED0`$(U>E>@@`10`!2#B7``"`
-M$7S#P*@!^<"H`0$`1`!#`31YVP$!!@#(+24]CP&``,"H`?D`````````````
-M````!"-7I7H`````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````8X)38S4!!S8$P*@!`3T'
-M`0`$(U>E>O\`````````````````````````````````````````````````
-M``````]58$`6 at 0D`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!`0`%`0``
-M```````````````````````````````````````````````/56!`"BL*`%8!
-M``!6`0``________``0C5Z5Z"`!%``%(.)\``(`1`0<`````_____P!$`$,!
-M-,&K`0$&`)@7ASP````````````````````````````$(U>E>@``````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M``````````````````!C at E-C-0$!=3D`$!/0<!``0C5Z5Z, at 3`J`'Y#`A$2E`Y
-M-5,P2CP(35-&5"`U+C`W"P$/`P8L+B\?(?DK_P``````#U5 at 0![^#`!6`0``
-M5@$``/_______P`$(U>E>@@`10`!2#BA``"`$0$%`````/____\`1`!#`32.
-MS0$!!@#5`WTN````````````````````````````!"-7I7H`````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353
-M,$H\"$U31E0 at -2XP-PL!#P,&+"XO'R'Y*_\``````!!58$"$8P(`$P```!,`
-M````#,Z(,9H`!"-7I7J(C@$!````$%5 at 0.IK`@`\````/``````$(U>E>@`,
-MSH at QFHB.`0``!0$"``4!````````````````````````````````````````
-M`````````!%58$!>L`L`/P```#\`````#,Z(,9H`!"-7I7J(C@$``"T"`@`M
-M`3$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO=3DVQA;BYO<F<156!`
-M81`,`#P````\``````0C5Z5Z``S.B#&:B(X!```4`1``%!(*```/`@`"``$`
-M`!$!`0``````````````````````````````$55 at 0,VL#`!>````7@`````,
-MSH at QF@`$(U>E>HB.`0``3`(0`$P2"@``#@L`*#$R.34P,C,X,C`P,#4S.3%`
-M;6YC,#(S+FUC8S(Y-2YO=3DVQA;BYO<F<'!0``XM+Y<LO)&X'VQ\&EG)_*XA`!
-M``$156!`P?(,`&(```!B``````0C5Z5Z``S.B#&:B(X!``!0`1$`4!(+```!
-M#0``,````````````````````#$````````````````````R````````````
-M````````"P4``.OTCH!BE[/.*TUX]HB,9O8256!`LQD*`"X````N``````S.
-MB#&:``0C5Z5ZB(X!```<`A$`'!(+```+!0``#*NYLZ2O7U"%636?B,5I[A)5
-M8$`H=3D0H`/````#P`````!"-7I7H`#,Z(,9J(C@$```0#```$````````````
-M```````````````````````````````````````256!`%GD*`$L```!+````
-M``0C5Z5Z``S.B#&:B(X!`P`Y`0`-``!`8%41`)MJNAB%#R>L.*X:RH)3A8\F
-M`ET1,5U'QWV%1Z`@V,N=3D24.:\=3D%3TKI<SV/#HB:X$E5 at 0$Y\"@`^````/@``
-M```$(U>E>@`,SH at QFHB.`0,`+`$`#0``0&!5$0"<E?@]+KE3IY6RR"$-=3DDAO
-M3H-QX7H>=3D&X[D=3D]]>4;W^,JD$U5 at 0*@!#0!6`0``5@$``/_______P`$(U>E
-M>@@`10`!2#BG``"`$0#_`````/____\`1`!#`30ES`$!!@#5`WTN:0$`````
-M````````````````````!"-7I7H`````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````8X)3
-M8S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U31E0 at -2XP-PL!
-M#P,&+"XO'R'Y*_\``````!I58$#O`@T`5@$``%8!``#_______\`!"-7I7H(
-M`$4``4 at XKP``@!$`]P````#_____`$0`0P$T)<P!`08`U0-]+FD!````````
-M``````````````````0C5Z5Z````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````````````````````````````````````````````&."4V,U
-M`0%T`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\#
-M!BPN+Q\A^2O_```````J56!`^P(-`%8!``!6`0``________``0C5Z5Z"`!%
-M``%(.+(``(`1`/0`````_____P!$`$,!-"7,`0$&`-4#?2YI`0``````````
-M```````````````$(U>E>@``````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M``````````````````````````````````````````````````!C at E-C-0$!
-M=3D`$!/0<!``0C5Z5Z, at 3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U+C`W"P$/`P8L
-M+B\?(?DK_P``````,%5 at 0.B$"@`3````$P`````,SH at QF@`$(U>E>HB.`0$`
-M```P56!`^J$*`#P````\``````0C5Z5Z``S.B#&:B(X!```%`0,`!0$`````
-M````````````````````````````````````````````,%5 at 0)SA"@`_````
-M/P`````,SH at QF@`$(U>E>HB.`0``+0(#`"T!,3(Y-3`R,S at R,#`P-3,Y,4!M
-M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9S!58$#0!`P`/````#P`````!"-7I7H`
-M#,Z(,9J(C@$``!0!+P`4$@H```\"``(``0``$0$!````````````````````
-M```````````R56!`-$(%`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`B\`
-M3!(*```."P`H,3(Y-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N
-M+F]R9P<%``#7H!![\\SE,P[&']$W6C<%$`$``3)58$#,.`<`8@```&(`````
-M!"-7I7H`#,Z(,9J(C@$``%`!,`!0$@L```$-```P````````````````````
-M,0```````````````````#(````````````````````+!0``0WL?0G!%;49D
-M0(DL at MD'#C-58$!S4P(`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P",``<
-M$@L```L%``!%[_\P8H+&6U!$B#@$)T-",U5 at 0"'6`P`\````/``````$(U>E
-M>@`,SH at QFHB.`0``!`,```0`````````````````````````````````````
-M`````````````#-58$!=3DV@,`2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D!
-M``T``$!@53$`G7]!<++?0.3Y>#A83O[YHHT"0T@&N\)FL/6P9NHATX%<E?[@
-M45S@"_@>BIRI%B`S56!`F-T#`#X````^``````0C5Z5Z``S.B#&:B(X!`P`L
-M`0`-``!`8%4Q`)[N$`!R;$K*.XLG`JO9N"A#@XK>5*[_:U"C]E[O?""IR!5+
-M56!`]Q(-`"H````J````________``0C5Z5Z"`8``0@`!@0``0`$(U>E>JG^
-M0\(```````"I_D/"2U5 at 0'&!#0`J````*@```/_______P`$(U>E>@@&``$(
-M``8$``$`!"-7I7JI_D/"````````J?Y#PDQ58$`X@@T`*@```"H```#_____
-M__\`!"-7I7H(!@`!"``&!``!``0C5Z5ZJ?Y#P@```````*G^0\)-56!`*=3DH-
-M`*\```"O`````0!>?__Z``0C5Z5Z"`!%``"A.+X```$1HM.I_D/"[___^A#+
-M!VP`C6+X32U314%20T@@*B!(5%10+S$N,0T*2&]S=3D#HR,SDN,C4U+C(U-2XR
-M-3`Z,3DP,`T*4U0Z=3D7)N.G-C:&5M87,M=3D7!N<"UO<F<Z9&5V:6-E.DEN=3D&5R
-M;F5T1V%T97=3DA>41E=3DFEC93HQ#0I-86XZ(G-S9'`Z9&ES8V]V97(B#0I-6#HS
-M#0H-"DU58$"\Y`T`-@```#8````!`%X``!8`!"-7I7H(`$8``"@XP````0(>
-M.:G^0\+@```6E`0``"(`Z@,````!!````.____I-56!`OK4.`&X```!N````
-M________``0C5Z5Z"`!%``!@.,(``(`1:@RI_D/"J?[__P")`(D`3+4(B2XI
-M$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!```@
-M``'`#``@``$`!)/@``9@`*G^0\).56!`!H\*`#8````V`````0!>```6``0C
-M5Z5Z"`!&```H.,0```$"'C6I_D/"X```%I0$```B`.H#`````00```#O___Z
-M3E5 at 0!3E"@!N````;@```/_______P`$(U>E>@@`10``8#C%``"`$6H)J?Y#
-MPJG^__\`B0")`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%#
-M04-!0T%#04-!0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5 at 0#,6!P!N
-M````;@```/_______P`$(U>E>@@`10``8#C&``"`$6H(J?Y#PJG^__\`B0")
-M`$RU"(DN*1```0```````2!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!
-M0T%!00``(``!P`P`(``!``23X``&8`"I_D/"3U5 at 0*^U#0!6`0``5@$``/__
-M_____P`$(U>E>@@`10`!2#C'``"`$0#?`````/____\`1`!#`325:P$!!@"2
-M13E.``"`````````````````````````!"-7I7H`````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!^0P(1$I0.353,$H\"$U3
-M1E0 at -2XP-PL!#P,&+"XO'R'Y*_\``````%!58$`T1P,`;@```&X```#_____
-M__\`!"-7I7H(`$4``&`XR```@!%J!JG^0\*I_O__`(D`B0!,M at B)+B at 0``$`
-M``````$@145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!04$``"```<`,
-M`"```0`$D^``!F``J?Y#PE!58$",WPT`KP```*\````!`%Y___H`!"-7I7H(
-M`$4``*$XR@```1&BQZG^0\+O___Z$,L';`"-8OA-+5-%05)#2"`J($A45%`O
-M,2XQ#0I(;W-T.C(S.2XR-34N,C4U+C(U,#HQ.3`P#0I35#IU<FXZ<V-H96UA
-M<RUU<&YP+6]R9SID979I8V4Z26YT97)N971'871E=3DV%Y1&5V:6-E.C$-"DUA
-M;CHB<W-D<#ID:7-C;W9E<B(-"DU8.C,-"@T*4%5 at 0`"\#@!N````;@```/__
-M_____P`$(U>E>@@`10``8#C,``"`$6H"J?Y#PJG^__\`B0")`$PP]8DO*1``
-M`0```````2!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%!00``(``!
-MP`P`(``!``23X``&X`"I_D/"455 at 0#/A`P`3````$P`````,SH at QF@`$(U>E
-M>HB.`0$```!156!`8>D#`#P````\``````0C5Z5Z``S.B#&:B(X!```%`00`
-M!0$`````````````````````````````````````````````````455 at 0+TU
-M!``_````/P`````,SH at QF@`$(U>E>HB.`0``+0($`"T!,3(Y-3`R,S at R,#`P
-M-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9U%58$#Y[@4`/````#P`````
-M!"-7I7H`#,Z(,9J(C@$``!0!4``4$@H```\"``(``0``$0$!````````````
-M``````````````````!156!`9.L*`&X```!N````________``0C5Z5Z"`!%
-M``!@.,T``(`1:@&I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-%
-M0T5&14I&149$14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@
-M`*G^0\)256!`71P'`&X```!N````________``0C5Z5Z"`!%``!@.,X``(`1
-M:@"I_D/"J?[__P")`(D`3##UB2\I$``!```````!($5"1D-%0T5&14I&149$
-M14A&0T9&1D%&045&0T%#04%!```@``'`#``@``$`!)/@``;@`*G^0\)256!`
-M9[(.`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`E``3!(*```."P`H,3(Y
-M-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```Z)]TL
-M?V'JYOR&8?J))U]%$`$``5)58$`"$P\`8@```&(`````!"-7I7H`#,Z(,9J(
-MC@$``%`!40!0$@L```$-```P````````````````````,0``````````````
-M`````#(````````````````````+!0``*IFHOZ$\8[TX!>!F]%P6:%-58$!8
-M30,`;@```&X```#_______\`!"-7I7H(`$4``&`XSP``@!%I_ZG^0\*I_O__
-M`(D`B0!,,?6)+R at 0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!
-M149#04-!04$``"```<`,`"```0`$D^``!N``J?Y#PE-58$#M3`H`+@```"X`
-M````#,Z(,9H`!"-7I7J(C@$``!P"40`<$@L```L%``#BE(K>$<9]M,I(_ at G,
-MC).Y4U5 at 0`*=3D"@`\````/``````$(U>E>@`,SH at QFHB.`0``!`,```0`````
-M`````````````````````````````````````````````%-58$#CH`H`2P``
-M`$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@55(`GZN0MGOEA8[@4WO*
-M&_11@$@"&2ZIH`.YHY=3D=3D8)$_%6#R:U/Z"F'14BLDK,Z)I:%356!`&*0*`#X`
-M```^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%52`*!&UK1?K<RECIT@
-MY'<O#NGZ at YJ^O,Y at JP;?M,0[/;M1?PY356!`9+H-`%8!``!6`0``________
-M``0C5Z5Z"`!%``%(.-```(`1`-8`````_____P!$`$,!-&QJ`0$&`))%.4XI
-M`8`````````````````````````$(U>E>@``````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M``!C at E-C-0$!=3D`$!/0<!``0C5Z5Z, at 3`J`'Y#`A$2E`Y-5,P2CP(35-&5"`U
-M+C`W"P$/`P8L+B\?(?DK_P``````4U5 at 0)?A#0"O````KP````$`7G__^@`$
-M(U>E>@@`10``H3C2```!$:*_J?Y#PN____H0RP=3DL`(UB^$TM4T5!4D-(("H@
-M2%144"\Q+C$-"DAO<W0Z,C,Y+C(U-2XR-34N,C4P.C$Y,#`-"E-4.G5R;CIS
-M8VAE;6%S+75P;G`M;W)G.F1E=3DFEC93I);G1E<FYE=3D$=3DA=3D&5W87E$979I8V4Z
-M,0T*36%N.B)S<V1P.F1I<V-O=3DF5R(@T*35 at Z,PT*#0I356!`N<(.`&X```!N
-M````________``0C5Z5Z"`!%``[email protected]``(`1:?JI_D/"J?[__P")`(D`3+4$
-MB3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!
-M```@``'`#``@``$`!)/@``9@`*G^0\)356!`V,0.`&X```!N````________
-M``0C5Z5Z"`!%``[email protected]``(`1:?FI_D/"J?[__P")`(D`3"+RB3$I$``!````
-M```!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@
-M``$`!)/@``;@`*G^0\)456!`C/$*`&X```!N````________``0C5Z5Z"`!%
-M``[email protected]@``(`1:?:I_D/"J?[__P")`(D`3+4$B3`I$``!```````!($5%14M&
-M041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@``$`!)/@``9@
-M`*G^0\)456!`4?4*`&X```!N````________``0C5Z5Z"`!%``[email protected]``(`1
-M:?6I_D/"J?[__P")`(D`3"+RB3$I$``!```````!($5"1D-%0T5&14I&149$
-M14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@`*G^0\)556!`
-MB2('`&X```!N````________``0C5Z5Z"`!%``[email protected]``(`1:?2I_D/"J?[_
-M_P")`(D`3+4$B3`I$``!```````!($5%14M&041*1$9&1$1!14M#04-!0T%#
-M04-!0T%#04-!```@``'`#``@``$`!)/@``9@`*G^0\)556!`328'`&X```!N
-M````________``0C5Z5Z"`!%``[email protected]``(`1:?.I_D/"J?[__P")`(D`3"+R
-MB3$I$``!```````!($5"1D-%0T5&14I&149$14A&0T9&1D%&045&0T%#04)/
-M```@``'`#``@``$`!)/@``;@`*G^0\)656!`?%,#`&X```!N````________
-M``0C5Z5Z"`!%``[email protected]``(`1:?*I_D/"J?[__P")`(D`3+8$B3`H$``!````
-M```!($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04-!```@``'`#``@
-M``$`!)/@``9@`*G^0\)656!`1E<#`&X```!N````________``0C5Z5Z"`!%
-M``[email protected]``(`1:?&I_D/"J?[__P")`(D`3"/RB3$H$``!```````!($5"1D-%
-M0T5&14I&149$14A&0T9&1D%&045&0T%#04)/```@``'`#``@``$`!)/@``;@
-M`*G^0\)656!`R<P.`-T```#=3D````________``0C5Z5Z"`!%``#/..,``(`1
-M:7RI_D/"J?[__P"*`(H`NPE!$0Z),JG^0\(`B@"E```@145%2T9!1$I$1D9$
-M1$%%2T-!0T%#04-!0T%#04-!04$`($5"1D-%0T5&14I&149$14A&0T9&1D%&
-M045&0T%#04).`/]334(E````````````````````````````````````$0``
-M"P```````````.@#```````````+`%8``P`!``$``@`<`%Q-04E,4TQ/5%Q"
-M4D]74T4``@!$2E`Y-5,P2@!656!`W<T.`/,```#S````________``0C5Z5Z
-M"`!%``#E..0``(`1:66I_D/"J?[__P"*`(H`T1`"$0Z),ZG^0\(`B@"[```@
-M145%2T9!1$I$1D9$1$%%2T-!0T%#04-!0T%#04-!0T$`($5"1D-%0T5&14I&
-M149$14A&0T9&1D%&045&0T%#04).`/]334(E````````````````````````
-M````````````$0``(0```````````.@#```````````A`%8``P`!`````@`R
-M`%Q-04E,4TQ/5%Q"4D]74T4``0"`_`H`1$I0.353,$H````````!``4!`Q`!
-M``\!5:H`6%5 at 0+\L!P#=3D````W0```/_______P`$(U>E>@@`10``SSCF``"`
-M$6EYJ?Y#PJG^__\`B@"*`+L)/1$.B3:I_D/"`(H`I0``($5%14M&041*1$9&
-M1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!
-M1D%%1D-!0T%"3@#_4TU")0```````````````````````````````````!$`
-M``L```````````#H`P``````````"P!6``,``0`!``(`'`!<34%)3%-,3U1<
-M0E)/5U-%``(`1$I0.353,$H`655 at 0.K0#@#=3D````W0```/_______P`$(U>E
-M>@@`10``SSCG``"`$6EXJ?Y#PJG^__\`B@"*`+L)/!$.B3>I_D/"`(H`I0``
-M($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!`"!%0D9#14-%1D5*
-M1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0``````````````````````
-M`````````````!$```L```````````#H`P``````````"P!6``,``0`!``(`
-M'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`6U5 at 0-@R!P#=3D````W0``
-M`/_______P`$(U>E>@@`10``SSCH``"`$6EWJ?Y#PJG^__\`B@"*`+L).Q$.
-MB3BI_D/"`(H`I0``($5%14M&041*1$9&1$1!14M#04-!0T%#04-!0T%#04%!
-M`"!%0D9#14-%1D5*1D5&1$5(1D-&1D9!1D%%1D-!0T%"3@#_4TU")0``````
-M`````````````````````````````!$```L```````````#H`P``````````
-M"P!6``,``0`!``(`'`!<34%)3%-,3U1<0E)/5U-%``(`1$I0.353,$H`7%5@
-M0"2]#0!6`0``5@$``/_______P`$(U>E>@@`10`!2#CI``"`$0"]`````/__
-M__\`1`!#`31L:@$!!@"213E.*0&`````````````````````````!"-7I7H`
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````8X)38S4!`70!`3T'`0`$(U>E>C($P*@!
-M^0P(1$I0.353,$H\"$U31E0 at -2XP-PL!#P,&+"XO'R'Y*_\``````%Q58$`#
-MUPX`Z0```.D```#_______\`!"-7I7H(`$4``-LXZ@``@!%I::G^0\*I_O__
-M`(H`B@#';@L1#HDYJ?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%#04-!
-M0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0D\`
-M_U--0B4````````````````````````````````````1```7````````````
-MZ`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=3D310`(`2`/
-M`1!9L1D5`````$1*4#DU4S!*`%U58$#/UPX`Z0```.D```#_______\`!"-7
-MI7H(`$4``-LXZP``@!%I:*G^0\*I_O__`(H`B@#';@H1#HDZJ?Y#P@"*`+$`
-M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149%
-M2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4`````````````````````
-M```````````````1```7````````````Z`,``````````!<`5@`#``$``0`"
-M`"@`7$U!24Q33$]47$)23U=3D310`(`2`/`1!9L1D5`````$1*4#DU4S!*`%Y5
-M8$"+V`X`Z0```.D```#_______\`!"-7I7H(`$4``-LX[```@!%I9ZG^0\*I
-M_O__`(H`B@#';@D1#HD[J?Y#P@"*`+$``"!%145+1D%$2D1&1D1$045+0T%#
-M04-!0T%#04-!0T%!00`@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!
-M0D\`_U--0B4````````````````````````````````````1```7````````
-M````Z`,``````````!<`5@`#``$``0`"`"@`7$U!24Q33$]47$)23U=3D310`(
-M`2`/`1!9L1D5`````$1*4#DU4S!*`%]58$!)V0X`Z0```.D```#_______\`
-M!"-7I7H(`$4``-LX[0``@!%I9JG^0\*I_O__`(H`B@#';@@1#HD\J?Y#P@"*
-M`+$``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#
-M149%2D9%1D1%2$9#1D9&049!149#04-!0D\`_U--0B4`````````````````
-M```````````````````1```7````````````Z`,``````````!<`5@`#``$`
-M`0`"`"@`7$U!24Q33$]47$)23U=3D310`(`2`/`1!9L1D5`````$1*4#DU4S!*
-M`&!58$"CV at X`;@```&X```#_______\`!"-7I7H(`$4``&`X[@``@!%IX*G^
-M0\*I_O__`(D`B0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9#
-M1D9&049!149#04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF%58$#F"@L`
-M;@```&X```#_______\`!"-7I7H(`$4``&`X[P``@!%IWZG^0\*I_O__`(D`
-MB0!,H^:)/2D0``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#
-M04-!0DX``"```<`,`"```0`$D^``!F``J?Y#PF)58$#?.P<`;@```&X```#_
-M______\`!"-7I7H(`$4``&`X\```@!%IWJG^0\*I_O__`(D`B0!,H^:)/2D0
-M``$```````$@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"``
-M`<`,`"```0`$D^``!F``J?Y#PF-58$#9;`,`;@```&X```#_______\`!"-7
-MI7H(`$4``&`X\P``@!%IVZG^0\*I_O__`(D`B0!,I.:)/2 at 0``$```````$@
-M14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DX``"```<`,`"```0`$
-MD^``!F``J?Y#PF-58$"'X`X`;@```&X```#_______\`!"-7I7H(`$4``&`X
-M]```@!%IVJG^0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!%
-M3D9$14-&0T501DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y#
-MPF158$`/$0L`;@```&X```#_______\`!"-7I7H(`$4``&`X]0``@!%IV:G^
-M0\*I_O__`(D`B0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T50
-M1DA&1$5&1E!&4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF558$`&0@<`
-M;@```&X```#_______\`!"-7I7H(`$4``&`X]@``@!%IV*G^0\*I_O__`(D`
-MB0!,Z>R)/BD0``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&
-M4$%#04(``"```<`,`"```0`$D^``!N``J?Y#PF958$#^<@,`;@```&X```#_
-M______\`!"-7I7H(`$4``&`X]P``@!%IUZG^0\*I_O__`(D`B0!,ZNR)/B at 0
-M``$```````$@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(``"``
-M`<`,`"```0`$D^``!N``J?Y#PF958$!_Y at X`W0```-T```#_______\`!"-7
-MI7H(`$4``,\X^```@!%I9ZG^0\*I_O__`(H`B@"[%C41#HD_J?Y#P@"*`*4`
-M`"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!00`@14)&0T5#149%
-M2D9%1D1%2$9#1D9&049!149#04-!04$`_U--0B4`````````````````````
-M```````````````1```+````````````Z`,```````````L`5@`#``$``0`"
-M`!P`7$U!24Q33$]47$)23U=3D310`"`$1*4#DU4S!*`&958$!AYPX`W0```-T`
-M``#_______\`!"-7I7H(`$4``,\X^0``@!%I9JG^0\*I_O__`(H`B@"[SSH1
-M#HE`J?Y#P@"*`*4``"!%145+1D%$2D1&1D1$045+0T%#04-!0T%#04-!0T%!
-M00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#04(`_U--0B4`````
-M```````````````````````````````1```+````````````Z`,`````````
-M``L`5@`#``$``0`"`!P`7$U!24Q33$]47$)23U=3D310`"`$1*4#DU4S!*`&95
-M8$!PZ at X`^P```/L```#_______\`!"-7I7H(`$4``.TX^@``@!%I1ZG^0\*I
-M_O__`(H`B@#9)2,1#HE!J?Y#P@"*`,,``"!%145+1D%$2D1&1D1$045+0T%#
-M04-!0T%#04-!0T%!00`@04)!0T901E!%3D9$14-&0T501DA&1$5&1E!&4$%#
-M04(`_U--0B4````````````````````````````````````1```I````````
-M````Z`,``````````"D`5@`#``$``0`"`#H`7$U!24Q33$]47$)23U=3D310`,
-M`&#J``!!4D)%25131U)54%!%``$``PH`$`"`;/[%!D1*4#DU4S!*`&958$"4
-M\`X`7````%P```#_______\`!"-7I7H(`$4``$XX^P``@!%IY:G^0\*I_O__
-M`(D`B0`Z;]^)0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!
-M149#04-!0DP``"```6=3D58$`('PL`7````%P```#_______\`!"-7I7H(`$4`
-M`$XX_```@!%IY*G^0\*I_O__`(D`B0`Z;]^)0P$0``$````````@14)&0T5#
-M149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6A58$`&4`<`7````%P`
-M``#_______\`!"-7I7H(`$4``$XX_0``@!%IXZG^0\*I_O__`(D`B0`Z;]^)
-M0P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP`
-M`"```6M58$"J6P<`7````%P```#_______\`!"-7I7H(`$4``$XY`0``@!%I
-MWZG^0\*I_O__`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1%
-M2$9#1D9&049!149#04-!0DP``"```6Q58$`-BP,`7````%P```#_______\`
-M!"-7I7H(`$4``$XY`@``@!%IWJG^0\*I_O__`(D`B0`Z;]N)1P$0``$`````
-M```@14)&0T5#149%2D9%1D1%2$9#1D9&049!149#04-!0DP``"```6Q58$!%
-M_ at X`7````%P```#_______\`!"-7I7H(`$4``$XY!```@!%IW*G^0\*I_O__
-M`(D`B0`Z;]N)1P$0``$````````@14)&0T5#149%2D9%1D1%2$9#1D9&049!
-M149#04-!0DP``"```6U58$`7O at T`5@$``%8!``#_______\`!"-7I7H(`$4`
-M`4 at Y!@``@!$`H`````#_____`$0`0P$T;&H!`08`DD4Y3BD!@```````````
-M``````````````0C5Z5Z````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````````````````````````````````````````&."4V,U`0%T
-M`0$]!P$`!"-7I7HR!,"H`?D,"$1*4#DU4S!*/`A-4T94(#4N,#<+`0\#!BPN
-M+Q\A^2O_``````!Q56!`]:$*`!,````3``````S.B#&:``0C5Z5ZB(X!`0``
-M`'%58$!%P`H`/````#P`````!"-7I7H`#,Z(,9J(C@$```4!!0`%`0``````
-M``````````````````````````````````````````!Q56!`C?4*`#\````_
-M``````S.B#&:``0C5Z5ZB(X!```M`@4`+0$Q,CDU,#(S.#(P,#`U,SDQ0&UN
-M8S`R,RYM8V,R.34N;W=3DL86XN;W)G<55 at 0/XV"P`\````/``````$(U>E>@`,
-MSH at QFHB.`0``%`%P`!02"@``#P(``@`!```1`0$`````````````````````
-M`````````')58$#=3D.0P`\P```/,```#_______\`!"-7I7H(`$4``.4Y#```
-M@!%I/:G^0\*I_O__`(H`B@#1\^D1#HE*J?Y#P@"*`+L``"!%145+1D%$2D1&
-M1D1$045+0T%#04-!0T%#04-!0T%#00`@14)&0T5#149%2D9%1D1%2$9#1D9&
-M049!149#04-!0D\`_U--0B4````````````````````````````````````1
-M```A````````````Z`,``````````"$`5@`#``$````"`#(`7$U!24Q33$]4
-M7$)23U=3D310`/`(#\"@!$2E`Y-5,P2@``60!<`%4`!0$#$`4`#P%5J@!S56!`
-MJ'L$`%X```!>``````S.B#&:``0C5Z5ZB(X!``!,`G``3!(*```."P`H,3(Y
-M-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]W;&%N+F]R9P<%```)[DNV
-M]<TYOH8?&=3D*L`<`&$`$``7-58$#3Q`0`8@```&(`````!"-7I7H`#,Z(,9J(
-MC@$``%`!<0!0$@L```$-```P````````````````````,0``````````````
-M`````#(````````````````````+!0``4,1=3D:28,Y[A5';!-.W&=3DA7-58$"#
-M.0\`+@```"X`````#,Z(,9H`!"-7I7J(C@$``!P"<0`<$@L```L%``#,G3O*
-M(MF[ZP#.U#83NT:1=3D%5 at 0#-7```\````/``````$(U>E>@`,SH at QFHB.`0``
-M!`,```0``````````````````````````````````````````````````'15
-M8$`G6P``2P```$L`````!"-7I7H`#,Z(,9J(C@$#`#D!``T``$!@57(`H7=3DG
-MF]`<U=3D:Q_.ODF.0!O^<"RF-&L(?"6]$(GK,%9)J4;"'MPR]@Y#?:1B?;0,UT
-M56!`55X``#X````^``````0C5Z5Z``S.B#&:B(X!`P`L`0`-``!`8%5R`*(I
-@:.4"VF#:A*@Q;&CP#+\$@]3C#=3D%3<0P&M\#VWIK`IL$`
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/eapon2.puu
--- a/head/contrib/tcpdump/tests/eapon2.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-begin 644 eapon2.pcap
-MU,.RH0(`!````````````&`````!````_E1 at 0(0`#`!"````0@`````+VY#]
-M`@#@3UR$8`@`11``-"500``W!O$4U8'_>L&:EKBMN@`6*6Y2?^.:F>V`$/C@
-M9C@```$!"`H974FMBM15+Q!58$!QG`8`8````.L`````"]N0_0(`X$]<A&`(
-M`$4``-TH'P``]A%NH=3D6!_WK!FI:X5(X'%`#)!M0!%`#!,KA08YA%<^E. at .W\
-MVGEAG@$J,3(Y-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\056!``J0&
-M`&````"*```````,!ZR%``O;D/T""`!%``!\``!``$`1#2+!FI:XU8'_>@<4
-M5(X`:)P-"Q0`8$$!<I3L?-I\^CLZZ8W&J$<(!O____X,!@```D`&!@````)/
-M%@$0`!02"@``#P(``@`!$%5 at 0/N`!P!@````'`$````+VY#]`@#@3UR$8`@`
-M10`!#B@@``#V$6YOU8'_>L&:EKA4C@<4`/I,<`$5`/+M5G/\`0<0G:=3DQ]S4<
-MM<W1`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;Q!58$"?AP<`
-M8````,8```````P'K(4`"]N0_0((`$4``+@``4``0!$,Y<&:EKC5@?]Z!Q14
-MC@"D*@T+%0"<GZ at ST?&@X&3DA[P+.!KY+@@&_____ at P&```"0`8&`````D]2
-M`1$`4!(+```!#0``,``156!`QP`%`&````#L``````O;D/T"`.!/7(1@"`!%
-M``#>*"$``/81;I[5@?]ZP9J6N%2.!Q0`RHLB`18`PB*WG4W^01LM]B4XN&`'
-M6E(!*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO$55 at 0!P&!0!@
-M````!@$`````#`>LA0`+VY#]`@@`10``^``"0`!`$0RDP9J6N-6!_WH'%%2.
-M`.2>DP(6`-P04TN>&O"\WL%@,.`1V142"`;____^#`8```)`!@8````"&CH`
-M``$W$32`+U<1;LS62B]58$!:H at 8`8````.L`````"]N0_0(`X$]<A&`(`$4`
-M`-TH)```]A%NG-6!_WK!FI:X5(X'%`#)G_(!&`#!8I@\,J5DDRGEM>@M>A=3DG
-MB0$J,3(Y-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F\O56!`G*<&`&``
-M``"*```````,!ZR%``O;D/T""`!%``!\``-``$`1#1_!FI:XU8'_>@<45(X`
-M:#<F"Q@`8$VXJ\Z['F%^RCK?B4C^(6T(!O____X,!@```D`&!@````)/%@$O
-M`!02"@``#P(``@`!,55 at 0-S/`0!@````'`$````+VY#]`@#@3UR$8`@`10`!
-M#B at E``#V$6YJU8'_>L&:EKA4C@<4`/H2$P$9`/)6HP7H8R0(O<O]:/"4 at 0=3D%
-M`2HQ,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;S%58$!7U@$`8```
-M`,8```````P'K(4`"]N0_0((`$4``+@`!$``0!$,XL&:EKC5@?]Z!Q14C@"D
-MZ2,+&0"<(Y3XP!`C^NV)J[-Q+PU3"@@&_____ at P&```"0`8&`````D]2`3``
-M4!(+```!#0``,``Q56!`$JX-`&````#L``````O;D/T"`.!/7(1@"`!%``#>
-M*"8``/81;IG5@?]ZP9J6N%2.!Q0`R at WC`1H`PCS/?&QHIT8SX.[2#=3D[S68H!
-M*C$R.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO,55 at 0#VS#0!@````
-M!@$`````#`>LA0`+VY#]`@@`10``^``%0`!`$0RAP9J6N-6!_WH'%%2.`.3B
-MMP(:`-S*Z(?9H34)&AB0":D9<!O)"`;____^#`8```)`!@8````"&CH```$W
-M$321P=3DT3ADE-XU!58$"$D@``8````.L`````"]N0_0(`X$]<A&`(`$4``-TH
-M*```]A%NF-6!_WK!FI:X5(X'%`#)[%H!&P#!PB<W7,;1#%UAF"-V*ORC90$J
-M,3(Y-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]056!`8I<``&````"*
-M```````,!ZR%``O;D/T""`!%``!\``9``$`1#1S!FI:XU8'_>@<45(X`:#0%
-M"QL`8(N:^N5L(EK&#H6-':U$XV((!O____X,!@```D`&!@````)/%@%0`!02
-M"@``#P(``@`!455 at 0*VL"0!@````'`$````+VY#]`@#@3UR$8`@`10`!#B at I
-M``#V$6YFU8'_>L&:EKA4C@<4`/KDFP$<`/+H$R8P9(B"W[^G<4!"HKQ+`2HQ
-M,CDU,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;U%58$"ZL at D`8````,8`
-M``````P'K(4`"]N0_0((`$4``+@`!T``0!$,W\&:EKC5@?]Z!Q14C@"DI=3D at +
-M'`"<G^$P>;*!>&FY;C?2/)T74`@&_____ at P&```"0`8&`````D]2`5$`4!(+
-M```!#0``,`!256!`@SL%`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"H`
-M`/81;I75@?]ZP9J6N%2.!Q0`RI"T`1T`PE:^P6JH@]U$D*!C#8CO0UP!*C$R
-M.34P,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO4E5 at 0'M`!0!@````!@$`
-M````#`>LA0`+VY#]`@@`10``^``(0`!`$0R>P9J6N-6!_WH'%%2.`.2<&@(=3D
-M`-P&]WGHNB++Z0K&A"^B<2S/"`;____^#`8```)`!@8````"&CH```$W$32F
-M=3DDT@&\D[/G!58$!OW04`8````.L`````"]N0_0(`X$]<A&`(`$4``-TH*P``
-M]A%NE=3D6!_WK!FI:X5(X'%`#)*:D!'@#!I[D+3?C+./K-`/>AS"W^P0$J,3(Y
-M-3`R,S at R,#`P-3,Y,4!M;F,P,C,N;6-C,CDU+F]P56!`L>(%`&````"*````
-M```,!ZR%``O;D/T""`!%``!\``E``$`1#1G!FI:XU8'_>@<45(X`:`.V"QX`
-M8+P/!*Y!RZ>(/:C.%/A62\((!O____X,!@```D`&!@````)/%@%P`!02"@``
-M#P(``@`!<55 at 0)*H#@!@````'`$````+VY#]`@#@3UR$8`@`10`!#B at L``#V
-M$6YCU8'_>L&:EKA4C@<4`/JLH@$?`/*.M".D<>M4,KL=3D.(:"[-F;`2HQ,CDU
-M,#(S.#(P,#`U,SDQ0&UN8S`R,RYM8V,R.34N;W%58$#$K at X`8````,8`````
-M``P'K(4`"]N0_0((`$4``+@`"D``0!$,W,&:EKC5@?]Z!Q14C@"DK7D+'P"<
-MMWVPJO:XC`JEY#15<5U0Z@@&_____ at P&```"0`8&`````D]2`7$`4!(+```!
-M#0``,`!R56!`S#4*`&````#L``````O;D/T"`.!/7(1@"`!%``#>*"T``/81
-M;I+5@?]ZP9J6N%2.!Q0`RE>1`2``PK+"]?UCV]G1I<-+X16?0+L!*C$R.34P
-M,C,X,C`P,#4S.3%`;6YC,#(S+FUC8S(Y-2YO<E5 at 0,,Z"@!@````!@$`````
-M#`>LA0`+VY#]`@@`10``^``+0`!`$0R;P9J6N-6!_WH'%%2.`.1M%P(@`-PJ
-M=3D?H'6<1=3DUD&:FRVA,V+S"`;____^#`8```)`!@8````"&CH```$W$32RVRE=3D
-$I%P\00``
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp-secrets=
.txt
--- a/head/contrib/tcpdump/tests/esp-secrets.txt	Wed Jul 25 16:20:13 2012 +=
0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-# a comment
-
-0x12345678 at 192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f515152=
52545457575840
-0xabcdabcd at 192.0.1.1  3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f51515252=
54545757584043
-0xd1234567 at 192.1.2.45 aes256-cbc-hmac96:0xaaaabbbbccccdddd4043434545464649=
494a4a4c4c4f4f515152525454575758
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp0.out
--- a/head/contrib/tcpdump/tests/esp0.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x1), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x2), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x3), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x4), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x5), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x6), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x7), length 116
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x8), length 116
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp1.gdbinit
--- a/head/contrib/tcpdump/tests/esp1.gdbinit	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-set args -t -n -E "0x12345678 at 192.1.2.45 3des-cbc-hmac96:0x404343454546464=
9494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp1.out
--- a/head/contrib/tcpdump/tests/esp1.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x1), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x2), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x3), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x4), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x5), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x6), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x7), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x8), length 116: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (=
ipip-proto-4)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp2.gdbinit
--- a/head/contrib/tcpdump/tests/esp2.gdbinit	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-set args -t -n -E "0x12345678 at 192.1.2.45 3des-cbc-hmac96:0x434345454646494=
94a4a4c4c4f4f51515252545457575840,0xabcdabcd at 192.0.1.1 3des-cbc-hmac96:0x43=
4545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.p=
cap=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp2.out
--- a/head/contrib/tcpdump/tests/esp2.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x1), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x1), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x2), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x2), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x3), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x3), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x4), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x4), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x5), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x5), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x6), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x6), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x7), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x7), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipi=
p-proto-4) (ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0x12345678,seq=3D0x8), length 172: I=
P 192.1.2.23 > 192.0.1.1: ESP(spi=3D0xabcdabcd,seq=3D0x8), length 116: IP 1=
92.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipi=
p-proto-4) (ipip-proto-4)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp3.gdbinit
--- a/head/contrib/tcpdump/tests/esp3.gdbinit	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f515152525=
45457575840" -r 08-sunrise-sunset-esp2.pcap=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp4.gdbinit
--- a/head/contrib/tcpdump/tests/esp4.gdbinit	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap=20
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp5.gdbinit
--- a/head/contrib/tcpdump/tests/esp5.gdbinit	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap=20
-
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/esp5.out
--- a/head/contrib/tcpdump/tests/esp5.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x1), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x2), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x3), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x4), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x5), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x6), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x7), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (=
ipip-proto-4)
-IP 192.1.2.23 > 192.1.2.45: ESP(spi=3D0xd1234567,seq=3D0x8), length 132: I=
P 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (=
ipip-proto-4)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/espudp1.out
--- a/head/contrib/tcpdump/tests/espudp1.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x1), length 116
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x2), length 116:  ip-proto-227 49
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x3), length 116: PIMv13, length 10
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x4), length 116
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x5), length 116
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x6), length 116:  ip-proto-183 28
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x7), length 116:  ip-proto-72 34
-IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=3D0x12345678,seq=
=3D0x8), length 116:  ip-proto-224 59
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/espudp1.puu
--- a/head/contrib/tcpdump/tests/espudp1.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-begin 644 espudp1.pcap
-MU,.RH0(`!``````````````&```!``````````````">````G@```!```&1D
-M11```&1D(P@`10``D*8.``!`$5`(P`$"%\`!`BT1E!&4`'P``!(T5G@````!
-MIQI1WARY*2.,3*N>\E4-MV0"Q0&B9RG\CH]Z?F.J2U2J6?9"%WHI),PCC4.T
-MPHU1D2,KT6".3TG`1R:V$E7'FE[]PG%1#\!'O=3D1;9"P[#Q*U;DU12<9BO$:/
-M(AI2S*,BK5H_YVKC,]K'@[Y^``````````">````G@```!```&1D11```&1D
-M(P@`10``D*8/``!`$5`'P`$"%\`!`BT1E!&4`'P``!(T5G@````"*3$H)*^K
-MG65!9?U^[O>)/*D1"&WNUN@=3DBGJZV$;E12<$J$SGOAFJ!<5)O%=3DNY:HY\B$3
-M!*Q.N--U/:_F^;L-H0>[$9AU0\QP"`F5JD8GY307\SDD5=3DY\G@%('76R5O`G
-MA/2`=3D,$VWF]0[L\*``````````">````G@```!```&1D11```&1D(P@`10``
-MD*80``!`$5`&P`$"%\`!`BT1E!&4`'P``!(T5G@````#C]!\R;K$H/YX7>T6
-MZT6>/2I[+Q4&*]7A`VLB)[%A_/MKQMX-:R"-)DA.[G>)\5]KF#Z5:3L+JCMC
-MXDHKBE%/Q%D1VV#=3D?\3JEZ?8)&[3[(4F"4*0W"B)."[.?0U(7!!Z2_69:0DV
-M98H$8R%=3D``````````">````G@```!```&1D11```&1D(P@`10``D*81``!`
-M$5`%P`$"%\`!`BT1E!&4`'P``!(T5G@````$FV8=3D\*GR(@_[&TF2&3'AZ9)Q
-M*?@[(M!I:IE"@-?4W5TEZ-5@(F\613%V19L#%[XCJFJY^G4BVW"O\/*X\!A6
-M at 1<[4J(5+60M8]9R>$=3D\TU>XX7AB7\T'1W1HAPX[(KPTVN"*NEC)E/7 at 5D_1
-M``````````">````G@```!```&1D11```&1D(P@`10``D*82``!`$5`$P`$"
-M%\`!`BT1E!&4`'P``!(T5G@````%=3D at CRA49O0D;A1 at T5[WR$Q5?Y(\M[>D at C
-MRFK+$5I%Y8:85K`)&LZ.Q at G&N)8-RG at 2;GNYJ\2OC9ZV?,IT7HJU7K&DM/1_
-M:K+-8KXY4?22*8=3D.1 at O<,#R&;^R2P`>PAR9E7*>!>3*D24OK4*C1````````
-M``">````G@```!```&1D11```&1D(P@`10``D*83``!`$5`#P`$"%\`!`BT1
-ME!&4`'P``!(T5G@````&OTF+$=3DSM[Y.=3DU8E>9V&69R:M\.1&LA]$#9Q^:+E7
-MQE#E^)1R]--?O]SW!%7]KB<7\MLR56^<HT.D."4A5M1LBB7FNX7DP-C$&AH]
-M+':VL$0V)[[KSCAW[YA,>WX)#?)/IJR<_ at C91NG`(S^S``````````">````
-MG@```!```&1D11```&1D(P@`10``D*84``!`$5`"P`$"%\`!`BT1E!&4`'P`
-M`!(T5G@````'!12933DTC1RSTN*./4ZCE%A8GGVL:;@`.%'8MEA.C7/6]D[S
-MO1C([D/N6]%[?NISR>1W1EE,)=3D\I9&.PF-'Q*LXZQU71100.[\,-HK41G3/R
-MG9DY$,].(M58U1\0XT\4R[<=3DRCCXM;_%AVM)``````````">````G@```!``
-M`&1D11```&1D(P@`10``D*85``!`$5`!P`$"%\`!`BT1E!&4`'P``!(T5G@`
-M```(*_3L6&DE`65QQPA"@BAQ5FY@=3D%,+]@C9K+O)@],/GCI4%,MKI282(0M9
-M*<@/=3DL.DB"**EM":*2KJK`^H=3D0YM,$^[`=3DL%(RO,O_<4`MNKJ*:^9W8 at 1BP$
-59LK`-:)VQ/=3D2B;1'4FV3B?L]2;O!
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces1.out
--- a/head/contrib/tcpdump/tests/forces1.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-IP 192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP] (1) [DATA] (B)(E)=
 [TSN: 3442086958] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-
-IP 192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP] (1) [SACK] [cum a=
ck 3442086958] [a_rwnd 56288] [#gap acks 0] [#dup tsns 0]=20
-IP 192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP] (1) [DATA] (B)(E)=
 [TSN: 2574629157] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-
-IP 192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP] (1) [SACK] [cum a=
ck 2574629157] [a_rwnd 56296] [#gap acks 0] [#dup tsns 0]=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces1.pcap
Binary file head/contrib/tcpdump/tests/forces1.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces1vvv.=
out
--- a/head/contrib/tcpdump/tests/forces1vvv.out	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 112)
-    192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3442086958] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 64B flags 0xf8000000=20
-	SrcID 0x40000001(CE) DstID 0x7(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-	LFBselect TLV, length 40 (data length 36 Bytes)
-         FEObj LFB(Classid 1) instance 1
-          Oper TLV  Get(0x7) length 28
-           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
-            Pathdata: Flags 0x0 ID count 1
-              ID#01: 2
-              PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
-               Pathdata: Flags 0x0 ID count 1
-                 ID#01: 2
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), =
length 48)
-    192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP]
-	1) [SACK] [cum ack 3442086958] [a_rwnd 56288] [#gap acks 0] [#dup tsns 0]=20
-IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), =
length 124)
-    192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 2574629157] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-	ForCES Version 1 len 76B flags 0x38000000=20
-	SrcID 0x7(FE) DstID 0x40000001(CE) Correlator 0x2
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-	LFBselect TLV, length 52 (data length 48 Bytes)
-         FEObj LFB(Classid 1) instance 1
-          Oper TLV  GetResp(0x9) length 40
-           PATH-DATA TLV, length 36 (data encapsulated 32 Bytes)
-            Pathdata: Flags 0x0 ID count 1
-              ID#01: 2
-              PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
-               Pathdata: Flags 0x0 ID count 1
-                 ID#01: 2
-                 FULLDATA TLV (Length 12 DataLen 8 Bytes)
-                  [
-                  0x0000:  0000 0002 0000 0001
-                  ]
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 48)
-    192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP]
-	1) [SACK] [cum ack 2574629157] [a_rwnd 56296] [#gap acks 0] [#dup tsns 0]=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces1vvvv=
.out
--- a/head/contrib/tcpdump/tests/forces1vvvv.out	Wed Jul 25 16:20:13 2012 +=
0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 112)
-    192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3442086958] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 64B flags 0xf8000000=20
-	SrcID 0x40000001(CE) DstID 0x7(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-	LFBselect TLV, length 40 (data length 36 Bytes)
-         FEObj LFB(Classid 1) instance 1
-          Oper TLV  Get(0x7) length 28
-           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
-            Pathdata: Flags 0x0 ID count 1
-              ID#01: 2
-              PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
-               Pathdata: Flags 0x0 ID count 1
-                 ID#01: 2
-
-	  Raw ForCES message
-	 [
-	 0x0000:  1004 0010 4000 0001 0000 0007 0000 0000
-	 0x0010:  0000 0002 f800 0000 1000 0028 0000 0001
-	 0x0020:  0000 0001 0007 001c 0110 0018 0000 0001
-	 0x0030:  0000 0002 0110 000c 0000 0001 0000 0002
-	 ]
-
-IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), =
length 48)
-    192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP]
-	1) [SACK] [cum ack 3442086958] [a_rwnd 56288] [#gap acks 0] [#dup tsns 0]=20
-IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), =
length 124)
-    192.168.1.7.34917 > 192.168.1.7.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 2574629157] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-	ForCES Version 1 len 76B flags 0x38000000=20
-	SrcID 0x7(FE) DstID 0x40000001(CE) Correlator 0x2
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-	LFBselect TLV, length 52 (data length 48 Bytes)
-         FEObj LFB(Classid 1) instance 1
-          Oper TLV  GetResp(0x9) length 40
-           PATH-DATA TLV, length 36 (data encapsulated 32 Bytes)
-            Pathdata: Flags 0x0 ID count 1
-              ID#01: 2
-              PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
-               Pathdata: Flags 0x0 ID count 1
-                 ID#01: 2
-                 FULLDATA TLV (Length 12 DataLen 8 Bytes)
-                  [
-                  0x0000:  0000 0002 0000 0001
-                  ]
-
-	  Raw ForCES message
-	 [
-	 0x0000:  1014 0013 0000 0007 4000 0001 0000 0000
-	 0x0010:  0000 0002 3800 0000 1000 0034 0000 0001
-	 0x0020:  0000 0001 0009 0028 0110 0024 0000 0001
-	 0x0030:  0000 0002 0110 0018 0000 0001 0000 0002
-	 0x0040:  0112 000c 0000 0002 0000 0001
-	 ]
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 48)
-    192.168.1.7.6700 > 192.168.1.7.34917: sctp[ForCES HP]
-	1) [SACK] [cum ack 2574629157] [a_rwnd 56296] [#gap acks 0] [#dup tsns 0]=20
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces2.out
--- a/head/contrib/tcpdump/tests/forces2.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,491 +0,0 @@
-IP 122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 996458213] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691905] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-
-IP 150.140.188.146.32780 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 2256581227] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-
-IP 150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 3596535672] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632869] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244257] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.50001 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 3118638120] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-
-IP 150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 3264258942] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073935] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825012] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019513] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437131] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073936] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825013] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632871] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244258] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019514] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437132] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073937] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825014] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632872] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244260] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019515] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437133] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073938] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825015] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632873] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244261] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019516] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437134] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073939] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825016] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-
-IP 122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 996458214] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019517] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437135] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073940] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825017] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632874] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244262] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019518] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437136] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073941] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825018] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632875] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244263] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019519] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437137] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073942] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825019] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019520] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437138] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073943] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825020] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632877] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244264] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019521] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437139] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073944] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825021] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632878] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244266] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019522] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437140] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073945] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825022] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632879] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244267] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019523] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437141] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073946] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825023] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019524] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437142] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073947] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691907] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825024] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 996458215] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config Response=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019525] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437143] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073948] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825025] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019526] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437144] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073949] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632882] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825026] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244269] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019527] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437145] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073950] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825027] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632883] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244271] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019528] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437146] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073951] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825028] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632884] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244272] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019529] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437147] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073952] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825029] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632885] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244273] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-
-IP 122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 996458216] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config Response=20
-
-IP 150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA] =
(B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019530] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437148] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073953] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825030] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632886] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019531] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437149] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073954] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825031] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632887] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019532] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437150] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244274] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-, (2) [DATA] (B)(E) [TSN: 1662244278] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073955] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825032] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632888] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019533] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437151] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073956] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825033] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632889] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244279] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019534] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437152] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244283] [SID: 0] [SSEQ 26] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073957] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825034] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 2633632890] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244284] [SID: 0] [SSEQ 27] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA] =
(B)(E) [TSN: 1662244285] [SID: 0] [SSEQ 28] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019535] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437153] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073958] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825035] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019536] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437154] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073959] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825036] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 1724019537] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3749437155] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 3406073960] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA=
] (B)(E) [TSN: 2826825037] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-
-IP 150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 3596535673] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-
-IP 150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP] (1) [DATA=
] (B)(E) [TSN: 3264258943] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces2.pcap
Binary file head/contrib/tcpdump/tests/forces2.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces2v.out
--- a/head/contrib/tcpdump/tests/forces2v.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,982 +0,0 @@
-IP (tos 0x0, ttl 43, id 1, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 996458213] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691905] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32780 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 2256581227] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 3596535672] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000001(CE) DstID 0x6(FE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632869] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x1
-
-IP (tos 0x0, ttl 43, id 2, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244257] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.50001 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 3118638120] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 3264258942] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073935] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825012] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019513] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437131] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x1
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073936] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825013] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632871] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x3
-
-IP (tos 0x0, ttl 43, id 7, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244258] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019514] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437132] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x2
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073937] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x3
-
-IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825014] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x3
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632872] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x4
-
-IP (tos 0x0, ttl 43, id 8, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244260] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019515] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x3
-
-IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437133] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x3
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073938] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825015] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632873] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x5
-
-IP (tos 0x0, ttl 43, id 10, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244261] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x5
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019516] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437134] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073939] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x5
-
-IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825016] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x5
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-
-IP (tos 0x0, ttl 43, id 9, offset 0, flags [DF], proto SCTP (132), length =
372)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 996458214] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-	ForCES Version 1 len 324B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019517] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x5
-
-IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437135] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x5
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073940] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825017] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632874] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x7
-
-IP (tos 0x0, ttl 43, id 14, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244262] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019518] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437136] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073941] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825018] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632875] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x8
-
-IP (tos 0x0, ttl 43, id 16, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244263] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x8
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019519] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437137] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073942] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x8
-
-IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825019] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x8
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019520] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x8
-
-IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437138] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x8
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073943] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825020] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632877] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x10
-
-IP (tos 0x0, ttl 43, id 22, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244264] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019521] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437139] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x9
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073944] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x10
-
-IP (tos 0x2,ECT(0), ttl 64, id 20, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825021] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x10
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632878] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x11
-
-IP (tos 0x0, ttl 43, id 23, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244266] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x11
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019522] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x10
-
-IP (tos 0x2,ECT(0), ttl 64, id 21, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437140] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x10
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073945] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x11
-
-IP (tos 0x2,ECT(0), ttl 64, id 22, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825022] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x11
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632879] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x12
-
-IP (tos 0x0, ttl 43, id 25, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244267] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x12
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019523] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x11
-
-IP (tos 0x2,ECT(0), ttl 64, id 23, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437141] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x11
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073946] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x12
-
-IP (tos 0x2,ECT(0), ttl 64, id 24, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825023] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x12
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x13
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x13
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019524] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x12
-
-IP (tos 0x2,ECT(0), ttl 64, id 25, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437142] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x12
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073947] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x13
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 148)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691907] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 100B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 26, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825024] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x13
-
-IP (tos 0x0, ttl 43, id 21, offset 0, flags [DF], proto SCTP (132), length=
 124)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 996458215] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config Response=20
-	ForCES Version 1 len 76B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019525] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x13
-
-IP (tos 0x2,ECT(0), ttl 64, id 27, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437143] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x13
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073948] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 28, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825025] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019526] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 29, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437144] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x14
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073949] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632882] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x16
-
-IP (tos 0x2,ECT(0), ttl 64, id 30, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825026] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x15
-
-IP (tos 0x0, ttl 43, id 35, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244269] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019527] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 31, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437145] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x15
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073950] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x16
-
-IP (tos 0x2,ECT(0), ttl 64, id 31, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825027] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x16
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632883] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x17
-
-IP (tos 0x0, ttl 43, id 36, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244271] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x17
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019528] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x16
-
-IP (tos 0x2,ECT(0), ttl 64, id 33, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437146] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x16
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073951] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x17
-
-IP (tos 0x2,ECT(0), ttl 64, id 33, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825028] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x17
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632884] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x18
-
-IP (tos 0x0, ttl 43, id 38, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244272] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x18
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019529] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x17
-
-IP (tos 0x2,ECT(0), ttl 64, id 35, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437147] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x17
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073952] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x18
-
-IP (tos 0x2,ECT(0), ttl 64, id 35, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825029] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x18
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632885] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x19
-
-IP (tos 0x0, ttl 43, id 40, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244273] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x19
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 128)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 80B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x20
-
-IP (tos 0x0, ttl 43, id 29, offset 0, flags [DF], proto SCTP (132), length=
 128)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 996458216] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config Response=20
-	ForCES Version 1 len 80B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x20
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 128)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP] (1) [DATA]=
 (B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 80B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x20
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019530] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x18
-
-IP (tos 0x2,ECT(0), ttl 64, id 37, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437148] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x18
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073953] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x19
-
-IP (tos 0x2,ECT(0), ttl 64, id 37, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825030] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x19
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632886] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x21
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019531] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x19
-
-IP (tos 0x2,ECT(0), ttl 64, id 39, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437149] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x19
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073954] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x20
-
-IP (tos 0x2,ECT(0), ttl 64, id 40, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825031] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x20
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632887] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x22
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019532] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x20
-
-IP (tos 0x2,ECT(0), ttl 64, id 41, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437150] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x20
-
-IP (tos 0x0, ttl 43, id 46, offset 0, flags [DF], proto SCTP (132), length=
 112)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244274] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-, (2) [DATA] (B)(E) [TSN: 1662244278] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x3
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073955] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x21
-
-IP (tos 0x2,ECT(0), ttl 64, id 42, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825032] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x21
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632888] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x23
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019533] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x21
-
-IP (tos 0x2,ECT(0), ttl 64, id 43, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437151] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x21
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073956] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x22
-
-IP (tos 0x2,ECT(0), ttl 64, id 44, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825033] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x22
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632889] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x24
-
-IP (tos 0x0, ttl 43, id 50, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244279] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x4
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019534] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x22
-
-IP (tos 0x2,ECT(0), ttl 64, id 45, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437152] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x22
-
-IP (tos 0x0, ttl 43, id 51, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244283] [SID: 0] [SSEQ 26] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x6
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073957] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x23
-
-IP (tos 0x2,ECT(0), ttl 64, id 46, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825034] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x23
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 2633632890] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x25
-
-IP (tos 0x0, ttl 43, id 52, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244284] [SID: 0] [SSEQ 27] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x25
-
-IP (tos 0x0, ttl 43, id 54, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DATA]=
 (B)(E) [TSN: 1662244285] [SID: 0] [SSEQ 28] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x7
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019535] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x23
-
-IP (tos 0x2,ECT(0), ttl 64, id 47, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437153] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x23
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073958] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x24
-
-IP (tos 0x2,ECT(0), ttl 64, id 48, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825035] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x24
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019536] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x24
-
-IP (tos 0x2,ECT(0), ttl 64, id 49, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437154] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x24
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073959] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x25
-
-IP (tos 0x2,ECT(0), ttl 64, id 50, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825036] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x25
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 1724019537] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x25
-
-IP (tos 0x2,ECT(0), ttl 64, id 51, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3749437155] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x25
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 3406073960] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x26
-
-IP (tos 0x2,ECT(0), ttl 64, id 52, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP] (1) [DAT=
A] (B)(E) [TSN: 2826825037] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x26
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 3596535673] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x0
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP] (1) [DAT=
A] (B)(E) [TSN: 3264258943] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x0
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/forces2vv.o=
ut
--- a/head/contrib/tcpdump/tests/forces2vv.out	Wed Jul 25 16:20:13 2012 +03=
00
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1966 +0,0 @@
-IP (tos 0x0, ttl 43, id 1, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 996458213] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691905] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32780 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 2256581227] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3596535672] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000001(CE) DstID 0x6(FE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632869] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 2, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244257] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.50001 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3118638120] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Setup=20
-	ForCES Version 1 len 24B flags 0xf8000000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3264258942] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES Association Response=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073935] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825012] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632870] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019513] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437131] [SID: 0] [SSEQ 0] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x1
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073936] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825013] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x2
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632871] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x3
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 7, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244258] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x2
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019514] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x2
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437132] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x2
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073937] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x3
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825014] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x3
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632872] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x4
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 8, offset 0, flags [DF], proto SCTP (132), length =
72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244260] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x4
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019515] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x3
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437133] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x3
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073938] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x4
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825015] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x4
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632873] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x5
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 10, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244261] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x5
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019516] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x4
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437134] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x4
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073939] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x5
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825016] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x5
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 9, offset 0, flags [DF], proto SCTP (132), length =
372)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 996458214] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query Response=20
-	ForCES Version 1 len 324B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x6
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 152)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691906] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Query=20
-	ForCES Version 1 len 104B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019517] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x5
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437135] [SID: 0] [SSEQ 4] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x5
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073940] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825017] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x6
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632874] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x7
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 14, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244262] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x7
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019518] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437136] [SID: 0] [SSEQ 5] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x6
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073941] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x7
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825018] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x7
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632875] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x8
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 16, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244263] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x8
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019519] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x7
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437137] [SID: 0] [SSEQ 6] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x7
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073942] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x8
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825019] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x8
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x9
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632876] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x9
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019520] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x8
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437138] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x8
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073943] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x9
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825020] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x9
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632877] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x10
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 22, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244264] [SID: 0] [SSEQ 7] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x9
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019521] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x9
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437139] [SID: 0] [SSEQ 8] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x9
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073944] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x10
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 20, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825021] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x10
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632878] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x11
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 23, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244266] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x11
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019522] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x10
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 21, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437140] [SID: 0] [SSEQ 9] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x10
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073945] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x11
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 22, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825022] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x11
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632879] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x12
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 25, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244267] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x12
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019523] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x11
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 23, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437141] [SID: 0] [SSEQ 10] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x11
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073946] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x12
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 24, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825023] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x12
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x13
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632880] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x13
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019524] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x12
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 25, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437142] [SID: 0] [SSEQ 11] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x12
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073947] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x13
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 148)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691907] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 100B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x14
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 26, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825024] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x13
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 21, offset 0, flags [DF], proto SCTP (132), length=
 124)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 996458215] [SID: 0] [SSEQ 2] [PPID 0x0]=20
-	ForCES Config Response=20
-	ForCES Version 1 len 76B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x14
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019525] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x13
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 27, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437143] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x13
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073948] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x14
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x15
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 28, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825025] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x14
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632881] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x15
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019526] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x14
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 29, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437144] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x14
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073949] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x15
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632882] [SID: 0] [SSEQ 13] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x16
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 30, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825026] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x15
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 35, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244269] [SID: 0] [SSEQ 12] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x15
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019527] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x15
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 31, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437145] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x15
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073950] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x16
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 31, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825027] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x16
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632883] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x17
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 36, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244271] [SID: 0] [SSEQ 14] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x17
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019528] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x16
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 33, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437146] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x16
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073951] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x17
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 33, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825028] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x17
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632884] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x18
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 38, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244272] [SID: 0] [SSEQ 15] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x18
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019529] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x17
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 35, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437147] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x17
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073952] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x18
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 35, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825029] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x18
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632885] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x19
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 40, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244273] [SID: 0] [SSEQ 16] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x19
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 128)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 80B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x20
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 29, offset 0, flags [DF], proto SCTP (132), length=
 128)
-    122.234.155.8.32820 > 150.140.188.145.6700: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 996458216] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config Response=20
-	ForCES Version 1 len 80B flags 0x38400000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x20
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 128)
-    150.140.188.145.6700 > 122.234.155.8.32820: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3761691908] [SID: 0] [SSEQ 3] [PPID 0x0]=20
-	ForCES Config=20
-	ForCES Version 1 len 80B flags 0xf8400000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x20
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D7, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019530] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x18
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 37, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437148] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x18
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073953] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x19
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 37, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825030] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x19
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632886] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x21
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019531] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x19
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 39, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437149] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x19
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073954] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x20
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 40, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825031] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x20
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632887] [SID: 0] [SSEQ 18] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x22
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019532] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x20
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 41, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437150] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x20
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 46, offset 0, flags [DF], proto SCTP (132), length=
 112)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244274] [SID: 0] [SSEQ 17] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x1
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-	2) [DATA] (B)(E) [TSN: 1662244278] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x3
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073955] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x21
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 42, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825032] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x21
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632888] [SID: 0] [SSEQ 19] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x23
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019533] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x21
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 43, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437151] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x21
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073956] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x22
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 44, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825033] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x22
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632889] [SID: 0] [SSEQ 20] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x24
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 50, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244279] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x4
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019534] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x22
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 45, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437152] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x22
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 51, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244283] [SID: 0] [SSEQ 26] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x6
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073957] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x23
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 46, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825034] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x23
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 122.234.155.8.32821: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2633632890] [SID: 0] [SSEQ 21] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x3(FE) Correlator 0x25
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 52, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244284] [SID: 0] [SSEQ 27] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x25
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x0, ttl 43, id 54, offset 0, flags [DF], proto SCTP (132), length=
 72)
-    122.234.155.8.32821 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1662244285] [SID: 0] [SSEQ 28] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0000000=20
-	SrcID 0x3(FE) DstID 0x40000000(CE) Correlator 0x7
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019535] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x23
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 47, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437153] [SID: 0] [SSEQ 22] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x23
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073958] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x24
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 48, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825035] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x24
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019536] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x24
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 49, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437154] [SID: 0] [SSEQ 23] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x24
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073959] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x25
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 50, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825036] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x25
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.175.41074: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 1724019537] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x25
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 51, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.175.41074 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3749437155] [SID: 0] [SSEQ 24] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00400000=20
-	SrcID 0x1(FE) DstID 0x40000000(CE) Correlator 0x25
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, execute-all-or-none(0x1),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 72)
-    150.140.188.145.6702 > 150.140.188.146.32782: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 3406073960] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0xc0100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x26
-	ForCES flags:
-	  AlwaysACK(0x3), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 52, offset 0, flags [DF], proto SCTP (132),=
 length 72)
-    150.140.188.146.32782 > 150.140.188.145.6702: sctp[ForCES LP]
-	1) [DATA] (B)(E) [TSN: 2826825037] [SID: 0] [SSEQ 25] [PPID 0x0]=20
-	ForCES HeartBeat=20
-	ForCES Version 1 len 24B flags 0x00000000=20
-	SrcID 0x6(FE) DstID 0x40000001(CE) Correlator 0x26
-	ForCES flags:
-	  NoACK(0x0), prio=3D0, EMReserved(0x0),
-	  Standalone(0x0), StartofTransaction(0x0)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.146.32780: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3596535673] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x6(FE) Correlator 0x0
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
-IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), =
length 80)
-    150.140.188.145.6700 > 150.140.188.175.50001: sctp[ForCES HP]
-	1) [DATA] (B)(E) [TSN: 3264258943] [SID: 0] [SSEQ 1] [PPID 0x0]=20
-	ForCES Association TearDown=20
-	ForCES Version 1 len 32B flags 0x38100000=20
-	SrcID 0x40000000(CE) DstID 0x1(FE) Correlator 0x0
-	ForCES flags:
-	  NoACK(0x0), prio=3D7, EMReserved(0x0),
-	  Standalone(0x0), EndofTransaction(0x2)
-	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
-
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2.puu
--- a/head/contrib/tcpdump/tests/ikev2.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22231 +0,0 @@
-begin 644 ikev2.pcap
-MU,.RH0(`!````````````-P%````````1!*W1JWG!0"8`0``F`$```(```!%
-M``&43<0``$`1``#`J`$!P*@!`@'T`?0!@`=3DEJ(AUJ!F)DJ8``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``M41;U at SLYOW-/):E++M[M":HQZ#U:IPXT;'$\,.FZ.?;I<<SFV[0+G5Q
-M&=3D^UMI,\Z3M at 28?[O'<B&RH,?-TR>'[_$%<K[U1L-A1B^=3DHTA'EII"Y1QU69
-M:^K$+F^ZEAIUW at _!LC\)DX");NB2`A(M[:P;U4JH24K#UT"^32I,\YTI```D
-M82CKT".H9.E*?_MTOWS.+]0V<R*XL'/Y0B at KU2Z_X^8I```<``!`!$0O_EKJ
-M#.Y-NLQUCH`2,[W`F at J_````'```0`6Z!!M=3DY9E5D`V!BL5.&+(V<YV>BT02
-MMT9`]@4`7````%P````"````10``6$W%``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*:B(=3D:@9B9*F```````````I("(@`````````#P````@``!`!@````'"(AY0
-MP6X2/RL,<:[\\,L[>8>"QD02MT8;!08`N`$``+@!```"````10`!M$W&``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A:B(=3D:@9B9*F```````````I("((````````
-M`9 at A```@``!`!@````'"(AY0P6X2/RL,<:[\\,L[>8>"QB(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``M41;U at SLYOW-/):E++M[M":H
-MQZ#U:IPXT;'$\,.FZ.?;I<<SFV[0+G5Q&=3D^UMI,\Z3M at 28?[O'<B&RH,?-TR
-M>'[_$%<K[U1L-A1B^=3DHTA'EII"Y1QU69:^K$+F^ZEAIUW at _!LC\)DX");NB2
-M`A(M[:P;U4JH24K#UT"^32I,\YTI```D82CKT".H9.E*?_MTOWS.+]0V<R*X
-ML'/Y0B at KU2Z_X^8I```<``!`!$0O_EKJ#.Y-NLQUCH`2,[W`F at J_````'```
-M0`6Z!!M=3DY9E5D`V!BL5.&+(V<YV>BT02MT9-*`8`4`$``%`!```"````10`!
-M3$W'``!`$0``P*@!`<"H`0(!]`'T`3@'':B(=3D:@9B9*F<;Z#6.^N=3DF,A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``%I6<4TZOV3CH_0!ZMGU,C_PMW^J7QZ9&9L3
-MK((?"@Q/A4>&R at FWIVJE"+SN$?%C::%M7Z!!RBV:C?J"*,8?)(+2%UQ<&I21
-M_"(;['H?II]E;4R8NDFNG7(=3D[?2 at +7[-_"`=3DQX6A/M=3D.3SF"=3DBHG(/_?PV7N
-M3C<GFO26S8;X@?T5*0``)+,<-Y\G+.*82]%\HXR'*>'MO`@:%/L/9\_X%R'?
-M[L'Y*0``'```0`3^*_M\+('M"V'W5K5_K'BG7.V*]@```!P``$`%D%E4IX.^
-M+#?BS,3]TG"E,MOF]"A$$K=3D&E%0&``P!```,`0```@```$4``0A-R```0!$`
-M`,"H`0'`J`$"`?0!]`#T!]FHB'6H&8F2IG&^@UCOKG9C+B`C"`````$```#L
-M(P``T/8&$UK3<^<(-OVI&V/*3&".&M6"&$B,)D?_'HJ1*5BJ=3D^^\,&BBKFJW
-MP]#+'F^X9-^9QB\LP$5P@(1P at 52CD\+TR^^M'VA(4EU)VU8^$S1:3FXOT&;`
-M3BSBD?1Q2Z[&OS*#5L1&)'RK at UO:/HX:KEEG)(\!ZSH<`J5!M-H)LR=3DK0`U0
-MH&=3D4*F>$:,7T'E0!?`"63Q`#^,B(EJ;Q(A6E\:!@<3S(.`+*XZON&$%\##7<
-M;UB@&MN6[1P`G&CC!IKG#TL0K[=3DS;!$:WDV";D02MT;S:P8`O````+P````"
-M````10``N$W)``!`$0``P*@!`<"H`0(!]`'T`*0&B:B(=3D:@9B9*F<;Z#6.^N
-M=3DF,N(",@`````0```)PD``"`:OZ5O%%'L*U^3,N10<%@I$]\;MW&LIU!2M7B
-MN()43]QL/N:8.N%`BU=3DDL6230X=3DD5-&_35%:KP/!7J_G&^:TSU&K8&,,1;SP
-MXJ+;CNYP"5I.`0_;-"K;;0/:Y=3D[YU)!\W\C,UO/:FW27Q8Z$J5+9@[K[E!JQ
-MWAL+N?^M.T02MT8RB at 8`'`$``!P!```"````10`!&$W*``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z:B(=3D:@9B9*F<;Z#6.^N=3DF,N("0(`````@```/PA``#@4\QL
-M"T'Q3D_`5\?VHU)*W>A2'R;V?`6$,*D"VQI2[1;3(F,-+K45-RW!+9?<?"!5
-M)@?B[1D]FS.3GA"J+\-[89GPIBG&M8$U];;YX'D&S3#</*Y]5?X(V5T^9 at IB
-M-S'#EJ,EK;_Q'$D/G]$"(D.1IE^WN^ABE%MDSQ^X,[G.:,@]\+G2SGO53V4(
-M9*^41>5'S?Y<JCDS1*Y2=3D),[?OSV%H(>I]JIQ:;H)UK6QHAP#+?TO-;[@"7I
-M.[;=3D7U@?KKR^RWF,AV%Z3L&P:Z*0K%_!UN3"<EP?GPX0L43[OD02MT9TE08`
-M_````/P````"````10``^$W+``!`$0``P*@!`<"H`0(!]`'T`.0&R:B(=3D:@9
-MB9*F<;Z#6.^N=3DF,N("0(`````P```-PA``#`E@/@/R@)9'@G%]H5I0+PJ>GQ
-M?;]$A\:2//`+<$#5.;R4?'!7D.3IFX-*>N*HUY]6(.$6%>"G8HB:JX(>#0,3
-M+?N,QK-QA8)!&\V8PD*HL0IF)TVN'.!5^S"DT^9,EIOFX(MB:5CT1&QN2 at R-
-M>B12*5G&%2YCI77`:3#""74YO[W_",<%,T*,]K12X+BP)9PBDI)=3D+M8NB5:\
-M?CJ1&F%0F^&LCWM\U&-A=3DN4D]-#Q=3D7/RKMW.(E'];5V<U4U$$K=3D&4Z`&`&P`
-M``!L`````@```$4``&A-S```0!$``,"H`0'`J`$"`?0!]`!4!CFHB'6H&8F2
-MIG&^@UCOKG9C+B`D(`````(```!,*0``,%O2TFRT.VSL,-[!/Z.'-9>7NO>T
-M'G at T(KQ-J_70.K)"#2=3D].R\HT?`#VIC11!*W1A"[!@!L````;`````(```!%
-M``!H3<T``$`1``#`J`$!P*@!`@'T`?0`5`8YJ(AUJ!F)DJ9QOH-8[ZYV8RX@
-M)"`````#````3"D``#`X]@JVD1"6>6&N!*].1Z=3DP)@UAXIT8^Q/."3I'EP!H
-MVLLT+WF9S#T-6?=3DZE$02MT9=3DU`8`/`$``#P!```"````10`!.$W.``!`$0``
-MP*@!`<"H`0(!]`'T`20'":B(=3D:@9B9*F<;Z#6.^N=3DF,N("0(````!````1PA
-M``$`Q_+QS$F7LPIA8C(BU+^U-;JC`AF<38P?W/IT6PLIM>=3DAC_`U:$A$324!
-M#EK4('8(D.W at 9L@X)ILBV>,-3^P:`2YS&B$,)#^`.V89<-,NF8Z1GU<\5T+2
-M*(E)!2Q:1J#-?$H:*5[>*6Q/V8.;9-Q)1.$:-?0JC.&+1'(`_0/;U8IQ6#LZ
-M)\.`%(R`'.%$4O?75K'U6Q"X2EC/J5)@`?_W%7%49%`BY$5 at A5%\[MF+>>(.
-MTS*7SUK8`H?G at G**C&N'TK0BY^[:''*S/KQ1I;=3DM[YI9_]&T^7WLB,(J3U1(
-MIQKNWR#(?:Y;1,TN>E&=3D<9I0GX/SLOKV]<8'VF"?1!*W1A7@!@`<`0``'`$`
-M``(```!%``$83<\``$`1``#`J`$!P*@!`@'T`?0!!`?IJ(AUJ!F)DJ9QOH-8
-M[ZYV8RX@)`@````%````_"$``.#:YA-*G/\:3CS%FGG@&:D_A&G=3D3B^JJM'#
-MK[HB[-$H_;'HE4QU/X]BKK:JR7,O04L&7L.5::9POFF`R!ZSY$O)/L8^FG5-
-M!%;&<#S7&#<>WN]G22 at 8#YT4PYY2SZ2E%S:.?;+Z"_VT'/5MEP!B,Q`_(F4/
-MW-7_JX08Y`D#Y'2>$FT&Z=3DPJ&,_5O]H`$^/IZU/GF[XPZM\/3=3DSONK#`CH<+
-M*=3D.;)`''6VC\1J!F>"A7RDC51^00K!7*NV<XAU(`M37+V:X>'.F8.<G"5CD'
-M#E[9=3DX"<4+:[E5"U"TF[1!*W1I_N!@#L````[`````(```!%``#H3=3D```$`1
-M``#`J`$!P*@!`@'T`?0`U`:YJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````$````
-MS"$``+`?V%%K5[&K&]O-NADPI0E][,`CQ<4T27RE/Q>+G4T1(H=3D&14-QL,QN
-MP&?A3AY<5E*$#/VN#JA,?PIN>9_W^Q,=3D%78_[O1>@/)'%LWD?2-2?VC at 5:?#
-MK<<B5(DI7AO#\0*;8X(H<H9=3D]5QL)UWJV*;V2]J*Y$]"PQCZ<>L$[M<Q+:_2
-MW89E_5TR)?.JYO<S6U@<.HG`>O$`F''>J9)_!&0RS0&P0C0 at 30%8.Z\Z1!*W
-M1G4.!P#L````[`````(```!%``#H3=3D$``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````%````S"$``+#V_($3\TN2ZWU96 at 2/
-M5]1EDT0:V:89&>61GGWD14^C6(*3?3MTR#JY6?T%/&H2I1L$H.DN`6 at W@F6+
-MN:\KO,>DO5X>[RV\W'<5RL;J[/O,!1I&\B8]&X.'O:U^:,;DNAOI>4X6/DA'
-M:)E:GTH8[<O&I$\*=3D,L!PQCGA(5BX(9O.(N-!/%/&OA]Y]YL[A^(G4,PV"DR
-MIQ)[?1J33F0<,K=3DN,[-W!M4"AOC+XS6Z1!*W1F at L!P`\`0``/`$```(```!%
-M``$X3=3D(``$`1``#`J`$!P*@!`@'T`?0!)`<)J(AUJ!F)DJ9QOH-8[ZYV8RX@
-M)`@````&```!'"$``0`*HF-J.XE_\_J`DR at JT7).R?,FMDOYF.>!UNV[=3DZ-I
-MJ$1-Q'I-P)7KTZP['<,W5PO$+)/-;<MRB;R9J0ATYFS$[>>A.EC.%\9;&%Z&
-MWO@]9O3$W<0SYFNO&#3E0I9G$U>E$YL+8^OS+F4M\).+K>I:E@[A=3D8X`^J9#
-MOMA?>M[BXN=3D;KNR>#?B(5Z9\I?*B])&=3D"R<C$]0L>1ZW7^RA175J#,KC9`[I
-MC!9HG?411#(HA&TL6X at PZFT4G!J^T1K0HHRC.9,#;I&674BH*HF!1:VIE*]5
-MEX:62`JVRVE^$^9Y:*=3DTC#,X>&[[=3DR4.5!&SI^K(3-(A,DO7N1"=3DFFE$$K=3D&
-M=3DS8'`!P!```<`0```@```$4``1A-TP``0!$``,"H`0'`J`$"`?0!]`$$!^FH
-MB'6H&8F2IG&^@UCOKG9C+B`D"`````<```#\(0``X`+'`_2]V#)&K<9^'*!]
-M?GS^(;:]Z48W:`HS*!.XI,I'-!J].IPW)CB6P()2O['J;'ZD1X.Y*L4JRT^_
-M[%/P-50H'&-W90P)((\]=3DXL1YWM?O9@[X>EFF2,CDN\QI0']ISQA4/S"Z`NK
-M'@U)A%O5U1'WR2A>P(-2:'HJR-<-#>PT=3DDD<0+E\N=3DI`5@;\7HU&N^&9YMD:
-MZ9.W^J!8/L0I:H"!+[?@KHC3O53$HPY>VR=3DXR6#SX,M;$VGIF?A-Y-QRM=3D`&
-M@%[[?BTNU`,^$?^5>`$M(I0N-YG)."4&H"%$$K=3D&#D8'`.P```#L`````@``
-M`$4``.A-U```0!$``,"H`0'`J`$"`?0!]`#4!KFHB'6H&8F2IG&^@UCOKG9C
-M+B`D(`````8```#,(0``L'XN9B/&;A8=3DZ60:Q^&VW]SSI?1;OM$COHCS=3D4T2
-M440$K\!4L\?WB>M2I#*D.#6=3DWC$5+!&XT at D@/6)WG*!D at CUP4VQ`^$;4/6:4
-MHO$J,7;U<`>C4&R"__KSV[<3N]NU]4"WLYKN/)<45G%00U8)7WJPQ:A#1\`F
-MB\XEG*4;2BW76GXZ?N>?.__%C2_`K#9H8BGR,)M<T,#<PJ]YAF3!3U\6:K7C
-MP?:3"2$AJD1$$K=3D&D&<'`.P```#L`````@```$4``.A-U0``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KFHB'6H&8F2IG&^@UCOKG9C+B`D(`````<```#,(0``L'M4
-M4#.BTUWRJY\FQ+Q$1Q.1"C+F#[!,L0J>=3DF-'A_G=3DP3C&>2^J!TOBZ\M#^#]$
-M0DEGD!CL;<?4XB1]V,N15WC9#Z59?Q[+J$<=3DM3X[3:CW/1ZV#"/*G[7Z69W%
-M)JEA-D1QM)Y2B/SO:B30*@A-*<2EQ=3D'Z,%,0VZ`=3D"<G#;(;`KRE^!=3D/\A5FA
-M%F:D-CNLPU3I;)032;/V#=3D.7ZTPKL)\X&#$6?`LS:&QKM=3DA$$K=3D&*HP'`(P!
-M``",`0```@```$4``8A-U@``0!$``,"H`0'`J`$"`?0!]`%T!UFHB'6H&8F2
-MIG&^@UCOKG9C+B`D"`````@```%L(0`!4,2_B>QN>3:LF*0RI27"0&WI0+,X
-MR12<X9RQOR.FG?U('?>SK:&MNW"_%P=3D&0^WY?F.MY>T']T9T\FQ(TM:I!$1W
-M[I\@,(3";H5`68?LBY:3WJZB#.>,*D4;]. at TU[S#Q4P3(K7RBZ,'\LXQH`52
-MN7N/P0.BG^XN`$#,W?H0OSJST2">9#PBC>Q74D#'O74,]-;0;)6/9KV*>8,=3D
-M^''V^]D^`EL6O0/>-?_-NKK&57#2-GYB39^.A6#:F\.B%"MU`(M\ZXZ#G;]"
-M7:=3D,2^%<G<,7->\:QO9<(W4$+<^6 at M]T)9N,1#?7[HWQG^INP=3D6]210)S')V
-MUP[@NI%RM!=3D_O.?Z*!<:(VRHXN#!2>8"R<:@H_]?!4*']4M\,4L'S?;21B0=3D
-MTV3'09S`9'0BT(]5$;$^>URW&6%D9N'&EF]<S4TLHK$MVG!'QO8Z]=3DU'1!*W
-M1BZ_!P!<`0``7`$```(```!%``%83=3D<``$`1``#`J`$!P*@!`@'T`?0!1`<I
-MJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````(```!/"$``2`L&LADKBR$F;/'KXQA
-MJ,3<GAKR-7>UB-:[/][SY(/,+P%8P'!QUM^N]SW,MLW/>E=3D8Y!=3DXVLZW'/9S
-M/A<6B^_V[R`5UG#`ME=3D/QRZ7U"@I"99O.4J?G at _.V.)IN_8.D_#R"`](W-3@
-M+_$2FY3VBR:-W9S_0V\XYX^GF&V'YB+1\]H[/">55PZ\)]/#U1\I[P__`:Z)
-MO7'2X0JX^NY]>[2UOHJ>X.J;7C1[NO/KWZ\9<UUUYOJ@(-;J<H)L*J7++N9(
-MWFLVR[)0AT*-ZD2]-%!.!?+4_O0\2.*FD%$.DGC*C_+W=3D7DJ\&&US+SW>S_N
-M98A1*)EIQ5[<;587&*#'8;";#V?);F'0"G^BDI`CM:W/W3-#;V.D>!0=3D4;4C
-M,T02MT9GY@<`?````'P````"````10``>$W8``!`$0``P*@!`<"H`0(!]`'T
-M`&0&21V;Z44=3D3Y>H9**DM=3D#A>VHN("4(`````````%PJ``!`:1M(@IML76W9
-M/ZCC/#C=3D3`#U0TW"*T)1P(=3DO"]M=3DNZ/=3D!B at Y!U6:)R\'['<)N=3D66HDS8_FFX
-M*A]EV_;R1!*W1D#Q!P!L````;`````(```!%``!H3=3DD``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y'9OI11U/EZADHJ2UT.%[:BX@)2``````````3````#!$I23@
-M.FG-L;@E0<#<"6$G*L'FZ!5B*`<&K[X0A'OE[=3D$OXA21Q%4.N!P0%$02MT8`
-M``@`;````&P````"````10``:$W:``!`$0``P*@!`<"H`0(!]`'T`%0&.1V;
-MZ44=3D3Y>H9**DM=3D#A>VHN("4(`````0```$PJ```P7O[NGM9!0O6XN$"%'SGM
-M-D%;L+=3DVOMOW[S/1 at 3S,S$*700"N58X0#&Z[%&Q$$K=3D&.`T(`&P```!L````
-M`@```$4``&A-W```0!$``,"H`0'`J`$"`?0!]`!4!CD=3DF^E%'4^7J&2BI+70
-MX7MJ+B`E(`````$```!,````,)G:-DSX^QV`@LUWBM[!_-IW'1\9B?1C-A'!
-M!*Z>I!&/0A4ML<GLL1!"$:,71!*W1C0)"0"8`0``F`$```(```!%``&43=3DT`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE5',;`Q?/3N```````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``WGS[
-MUOV]XT6R7?T[,2)59]+;!_91&!H;O5<H\YYMKOZA&]DVB"[F3J4B`(^7T,H9
-ML(Z"0%"YG^B;6'+U0%0,55#M!'4BW"[SY($C[36""?LH?,W]+^O6NZ*9`3KI
-M>J=3DX*+8\Z"B2?EST``I^16[;6?7M0&)!4R+^V[15)%+4?<$I```DKE'6[G)I
-M49S&T'5ZDI[0X0Q?IZL?`58S+$LT^$A"<Z$I```<``!`!#8.*RY&Z'9[B[UO
-M]32]6S_G&^_1````'```0`7,M>SP6E$S&L*V0BZ7B<>!"].TND02MT8T&`D`
-M7````%P````"````10``6$W>``!`$0``P*@!`<"H`0(!]`'T`$0&*51S&P,7
-MST[@```````````I("(@`````````#P````@``!`!@````%G7*!?)CY_R?:^
-MA,\_A([]_?EO?T02MT86*`D`N`$``+@!```"````10`!M$W?``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A51S&P,7ST[@```````````I("((`````````9 at A```@
-M``!`!@````%G7*!?)CY_R?:^A,\_A([]_?EO?R(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``WGS[UOV]XT6R7?T[,2)59]+;!_91&!H;
-MO5<H\YYMKOZA&]DVB"[F3J4B`(^7T,H9L(Z"0%"YG^B;6'+U0%0,55#M!'4B
-MW"[SY($C[36""?LH?,W]+^O6NZ*9`3KI>J=3DX*+8\Z"B2?EST``I^16[;6?7M
-M0&)!4R+^V[15)%+4?<$I```DKE'6[G)I49S&T'5ZDI[0X0Q?IZL?`58S+$LT
-M^$A"<Z$I```<``!`!#8.*RY&Z'9[B[UO]32]6S_G&^_1````'```0`7,M>SP
-M6E$S&L*V0BZ7B<>!"].TND02MT;Y2PD`4`$``%`!```"````10`!3$W@``!`
-M$0``P*@!`<"H`0(!]`'T`3@''51S&P,7ST[@5%`A&I at X#9(A("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``"E;6V_=3DX0;85F#![,3)M;_-F1+6+X&\*8>)'7G;`W>2
-M.M04%]Y0J:Z-GK07`HG^4`OL_LDQ/F1;<MEY^!5!=3DXZE"0Z$$SI%Q$$A+/JN
-M6"(6%*B at +97M\7=3DF6C/+_6#-6"@^WF=3DF%,,X\G?[O/";RM79C?"H!RD at SW]-
-MCZH at I';K*0``)*C-I7SLP0C2:]H*E>K4$;J!E_A)"+BT8EK7B]6!,4#<*0``
-M'```0`2F9)@!3*OGYW3C]-Z'D%/P^++J]P```!P``$`%42U]_T^!C.UD'U;P
-M3A$V#J5'F'9$$K=3D&PGD)``P!```,`0```@```$4``0A-X0``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]E4<QL#%\].X%10(1J8.`V2+B`C"`````$```#L(P``T'9P
-M\?.I8P%ZYKC!,!(DN-)RL]86'U!(:;GV-M8``/O\+^3F]EN-&JU!=3D"D4!- at W
-MA5*2P5+(5D^&3C+3+8:1O!1GW4:48\GJ.;M6MM6E3OX8&RAIBE$C:.)QK1[_
-MT,*N59K0G]&BE8&9KZMU\E$T8!.0M32*8*IYQ$JX5=3D=3DT9>$OOS/2=3D]G);$'Q
-M1=3D]!\.WE(Y<!BS`=3D\FI$&#5./?S,V,8TYN!+S=3D at 7AD>1UQPM5OCRCLNO#3(8
-M+]9CT+&P/MHQ(^\E9V-'CM6QUGS`K$02MT8LD at D`O````+P````"````10``
-MN$WB``!`$0``P*@!`<"H`0(!]`'T`*0&B51S&P,7ST[@5%`A&I at X#9(N(",@
-M`````0```)PD``"``B#>-+`H>V(\'"Y--#UO')+$LBSD--8+L55 at 43[3#AMN
-M1F4#L^9M1?B7<CA:-KJL=3DOMP/=3D]WCIO6&]YYO_Q)AD7XQRMT'?WTI>Y'45D)
-M.%)C(I2VLNQ621ZQ1`=3DO;AU%@8 at 8_;HAVE<8SE/Q[EP/?2:2^?<D$@S4]5&C
-M0$02MT:AL`D`'`$``!P!```"````10`!&$WC``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z51S&P,7ST[@5%`A&I at X#9(N("0(`````@```/PA``#@UB%V_#$<%;]M
-M,UDLTU1\4[K:B4`IX?<Q:SN"ZLO+$3[R?#37X^*(OSC(J at D`-LES)UG3[U^]
-MQ[/^R"^-Q_J8LO7\``B'M'M"%@$?[@5-)?VQ"DB13N10YKE^=3D^085OSP?=3D<U
-M.QZ<\9?VS`YTFVG;`\(#^[WPK\K]0;B[`=3D(1`G^AE63&W^`2[9:\JRA at MV2-
-MDG'#<JX+0=3DQ>1Z'M'#R&R83V?[@TJ,%LB%).5:+:?2/W*-T('@^K=3DO&\6P\O
-M=3D97 at 25W,VDE59][<VA"_3#)!/K.5.L=3D;CT:/A[`[G402MT9OM at D`_````/P`
-M```"````10``^$WD``!`$0``P*@!`<"H`0(!]`'T`.0&R51S&P,7ST[@5%`A
-M&I at X#9(N("0(`````P```-PA``#`!`2$/QF;QQ?>1[%NIGVO+T??>HM5RR2/
-M?7]O"IVMKVI.O6M]_=3DU^$1:,H81)*2LGW\=3D7.,VF,:HPHVADHB;?]-:D@=3D4C
-M27D]L%D.O+$_Z2&5I at I[B]+0&`:&P/_9_Q,$S?TY7;"]?8M7`Z0`/!N0C/0I
-ML\O%?WL7A![*._PSP<!2:?Z,T8"BSMM&2.O$"9QHI`K at S92?#BB5-X0Q)6!H
-MHVW8I*UQQ=3D:JUM347!BN40CW@!8^@)P/"P[^;^M$$K=3D&Q\8)`&P```!L````
-M`@```$4``&A-Y0``0!$``,"H`0'`J`$"`?0!]`!4!CE4<QL#%\].X%10(1J8
-M.`V2+B`D(`````(```!,*0``,))61Z%_54J$9,PV+\;N32D.&B[1@;!13D*F
-M]9IB#"!$S:>578>;P%N2MC,:1!*W1O7B"0!L````;`````(```!%``!H3>8`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y5',;`Q?/3N!44"$:F#@-DBX@)"`````#
-M````3"D``#`[3T^$2DIWV1"%CR8=3DX\()?NL',9#DES0`MMA9FOUG;S:2:P0!
-M4S"ISEG8T402MT;:_ at D`/`$``#P!```"````10`!.$WG``!`$0``P*@!`<"H
-M`0(!]`'T`20'"51S&P,7ST[@5%`A&I at X#9(N("0(````!````1PA``$`T*H^
-MYK#!9#QV,`N6#?]=3D`*ML`F'"R%3B\H+Q67&)YR]5]_MDQ-#?7#&\/*IX#G*M
-M'C!7YQ)&%@,5NF:,*[B,(#.G/):/G>M$AGHH\%U^8?#1A!<6)25O</J_;G/&
-M<!CTLU,C?.Q5+H<F#9?<"H8O>3_6U/"<3=3D=3D#Y;#,4[)0JZT)<@SHIF2;A/[F
-M$C'THQI$;TY:5[^;'4?,:EB0IV1%QN$1JP`AV[0S6KL_0'][LM1WQ5(#8L_P
-M,!'T[D%-$60`IFII=3DY#7CJ&O28RD,CG_FSBO39;L)I<),*:\Y7SC,\0ZPC(S
-M)NTS=3D?$*=3DFF</AFJZ*W^Q>VZKET>6F1%1!*W1O4*"@`<`0``'`$```(```!%
-M``$83>@``$`1``#`J`$!P*@!`@'T`?0!!`?I5',;`Q?/3N!44"$:F#@-DBX@
-M)`@````%````_"$``.`^[E<9U09(\JR]9`ON?;OOJ-C[0Y"+O#P['JN0U/S;
-M0'QA!8IX>UT\>UDT%S]V/B5%-A#SG"F9L&Q\I+%N\,+"#$(3UP,6L59)EEIX
-MRA_8HWC9Y$(NB,JX0(_E-:-3<WJN$8[31!)]8%)2T7+GO13/TVPFC1:4M&IR
-M?!K3P0U>I>[;J+!YRFZYX;_X\+V&CG\,I+1O]P&,L5>?D5_0VYE)C;,1TBR3
-M,KR8L^I]G)!!VOR!(N_HO524T&+^RN$7(P65_WD,Q71?'.N*=3DJ;*QBAA$[86
-M%CPA<?0V1ZU,1!*W1D@:"@#L````[`````(```!%``#H3>D``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y5',;`Q?/3N!44"$:F#@-DBX@)"`````$````S"$``+#8
-MQ'W*^WAK+7.KLP!6.3YD1J,L[83^. at E^]5![^87XX@)F$P]]TRIW'9**NZQ]
-M?F#\%/#]!R5IRT'L!20-3]$%=3D3+_/2ZQ'B6%B/S8!SW0,[$JM at 4SF_70\X3`
-MOQMV`JN(^,.JE[L\\>1'$3*N:3.O0<)Z3(WRM?5X+ at IW2U`!87 at T4JC;&?)U
-M2/U/0+)VV?\P^WW'Y;1A$."+?]DA?Z3H1HK1 at E`=3D);;ON$131!*W1HX\"@#L
-M````[`````(```!%``#H3>H``$`1``#`J`$!P*@!`@'T`?0`U`:Y5',;`Q?/
-M3N!44"$:F#@-DBX@)"`````%````S"$``+!-_%.(@QZYU*VX^/J7%+MY.#3_
-M'X8:%]*C;F)63*C4C)R])=3DKF<C&\F0N6LFJVF`GVPZ55:!(\$NS(J'%EG.4>
-M]\-!4:L^KF'/3+[3D\Y*5]=3D%S1!`#H.*Q/&T[5E,L\K6FL"6NT;J$9N+?ZCF
-MG[D#,JYX\L$7@=3DR=3DM%1A?);]"CE\*1]@P+<:!7%1<T$)J5KA0QW>6RV[;YF*
-M<2_I$&GA*MI']U"5U/L+;@&(1!*W1HQ9"@`\`0``/`$```(```!%``$X3>L`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)5',;`Q?/3N!44"$:F#@-DBX@)`@````&
-M```!'"$``0!6EYI/.$-B0B"7*Q-SD$CG`2IY5VG$V^YLU]J&T85X=3D\`]AB_<
-MX?[. at 8:80\$NU'/WU>]+B,BB(+\L!;KWUX6@^Y+]KL4!ZP,^Q*.D/=3D]J&W]6
-M:MJNTR(H-C-"2`WRSW"1IG2N':`N$;Q6^Z8N*H"C at 0#$/APZR84<:Z\#A[*Z
-M`P\=3DI"_G]0UGV39<J.4H^?PR];(D=3D[W[Y[?<Y"&/H%=3D0Z`15GIGI]VP*KEG7
-MOB=3DMLA*JXW(>>(NXWY\6JFV+,[JZ(3'A4T#`4+A8<C,UXQA7U@<W!1D0F$5R
-M-OT>C8#/Q>-PW&W,+ at AO>B_FB4S/J5-WEK>'WI3-DHEJ:1U$$K=3D&360*`!P!
-M```<`0```@```$4``1A-[```0!$``,"H`0'`J`$"`?0!]`$$!^E4<QL#%\].
-MX%10(1J8.`V2+B`D"`````<```#\(0``X..]=3DE>DE2=3DLWVYRD-Q`#B'?TZG[
-MY_2&S1]?<`,BM-^/VP@%;+;S^Z'!ROB<L6PN,%H4E&7+/J^8G93*D^2'GQ<6
-M!^C%"-P>=3DB+<L5VLM8EYY8^Y%^#7WOQ!R4I;G!W-6'J)D0 at .>;[X];:&"+4_
-MV/HH&@=3DLT98.(_1XG3^E3+,\_B?U6BE+,]4%:?>^Z<`1[;+1<N1/T'I0%PGW
-M^0NV$3T#Y`\B=3DYD>+CI,;EQH/IY5'I6K8[-FQ12F78<B&MCC;[Y%CB1[5\]+
-M!&;O<^T-[]-:6*NWB_`Y\]/$5+)$$K=3D&FW,*`.P```#L`````@```$4``.A-
-M[0``0!$``,"H`0'`J`$"`?0!]`#4!KE4<QL#%\].X%10(1J8.`V2+B`D(```
-M``8```#,(0``L*K+L[JZL=3D]4M#E2P:QX*X/!+3^E<YRO at PO.=3D2QI:Q-RX^KJ
-M)'&U!`GLXTX7YHX9A/3CGSB-E8^$<LF;<`%JRF<'`,RMIB+A*F<8>VR)V#+B
-MBW&Y^_A#/)Z:F"`<#N+0AP5";_"%=3DC-K/^E'N(!:L*^7AQEN;;TZ+/>P_KU&
-M0$)"?F'-(G)5N7/9*_6#UX:2T^T)$S.5+1\;NH]KQ:M3:V,G)6JYO)MH/%U]
-MXL%$$K=3D&N)<*`.P```#L`````@```$4``.A-[@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KE4<QL#%\].X%10(1J8.`V2+B`D(`````<```#,(0``L.-ZK,WVI]M.
-MW#4BXXNW$17'(#2E_=3D)#(,EO`8%@R]#E..67RY>TL_PIC(/%62(6:@N#$D!!
-M)S-I:-'^XP[9$AL:_8,))7)`@63O]08^<CK>8,YXZ!. at L/.04+6VF">/"??^
-MU+2Q`^6:9RHL at 34[N/#LJC7\[(W$R8CSBM;=3D>`S"M..A8)CZPZZ_Y&T!!?^P
-ME at BUD;7(%)[IUW at GQW^:16Z*IBG#Z(EHG=3D/GYS%$$K=3D&FKT*`(P!``",`0``
-M`@```$4``8A-[P``0!$``,"H`0'`J`$"`?0!]`%T!UE4<QL#%\].X%10(1J8
-M.`V2+B`D"`````@```%L(0`!4,UXWQY+?XJ.'917E<D75L$UC.2!3[.K+L2$
-MS>-H&TI31^/?R at 03UT%?C4N_<";VNF)#[6R/&NSAPR4>Q`4WHWQB at F<)ON%2
-MC4&#"DGG?)L]>[&Z`PIY;WT5(3&4R65$`5=3DDY>GA$T!T?N_!P7]M\S#";D?T
-M]]H)H'Z\5#2SSMVLAQCB?Y08!E5_;36[])<I+,%UTUC!XP,J%N1+=3D2XJ`R]3
-MUP-5?V+9<\*,1PHW"[6@#+**J;PJZE=3DY]MBQRB^1J*.<CU/P>&7Y&^*]]O;[
-MA-&5'@N'4$U)HP?[P;A%G)T&?FE/5VQCASDM(?NKTT,I.7I3YY$S6/)ODWYS
-MJ&R<_F&04`!E0&`$^,^AP_Z1+JKP(I&WQ_BD3PSL8B4;YP#?,8K$3[D=3DL8"M
-MOT"9(Y3NNC`@MDQ>DTYI4%7;A[Q9ZUFG\,#B"$LRGQ5&AY/^1!*W1KSQ"@!<
-M`0``7`$```(```!%``%83?```$`1``#`J`$!P*@!`@'T`?0!1`<I5',;`Q?/
-M3N!44"$:F#@-DBX@)"`````(```!/"$``2`^K6#_/K2>RI%8N]N"]A1>MWH0
-MG7CR#'UD!W`U7ZC^"W3G+5$8%VT/ZNNFXB4XTL477'Z#O0O(,IR4W!\M_&BD
-M]^0DSV>Q""(H]2M/L^B=3D#J8-_V2%I6>E;U*RDI;KQPP78PM5P7CRZ6S-07_#
-M3-$$HWI49?'!+Q,OUPJ)<5M`RN5 at UD?R]\\^.4<0<`@.9+/A/5Z6WVF=3DH0$N
-M=3D8HK>7FGE8.]JAXG3#-/PU!S.F?8KD_6:2I0_[1MA*3'&NI,8Y5Y9#+;BRV/
-MT\825A,570UMQJ4LLX(&7W0JU/"<(ZS],=3D,U>N\:FEW^WCB2KC"*I>UDL:B%
-M.&E!)9;<VHC_X.`1F;^1<;=3D9R819*7?!J;G59]"G`TV*.B4RIS0G<T02MT96
-M&`L`?````'P````"````10``>$WQ``!`$0``P*@!`<"H`0(!]`'T`&0&28SF
-M^@RVP`F[")#FM3GJSZ at N("4(`````````%PJ``!`JRS02/].&S51X.16;.H*
-MVS"/_(W+7(3\C'[WCT:(M2D<I;524\+LISD[D>9)D-_F](;K0NV325/E)^KZ
-M1!*W1IHC"P!L````;`````(```!%``!H3?(``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YC.;Z#+;`";L(D.:U.>K/J"X@)2``````````3````#`G=3DOGODK/:$:HJ
-MT"(PTL/*%FKN*Z['9TGQ`#3B;Z+?G\>4FA0>I,$@]P&?VT02MT97, at L`;```
-M`&P````"````10``:$WS``!`$0``P*@!`<"H`0(!]`'T`%0&.8SF^@RVP`F[
-M")#FM3GJSZ at N("4(`````0```$PJ```P<J9STGMM(+*G`V'E>0L!]*:R/W5&
-M`/^R\6%9`^'%A^$?=3D`U;/OWCO9B2 at 8M$$K=3D&GS\+`&P```!L`````@```$4`
-M`&A-]```0!$``,"H`0'`J`$"`?0!]`!4!CF,YOH,ML`)NPB0YK4YZL^H+B`E
-M(`````$```!,````,.`[,[F48`GKB^F5D-I#G=3DA3PW_F-:4R8^6)L9?7R:=3D0
-MJ%*.4>3BLM4,>?NU1!*W1L4\#`"8`0``F`$```(```!%``&43?4``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DETB+:][SD:'L``````````"$@(@@````````!>"(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``T69"RFEU,96-
-ML3`*__;4)I3K.U6V0/28.KZ=3D%`:^QB=3D-VMFZ,KEO/^2V6?-EH4FSDT.#;VW'
-M.$7]4X"9,35"-S;)QG at O5J!8>[HJ_F?_,;'YJN>)F<^6UPJ&Z)PP%C3YG:4I
-MS3TI?:.,UY[O at 6@52[L4@=3DW>*WT@,#EMA5)@UH$I```D-&6+%NN%Y;P4=3D?[O
-M'>9W4L74T:. at YM_6$"$:YDQ(!%0I```<``!`!%N*FVF3#B9#"X39^$ZU'7%M
-MB,1+````'```0`53?.5._2UKES6-G[[B*QS-"L<L1402MT9\2PP`7````%P`
-M```"````10``6$WV``!`$0``P*@!`<"H`0(!]`'T`$0&*=3D(BVO>\Y&A[````
-M```````I("(@`````````#P````@``!`!@````$+TQG"/`^M=3D<;U;B3CKOP#
-MR]@#^D02MT9+6PP`N`$``+@!```"````10`!M$WW``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A=3D(BVO>\Y&A[```````````I("((`````````9 at A```@``!`!@``
-M``$+TQG"/`^M=3D<;U;B3CKOP#R]@#^B(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``T69"RFEU,96-L3`*__;4)I3K.U6V0/28.KZ=3D%`:^
-MQB=3D-VMFZ,KEO/^2V6?-EH4FSDT.#;VW'.$7]4X"9,35"-S;)QG at O5J!8>[HJ
-M_F?_,;'YJN>)F<^6UPJ&Z)PP%C3YG:4IS3TI?:.,UY[O at 6@52[L4@=3DW>*WT@
-M,#EMA5)@UH$I```D-&6+%NN%Y;P4=3D?[O'>9W4L74T:. at YM_6$"$:YDQ(!%0I
-M```<``!`!%N*FVF3#B9#"X39^$ZU'7%MB,1+````'```0`53?.5._2UKES6-
-MG[[B*QS-"L<L1402MT8A@`P`4`$``%`!```"````10`!3$WX``!`$0``P*@!
-M`<"H`0(!]`'T`3@''=3D(BVO>\Y&A[TPO3Q7FH/@4A("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``!O?XWIU;BO)/QXF*E3XG4=3D3=3DGN1<ZV,7R2)TE0LB^Q0OHZ%WYT@
-M[C0&Y1\1:J-GWM;$SQ\(D1L1^RA]!&%"T#D(ITY\^L=3D#'4#;79=3D#?3'VPY5J
-M1QP5H/P;/-97SH+?#0`<2+V(FL^/Z7U-*L3'_7MJ\'U8NWD?9@)9R?5D7M<'
-M*0``)+E"PS/?K)W>1W'`W]*D>ABZMA2`_'?\F>WJ8YGL&Z#9*0``'```0`2'
-M^Z=3D!4`![6ECMO>D8&H99`I;8YP```!P``$`%S0',#!PC0A#LWZ3D_^0+$K.%
-M"45$$K=3D&=3DJT,``P!```,`0```@```$4``0A-^0``0!$``,"H`0'`J`$"`?0!
-M]`#T!]G2(MKWO.1H>],+T\5YJ#X%+B`C"`````$```#L(P``T&I]7E!!+9+Y
-M]7B(@A'[$UL"'("P_RU5Y%44'<Y61TI*ST,IR62U,;U$+0O*23G at A+D?M_$5
-MK\6&9/Y8Z$".V0+HZ+..'WQ.IF5UC$DNN4.>J4+LS<CS@'DHK)PTN0(3]#RU
-MVER0G<X*"AP!]M$X(TT2ZN&(K(1/CP8WGRSTYG075_P1SH\*M9)O1]XOEV\.
-M0G=3D`XFFS*,\?PHC$4S%\Z,'*>14[6_T4)LSM]$&XS%\1$"@'38<3_L6%:5Y]
-M`G`9T=3D\^#E"V*[#<70'H5T02MT;XQ0P`O````+P````"````10``N$WZ``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B=3D(BVO>\Y&A[TPO3Q7FH/@4N(",@`````0``
-M`)PD``"`')C-QK,$J]O]XWSYF"=3DS.D\OLNA>O/%3\BA5*<GL)-HD0^Y_`,!X
-M;](`F>"!)3E&"TGZS6H)1F at 7(U6 at J&1.;%6W2T]'#V?[>@YL5KL(`IT5KN3B
-MA&]$'"BQQ93U%L:3K9?,''I,D&`V)08`@8/AWHU?E9OKF0>8,5VN(T02MT:W
-MY0P`'`$``!P!```"````10`!&$W[``!`$0``P*@!`<"H`0(!]`'T`00'Z=3D(B
-MVO>\Y&A[TPO3Q7FH/@4N("0(`````@```/PA``#@4!G?1)Y34`<<"+"^G<$G
-MO:GNHVEC81^?X%]OU%-KGA]N9ZFZV](9[7_HI7>2^S>8ABQ&/F?SBO<,G+T1
-MJQ*G!V>8%WX.J`8 at A9^A-?*@-R"4Q9CJP!&Y('1II3<<N0M:594F\\4K:7IZ
-MY\18(\`MWC)(-638GM(H<FW(3G%I)+%1<;@Y_=3D&*I375"ANX)>3%V57TL0>$
-M<D(T,(N1;X&L/<XA]XB'X(1^J'E*X at N3LBW6.^]AG<X#]U^8D\IA1=3DWH31'Y
-MY8OEQ9H"Z4!:.VF?!<?LM4Q-73`EQ7\1#D02MT8%\@P`_````/P````"````
-M10``^$W\``!`$0``P*@!`<"H`0(!]`'T`.0&R=3D(BVO>\Y&A[TPO3Q7FH/@4N
-M("0(`````P```-PA``#`TI)_57M:Z'7341JB&^@(*N.0F$(\*V0M"6;M<KO#
-M$(G^F>G8VIR]=3DR6D7E%^PK$_.<,M`'%'9ZM2:CM98RX2_JJTNI.6C"ELAR3K
-MDA"W;J,M.)_MV9JSR"ME!0F=3DXH]#+':#HLCM_II4"]TJ(+,",KAYHSC!8!2=3D
-MZ1NE59T,$.T0M]9VZAY)L)]_.%;%E:G6"Q8:DX;)RJV'P';"ZKF1/V.8\H@?
-M2LIPNWTC'O.#0UKS+%"CH*3$5J(_(N1$$K=3D&=3D/P,`&P```!L`````@```$4`
-M`&A-_0``0!$``,"H`0'`J`$"`?0!]`!4!CG2(MKWO.1H>],+T\5YJ#X%+B`D
-M(`````(```!,*0``,/]LMG:P)\`MJ9H[JF\/N8O(@/(MXN%2""CU at IZ\?WM:
-M?E6!^B.#HWS:?7/?1!*W1O$7#0!L````;`````(```!%``!H3?X``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8YTB+:][SD:'O3"]/%>:@^!2X@)"`````#````3"D`
-M`#!04+PYGI488Z?O'M^3+YSD8GN(*BO5?&PMOB)*E8FLSB(/$JX`'37B(\B9
-MWD02MT8>,PT`/`$``#P!```"````10`!.$W_``!`$0``P*@!`<"H`0(!]`'T
-M`20'"=3D(BVO>\Y&A[TPO3Q7FH/@4N("0(````!````1PA``$`9""'&R;"P>&O
-MDM(_(M:3LMO'3T`#*)P"\OYUF:"$,.UI[R1CH[H>]0E&0^4ANW/Q8'QZKO`<
-M#`4QPL&=3D,IH4YS72J#2EL@=3D$WL$\MDA[ZJ*S=3D/(XV09D3#,I#]S94,"U"!-7
-M;0`S8$]^H*X2=3DGTDV_7FZ(-_%A`H"@66G4J_$3SM#7,>@WMN9%B"U"IB45M#
-M!):+3=3D!X,E&M_:K)WD+BQ2BT.O&,C*KDP\?-F!$%@-"W8';M:_JOMH)%:I3?
-M:L'6"#C$ASUT[M'IT2*R';4$7)(KE$;T4>M4K at N;+IVC<J%5F,VJBYL%,=3D+=3D
-M;SP1MG>J/5S`F&NJ__N\-,"&1!*W1H(^#0`<`0``'`$```(```!%``$83@``
-M`$`1``#`J`$!P*@!`@'T`?0!!`?ITB+:][SD:'O3"]/%>:@^!2X@)`@````%
-M````_"$``.#^MYBRM90'ZJU%P06;4[8FSMB?O_TE<Y)1HH-]NVVC$TA?7M8`
-MI<!RN$-!I=3DPE[QG(5F;T#1H$H$[F[^6\K#71/GU<JY-3:M8+2I+9XZX;&R,9
-MD1C%?U+,[GD9>'7 at X>LEPT!Z$3B2*Q;<UA'%4E/H;_KJ.3MT4/FC!AA>NC-M
-M9T.IKJ^G(+8H@]!*A@`V<O>N).@#L99 at HG![C<?6<+ at PI)G_P,N<.02.I4#M
-M#[I(.%^OW at -K)4![HIZ_`^$9+Z(Z]JPF3]U=3D()8J, at 5!\(C>=3DZ5ZL#9Y-#7/
-M'IXY1!*W1KE.#0#L````[`````(```!%``#H3@$``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YTB+:][SD:'O3"]/%>:@^!2X@)"`````$````S"$``+#%7G86BE&=3D
-M!?CR4-<D__+ZH8'QL`X";6Q1=3DSU:I+13WINS2>40K[B at B$D/>Y#.N1B3/_%*
-M'L!75J$NCOC4^`2-MUF<RLBZ"['JO8V!CKX2L<WOMRD)-V&&0S`3CU`]Q)4N
-M0IQB2C.&/XI!^II!`,:>"C]2Y at MK^>%JY[$&D4KJ9LH926#`4(N#<`C^2 at FU
-MC`ZR$SA])CF!\BC_<HLNTIHUJ=3DY&WFCAGFB?U)G_1!*W1DQR#0#L````[```
-M``(```!%``#H3@(``$`1``#`J`$!P*@!`@'T`?0`U`:YTB+:][SD:'O3"]/%
-M>:@^!2X@)"`````%````S"$``+`)9N3CW9>/[*Y!=3DRP#0^-<]6K+(A.?J_P!
-MC$D[<Q1"09X%;.Q?_O$`2OQ[L1@`">APK7M>3Z!]6(.^`@?`0)O1VPFGS=3DJP
-MF<RP at P;\P("9ZT3[?1P<W19\(^Q-?Z;&*$)'F!-]NJV0((C;8[;IO3-M*2Z1
-MWN,*)W<E1D<!-$Y%B1H2)@A9I]0"''<%64Q)!+@<8EXPKLA(@XR%HV10_6FH
-M7EN>35?U)-W-MCW=3D1!*W1G^/#0`\`0``/`$```(```!%``$X3@,``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)TB+:][SD:'O3"]/%>:@^!2X@)`@````&```!'"$`
-M`0"QJ29TI>7<P at 59=3DN;\\SQ!/6*1\6RLU-Q9@@2RD9T]ZQ?=3D\13,7$]2/495
-M:7!\946);?7NI'#\B!'2X.E/5XR":TT&!DCP4UM+U&!0C%#AF+T^957TP(GV
-MX%$^:AH_)ZXQ=3D9.B/R]JF0!&\F7F:QXN;XS7W1NK&AY\9V_1H@&+:<`SNLW[
-MC5E@?P>174%`&UIAL`N*T%[E4 at T`E&U5DRQ]-?'W]=3DE)K"91SP2*&3$(H%O4
-M1\0%1`/41"1$+D at 8"F6R;#"*,14W`,F"^3[C[SR9V(&7+H.5JRX*LBE/O$C5
-M-<-D'SQ_%ZGXK+KOK)D-7Y- at 8R]2K6JPJ0KM+RA$$K=3D&!IL-`!P!```<`0``
-M`@```$4``1A.!```0!$``,"H`0'`J`$"`?0!]`$$!^G2(MKWO.1H>],+T\5Y
-MJ#X%+B`D"`````<```#\(0``X#\Y?`H34K#MDF[)^^MI4KZ=3DZ-/HJ80HM%04
-MJYB=3DKP")FP"C![&'2A>EE"GI7!7KT5>JEX at +18OA036EYRWC=3D4/JPG*9=3D`>V
-M":DY-(-UN)<DMYA/>*4`(Y\*3^2D5R=3D#@?F=3D^,SOZI*A`X;7JN!@R#66+7^"
-M#]>*&&GFY'MH??P*737A1<BI2=3D`)NZ59*J=3DJKI at J)>;E&YYB`>E#=3D(V,4R"0
-M,D)SFS#C&2_._!YDON&D39)Z<Y17@`W%2X"0<-5I?64H;$]]3RT./1OS at CF?
-M73S;*9JLSL`V7"1F("=3D$$K=3D&=3D*H-`.P```#L`````@```$4``.A.!0``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KG2(MKWO.1H>],+T\5YJ#X%+B`D(`````8```#,
-M(0``L-!2!)R"/>!GT1JPIC'Q[PE1Q+Q!T!+,E?RO5`;4Y8<P^]O:AC(*1O<U
-MAY]G052L4(5DN-/S2K\C=3D[QJWZTF-#YWF\:Z8>4['B.,$?Q%,HG&9\89=3DP-?
-MYYK->3+S4$G"(N$C8R=3D0>E.-2>0+J:D5.606[JC\!@YGY>!J(\4`%^BZCW7G
-M6'IZ8Y3XORTD59I=3D;%#!_N#<;\EID!XB9A44_$**9X:UW<.VC7DHF0Q$$K=3D&
-ME\X-`.P```#L`````@```$4``.A."```0!$``,"H`0'`J`$"`?0!]`#4!KG2
-M(MKWO.1H>],+T\5YJ#X%+B`D(`````<```#,(0``L++N/U(18>@<`Q/&Q4#W
-M6)NIS>1AN]Z6P5)+',J+A^2D1X`&.=3DU.ZFS\V!!1,^A&L7_^<ZWF<"&L7>*X
-MFPU()Q,J'D)[,)VOK#!,,^</./=3D(S)U!J%CF3F"T4=3DP`H,B?<'LZ=3D\Y'8)#P
-M+WR<&1R-&ZN1VBVR4-5 at _3FT=3D7&"*]G*H?`DBX]K36YQ$N(B?'Y=3DI0E5<X(N
-M_:?TB)_B*6AN.@=3D:>/QYQ1=3DKY=3D%=3D!'Y$$K=3D&GO0-`(P!``",`0```@```$4`
-M`8A."0``0!$``,"H`0'`J`$"`?0!]`%T!UG2(MKWO.1H>],+T\5YJ#X%+B`D
-M"`````@```%L(0`!4`PYR,>_*Z5VFMBEONYP7IXX=3D^%"$S@!]A3Q!5#N>R'[
-M:KUL`HSWR9 at 7^>>D;AV+]?^PK/SV<,^:.R["VMSH"?T*'IRI9HS1_"!+0W-*
-MA)OG_/Y)CW[CD3>%<E%G>''KN<.A`/9=3D4`"442C at _SU;-,]`R5,12/1A;6!T
-M6[*)O.%-1.[#*12%?&"LAZTK'+;DR7)P;QHYBMH$-O2HVI;>$AF<X=3DUW9)4D
-M;K1<P@^I4?;85+XSHJFP.`XV at O.CQ>;U%X9E;5[3 at M)4Z[^PB]BON%7/R"]%
-M0JEO9EJ3<M%8 at L778ELY83DD1D\6PMB61Q+:SQO`A\L`W\1<V97_E"7W4_-2
-MA^F&N*"#_&7,)$I3&*5BB/F**2PLO6+LW>9DV`GNOVD%CY!V*>BQMJGRI9_.
-M8#7UPK at 3%\-0J&_&)7S/.\UG9$[_]\A at -J.]Y\D)1!*W1CPJ#@!<`0``7`$`
-M``(```!%``%83 at H``$`1``#`J`$!P*@!`@'T`?0!1`<ITB+:][SD:'O3"]/%
-M>:@^!2X@)"`````(```!/"$``2"W_,`NY'"2-U`_I<XC]HRG7SLB%I5W51]R
-M72"'YIL6\T!4LYC1Q2)?WO\:=3DFL`#'DKL.75<C[$?1^U5IE$Q6S0LSU4G*RO
-M,=3D)IH^K7YM+7K82'\;AL`V#K=3D/-$%NHUBO6"75*1K(_!U%W!29[_1MK)/TKP
-M\]3JH@:!JEUEMJ^*F9E3YG&H^0.#/[:[0$\7[UR3%OD-E0ESC"7QNUA]I/?U
-MQ%-2X5L!`+400BO&UG_=3DGORDE<)G4M+ZCW`'ZZ0@$N_P6LSK3;_*HNRU.2*!
-MB+X]'*.4.^*'8RB;41RJ$M)0=3D`FHU$ITAA8H>!?S!'IWMK\7PZP!C%'QM!I\
-M?_IWDP:3VT[Q'O_-W,&_Z!X4D?,V7L34FAID>Z4(X1=3D<[402MT8T4 at X`?```
-M`'P````"````10``>$X+``!`$0``P*@!`<"H`0(!]`'T`&0&2?76W9IJ;HV=3D
-MBA'-Q:0U.*$N("4(`````````%PJ``!`3IRAK3*4M%PZ[%7AW81CXA%;B%[W
-M"5+$"N+A(J_:Z*XD1DXWJ8A3E`&Z&@':@S02JTD-J"LR"J3EB8&11!*W1J9=3D
-M#@!L````;`````(```!%``!H3 at P``$`1``#`J`$!P*@!`@'T`?0`5`8Y]=3D;=3D
-MFFINC9V*$<W%I#4XH2X@)2``````````3````#"$S'W[VVE#SUGWI)M'(6>W
-M^%H!39>]7QUK0WR0-IR$UG)RK+YLQJ-L;HZ.WD02MT9>;`X`;````&P````"
-M````10``:$X-``!`$0``P*@!`<"H`0(!]`'T`%0&.?76W9IJ;HV=3DBA'-Q:0U
-M.*$N("4(`````0```$PJ```P4VK?Y%Y"DFV_;%.S\[-_XGPFS&LN"4:0M1<D
-M2I(@8BD.B@^PNA&7Q"]<SQI$$K=3D&F7D.`&P```!L`````@```$4``&A.#@``
-M0!$``,"H`0'`J`$"`?0!]`!4!CGUUMV::FZ-G8H1S<6D-3BA+B`E(`````$`
-M``!,````,%2"/Q4SA[R:=3D!&]A+OC?)_8?-L6$4/TJZ0K#--5RBE- at +TEKB/F
-MJF=3D>&QZ911*W1IPT``"8`0``F`$```(```!%``&43@\``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE43]1BISDM%X``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``U-=3DBQ2%E7U'S5N4RH(B^
-M+=3D0-3+_M&I;:5:K;@CU at WJQ')"AN6Q2- at AST`AL$FSMT*84):F^`&NLU.CA^
-M`H at QG3(%B/R:N0+BY.QTZ1YXG/M"I*:]7*?!$&_DB,,@=3DXD!-7;@!1@(^KXP
-M!#CX<E:H[RBF=3D&"E<ND4:A>AQ at 5R^$`I```DDKP/J2O''F><.[)*CI05YR+L
-MY#3),VBI]VE#TJ&=3D7JDI```<``!`!!O5GA2<J#N:_&K6ZPHP9"#M&(>Y````
-M'```0`65*0KIH3'WIOWFPY_>:7/YFHXH$$42MT9L0P``7````%P````"````
-M10``6$X0``!`$0``P*@!`<"H`0(!]`'T`$0&*5$_48J<Y+1>```````````I
-M("(@`````````#P````@``!`!@````$:F2,_?E>C1)LM]TY96X"U4A;%+442
-MMT9"5```N`$``+@!```"````10`!M$X1``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA5$_48J<Y+1>```````````I("((`````````9 at A```@``!`!@````$:F2,_
-M?E>C1)LM]TY96X"U4A;%+2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``U-=3DBQ2%E7U'S5N4RH(B^+=3D0-3+_M&I;:5:K;@CU at WJQ')"AN
-M6Q2- at AST`AL$FSMT*84):F^`&NLU.CA^`H at QG3(%B/R:N0+BY.QTZ1YXG/M"
-MI*:]7*?!$&_DB,,@=3DXD!-7;@!1@(^KXP!#CX<E:H[RBF=3D&"E<ND4:A>AQ at 5R
-M^$`I```DDKP/J2O''F><.[)*CI05YR+LY#3),VBI]VE#TJ&=3D7JDI```<``!`
-M!!O5GA2<J#N:_&K6ZPHP9"#M&(>Y````'```0`65*0KIH3'WIOWFPY_>:7/Y
-MFHXH$$42MT;5=3DP``4`$``%`!```"````10`!3$X2``!`$0``P*@!`<"H`0(!
-M]`'T`3@''5$_48J<Y+1>^M[MF1:N?_`A("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`#I1MF=3D>2J!2%3$W$0HV!0B?P+!5EWW2`%W$D%W+BH(U341R`0S:-O`(<6+A
-M]95:27TD^#`MGW'+K[ORU\_2RVZ)W+ at 9>OEUF#7%R44?_"1?<8A*>1P%ED"'
-M?R0.4DX[F',:X/4:N<^6*5*9OS?R90%$/D":]&!W3)6U!9T)P!4\*0``),_V
-M3KK2N#AS_D">S#$]M[$-0[*\3;=3DM.)(-E["?$3[1*0``'```0`2, at 4%_KIS6
-M">=3D-(+(6H=3D^NT:/]00```!P``$`%C5-'[^61SCXURH]OC84!"_2\/FQ%$K=3D&
-MV:0```P!```,`0```@```$4``0A.$P``0!$``,"H`0'`J`$"`?0!]`#T!]E1
-M/U&*G.2T7OK>[9D6KG_P+B`C"`````$```#L(P``T!FOZ+1:!GXHH^]5=3DB[#
-M).EJTY*O.O=3DT\.D=3DI0ST1[&]Q&B\)TRF'//%"Y>7JRQNRY/O7)^;D^I&Q!)Q
-M/XKI3$]NI"V0"(]WUDBIUP`.6_-=3DW'*%V!H(U%T(USB:>%=3D<N]MH1)N`4Y^F
-MZU5TL*[GR80+*MV$96(ZR+66Y#OC?\1I1^3#3<#%TJJ5')(MB;,22=3D1UK88Z
-MBV at A7<!YL8>PS>@BYT8`"X%MBP!ET.X7BCX*#DJ35.9>H\ON&PI4Z(/+&U<F
-M%[+H,B_- at I/(7442MT:+O@``O````+P````"````10``N$X4``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B5$_48J<Y+1>^M[MF1:N?_`N(",@`````0```)PD``"`
-MIV+FM=3D:B&]RQ)JV(QEZ...>M_`K"GO=3DGZ60I&P:L]"K'%YROUBS&*F,+R%8I
-M1#N_R^0Y*$S<P[<H@*K.5<%!0W9`L.R;U!/%MJ_"F@?EYLVF2`!<X2EA'\(]
-M5CS at X]_/T"8Z)]:(^U(KGF0J^7?<G9>JS#X'F$UG at A(FU$42MT;?W0``'`$`
-M`!P!```"````10`!&$X5``!`$0``P*@!`<"H`0(!]`'T`00'Z5$_48J<Y+1>
-M^M[MF1:N?_`N("0(`````@```/PA``#@UT<P8NIF=3D\C%2^#MP6WHY<X.2)"V
-M[1A9NBE(\L%FN&]L4!F\6!^C[N4B/0A/MTEZ,:Z^9/6IJFUW<LP\P?TA4, at U
-M<9KP8<0(BA)=3DR!]T;529.I=3DBZB!?EVY9CQ"I_;:AW1[O?3GJIV:`C0QQCRBG
-M"AX5E.56[ADHA8T+QK?#RVB-1A.4+!S!0=3D2X]WTCX_B62T;897"J)!;!$M^-
-M\H4X&;9#/JG#GD/-YY6NJ=3DG1U/!8&K[ID9GZ+B_G_E1;N)6^]VFAC$;\"`-K
-M_0E];'Z]^7KNMC[?@_S<G28-UT42MT9&Z0``_````/P````"````10``^$X6
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R5$_48J<Y+1>^M[MF1:N?_`N("0(````
-M`P```-PA``#`R<L-_+(GWGI+7'=3D*2[-:DK/X4KRM)`A_E at QCRIDS7HXT)2X"
-MG5X:$1_Y>\S&AU.FH+/B7^4A&$H^(E8TA'K,6N<8;=3D70I]5++Z'!C*P$@P]A
-M]JLM!<J]RK(,$J3[F*J-B)9\K;WIK.,-VKL69T+FR6M<9*+9,1N\8V>GH9"(
-M,J92<Q'RI.5B-6BM[QEO;6HJ/HG,&2O-)1RF3C<6Q^"(I@&Y$K(<MBD3L;=3DG
-M;5)7T#$PV-4%S2XH[IXVFP-%$K=3D&S?,``&P```!L`````@```$4``&A.%P``
-M0!$``,"H`0'`J`$"`?0!]`!4!CE1/U&*G.2T7OK>[9D6KG_P+B`D(`````(`
-M``!,*0``,-7JN&-'[XT)3)D5#DZS^WTI!?KTRQ%0\&(`9Z)C5`4C1X&B'[XQ
-M'6+2X7BK11*W1G$/`0!L````;`````(```!%``!H3A@``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y43]1BISDM%[ZWNV9%JY_\"X@)"`````#````3"D``#"G\I-0
-M>>/F&A_RZGC'-5PH!R%!%HO.3IR'^3MFI71P5AND?_$A[:,(<=3D%@?$42MT:-
-M*P$`/`$``#P!```"````10`!.$X9``!`$0``P*@!`<"H`0(!]`'T`20'"5$_
-M48J<Y+1>^M[MF1:N?_`N("0(````!````1PA``$`<:M_*/>F+65R%EV^,+__
-M4"X&1]]:T(8^4<QY.GHT[Z>A=3DOF3_<`N'>=3D4MFS)`OO,*V><GT$FUEY4M2P[
-MEJ5?^S"^;LANJ?L((I at 9];[O!'NG&U[=3D3%99*SH#P(ZT$Y>6%8_D!;,+S/NY
-MB_KZ8E^2\H7KAS!U\*8_V;\L!HL$<:@\3H(_CQ5\2JC&B^[QT)"Y^_5UC!3@
-M(J:RV;S'0"/NOT17FC8EP3&RS71Z=3D._Q4<,H94W[..B,`-(N9XF(3?,*R1BY
-M)(+JRPIOBZ.B"Z"5IX=3D:.`Q;PU[6EI'"+J3:H^%6P"#RS/-8U`JR3)(^=3D&+#
-MS';>'/7<Y3L=3DW_OQ11*W1HDW`0`<`0``'`$```(```!%``$83AH``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I43]1BISDM%[ZWNV9%JY_\"X@)`@````%````_"$`
-M`.!H>->O=3DJ`!DEFFY>-#HG'F=3D^`NU>.VP3.P2MR7E=3DVMD:8?E]T(1N&F]?!<
-M!M)M%EAZ+U'7YX&%8]83UA'7>5&<!_N4:2;N\&>NJ)T6#O+1B]`9V(\2+(G$
-ML!(J/^7U:UQC`^1H:;,O%0/\+BIU"@/$R)\:DR)(<%?,7<(WWO+6&-3M+H,-
-ME(#Z:<,(NO?;X86LI>?JI8:\7!BE]CG:^!`M at V-BI4B.2;PX=3D54=3D<^IY-"S7
-M#H^MVAE,)/]"%49I@]N41*3PP2PXI*HQV*F+F>76;317[;Z.F at P`KP2+11*W
-M1N9&`0#L````[`````(```!%``#H3AL``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M43]1BISDM%[ZWNV9%JY_\"X@)"`````$````S"$``+!@NJ+>U&7'/C+N:6CA
-MF:"+[R:;'MG9#ZUC>AF0+%YE6DH/.:.QL7.ZZJD>&`&,!--":Y4W<SZYY3K;
-M9XT""!`=3D=3D)"@RUFF'ON($20W89\(B7^S&4YK@\D08&*/E2GAZF:3Y1N'"A)Y
-M3A?9'F:N7;H&;=3D]8J&LWZ6I[M6.`&GT?[U,3EW,!R8<IUS8+T5EI4):O=3D(=3D7
-MUK5%RF<5V$P1E@^?[V>&7:2UOVB-21!;11*W1H1J`0#L````[`````(```!%
-M``#H3AT``$`1``#`J`$!P*@!`@'T`?0`U`:Y43]1BISDM%[ZWNV9%JY_\"X@
-M)"`````%````S"$``+"TE%&8QR%FGW9/DI;,!J'^9,%57W>B4D:D_'J.;LI6
-M at H:JP!W?)\2XR:L/DG.(E0OG at E.@UWW.PN'O]A3I7#/-4%%2O+^HU[VD*F?L
-MMM"_'ROP55N,_#[`"IXNSQI![SU6(1?;;M#/<86,AOFI(U9T0`D:=3DJ7/C#&#
-MUBM+%B1-74?6599.$+$5TALRR+R!Q\>9P1YEP<ZYL_%I#T&8,/\75Q^51D$1
-MT'L-L at 2,11*W1KF'`0`\`0``/`$```(```!%``$X3AX``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)43]1BISDM%[ZWNV9%JY_\"X@)`@````&```!'"$``0#R"X`_
-MT at 0FI,>T,+X<W^\QN`LI0 at 0I?UQM5GR.]V:6^-L;J(@',ZPJOZY-?T9#\^8_
-M57,CG at .^Z6G_,+)"HWR3F-G=3DM8F<0"4:;N=3DLJY6FD8&XYVT69>:QXJ1']ZVI
-M61^>"3]^/;PM46&"&M`>KM1O=3D;N045J"D(%C&Y;4,K_B&[0.J*C#R5=3DOKD#$
-M[,,!=3DR8C$OL":,K(0?Q]7S-)`:Y"^T$)N#/G/GR.-S/Y(]O,B3#!G+)-D&8R
-M?O%VBG&JC8,V`#/Z:2]3%#I%=3D.[^D+1USS8G3K2E'@DQR!#?*?LD!9?\M[S>
-M9)C\D:,D?JI+3YJYK7KJDON)&[HR.75%$K=3D&DK,!`.P```#L`````@```$4`
-M`.A.10``0!$``,"H`0'`J`$"`?0!]`#4!KE1/U&*G.2T7OK>[9D6KG_P+B`D
-M(`````8```#,(0``L"\X$;6$Z]DG:46E$0$Y2M6[RK$,N6(O98ERV!=3D,=3D=3D83
-MU at 2@N'LGD9&;EFRYZ at K/6>_GJX!_S`P-P3V=3D5BEP%<IS7+<2TE/G#@V?*655
-M[(@XBH9#"-$QS7)&F:OXSNZJ)L?_VROF+'S9C\>;415SN:UE#(!B9_M]?OE^
-M;3$OV5FNU?"!4MD*T]A+U at A1\_6^4^Z!SH+SXWATR'W6K<.GAUD]QG5O)X+>
-M;^HRD_=3D%$K=3D&N;0!`!P!```<`0```@```$4``1A.1@``0!$``,"H`0'`J`$"
-M`?0!]`$$!^E1/U&*G.2T7OK>[9D6KG_P+B`D"`````<```#\(0``X&XWBH.`
-MC.'PR5S`W^[-ZS=3DG!R*TICN/([-6%QR?)KUC.[(<HRGVK"N0_HQV3U#TX?<&
-MGY?0[:/)]D.-A0;I4<-"_?D^0]\#.?DYZ_LH/O\R\:#Y(AI/Z>E'I>R-_!!F
-MZ!LP:Q*6PLMOI&+J:]2ASH3QY"X5+M<VDEO)Y?U!LOJ%;E7!'-HCI,L3FC<V
-M`YKJ58O4M6RMY5#)<$0%6Z$%X+]!2M4:Z^(79U*@QAQ@:V:5 at M<$J.MB\L=3DG
-M6WDW[/TM#!!O%TCC>(6OIF^XG'ON(3!K,%4$XRMI`R^D;N=3D%$K=3D&8]@!`.P`
-M``#L`````@```$4``.A.2```0!$``,"H`0'`J`$"`?0!]`#4!KE1/U&*G.2T
-M7OK>[9D6KG_P+B`D(`````<```#,(0``L#X;T!OT-UIAI2'P'7;5YW%+1ON@
-M!9YAJFN1YA/E#[?YBU[7,'-D?\$0LADH<#SC6L74^((#T-@/YS\VT;9PW;4%
-M9=3D%@$>'3.D+;PES9`7HD.')\\:PL/M"[0[$O[)TBX.ZTW<P>9R[C[/],7A)=3D
-M\%/.C/K0#+R'27 at L8CLNMV['GFGY6GW!HZJ>0GVR:E-33F`^G#X$/9W^EFMC
-MR3^V[Z8!\4-9?_CTCS?8Q<!%$K=3D&0O\!`(P!``",`0```@```$4``8A.20``
-M0!$``,"H`0'`J`$"`?0!]`%T!UE1/U&*G.2T7OK>[9D6KG_P+B`D"`````@`
-M``%L(0`!4+!-/JT4I6U,5\TG]W])`[[LD"BKIH3LN:SO8H^'^*3MKDSY3E&:
-M)JX208V\7B=3D-#*]9WO]*:^R%6%+)_Z&4,]+0EG/$>W2N2S(CL*?#98\\*<::
-M,FL9;W^8!4;0>ACPKT"*-$]8 at CTBT52<`8&&_QH%)%KC9YS!LBV3S2V.^DD@
-M/2BFM,HB:Z>2".$V-;_]?[E.4N>#6'6_N/3_JZ&;RS(<]J>N;2Y:#(52"#3U
-MX at XGI76XZ!Z<M.$0Y^-C1TAU2VB83>IP]FW58M.!&WS\/O>%Q?LO[C-J[(<1
-MT at 7!LKA.*9.2^']V;]=3DA at Z]AV4=3D;PV61*<)UL;$<O]XZSR*(\2_#N4Q>Q=3D at 1
-M[G#YGS4=3D*]1LGEGCWM/0RH`#CW\5C?X0@;+UW?9U;GDSW8/VEQY/+82K+B0=3D
-MVJN'MF(I)>PT]HQH$)[V/;U,B28)4,..11*W1 at HT`@!<`0``7`$```(```!%
-M``%83DH``$`1``#`J`$!P*@!`@'T`?0!1`<I43]1BISDM%[ZWNV9%JY_\"X@
-M)"`````(```!/"$``2#4^YYJXP1J14&;^1R1:$^+XEI;=3D[4]-,,B=3DM8B(]-(
-M<GAA-ND??%\4L_H54XRWT-EO!IR^%\@&6_(_1)/AA^P3AV&::F+$/E7+,4TM
-M>%%.;(K,2X'VYC71^8J<@0]N/3GP`#(C0L.1;$7`X+&<KHIU-,TJ1F/$7CDR
-MMN(Z$"15H:OU6N^:D)>AZ+@]L\C4[Q+_"Y6UBR<QE#]5LCE`X2XUE798-M5E
-M`?'M_^MHC'0#/?[4C\O at L\)@J+'=3D^ABJ1T_IDPX4R3D*K)R=3DWC3;[:4Y69O8
-M\<)2!X"$2U=3DJ)HQFWQE;>U2E2V_FSNR0?>TY"!V(O^X^15?#PT_4U=3DMLNSYY
-M#/T7H>PQ['@$6;Y4&7];MVD7QOR/V%[]PKD.7D42MT;V6@(`?````'P````"
-M````10``>$Y+``!`$0``P*@!`<"H`0(!]`'T`&0&20UG.Q.A`'F97S5NN6UA
-MZ@@N("4(`````````%PJ``!`"MJFT4U2:(!4M[<$R(QN"DLI)$[%JMNBW?U*
-MG+)@G76/D`%L&O-)B77_75O<@1+H.29[;9XJN09:V)3-11*W1KUG`@!L````
-M;`````(```!%``!H3DP``$`1``#`J`$!P*@!`@'T`?0`5`8Y#6<[$Z$`>9E?
-M-6ZY;6'J""X@)2``````````3````#`QH+P?D0B2&E8:B^XM`%'SY_);^'2/
-M;/.$0<8Z:-70\`D,X,?T!`F(+90+0T42MT9-=3DP(`;````&P````"````10``
-M:$Y-``!`$0``P*@!`<"H`0(!]`'T`%0&.0UG.Q.A`'F97S5NN6UAZ@@N("4(
-M`````0```$PJ```PLIS-UG>G8#?7DY2+&?]S'TG1K%=3DN]=3D:GQKMY2+K#!@-0
-MXU+5_PWQ%:[^A/E%$K=3D&$H4"`&P```!L`````@```$4``&A.3@``0!$``,"H
-M`0'`J`$"`?0!]`!4!CD-9SL3H0!YF5\U;KEM8>H(+B`E(`````$```!,````
-M,)T[AOVVWJ\#0YJB_[F3"%16"H=3D;P*S:M552K2ZA5:ZO!,/\1DBO0^&.$(\?
-M11*W1ON!`P"8`0``F`$```(```!%``&43E,``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE6KM!)(B+I8D``````````"$@(@@````````!>"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``$UCG_D6)H4E`>+-6'M;O[^C0%(*6
-MIY^,MNX=3D1/5-Q1L_4_MK.[Q&`8ML=3DHJ]PNHM.^$WL5/565;>\E7JC`SO=3D8+F
-MW>$=3DL?:M[!?`37T<B0+O8L:$$C+W+P#/J&>)IU_X7*4,-,X at 8:IQBS$L?FG-
-MB9#JO3^X.94[:*_X@!UZ2:0I```DOQQMXM+J`O)2]@0:#'ZAL.'2C$.9Z6O=3D
-MMC\V"4_ZBCLI```<``!`!')?P[&X8FRFFKM7ULO9\I"/6:+D````'```0`48
-ML5%Q<3=3D":%]!8GKHGW5["&N"GD42MT9HD`,`7````%P````"````10``6$Y4
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*5J[022(BZ6)```````````I("(@````
-M`````#P````@``!`!@````',.1A0KH<ALO<:RS1`R[FO^<EI5442MT:EH`,`
-MN`$``+@!```"````10`!M$Y5``!`$0``P*@!`<"H`0(!]`'T`:`'A5J[022(
-MBZ6)```````````I("((`````````9 at A```@``!`!@````',.1A0KH<ALO<:
-MRS1`R[FO^<EI52(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``$UCG_D6)H4E`>+-6'M;O[^C0%(*6IY^,MNX=3D1/5-Q1L_4_MK.[Q&`8ML
-M=3DHJ]PNHM.^$WL5/565;>\E7JC`SO=3D8+FW>$=3DL?:M[!?`37T<B0+O8L:$$C+W
-M+P#/J&>)IU_X7*4,-,X at 8:IQBS$L?FG-B9#JO3^X.94[:*_X@!UZ2:0I```D
-MOQQMXM+J`O)2]@0:#'ZAL.'2C$.9Z6O=3DMC\V"4_ZBCLI```<``!`!')?P[&X
-M8FRFFKM7ULO9\I"/6:+D````'```0`48L5%Q<3=3D":%]!8GKHGW5["&N"GD42
-MMT;=3DQ`,`4`$``%`!```"````10`!3$Y6``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'5J[022(BZ6)I1_B\W;9E.PA("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``%'S%/><
-MBW5T2#Y)PE!U#/P,E(R^3A$>']&JP`(%,YL.5\$U(BW+H_#]RCQ:TV,^)JG$
-M:M6G7ZE1,PIN^GD]:"A:G:T91M3Y^'NT9'DD(:=3DIN$R6JBE9)WX*"N5^;+&+
-MV>V[I]]O.-9?J?A-+N)'P%@>!KL,=3DMJA[*%/]Q6W`W9S*0``)!P:OF=3D<N=3D(?
-M>O(L)-KH5E@;X87+]RD2SG1&I.9-4,!L*0``'```0`02[*&9HV1:0?A)X,OY
-M9)U_U),_60```!P``$`%C`5%R1(.;;=3DKTS$PJ0IN1'7>O=3D%%$K=3D&J_$#``P!
-M```,`0```@```$4``0A.5P``0!$``,"H`0'`J`$"`?0!]`#T!]E:NT$DB(NE
-MB:4?XO-VV93L+B`C"`````$```#L(P``T*_2#%Y2_ZYGAIO7H&F&=3D.OL0V8G
-MY+:<Q2GABU?2&V'?P?<-N8K$W%N,UKAW'[;]"`5_;7C9??DFBN2]_X7U'@W.
-M?+ at Z-F4@?L(0]-`"4UG(VALW=3D'^9 at AXI7;)%ST<K6!@QLSF))4OYI^58QG/G
-M"`WK&L%G;_Z`N0<E9^6;5^%.5*!X"K#K(B<X!<]0P[":%<5IB?>^R<C>Z7V:
-M\ASR4?!@1?/\T=3DX/BY*!%7XIX<(.BFV^V\&YN>=3D[^N4O0HTE'7L6#XO>-W8F
-M^+35DD42MT;^"@0`O````+P````"````10``N$Y8``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B5J[022(BZ6)I1_B\W;9E.PN(",@`````0```)PD``"`(P=3D:\.IY
-M89^HT,:C%S?X,&E?&^)6@!>\NOT8$&1XI]"C97'"E0G@/?)P^:*=3DJ=3DK>6)@_
-M=3D+>+3,4*&2I]&2UZ[J0[$A69O_ at F]71H`UQ#(1M8P%[T5>`_M(5ZJ=3D^0A<U:
-MDO:N=3D7^B7(-:M'P8(]%^&'A&V>D%#:S=3D.3BURT42MT;&*@0`'`$``!P!```"
-M````10`!&$Y9``!`$0``P*@!`<"H`0(!]`'T`00'Z5J[022(BZ6)I1_B\W;9
-ME.PN("0(`````@```/PA``#@9_(X`#Q<9A5GA*F?"&6C;/)9U^.=3D0AU?'_/T
-MN,((RB%$IM^F\WWP at 8JB[.M'(R9XATH&D+30(T<C%&7"Y]X?10EH^[_2,]"<
-ME4+1;JS*QD&O&ZBA!?CVZ5I.NE at M(A5:'#;0?<:TFV<,8-QZI7`R#^"3'@C1
-M@!C.^]"1I*=3DS^W4CT at 9:/WJ?'V8'0AV*#__PA]29'%1L16V]5%>4^@MRJH4Y
-MR]5U$CVP3Z(?>'=3D>8`EO2*[VR/C"0GIF)O`*9RN6>PL1_<IC%\AI:2F1\UR8
-M6A=3D-]2>!U`4M4\PNF442MT8!- at 0`_````/P````"````10``^$Y:``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R5J[022(BZ6)I1_B\W;9E.PN("0(`````P```-PA
-M``#`KJ-U2&!"NGU[!F/&%:H[J<G%UU1H\(CU_VKB77[Q;!MV;^+MVGVV5#76
-M8E!%A9Y/^5,4>0+KL$3[Y+`1C]Z at 3W0G'D%@,RH!G=3D1(I'A:9/VK!MWC09_]
-M^YKWH"W6(=3D;@9U.3K53CYS&P4()HV$$F7>`^D9V19JLN,*A2[]>QJ;A_NKZ;
-MHIE?IUNP at S!"S9,[>M-%Z[+RW&$CP::899)K%'N"!UN^5A&IOP=3D>HUTD)Z<$
-MUFKV#G8E)SA"R$9%$K=3D&ST`$`&P```!L`````@```$4``&A.6P``0!$``,"H
-M`0'`J`$"`?0!]`!4!CE:NT$DB(NEB:4?XO-VV93L+B`D(`````(```!,*0``
-M,'+AN:5P+;H<Z;U=3D(M/-)K<V2&%LDEFJCU"^EF73D&-`/+2&A_.E>07>UJ#'
-M11*W1DE8!`!L````;`````(```!%``!H3EP``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y6KM!)(B+I8FE'^+S=3DMF4["X@)"`````#````3"D``#`)%MX#43TP*P4;
-MP$OG`^]*Q]*;.@`W at T7%/CW<WFJR75GVCP'I_TKE"3)%6$42MT:[=3D at 0`/`$`
-M`#P!```"````10`!.$Y=3D``!`$0``P*@!`<"H`0(!]`'T`20'"5J[022(BZ6)
-MI1_B\W;9E.PN("0(````!````1PA``$`5S\5>9140Y>\N'L\=3D."CK)N:9B4^
-MRBXD'8.,BHYU)D3_GV at O0$YTY%%NS$PDJ([U'JO1RR+-R5"TO_<+LL:H'!&.
-MV&KCV+TG8^R![85.,U@<(BXP`2>(9^&GI)P_`[O at SF1Q;67-"HR$58:43^&7
-MV5E9GP)3 at 8^973L0N)*8\>[J&,2>P_XG1W8!-B@%C>WTM^(,O?D8A(``Z>QL
-M:Y>A9S>3^+W)+X/]FYTVJ at WE<[Q(9S&E6$R^<Q#;K;/7,BJ>C at UZ^N2H4G#+
-MZ(?_ACPO7W::!(O.;C+UE^/37(AP%D.,WT6;-@(0(4.,+P-+CYSDI)=3D_=3D!PP
-MU5*3(:BV11*W1NR"!``<`0``'`$```(```!%``$83EX``$`1``#`J`$!P*@!
-M`@'T`?0!!`?I6KM!)(B+I8FE'^+S=3DMF4["X@)`@````%````_"$``.#5:]NQ
-MV"\8G=3DV(-ESXB3G7=3D)=3D$FN^3&G6I(7F?+-EYE,H"$ABI2V,Z"5-(Z_"`O>+'
-M&BQ'W6\-9Q%@=3DJ]8R+<SXY8G[;2Z,(4>K)30=3D^24SP"0..M'"+8J`+(:I,)-
-M-FND2%"_#3@]O2!)/-$2>AY#5L0TTP6XNRB=3DZ$K9'K9B.>#G`D\,=3D,$)7^OH
-M1566R'!EM2WQ@\-%^JJ81VU<(3I^GDDO9\CW\[':8>Z27SA5]"-CZU(Y$\!8
-M\:W+%V)]II6D']K'[^9D<BZ2%93%F1),AS[YIB$@2=3DR@,A6X11*W1MJ1!`#L
-M````[`````(```!%``#H3E\``$`1``#`J`$!P*@!`@'T`?0`U`:Y6KM!)(B+
-MI8FE'^+S=3DMF4["X@)"`````$````S"$``+"Q"[6ASH=3DBDB/C>T*C$GGM+V2J
-M5G]2VUI>$R*BNPS;[DFSFE(Q=3D_6L=3D%A3/6<$DZ/:&>B2FJUR(X%LBVP/MF/J
-MQ$#@3>>2'\W<`%W2I4$PD(,F,C2*X+G at Q<GS!F%T\9M*[)U+8^T8\W5R%ZYW
-M`U*ZZ_2O.R.N6K?_!-DA*'-%<\O)7<PL\;5YQ>S.G\_9R#/"Q+V5;GV#?5DO
-M?*LQ?]@5_C7#&@3Q8)'-_4U>11*W1D:U!`#L````[`````(```!%``#H3F``
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y6KM!)(B+I8FE'^+S=3DMF4["X@)"`````%
-M````S"$``+!N,>@.;&O5J\W+TUU]3<A8WEE;?=3D93"8$"XSJ.6%`?Q8OPGZ7_
-MO>P])-=3D?DN/@=3DB<P3RC/"PT+T9MH-,],7_3.-Q#1@'ZVO at M;5N)GER0/=3D.7`
-M/*Z4*`NP/$R at H\=3D3N6OI at 7^7[^A\L\PFVKH?CM%T/U:'L!?UBKN1>&E;X<R,
-MY9NI)\=3DQ/XZLZT;-QYO%+2O=3DV1XQ;TI6NIJ!)9R%M(.KM80LQ!(A[5L!^'2'
-M11*W1C72!``\`0``/`$```(```!%``$X3F$``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)6KM!)(B+I8FE'^+S=3DMF4["X@)`@````&```!'"$``0#>1KFMMT_#/PVB
-M^E1'`NW#A%217=3D0U,S8\%XH!,G]S6H+M:ISE3XI1ZMUQ[4PT-2!I@^G-`1S)
-MBUZ!][(\+,D;@^#%B"5GWG!#V8NV&]"89'K*\2!-,DY,+;)=3D0ELBI>8+/-]B
-M=3D/K!X2,G6'4WP??[DCL`42B:&KSQPJ!_A<GHQ=3D#ZJ=3DQ:(BT?##(GJV/S<`%9
-MHN22N1"/24NOQ9>L-V"=3DDBYNU#$@S9(Q(5 at ZN@;AMG>AR!Y\_N%J7F-ND^!3
-M<KN8VMBX.EIMMH.AN)997#&8NX?<\J'7`/@DZ`=3DNQ,?+3WR>#$00?$R+#'PQ
-MV?;Z1>L*D+`4,:JA:WN*?H%%$K=3D&$]\$`!P!```<`0```@```$4``1A.8@``
-M0!$``,"H`0'`J`$"`?0!]`$$!^E:NT$DB(NEB:4?XO-VV93L+B`D"`````<`
-M``#\(0``X.ZARNS"6*YJVM[&&H>[S:C`Z68E^$>3*<\[6.?$\T<!/3L/$,-8
-MZ5+.- at +M=3DSDLGE!F*VP;.(B)[A*FT2$EY`]=3DX+1.B,)N)+V(2C<2L2DM)]R?
-M__>#1!Z5E.#VE<FA2`OAH*&^?P_8<C_+?>)2HHW]:TXQH!SI)"V,_FESOGWY
-MDMEUNO6<4]T>8551+14P\"?AN]3^+NHV[3)&U0U!;'8[OSSW9'XW'(*@*=3DY[
-MVVUD)%Z..41UP:OE#(UPOK#=3DF9I7GE$Y5C:1_N]WM9<&G1=3DENA07OOVDFN59
-MD!)%$K=3D&2NX$`.P```#L`````@```$4``.A.8P``0!$``,"H`0'`J`$"`?0!
-M]`#4!KE:NT$DB(NEB:4?XO-VV93L+B`D(`````8```#,(0``L,G&'-J>21X=3D
-M=3DID8*9P'&]/NH(RK-&*%[XK)D,%JZ!.[(P@(M;5EBR/QL?R8]#<J]`L2O2YL
-M))LEVA8#6P*T0E8G;WI3Q=3DO/APIJ$QU:5'Q9;CUL9Q:$I#%9JK/)]4\/KH@\
-MD?$SI?G]$";C/XMEAJQ#\!HYV7E),?*3V[7,F]<S;#'YU=3D2K),W9J>JP'=3D(;
-M%)[`/66"5V\5^1C%,\LJ:"(B><:U<9B)H4_<Z6-%$K=3D&K!$%`.P```#L````
-M`@```$4``.A.9```0!$``,"H`0'`J`$"`?0!]`#4!KE:NT$DB(NEB:4?XO-V
-MV93L+B`D(`````<```#,(0``L*BI'\]7]J'FY*(V*`3K'#RP:`W06H(\R=3D><
-M^NZO>2VR1.YAP):7$E0)=3DK#W\<UA"/]2=3D'"M)(0U?T\?WBZM`G>*WD&8X0J5
-MOHR?17XLD":D)((RE:XHS/<ZD+E3Y at Y>@?"Z\5MOZ_=3DP>O/5K5">=3DV>,^E/R
-M9V_F4DZ)9/I"7-PFZ0[`>MTN')M>QKF`O4=3DH4$6!U6S,P&IW0'\:-L3L[@T-
-MY%@I,R1XQBQ/39%%$K=3D&+#T%`(P!``",`0```@```$4``8A.9P``0!$``,"H
-M`0'`J`$"`?0!]`%T!UE:NT$DB(NEB:4?XO-VV93L+B`D"`````@```%L(0`!
-M4'M[T>9(2#F4V8!3E-UA5T(,F0W/G0AB(CNT`/4A9E.^?ZOOS"R=3DW"K;A6\;
-M\.PK+ at G["J/`'=3DH"$9VL(#=3D^_,'Y<PHZZ<,*-C@!H_%N>(MUEH[;G:VV'JF;
-M7MLQ"TWBR@`$HSZC=3D#=3D+!:@1O*]N;.R*2,_!5V11),12JDV:;#UI\R@*-C6%
-M)]H(QSJOJJ%TTWU'9M-5\P%%S!OJI'20D5<-5QR_A%Y;=3D9E1^KJOM.B"A<P@
-MSGK$"'(X4RB32KON/YM+W.SK?E>$]H]O-55_3AY<MN1LYB[P[F(<4D2O6L=3DU
-M]9[G"2F7[J[C%@@ML]W;\;4]L<WQ5X6L;%3I)2`W:\H_`-5<H^DN7#<%_]H_
-MOP>YW[G]X+W`5M5&W^`ZU10,;KQGZ,D^$OB[R'Z2@,GY?NGG1[@<])B-_Z%Y
-M3\%(Z[YY15A94>>*T].<[@[311*W1E9R!0!<`0``7`$```(```!%``%83F@`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<I6KM!)(B+I8FE'^+S=3DMF4["X@)"`````(
-M```!/"$``2`'5'?(-RP;CTM^\M2_T7#_$ZW0K^T3/MA("*6HI3PK'0-\(!"*
-M.W%AA\S7T??QY\XQ=3D%?+CK/@2GVFBJAV'U1<>@<5('4UGPZJB=3D1J)W)A&2%3
-M5[=3DC>X&E*/N!<X^M+N;TT6'[/O_-M'5_Q?)<"[&>C\67VD.A44=3DIPHOMNW!9
-MC]0X3VN-D(K`BJ<-\*+ at F-^WR[M-%9])N<8UFI%FW+(%Q1 at H5IUNC!9D83FX
-MK%PQF4$3YU.9]3F@"`0=3DT>4ZVM'#'TQTUKW0WIE!$3OMR<[DC57+7N*LD&2O
-MBT7H0F]WA[_CGVY7<T9.E^N![L!%+H"4(X/NQLS$/*0\B^[?L3[:;F0&QM?W
-M2;(22VK_-+SU;A?ZL4_C:O*.*-WYL442MT;QHP4`?````'P````"````10``
-M>$YI``!`$0``P*@!`<"H`0(!]`'T`&0&2?0VTAS6.P1XNLYK\LA)O?@N("4(
-M`````````%PJ``!`A]B%?`W`8KCZNPPR_:C5,8$FHS-<JB1;YV!),[V6P?*-
-M4M+3_69!['YM[#K9V;IM.CFNW@]O.%*;8U%O11*W1BFO!0!L````;`````(`
-M``!%``!H3FH``$`1``#`J`$!P*@!`@'T`?0`5`8Y]#;2'-8[!'BZSFORR$F]
-M^"X@)2``````````3````#`C_%VMU@`IA/G0_B(;O\,'S;7\4WWI";$L(%O9
-MI"RG*5#[^W"0;7O0VSBN^D42MT;6QP4`;````&P````"````10``:$YK``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.?0VTAS6.P1XNLYK\LA)O?@N("4(`````0``
-M`$PJ```P'__%M)Q#&;$RZ^]Q(@[17'_E)9+IIYTY/1PHOUCS&A9)&&0(:ZFF
-MV%&%R9U%$K=3D&3M4%`&P```!L`````@```$4``&A.;```0!$``,"H`0'`J`$"
-M`?0!]`!4!CGT-M(<UCL$>+K.:_+(2;WX+B`E(`````$```!,````,-=3DMWMU4
-M`--'_*R7<6[N::AC7[D!**86ZRL#,>U_,`_3IF5+ at 2^I)C)@*_<=3D11*W1I;Z
-M!@"8`0``F`$```(```!%``&43FX``$`1``#`J`$!P*@!`@'T`?0!@`=3DE at 5*K
-MN#D7COX``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``.--'%60%A]+_ZM-K>O8BR"79(B*3"$O9=3D,^:
-MU?5_1,W5+#Q1O!U]IG+^]'7I0/[917(4B[2=3D:N*%K,^(&OY*#;#H8$L7/-(4
-ME)B.EP,YI+YZIJ1]I?\CM6:BJ#F+*HKC^'`.:Z)'K4^M7IM)%2J@$U6-EP@!
-M>4S'>@'(.);$J7<I```D*6Q]L5'+Y/<W9=3DZ4*HECK]**4K;@,LVR=3DTH?Y7O1
-MGIPI```<``!`!!)V!Q+6+4NY,OW+UPPH;BE`,R,0````'```0`4L4#G8&?&5
-MXZ('RJ6,Y2E[-F:/Y$42MT8Y"0<`7````%P````"````10``6$YO``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*8%2J[@Y%X[^```````````I("(@`````````#P`
-M```@``!`!@````$(3^G"UZK3WO?;T]$"!EC&1RVD%T42MT9?&0<`N`$``+@!
-M```"````10`!M$YP``!`$0``P*@!`<"H`0(!]`'T`:`'A8%2J[@Y%X[^````
-M```````I("((`````````9 at A```@``!`!@````$(3^G"UZK3WO?;T]$"!EC&
-M1RVD%R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``.--'
-M%60%A]+_ZM-K>O8BR"79(B*3"$O9=3D,^:U?5_1,W5+#Q1O!U]IG+^]'7I0/[9
-M17(4B[2=3D:N*%K,^(&OY*#;#H8$L7/-(4E)B.EP,YI+YZIJ1]I?\CM6:BJ#F+
-M*HKC^'`.:Z)'K4^M7IM)%2J@$U6-EP@!>4S'>@'(.);$J7<I```D*6Q]L5'+
-MY/<W9=3DZ4*HECK]**4K;@,LVR=3DTH?Y7O1GIPI```<``!`!!)V!Q+6+4NY,OW+
-MUPPH;BE`,R,0````'```0`4L4#G8&?&5XZ('RJ6,Y2E[-F:/Y$42MT9Y1P<`
-M4`$``%`!```"````10`!3$YQ``!`$0``P*@!`<"H`0(!]`'T`3@''8%2J[@Y
-M%X[^9I,=3D*#79[UPA("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``#+:F>K$[>&?4)+9
-M>?<F,$O.52.Y+R59`)#(+>QI6/G#6A at X$]GI-H++>JRUGXW"\U"/`53Q(U`:
-MJFSZ*%).0_B&R_]$8H'?HWT^;_D3&-Q)!Y?OV$B?;%OAJ91PVW-;0:<N[W-P
-M.-8AIHXPD?P(X'C->XA*=3D!AMS,)^%;49YLLQ*0``)'X^B'@F&/3W1F<!^=3D5T
-M1($]Q!(?P/<."Y.9YG'JVL/U*0``'```0`10ZN/>]M+ at Q+@'L_$K$-9%D<WH
-M:0```!P``$`%89#PE'[<(KN5N+0-*H(QY^!\$EI%$K=3D&:7H'``P!```,`0``
-M`@```$4``0A.<@``0!$``,"H`0'`J`$"`?0!]`#T!]F!4JNX.1>._F:3'2 at U
-MV>]<+B`C"`````$```#L(P``T"K]O*L'-?/J0?WH&_M)+6;BNY$2]/Q=3DAXD_
-M=3DE28$FF!N6&"Y=3DT,?H[5^RAL6FLJ`;&N5>IR_FONL&UZ+9MC.4E9)Q1[+2#8
-MC5V<MG9FZ?I'G6X5O](MGD'=3D6COMZ`F8T0+P*H+:-V>WX,#`_<[L<_PZ;#XM
-MC[:/?](S]37WLO^L\U;J4=3D`:IO#OYA8D&HA<'8;VY#E_TOOL%,PVG&@SO<R.
-MHE[2TBL/%'6][45)LNCB at .$$"7Y#HT52Q[-`JM+-K[\O*Q&[VWC\^S5E`D42
-MMT:3H`<`O````+P````"````10``N$YS``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB8%2J[@Y%X[^9I,=3D*#79[UPN(",@`````0```)PD``"`L?#2&RS?;6N1HJDU
-MCA!'PP"9XBE*:F(H$T?VDJ*E!9=3D\`G]F[+0BJWPI.*&FY4G`$_`X>W-I!3XS
-M4\.5<!K:/1MH^<3A2L,0IQX at M;_]*0(L"H;.Q3/[JSZD]!5)Q+,^,#H?JW4J
-M/'%?#$7OD$P#]-LKSFYM&[YT,F\))T42MT:<OP<`'`$``!P!```"````10`!
-M&$YT``!`$0``P*@!`<"H`0(!]`'T`00'Z8%2J[@Y%X[^9I,=3D*#79[UPN("0(
-M`````@```/PA``#@#,F.=3DFCXM!U.$KJD=3D*X?7DAATQY+^<Z:NHA7Y[Z?.L&D
-M!RM7FY[0R!U-;9MQ&A?8@;^!+0U+JG/!LL:<;LH@>T8IH#/!`1OQ?FK*RI*G
-MX$@YH2[!/;(HW8 at P]T1]K[2JZ`D)LI3QO>?/9*8('&MP?%_DHCJ+;IHB\G!/
-M^9#FD4E/WWW>#Y9'QS1>Y*`M<QE8&5/?5M at D;(`?A)_G"(W(DJ"Z.GPM-O7:
-M%2Q&,?_X^M69(<P_YV*/B9J02F."3Z`R8L%9P%]K.!(I+\8>/?OOXY!7=3DO#I
-M_RFG9GSVE442MT8+RP<`_````/P````"````10``^$YU``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R8%2J[@Y%X[^9I,=3D*#79[UPN("0(`````P```-PA``#`Y?_E
-MW:[P at MSF>*@<FF;&$_(MU5"R:>`_X#!X3]9%;2)D]_#JJW#@QG,;3_*49'-5
-M[S+7T;U<%=3D0&Y.Y\BY--DZ5'DQ'AQDSI2&`>BGZBN'OTY]/-VBFT['6(C&LI
-MO;A9.,>KWN3D\&MZ$)6Y=3D_):8S#W'[:6*21]338JC53OWD6$,+=3D!$"C-CNM^
-M1N$,JLMNGBE``(?S.WE$:<1>7__S=3D2%_U(NNZ5MSY=3D6+CAFQ9#$57YJO^)M/
-M+>D;\(9%$K=3D&`.0'`&P```!L`````@```$4``&A.=3D@``0!$``,"H`0'`J`$"
-M`?0!]`!4!CF!4JNX.1>._F:3'2 at UV>]<+B`D(`````(```!,*0``,-//R=3DCP
-ME^&>T-=3DU/(*.A at 2V^>:K!!Z5P3<,$#B)DB>6)+]1^@XX861-3X5511*W1F8`
-M"`!L````;`````(```!%``!H3G<``$`1``#`J`$!P*@!`@'T`?0`5`8Y at 5*K
-MN#D7COYFDQTH-=3DGO7"X@)"`````#````3"D``#!>@=3D'MEN\+VXN_T?.46C$K
-M_]>&8MN+\Q3U\4,4PRJ`@:D0W1FN29C)9[9*\442MT9P&P@`/`$``#P!```"
-M````10`!.$YX``!`$0``P*@!`<"H`0(!]`'T`20'"8%2J[@Y%X[^9I,=3D*#79
-M[UPN("0(````!````1PA``$`Q5J#-%$NB(#/$IQ>OY!PROW?K.VP2&KE)Z7D
-MY"F;3GC'*5!Y:I$`'P+QY(QC2)2J9AO1,#E1O:X1ME]7'SOVJZ1^AQDZ-&VB
-M?RS^)]6G6NSF_(%GS!&*/)SD*\-=3D@?P!)8MH=3D"V$'1E!V96EK/SD!(!TRPAP
-MCY*1`=3DI+X2]#"#\;AO583=3DX>8O at QH<1EV/)%OE2D7Z_Q<DT*^XS4Q:;S3ARL
-MV/)ZF?_5V75LN3UY%R`OS$=3D[.J9(C;NC;T_V`PF+`<;D5I?)>I*(.>=3DYC`)]
-MF*,13]<JY[G'QF4'%"WV5$MRKFHU3C,`]/?.H/<9)>#VTW+6O;2F*=3DK5[3 at N
-M11*W1K<G"``<`0``'`$```(```!%``$83GD``$`1``#`J`$!P*@!`@'T`?0!
-M!`?I at 5*KN#D7COYFDQTH-=3DGO7"X@)`@````%````_"$``.`>A%8*GY>1H':3
-M$-WC!4[!<TH"7JBI*Z4:B09)SB897.4&N:"5/D5JIZ_81"&;TCKVC&.:+S)4
-MM(0T>+K&,8)Q,U,OD;M<YF[LQ)^6$KQ'9L-\C:(-SPVN)_W`?Y\`U<&(B,(Y
-M&SX.G11*F'^OW!8(4357LQ\XB<KKC?MUOF@,H9$@7!=3DKI>\#%I$>@9IS=3DX5O
-M_M0TOIK,]C(`N2I]?%@R"NCU[*R@:\WAI20QKIM>.8=3DVGTZ,*W?0_?4X#2!S
-M4=3D7P*#;1T=3D+-OS3IN+;+@:WVRV"-24,GYK,E"MO=3D11*W1A4W"`#L````[```
-M``(```!%``#H3GP``$`1``#`J`$!P*@!`@'T`?0`U`:Y at 5*KN#D7COYFDQTH
-M-=3DGO7"X@)"`````$````S"$``+!NA82+`9>.^N16M,B)JF*0%JOF/GWS,B$B
-MM%$SF6#/"[HM<.V]00T478/6D-MLR-&_,Y5(SF9&(*%'1$VMWFO-L]H#@,/?
-M-PPGK52_"MIF3Y at IXED47(9`KTN+Y3'$JS?"'<((*+.TA*3WT_B35+SI2V-Z
-M'9ST\I(MD,&*&F at 4[!X?E3^=3D[$LE?8`^`2H=3DH76)7>Q^DE,^;B>P_-_N31IC
-MX09YPRR/_K=3D&)L&]11*W1G)9"`#L````[`````(```!%``#H3GT``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y at 5*KN#D7COYFDQTH-=3DGO7"X@)"`````%````S"$`
-M`+##<1K0KCD&[A#T:2:__4#]E+Z%.C\LKOZ]<<]\)NB2CMC at 369(U;K`A4J8
-MS13)%VH6P]/;G"-2*5>UEVDFB**/-'(A]WMPN`NPO%!A0K95F=3DT>,-Z/-(L.
-MNQM9JQY(^Z36S0'?3=3D23@#:$UBYPW[7<H/X(N.&1.MBWQ7NXOE89Z%_S-/^#
-MD^07LCLN['P`ZWRS;7JV>JFG"A1=3DU+QK.A"&:P*1-=3DK=3D[0T[]:*511*W1G:%
-M"``\`0``/`$```(```!%``$X3GX``$`1``#`J`$!P*@!`@'T`?0!)`<)@5*K
-MN#D7COYFDQTH-=3DGO7"X@)`@````&```!'"$``0!C)-YR_3&-36^AS\Y#ZZ&A
-MZ<,-U[%@$D"Z)P!<"#]+7.G'DMR at 92,LVF1%K#MB#PY^- at 4*TMGK-I*LM\*,
-M5\-H-'F5!K%:RSD(>NTN"CVU*/O3X#=3DN$,2P9!20+92LXUB,J#7""P9>$JD!
-M1#)_#B3NX]7=3D.H;>8-GE7>BWI//QC7G#`"!>_32K8XEPAB2NV.D"1F[.5(.*
-MG#>:+*3Q"NZTR,=3DV.0XB^=3D:5]V..UI0G>>@+R]HUC&\G-%B at H'!B/5]*#7#$
-MB;+<%$V]2(Q*<YJTV=3D9H)_%&M_)8Q[-<$8!(I!:ZF1=3DKF)@Z$++XMI;[SF[G
-M1J*O*>&Y3OC8S3I%$K=3D&+9D(`!P!```<`0```@```$4``1A.?P``0!$``,"H
-M`0'`J`$"`?0!]`$$!^F!4JNX.1>._F:3'2 at UV>]<+B`D"`````<```#\(0``
-MX+Z6TU>V4-$PEB4N#P^X/UPB,UYK*S_<OR!B`C2Z`E$LCX3;IK^V>YI=3DS.QQ
-M,Z*@3>O`XMEUK<MWG>Y"N%Y&J>\HK;P4/#-2`/491R;VBC=3D$\F%.]]A-?77/
-MCK>`Y"[-CJY$U=3DK8HH.9A:Q&5($^",R/PJ#\=3DT]HAAJRH`IY'DD$ZP$?9([-
-MKCIXKQZ&Z[V`KD/TT(\&DJI;-VT]:@_V!#'%>\Z0M96.3Y3^_DCC<#),C]7&
-M$7I8KJ6F*)_@)D8-TO]#7*3$M_&;4ZY80L9[-RS#17J82W^9G;$_;Z=3D%$K=3D&
-MO:`(`.P```#L`````@```$4``.A.@```0!$``,"H`0'`J`$"`?0!]`#4!KF!
-M4JNX.1>._F:3'2 at UV>]<+B`D(`````8```#,(0``L-NP0]M"01XPB+5F/1WE
-M84NF*O")*"Z-TZUTYF?\B7C^:,Q3S#3[Y@`\A;:"/ZL>F$13.V%8`)_3`YBG
-M[G#H':+X(9H1K>U3O+9OR1CIW^@BWA1'>&T.1?P5GY215?43S1)_<!`ND2=3DX
-M6O9 at P3T^0I!H*+]G/!\-$:;T;"H"$V(BD/I(!;H=3DM?9$M3]SOJ98B.SM$6D-
-MAYJE2U(`;J*-T[/F75?-2!U<'],;%_I%$K=3D&M-((`.P```#L`````@```$4`
-M`.A. at 0``0!$``,"H`0'`J`$"`?0!]`#4!KF!4JNX.1>._F:3'2 at UV>]<+B`D
-M(`````<```#,(0``L!87U4CA:ZFB4B3>8UW9[>^C;B4<]'6.T1.Z^0XJY3_@
-MW%!<Z<6+,!9+M:S2'+W)QE<N*UO`D0L7"J8TM>$TJ3#=3DRIYSZ6*1).V2Y@#8
-M[P3F<C(\)T55`?E$4X5/UUO.,C9&3%L7XWQ:@Y&:4=3D8-G#O/?`/JJ*2JYQ8A
-MO`W)>3]GBB$O<+!^]-.4YT/WN2Q<2YDP$-02"S'[0_0KR(.Q7:5YQ01HNJE[
-M^(*M8QY%$K=3D&MO@(`(P!``",`0```@```$4``8A.@@``0!$``,"H`0'`J`$"
-M`?0!]`%T!UF!4JNX.1>._F:3'2 at UV>]<+B`D"`````@```%L(0`!4*4[39>S
-M+@@%3`W!.`7=3DE0,..<W*L;J!LC".4&47J^0!75:_3#>PT6V*KYX3^7Q>ZSS7
-M:Y3BKY[3`N;HPUN9^1)QC6*O_V_@)3?#\X5#\<CBF'Y(0J_;F0/3PR8(0=3D%L
-M?0N,1JWU7XED)O`7H_P`3 at 7`A.B=3D04/Y,I'1"RYD0_5@[;0Y6Z5A/F"&QT*N
-M_(/`KJ$2H'A at I-#\XW'^E%T;D)H at E,PV4L6:\'L=3D'ZST%//\82TPIQ]N@/BX
-MV?T4B??85%XS5P>R06X0C5DJ9+/U,&8+0R-U5'XH`MM(>*YL9=3D;C9I/_@[[&
-M7DOF)<<Q<&@>FW2BO7>\C:_-YX?+Q`!5EQM&,\LO\UWX26$SQNN//XX+9T+W
-M&D&6E]RQRG-#@+XR,>;(E&'8/<![Y at D`)E0$#1]=3D^TD<6"%8F?2EC5N>>$NS
-MU)O*\8EO'"U]`6JF11*W1B(T"0!<`0``7`$```(```!%``%83H,``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<I at 5*KN#D7COYFDQTH-=3DGO7"X@)"`````(```!/"$`
-M`2#O'A]8QYX\T+MCNK.(=3D:VC@))</5*.`8L^@YRN$_V@&?*7\^SR8*KJ0`%'
-MIB*(ELE1E1<+-4/$BH`<2J;"3`#?<<E!=3D+`2^9ZAOV8E^F?C:VUS%RK`RB#6
-M*5-J].<`UGC#DG`JG$C!/EM;D07<B_J0!OMHF94C2O at .MEMKHYRZM)A3[8K_
-MI*O_5M[\3'0^%H5*S5ZU!>>_.7EZ><;GRH!C,ZZKP/PHQJEN>W2K`_X$B(EJ
-M9:3\%-?05=3DGJF'TSL`09P at N*$K/$XH-,&]VXJK'[#&8B^]N^E4=3D=3D-J_\NNKJ
-M>#^=3D"ION9.:\R at C0/VM*08F2V,%K%(XKQ75_)96Y*['9VJ06Y(6@!U*@K6'Y
-M at O^8(T";/CVC^@[#TM,/[442MT856PD`?````'P````"````10``>$Z$``!`
-M$0``P*@!`<"H`0(!]`'T`&0&24U"XYH9:EB3/I"VJ6B%%=3DDN("4(````````
-M`%PJ``!`;'N[N#<(_./&A&C\*28;RT*MMUK1`7W.X,_#>8T'001V;(A:L>GG
-MRWPYP:?&=3DVZ;14*"O50]*DX97EG$11*W1DYF"0!L````;`````(```!%``!H
-M3H4``$`1``#`J`$!P*@!`@'T`?0`5`8Y34+CFAEJ6),^D+:I:(45V2X@)2``
-M````````3````#`I^!L2R(QK&60Z,OMK_J\:[O$D*Q%NM5C;C'%'%;R!J,+L
-MJTC at _CS;M(DSD442MT9M>0D`;````&P````"````10``:$Z&``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.4U"XYH9:EB3/I"VJ6B%%=3DDN("4(`````0```$PJ```P
-M-!5P)F9#[4S39 at OFL)Z"(MJK!VE_80(5%A<8$M/<'GQW&4!_4TCFNZ1/MR9%
-M$K=3D&/XD)`&P```!L`````@```$4``&A.AP``0!$``,"H`0'`J`$"`?0!]`!4
-M!CE-0N.:&6I8DSZ0MJEHA179+B`E(`````$```!,````,'YP6E#;"8WM[.W6
-M*X<DS(E\+DL_<<J(5RJ<FW^]CLU6+Q(PAW-UN)V.<V at L11*W1JB=3D"@"8`0``
-MF`$```(```!%``&43H@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE8<*@BV-K, at T`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``_1J1L$VT&2QKY1T]]<UDOC`N*HJ31K;\%]<QD0>_VJP2
-M!QN6/+PGLB?5'Q3>(9HWC)DWMDV!2N at RE%,>IP8/8]E,MU at 0K[9FS8RQ7$9S
-M0QVI%M3IPK)XK_WG21P&XA%%QR=3DA+`EX]1I#FIB0[59&\T]MR"Y\>E4 at 2^F8
-MIW%+<$@I```D+)JJN/SJFFP4EX+RPO;\,K&B";F&LO5*NG/)(]#'SC$I```<
-M``!`!!Z,E3(/BU=3D-3F-<+A%%/S%1&>@[````'```0`7TN+ZX>`I[IU*K]Q4G
-MS(SRU9,1HD42MT89NPH`7````%P````"````10``6$Z)``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*6'"H(MC:S(-```````````I("(@`````````#P````@``!`
-M!@````''_T_E")201M">3Y'^K.KM at ZBS`D42MT:OR at H`N`$``+@!```"````
-M10`!M$Z*``!`$0``P*@!`<"H`0(!]`'T`:`'A6'"H(MC:S(-```````````I
-M("((`````````9 at A```@``!`!@````''_T_E")201M">3Y'^K.KM at ZBS`B(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``_1J1L$VT&2QK
-MY1T]]<UDOC`N*HJ31K;\%]<QD0>_VJP2!QN6/+PGLB?5'Q3>(9HWC)DWMDV!
-M2N at RE%,>IP8/8]E,MU at 0K[9FS8RQ7$9S0QVI%M3IPK)XK_WG21P&XA%%QR=3DA
-M+`EX]1I#FIB0[59&\T]MR"Y\>E4 at 2^F8IW%+<$@I```D+)JJN/SJFFP4EX+R
-MPO;\,K&B";F&LO5*NG/)(]#'SC$I```<``!`!!Z,E3(/BU=3D-3F-<+A%%/S%1
-M&>@[````'```0`7TN+ZX>`I[IU*K]Q4GS(SRU9,1HD42MT9F[@H`4`$``%`!
-M```"````10`!3$Z+``!`$0``P*@!`<"H`0(!]`'T`3@''6'"H(MC:S(-Q465
-MMOQ/)*<A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``-6'/8!3,XC0L%MS4-)AUM,9
-MN2B+83V'LV<")M5FXAS1Q06/O)&??W at HQU[%%1`/"$*7]_YV at FB-3GZ##9#8
-M+]+U1WGHH*A2C5BF0%;MCOM%;/%EFEF1L)/\65!P4S799.1E9B;\MF<T5EQI
-M&TZ at 0-\,K57Z5X8E%HJT;@B+`-[&*0``)"O\E1<<L;_/_>\X9V.(TO2V.4WR
-M8Q[B$*U':8*8WE?>*0``'```0`0*573"H'=3DK"G#Y6QA<@#:XZ<=3DN,0```!P`
-M`$`%?P`;<Q9#V2"?)Y)"%X$7H,28<[Q%$K=3D&#!P+``P!```,`0```@```$4`
-M`0A.C```0!$``,"H`0'`J`$"`?0!]`#T!]EAPJ"+8VLR#<5%E;;\3R2G+B`C
-M"`````$```#L(P``T#B.(XUPH+B,.;OG93<BPS#(VQA1T0/.`"*;,[0[0DGV
-MPC:1]I%+NFI#].(+/43/#KZ0V&@(/W;"?/+4KB>-N3$$)L_8WQU+<E3S?E_P
-MK.C[NX5WTGR;VPWYL9HV'RLS21SH<E]YYH`'VN!(TB#G1X->CEK;\0?ET'$O
-M:WH/,T[B>=3D@@<4XR at G=3DAD)G:Q\;47SL*2ZH1NV-]#AMWL<+>A3TO7P1!M\TU
-M$4'HY^7[\@2R`J(%;<O?KQ@;+OQZ<G[W)M)A]I!JY\CW'_J9`442MT;&0 at L`
-MO````+P````"````10``N$Z-``!`$0``P*@!`<"H`0(!]`'T`*0&B6'"H(MC
-M:S(-Q465MOQ/)*<N(",@`````0```)PD``"`CX[\K-A_-?(<+&,!]I6JQ*30
-MU^%'.%?F)I\TL%?KMX[NSL;[U.JK(_UM\W6(_\[N*Q0K)YK42C)U$/_X.#L<
-MFF[=3DYG8Q+\H+ZP0*X?A\N,\UX=3DU^]83+MB/<HCCG8$+ at 6E(>*HE=3D>O12-<6F
-M5#3:F2SS^"7DIR"-F4O&2D42MT:880L`'`$``!P!```"````10`!&$Z.``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z6'"H(MC:S(-Q465MOQ/)*<N("0(`````@``
-M`/PA``#@PB?J]#_<6,![F"T2J0`B[C4?7*E6]?+979/<VU?!PZF!B?^`?]"T
-MI'<T+?GUT,+`R(P(@BOB(O+IGO>DL<-?8<:J<3E8&U][!Y5EBMIS#J%!P!P%
-M14Z`+UTR0USZ7E8RW0QC*_Y1?X[+K5Z$!Y,#SP,:FM15/:TM0X;!:[;._@$V
-M10IA2HO\:$FP4<&)1UURN/BHSEENJJEQ$A+P\0A1O+I3Z5,G?Z4GID_:Q3!R
-M-DV;^OL/)\4%=3D!Q;EW at J4^PSQ$KH22MWE+6R=3D+A]SE3-E</?!8$&#RSR/:>7
-M1T42MT98;0L`_````/P````"````10``^$Z/``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R6'"H(MC:S(-Q465MOQ/)*<N("0(`````P```-PA``#`1>3W<1''!"Q;
-M^LY]@]A`M789MG'K<$<MTH'<SY(3<&K13$OT^NFSC]D,*W.)%R<)K(_WDR-@
-MFO\]E_)QK#\9&ORX03#!)J$XF65;WPZJ,"GS3-9+H:5#RC[C=3D6MN#UK)GY83
-M`)\@(A#+OBLI.0J at 5,57H_FN5W^;E;TPREOLRZX_!KEQ<X%Z)B]X$_[LVVE^
-M6&/BH8H9N5'3E4K^M#RIEB<@0QBV<%@&%!;V.B4IGO<(PWJ/<=3D<IU%,G5E-%
-M$K=3D&M7<+`&P```!L`````@```$4``&A.D```0!$``,"H`0'`J`$"`?0!]`!4
-M!CEAPJ"+8VLR#<5%E;;\3R2G+B`D(`````(```!,*0``,(,J=3D8$708 at 1/NQB
-M7/9_N/\=3DL9LX?1'V'W-]G__+FHHJ$,`RLM[[(]7A!((Q11*W1K2A"P!L````
-M;`````(```!%``!H3I$``$`1``#`J`$!P*@!`@'T`?0`5`8Y8<*@BV-K, at W%
-M196V_$\DIRX@)"`````#````3"D``##746J:@S=3D6X_]0_]RMP7T7Z1^I#1V`
-MU,:TEJGR$G>;C at Z*AH8?0-4R59?*[$42MT:,O`L`/`$``#P!```"````10`!
-M.$Z2``!`$0``P*@!`<"H`0(!]`'T`20'"6'"H(MC:S(-Q465MOQ/)*<N("0(
-M````!````1PA``$`*]L@,K)G/NW46U5=3D?T8=3DUKP>2IC_XSUN%`RV1UW+8T\:
-M4]JPF`!*O1AMH'X51 at W60)Z1J\,R+=3D#*$BNQW`D?$">YLSW$M+_:-VN7?_[Y
-M:79R<X./+=3D]+5\%(M9>:XXMM&_^Z"I3VOH<>XT7?=3D`N88P'D0D"DXY^9HHR`
-M6HPW??&%O7",LZZ7W_$!X_E:SVLBWZVXX;P^U&<]MW1<>-['6&&YXA8WPSC-
-M>(V9=3D4Z[UMC?0NN=3DW;EC6Y_'.QJ#VBMZ2M?OJ_6S-ZQUL!E7M[5^ES",?>6L
-M`)GY,JO)(5BW#E2MNZN56T1-)OC`+]9`6=3D\FI-(#_T/=3D9>4?QM.J11*W1F[(
-M"P`<`0``'`$```(```!%``$83I,``$`1``#`J`$!P*@!`@'T`?0!!`?I8<*@
-MBV-K, at W%196V_$\DIRX@)`@````%````_"$``.`:Z'HRIZ5?0Z*W]U^Y7*O5
-MI1_7Z*"9)_4KV.;L?'<BENSN4;'Q<NBS#4QB'(T-"#0KM[DJ@)3D43]444R2
-M3IC24TN5G\_GTX,FSN;N2#719Q16TZ7/DI/44+?C*_HJK>QR\R8+$NO%ADU0
-M?8P0&!H.<S)@X*%_T./7UQ!]C;<'/,[]/P;VW7CPR3N&$5[)EW1+7Q1>L/WT
-M-[RDF/B7C9+[^MH\[6L9^)Z!4F8A^:+PSNI^7#O_Y2_?4I(E?SJ'LM7-;/8^
-MLXM;BF`[K=3DZ#CUKTHL8E78WK%__N5?>/11*W1JKF"P#L````[`````(```!%
-M``#H3I0``$`1``#`J`$!P*@!`@'T`?0`U`:Y8<*@BV-K, at W%196V_$\DIRX@
-M)"`````$````S"$``+#>U1!(5+NG5D]5T6:2Z#1.^])U%4&W@@=3DE#<,+CJ!9
-M>_")MC2(01C1[/-WPO9H&#.5XZQ:_VKH4#/4%OM:R91E=3DS?E6Q=3DX?%SBUF!9
-M:RX)2X?\<RR=3D\@`6#(8MGL,I9TGREIH7Y'_/9UH4PP#3O.CW^9A'_6)M/]HU
-MI:\*J_*DU>YY!/K_Y;3D>]F16+[?G/<0/+(,]H^Q3R at MRHMC9XQ0=3D]JP`?ZW
-MR@/OHF<F11*W1C()#`#L````[`````(```!%``#H3I4``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y8<*@BV-K, at W%196V_$\DIRX@)"`````%````S"$``+#)4ZLG
-M)0/)$%DD*N1GK$ZS4F>)?CXT=3DW7\T7BMH9>L0.*T9N+(6)>O'?59P\/DU`BB
-M3ZH+0Y;N6MFDXF_1ZKP7P5\O-DY$`%-QHO.[8[J`AJ2_N$C&,US2;X#HE+;B
-MT>?+"&Y7TN_N%+5)2CC9LF:O<8SZ^[=3D-OW&DX_SP[8J\)#3>^SUXVQ^(6VG%
-M1C5)HML(5=3D&-SZ$H2SX/YN=3DJY at UZA#_6Z/.RYG>A?O\511*W1JTQ#``\`0``
-M/`$```(```!%``$X3I8``$`1``#`J`$!P*@!`@'T`?0!)`<)8<*@BV-K, at W%
-M196V_$\DIRX@)`@````&```!'"$``0!.^Y@"7?`9[Y6V$!;Z7?O_C,XD`Q"T
-M,HD81,C"9W&7=3D9BI1;W(->'B+?=3D5XQC%\!<AOC8;F<HJN8^E$>4?Y$N7,4&^
-M-,&8VQQN:XPD!!0*B:@MZH`I4P7&V^[86V5D[A(M#\)A:2!W085_W.84*\BJ
-MG0=3DQ/MR$R at E#S>\!B,>!5DU7'>*W9UVW!317^.$^?`N%>+\DYMX0:Y#ZYN-Y
-MS#)0^>5OOHGCN]V+_\4)/A3%]RY$^DIY^`8`4JC>VSZ/Q3/%I47:^4D@=3D$;W
-M-6]Z!6\*V81]62VI"#JQG^HFYCL]ZMI(][4%#/)9=3D3]HG^7'()?F$5U=3D6\$)
-MUA$:@SQ%$K=3D&]4P,`!P!```<`0```@```$4``1A.EP``0!$``,"H`0'`J`$"
-M`?0!]`$$!^EAPJ"+8VLR#<5%E;;\3R2G+B`D"`````<```#\(0``X$LI&QLK
-MX<*J\W\FX`7O3QA$7>5,^T=3DYE#?<BYR?0R at ZK+6N01CG6I+0>>;R%^(W:MB1
-MW5CZUU94`Y56IIE=3DQ!)N"[52%-Y<MS0?;&YHV[!0<Y?Y`HKP]V-2YN]9_`C"
-ML?"&0[G_TIH(E%Z<4%)DVD4<N6)/$W,5[UY8F+J at KNGHA_FS4Q/0!%*4HB3Z
-M2W6*BW4^L!&=3D&;A7X-1)4$LMWZJ\/(`:D5GRU,P9R,<X4_5KR3IC!E/8 at 7]@
-M?$'JDK2K@@I^;:V7^W_8YW(]FK]D7=3D6Q6_M%3DW.FJJ1M&U%$K=3D&T5H,`.P`
-M``#L`````@```$4``.A.F```0!$``,"H`0'`J`$"`?0!]`#4!KEAPJ"+8VLR
-M#<5%E;;\3R2G+B`D(`````8```#,(0``L$5_E1I1A\HEA at TAS+X+^-NOE:+/
-M4I!I&'CLP-->(`-N2J$4S?&#)(G?&M=3DVK_.Q2J"*MW.[JS>_L?#J(+/,FOV/
-MU`'?_S+VD]Y2/)JH7*<KN>!YEE;0:1L')">QS']\XW!YI1<MC!\X:<0H!BT+
-M0-4Y=3D>Y6KL$PY0_GM0T\V8QP\FXH?7QU&;FAJK><850:.H,P!\H9`X\I0NJX
-M90S<!WJ4#ZWE,HEFWW^]G`)%$K=3D&F8L,`.P```#L`````@```$4``.A.F0``
-M0!$``,"H`0'`J`$"`?0!]`#4!KEAPJ"+8VLR#<5%E;;\3R2G+B`D(`````<`
-M``#,(0``L/ST_N4D]!^7/P4Z(U\>CWZ[!"I9+&IM:I*(D@<1D!B%_OIJ\5%!
-MZ)0)R/>Z0F5&QSHWKOF!K6?T:&[JL*&.!R]R4/9JP.]HMDF".AZW[[ZH,4_P
-MW&>,^2^+OU;Y:,)EB;LN?>Q-'L\S<'"=3D+R8U8V^#PNDS<2Y1Y.;%2K1%Q2PN
-M59-6H?P/`EL3).'^!JPFD_D/VN6MACF<H#<^B>VANO/>4LY%RX.M30;L#&Y%
-M$K=3D&,+T,`(P!``",`0```@```$4``8A.F@``0!$``,"H`0'`J`$"`?0!]`%T
-M!UEAPJ"+8VLR#<5%E;;\3R2G+B`D"`````@```%L(0`!4!#.(%7\D#F=3D57 at D
-M`>#N5%_I*'E%O+6/J&99G,-E34L&ZD;6:`<NTA`RS#B@#"F")PKZD%M.`2/?
-MEV:CUPC^I(.^3?YY(YO*"`KW^-85)Y3AZA37^#`_XTA7<GJ?UP&Z&7F^)W.Z
-MP5#71L27P>?0O?N(A+"1=3D9+=3D^QMQI5BHYIOC,3/S%_<<JQ(N/7/(]EU/]U7\
-MB:Y$I*V1'O=3D,FSR0!"EQS=3D_>QN?^[!GT&!@^*OM)XJ\4\W)&$+"-T::L48H"
-M<U=3D#]GASW5I644I^0QI5(QF]UCJ"N"`*I7^PV5Z3O+(1\56ISE2LT;G,WI@!
-MKC=3DCT3"@L/5F#T$+()L4U0]AZZE.]=3DC+*]"7?W$'&J-$\JTC;.WXL%R<.IZ\
-ME>#EO3TO*EY<`TAA?_?6=3DR0!`VZ,]B at 1^/S:J^R5DVY*(/ZTC')%DP8<@'?G
-M99=3D>\GM]11*W1O3P#`!<`0``7`$```(```!%``%83IL``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I8<*@BV-K, at W%196V_$\DIRX@)"`````(```!/"$``2"Z40]2
-MHP;LG at R]!HXFIS at NQ?E!>)-.$>Q'*GNND$(\T<:3T8\=3D,NYTP"UV([XN4P[Y
-MKV$^BYZ-P at 7%/,?L[&A,.O;D%.B!L_QQ4W+?16MW.`WKH*D(4U2S9+B3*V0R
-M/6TRFDNUTA`RSLY8`/[##>&["L`Q`16'(\7[%93A,JJ<T^$&A^4,7N2JL%QE
-M-T49C20I4U@%)>Z)ZJ#&]^+_&J>:-^_^;#_L=3DK*M_#$J[4#6*]G#'T($5RKW
-M.,-!#F.$C2JEZU[!8?9UR97JA?4.+IY0.BA4QI<&1^KD,VCAJ$^[#\\$:=3D)>
-M02R]=3D=3D``U&WQ^#1KZO;\L>X')CS3BDXKYEMRIJ-_A\-W,\\'6XF_F/O$`ZP-
-MD?*4@?<;M+O-9$42MT:M%PT`?````'P````"````10``>$Z<``!`$0``P*@!
-M`<"H`0(!]`'T`&0&2=3DBG at +1^#%^>O3$/2=3DTE**8N("4(`````````%PJ``!`
-M._KCVBZ;/>!^WT2%07K$//FC;G].98-V6K*48')FL0,)SR-BK9;$0;*H:OQ+
-MJ);Y"LOBWTQC;0#A8QU+11*W1F,Q#0!L````;`````(```!%``!H3IT``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YV*>`M'X,7YZ],0])W24HIBX@)2``````````
-M3````#"_ at FC^)HJD'1++;(QD-/JOY=3D24.FY3^6CLK^]F9<K]100S94LQ-RR+
-MFIN8[D42MT8Z0`T`;````&P````"````10``:$Z>``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.=3DBG at +1^#%^>O3$/2=3DTE**8N("4(`````0```$PJ```P9W$;2(\0
-MV-X]/GM_2X:WO+_Z9!&M@$L=3D!`I%R?O!Y%BS=3D5E/240"T"LD%GY%$K=3D&3TT-
-M`&P```!L`````@```$4``&A.GP``0!$``,"H`0'`J`$"`?0!]`!4!CG8IX"T
-M?@Q?GKTQ#TG=3D)2BF+B`E(`````$```!,````,&AK$8^I3.7B4ML`[XW)A2AH
-MM)FI\P]\%PS,$TJL+YT"YWN[7C9)R6\>V!I^11*W1MR.#@"8`0``F`$```(`
-M``!%``&43J```$`1``#`J`$!P*@!`@'T`?0!@`=3DEE/ET7-YG?&,`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``AWQ#U%>8,DJM2+ at .!Y?."!YKO%MH\\@S5JK)\&O*7<,8$9Q>87LE
-M;:GB<A:/*51CR6%%;-%Q:NJ/.`IHP#U-BGT%8ILZW]<:L)D3$L7`J)NJ/IR/
-MJL2SP"JAVB0?=3D!&JI7QBYQRQ&#,#/%&(TNN=3D4W5P4 at OBYSD@=3D9=3DU6 at _!S1,I
-M```DB)U5<OVJ.BYXZ8)";`IT>+IF&99KC)&Q1<"8,E4^P_`I```<``!`!`JN
-MMQ#F?6A7>?1(SZ:VQY%=3D=3DX9U````'```0`6FU9 at -[%O#./]=3D`"N5C*_\X-4@
-M<$42MT;AG0X`7````%P````"````10``6$ZA``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*93Y=3D%S>9WQC```````````I("(@`````````#P````@``!`!@````%C
-M=3D5/?NC\5>*^K+?;8Z^'#PO@'W$42MT;[MPX`N`$``+@!```"````10`!M$ZB
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A93Y=3D%S>9WQC```````````I("((````
-M`````9 at A```@``!`!@````%C=3D5/?NC\5>*^K+?;8Z^'#PO@'W"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``AWQ#U%>8,DJM2+ at .!Y?.
-M"!YKO%MH\\@S5JK)\&O*7<,8$9Q>87LE;:GB<A:/*51CR6%%;-%Q:NJ/.`IH
-MP#U-BGT%8ILZW]<:L)D3$L7`J)NJ/IR/JL2SP"JAVB0?=3D!&JI7QBYQRQ&#,#
-M/%&(TNN=3D4W5P4 at OBYSD@=3D9=3DU6 at _!S1,I```DB)U5<OVJ.BYXZ8)";`IT>+IF
-M&99KC)&Q1<"8,E4^P_`I```<``!`!`JNMQ#F?6A7>?1(SZ:VQY%=3D=3DX9U````
-M'```0`6FU9 at -[%O#./]=3D`"N5C*_\X-4@<$42MT8]XPX`4`$``%`!```"````
-M10`!3$ZC``!`$0``P*@!`<"H`0(!]`'T`3@''93Y=3D%S>9WQC?=3D$%6LG^0R`A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``!]2$KS$I\I=3D!N_(W"/)@?&G at W4G1;;W
-MWL()("^VSZ;F,#Y-NQ>K3KEUGU&^Q7?1/P"`'_Q!O94?6:D@#8[TYRRC at ML%
-M^Q3N+YZ8WK1^IY(L@?QV7(F3+=3D%K3;!3R-1A`+;>>&IS6CAN?H@,]`P>>3+\
-M;'LTK]LIS-S,I^^$UY^U*0``)`H"],E;$/590HQ?T1&GO).S05_IX4K=3D)\=3D?
-MK_VZ$KCE*0``'```0`2HYO+>TYJ3Z-ZR%@2$IP`0FS0W@````!P``$`%H8;<
-MQLZ*DIB#M%\!S8H>89Y)P+M%$K=3D&(1`/``P!```,`0```@```$4``0A.I```
-M0!$``,"H`0'`J`$"`?0!]`#T!]F4^71<WF=3D\8WW1!5K)_D, at +B`C"`````$`
-M``#L(P``T,YX5;W#/8L9D:+R;^3B:YORP:P\-7*3PH9!OL8\V?)R?OP!/8<E
-MD7E,[=3D&>M7X)V"TR5(3OCV_JTW#@O69NG,AJR-NO57Q)7DIV&D5ZZ0(^`._&
-M_N1%*7#!UB6)ZCM&P1.R2FQ5V/7(3_6>&\LZ[C2D4%#/!UH]PR+^ZPE54$EX
-M=3DTA_]J^^.P`7E[+_7LJ>I7W&YE$/*.V,^-0P:#Y4:ZL.2CNR^90/EX,Z#6_Z
-M+FS2L<.TB?(RBWB:O3+!3Z'Q\81IIB at GP/?WSMT43442MT;W*`\`O````+P`
-M```"````10``N$ZE``!`$0``P*@!`<"H`0(!]`'T`*0&B93Y=3D%S>9WQC?=3D$%
-M6LG^0R`N(",@`````0```)PD``"`RB^B4/K<USI1"$:T5.ANU66W>>3N;;7=3D
-MZ`DB8(SUH/MF;R2R+(O0A!PA5HFV"5!4')>:+NVVF'FC>Z at 2O]0E&B0U[HW:
-M;C#HB"=3D7_I*/XO;>=3D(@B5X7V&2=3DKQA0SA]MZXN=3DS&;OJ"^0\H-OSL(YV:$SX
-M'<HAXR:0;&0TMD82MT9F!@``'`$``!P!```"````10`!&$ZF``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z93Y=3D%S>9WQC?=3D$%6LG^0R`N("0(`````@```/PA``#@
-M5NDJ"[*[RFU_]*_<3;4:=3D`,H>Y6D9^*#C3T#GPE)=3DZ2?7&M/-/T64Z98\;W%
-M2B4N3C&.H]O=3DM._8DR4KL!L7.]V;/TK56#"TY5`8'N#D at 3Q:0R.HGK?WBIE`
-MI@'>NGFPJ1!82,X,SUA4:^"WBN at 7WF3S?M:O$K at S.^(=3DZ7;EV`0VPPWR'=3DJG
-MR at LX))/U)HL><;T_CP=3DB`"NV6X?(;V2_%#,^I;X9.)6$4IP#B4K54073^%``
-MCC."XNI'#!A:/LTJ2*>_E4&UZ%ZX&SMU<$\M@<Z)LULS$.=3D[1.#)XT82MT86
-M'```_````/P````"````10``^$ZG``!`$0``P*@!`<"H`0(!]`'T`.0&R93Y
-M=3D%S>9WQC?=3D$%6LG^0R`N("0(`````P```-PA``#`,I.*.D7`:?J-*%4WY8.#
-M$2]F"@[<U"LW<1;5Z]9%!4 at K3P9[C]9SMP1.V'B>)TG=3D=3D(:)7-L(Z<%'/N)G
-M>U4ADGE,D-9SCSQ7^F[;]]&5^-`C'`N[1)GQ2F;'0P!Q]NJIE,J_I:SP!NF)
-M:'&$[":-^1,\.\G)$E&&:[!XR%,,NPC0>4R_U+KVT*''=3DS2B$$*>1MQD_1CJ
-M^=3D>OD-0];#_`ZH$?_]V*4JPB_Q29:`;'>A!_@)+^FUJ:@[.$SBE&$K=3D&\QP`
-M`&P```!L`````@```$4``&A.J```0!$``,"H`0'`J`$"`?0!]`!4!CF4^71<
-MWF=3D\8WW1!5K)_D, at +B`D(`````(```!,*0``,(N<"G].U(9X'H*1B?&AH_ at E
-M\\-SFY9X5=3DW8E5`$Z^NP2/\Y815N[)UK,.9T1A*W1E!4``!L````;`````(`
-M``!%``!H3JD``$`1``#`J`$!P*@!`@'T`?0`5`8YE/ET7-YG?&-]T05:R?Y#
-M("X@)"`````#````3"D``##UN`RUYX;R(7D,6%9PRSK=3D>\PZI0/^'.(S[A0[
-MQ8C/3.@=3DZJIDM/]5I#7(MT82MT9B;P``/`$``#P!```"````10`!.$ZJ``!`
-M$0``P*@!`<"H`0(!]`'T`20'"93Y=3D%S>9WQC?=3D$%6LG^0R`N("0(````!```
-M`1PA``$`>C#!PHW/@(Z2FEX,T"$9B#L&2CH]5^N+^#;MC3,J,LIC9;9MGV&_
-M^X)L*N492&AQ>]KQ;<&G:,N+OF([3(:Q<'/(Z6JAX,-'.VWT3[@T8!194C0L
-MM+>,,H#$C:A;=3D(!1IFLLZLVZY37V$B1X&ULT:[\/PK.4_P0X&U`Y#1\O5<Z4
-MFA*8*`7&VY7B!`_$O,R>494-\+3:+;1JU^DF"C-[2`9'33M).2A at MQ$U.*(D
-M$>6&!^]<EB9S9PLYPR9;/J64!`_SZS,UX'PES!.N<MNG2H[#5B'V`T`E!@>0
-M:6;<^D[I><.^P_*C(V\.&6>6.%R_,)AO<\;N?G`D%W+61A*W1 at -[```<`0``
-M'`$```(```!%``$83JL``$`1``#`J`$!P*@!`@'T`?0!!`?IE/ET7-YG?&-]
-MT05:R?Y#("X@)`@````%````_"$``.!`0,JE)3@/)-PA9(D[W6)`%"TK`K9@
-M(BP5>/%*FG4,Z5*_')"GI5DH-US\;?<1_..KGJ$>;Q;N&KY8Y'/GW3?^9RH`
-M at 0WW[([)OJ2CR\[email protected]"4*)E)1W0\]>/^3<*@*H=3DN:CX=3DJM*ME](+5XP
-MNW@$+;)O\E4:W-=3D4\T7K)"P1JM#+/LV8-J3SNFRB>GHSEMMO5_?E8G+)HI#`
-M at D_"XN8WR/K-^I60?B7N7LS=3DT#">Q/"'I-FT1SHKL,`<@VF6S'<V^P0_:BAB
-M'[:9-4>[NK`5]GM1EJQUOUFY1A*W1A*9``#L````[`````(```!%``#H3JP`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YE/ET7-YG?&-]T05:R?Y#("X@)"`````$
-M````S"$``+"5+16<(;M"X^L)PR;4A/BR,\65ZR3(5II.]1C^U at TF+W4"UO2$
-ME#_K,KN+:T>_E469 at D3Z8^_0EI"<+L8B<,F)"KY7>H%9)'WWUB/]/12_V%_[
-M+QYZ>0:I).>+IX[JJNZ%+W:!.RZ+2/A)^H[R8N8Z]&NX`G3A("G9PS<9<:N0
-M`@(7M.[[A1/*@TX(+!J,8K?"Q3!R=3DJO1X'T^&9&F!V'IHP&A>NS-N61KU3PT
-M1A*W1F*[``#L````[`````(```!%``#H3JT``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YE/ET7-YG?&-]T05:R?Y#("X@)"`````%````S"$``+"1T^VQ^);*#M%,
-M50K6?AC!\9JT2E:S<,`KA89%K)U4OG at 8<!2]FW?$P4[I@!'AT]8#O&H*ANCG
-M$-9#,9H\K[X<;X?T6=3DX;*<IHYP0!/RUBR?(`C.-,!:5Y1$,V&?;RL'#T8L74
-MA>M!Y3'^UO].\M:;@]UA**/K*`4./.36M8'-K)6;^%KWBP$-OO/I-%?#`CAU
-M1\@?A<)#V=3D(1GXBV_V"M,64D*L@["@F3J at D+1A*W1G[8```\`0``/`$```(`
-M``!%``$X3JX``$`1``#`J`$!P*@!`@'T`?0!)`<)E/ET7-YG?&-]T05:R?Y#
-M("X@)`@````&```!'"$``0#$M^(]GA9VI+?%3&04QD#7S$0\@>Q5O406BN0=3D
-MA8 at 9*@(%"/*VVLJ*R![?U!G,VA+I170%7]_\51RN'MO%U0A,-*]@\XQF?F7\
-MD=3DAR!$"E"+_7'(;86VP"&!LPZ\&^J:6O2X'.`8O*1_&KW$]E5?S:(RC68'D\
-M(HR8[CZV&S15HMGXUA1?QC:7`YM$8XS_656!;!30/P2T>SL(RJOK/PVGO:U>
-MD(JH%BIL6;CFWOQ*W7SQ$`AD.?OL6#R-P6R.;6=3D77WH]RG2?%OVJ&%;:OWNC
-M3,TV at .6N!57_OM$>YXW]B0<AUWD5B*W_K,>:SMDKIB`^D*<V`/Z7:94IB$Y&
-M$K=3D&-^0``!P!```<`0```@```$4``1A.KP``0!$``,"H`0'`J`$"`?0!]`$$
-M!^F4^71<WF=3D\8WW1!5K)_D, at +B`D"`````<```#\(0``X/"-'/B25VRR at BGU
-MZ:'SVB*?AE<X\T=3DB?R-]NY*-J._V%<TD?=3DS+)6/*M+00.S=3D`X:[`(57^^07+
-MJ\MN^EUEJDOL:U7Z,,DSB.IAQQ\NQ<*6K;=3DOC0E3RFHVKWMK)+38.>D&8>XV
-M`$U80$D9^&$R#A&&@,3R%47]1:8UUDJ(W?L at 0R^%>57=3D/J%F_H:*=3DB.R`<[^
-MF(RJ at 8WE(C3E!*\)"I2>#5HJ/'?_TV94$O8EV9/%^!>.9:B#&TBH[7R&H69\
-M&T+M;UO[`J^G^SAW&"B31V$$R$5\KI2*RP^7(H9&$K=3D&S?,``.P```#L````
-M`@```$4``.A.L```0!$``,"H`0'`J`$"`?0!]`#4!KF4^71<WF=3D\8WW1!5K)
-M_D, at +B`D(`````8```#,(0``L&6\+$PMZAK-'2$+$V,F,8D:.R;8WV4 at Q[`1
-M,PP]6Z%OOM:CEIF8J at K9/J.$.I(1=3D>TUS-:%3R31*7B,GK\D>*MN<^%E:S$1
-M+Q<)%XEXV;DY9$\T7W,+_0K/Q]W,HHGBDRH/&QI<+]@U=3D8R?2?4[L'+)=3D3:W
-MTN)#M2T2%TKE6,4K^R+HQLZOXN3WI`[X\&/<>V\R1#6Q*(7_8%"T?WI3A1)S
-MRSMSJK0YW-'R>#U&$K=3D&=3D"0!`.P```#L`````@```$4``.A.L0``0!$``,"H
-M`0'`J`$"`?0!]`#4!KF4^71<WF=3D\8WW1!5K)_D, at +B`D(`````<```#,(0``
-ML&"VDME0K.,%7SYMSSI>NOA=3DB.U9B%H,?29KEKAYCS3W$G'U09$\D97_*M.S
-M0TE[1EJF<`<#<=3D`EX)N5#(M+OW%:(@C&2/@'472&<<QJY(0<DP_&OG,`Q0?5
-M[D1QZE,1!D/7A$*T*;\]X6P&R$;%?H0S"C<<V4B=3DO'C&?154/0E[V#OS0?/)
-M6G)59VFF-7X\6M?0X5&LR3SQ?FQ>!+_]HAT#"F=3D#[-/:9TIE1(U&$K=3D&XE0!
-M`(P!``",`0```@```$4``8A.L@``0!$``,"H`0'`J`$"`?0!]`%T!UF4^71<
-MWF=3D\8WW1!5K)_D, at +B`D"`````@```%L(0`!4+LIA`8X6C#Y#];+Z[.2/US#
-MA at T<N0L*^0DMY%*+T%DIT9^S1Y_:&B.$.GW\-<&!MEZ!GD/[^/TS<E^`]..G
-M;U2;W5MIZE/9`Y$VD*B at N*811/%SC)Q:LLTFJZE_:PS_ at M/0 at 3NAYQP.5*U'
-MPH;H.@$P[!JLQJ/M;8ZX4D_&%79P;@#Y2BJ^W31_4W]9$)GU*`JIU8,9RZ,/
-M-*I0KEL*%R:)>"H4#M-:Z+T9\%'O[F4?\/R&=3D(M.WP\/<AIH3-4E*,32"YSG
-M!15[!!MA=3DP?IPN'M2<3'+()2]SGTN9B:!B?.2<*=3D;G/!%[-1"3=3D+H;O)4!\5
-M)IV at 4EOZ;EG;85]#H@^>QAY9C*#SJ0F=3D6I1,_"M+6F/661T#C;A%';"*+4LN
-M*>4\"KX%HF2)@I_8;HFM7<<&SN1RC/?A=3D?]ZXSD at VZO-HH*A[`A86KJR''I4
-M1A*W1CV)`0!<`0``7`$```(```!%``%83K,``$`1``#`J`$!P*@!`@'T`?0!
-M1`<IE/ET7-YG?&-]T05:R?Y#("X@)"`````(```!/"$``2"F1B>0$A.AWLH0
-M at I5$._#I7GRNON(4XA#A,=3DAR^X*]7^"!U/#Y+*5'DTE9X!<`ZCO[3;75E.&9
-M6?D at I,92V+09-I=3D:D[W$!'(I-`Z4\]).]0'^Z&X at SMS">H\,S7KK]BZ_WUNN
-MF6(X7W[;XW%!3X%R/A2D40">`R98S.I)W.'GWI%,>JZ)(:-SJ@(@AZG%?O+\
-MB`;)DC[&QW/:FM)$DP>[^WMC21 at OGU6K?2%T4F*]5:PI\WA.&+33D,$DU.[,
-M?;L/-W(,>8,1L16B.8D-V)$,X at 9OQ]-CP.\ZM^H%'#Q.\\Y6Q_V3Y4OMX1-W
-MA'4O6)$<(F54,C69F*[F#_Z$!)&#1F!#]273BPP9Z2[<&;_-44?2""/4]'D"
-M7;N![$82MT9FO@$`?````'P````"````10``>$ZT``!`$0``P*@!`<"H`0(!
-M]`'T`&0&2;@`:4^AT"/!JHOP@>W(IQ(N("4(`````````%PJ``!`O"0::_U;
-MVSF=3DB4#1"4$'S:.[])I6 at X#J_6Q1%'=3DFJ#7.%>=3D(T3"&%XE"ZXQ1FL2K_B<J
-M*1/]1'_>QP\%1A*W1C+*`0!L````;`````(```!%``!H3K4``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YN`!I3Z'0(\&JB_"![<BG$BX@)2``````````3````#"W
-M9R*YT,JHO^ARTKOM2Q9=3DWJ3G/6(A)J`./S at TC9/PCR5,J_Y:PQ&_>BI)-482
-MMT;%V`$`;````&P````"````10``:$ZV``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.;@`:4^AT"/!JHOP@>W(IQ(N("4(`````0```$PJ```P9'V_'<Q6\[L(V0H#
-M-IL`921?%C8"*!DHL^R$6"=3DV+E0%;RM'.5*)=3D,YF#HY&$K=3D&V^4!`&P```!L
-M`````@```$4``&A.MP``0!$``,"H`0'`J`$"`?0!]`!4!CFX`&E/H=3D`CP:J+
-M\('MR*<2+B`E(`````$```!,````,$?U&P/V?S5EU1PN3=3DRLB0RL47 at 8$%')
-M@<3\RQ`^TB0_I(:4 at T*AGWS[\"\V1A*W1K#A`@"8`0``F`$```(```!%``&4
-M3K@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE"[+;3829K:@``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M!B0D05M*N']&2IT4;,H`C-_8F$J;[N'U/5C#;N2C3 at T6M>^0$\(ZR0OV8E,"
-MG945<*CAT!=3D9%MM%K).[0DM-C at VS!1BG7H[/C"^C.K*2ZY]P5Z[4LX=3DSY</D
-M/5D,#P:.,^:U>4^;Q(`VUL;DE;=3D<=3DF71[RWTU,R at 4-%]!,F(/%`I```D-Y]C
-M=3DY$"]81!4LH&?Z0<%/<:/H%*WGXRP*$PEZ+]R<DI```<``!`!&LR90?&]!4F
-M\T^=3DD-VBFJ[_;*[<````'```0`6DER4J at _6][0#DU[*V0.9X\3]A3482MT8A
-M\`(`7````%P````"````10``6$ZY``!`$0``P*@!`<"H`0(!]`'T`$0&*0NR
-MVTV$F:VH```````````I("(@`````````#P````@``!`!@````'P*7RZ9QPU
-MNW!CG[`'$M"^\UH$9482MT;@_P(`N`$``+@!```"````10`!M$ZZ``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A0NRVTV$F:VH```````````I("((`````````9 at A
-M```@``!`!@````'P*7RZ9QPUNW!CG[`'$M"^\UH$92(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``!B0D05M*N']&2IT4;,H`C-_8F$J;
-M[N'U/5C#;N2C3 at T6M>^0$\(ZR0OV8E,"G945<*CAT!=3D9%MM%K).[0DM-C at VS
-M!1BG7H[/C"^C.K*2ZY]P5Z[4LX=3DSY</D/5D,#P:.,^:U>4^;Q(`VUL;DE;=3D<
-M=3DF71[RWTU,R at 4-%]!,F(/%`I```D-Y]C=3DY$"]81!4LH&?Z0<%/<:/H%*WGXR
-MP*$PEZ+]R<DI```<``!`!&LR90?&]!4F\T^=3DD-VBFJ[_;*[<````'```0`6D
-MER4J at _6][0#DU[*V0.9X\3]A3482MT8:)0,`4`$``%`!```"````10`!3$Z[
-M``!`$0``P*@!`<"H`0(!]`'T`3@''0NRVTV$F:VH,0R'GSB'HWDA("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``-@\4/9;A4(#*DQ(H>I689_M]NXQO)/C6;P50TEI
-M3V`G]!.#06=3D.MYNNF8H]'-*G;W+\YZ9'D/-*T;E$?>FU5^WR'^QB&,PIZ?7C
-MT:X+`"'\%@`"E0\N6-<WT<:ITX?F?,M?;QH?,.JDZ["L)1E29+FR(=3DW7R1@]
-MG($=3D+&R]T/]1*0``)',F5!QF#E-V=3DKDC$32518+",R7FM;<(?;0P7_7BMA'4
-M*0``'```0`3O/<"3_4BIG'HLERI6OO:A^0HX"````!P``$`%;KF6G;?LYK6U
-MHF\E`A,Z;3@:11A&$K=3D&&E,#``P!```,`0```@```$4``0A.O```0!$``,"H
-M`0'`J`$"`?0!]`#T!]D+LMM-A)FMJ#$,AY\XAZ-Y+B`C"`````$```#L(P``
-MT`?]YV%.F&0X\4/X6A#=3D6&J/-^XG0$8MYUM567R\)C,DMA:-J0PGO*HLKSX3
-M*K>/?5$+ at 7]>7=3D.;Z3I1$INX;8`("?R%6NNVUCYB8'JW:-9/OO):%LF#*\30
-MQS%_9&IX:(CK.4'DKHB-K&TQ+H+EQ0\-X+K%4I(L>SWRPXAG#;FEK',N?587
-MO?/Q-=3DID at YWP,]J`1):(J!A?N4S['1&84ED#./<RMU*)/6)%OE2O)&ZU-<NP
-M_61CB$&EG;XAGI%ZG2-1,^#6_.M%Y6=3DQW$82MT:T:P,`O````+P````"````
-M10``N$Z]``!`$0``P*@!`<"H`0(!]`'T`*0&B0NRVTV$F:VH,0R'GSB'HWDN
-M(",@`````0```)PD``"`:=3D05"<!GO at OMN8^Z1U_TI(A%^S'6<+8CX0-K*4ZG
-MV>`I;G_]=3D,0K/XX9;A6,`XOAFST#9(<1H2SP;>$J&*Y1*F?81T<*:*]@0<PX
-M_S'3=3DH6RCU6#K)P"JQY\`ZVLK[-K*BQ<9B+)2L-PC_"(CX`RDMRS43FPX^=3D:
-M at G%;5$82MT;CB@,`'`$``!P!```"````10`!&$Z^``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z0NRVTV$F:VH,0R'GSB'HWDN("0(`````@```/PA``#@$'6\2_UC
-MI6R6>Q,]"]9C#UL'`+<\4Q7&,"XR(E0N at QRAV+XZ[0]N?MV/X1[_`+H!QX[<
-MEU$A.R<O7!1AAET.[M^'Y.E,UHD:11QW1GJ$H8:GH!E"X0GZ9.:K64&I`ZB=3D
-M#=3D("0Y6R6>:ES$`-:FN+7`6O3/*(#R$6\!S@`#1[I6IF=3DH7[2--W\!`_`$-W
-M_TR0#[+SOZ]V"T),OW3>G(\$[?1UA70Z\27X^M.\-DQ7.2EQ_>8D7/53(W.C
-MY*;@_#A:@LT(6.M9>`?Q3ST2E/F?[S\D,E7N6BJG4<DS!$82MT8KE@,`_```
-M`/P````"````10``^$Z_``!`$0``P*@!`<"H`0(!]`'T`.0&R0NRVTV$F:VH
-M,0R'GSB'HWDN("0(`````P```-PA``#`%0?UKO6,))!.S\T_K.,E`YOX"Z"G
-M%.(E8Z"]Z:4,14 at 5`5V1]=3DCU(,=3DP''AP#DAY?L)R)+I`-H6!$N]S%\<7OX!>
-MR*\]QY`N446K.21GLS%A,9M#,YOSR_T!J#6)TO\^-.`8,R4^2LOBJQH575_Q
-M7%;MQC57Y55JA/0PX)JIZF93'`<_Y'\L%-687^(-)]"EY=3DV`BQ,LGM><5'E'
-MK+UT.*TR2FA2&FH4+&=3D`TLY'!+/_";*/K2],J_4X72I&$K=3D&!:$#`&P```!L
-M`````@```$4``&A.P```0!$``,"H`0'`J`$"`?0!]`!4!CD+LMM-A)FMJ#$,
-MAY\XAZ-Y+B`D(`````(```!,*0``,'?8A>V)IM:;J69-B/-3#0QVOJRT4X*2
-M`Q"$K<$)T-_(N#2YC>&=3DTU)S`H$Y1A*W1D/``P!L````;`````(```!%``!H
-M3L8``$`1``#`J`$!P*@!`@'T`?0`5`8Y"[+;3829K:@Q#(>?.(>C>2X@)"``
-M```#````3"D``#";,5QPE8Z%C37NJ!F,-=3DI`]H=3D;E%3389.K1!_9>)[>"V%*
-M6GP[,[email protected][Y$82MT:LY`,`/`$``#P!```"````10`!.$[H``!`$0``P*@!
-M`<"H`0(!]`'T`20'"0NRVTV$F:VH,0R'GSB'HWDN("0(````!````1PA``$`
-M28+ at 3L9G%/JYE%$OWB9AGV51^IVAS]VT=3D::4>2)9$OB0SH7+I, at BX[$B1K-F
-MGT]4WX7>K_KIJ!T65S,=3DYKN50JZ9D3ZWG'>6RW0,B^XGM%3I+KG:GMBS\J5*
-MPJ0D(IG4N.J61E65:E[_#T"10ZCNNP#AL'4EQ"<R25>`6B@#8)=3DZF5E55R=3D7
-MD4<>^P0A69E`+Q%TEH"B''85=3DQJ&QB4%7DFH]1ORVIVR_`F1">-Z at Q:VFHBD
-MK^,]`M-4W*KLG/VS93:5;WR04S934[B7C)DR#OLV&%W!ZWGB3](W*Z?Q&BG0
-MBA;VA05_GW=3DDM8$[@9`M*(6GH],YX2WWD,'61A*W1L+R`P`<`0``'`$```(`
-M``!%``$83ND``$`1``#`J`$!P*@!`@'T`?0!!`?I"[+;3829K:@Q#(>?.(>C
-M>2X@)`@````%````_"$``.!5NM$IR9=3D+?HB=3D@>'3V1>L>`KWUQ1TM0R#SNM_
-M3>H<2&GA/7PJ\XI!8P0_L^XM?$T,C"VO18`96\SC6M9[_>]]A$GG8NE)TOC]
-M<`7G3JPT>_\=3D'H272S'0<+MB7QX:\SSWZV-?>G^P+IIF9>W%E=3D02$HNQKE/\
-M(6@'>"Q.R:F':^Z'Z+2'P`D.Y*%?5OPN>\6'P$_O6[=3DNVBE8/+?F9:,+6/S+
-M_92NE#)'2?'Q2\;7JXQUPRS=3D.SP`B:(KS7T31H%#6)T7YR&*A*Y$U)TDVCBG
-M9VW0CFY at K'S)3&]+1A*W1I;_`P#L````[`````(```!%``#H3NH``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y"[+;3829K:@Q#(>?.(>C>2X@)"`````$````S"$`
-M`+`>MB*I_/+W^4"2]A8#`9N,":'\9B4FDK$UA1$[`"(&X)?;+%5J<@NJ7XC?
-MU;LK\]_4. at 4_QS,M**>#K$%]&SJ'D<2MFU%WX,#>"^]$KS2`N1OBYA97BR*H
-M;>.WLGTI\#Y2H&7>J<ZA);Z,*@Y$T5(M:'E;6P%D[/+5(>N);70:UH_.Y=3D1`
-MX,2W@^SZ8K&I??&V'8L?"WSHM.\@G_EC2?(5_ZX;R"!)VNB-:X4Y1A*W1@\C
-M!`#L````[`````(```!%``#H3NL``$`1``#`J`$!P*@!`@'T`?0`U`:Y"[+;
-M3829K:@Q#(>?.(>C>2X@)"`````%````S"$``+"@J]W8821X2\<'*,0BKA)@
-M"LN"E`@<A1=3D at PKE61<+ at .F&CQQ("9D4D#S'BJUMQKKX(9CX;2<DSH*!$4A\K
-M4[3ZXV22<3$2;*SBM$&4=3DF at U'/`>JHM>Q`UY6N,T33%C[LL<,$*2&9AI[SA\
-M'PWK77NH^]B_QUD^T87J3R$1D=3D@[PO007PL]^;QJ/[@ZMT&C!;+1X!*%1=3D2W
-M8=3DGT3R]FZ-_K;55SM9#_K=3D0V_R\X1A*W1@%`!``\`0``/`$```(```!%``$X
-M3NP``$`1``#`J`$!P*@!`@'T`?0!)`<)"[+;3829K:@Q#(>?.(>C>2X@)`@`
-M```&```!'"$``0!T1PG[ALPI*=3DK.2D5:\7[&B=3D,HZW^&6+[H,:O]"=3D><I$ZZ
-MZ[_MF_O%*3MMJSG,S?LH9$/'%%VV7?&PO4;:,/),>BKSFHNVN0ZDRH2L-3"7
-MR)4$QA3-GHU1^[4U5JYAJC9R^ELZ?C."Z1AY00P8>1=3DZ)--V207$@-I(`)'H
-M/@C:Y?TT9G9T-MB=3D]EG7"=3D\<LG%JZ-%[+P&75]!`P),L70:-..FN at Y\K2;HQ
-MIX[LR"M%8?3L/QQ:-.UV_&!VZ`/64BK"9:VDCQ^46.'9%7F"%MWGM4L-)0=3DZ
-M0%IW`TA/XW^9U`DZ)[3#JV4LZB$X>"=3D@]Y&CU2#B\W\D\*?`E15&$K=3D&5$P$
-M`!P!```<`0```@```$4``1A.[0``0!$``,"H`0'`J`$"`?0!]`$$!^D+LMM-
-MA)FMJ#$,AY\XAZ-Y+B`D"`````<```#\(0``X&FR(G&!DC=3DZ];F4:?WP.RL%
-M0XZS*UD2#]6"KIWR['E6PDVQ-?.C#.19'H):BWM56]H2>6W7FX"M8'CEX\08
-MM`[$-JUZ#?*8^D'PL/5Z">?<M-C/9 at TW)[*C]9'7L#E)AR&WUYJ.+UXSE0M-
-MQ>L9L$YYH13EJ^CQ/R4Y9"PFT;[,PHG.OI at C;3ZWMF*(+*=3D2N$6)R8)CSK-_
-MZBK]1A5N,A7SW^TS:O":MM</N_\@6G4TD8X0A#7V1I$Q)#S<)+J^]@B#LKM0
-M4XUPA%'7N"EPEC2M07BN'6"K3B9,G-9&$K=3D&DUL$`.P```#L`````@```$4`
-M`.A.[@``0!$``,"H`0'`J`$"`?0!]`#4!KD+LMM-A)FMJ#$,AY\XAZ-Y+B`D
-M(`````8```#,(0``L&,O#25>B7;M!_[ZKU(;)8LTR)6Y!PQ(--FB?S$,:)F6
-MO7XU_T/=3DY!\&W#>+J1-:(VQ1W#MN%C!!5`@))=3DB*($7YLEM22D7C=3D+;I1*PC
-M#W0YU$8SF>7XC1V'2%//*C^LC-W]/P-G%)\V_.&8,8G;G'IP:!+R@\N"V?YA
-M"2NKS)IWLY;J;YA$I<!6+`+26TG(G?^E=3DT,$2+Z2]TGO9NH<27X^]U*61P5$
-MMP>Y?M)&$K=3D&U'T$`.P```#L`````@```$4``.A.[P``0!$``,"H`0'`J`$"
-M`?0!]`#4!KD+LMM-A)FMJ#$,AY\XAZ-Y+B`D(`````<```#,(0``L!"YYD.^
-M[,=3D/0.A^-JH)B6FB$".A)0S`<1NUP+97..F7+A^DHI<&/ZJ)]XWK'LQM'-9!
-M&L2;:[Y9P@/O%T[=3D/#YO"%O@(C5#L;:8>@PBF$SEL(YS"SW?8&*E?*@NGUX]
-M;YQ[VL;L0ZSYUH9I?W3,$;>#W/'W*.4[<CT$89]QT:ZT=3DL?9FNU>MW4P/NM-
-MS%,FGG,Q[;X/TQ%X'E[S2S$U(RR+*'4+XHMW-9?S^>M&$K=3D&>:8$`(P!``",
-M`0```@```$4``8A.\@``0!$``,"H`0'`J`$"`?0!]`%T!UD+LMM-A)FMJ#$,
-MAY\XAZ-Y+B`D"`````@```%L(0`!4$B`9*;LTBAK$A%0PE:WBN)/^<P?U5^I
-M[X,'3O1X4$N*@)\ODB#/6S1VD<2U?^!G$@_]>PNZ!]6Q.9+.-M0!DJ[ZVBK$
-MOE?S:\I!V$TIP],_7UQ'@2DQERV)-)5Q2>9G=3D'-E>]?L"5I!F*<?=3D4WCQP/"
-M$5$9V^AN_49[9X6K40G*O&G#Z=3D-W<+]Q6!*V`7Q-;*H#J%$J6/E[?11D!1^\
-MZ$9MR%'`,$NGS=3D57[PN,^$_<&R<A=3D"7;"YDGL'<0G>5/VLP0CM+P\]J<,0#M
-M]D/QX9UM1]5RJ5/*#L=3DR2N`;KV5N9=3DO8(?*7@)!`I;)),P(5$MXU.?MX:UN5
-M5DFRK]MFL`L72!B@^IW#6;U_`;SKRSJVE9'<0&J6AZ8\)-(H$5&'I1<&95]T
-M&-3?+R<JSG=3DZ3TSLJFJV"EKPBN207W>P\RY/LW8W@`@[(K'S&I7I1A*W1K/<
-M!`!<`0``7`$```(```!%``%83O,``$`1``#`J`$!P*@!`@'T`?0!1`<I"[+;
-M3829K:@Q#(>?.(>C>2X@)"`````(```!/"$``2!'V:Z*OJ!6\`*8N%\&2(1B
-MK^,[V:7)0;81T3R\.`R,_/1>4J422<IG$&.O:@!B@,)OBBAH@(&]QWWVQ<S2
-MAA>RM^EV199,C,PSDDM?%+;66=3DX0_<T*!@?Z91K04JE/WNWA`(L[WSW=3D#G76
-M784J%6U*/#^%)-;#.7JG%]81(`'<72_R=3DX++05 at PC<J\_5L\[DG31;JW"H7C
-MV7\BU7/5`;7RF"ZA1#QTPVG[L<^&MXUNIEP*LPU084P\EUKY3>=3DY8CP9+T3R
-MJG]\1_GAV$5HA0--2.5VCDPWR%%,=3D3D>_RKYS`RF,15V*/\!",Y0-%N8"UD7
-M\\7Q6PW-PU&/^!X51)!(5_*VS)KTQAA#M(R1PD6&(IWH3"!FSHJTMVK1,T82
-MMT84!04`?````'P````"````10``>$[U``!`$0``P*@!`<"H`0(!]`'T`&0&
-M26/OX<A6D(-:X!7!7]^`W#4N("4(`````````%PJ``!`_[L*%^,J[ZC!*Z)T
-M]\N.]`^>!N]8^LT8CUJJ)7 at .9*UR79,R7HDUU['$R:3\H781:9^@ZQA_>,&;
-M7.M#1A*W1F40!0!L````;`````(```!%``!H3O8``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y8^_AR%:0 at UK@%<%?WX#<-2X@)2``````````3````##"_JE?8W95
-MW0RU]?UZ96#PU44>D4\G at N2$NF++'.+6KCK:4XKGGX%RT$N%"T82MT9J'P4`
-M;````&P````"````10``:$[W``!`$0``P*@!`<"H`0(!]`'T`%0&.6/OX<A6
-MD(-:X!7!7]^`W#4N("4(`````0```$PJ```PY-!T3$R!'/RHI/1%XN)V3^$`
-M\A=3D8:_?[+UOIFSF0=3DHLS@&_S).QEN][],RI&$K=3D&,"T%`&P```!L`````@``
-M`$4``&A.^```0!$``,"H`0'`J`$"`?0!]`!4!CEC[^'(5I"#6N`5P5_?@-PU
-M+B`E(`````$```!,````,##4>3'9OZ+F_7ZN-AE=3D<PSV-](4(?IT6-.91V89
-M76D\R4LDV"?GT`B7^1`)1A*W1D at P!@"8`0``F`$```(```!%``&43P```$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE98O+ET4J,<@``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``RQ\2'%CG
-M0B1RXX0/^W1@&:G'X+=3D:[3LP5$J<I\A;4Z[1,,N61>B at 8D#`16"Q8$`-EP_,
-M7X^U3;B3'+=3DVZ&8?^<+!(N651^BOK<U)6UO at D_T4,FD^.0H7'#3.NJ^`.B&^
-ME>K at F$1'H?*"[R@^C<`#T^VO\V?(("[@`+1"'Y_CY#4I```DP]',[WG`:WSK
-MCD%5`7'`$CL"?_HTO!BA75!RN.-=3D70\I```<``!`!*10;G]MK7OC9PJO2.OX
-MYW-?$$V[````'```0`7$T?'`P"0D4?DLQG5M@]K9I'B]ET82MT;K/@8`7```
-M`%P````"````10``6$\!``!`$0``P*@!`<"H`0(!]`'T`$0&*66+RY=3D%*C'(
-M```````````I("(@`````````#P````@``!`!@````$L/;>%\COHLF6V=3D:PB
-M!4KY:*'7M482MT;83 at 8`N`$``+@!```"````10`!M$\"``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A66+RY=3D%*C'(```````````I("((`````````9 at A```@``!`
-M!@````$L/;>%\COHLF6V=3D:PB!4KY:*'7M2(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``RQ\2'%CG0B1RXX0/^W1@&:G'X+=3D:[3LP5$J<
-MI\A;4Z[1,,N61>B at 8D#`16"Q8$`-EP_,7X^U3;B3'+=3DVZ&8?^<+!(N651^BO
-MK<U)6UO at D_T4,FD^.0H7'#3.NJ^`.B&^E>K at F$1'H?*"[R@^C<`#T^VO\V?(
-M("[@`+1"'Y_CY#4I```DP]',[WG`:WSKCD%5`7'`$CL"?_HTO!BA75!RN.-=3D
-M70\I```<``!`!*10;G]MK7OC9PJO2.OXYW-?$$V[````'```0`7$T?'`P"0D
-M4?DLQG5M@]K9I'B]ET82MT9D<P8`4`$``%`!```"````10`!3$\$``!`$0``
-MP*@!`<"H`0(!]`'T`3@''66+RY=3D%*C'(2WQE.L-9H&\A("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``&'?DE*-D+:X?OCI'`%-BQG!H/)&4,6*D-[.R:\6R,<VD/?Y
-M"T"^44BKQB at Z6Z%7D1^C:`FA('.LDPHH:6_#9U:LU"4'?0->"YS8X+]Y-E%A
-MP*ZNRY$R-LPYKQTZ`.^.N;)/!E0:,^B#)&ATFD;/](V)$)RSOE^5G/&[G'#Q
-MI9,<*0``))1L80EU2A4H8EGUNR/3R5=3D_,0@*?>+3_4IY\HQ2_XXU*0``'```
-M0`0C9[7]7:"1;4JQ[IM!^D.<.41>;P```!P``$`%:+4G>P6C)".9>=3D5[.K5@
-MHPX6_$A&$K=3D&!Z(&``P!```,`0```@```$4``0A/!@``0!$``,"H`0'`J`$"
-M`?0!]`#T!]EEB\N712HQR$M\93K#6:!O+B`C"`````$```#L(P``T'1KQE3U
-MAH1O$V^U0>NT&C\O>M-"(,9=3DSF</ZU at P#4IY[&&(/F.J(BY)GZKVI3P`P\7F
-MO`6(-26\!22O6GHW&&+W6'3M>V#F/DUJ,1N_9;\U[U.D33X>I8L?(9;AGMVO
-M$`N/V%S<1:R;S25H+=3D^1S]H*[S-DJ3MC#/G!`\^GY>_1S2I)E?UTW=3D;[M!.3
-M3'C46A_A],DDJ2O3NS5$Q#[D11]\VMP"'H]4BDKJ+3@(P,Y8-=3DV`V";_,K)P
-M3E?3=3DX9"&'Q(J1_O2]"1BFBJF482MT:^NP8`O````+P````"````10``N$\'
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B66+RY=3D%*C'(2WQE.L-9H&\N(",@````
-M`0```)PD``"`?C:F>IQNW"Y4;3UUSS+(F-0O?E+5S-5$P`CX+Z9*O at 5:>R+;
-M0P2W$&Q7CU+[8<)[)/%T!26*SXYN$PX#BS'OAO!*7N4H_H41XM%V(T]#O2`E
-M<))U17R"(@KQ0G?=3D9 at P&109STD\(]3YHVZ3VP_^$E.:EL-\3)SL8*/Y[W482
-MMT88W`8`'`$``!P!```"````10`!&$\(``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ66+RY=3D%*C'(2WQE.L-9H&\N("0(`````@```/PA``#@91E^TKIWO$U at 7$[G
-M%G9[LORJR5,N0017X.(!ZD1NQ`B<0P:E1?$H1.)1S4A8(ARN>"OUS_?2/XD^
-ME!+<^!!Q3*U*\C'4<KN@)NQO>S.LVM0 at W+A_I/LKU<F;ER`/5U0*4;#2H&%0
-MTZRS#5C'BQ`AS";@S24:$O]Q8[87%`#TL/4P"H+7$WP:*+YSH;N5EH3%.[7E
-MNOYICSCZ&_>%YF_K`@0KT\1NDYX*]0),ZZX(!.5BEV<4Y3+$GY",QVDFI)K<
-M.I4;4#>OEZ8^LC:!)+8]^R@*/.G$MD$OH`=3DR$$82MT9[YP8`_````/P````"
-M````10``^$\)``!`$0``P*@!`<"H`0(!]`'T`.0&R66+RY=3D%*C'(2WQE.L-9
-MH&\N("0(`````P```-PA``#`GCNGN4XHD<EV$G/=3DC`[L*'T>Z at IZZWES=3D1I?
-M]\>)S$(%&^UA%%9-'5*&Y@=3DC>_Y0;A('"B/<^2_:MU>UKI+6%)$!6%@[Z7JH
-M!Y:Z%D][8[_SC'B47\M_G-:K#/^B3+W%;^V-9G%L!;6"%XWH[684WD_90_33
-M%ROG:9`9NE?<F[/-N>P(R*9UDCI]5N[BX"><(EDZ?\^[#[$M85PQ5HVR9FSM
-M?3*B^J-0V@:%'OZIG?H at F0PM*PBE][T at O2A&$K=3D&+?(&`&P```!L`````@``
-M`$4``&A/"@``0!$``,"H`0'`J`$"`?0!]`!4!CEEB\N712HQR$M\93K#6:!O
-M+B`D(`````(```!,*0``,$2T/V?Z.U#K+U31,?,_A*.+NHM%KEGS7=3D&G3:LB
-M-,4YC;&L(<HV$UCX5.F:1A*W1D at .!P!L````;`````(```!%``!H3PL``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y98O+ET4J,<A+?&4ZPUF@;RX@)"`````#````
-M3"D``#!.=3DK>2K+K!;U=3D[+%)Q`_)T#WC8N at -=3D5%XQPZ??5%(%-[*M%=3D at 6-F=3D^
-M=3D>A`*$82MT:>*P<`/`$``#P!```"````10`!.$\,``!`$0``P*@!`<"H`0(!
-M]`'T`20'"66+RY=3D%*C'(2WQE.L-9H&\N("0(````!````1PA``$`_5][=3DCL;
-M<@,FO03$!<2HJ`'5&;[F7PB]</U0M?TYA]?>.XC'=3D*[(,/0Y4]C,NF6I.K<<
-MH9]OAK(+[RXUCL0I<W/!/JWZZ42^%.MD7I=3DSOM:B.'/R?IKBPW`:9!-)>MX,
-MQ:`\=3DXV>#DG;KKFQ[#MQ>(C![D967<::Z7^&>VG#:O]:*>CG*0O=3DW04YHOS1
-MK\@A)9XE&OE2TVL,KI!U#375F5 at .;Q"`VF->B[O).<IN@!TOZ!PE_5CPF9B=3D
-M6B/52R7A?#I'HZZ2`0KC(,7P]BKWF at VCC(K.K'0`^?<7A^'::0:H((W7Q(#!
-MD9Q%^PB`H`EQTU1DEAV/8I0QX^[K1A*W1M,Q!P`<`0``'`$```(```!%``$8
-M3PT``$`1``#`J`$!P*@!`@'T`?0!!`?I98O+ET4J,<A+?&4ZPUF@;RX@)`@`
-M```%````_"$``.#H;1:WNUI#CZX?JLB98-*6YGJ%'DEIF=3D1%&X_;[7:^IN9[
-M):$U'.[JDG4)#DO&4(K69I3-WJ'AZC=3DD%\1-E.R/P-;UN0Y0ASDSOB"@\6,^
-M_$V2OZOM3A26?`U$,MYJ1X(ZQ^-M+VP)`:V/=3DR4W;48G7P>E**JI(]LH%M"&
-M$Y>S(.KSQ%92>L)=3D.=3D2W"FOR`1>):N'Y%;FMOMIK[7(QS^LRQ;>3P"J%3[KZ
-MXVB\J:#2H]56+H1;(_R>CN0O4F;GQ(?3@]R9A9:\4=3D';%Y&6X1<OX,?=3D.XQ%
-M1'E!9M at E1A*W1B)'!P#L````[`````(```!%``#H3PX``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y98O+ET4J,<A+?&4ZPUF@;RX@)"`````$````S"$``+`TI2(I
-M;P#=3D5$`S^JL;#1WKYO(:*DUFB8?T at O)J`VG/P+#'G83UYNX6):'9&]4R"S]C
-M1B5=3D6U9L_IX@:^'*E.J>;:\O<!SXD%3((O&?8N11Y&5(HBT.O,X4/^;;BT2]
-MV(%?JBM`;"4JFL2C=3D.=3DV#UO-#<C"PM&58.>3$C*MSE8WTN+[W at H6N]DW_"6W
-MTXJJ=3D-IK]B#C%0?]_5V!SUNLZB<I8Y_CUE7]&2>'4 at C_1A*W1G5I!P#L````
-M[`````(```!%``#H3P\``$`1``#`J`$!P*@!`@'T`?0`U`:Y98O+ET4J,<A+
-M?&4ZPUF@;RX@)"`````%````S"$``+!#1$+2O4LD?*IE:G\A>R`,6F%#7!HB
-M#QS0.4SQ-=3DU?7\;U`C>H?:9$)$UA5Y-2P%4DD8(>PI\[^_)3D4FT5S]74]XA
-MQUV(E8Y;P?#+VJ8\Y*H\111B0K1]5X%$<,\;I.Y_7FQTI9?RP^BZ:$SGCBI!
-M31IOG*/$T_9\P=3D5<!)C>!`:CD6XO&[Y%FY[<^X(?`A at E4^-]<)^$E-C`WB1V
-M\T>Z/TJW''X1KINJ;'#]1A*W1N2'!P`\`0``/`$```(```!%``$X3Q```$`1
-M``#`J`$!P*@!`@'T`?0!)`<)98O+ET4J,<A+?&4ZPUF@;RX@)`@````&```!
-M'"$``0"-KN&`9+Z0?\AM%AI9`O,NNG!1):XWGMW"M5Z*,:!4(PZ\4Z*M"K+3
-M#XU)K`,_JP[T(OB&?]Z1#,,!\,#1YE0@>H0NI2KS(+V?V&#WI5&W-*?O?_:X
-MS`3\DV#@(!>E at L=3D)%,#S]9>?ZU>#@%.+G4=3D at -T1&K&@B_[4'N8[)'U/$:'0J
-M=3D7`$44]*ER"[1P3$- at G-F(),^RG21DMNX at _YJSM5-"KLDLIX$<2W3*(#ZZR)
-MAG%N&]/8]W7O!8"F1/]?6*)TRB+335%X+\*#`CCPQT[$=3D*V_C*_9@>G8N;_@
-M2Y"FP`?3IR)+$7>EIJ0+G\#L5+4F)!'CUGWH8XIJ?*5&$K=3D&,Y,'`!P!```<
-M`0```@```$4``1A/$0``0!$``,"H`0'`J`$"`?0!]`$$!^EEB\N712HQR$M\
-M93K#6:!O+B`D"`````<```#\(0``X/EKQ-ATQ#M'*-C\C#M7M33_B]*D?5^F
-MNF7'8`2+34&`<0(/D$W?7[D6-E!GUQB[S%CUN_:GU\<5QG(TD(A.QNG5^B/Q
-M#Z1"`L.O9!]G@[<>_<-&QW@`$%Q<GLL%A%$%X at B9.[9NO%=3DMB`<?X8VZX2,@
-M`@\$_<MY6SH(R7#*4Y::.Q3Y;YDU)Q&]9RV0F*G2D,2'@;6M;V5IMS%XP&,L
-MG%`MG:T`6/:U0:I_6J_;[%[+EU]V!--5$=3DW_T6I>3XW(_^.^8G3*7/#VTI%_
-MA*9K7-R(9>86`G#$3^[-8K!&$K=3D&HZ('`.P```#L`````@```$4``.A/$@``
-M0!$``,"H`0'`J`$"`?0!]`#4!KEEB\N712HQR$M\93K#6:!O+B`D(`````8`
-M``#,(0``L(5;"3*$#]*K3L5_'L.2T!\8J7K]UTIWL&M:*`S0(^&46_\=3DN&-6
-MT=3DMB>LXW,01&,IS>1^`T(V^;8<LU+;4Z\N84&B#$F\Z'Y"4 at HI(6(\\FUX?F
-M?4 at VB&<(4))>HV@!Y>W!1KCH?N.8EX*.^HS31!+"#Y`?:+($8S>ZMQF`37SH
-MI\;;%''),A/6+F5L&-]T_D>-"3I`15GV2C<^^PXMABO.&<19&V])O%Q:RZI&
-M$K=3D&8,4'`.P```#L`````@```$4``.A/$P``0!$``,"H`0'`J`$"`?0!]`#4
-M!KEEB\N712HQR$M\93K#6:!O+B`D(`````<```#,(0``L$57M.FIA`#P1LFM
-MC*<6SKBN$2(;*>MG at B86(&@.H, at 7NZ>=3D:B6.+Z_?6QN]+Z4RC`_]E0*6&,[]
-MSJM/=3D=3D\E,BPS:?H-\SC''N%[CAKR7ML^,'Z.FC**<4]29,V"EU1L!5Z4)_R?
-M\<CF\.IS__S2F.:J43=3DI;1I&B1 at Z7J/]C]B`9;=3D;D0S5]%):E2A+=3DMYZF'C3
-MG[9CJ3L!M<%>)%P9$]2;"-C44P;,?@I,IFI&$K=3D&4.L'`(P!``",`0```@``
-M`$4``8A/%```0!$``,"H`0'`J`$"`?0!]`%T!UEEB\N712HQR$M\93K#6:!O
-M+B`D"`````@```%L(0`!4)1E]-AQ9 at QA-12QU4_2'M0P("4',1MAA%"'397(
-M5"[M"\LS>OJGAQLH3FUE1&+6FJHNE&@2C<BUWO0"%(!80`%K3IJ4Y<P9RDK>
-MYG at 2.C3HZ=3DV<I+Q1;L2+FJ0"?B>09QB^0'W"SP2-GC!U?Y2HI*)5:J[1<QGI
-MK34S:))ZG`V3NF2J+=3DO3-.2$\P.D(HF6/+Z33I<SB#=3D>!GP)O($:P+__W7QM
-MJ_)(S=3DSR9%H)8AO/JEY0U5$=3D38_.0_P(1672&?%UH7J>5VH)AN&%J5H9R1+B
-M=3DV;IBH?=3D*%TO0P`4@>=3D at B(E'.SPC]](K^R:`J`]%66.H*7=3DL9$_4&U#)S7F,
-MOH`45V4Q";!\/S]4N6[.HJ=3D"(*0;[K0(OFVP19T&`]Z2HU^QIQ&3<WA^]/73
-MHQG*FX<Q(E;9'IAG46N=3D<=3DXI__U0`#DO+0H4J>-RD<(J1A*W1K,?"`!<`0``
-M7`$```(```!%``%83Q4``$`1``#`J`$!P*@!`@'T`?0!1`<I98O+ET4J,<A+
-M?&4ZPUF@;RX@)"`````(```!/"$``2"L+DXE)=3DQ1<\G72S+1>?]-(CYM;`6O
-M#W1I/XRC*;TD]G<1*;Y2IT`%@X>W/78$K*L0U72BF,;;$O.2'AU;R0R]7(&^
-MZ-0&H,P:#U'L4YV'\=3D=3DO.NV^*M5JPEL(UE[,[C'L-42,49_P+1R+.,!=3DI)I4
-MX*\_?KHG\?#^-5N-^U:$4FD3+&[_^\"$PAM/#A,I/)K)$XQY6-)B>J60W1^)
-MO1($::4NJ[QZ_/$YM8D7['Q4OF>JX/6\KXG!I]=3DW*)X7PCS<#6EI"<^4$]D@
-M7/S.ORS3QSMK3LY7`&JO"^3##R+248:V<@ZQ,!4$S>,\%M&1EG:FO^G+;(D#
-M]$S=3DRMJ([ZJPEKI?Q!,ZNWB8(P<VBHTTB8RW?HYVQKD`@4M_;482MT931P@`
-M?````'P````"````10``>$\6``!`$0``P*@!`<"H`0(!]`'T`&0&24.$/3<P
-MW`(GSASO!(E]I!\N("4(`````````%PJ``!`O*)D,/39"#<[DXH_D"0)UIU9
-M]F8)W$T-9]^M%1QS",JAK1>[M]M`2^O-\<+?S3&Z+!I!<JE&G-.ZT#7;1A*W
-M1G!3"`!L````;`````(```!%``!H3Q<``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M0X0]-S#<`B?.'.\$B7VD'RX@)2``````````3````#!$XO#6U%(*%$<'H=3DX<
-M<H9(KA:;03!",OK,OYRFO->G$A:04DX:LI^XVO+UNT82MT:/8@@`;````&P`
-M```"````10``:$\8``!`$0``P*@!`<"H`0(!]`'T`%0&.4.$/3<PW`(GSASO
-M!(E]I!\N("4(`````0```$PJ```PO^X?7LMDNY7O_G0$]C*^4$UD_E#SWTW0
-M.$Z`2)3Z?$[J4FN_CB3V]G0:=3DRM&$K=3D&?&\(`&P```!L`````@```$4``&A/
-M&0``0!$``,"H`0'`J`$"`?0!]`!4!CE#A#TW,-P")\X<[P2)?:0?+B`E(```
-M``$```!,````,)\*IVPY?O=3D48:]PLR-BI$W(0][Y$F6-(OHI62J7P[<:S7[%
-MF<\*N)FNJOQL1A*W1JQI"0"8`0``F`$```(```!%``&43QT``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEBK\,5#.L!GP``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``7T/529F6!768S.W^
-MF#7-=3DO7.M*-&-E;CDR*MV3=3DJCGSQ_N#=3D+=3DM$6O0_MMA]MHO<JPB*7YO4]<$0
-M11B[7=3DGO['Q><<V`2JE"!A@')70S^)"93-G1/@6++`$^RASKG"N+HG3QM5.H
-MY%B;1`2S]RV5JW5T#<^?3U2F*`W]:^`?`&LI```D@/@P"CO[(W=3DWY'%N^;AT
-M&#O)50E!V'6KR%&^?RI5`K0I```<``!`!,TRYI?-[$MLYWW<+V$T4=3D1"=3DO3*
-M````'```0`7S9S=3D0 at Y@B\0NGFPWW2Z3VWVHJ&482MT:&>`D`7````%P````"
-M````10``6$\>``!`$0``P*@!`<"H`0(!]`'T`$0&*8J_#%0SK`9\````````
-M```I("(@`````````#P````@``!`!@````&0._P7A^.810S.$RA"D$1%DBRW
-M<$82MT;;APD`N`$``+@!```"````10`!M$\?``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A8J_#%0SK`9\```````````I("((`````````9 at A```@``!`!@````&0
-M._P7A^.810S.$RA"D$1%DBRW<"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``7T/529F6!768S.W^F#7-=3DO7.M*-&-E;CDR*MV3=3DJCGSQ
-M_N#=3D+=3DM$6O0_MMA]MHO<JPB*7YO4]<$011B[7=3DGO['Q><<V`2JE"!A@')70S
-M^)"93-G1/@6++`$^RASKG"N+HG3QM5.HY%B;1`2S]RV5JW5T#<^?3U2F*`W]
-M:^`?`&LI```D@/@P"CO[(W=3DWY'%N^;AT&#O)50E!V'6KR%&^?RI5`K0I```<
-M``!`!,TRYI?-[$MLYWW<+V$T4=3D1"=3DO3*````'```0`7S9S=3D0 at Y@B\0NGFPWW
-M2Z3VWVHJ&482MT;=3DJPD`4`$``%`!```"````10`!3$\@``!`$0``P*@!`<"H
-M`0(!]`'T`3@''8J_#%0SK`9\CPJ+#B##+]8A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``".6C:1#W!7:0L1RW>S,M=3D9=3D3S(.'B[4AN;QG)K"P#Q;!L'.);A"D$0S
-M/3`9',J<.\\'Q'$S:,B/&;1<_;`P:D\V13,/PELZ$=3D#T*/3!$A._)T3+?[[O
-MQ'+B6#5$U[0]^.)D(?K72I`&9:@>WG;5-!W.EP6;LG^MR?_RE+M0$$"_*0``
-M)(C%/7T_FUE..V+J7A4!L+[&OD8'X%CYJ&1\L#"ADDJI*0``'```0`08;T*D
-MI66!`&:O3&1TM\#G[J+2$P```!P``$`%W>MP#(4GLZ!%FU9ILG(_+_"K>NI&
-M$K=3D&X=3DD)``P!```,`0```@```$4``0A/(@``0!$``,"H`0'`J`$"`?0!]`#T
-M!]F*OPQ4,ZP&?(\*BPX at PR_6+B`C"`````$```#L(P``T!)8DVNU6(1+HVU%
-M:BW\/,7?.52L>\\H])QPH-.]=3D/=3DP5>\0:X#NO=3D+/0B<*SP?8R.)%]!P_5T4R
-M7Y3 at U[;O^'1E=3D?H$Y)8MVU!=3D[C[:T612SR)4N_ZF.E[.3!V_F8^$Y`/&%KZ>
-M6`E^A:206JV%M30Y35H*2+23E`:3135*I!V347'-PW(HEL+")B_I7F\+,AJ/
-MJ_'OQ`6)4NK-IVU"./R^D!+WO=3DY7]>VT-75-,EMX[:P>^0E at 0!Y5O-*`+#B3
-M_M;PSDMDX+DM0H?@X$82MT:D\@D`O````+P````"````10``N$\D``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B8J_#%0SK`9\CPJ+#B##+]8N(",@`````0```)PD
-M``"`PG270Z0Z/;0UV,&L?H83>]TR<POVF4G5N6,VWWO#[5\>J4+N\SQS__FY
-M(NYQ0EXP-X]B5BAH&- at 1YB%EBHF[BU94_VGH;&#+L33K=3DZ$V?%QK5!9^XP;,
-M7(L9BF?;!JK,*DJ)>6 at 79]1!OO%6KJ0+:C`QX20PKJ).C7Z^,D82MT8^$0H`
-M'`$``!P!```"````10`!&$\E``!`$0``P*@!`<"H`0(!]`'T`00'Z8J_#%0S
-MK`9\CPJ+#B##+]8N("0(`````@```/PA``#@GL>1Q1_L\$)3;UI:+PG%Z[YW
-M1_SHA+0322!A>I&%\V?X7#_"G&3F_;)!9AIYGPA[6T-('-OC^EOZD]]6G3P9
-M8<X9,IO\;>&L2^%.-&/BA6W%D7X`4((L4+KGIHOK!6K8+!GZ;[?#6NPM=3DI<6
-M=3D-9H_ at O9*58;]`EG,N9]ISN`'$3++ at H7YQ*7F(D`YUF7W&"PL?Y/U'#`#ES-
-M%0;.2+X(703!LJ(M?;K1\<2S$`:7V)G(!\NI6\4`+V1VJ(>:\C"7Q@%C3=3DUF
-M*MX*VRD]=3DZ"(/Y5]MUJIAA!)!Z+L#$82MT9B'0H`_````/P````"````10``
-M^$\F``!`$0``P*@!`<"H`0(!]`'T`.0&R8J_#%0SK`9\CPJ+#B##+]8N("0(
-M`````P```-PA``#`YLLT"OVPO%W%V-[<51&[- at 497'/`)+0P'"D<`/^?*O/U
-ME_J[,6YFG>YB1[Y,18I+BLTPKS'Z*-O03II3GVG4<CAUW2BM_EQ)2"8YS]Z5
-ME.5.."TPYU9=3D,M-0K"B\X:!HZ*"E,L.&NXJZ.$LQ!(S.,Q]TZ\$\.\+#%6=3DN
-M:6I2TQ\9;`#N)\7MN^Z89#`?PR37+JE9_3U+F_+PVDA[(L9^12)Z=3D'3'*ETN
-M+221/+O=3D3]`?^6J/:VP.B:G"MO-&$K=3D&WR<*`&P```!L`````@```$4``&A/
-M)P``0!$``,"H`0'`J`$"`?0!]`!4!CF*OPQ4,ZP&?(\*BPX at PR_6+B`D(```
-M``(```!,*0``,(73RJY9=3DW:]6:05C$U0YC/$#-`98B7"Z"7X_E@)0AC!R7U@
-M:Z-:=3D`?JAAD=3D1A*W1LE#"@!L````;`````(```!%``!H3R@``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YBK\,5#.L!GR/"HL.(,,OUBX@)"`````#````3"D``#"8
-M`B+T`SJX2=3D+G]!UV]R#ZZX`HHX!QJ;PL@*\9UDWY:,;25"FKM;!V#E<9,482
-MMT8+7PH`/`$``#P!```"````10`!.$\I``!`$0``P*@!`<"H`0(!]`'T`20'
-M"8J_#%0SK`9\CPJ+#B##+]8N("0(````!````1PA``$`- at H)62>7C)K$&Y-U
-MBUM%4S4=3D-U""N6V<G,/XIF=3DZ88XWD2-Y)=3D;?J]0G$/X_LVWPB at __5&PS[T;:
-MX.#&(@&?DW'TI><M%Z1HEGD8V6/8Z:?5%?$./.$HN4=3D+\1@^AK.:1KJW/6'1
-M58X(RX3/CA-R2M'=3D[W-%."CS&E%<M7U%!Q5-G+O]V#D]'O92YD=3DUD!K>&.([
-M*I"@3-:,PFS;FG!P*0M,#N,M1\[7`3A#4VCHY@/*<N+)&@D/;63O:$T[C`LL
-M&X4+BC/T2\J_]Z/BN]K:M#JI)F8_Y*WQ,-;YFG%L(?6'SCCR$GU1 at A'@&1`T
-MO>-V_ at .^*G$0F1F<6<8/1A*W1C-K"@`<`0``'`$```(```!%``$83RH``$`1
-M``#`J`$!P*@!`@'T`?0!!`?IBK\,5#.L!GR/"HL.(,,OUBX@)`@````%````
-M_"$``."U4AP4JFJ%<'EX>3,#"'=3D9K%HL::QB_4]'-*_<8SG,X]*:[:E.7WFB
-MJ/SI>&JPA9:&[.[$+,O8%(?N>XNYIIZE58_BM#MD6V](M!2(#/V_S'[6 at D'\
-MF-=3DPM=3DQ_\N?<*B+!23`):T,R2P,3HB"O9D;5-+K'*K%L<\S0M[A6ONM4=3D[QT
-M?`.BA)$M'L=3D=3DK`$FY?8*K]<5`K1I4+#I[KC8UBIVF\,RE/6"96/P35Z(TRP"
-M;HVP:^69YLMIDTL6LBZJ0XA^*98MH[GF]?WVEM9/7 at O1WM-K0-#08V^YNK8:
-M1A*W1J=3DZ"@#L````[`````(```!%``#H3RL``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YBK\,5#.L!GR/"HL.(,,OUBX@)"`````$````S"$``+!]#.Z6(!1.?-X?
-MD6.^W=3D4V?CUZPTP=3D at A/I2BRY0^<E<*"GVLG:B/R2 at 5/\GET1HAVOGMI[;U;$
-MFC/,=3D3`]8T*X+$\(WYG=3D!'PM+"M(W6]1+8YRN'W6M7P3*>=3D]KP4K=3DA.1_HT$
-MFTB:I%/;LM;.].MNBEA7D/=3DZ)H4V1[[6ZVR5?+GR<#F*8`PR_WYUN.%/M,G@
-M:^/X_TH.$EE4Y*VK^416I&VKK at GKAZUQ)&,_1A*W1AV=3D"@#L````[`````(`
-M``!%``#H3RP``$`1``#`J`$!P*@!`@'T`?0`U`:YBK\,5#.L!GR/"HL.(,,O
-MUBX@)"`````%````S"$``+`EB[1RDK-Y3T0.6S>;E55&![V0!\;ENP.^K!`J
-MRV;SD,UK)YMU#_#J9*L$8>H12YULHBI>?8")#6TC#7<]YZ8R5Q^OAM#\B7*=3D
-MROQO!FJ#U`-0A>"?H%:5!*.LNV at 4:T:[ZTNK-*AK2ER':7(DS_X%\?-(BW>/
-M^89JK3R`T0D0KB1M&P4"6ON\3(BN[K3]E6'@A^M\@(+*3#B';.]NNN;Y<(>@
-MX^[`9I[FI33$1A*W1MZY"@`\`0``/`$```(```!%``$X3RT``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)BK\,5#.L!GR/"HL.(,,OUBX@)`@````&```!'"$``0`1
-MTC&!MI"F6:[<X:_"[1V5&W;V?%*^RX3,SO&:\"73+I"N?I[FJHQ+3HZT]RP<
-M?31L$!$+OE=3D*LAGE3<Q`X6['<G?F-MD:U(N`H8FECRGW7?F at J$B*NI1>D4+4
-MZDYE?L#7_Q4"LIE)O1^PQ3Q#^EE^Q2N7.QW6%I$8<8VOT\[/(UY,C7H#6=3DH9
-M]<@B=3DD/[B&$4R^%+@^OUZ)LJ`*B!F[,1`G87S3\4ZJ966*TL1">Z?SI2[A;'
-ML7($K</1A4TT<;UE^VO-N!J[HKD]O,E>#P:D,%RE7OF<KA`&R"E:$?_T,K\%
-MB6C:L4_-@=3DYG!'#4`ET205Y`Y*VEX>?ZLCI&$K=3D&;,4*`!P!```<`0```@``
-M`$4``1A/+@``0!$``,"H`0'`J`$"`?0!]`$$!^F*OPQ4,ZP&?(\*BPX at PR_6
-M+B`D"`````<```#\(0``X+%IC)'8H#Z.!'=3DKVEJSV4LPXZ=3DMK0PE8_#A$<<B
-MT\?;ED*XZ83PG:WG0G,%CXHO?/"5U at +=3DI3O-)@Q_&J_,J);S`WJ6L9?-^RL-
-M,"T:L87IJ!"7]TFR8/_[]#M!+"HXV-,MP#):=3DU\A at 5Y!BP75PU:52ID&:S>A
-MZSYT)KEX<IN1269I_\G.O338?8"DC]KTBG=3D]H:4S3Y(5Y)/KN>:I&$#R9L')
-M8>XK<O;)X.A>Q^):]^/&HWODGVHG0"\Q4=3D71;7IR$YX`+/YD-B;C7/8!,-G/
-M$5^:E`'6T%KW,UM&$K=3D&GM4*`.P```#L`````@```$4``.A/+P``0!$``,"H
-M`0'`J`$"`?0!]`#4!KF*OPQ4,ZP&?(\*BPX at PR_6+B`D(`````8```#,(0``
-ML#(-15"G3$U,!\C^9B&7\ZVM7WHSY/E:T#W+3BO5A;A<%X,;<]J:]N8:J=3DY:
-MR]2`MSH>PEA\L=3D#5CS\)Q#8G(;O8>_,J5QYA]_VZU7_>O<*WS<CGM!3276%,
-MI0T=3DV##$[D"X57_C^*COJ[VD@,I<[\'])O.A8*L]X6Z3\=3DW6.XMX7ASPB.!>
-M;#2VHAR6JB],J>IW0+EC3K`B:+ABVFKX8BH#S*?WOUWO'D0C-R-&$K=3D&O`0+
-M`.P```#L`````@```$4``.A/1P``0!$``,"H`0'`J`$"`?0!]`#4!KF*OPQ4
-M,ZP&?(\*BPX at PR_6+B`D(`````<```#,(0``L%S>.VA>A&<A)%(^RV0<)WCX
-M(#I9CXB,9/N2\#G:0594R][I<4I73T/241\SDK@?/(=3DXB7%?V12>IU:SS<]V
-MJ?X7-V&GJJAGA.8/O2WO%^B&2>FP9G[F]4:^+E%UN5[)8&9HX4VX@&?Q$+!N
-M9,0T'#I6=3DN2`-MN];9,=3D]SXI2/=3D`DSMHW7T'WAJ'Z/7;34I7,?%!=3D at EJEV)=3D
-MF]GI+'7/R6P[/6/VXT&=3D<D976Q%&$K=3D&8BH+`(P!``",`0```@```$4``8A/
-M2```0!$``,"H`0'`J`$"`?0!]`%T!UF*OPQ4,ZP&?(\*BPX at PR_6+B`D"```
-M``@```%L(0`!4+^1R)\#9D/[ZK at .'7W2N;4<RB4QQ)_7^#)_HC*;#<4;06 at M
-M6A&V:V2=3DU^&G)EOL at 6=3DH[H<>*U::US(-BO81U!'78%OQ5U2^XXVOG%\=3DX6HA
-MY!;2=3D\3*^(69373IY:'Z\8@)''WF(`$,0<?D+9RA68U#'D"2$!*H!.BQ.1QF
-MEI=3DG!B3U*Z1"V'U')>3C.D7G3FL#CTM*<DNLA5]L$#.GR;4/*63T_G-Z256/
-MHXT!#:\<%H>V3-W?$3)7\#0RP!M at 125^>X2W3CUL,2_;P\8LJ9+`6GH<X/%J
-MMKF(]H.B+H`DR!P at JG&VLBGJ/GKR"M"W!B_#[8+"K/I!^CJ,8(MD)_$E1MQ*
-M"E.7P&F=3D at _232\I+[$_@>/T8/OW"R\[!D!#??<YA;!1F<RG%!-\T84"WAJ81
-MQ#P0OW'#T4DEK7+$4:[*F:M8#=3D4H^I'<^7R<1A*W1IA?"P!<`0``7`$```(`
-M``!%``%83TD``$`1``#`J`$!P*@!`@'T`?0!1`<IBK\,5#.L!GR/"HL.(,,O
-MUBX@)"`````(```!/"$``2!60/'%'YW)Y_&IAMK_*+X"6N'&16<Q+,%EEW*C
-M:G,"3XX;<:Z0 at KAO3LPU'5/D;K)_2GJ&0QJ,B[.`K>DMLS>'LQEY&0HX3S:%
-M<T&%/NG2W$.<H44CS\^,<'HL at K\6C]-:0%Q0Z^T2>7%)=3DN@<DLKE*^(L]PCV
-MBDNWLPYF"(=3D^A%_V_W%&ICKV9F7*QFM`UXESE/:&NTANWN-^`VG`AK1.(PP:
-M7")*FF?@J6@<;E,-M]'\+S@#P][;3T(Q[)7<^E_G68;MX%N_%0K1E5,5?Q5@
-M6-P\*Z^`25-*Y`9ES+F\D5Q2<KL^6<6YX9:7%QY^I0)?*;4I``D"#M)YM5*S
-M)^=3DSDF_P.P:D!Y`;^5_N?NQD);J-+0FDZRNUFNTHFT82MT9<A at L`?````'P`
-M```"````10``>$]*``!`$0``P*@!`<"H`0(!]`'T`&0&20O&Z)-)-WMBVDR<
-ML8VOM(<N("4(`````````%PJ``!`$#'M29YS`U6)X9[%2_I.4NBOM-R_,Q(I
-M at 7I[6O8L;ULSA%39NT7DA6J6W"3N<*5CTC7&^GO>Y7_D;@2Y1A*W1K62"P!L
-M````;`````(```!%``!H3TT``$`1``#`J`$!P*@!`@'T`?0`5`8Y"\;HDTDW
-M>V+:3)RQC:^TARX@)2``````````3````#`AFSRJ)JM*X(D$XV;E+]FM/H62
-M+Z0PR at J,H_Z/KM*'S\PM+M2H$#\(,K(PW482MT8$H at L`;````&P````"````
-M10``:$]/``!`$0``P*@!`<"H`0(!]`'T`%0&.0O&Z)-)-WMBVDR<L8VOM(<N
-M("4(`````0```$PJ```PXTQG-'4N"202CM3[/[*L3 at 07:U7[+"L=3D0VXN'.(,
-MEJ`/K'L(@VPP*NYDR6Q&$K=3D&$*\+`&P```!L`````@```$4``&A/4```0!$`
-M`,"H`0'`J`$"`?0!]`!4!CD+QNB323=3D[8MI,G+&-K[2'+B`E(`````$```!,
-M````,"=3D5TX/YIWLHWWYLT,/8E:K]L3[[:MRV$2_,A[L]++4&<A(QWV;*'G>-
-MSIGM1A*W1DBK#`"8`0``F`$```(```!%``&43U$``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE>,:-I*PNC;X``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``HF87 at F;YC$AP/A0:L>F9[<WP
-M2?,EW2R>J7+R'N,-:,%%P'Z+A`&+(WUJ3AN<>8D4#IY4Y*PT^Z<]/'TABHF=3D
-MW(?CGXVA$K]%7H(!JL3HL:8$`D&K=3DC%)>8]ZXQ7?8LSF;UJ<G:6YMS'-%L,O
-M9TN""`[<=3D^FS5-U,S<./G_A[%H8I```D9.34@]B!098WP*PI'D<@,;K at +56U
-MJ<EG::"^XK9MG'HI```<``!`!'O6"QPPO5TM,[7=3D$59 at P+LUM8C'````'```
-M0`6;K^\!D;/DH"[QV+S at B,3*X`-0[D82MT85NPP`7````%P````"````10``
-M6$]2``!`$0``P*@!`<"H`0(!]`'T`$0&*7C&C:2L+HV^```````````I("(@
-M`````````#P````@``!`!@````%8FU4>0S(5P7Z@`,(F at Y<X&+):E$82MT:J
-MR at P`N`$``+@!```"````10`!M$]3``!`$0``P*@!`<"H`0(!]`'T`:`'A7C&
-MC:2L+HV^```````````I("((`````````9 at A```@``!`!@````%8FU4>0S(5
-MP7Z@`,(F at Y<X&+):E"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``HF87 at F;YC$AP/A0:L>F9[<WP2?,EW2R>J7+R'N,-:,%%P'Z+A`&+
-M(WUJ3AN<>8D4#IY4Y*PT^Z<]/'TABHF=3DW(?CGXVA$K]%7H(!JL3HL:8$`D&K
-M=3DC%)>8]ZXQ7?8LSF;UJ<G:6YMS'-%L,O9TN""`[<=3D^FS5-U,S<./G_A[%H8I
-M```D9.34@]B!098WP*PI'D<@,;K at +56UJ<EG::"^XK9MG'HI```<``!`!'O6
-M"QPPO5TM,[7=3D$59 at P+LUM8C'````'```0`6;K^\!D;/DH"[QV+S at B,3*X`-0
-M[D82MT:,[@P`4`$``%`!```"````10`!3$]4``!`$0``P*@!`<"H`0(!]`'T
-M`3@''7C&C:2L+HV^`)3`IJ<I1O\A("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``'%P
-MK`J#F]L&3&,-D_P]IF1D\/+MY[3`PI9AL11PDP/4T^QK2<%XBOQ`_-9>EF'$
-M^VF3&AG'X2:SU&F3S:ZO"C.B86\2]+G>LBY6Y68-;7G=3D"D;KZ=3D[@QN3D;&0X
-M.G9Q:\:NR=3D?()]D29ZU=3D9P4ZZF2%09?O9\<\)H?[!WE<JOOH*0``),AR(3!7
-M'G'L$!`I(`K-ID]4DJ:QXIMH)VK'MS$\T7^\*0``'```0`3^5R%Y-QMRPM0K
-M`M$IP<@FG"@R3@```!P``$`%_=3DZ:]R8J&1)KD:'*!*3=3D+V2'^<E&$K=3D&`1L-
-M``P!```,`0```@```$4``0A/50``0!$``,"H`0'`J`$"`?0!]`#T!]EXQHVD
-MK"Z-O@"4P*:G*4;_+B`C"`````$```#L(P``T),O=3DD;6#O22*1FH7%0, at P&>
-M"M9 at TCA[SNIB71H/NKE4<#[%\#-TOG9CPC97<(V[1:G'#JB'1),F()R$AP3]
-MB&5O0H^[8D[XM1G(KD9EUX4'>(P*:NX2E-[^!=3D%:[email protected];9RFYGA>ZFRR7G,
-M4G'=3D<MUI6W!:@LZ>QV61G_NYXLC>\?98TTMCWXC>T$2DNX(CE)\QGTOE68?O
-MURO$9J&G*?06>/Z-Q at X_88>LY#H[,5QLF<*CG_3.)WNW=3DLDO%WJLY:_)HP*`
-M+IS%^FX.GT82MT8!-`T`O````+P````"````10``N$]6``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B7C&C:2L+HV^`)3`IJ<I1O\N(",@`````0```)PD``"`^#JZ
-MKR3]J4)A%W_5 at DPM_+.O3PF7?(!\J\?12HC)%*E#6L-SBPJ"CE,[F^=3DK[7TF
-MM%&?Q at IFA]%ZI'2F"ILX$/^(T><&D%EO6I3"P`J&F3()5J26-^QW!A`%5C,=3D
-M;V%2%&8?)#;PE\O)ACB85=3D:[G$P`T;/+@?*:,BW?CT82MT974PT`'`$``!P!
-M```"````10`!&$]8``!`$0``P*@!`<"H`0(!]`'T`00'Z7C&C:2L+HV^`)3`
-MIJ<I1O\N("0(`````@```/PA``#@(I4$MDNQO>F!&E]/%1O=3DVT30])%(VKEB
-M`VNT68[X!^F-Q3%,-$0>?"?9D)FMJ(Y2;L%;8&PI?^W+WJW-O,65N94>M;S=3D
-M!/C<:\J=3DFKA,JJFJ?:7-I\LYT'VZEQY\,A4D4'R0)EUKBXZ+_^]&#^;!(&,0
-MWDCKN;2,TQ:XS[A&JB`X*)G/1A/J27Z^D64_-&S!E?V#TX_]K!<_UN&^748Y
-M9*>#"?T>C^T#\=3DY[\U@;CT7EFG)L)W6Y2']116FA?`VT#(S)!CK?U]^A+`+@
-M2:/FWO5+C^_]1E30T*\)9482MT;>7 at T`_````/P````"````10``^$]9``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R7C&C:2L+HV^`)3`IJ<I1O\N("0(`````P``
-M`-PA``#`%N./P;O[C3G!S(7WS(K>R#\9]MN6ED`R_ at I"J]H3^?C-#[(B=3D0]X
-M?=3DPS=3D!M. at Y@=3DF3L>C,)3?A-&%"F.T(0D+DJ0)G,\6,^YU'\=3D5<9$NBCVFC,S
-M:<OJ('D6J7;C$:,(G?RF4B72U+/JQ),A'@TRW7."";1KPQG1?V4%IWFIF4O[
-M=3D:6U)9O)15H=3D*G^-MEPY_E#-^R>&NLT"R&26MQ5):G-__:YGQ,SJ,OX?-QJ]
-M.++_/Y4`ICW9/9 at 5P\!&$K=3D&;FD-`&P```!L`````@```$4``&A/6@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CEXQHVDK"Z-O@"4P*:G*4;_+B`D(`````(```!,
-M*0``,$FOU-^5G>6$S,2><72CY98:]JF\R\KM%>6V-(E'Z4#C"/.[GE&?GA`A
-MP=3D>-1A*W1E^%#0!L````;`````(```!%``!H3UL``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y>,:-I*PNC;X`E,"FIRE&_RX@)"`````#````3"D``#!2%Y-2FG?5
-M;N/>8B_ZM3-&G4&&H(W,=3DJ2WMK;"J6A#`!<FL1[@$[^`%!^KI$82MT81H`T`
-M/`$``#P!```"````10`!.$]<``!`$0``P*@!`<"H`0(!]`'T`20'"7C&C:2L
-M+HV^`)3`IJ<I1O\N("0(````!````1PA``$`@&NCNC[C/5-<#&BC(RQ]J=3DT;
-M1K>3-W[.3^9NK8B5+-8/]GHC9(VM/]HYUF:AE8,:>;JG/GKW>Q'$ZS#;Y_+H
-M6&+O6"Q_/?ES=3D^`<M\JH56](IFY3K at 701,:S`5%B8SP6ATG"U=3D9GGY,<U&^C
-MN<%R>YIJ/LB+*KX\[2I/-`8"W9CXLGWV:V`((H[CTX]?@=3DUIN):QOO+AFG.M
-MZ:8#:E&\QT5?=3D\(G`B!@GY-,1').>B$(5_X_QW;#7NZ(F!@;D<W;1AU>&G]&
-M%6%*VU=3DK%A`"2'Z3!G-,/HEJXK;8;'(":K+TI<FTY<3+?/Y9;+EIYT<*<MC9
-M5AK:79?1KDH\1A*W1LFK#0`<`0``'`$```(```!%``$83UT``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I>,:-I*PNC;X`E,"FIRE&_RX@)`@````%````_"$``.#[
-M[NEZ;&-GV^@R*F^;+%'"4@<&]O=3D=3D-+-H$4T$NN8MB.RISV!_RI5XC]#[#GJ_
-M`DWVUZ'HE["6\.-GIH#%&2K7V6 at O.RQ#IZZM-9Z(`?,+4=3DLO/###M1N]L^9,
-MH"$+5VH6XIP[^?V$F=3DCY.T\*RT.Z%]]&R3F>IM'7?4:&8/!'&Y7[I6K15^XP
-MNBNV.HCL)WR-:0RW../T,^D+BV<[6N3O_H//*J5A0N,?Y=3D^_E2,\6!`\=3DC[#
-M:E3GYZ9&60/E\+L]Q,H1I+^N_^K</T7X@%-T:*YGCP6BN_^64U)'1A*W1J.[
-M#0#L````[`````(```!%``#H3UX``$`1``#`J`$!P*@!`@'T`?0`U`:Y>,:-
-MI*PNC;X`E,"FIRE&_RX@)"`````$````S"$``+#$TAZF#8O#Z`H@"24&J8I]
-MPV/IAF(#2B`*?9Z!2Q7G`$BG#@S,#?;S+0`EW$M"XBW&,W\T[1/7[`OPF*W9
-MR9\1*2^U##P)^6.R#GC^N[%-4*&Q[+&*.U2Y*8:@5E`-$@1!]_HNL"(NF)\Z
-M3<EES9H0G?AEDL$S5/0&QFQ7::&0`K:P'8A;05KT8;GEQ&L-MCPZ72DAMP*=3D
-MAG]5Z7N?S06^!^<$_R]M7+DFGT7;1A*W1F'?#0#L````[`````(```!%``#H
-M3U\``$`1``#`J`$!P*@!`@'T`?0`U`:Y>,:-I*PNC;X`E,"FIRE&_RX@)"``
-M```%````S"$``+`CSZDG];+:P at X'.>,;C,R&>HUQK3=3DI$/V1N/`@FF0A(+:+
-MY'$'B5G8ROUW356X>,QN=3D[8@<D\,.UBYW$H_H;,^1]RNYT#E\II8NS58TA;4
-M&.L&;N![GK:FM<UL.]TI=3D2*G!@V594#6@\KGXHS%0/4*5=3D4`JMLZ%XC'@PF5
-M1G at 7UV"#A(`(`&;NL_"@W:TY^A]&H"<#<':2*D(]OB%!.1E._88Z_+%*04\U
-MG[IA1A*W1@'\#0`\`0``/`$```(```!%``$X3V```$`1``#`J`$!P*@!`@'T
-M`?0!)`<)>,:-I*PNC;X`E,"FIRE&_RX@)`@````&```!'"$``0`?(]GJ:_C`
-M5A$U(3#3$<&2T:5BQ*!>.LDZO;.FC5E`3XL^=3D)1E;3'1V"6S'7P#W^(_'E7D
-M(4B?Z9>J`L%2B6O[1W;5M'E$#Y"+X2DVOSQ5%PQ%,5QQP'9NA8/.*,NMG8J)
-MC, at XC$Z):O8-I*B(8O(VU&`_`<ZBAF4_5(P!U"I$7";P[_O!9D*LIL"WPK!?
-MQMGQWZE!SR!K.<#XGZN_IW`>1!9).B">TL,03[6)STWOS$6S`OO$]L:DAC-M
-MN+=3D19F5QOF9<;.VY7U"!>(($*3JH3.R!C6"X3<ARBY,N0!@CF&S7Z2,1:"Q+
-MF?"GL54>D=3D.W$Y)<.?5C&/#J'JU&$K=3D&.@<.`!P!```<`0```@```$4``1A/
-M80``0!$``,"H`0'`J`$"`?0!]`$$!^EXQHVDK"Z-O@"4P*:G*4;_+B`D"```
-M``<```#\(0``X+KK>T-N?*E8''!-[WNE"5K`\K=3D`TR9;M1=3D/26!F,J(=3DR)2G
-M.5JOY7P_7:&6)]>2G=3D_ at MQH:K2!/Z!(7_-G!=3D(S84G!'#09A;Y"@K7?=3D?>-$
-M,OVL%#7#IZY88DX%"I!IQ+)M$-<N9*^`=3D/;^.5XZJ=3DVJU\LIDRFO3)I!S?TI
-M&EG(HN.0*KXLX?,`J!3FX8JJ&]UM\1*(1SS16JS@(VNC'Y&A3>:`%PMJ8E_B
-MO1%KECYK%N9O*@:DLI=3DSI?4NQ0"\M<D2<'7P7>DS*S?,6'^I:25X&"HII`<'
-M?OCT\!5&$K=3D&SA8.`.P```#L`````@```$4``.A/8@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KEXQHVDK"Z-O@"4P*:G*4;_+B`D(`````8```#,(0``L(!UG7.5
-MXX(<P;TFD.V#$?A8M2Y8K9DHQ`YRXCV=3D3;NE:3]5X&5,Z_W68#DJ,#[8ENOG
-MAQ#,D=3D#<`_R$,4/O+@]""$6F<8*,`?8@"]T/4>594R5ZO/8W;T$D9`"BJ%#A
-MD\#V'<L;($QHY&'(B^'C!Y'#E7I*/V4.UL_I>!B=3D(L!3#3Q<I8%IBG%E1&.S
-M at FTJ2$ZF4ZNAW_SUVSE!&3I7:MN:I1EZO6Y_R0!7!*E&$K=3D&H#H.`.P```#L
-M`````@```$4``.A/8P``0!$``,"H`0'`J`$"`?0!]`#4!KEXQHVDK"Z-O@"4
-MP*:G*4;_+B`D(`````<```#,(0``L&-XP5:#MOS-58*M3LH]X6MH7E;__^N.
-ML9\GI([)XD<L&O[#VAX^22#]Y0-.V>?@0,=3DB(,I;KG_B7+[C7QEA#+7W117Q
-M[VS\4NX1W?04>L?:O!0;\\MWQ7BK[91=3D#BS3R:TZY=3DCWS971QDC`!_D1*=3D(0
-MM^*H^_A7`>(E$11$:@=3DR<HP`$E-'OG&KTU?9'!90 at U3(Z\P,F<[>57D<`E1"
-M&=3D!2,VU?+AY17RB'Z9E&$K=3D&UF$.`(P!``",`0```@```$4``8A/90``0!$`
-M`,"H`0'`J`$"`?0!]`%T!UEXQHVDK"Z-O@"4P*:G*4;_+B`D"`````@```%L
-M(0`!4'"\X,$T1])7UK;4V][7\2&+R at B(SAJ=3DMET!*9BV7L:[=3DH074^@98PC\
-M3=3D^'KU9B1%SUA)2BLZN%%$B[LT2R<@"YE$UQQ=3DZVDO;DQ*O;V%0`F#<*.?R_
-MSAIN/BERTRE6)&H1<89)!E)AR*$^1U-YF+@?\,^\:;X\Q5=3DW6=3DNM:-HTFN[W
-MWO,F9&8Z?C)6FGE^RH at +SM&AB:@GXZ#YZLVWJDZA.><"''L at G\P(TBB/IY(G
-M6>J(L9\)6?%^ECIC]-3(\U/%*FGW7=3D64@(I,'9(%B^A)5&E^#%%_8$/!A<RM
-M?X:$2^A,T45%I>KN$VS$HE\B3X"14Q:T$V=3DBC_/LX&EBHC1X,W<>R:.,!Y85
-M][)04M.#L at 0*`J:0R;G)3[%VBL!+G>BDC\/2#+G^AJ9S8]K\Z>VJFNE*+(BS
-M!QA`PWZ_\>QI3'TIV.[`_'2V1:L'1A*W1DR7#@!<`0``7`$```(```!%``%8
-M3V<``$`1``#`J`$!P*@!`@'T`?0!1`<I>,:-I*PNC;X`E,"FIRE&_RX@)"``
-M```(```!/"$``2!H57TP$,!XDJ``@0XE469)#(&R&'T0&I=3DA._U1=3D\BPOKX5
-M*#)#MGQ7,B_95J at 2:3L>2W[I^Q<L<BQI&B8?J7Y*/%,K,Y44+ at QA"TFD:+.'
-MZ[,;^G*[;+$@W2QC0;(SSS-&:CC at DO\Z'`:'"/N59UF39`DKYN\NF;QP51 at 5
-M@,H&&[&3C>^@'B+3CX8N/SX;2&=3D`JI4W"C\C*D$2"B9UB'5D#K-=3D8[Q7YIBH
-M&/F"8IJ?8(+Y?OE%-QI?8(\_%R!V5*)O0K=3D-_D:A0[+*CIYFG*7/2R1]DMT(
-M18=3D87EW!?>RC_"_Q]E'KI#F4X(AF"<63;U70.X!A68BQ*+X&K0X)\F5&(SIB
-M,J\79^E'6E=3D#;_G5+;%^*`_3YB7IZM=3D']D82MT;7OPX`?````'P````"````
-M10``>$]I``!`$0``P*@!`<"H`0(!]`'T`&0&260VPPCZH+CB19L.!]G*5V0N
-M("4(`````````%PJ``!`JWPS>ZIPH$GC/@OGY*:[]<4O$("DUN790KHF at NTT
-M3L4>GII-BOXZNK0"K!G2)WCW\#YHF;G at K6;I)<2C1A*W1@;,#@!L````;```
-M``(```!%``!H3VH``$`1``#`J`$!P*@!`@'T`?0`5`8Y9#;#"/J at N.)%FPX'
-MV<I79"X@)2``````````3````##AC`D)I22?=3DS6>!0!-'&@AOPG[?.%=3DG>OG
-M"AEP")@(RB$HQ8':OLK@*H6V<482MT93V at X`;````&P````"````10``:$]K
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.60VPPCZH+CB19L.!]G*5V0N("4(````
-M`0```$PJ```P.EP*\\B=3D at VT7[ZR@(,_)&6*\;EC]56 at H7DW%;=3D=3DIX)T.D^#1
-MYGS,9.)'"'E&$K=3D&K><.`&P```!L`````@```$4``&A/;```0!$``,"H`0'`
-MJ`$"`?0!]`!4!CED-L,(^J"XXD6;#@?9RE=3DD+B`E(`````$```!,````,'S?
-MH\K2FZIV\4_.5W\>P,ES&/`$N`#8T8Y8;C"R;1EDVMRE*QC`]%E2Y+)51Q*W
-M1NN@``"8`0``F`$```(```!%``&43W```$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MP^0IA8IR2E8``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``E1>!%RQ\3A(9'822&-[[3Y#?@`^TU#.6
-MU[3`VVW0RH]!6C*^B2%1WKKBCV+RW7U"B`87XN,=3DKP]SH"C"TA]<.&3NYN_@
-MA6J`B#.'SWK<185#:PD%L/*374T5SE%%E>.S*2<C0[F$0\K/)4#>0)?+*FWJ
-MP#N!'QXR?Z3EATW+&2PI```D@?/7<NW,4YT6'8`?0CJ"8-O^Q,2$K,8>7#:$
-MY.T8A`@I```<``!`!`)M'[I"YS`<_G95W7.?O!A!3U0T````'```0`7@[]'I
-M[\T@^5+;`[!E<U+[I^R.D$<2MT9RKP``7````%P````"````10``6$]Q``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*</D*86*<DI6```````````I("(@````````
-M`#P````@``!`!@````$.EQ?,V^N_O2-25S7^_J-4$W(CIT<2MT;NOP``N`$`
-M`+@!```"````10`!M$]R``!`$0``P*@!`<"H`0(!]`'T`:`'A</D*86*<DI6
-M```````````I("((`````````9 at A```@``!`!@````$.EQ?,V^N_O2-25S7^
-M_J-4$W(CIR(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-ME1>!%RQ\3A(9'822&-[[3Y#?@`^TU#.6U[3`VVW0RH]!6C*^B2%1WKKBCV+R
-MW7U"B`87XN,=3DKP]SH"C"TA]<.&3NYN_ at A6J`B#.'SWK<185#:PD%L/*374T5
-MSE%%E>.S*2<C0[F$0\K/)4#>0)?+*FWJP#N!'QXR?Z3EATW+&2PI```D@?/7
-M<NW,4YT6'8`?0CJ"8-O^Q,2$K,8>7#:$Y.T8A`@I```<``!`!`)M'[I"YS`<
-M_G95W7.?O!A!3U0T````'```0`7@[]'I[\T@^5+;`[!E<U+[I^R.D$<2MT;G
-MY0``4`$``%`!```"````10`!3$]S``!`$0``P*@!`<"H`0(!]`'T`3@''</D
-M*86*<DI6?B(+-^MH+!<A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``-U=3DUSC(LG at M
-MZJM,:.YL<,XDVF=3D[@0@=3D`-G94$7SV2H9,9!O.N\+C=3DPV:U`<0SY6E9!9NN@]
-M5*0>!#?-CI[Y]*!)]QB`0B'%X7=3D!U``>D$*VORBL,7733T2(XCQ7,F&MS3:G
-M$B"ZKS6A2E-1S5P6M\E\JI3UA.K2??4<IKIR-^L/*0``)'RUTJ212.78J-K_
-M4%PQ7#A!_,FL/%V:!`S*IK.D(@V,*0``'```0`1ARU;NOJ)A=3D1+$4"_-NJ'^
-M-Q1=3D[@```!P``$`%>)>*)9I6H?:!NBFKZ2-HS2:,EWI'$K=3D&71(!``P!```,
-M`0```@```$4``0A/=3D```0!$``,"H`0'`J`$"`?0!]`#T!]G#Y"F%BG)*5GXB
-M"S?K:"P7+B`C"`````$```#L(P``T(2%+V?W8<D<*_!NB=3D"JS)<51_E7<-LZ
-MF=3D+CHM^]0`K>.\7O+RCHTL9,D_[KV_I/[;T-E<>5Z(/'<"*_RSR^0E'*\[\&
-MV6X,:,'?,!5@@X=3DT:P6#WZS]%5P at M$^"8SQRI?F#Q<?D*.4F,5AR*3G\/[4Z
-MB?Y_D)9)FT?OO%*W)0EQ)L]_?M#C</S(MN!>MR,?(W)SZOX\7C92,@=3DK=3D!H[
-MF_GU6U+XLDB%1]$=3DWMZ;7I-*`4=3D38>K\-_Y#<SZ/,P.S\+5.+Y%,`V04<C\2
-M<4<2MT87+`$`O````+P````"````10``N$]V``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B</D*86*<DI6?B(+-^MH+!<N(",@`````0```)PD``"`H:\)XD7N=3D&UL
-M;]"V/4Q/+D\<]/I5W<D[`FA0CX#\R?])LEO*E_6CD!0*G.DS:%ATOX_L9II<
-ME%$O)A9S$RH#I=3DV;&/$/Q*H)8E-&X$G^+XE3$00B])/.EVG+?YJ!SY7V[TL_
-ME3(RCA2#(%[<7E7L2G`.'7V-0>]8.-0RE$<2MT8\2@$`'`$``!P!```"````
-M10`!&$]W``!`$0``P*@!`<"H`0(!]`'T`00'Z</D*86*<DI6?B(+-^MH+!<N
-M("0(`````@```/PA``#@Z"-%]*J)XN@<$YUB7+,HZ19K`CAR[LQ;<BGQ5]/V
-MI9Z9I*0J]P+9=3DC2[ACT?H`V9?%2H#X,A+"5!_*N5-[$/-R;0ZKJS4QQTTZ at L
-M#WG,%V7VT[:FACLM1]145.@#\%],RY;S>L?@]7)R,.YA&K3*&'/7HIK!V'"'
-M&E1E2-WQ(93ND?O2^GA^9^&WZN;6 at 2MBR:NP"N<CM:]!S6"6&]VA at G2C9BV7
-M=3DO"1!,LYHT7LR*^X-C4=3DK\^(Z:P2:K62:$;E95!K%1\*.CQ2/(T/TVK7JLM@
-MUK'<2E#7XS&:`D<2MT8_50$`_````/P````"````10``^$]X``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R</D*86*<DI6?B(+-^MH+!<N("0(`````P```-PA``#`
-ML16U=3D,C%XHC053DY/=3D\<HDO5/(GI31MU0_Q#]NV?8A@^C\Q5V5TNDJ at 9-D&(
-M)N<AR=3DGUP_FLWBY2I/>^$-SZPOR2?:)I0\F'`#299CG26+\3]5R<#1!A<M*^
-M#W:Q-$\#;,,=3D=3D_(=3D'MX,K"+Z#H7GP\H]#1A%Z._BM'[Q.7L!=3D8TST_>L,(KZ
-M""&S$@1`Z%\7<K._+"G([7/::*U1$R9['8&'69SI#I-P1(AN]%=3D)"S7B]KNJ
-M48\@K]>AU.%'$K=3D&O&`!`&P```!L`````@```$4``&A/>0``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CG#Y"F%BG)*5GXB"S?K:"P7+B`D(`````(```!,*0``,`_]
-M<=3D7?X65BJ+O5+4>8!WU.,"*;5\]Q=3DQK'CD\<_:$<V3[,;+9 at .1CD\2/]1Q*W
-M1F=3D[`0!L````;`````(```!%``!H3WH``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MP^0IA8IR2E9^(@LWZV at L%RX@)"`````#````3"D``#`##6>AL?,)^%9/-@!U
-M:"WV.GZT'L,(6TM=3D1X'$(GSSF`%%GZMP/)[[7;L**T<2MT:_EP$`/`$``#P!
-M```"````10`!.$]]``!`$0``P*@!`<"H`0(!]`'T`20'"</D*86*<DI6?B(+
-M-^MH+!<N("0(````!````1PA``$`:GC>G]G5Z>`CNMT)^MA>7H"5ERT;+S'#
-MX(_X!MC,OZJQZ<75SUSC'6)PG:#8:E1:Q3\Z.%7K<W?,:[W&1XJ3@"ZV5-A!
-M5-/U%-4+<;GT,-HS.YK47`+Z=3DE$UU;S32]7B3ZL=3D/Q>)0EW,^;?>G.%2C:HQ
-M$X<<#BD76Q4XGP?DZT.62>,L7@?,B<GQ9;/J`V;1"X]V:VN*4!^YPI%$L$&^
-M-**Z2;_K09.+?L.<)Q9&X%42LRR<('```NVV1YXFA4KQ**HZP2OU&N"5F]1D
-M6H._,HE"#;K%;AXC$BN1F+IDD]E(?P^.0KR0C"N'WU!35?9T%TR\8!)U+;KN
-M6)0W1Q*W1J2D`0`<`0``'`$```(```!%``$83WX``$`1``#`J`$!P*@!`@'T
-M`?0!!`?IP^0IA8IR2E9^(@LWZV at L%RX@)`@````%````_"$``."TZ&9^DM!F
-M/>#P?.GF2FE7=3DZY8:!-0X#P;5OYY@)VH*Q_S^_Z4%>.#-OG\->,`Y(AX[58J
-M1OYS)MW]'XFK_;TA,)>P')V![U;;IHMX!E9UK#N=3D,+(`BB)I0Z>:@`FBR]`2
-MDWZ?PU\2KM2BA"CF%Q,_<1XX9T$B\T]N0JR!6CR:8H\Y:Y,)+V^.!;]&;WX.
-M\2$_ZS<Z`<!+%GNQ2LMAEWK;ZXZE&^\44^TW38-#ICN#]A8=3D0]([3*J^!(@Z
-M&=3D2*_F3S:65\)1$"T(P:DVUS>A.J-^-(PE0ZU@/-]-0#1Q*W1F&T`0#L````
-M[`````(```!%``#H3W\``$`1``#`J`$!P*@!`@'T`?0`U`:YP^0IA8IR2E9^
-M(@LWZV at L%RX@)"`````$````S"$``+#K.7V7]KZRBA@>GNP[Y.H'N[P-]0I)
-MFK$4@:`@%4S at 51_W3+%7ER5TTZF=3D95CK8#(Q7 at H6%N at C$P5(A^J2L:'QJ>UW
-M=3DY7<N"!'8_9GH;F?2S at 79J:19_EC%M;5-7JF49A/(8C%N7^)[3VTZ._3R9#N
-MWOT7_*,WK_#.N;MND90>AH+7@^L7.=3DE<!#C0WG-O.+%I*KPQ@@G$MBLS6>7[
-MF&IARWE7/AH>S?47'25I1Q*W1HS7`0#L````[`````(```!%``#H3X```$`1
-M``#`J`$!P*@!`@'T`?0`U`:YP^0IA8IR2E9^(@LWZV at L%RX@)"`````%````
-MS"$``+#DH at F8YL*EF(0?VQM'#\5FBG,#>_.O6>WWA06<B7Q2M#]ZG_#4MO+L
-M''IQ"N4B,P)NGR5+O@?>2,1,.X4X)IOOSZ\EM!Q-MPADR^TCD?(SLD+,S-C8
-M&[/+(GS_O&F8H]Z^44^^^%N`<OH+3HH^]]5\1=3D5K;&X"3&%GP1IKI54'$H0W
-M:6FG<<0P`_C9(MQ+[*J.Q-F1_R/R,7;:E:4QGS)C=3D9J6OVDDYB29_.F`1Q*W
-M1CWW`0`\`0``/`$```(```!%``$X3X,``$`1``#`J`$!P*@!`@'T`?0!)`<)
-MP^0IA8IR2E9^(@LWZV at L%RX@)`@````&```!'"$``0#!??.(L.!BK"0[%"HV
-M^0)SPF;XRVF:K`5W;!N76 at .(I%O,//\+>$=3D/KFI;U5AB4]"HQ`6[)7>`U at 9(
-M1A'D&UYQ-YDE-(SJW5+D7"=3D"^D"F!X)ERFM7.CFPYG/9$W#*V>,"VBX;2/.V
-M<%["4#66C=3D*VI]"DS"`J(!QK'#8>@Y_. at C)Y;[&M4<X9/60;LK>;.`%4_;CD
-M0VOU3E,G8S`8!?;."Z9-U:,A8 at __"F+BK63%UU$38]PLM)P:YYG^.D3!T0 at Q
-M^]LE@=3D/QM[ZUS9%/[7IG)@-JK4;SUN,^PVG9TV4>*'CPX[MUA?U;R?3%0*;0
-MV*-.^-E.S,#8#5"6W4M'$K=3D&N@,"`!P!```<`0```@```$4``1A/A0``0!$`
-M`,"H`0'`J`$"`?0!]`$$!^G#Y"F%BG)*5GXB"S?K:"P7+B`D"`````<```#\
-M(0``X`H$V$[A[&0G772]ZEP.1TW^4`L#79EE"W7*#I]&?)HY+S/GG%(Q*EM`
-MM8FCA,TSZ*NTE"1;WK7.F6K[&+$Q%LV-*X+:8K/E/G'\Y/403-R+$@Q5&PB-
-M4/TC9@*?.26Y/D=3DG,5!8UG=3D(?P+DC-(')&-M@':X4(AVRAO#M)UR=3D6`N%S:P
-M"GA7DBY#M:$RYQJF^#H2J!1=3D0K)O at 4N,'O[3'":WXC$;!A'<=3D]L5,KZ-0[=3D]
-M>65:O[?HG3BX+_BIL'4);5Q9S4<I#]\"A(JB-S!H4U3--+<]%;BRQ;FV""M'
-M$K=3D&>10"`.P```#L`````@```$4``.A/A@``0!$``,"H`0'`J`$"`?0!]`#4
-M!KG#Y"F%BG)*5GXB"S?K:"P7+B`D(`````8```#,(0``L,%OIT+U at TF9`.D]
-MYF[T;DU]8L,X_Q6KX+;#K#7*#TM\PW[N[5V-RH%\H0M\0ZJ(JS:(S^<)SH$:
-MST%$^1-R\[YC31O(@K4,*@0REYS@*`ZC[-L,G-63$N">CL\1*E3YL^E/1.XN
-MXP141^0M$T->)K;KE[QL`SUFQ3-EF;C1[H38+?@B=3DNH2/KIH2N<%)88!/?YM
-MC1EO#=3DCE?6[KC19T7#UO4XF,>5WZG%4)*V)'$K=3D&MBL"`.P```#L`````@``
-M`$4``.A/AP``0!$``,"H`0'`J`$"`?0!]`#4!KG#Y"F%BG)*5GXB"S?K:"P7
-M+B`D(`````<```#,(0``L..9D,0,^>FR at CWJ&,+)X]WB5SG%VB"4FXLW'`N;
-MPC#4)+.OSUB#&7#'$Z,`!LJ]`.U$!)7I?*A.`%SK+3S1+[[Y2NS[OQM!?948
-M5;!8]5W&K<@3R/,+Q$R3N'AFB1^N.IU)6%"L]&BGY%[+U:RWA[)6 at K/8OT=3D%
-M%'\[U=3D0W/%4?K7USF759Z`+^B$:W9X_.L9X[S40N?U@(]+%/YA:Z#1KW1G"E
-M*Z=3DIE:<B3[Y'$K=3D&9UT"`(P!``",`0```@```$4``8A/B```0!$``,"H`0'`
-MJ`$"`?0!]`%T!UG#Y"F%BG)*5GXB"S?K:"P7+B`D"`````@```%L(0`!4!.=3D
-M'\VMX=3D6=3DA(.P62[WS#S(C@\MPZUBTL^UT6K;A&R5EL=3DQM%^\!#J]@FFP\CVD
-M at GLK6')RS1=3DW#XE4*<K(*%B"UN$V^K1SUN((XLSNHKOJ]H"RXLE1%\1#]Q at H
-M.%!;3X<19H/<R&V9JAGTHZ<%B6O&VI+!/2O/1O0-`8;XS@(W'FN8GC-.%USR
-M/,VS!K'2D]:7F!`M]$&.9\TCF.SAC@#@K9-HGM'VC['3ZF(LDC\0H`[=3D^U5K
-M6B3M+6+CJHR)7;,-K;NJVWW&A14M^)1VF84F(Q8^M_*EZCPZ at +>"*>I<^/(^
-MC3E]S+C:D5]@BPBPE5'9*%$<,1RAWN\JL_`(U@)0?TIVLSCL*FCX"R\ICH4*
-MLJ[WO(\V!5Q#;R%-``V;*:)9:ZV,12:7:S(S.P.$<S0O]//:6'8"308?4/39
-M02*"XL*8"5?,_HJ4PK5S1Q*W1F>2`@!<`0``7`$```(```!%``%83XD``$`1
-M``#`J`$!P*@!`@'T`?0!1`<IP^0IA8IR2E9^(@LWZV at L%RX@)"`````(```!
-M/"$``2#^WKIWW!JK4EFJ,S2-^:NSCI at 1]'QT)ZHK at D"ECGSG!=3D]C$/9H::&S
-M235=3D&-BQ1%IQS=3DH!^#LCXSWYPX99^B*S/!5J3Y>:(.0%7;;=3D13Z7.5BYQHCP
-MK9-E02']@FG at 1=3DF!1TY,N`RQKTLZ'/6UW"(E/$9)<RQ8=3D2\G[!"@?G(\@UHP
-M:CN/O,<]`F),6&!3";$]X2JX:HB.UV"QMJ%_*XS"7`-A*-*GX3?!06+@;TZ@
-M\L<(6^T1&P`%,>>7L,H]0P]"O:S++OO[I>N!!AO+6F@@SEMO%V0.3*-M+B,(
-M]CRJ=3DM^I%EI\N7$%`XB)4,OO6T$,'!%O0%RQ$IWGR!'B'&/6##.H.E=3D/?\!'
-M'_!,DGDFHND<;$$?#_1#.`3OJT<2MT8-N0(`?````'P````"````10``>$^*
-M``!`$0``P*@!`<"H`0(!]`'T`&0&2=3D)'@'LU[SF',7:!*F?#VR4N("4(````
-M`````%PJ``!`1\"T%B?IR2+$1K\-!0AA9%AOLSQM5F^(U!I.XI[<((;21V]5
-MZ`,)^<7^*AR`27?M\G/D4O4D3RGH=3DE241Q*W1E+$`@!L````;`````(```!%
-M``!H3XL``$`1``#`J`$!P*@!`@'T`?0`5`8YTD>`>S7O.8<Q=3DH$J9\/;)2X@
-M)2``````````3````##$OD#XV:+>1X[&3;R+#K5MF<N:*A+Y;%$N(II%519:
-M,!N0\G52=3DNI#'8MXH$<2MT:3T@(`;````&P````"````10``:$^,``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.=3D)'@'LU[SF',7:!*F?#VR4N("4(`````0```$PJ
-M```P:+"7F$C^`XJ7'F(Y9/?#2H5KL,4H0GM_T3G4MN7%MTKOKJGRYA?<:\=3DU
-M:(Q'$K=3D&S-\"`&P```!L`````@```$4``&A/C0``0!$``,"H`0'`J`$"`?0!
-M]`!4!CG21X![->\YAS%V at 2IGP]LE+B`E(`````$```!,````,-E\.A2HEDP7
-MP4CVJR]2!X;R$F>Y/._Z[GT/&Y>R48`&XC5#/<MF;WV<_HB%1Q*W1A_;`P"8
-M`0``F`$```(```!%``&43XX``$`1``#`J`$!P*@!`@'T`?0!@`=3DE__&`7<=3D]
-M5;X``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``WAS*PR,8`>1)$0WTG#:TH"AB:;3=3D?L6$X)JLT2?5
-M$C)6Y*(<R\GUSGOM3N=3D]RP0;0CFV8'*5E8Z at F?N,N;?<LHC0T=3D$9X2'KANM6
-MY(OK*_&2 at GW)](E&*'9YQ+BM#*9>.<+`&>Y,7)T$M.MUQ&9&2';<.J!?;^HH
-MO8)0,/EO.0,I```D)Q=3D6#>XAG8N7=3D=3D#:*`9M,&<?$457*>LP$,7Q:S&(R60I
-M```<``!`!#N6^]*3AM[\O=3D#$$T9"=3DVW;:V%6````'```0`5Y#K0&E5XKWT-Q
-MGD@]\I)U#ZE#R4<2MT;IZ0,`7````%P````"````10``6$^/``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*?_Q@%W'?56^```````````I("(@`````````#P````@
-M``!`!@````%?P/IS3F)H-^X0+CT,YKW'=3D&P2J4<2MT9R^0,`N`$``+@!```"
-M````10`!M$^0``!`$0``P*@!`<"H`0(!]`'T`:`'A?_Q@%W'?56^````````
-M```I("((`````````9 at A```@``!`!@````%?P/IS3F)H-^X0+CT,YKW'=3D&P2
-MJ2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``WAS*PR,8
-M`>1)$0WTG#:TH"AB:;3=3D?L6$X)JLT2?5$C)6Y*(<R\GUSGOM3N=3D]RP0;0CFV
-M8'*5E8Z at F?N,N;?<LHC0T=3D$9X2'KANM6Y(OK*_&2 at GW)](E&*'9YQ+BM#*9>
-M.<+`&>Y,7)T$M.MUQ&9&2';<.J!?;^HHO8)0,/EO.0,I```D)Q=3D6#>XAG8N7
-M=3D=3D#:*`9M,&<?$457*>LP$,7Q:S&(R60I```<``!`!#N6^]*3AM[\O=3D#$$T9"
-M=3DVW;:V%6````'```0`5Y#K0&E5XKWT-QGD@]\I)U#ZE#R4<2MT:M'@0`4`$`
-M`%`!```"````10`!3$^1``!`$0``P*@!`<"H`0(!]`'T`3@''?_Q@%W'?56^
-M#VSW76'>Y.<A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``/P#%]9UC<J:SH:0CN./
-MR,\TK)4)WVP"8^#K1:LC?B3HX,)57(H_%=3D6E`ZG9]46*TO4,;4,D0>`U.3.O
-MDD&E^>0C',=3D>]#RT5*N6$ECZ.%)K'X)'Q$K_"'\W=3D;S[M`#4/8"\VUH-DO=3D4
-M8F+O&,%&<LT5H2)\"X*VBS at .\I]K$PFO*0``).(\89VH%%P<\C'O5N at J!<`Z
-M]]_C3")8/&_$L\J^2"4@*0``'```0`1J;%E67SD983TK_VPV$\U;H^,L;```
-M`!P``$`%GVR.G-C7A2(G&[K!K#?3H'H7;'E'$K=3D&LTL$``P!```,`0```@``
-M`$4``0A/D@``0!$``,"H`0'`J`$"`?0!]`#T!]G_\8!=3DQWU5O@]L]UUAWN3G
-M+B`C"`````$```#L(P``T#CEG;9K,7_CH_=3D1R<?D7[&R3^>MZ(I\77X.HUVZ
-MP=3D-#0WM*<CW92O$T\543OKJ[DX at 8RZL,]LU at E9O(E4+3%]_21'W?'Y5L>27E
-M4BCK4]*CV)+2J#?N2O"L]:,%@"9DC$Q9IV7&;_2$+7EG8&(T9BC[V"?4X^P(
-MKY\?WBJP09E1/_.QZ$12SMJ@":5[.%ZV:EH;5[_0-,?]J=3D>^@4IR>5&DB>'9
-M6$<3$KYDR<3T@':K'*Q237F"5;(\Z6(;(7/;(D-1<?-/+$*M?Q#IFD<2MT9W
-M9`0`O````+P````"````10``N$^3``!`$0``P*@!`<"H`0(!]`'T`*0&B?_Q
-M@%W'?56^#VSW76'>Y.<N(",@`````0```)PD``"`.PO]=3DT-QFG8<@`W1'/I=3D
-M:GQMD3=3D"[2(#B0-1JRWA5 at 2!)'S08V&Y*BH<"PAUOX[C+#3"'T^-=3D.!\'CP*
-M@;[H_Z)VHDY14OTM)$`QXD0(TI'D#I at 8%@13NGX#W`J<WJQ2=3D.X]\[,;^L5%
-MAS8:G%;2<]+HUE$"Q'9)T<_K44<2MT:J at P0`'`$``!P!```"````10`!&$^4
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z?_Q@%W'?56^#VSW76'>Y.<N("0(````
-M`@```/PA``#@B=3D`2IQN$36GYX&9O2A;"&:!<;35O\,MXU)5^#,BN]/[S0+1B
-M99K>PF.)FV%1-0W"V&=3D_Z),>MD5[E_#`<-0ZOE,O7X2>Q)&JWT+C4/Q`&D:R
-M9/W;./J&<WCK>5[[5?/!B%S8$O`AMQ^$L0+/XLQ[=3D63F%SAQ>/&1T5?+K&Q>
-M&K8*.A)TJI`++=3DT31\L$<$VY?<K_9 at N/:'P#*2P6C0\XH(Y``U at U:J+_-X?D
-M(U!_K+LKUJH']*X%&/@T3=3DI7BS^P.!MQ:^@4QMH at 0.5:!4ORV*L'=3D"47,^B8
-M\,N-X$<2MT:[C at 0`_````/P````"````10``^$^5``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R?_Q@%W'?56^#VSW76'>Y.<N("0(`````P```-PA``#`OI:CV^:W
-MGRESM>F)M.U_H^>B$.RI18+!A*U`45H%,1?XI&;6(-_.YWU;+KV@\!A^3V'K
-MBCK.YZQN(3,U!F;OM+KO8\6:P)I/N,9^'^:N14"H\C,@(!=3D=3D:'3'6/V^8]DS
-MB at JX53,VRH!IY^<OY(A>:*SORKODO0V(M#MRFM,3W)97K),=3DDH]E1XM<>E0S
-MP1JE$L*B1#&5<\6ZXC;OB at _QODP-21+`L*1]]V(58+L-0/QNW>,K55U^)X]!
-M:AE'$K=3D&K)D$`&P```!L`````@```$4``&A/E@``0!$``,"H`0'`J`$"`?0!
-M]`!4!CG_\8!=3DQWU5O@]L]UUAWN3G+B`D(`````(```!,*0``,+OOH.SOARIR
-MN#Y8$!TH;U[T^P%Q('[DWOJ;B3?)V<.- at K">D)M@[0&7GP\C1Q*W1DBU!`!L
-M````;`````(```!%``!H3Y<``$`1``#`J`$!P*@!`@'T`?0`5`8Y__&`7<=3D]
-M5;X/;/=3D=3D8=3D[DYRX@)"`````#````3"D``#!^UH,\557,"X9U>#8[U:.8=3DXU@
-MV<Y+T53<8"(AR]O/UIOD'``_15;]XF%+QD<2MT:4SP0`/`$``#P!```"````
-M10`!.$^8``!`$0``P*@!`<"H`0(!]`'T`20'"?_Q@%W'?56^#VSW76'>Y.<N
-M("0(````!````1PA``$`P'SYI/)$TO#2GW_'E,L$*)R+&9-V#)I)V#5)/RX<
-M';CGWUBK!].\[AE]P&E[4::/&#00WJ>-;&([%_[Q)P=3DJ)IQO^\/'41XTH"8)
-MWWT^R'%;>2SL*`HCNW at GC;J!3,[>,Y=3DQ*6>;3 at M8P'^[$0*7\N!.]S7"*[GP
-M0-+RLW8;LK!_QT23^#]X4%&F#2CPM<Z:^"E?IJO`A<HZZ-TKP+4>O/\P>'D8
-M9P0=3D-W.H7`3RVM#OY:"VE2SDNFIY at NPLE>T_H<,@]N>_$UB/RLH]]GG6&6!R
-M+V,9!,V\8C_.R)X"0-`S"M_:HCGTC;<'&'HA9_I[[AG1O'-<GAE9`*4_1Q*W
-M1BS;!``<`0``'`$```(```!%``$83YD``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M__&`7<=3D]5;X/;/=3D=3D8=3D[DYRX@)`@````%````_"$``.#JJ:Z!L2$)P>RUVW3Z
-M9V*"P3NA>]A83'/E``&I2&"PH9-=3D)9WQNE,2!;\BMF"NIRKJ]V+AZ=3D>RFZP7
-M$- at +NY#<#^I%WN2PQ;B?(HT"L.\Y^G2_#KA03S:`CD=3DNN.Y,#&RQ`<?N\NJ+
-MCJ?1/S2/;4/1-(%X5+?9&$BK[G(LNS4%;6Y!IR><&\=3DK]T"8(GT at 1/._XDBU
-MN!/:&$T>%I<>&#E+:?(19,-YE#3^0&`<93>FEY<JW3&5(\S"FU%C#81+HM"0
-MIJ at 8A8?1D!5+(V1-02_XH1]SMOLW9JJK,TX]1Q*W1L/K!`#L````[`````(`
-M``!%``#H3YH``$`1``#`J`$!P*@!`@'T`?0`U`:Y__&`7<=3D]5;X/;/=3D=3D8=3D[D
-MYRX@)"`````$````S"$``+#PJC'I:PY^+<7*541*S!GWD3LPJQ0X%WU/]O>*
-MXB#GN!TWYA0Y0-!TJ_OX:=3DM'P<$CS)4#LJC3$<)E%"7=3D@]C-A#IW1III<-'>
-MW!:-#ZWU1,W"N5H6>N6&H5ANBFYCDG4#0"BMDLN!.U/02H++%`(4D^BKSP8=3D
-MV9:C^:P#N:EN+L&0LBB.[(+FH<)?(/I`8`G?=3D\T5FQ\#'Z<KW=3D@:).;XSA46
-MJ6_X,$(X-*CF1Q*W1M$0!0#L````[`````(```!%``#H3YT``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y__&`7<=3D]5;X/;/=3D=3D8=3D[DYRX@)"`````%````S"$``+#%
-M)/=3DT3$RC8`V at _]S at +N-H/DR2X'S(D$QM[H>#@:B\GR[:!F?+I`K>Y)WWR_\N
-M\$C/>\3*WCED[0&!M.RN"E`-'&[&!$[]C$UKP>J8Y;DC_+:!HQ4"8/:2KIU^
-M^XMCD9R&3Z$!V/UW)?Y?IRB/2]>@/&#IBCL!_;Q>':`N%(^]F1"SW5Q`#,T_
-M985J(4"QRTZG^1CC1QSH.EGZ]#7]N'M\OE/X^Q9[,5\"+)>#1Q*W1G8M!0`\
-M`0``/`$```(```!%``$X3YX``$`1``#`J`$!P*@!`@'T`?0!)`<)__&`7<=3D]
-M5;X/;/=3D=3D8=3D[DYRX@)`@````&```!'"$``0`:J#/\JI9JLO?%KV'ZUPW%Z8`2
-M<D!O).F^&=3D./;M,*_;D$906<8W;<*;DC2 at QUV05H.K,IL,G<]<^A<V@\'P(?
-MW@>LAQ<_^$!>3^QGLO4$@"E"B`OSH`B+HPA4K--_Q_V[\8\LP9(I4?LZ[N8V
-MGI$'E.$1W^Q!%@*),@/N`T)HOO3:I\(6/;VN2YZ\=3D]>0M^8V<=3D^K(E<LLZ%3
-M+([Z%T#N5DRIVJ2B::/`4#Q<+W/-K_(NL"YSI),VGL\HWX,`@3?PY3*?J24S
-M?7^<LW`5N0<<EEOI[UR3;7=3DYZIUS[N4556H_'>#M`^<T\WJ?V`TEOP<L]HL1
-M:E<V0HSD?%=3D'$K=3D&33D%`!P!```<`0```@```$4``1A/GP``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^G_\8!=3DQWU5O@]L]UUAWN3G+B`D"`````<```#\(0``X/6C
-M/8`D3(,Q*8&";-B>(/,G94:?4D8 at VB&)+X0%#`6&3G3T6?GL0G@=3D;F)%I,<'
-MZA.B0L6&D"7W6Y*Y+P)S0,"@199;+VO5_1>MPOXJOHQT!A-A8:O/.<K4PJ96
-M0"'H]:+C3SB:@:(G*5)X-QP=3DA&P1<ICHSG';O5TM2Y=3D@<RD2B'7,"\XS(_[V
-M?]R)'`:8F;KB=3D[7ES-+3L,'@TC('X*FZ][EKD4L]POV^Q/\3N>_)F.I*E$0>
-MY]H?T[$I6?>4+;R+:8#=3DXSW6+V[SE9$E`4```#-V\%_`8G)6$.]'$K=3D&QT@%
-M`.P```#L`````@```$4``.A/H```0!$``,"H`0'`J`$"`?0!]`#4!KG_\8!=3D
-MQWU5O@]L]UUAWN3G+B`D(`````8```#,(0``L#KIS_*FTPJ:^P=3D"!85X8,Y$
-MXK)'"9"5](.2S<W\QS,K62CQ%$<XFR.:!**U=3D(!1Y69RIR%D.6N(;%A at IOL>
-MBTY66&]YN;WRSFI](+T\G%\:@EV>HFIDK`FCT2O3#%QS81%^Y//O\$%>Q)+#
-M7X$#EO,S(EDIDA0(9ZB at GV=3D*T9PJI%',!A!V_O[>J?SVS-9I6%'W-6.Z;IQ6
-MX7YA/>CE51?@]8O78JJD>X]4R:Y'$K=3D&S6H%`.P```#L`````@```$4``.A/
-MH0``0!$``,"H`0'`J`$"`?0!]`#4!KG_\8!=3DQWU5O@]L]UUAWN3G+B`D(```
-M``<```#,(0``L(L(-5$9 at +!U$RX9XJS9#1UNPV:A6P*HKB&`=3D#KX$[C at 8I1C
-MB^R`*Z3[K-M0P?)Q8:S-+JV?^-;RKBKC)FX2!64UIZ5=3D&7L0/%K>10K0>)KN
-MH'!P7 at V5Y)RJJ/_??6P!.)E:/HI/Y\6YZ\L?'[VMH]Y]TP3)O3APD`4W'B*7
-M%)R,5-`*6RYAH3P.31*V[;TC<83;'B-RD2I7?[YNPE4]_TDA, at +>T4SM],#G
-M]K-'$K=3D&U)$%`(P!``",`0```@```$4``8A/HP``0!$``,"H`0'`J`$"`?0!
-M]`%T!UG_\8!=3DQWU5O@]L]UUAWN3G+B`D"`````@```%L(0`!4$OAM6^Z,3EP
-MWW>0"USF&T"N!@9K[Y(R4`VZ,#+?-_`>;S)Q\81B1A``/'A.Y-U<Z&:)5NHR
-M%*RUD^$#'3YOX@`:=3D at V.>"VDK36X at GGQV#*:[/?OGUFJJER_(\P5>5YBR7-!
-M/5MWK*K0BW]>7$8:/L6GX'"9H]P']`/6Z`"+6$;O;F,UX/WP7>G7F4W=3D#TK;
-M3SNSET3AJ;CJUB8(H7OA<."Q>'%N)4_/MQK8TBHZ+%I<$</:><JJHW2<Q`\9
-MM67^K,,(J_SN4X'QNGY9+6T at B*X8<1U&4,S0I=3D8:9OG<P3`N27+-,;7DD2M5
-M!T\>2A$<.F%BDVANVPIUWQN&3<I5^;\)#7:T;72]TIA;4Y\:\/7;\YQY?SK:
-MSC0?%4 at G!!`OA4YQR^%'HG,.`<IPSF\T?/]D*#AA;L)>0(?@HD8;KN@, at S^^
-M<!NF!]BC]4!/1Q*W1FW'!0!<`0``7`$```(```!%``%83Z0``$`1``#`J`$!
-MP*@!`@'T`?0!1`<I__&`7<=3D]5;X/;/=3D=3D8=3D[DYRX@)"`````(```!/"$``2"-
-M]2+$>[?!XOU6E%BG$5ZNU@*H[5,+QPN40JNA65QV>_^8=3DHX6YG]7._S!D4ZK
-M=3D4'/[AF`WESBBKHIZ2`G0>Y3+(@AI'X49^[['.F,P_%LV>ED>$G./N#_QABU
-MZ(_&8?B2P]4'(0('X)K]+Q\%,HOACZB3(Z-A=3D>IDUK"YD7`SMT,.S`P_J006
-MJ5JV3I9+GZOLD,N/W6`/>8ETIE^0[>G3L!>Q=3D37"_UTEV9F?RZ=3DQ\9@=3DGZ<Q
-M3.?YHK),2;Z?YH(R[)$4,']!],8]"2^*W7<<\6,5PX#O7/N"%.<T]_W$1Y^P
-M(#28L at 0:?_\R!4><1\N"8,P?XR-#>`Z'+I#\T"=3D0P&8 at 5,B!Y8S;;-$,T9[7
-M:X"=3DQCG7S=3DU%3G]TVD<2MT9Q[@4`?````'P````"````10``>$^E``!`$0``
-MP*@!`<"H`0(!]`'T`&0&2581Y&":[.VBX8;6B0-ADG,N("4(`````````%PJ
-M``!`"'+I4KXO7;X"L$[8L%LX?\O[FZ`_ at CA=3D"LN#<"^B@^,7JC:K!B$Z>910
-M*]^7)KL,#D\<3DXE^6`8:Z<P1Q*W1MSY!0!L````;`````(```!%``!H3Z8`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y5A'D8)KL[:+AAM:)`V&2<RX@)2``````
-M````3````##?QFSH0!X+6;`74WVM[2^3M8E,Y53ZJS6NVM2TN)F<.D1O9*H<
-MR[>55'I+[D<2MT:%"`8`;````&P````"````10``:$^G``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.581Y&":[.VBX8;6B0-ADG,N("4(`````0```$PJ```PRW`-
-M[0[`S<]WT`'';^QHGTX at 2-N_;%,TQR5,*F)VY8GD)607U*1\];":75!'$K=3D&
-M?Q4&`&P```!L`````@```$4``&A/J```0!$``,"H`0'`J`$"`?0!]`!4!CE6
-M$>1 at FNSMHN&&UHD#89)S+B`E(`````$```!,````,"I=3DLXG4W;![QAI at HYSI
-M=3D8XZNHK<C9`PD>GB^_J'EMKT].+X4W:H]@N=3DTBQ"1Q*W1C<0!P"8`0``F`$`
-M``(```!%``&43ZD``$`1``#`J`$!P*@!`@'T`?0!@`=3DETM01!]CK5K(`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``-T'Z$_YD>>>@ZY<R,2T>$,""4YI^9[GPD07HPZ:R1Z6W.8VB
-M++;&9]UL@(TA%H^I<KCJ38@<6!`,'%*H4J=3DO*WHT-!U/?G\R7-8..WKZ>9_(
-M3&),QU<.O`?FB'-,G:QF/OFXP_/7+9(>^_?@YI4"NSJ_':^K<"N>8)VM:8]>
-M1N4I```D+NW')+67E+8NGG)0Q6>S-IS(X at 8E9)T7U&\V=3D]"2K3PI```<``!`
-M!+I8,L6&"TLM@)^2B6/90:AA9_]7````'```0`5.]&2)66AF9Y/O*"\I)!Y^
-MKF]2 at 4<2MT;-'@<`7````%P````"````10``6$^J``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*=3D+4$0?8ZU:R```````````I("(@`````````#P````@``!`!@``
-M``$4<F4]R]901=3DH9=3D0W[C6WC-B&]/4<2MT9;,`<`N`$``+@!```"````10`!
-MM$^K``!`$0``P*@!`<"H`0(!]`'T`:`'A=3D+4$0?8ZU:R```````````I("((
-M`````````9 at A```@``!`!@````$4<F4]R]901=3DH9=3D0W[C6WC-B&]/2(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``-T'Z$_YD>>>@ZY<R
-M,2T>$,""4YI^9[GPD07HPZ:R1Z6W.8VB++;&9]UL@(TA%H^I<KCJ38@<6!`,
-M'%*H4J=3DO*WHT-!U/?G\R7-8..WKZ>9_(3&),QU<.O`?FB'-,G:QF/OFXP_/7
-M+9(>^_?@YI4"NSJ_':^K<"N>8)VM:8]>1N4I```D+NW')+67E+8NGG)0Q6>S
-M-IS(X at 8E9)T7U&\V=3D]"2K3PI```<``!`!+I8,L6&"TLM@)^2B6/90:AA9_]7
-M````'```0`5.]&2)66AF9Y/O*"\I)!Y^KF]2 at 4<2MT8J5`<`4`$``%`!```"
-M````10`!3$^L``!`$0``P*@!`<"H`0(!]`'T`3@''=3D+4$0?8ZU:RXH)/_FD7
-M#FTA("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``#3*W($W0*LT1TB]E"HKCK\K4Y;8
-M7W,SKV+S:Y:A"8>C1>J^#`U4B#V.)P'9^ER)+[D&O)FBXP%\>V6?<9OSQ?;"
-M^0]VGZ*9X+%V.OD$'K77()H;,8VC.1BG\/^<K1R=3DHHPVUUSE$(_M552)V[J$
-M:HM0O8>?7>)WU*LYUS<"3NLV*0``)*<%OZW\\IP5AG=3D*^GFS_?+F^/Y4O%!4
-M1LFR+SU%KANO*0``'```0`1:4;5&*7G$.)%YXZ+'W at ._B>*/[````!P``$`%
-M\]LD(%0P%`I;V3(6I%UQ9 at V'G,A'$K=3D&P(`'``P!```,`0```@```$4``0A/
-MK0``0!$``,"H`0'`J`$"`?0!]`#T!]G2U!$'V.M6LN*"3_YI%PYM+B`C"```
-M``$```#L(P``T(U5>YCD-I7``"K#Y+A%G._8F)U(4C5;V,3/?'B;@'U1PJ/#
-M*(4JEW9Y.-E)$6MD$(N\67#F##`LCHOCZ0-F<^591:[7Y1?M'OG$PP3IB+;X
-M5'&=3DE"S2LE/S#J;M\'55(A4;1P-^"BE=3DD6,<((M;WU3B3H\Y>]L/?B3`77'U
-M=3DB$^Z,]IVX.ZAVB'`T[&-<\4MESR?6"874'=3DZ,E0L5%LAF5K!/CM<'=3DX<:44
-M)H340T/^(=3D+$]SB^69QG!&0V]15J?!B`O%9J*>)R$\D0Y4<2MT8UF@<`O```
-M`+P````"````10``N$^N``!`$0``P*@!`<"H`0(!]`'T`*0&B=3D+4$0?8ZU:R
-MXH)/_FD7#FTN(",@`````0```)PD``"`Z\,)F.8VUC?,LBR]7S*`-+&1AE1)
-M=3D6 at E8G,JWIA!Q1(<@C_DC#:)P?(OX1@[A*Y2'U8>!J;AYV\V!OEN+`-XKT]0
-M\9%]([?['ZVZB.I#5^+JZ$*%UC?J033?4]9=3DLN(`T=3D'/M`SZIOO?=3DH;.'X[U
-MFMV\@B$"M0OCLZ%F^T<2MT9VN`<`'`$``!P!```"````10`!&$^O``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z=3D+4$0?8ZU:RXH)/_FD7#FTN("0(`````@```/PA
-M``#@>3.,!,L+`$N-I,<YS1_+GUG/-5KC;7:EYO]8,%O/.-VG_*ANIY;73B[M
-M7M8[2:"!;J\[<_#>F'<9CS]CFXF=3D%GX=3D5?KXLA6$*!M`)^,"Q"3QFFN7T?03
-M#KWX%DY>>=3D`DYV/5VX%W6)K<;$=3D%D*3$]N(K"K_.CW(GAJI8`H'QP_K=3DA2,C
-M+8[C4*+86Z]HU]D*)^F09OY'3GI1VWL,Z)5.U`RUR=3DFBQXH,6ZR(A&D4*])`
-M,]?%(&,1'%#E,)@;MOQO,-"7,&KO#WM%^.(;G(;EC26@)+?5VI!VVW/42T<2
-MMT9QPP<`_````/P````"````10``^$^P``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR=3D+4$0?8ZU:RXH)/_FD7#FTN("0(`````P```-PA``#`9`X!6W4NBT"W8+E]
-M,=3DD@@'$[SU"L<Y.$N*5)DBB?_,K;O`NP!-61Y?N-(7/DLN$N]V-#\VN).5`.
-M<IBSESL9TLL45:C(8T?QJKM))HE.O!Z at Z_%#O at +CZ"3T:YZQS1TC>E_>W(P/
-M"&IQ(XG!+4[GL[73!N"04K=3D?RW'-B@:GZ`/:?QP[[9/:,>J6AA,0=3D)AQ.^W)
-MI](N2H'3\RK9H-H^USEZ"U!K"72J<]=3D46N!9@<IIB$@*B$E_`?/QR7Y'$K=3D&
-M!\X'`&P```!L`````@```$4``&A/L0``0!$``,"H`0'`J`$"`?0!]`!4!CG2
-MU!$'V.M6LN*"3_YI%PYM+B`D(`````(```!,*0``,&\142L4PZHE2",,T??:
-M>\_SY?4XNC(_RO_76N[2UZ[J($0PZO11]"1:GF#N1Q*W1D?J!P!L````;```
-M``(```!%``!H3[(``$`1``#`J`$!P*@!`@'T`?0`5`8YTM01!]CK5K+B at D_^
-M:1<.;2X@)"`````#````3"D``#!^"#=3D-[%FKLT1UA&*V#@B[C9Y(&422P+(;
-M<6S)C&_34O5N^8)J1O^$^W989T<2MT:\!`@`/`$``#P!```"````10`!.$^S
-M``!`$0``P*@!`<"H`0(!]`'T`20'"=3D+4$0?8ZU:RXH)/_FD7#FTN("0(````
-M!````1PA``$`%C%]A9%N_)=3DM+=3D%:!.`ZI>)F%6T`?>9Y+X8V8L$K6QH`5$$(
-MU;-RHA6%^&#K...4M;.JLXI_]<:O"LWCQJR)LGH+[!VV?):MOE;R8#F3NYM8
-M/]"11G[G[C3#R4U"PP:O\Y.N`VH:PT[J#%3"H9--*F?JH=3DAD:^8.?-?-./_]
-M_A`V'O'0?(4#H,60"T1BR!^3C at EUL*B-B6LW49WM4'TCU6>0KD_ZE783#85U
-MB92H%"%+QB171T[])WDOGMJ*PJ<;1CEC'G$AL]([ECL4V3<GDV;77S!K4$UM
-M0E[/K3!J8_K,C at 3I:"I4R_\#]<=3DX++T.A;`AX at C&C^.!>4HK1Q*W1L at 0"``<
-M`0``'`$```(```!%``$83[4``$`1``#`J`$!P*@!`@'T`?0!!`?ITM01!]CK
-M5K+B at D_^:1<.;2X@)`@````%````_"$``.""A7\9TWID*6EL#OXL-^$RX\1X
-M'/&*HZO^7\&ZF8$S6\8!?#(#G]6:9K\1G#R?%);@'/EJ-806'?0G<VJ*<4:_
-M/)$?OM%G%.2&]<D$P&L>%-Y(XOI]1U&0D[IX3N,#]5D%".!DS1BWZ3JU+!L&
-M`Q:DWF=3D!/LWTER%CJ@@YX#FJ.Q30'<@@N!;H'\E4UIX`.VY6TV(^>E_RA?F!
-M0G,>`^C6X/>12&E0D+'O%J99KL?S[;&-(4`IB4L'3.TWQI-+S0*8EZ2T0LSB
-MM^IV0A0W2KPW]6YCR^AX=3D2)&P&TA1Q*W1DD@"`#L````[`````(```!%``#H
-M3[8``$`1``#`J`$!P*@!`@'T`?0`U`:YTM01!]CK5K+B at D_^:1<.;2X@)"``
-M```$````S"$``+`!U+0D9]QM@,NU-1=3D)]!&V:,]K,[A:O%E>,]:SX<0,73Z_
-M;R. at 7FA$- at TP^?<89I8R$"AK><8:R-+52L_D55T-\66!X$EDLX/#Y\L8W[,Q
-MA^Q'M3*RE"*<>*50,)[P22.6BCI#>D6=3DG2IX,RS54/5J\K]JR]/W4=3DP[N-;R
-MXU9M)51U?]1I1./+[:%1`+M+W]=3DH^#+1:0H<(LL9_U^;WBL60^!X3&<BS[;"
-ML32^1Q*W1JL^"`#L````[`````(```!%``#H3[<``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YTM01!]CK5K+B at D_^:1<.;2X@)"`````%````S"$``+!A$#G'0[I1
-M0QZ5*>)XG[.B8!E<.L8+I,WB5FHI&;VPH'[=3D"8D973*!H-=3D?^X(:>__LB]%D
-MIRFU,Q-_D(@RYM%]<<.\QMF^VI5:)'#R23#WF5:3U>I0\&F;V=3DC(G!'_#?H#
-M,=3D-G*'SO[JP9I,B/.?`_;A^9W."I6UXF$[UC9E^_LI\K_51S(!K)XP19T#F.
-M*9']B6-JZMCUXR?B?!--T0HY)::KK-0X9I:"!BV11Q*W1OE?"``\`0``/`$`
-M``(```!%``$X3[@``$`1``#`J`$!P*@!`@'T`?0!)`<)TM01!]CK5K+B at D_^
-M:1<.;2X@)`@````&```!'"$``0#.:NO8I^(E+HI+JGI$/@C:QY8_=3D6$'`R=3D+
-M-3+2:V+\'O?4O/G[FED\:T-9F+$'8[3U"Y$:_;DB).[BX?YR=3DTX>^J.,;5/8
-M^<?;C*Z0H/B$V82-M)X0.I%"R6"E8")BR-52+(Q\`)\)-Q\$$%:94.;-;LCV
-MX;@@`"9N1;'4.3?9R#"L'[EP`H=3DJ#3F<["Y!EM<!;O/FX:%K`S+BY<%;1MOG
-M-%MYH,AZ2]+;9`M6:EFO`*['-LPJ5'2_\4?Q!>A4$5&OB\MQ_^?"EIZG?!.O
-MBABQHMF`J,6`P!+H((N'EC>Z1O/F8%7]7=3DB_F+_\71HK`(L>)7^EC.E-<GLV
-M+!M'$K=3D&<&L(`!P!```<`0```@```$4``1A/N0``0!$``,"H`0'`J`$"`?0!
-M]`$$!^G2U!$'V.M6LN*"3_YI%PYM+B`D"`````<```#\(0``X,-&8`"99\S$
-MJ5C=3DB$)2Z1"HEW;"^%@>5:IPK\$<JR>+,D+'7^<E^I:."<K,*]E*'HU45:L:
-MN-$.;"8\\+81W at A8,>T')?)-*20`DM4RM5[`KNAYZ42!?0FU7OH_&A_<Z%I/
-M/X`Y6=3DFH+5K=3D,H[50<U*IT7VUG5SL2EM(#](88LKYRV+9\29ZIA8#C8U8\.A
-MXETG`(9?P-].-ZV"XCK8/^B"]ACL6./I%K!8!H7*[)#E]\F&A-]%8FB4=3D)6Y
-M'<[ME49$XX)P3 at 834V?5^A0HRQC-\V$9Y-V/I%W7WSI'$K=3D&T7H(`.P```#L
-M`````@```$4``.A/N@``0!$``,"H`0'`J`$"`?0!]`#4!KG2U!$'V.M6LN*"
-M3_YI%PYM+B`D(`````8```#,(0``L':(R7+VTOZMP,%9CYS"5DM at PE9`9'DE
-M9I,PLW:96%NTEN3-D&U!ABLAHN.KA at Y;=3DAX"D&QPY!DZ8^TV+8%ACN)[A!7,
-M(-/-A^5#H%+S`TU;?#/.OM2AV]"XK)G&P\+YV%`W2<F^F'>?'[T!S!WUDK$8
-M%@\E[^,I8V&3>AO*H";=3D^`H"I&Y<G%N438>&.9:X$<8#Y<,UT\`YQ[7BL/Q\
-M!V at F!I&1GE11!]'2P>I'$K=3D&_)P(`.P```#L`````@```$4``.A/NP``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KG2U!$'V.M6LN*"3_YI%PYM+B`D(`````<```#,
-M(0``L%@QM1KV8?\GY["E:KIKF0/Z(KO/#Q`_IE@#X-[1LVS^RU:N-=3D$%V,''
-MZ_P1;>"EKG'\VI'UJ)_!79-X<G>DAQ>2=3D[Q(;N^;B=3D=3D[_1?5``]<*DD(/"]K
-M2^S]O</_3:LF%!@$U2_]70.K(*BKM'_&D#)B/,FOHX6AJ[-Z![UXH!!I&K_7
-ME*AT2%Q$V!BZ!D#IC(B*_=3DR%T@`7_V&0R*2A#W!OG#6KFKO*K"%J6+9'$K=3D&
-MO\((`(P!``",`0```@```$4``8A/O```0!$``,"H`0'`J`$"`?0!]`%T!UG2
-MU!$'V.M6LN*"3_YI%PYM+B`D"`````@```%L(0`!4#X^A=3DU5T'41O\N)_7T3
-MOQ:_[S4YYZKLNKTW"CL<V#Y8A5IB5-%KQ$<0IS5R+QE at GKT<H\M at .%+])IDJ
-MP\/<#+2YS8A,`G!0]$/]&JC2WK_"VT3V?U9JM\E3)9G%AM`!.91OER'$(:5(
-MH#289><H*DR"OW#E2E/<7%%DZTJ2&XX!K"L[WN"5A"S,&H"*!:X.K15O,B?;
-MA4!'Q&<O5C8N%.T%5H0R[)&5'DOVA1V<,*H\_8$Z=3DPX@\N;4(9MQ0DL]RQ(4
-M2\9C9I<9F^!C;D;I:FGLKOI'BMRN]7J6\,L;R;K).:A%)J43B_3,8%8L,:1-
-M6][0U2H+VQ8\M"]!O:^%1AP6,;_L`]80BL#_RO`?85U2I295)=3DAX<-(*YP/R
-M0<5PJ+TG6P(/$`3;TBO3YG^`M:WQU8W*VM1`X^A9_YW]3E[<!Q.\4TYW.Y7U
-MCE_E1Q*W1OGV"`!<`0``7`$```(```!%``%83[T``$`1``#`J`$!P*@!`@'T
-M`?0!1`<ITM01!]CK5K+B at D_^:1<.;2X@)"`````(```!/"$``2#2P[VBQ5C4
-MKBOM0?;5>/Z!XCR,O"4JZ\?B7%SE`1GVBCF9?NK,D3SX\XI9D at BV4)M<EN+K
-M,AUJ'W.7U"0'(V%9O&?C11EYQ8$<45_*$T[&65?+[HN8"P4\@M!QMI/R,%7;
-M<!0(TB6CYC5%JQ8#&NW!#^$0E/P@,`1JHOT.[P'UF=3DHFA^(EMS5Q!I'30$-J
-M8IL5M"&7@!7`WC.O/UOJ174_:'TD@:W_$HHERB#X<4HS&74-7U_7[G`IK+\]
-MD`[`)";G$1<BB>];[7DY4OW\-`:IN<50..V[=3D$IPF]D<Q,><V9,]4.FLB\3U
-M(<V[E*;DNGPN)GRJY>98/7G'\A^8``HQJG0Z<P9">P#LDG6T%W:F@>]X/UH;
-MV)SB?YD5D$<2MT:P'0D`?````'P````"````10``>$^^``!`$0``P*@!`<"H
-M`0(!]`'T`&0&263UABRJ7JNC!?O2T$WMYSDN("4(`````````%PJ``!`P5[O
-MU63<P0)^AR.!)W"L^JH-\IXR0_[+SIZ?&=3D\^Z0SS)L/\GRH,_@=3D92`O(D.K*
-MW.+)Y:F?*,T)92%)1Q*W1C$J"0!L````;`````(```!%``!H3[\``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y9/6&+*I>JZ,%^]+03>WG.2X@)2``````````3```
-M`#`1.=3D2MVBI^QD\P5)81!TAUGOZ_['0EG*[M>Z7Y7H_M?XH'^&0%+6:AA46R
-MRD<2MT:[.0D`;````&P````"````10``:$_```!`$0``P*@!`<"H`0(!]`'T
-M`%0&.63UABRJ7JNC!?O2T$WMYSDN("4(`````0```$PJ```P2,Z-OT*`=3D1'^
-M.1[*=3D+'/(T,*K&Z_8B!L6::S_/GA,8IOIZ\)E%'SJAODPR5'$K=3D&"T<)`&P`
-M``!L`````@```$4``&A/P0``0!$``,"H`0'`J`$"`?0!]`!4!CED]88LJEZK
-MHP7[TM!-[><Y+B`E(`````$```!,````,+D$1\"F!\QS7*-21\WQ47DZ&]@5
-MXR.@<.]S7Z.RB2:;GG&\$;I4DC%TG`-61Q*W1I-""@"8`0``F`$```(```!%
-M``&43\(``$`1``#`J`$!P*@!`@'T`?0!@`=3DE-.5'LJ'T?4D``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``Q[4Z3Q at MW\-SNQ49,L?K8DIE:6'C>E4EJ+X!$KM0<C0)!R4Q"4O394DW
-M;?G7-7H531\?^OE8RO*&#DZW_WDY*22^G"9LFX#H at G=3D;YQJ\/3'3O#(QS^'-
-M'V5BKSR%RDL'>8EO+L!V=3DXQ?C,:WETWR)O6V46[8/2$&RUD=3DY/VD0RHI```D
-MIG!N'"2FO2,Z?P3-\!C<\GJ"HO-'\XA1&G)V;6,'S9\I```<``!`!-DF"-JA
-M>H&;S[)98"N)D;K;N4,&````'```0`489ZO*U74W<U]BS3J:R?G($R"-54<2
-MMT9J40H`7````%P````"````10``6$_#``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*33E1[*A]'U)```````````I("(@`````````#P````@``!`!@````%E;\H`
-M<[DF>X?Z`!P;8)U=3DK]Q[%4<2MT;"8`H`N`$``+@!```"````10`!M$_$``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A33E1[*A]'U)```````````I("((````````
-M`9 at A```@``!`!@````%E;\H`<[DF>X?Z`!P;8)U=3DK]Q[%2(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``Q[4Z3Q at MW\-SNQ49,L?K8DIE
-M:6'C>E4EJ+X!$KM0<C0)!R4Q"4O394DW;?G7-7H531\?^OE8RO*&#DZW_WDY
-M*22^G"9LFX#H at G=3D;YQJ\/3'3O#(QS^'-'V5BKSR%RDL'>8EO+L!V=3DXQ?C,:W
-METWR)O6V46[8/2$&RUD=3DY/VD0RHI```DIG!N'"2FO2,Z?P3-\!C<\GJ"HO-'
-M\XA1&G)V;6,'S9\I```<``!`!-DF"-JA>H&;S[)98"N)D;K;N4,&````'```
-M0`489ZO*U74W<U]BS3J:R?G($R"-54<2MT;QA`H`4`$``%`!```"````10`!
-M3$_%``!`$0``P*@!`<"H`0(!]`'T`3@''33E1[*A]'U)H>NR%CH!VQ$A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``(G7&MN,QI+"'FIGLC?YN\W[_K,CJS2P9K'F
-MF%F.2<#'B+0M\A%2*4GA$(3 at 8_&C#>?Z/-NEXB!*"^OERX%6I"8NTE!Y$28E
-M#?3$S?!];3 at M_(%/;MUB?3`-T':E`QTYB%:&G\FXBJ[;70Y5V\:/82J`T&>B
-M!I!N&67J=3DR-F1T\F*0``)/EQ'I4>LQ0T?_IDF]H4ASFOVAM7OR0S#Q[VXJ97
-M,8 at Q*0``'```0`21>4)C>>M*@U?TZ>(:MB.`DN?LI````!P``$`%R:<C<[+;
-MY+N^A!`+Y'-!-9S at +A5'$K=3D&E+,*``P!```,`0```@```$4``0A/Q@``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]DTY4>RH?1]2:'KLA8Z`=3DL1+B`C"`````$```#L
-M(P``T!YM1V8,8OY0W,CL7*T'5[R5!(1ZKV*TQ]=3D1073&=3DE(P\^$]'A-DQV#/
-MV(6MJ3J*&P$D:8$8%O:KM<D&YK*X@@).B0@&+5^9D`[EJ?"5]%.5,!C,JB[^
-M+@'^IYE6I;7#$,6/TT(!V>_RW9:8ACM+?%TO at DC@)E?37MPY<A3',.2EKUSV
-ML02PRZ%VUI#K!4%.1 at 9(^,CB.;CY%,W<T5OY4F(2,R`@,M;<C,R2YMU>\G7R
-M4A8'&:.<!_D4$2'[ZTH>5GM\32BIF9CS^%]5DT<2MT;8S0H`O````+P````"
-M````10``N$_'``!`$0``P*@!`<"H`0(!]`'T`*0&B33E1[*A]'U)H>NR%CH!
-MVQ$N(",@`````0```)PD``"`;S!$FUUL+O5M at A3Z_5=3D5$^L+UF2C/,5)9&;Q
-M&>13.*S,U(Z(L at _I(^7`4KGXLFW)4-4<8(FI,RNUIAO<+9G2D0N=3D9GH>0^PK
-MM/8K<4ACW76E1J=3DR.>K),*^/_7+^O;TB5MKIH&7>\[*'*%-[C!PS90D`.2'&
-MD\/M4RVNH$<2MT84[`H`'`$``!P!```"````10`!&$_(``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z33E1[*A]'U)H>NR%CH!VQ$N("0(`````@```/PA``#@5 at C[
-M/RHW09+T'VW^J=3DU-.BTBY3B!>,U&WO"M%1/(9ZQOSZ96?R6N3UB7$J]`NZK6
-M'RPG&/>\BXR87.KUFBJ\$6EJD?LV[;F`8AVBX_X"AO6HW(Q"];S#JP,GR64\
-MV8-EN616\-K9KS)&N5M.L.V<HX;4,+F"AS7\W!MRLRET^624NQQ>(C.3ED/>
-MNT%P%`[J`W?-#"/Z:X<L\\!^\4*-A/>-=3D`0P0/J5K#B#JG.62**5.'&:EUK0
-M%6]JCJSF#"?)W+-7+!O2+;$'>I:<^'D<]5@);AALW4)""%JS4$<2MT8B]PH`
-M_````/P````"````10``^$_)``!`$0``P*@!`<"H`0(!]`'T`.0&R33E1[*A
-M]'U)H>NR%CH!VQ$N("0(`````P```-PA``#`40YKDT(:O%FY/@5/C^$4D]EM
-MIY?.^`GTP*>EXCNU>(H>WK"M6MA$Q71RZ"9<\QWF#\6\2WOC(?L*>>H5Q9IO
-ME#ZU6,I_(;0+G;^9$ZU1?./AU'"K'[2_7$WR3MO<]_?B;0.4[(:;C]?Y<E,3
-M35:X/$5'/@Q8<E^F:%HZC(;$G/Z+7/MBDUUJ at 3;3M*?5A/*^U4#[-]B\+6$6
-M."'SR=3D'F7W(@B2V>+RL<8O=3D+=3DVSH-:A0411>>;*!49?236I'$K=3D&V0$+`&P`
-M``!L`````@```$4``&A/R@``0!$``,"H`0'`J`$"`?0!]`!4!CDTY4>RH?1]
-M2:'KLA8Z`=3DL1+B`D(`````(```!,*0``,-^<#OI/<CAE`[9=3D at 9$RFSH:62E$
-MJKBKR#';8,HVBYA!+4AY6.A-E_X/B$_61Q*W1F$<"P!L````;`````(```!%
-M``!H3\L``$`1``#`J`$!P*@!`@'T`?0`5`8Y-.5'LJ'T?4FAZ[(6.@';$2X@
-M)"`````#````3"D``#"PO[F6T#_08*0 at B?2Z,3*$3X'AMJ54;];0^)#P(]<;
-MJN&P.^Q*!QS9^_Q[RT<2MT:I-PL`/`$``#P!```"````10`!.$_-``!`$0``
-MP*@!`<"H`0(!]`'T`20'"33E1[*A]'U)H>NR%CH!VQ$N("0(````!````1PA
-M``$`@H;=3DZLQ(S$?M'U@<_&&LH8L$EO^9DK'+FY\6T108;@>,`U-AGK616;<)
-M(Z>7>#,EB;%;P8I*KEED;-R"'0$EKR0S_[O[NO[(KE/+WF,2&RH]VOY+>;*X
-M5$I#\0QS^YG97[\#%N41^.(\_<4@@2W-'.:)>F'[2^XV$%\Q_;C`%\`>P5QM
-M9IM\8W=3DM'9L]9M=3D?^Y5LFG\L#U;S at J('1C4P7I-&K;>+,B37]"LSK@]W(DE)
-ME<$A^2,.%*UQ]K:+V]MT#O):_B!F1.1'CEX&@/&GLU"PV]F(MCIAK=3DT7NI)L
-MU*,G.*X]R"%?5D+Q&^\V4_BF**^<&;SVAOO4)HC91Q*W1D]$"P`<`0``'`$`
-M``(```!%``$83\X``$`1``#`J`$!P*@!`@'T`?0!!`?I-.5'LJ'T?4FAZ[(6
-M.@';$2X@)`@````%````_"$``.#$D&IQD@!?^6,W`!\$(P5X1?:\@;8DC?:7
-M5,IMWQ0:RV$$529GKF^3+CKM5EUMVFUGH$$V3$D$E?[J/H<QQ$PZ"@48[F`=3D
-M`:'CU,1F:$%.E$U!2\.0=3DALC<`('U#TD'L&P1#TX77F#5TYV)Y6748O;#+`7
-MN[+09RP4;N/0TLR&$Q;:R1F=3D_%$G':HL7QG\'#D9BM&AZ\WAAVT4BM6-X")G
-M_LD4,5Q065?)AE'<H727:C67NMK-08V?LERT2>!IN%1_Q\/N$G#X1T`HOU=3D*
-MQP&)@\WVO71FX2%A]I6$1Q*W1 at Y4"P#L````[`````(```!%``#H3\\``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y-.5'LJ'T?4FAZ[(6.@';$2X@)"`````$````
-MS"$``+"'5DX=3D>/!F[2>`)]UW<B/G:/M]-J-&]ZE=3D1V#X]IZ`U>0>W.:VU\H&
-MT[5(VP;9%RH$LK-TL6Y-Q<R#C3QK at X4[_V,Z)ZR*+SX+V8IZH-2MH(1`2=3DA7
-MI3;V:6W8=3D:6^&5>=3DP4MNA:()(Y^2%/B)"H&@[?J at L'=3D!+ZGQQ'(?;?&;$R/B
-MC#'_1("(`V)BHPBDC,RZ^[L^+D!7;:@*]':<:J#>H0Z):!`63`=3D[0(651Q*W
-M1E1V"P#L````[`````(```!%``#H3]```$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M-.5'LJ'T?4FAZ[(6.@';$2X@)"`````%````S"$``+!F;S9':>L(-C2K#`E$
-M/QAXQ:6M6QR6G7^13'6R[M at 2HK,8M?[)'KCH!:DY+0)RA`CQJD#<S2=3DR40FC
-M-Z\O!EIH#:1,S_1^9V">O#XC)MPST#%]RC;$_0O+JW*@!DQZO2ULR%%U%`83
-MH%4&8T,>;B`$\1U<8F4\YB/:<7NBLW/7_1P6%J>,J"P*:K[6$$=3DLF\M49$XE
-M:A*M(3)E`HZ.HW]3FD>3(Z3O)`14(!L=3D1Q*W1A&3"P`\`0``/`$```(```!%
-M``$X3]$``$`1``#`J`$!P*@!`@'T`?0!)`<)-.5'LJ'T?4FAZ[(6.@';$2X@
-M)`@````&```!'"$``0`)^@?(C#7GVK+%`>;AXN')@8M,S/$/G7EJ)7FPDY\O
-M7:_6R],QGL;;+SK`B6=3DG.6E\#;.N[G`\<9*,6S%2Z*6L1882J45]][EF.TBE
-MH+6S^Z7,.'HX!OA4,_FG+UJS<B)'[P[JR6E<QN:O(N[2N*^-T[3=3D%56]O?(M
-MIU^+1S%E,_>2<^5L at 5O4E*8+"BLR`QOY(NZ17!VO+TQ4Y[C-N[?..A=3D?M]+*
-M--JI4I4JH]!QQRT"ELXRVY+5Y<D/3^*O3-"-F/#`(XV$?:^TM',T1%<VIM`M
-M'^#F!->3?/TR#8PMI3V[+C!RS8_0&;?G6X(,-&RVI=3DLSS-X)+701L=3DE'$K=3D&
-M,Y\+`!P!```<`0```@```$4``1A/T@``0!$``,"H`0'`J`$"`?0!]`$$!^DT
-MY4>RH?1]2:'KLA8Z`=3DL1+B`D"`````<```#\(0``X)24F2H$6;JSD276`H2N
-M at A"*-K%?6?EZA9*`S53U=3D*R\@V[9)&X8%2_+SB6C)C*,2!O`FK5(9EG$8\L(
-MRI;[)`,4>P^$PH12Z#H\AHIR^:1P4GNT0NA&OMERMYM*.KB5PE]C5=3D3>$K[?
-M-81A":_;^;R"WH>U/\\&Y""9+R\(8V^5*5V_=3D</3H^`"\F,3<I at P^GKL'4$[
-MQ4-Q@^*)2,Z*5^WM<.Y\`M=3D9(XWF*"F*\ML3M)[9M&VS`ZYX72F!>$Q&T?^2
-MHFIT]N8%AO"<KWU_B'@^"3.$M3HMCM#/"Q9'$K=3D&VZX+`.P```#L`````@``
-M`$4``.A/TP``0!$``,"H`0'`J`$"`?0!]`#4!KDTY4>RH?1]2:'KLA8Z`=3DL1
-M+B`D(`````8```#,(0``L/B&5\PI;W"ZTBY3@`F(W6UE1W"A>C*1CM?X:'KZ
-MR/[J/WZJ?I=3D=3D at N=3DD#\`HX]@PDC<&@+/HW,<Y8UO&/[WSY&$:V"O\FP$8-G:4
-M at V,V<-XG/7?59E16_^/NP87_EUO!VT`L.=3DWO:N*J$=3D$8LCTH2<2:`U=3DA at WF`
-MBU^!>W?SQ+^Y!YE,>HG"F=3D;M]FIZX=3D1@:'*;V^=3DV`SQZY&!7UFP20I#\[EN!
-M^CPPI'QY?X=3D'$K=3D&!](+`.P```#L`````@```$4``.A/U```0!$``,"H`0'`
-MJ`$"`?0!]`#4!KDTY4>RH?1]2:'KLA8Z`=3DL1+B`D(`````<```#,(0``L`73
-M:262%6E8,\BA^O*@LTU*(`D"Y&EW>=3D at 1%#<\$GND":C.P"O#(4*3C%4E`9/^
-MVS_;@/45N$;6O:<,Y`"</$*]D-#7\&-:U=3D,]V.-DY0`L%<)7>$21^F!L%=3DWP
-M,23$L><SUP1SSP5QKT.$3)GK,)]I'5=3D5WC+<,!AR+:XLYJ%NTQW[<;PW>/3$
-MG*T)Y+4/!L1J!OB/B7LD'XBY4.M'!01W`,A9I/?)[/@ICLI'$K=3D&;O at +`(P!
-M``",`0```@```$4``8A/U0``0!$``,"H`0'`J`$"`?0!]`%T!UDTY4>RH?1]
-M2:'KLA8Z`=3DL1+B`D"`````@```%L(0`!4)48%K;J(,[\\(IPUBAGE,F/""^%
-MR%()\U#3@<?QB9ZL+2E1?%A+BEC^`+,6$U9D9[I[@X;-'-?NBQ#MLH^=3DV3$)
-MA6Y&O6M43 at A8V3&S=3D/9<=3D>#J"*@+D<=3D_F$AK+65+0Y#D0TA`#Q61*V:GU%U:
-M75TF'M*5#^;:BE^[W09:>/S&)].BSS`5B1ENQ\#IG;_2MVLI1J_5%)=3DKUL#^
-MBRF9^/2_0&"T^^0%5I3:6`+*Z#8A<H#7$90/V$`V_*>FV)T:S"]'U&7]=3D]?V
-M4;'SB.*=3DQ(<%'DGRJ[;%2-<(LY=3DON,V'J`*2-V[^$1W6>]R7;ZAWU)J61"TQ
-M,*\4`IR*\/^MMXUB+CO@)H0WS7J"U7Z<:8M*>CM%%PWG7/B<4`*E<BLR$IC6
-M]9>G8L`JDR)-2HSYC5K@:'APAR_>@(A\)6QULS+;AP6JU<Q5C3-*-6WT1Q*W
-M1L\L#`!<`0``7`$```(```!%``%83]8``$`1``#`J`$!P*@!`@'T`?0!1`<I
-M-.5'LJ'T?4FAZ[(6.@';$2X@)"`````(```!/"$``2#@RB?YV(6&MD_>(Y_?
-MZG/EO3C]5W-0C0'&UWZ_/9_PM=3D".5;WPQ>J+\*<U51D2YU&8<S]8X$&L2T%D
-M/=3D6\G;\<!0;D2&XJ&8#S7C/*?Q2+V$@J',0`;">=3D#EH)AR#KQ>RJI#C$F[[;
-M]LLB/<OC5.(H7E^<F at KZK\=3D"%07'?I%W$\;1E<SP*UP0+&$.S*@U,Z>>+5R#
-M[$L@<`07P9Y*D:=3DY<.7DG*\?F%X-&+[AY)Z3+P;;7=3D:YXU$H[3/I!\A"5V1[
-MD[Q%4CL=3DCI\>_]91%C1F?-X[<BHJ&Y-U0\G\82.H-W7W#5^0QK2-O+"T+?>)
-M\Z&01<Q8#"N6(<##JF_I\PME\@U!P26M=3D+#?Q`RR[<,WOEP#_XB;T)'K:FP$
-M8T<2MT;T4 at P`?````'P````"````10``>$_7``!`$0``P*@!`<"H`0(!]`'T
-M`&0&28YXYH'.NYVF37-N at 5AH3@DN("4(`````````%PJ``!`R()!V[=3DR^TD4
-M#TZ-,>+VO.AKCKX1IVD`-DAWL5VVJ at F,S^GY$C=3D>PQ'+C48!BRA.X3N0.JJ@
-M#I6I,VF*1Q*W1D]>#`!L````;`````(```!%``!H3]@``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YCGCF@<Z[G:9-<VZ!6&A."2X@)2``````````3````#"S_-5-
-MD%!>PM'4,DEC*)R4X6ZFY, at 3G+5M6'>_L-Y/6_S>!@6"]P),6.*'KD<2MT;;
-M;`P`;````&P````"````10``:$_9``!`$0``P*@!`<"H`0(!]`'T`%0&.8YX
-MYH'.NYVF37-N at 5AH3@DN("4(`````0```$PJ```P):FB:BHPIY[*%!64(3A.
-ME*;>D2_ZFOGEA%C at 8"4.WX.39R7&"Y-A0XX+VO9'$K=3D&(WL,`&P```!L````
-M`@```$4``&A/V@``0!$``,"H`0'`J`$"`?0!]`!4!CF.>.:!SKN=3DIDUS;H%8
-M:$X)+B`E(`````$```!,````,([$P79Q7#`"+HL\4V)]H`!3DR<F'(].DQ%_
-MH?FLT4I*/N&AH"5AI]"#:KYP1Q*W1G5V#0"8`0``F`$```(```!%``&43]L`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE)Y2//$$XS'0``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``L6O=3D
-MXD_NO<:C>RRQOW!9"NCM&S<I:#E?N=3D67Y/"#B]G,FMK90J*[:K^^/.3%,P_M
-MIDLNIO)`EJ_]1X7D9^:G8BOU(S0'TA=3D;#C:'N']7-])-(2>N&>QZ&U*X7[%<
-M9FO(T/%W&1NNE-U;T.O!,[P')#=3DEE5?T.%PA'3/%QN>AKCTI```D3 at 7&I)#H
-M;)FQB$`DXNX&ENO[1?S$9,,OSS_/"#>0&;LI```<``!`!!QOV4Y/Y_N!,R0_
-M^?.R(!S3Y5XY````'```0`6[^DR'3::;'M^'.E68MKG)?*#D-$<2MT;?A`T`
-M7````%P````"````10``6$_<``!`$0``P*@!`<"H`0(!]`'T`$0&*2>4CSQ!
-M.,QT```````````I("(@`````````#P````@``!`!@````'#K\T[7@?0W#3I
-M)=3D02=3D--MHB\(]T<2MT:LE`T`N`$``+@!```"````10`!M$_=3D``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A2>4CSQ!.,QT```````````I("((`````````9 at A```@
-M``!`!@````'#K\T[7@?0W#3I)=3D02=3D--MHB\(]R(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``L6O=3DXD_NO<:C>RRQOW!9"NCM&S<I:#E?
-MN=3D67Y/"#B]G,FMK90J*[:K^^/.3%,P_MIDLNIO)`EJ_]1X7D9^:G8BOU(S0'
-MTA=3D;#C:'N']7-])-(2>N&>QZ&U*X7[%<9FO(T/%W&1NNE-U;T.O!,[P')#=3DE
-ME5?T.%PA'3/%QN>AKCTI```D3 at 7&I)#H;)FQB$`DXNX&ENO[1?S$9,,OSS_/
-M"#>0&;LI```<``!`!!QOV4Y/Y_N!,R0_^?.R(!S3Y5XY````'```0`6[^DR'
-M3::;'M^'.E68MKG)?*#D-$<2MT8.N0T`4`$``%`!```"````10`!3$_>``!`
-M$0``P*@!`<"H`0(!]`'T`3@''2>4CSQ!.,QTQ_[\SY-)>XDA("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``"">_96?2VQ.^H6O+<)"-^.5L6)5-YF8*)871I0:2P"2
-MZG1S:O6\6G(:9CFU?B4Q&Z>:C6D:.%+$6=3D#<*F/;8/(O(3"#K5>WXX8645H4
-M;8#.:WWN-3,!L)$)LB!O437Z\<B]AF?>M)=3DL<<@;[99D_A+C>SZ)\Z(W]$%E
-MN&6OVUU[*0``)*/E![/H&IN`.!8LB4BD+C6FH3)(U)A4>B;K..RG:4DL*0``
-M'```0`1""OQ#/@V!T at X7<B,"RHO`/UI0:@```!P``$`%G1Z8,7BXLMC5$(F@
-MY&,8,P=3D$WY9'$K=3D&ON4-``P!```,`0```@```$4``0A/WP``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]DGE(\\03C,=3D,?^_,^327N)+B`C"`````$```#L(P``T%DJ
-M at 7NFU$LSH'+<K70VZ>Y35?MVT5H.P<]@L!\:9Z1`>FZCFQ\M;"?P3=3D[9(NPT
-M[O$G=3D3)MVLFUOUX.(I+.5"UG%7G;JE6Y=3D5,+O1OZP(\I`_C(K%:=3DK4(`;>`%
-MRHF?"G'L;B=3D?=3D:B8,&I+R?MK\=3DAJ$/^1C#:9/<?>+-!:CY-;\;*>QE.6 at N<$
-M8(DFAAB[K96`VAT<5S3XQ,S8VC5=3DYTL!:0YI^YT$4]1)(5E$2%^/K=3D!#)][>
-MS>DON7*?QV=3D4#9'?:?^,"$H*<$VN;D<2MT;$_ at T`O````+P````"````10``
-MN$_@``!`$0``P*@!`<"H`0(!]`'T`*0&B2>4CSQ!.,QTQ_[\SY-)>XDN(",@
-M`````0```)PD``"`^]5>5JU0&'Z*,@<$K2TS7(6H-,`4B6D&T5%W@<L0A-+,
-MC$\RSQ\0_AJEHQJAVV"4T9GJ9M:)-UG<L0V!5/FI>69M1+67&A\K?JI>)'0G
-MXE)^:J#V_YWB$*L5-%0<NW(S at _G$J<2NVLMW/I4N/M',`6'+8&/W6[GDU$J-
-M=3DD<2MT;4'`X`'`$``!P!```"````10`!&$_A``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z2>4CSQ!.,QTQ_[\SY-)>XDN("0(`````@```/PA``#@;"YFADP#%)PR
-M at Q]:D?:?JV[F])BI`PL[6/82NV?]3Z':5_S-(%WV^VJY5W!5\4Z/8!MQ at 257
-M3J,]BN(FD",TF_R>?@@];NBQCFQO)#R$RMF!1X=3D.M>?&%[8K2+NK91??9'A4
-M=3D^V%"VQ;JN1-N8MG%QNW;\5'%U+>^`!MR#O:!=3D\D/)NS1^;QEGQIMOX!6"ZP
-MCH>[P$29"018XZ8'D)F_$O.Y'=3D>G<7*Y-^D'^U:-=3D+`_3_2]B0_[2.:O3.@*
-MK%7%X$\M3N"EZ4!2?84,<AOZBGV at G.I3-E*Z1\#G;T<2MT:Q*0X`_````/P`
-M```"````10``^$_D``!`$0``P*@!`<"H`0(!]`'T`.0&R2>4CSQ!.,QTQ_[\
-MSY-)>XDN("0(`````P```-PA``#`Z?R:'V+2F-;W32`/'X5/3DLT9Q::V4&X
-MHLDCMAEO.D2"./5@@JOMBAGF)!ZI&9NV)-J- at PLPUFPSF<SRE8"$/.SRIFQA
-M\+?/M5'IHC`'9\95=3D/DQ[W`_0##^B1.D`,S,/=3DVP%7ZXY+B+F/NV"8"[FC3'
-M#+_$7H`CQ;)^^>X!VGG/>:;5!`P!T9O5;#CT at C(I1R=3D%#CXR9Y1XI".'B?:@
-M/^49W/^-[<J+-)7P/5:9'QM!*(#BK]AA*K:^@H-'$K=3D&2C4.`&P```!L````
-M`@```$4``&A/Y0``0!$``,"H`0'`J`$"`?0!]`!4!CDGE(\\03C,=3D,?^_,^3
-M27N)+B`D(`````(```!,*0``,&Z`+D0F\J/!#]=3DD,N+'MQP$21!7&#8&5[=3D)
-MHI!XO>T18AL2XF>OZH1N3$:I1Q*W1AA1#@!L````;`````(```!%``!H3^8`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y)Y2//$$XS'3'_OS/DTE[B2X@)"`````#
-M````3"D``#"WU5E\]\*I<V,YODCC"`"&J:'!F;`2L;$LXDCH\P)*GJT@(T:)
-M[EO^6OB)-$<2MT:@:PX`/`$``#P!```"````10`!.$_G``!`$0``P*@!`<"H
-M`0(!]`'T`20'"2>4CSQ!.,QTQ_[\SY-)>XDN("0(````!````1PA``$`G;D0
-MR">-T`.F5X"<ED at E0MK2C/\F(<4A1Y(*,..44OJ=3DF5T!E1]J_(P'G2)X^:O,
-MTQ3_X=3DU]8S)V4%O3)AV3+-:?Q.DRY/1+^TEQ0/+-4H)Q<&9)C7YT[1),Z-O<
-MX_!)>YH1+UE/]X3O&7233[7_Q0[-R?<!Q]O at T1MG'2.3$!FZ=3D_7SJTE`>F#S
-MO62641O4D*SZ at Z2"R.,?:-H5H)K322<E+4D=3D+53E=3D+3V/MRC$']&J`WE-:@0
-M$PY`60(]*,!K49K&OOV$.K5>)R]Q40R(&4'A-SS#]">KY&$JR5&QHBZ=3D[N8J
-MR`WT7=3DE$,&1A1)16)$(XALJV49X.`-M!1Q*W1IQW#@`<`0``'`$```(```!%
-M``$83^@``$`1``#`J`$!P*@!`@'T`?0!!`?I)Y2//$$XS'3'_OS/DTE[B2X@
-M)`@````%````_"$``.#L]*]YEDQMR`LYG'[T]&N?:&68['=3DP4?03RI928VKE
-M at 569>T!WW^TCZ:5_0!?+*NG3"F;L'T(*K6Y/"F7>BH?E\P!#(4G*-MH\F*ZC
-M>AROY87?WLW#)@)'F4GQ.Y1$OJ#@;\X?7?G&<`&]"GWHP2#\^E532Z4K;LN0
-M,JZCU,]/+-&.DOW1KGZO at CS<T8]WB[$9(5].71F:-KIU5W0</_YU\6R6E2,W
-M`^%_Z;PC]8U.E7ZB1$A%K#I:6WU!H+[-A]*!B9[>+,R7$"!?4&%$*G9V$*#1
-MT6-#953G:/(D1Q*W1D6'#@#L````[`````(```!%``#H3^D``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y)Y2//$$XS'3'_OS/DTE[B2X@)"`````$````S"$``+`<
-M;+\JT.9D&[G$5)538M'XE2U]8L=3DF#25@])*,)@[-W\L4:.)]^5*"6\<S=3DZS^
-M!\59L!:$_6OJ\)90;II*OJPD>)\B8LH#XS at +[9Q(X88<FFE^C,GCK.U^A=3D_;
-MWTCM,-1";R'R3<,I/"_)8&TMDE008?5++D`LA'RK3(+FI5#3B5F<0^`,*&'H
-M2A\]=3DX3A$`!_LFAM)T7D[4R\P;0*,&WU*=3D_#G"XM:U:;+E]91Q*W1KVI#@#L
-M````[`````(```!%``#H3^H``$`1``#`J`$!P*@!`@'T`?0`U`:Y)Y2//$$X
-MS'3'_OS/DTE[B2X@)"`````%````S"$``+!BPWS(/7Q7&JQ;L0+_"5!X8D'V
-M<SR*\A<*G=3D*#WWQ9!"$UWAYJ8)W_/8CH26I++E`';,-LS9$A=3DQ;0X::A%3XJ
-MVO&-=3D4:-3=3DN&+S>-LUUHE76S`^&#=3DH^20&+4']LR,(2)@/\<9`SW@[>+!WV4
-M>\B0-;2,4T0X5=3D7V('8V\?S9)Q(9(B'C7BE'W7CK5K16OS3!BEO<!D-53>`,
-M2VWKWD;&\);-A-8X9^26ODOK1Q*W1A;'#@`\`0``/`$```(```!%``$X3^L`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<))Y2//$$XS'3'_OS/DTE[B2X@)`@````&
-M```!'"$``0#M"SRG"-8#B4LD-8$1ZQ`:C'8-QFE9J9*8P22>Z02!^5NS/0=3D;
-M(OL_JE6YFE';)._0?H4E6[6\Y,+\1:R-MU3GQG6!1RYNJ+9:6&8Z)IJW<_ZU
-MS`_%-AVXG#+KLLD84;X"O%$5R=3D=3D at J_=3D_3+DI"B$H9M)&%TZ0^WL7Z.%U'4W3
-MMA'&<R2Z;3/^?^Q3J54-*D(-K_[,G?5AY2IW,EV9<?9G#ZCXS1V.N0OK,<++
-M\-S at 5[^@QM?<[6F<:O%&.Z=3D88U1"9QI<^JZ8/U!C=3D&*RQ(;B^LH3!XH!B"=3D?
-MLPV8X+]8GLFE]P80`\G-FCF)+^<",>I#N-S3WUV8X`$@7[M'$K=3D&5=3D(.`!P!
-M```<`0```@```$4``1A/[```0!$``,"H`0'`J`$"`?0!]`$$!^DGE(\\03C,
-M=3D,?^_,^327N)+B`D"`````<```#\(0``X#SQ/%D/G!JFXJRR2R[W`-GHR""2
-M at R;ADH-_`9 at WIKXSS]7O=3D'B"]Y`5!1;I[80WHEEDL;>LLV&,\R4GO0T72P`L
-MF``ZP]8:(*RU$?XH>SK!B,_N;;D";(81+MY;0FE<?2YZE>W>16;*RKT(L-G-
-M*YX..(&4_[T+!;:L7/C5L^?NQ+6(*[P_18KJYB'[_QR-;2IK^V!2(:IW%REF
-MGFMR&D8_(W2<$KFB\9B\9OB>.4T"Q;KU!.\VL+E\\@AM&G\V*RH((M=3DT";JQ
-M!UX^;?9 at _<[CR"!,P=3DA(3M'\@*=3D'$K=3D&K>(.`.P```#L`````@```$4``.A/
-M[0``0!$``,"H`0'`J`$"`?0!]`#4!KDGE(\\03C,=3D,?^_,^327N)+B`D(```
-M``8```#,(0``L(H$O'H:KF$YL\^2,9C;8WV7UK';1DV9X!YQ;V9D>O_)]'/]
-MQGCNO'![\T%+P'.(1OUW!I+N;*>-W-;Y`@AI:[8L8%!:'7]2?KS'G3\.>K5@
-M?X^%%EV)>ZAWT-IGM^!^8$7P?X at E`JEOE<%E`#RC7K!`QH%._47<[=3D[#'H/1
-M\*GVPDARL$V=3DK=3DOQ_%6L\]3PP5(G-]S at 2[#?E"6M7^N&A4+^-ZMZ)MF@[Y`:
-ML*)'$K=3D&N`4/`.P```#L`````@```$4``.A/[@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KDGE(\\03C,=3D,?^_,^327N)+B`D(`````<```#,(0``L"&"$8YX8(W(
-MP/L?#:DWAKV[@$"H'^VI=3DE?V3DQ?)I%!>EJ=3D+2,Q+Q')>TL>P\`7`M^]17-1
-M:C!.EBHX62D3@!7U_%14*X2\[_YL[@@F^78^(H,P-?.ZRE9R8MBPI],E>Y]8
-MU99AQ7>)`)YC9XH[W.2ZAUJS;R<\2!J/W)26L+O0&_X4WQ]K:N`5,H=3DKEHQT
-M_#A9A>#EFEGCQ%<M*`5:.@^CS7 at 6*N[OM7)7,=3DM'$K=3D&8"L/`(P!``",`0``
-M`@```$4``8A/[P``0!$``,"H`0'`J`$"`?0!]`%T!UDGE(\\03C,=3D,?^_,^3
-M27N)+B`D"`````@```%L(0`!4/JR'_6U?F]B:.;O'0YI.8KTP'S:1 at O^;%=3DH
-MML#%R"[+PLK)WK-*9/SC:C;CT\OYJ7G&BAV6,C-7\%RROYD]"7#2Q.9]38.7
-M5M*R9 at QUM4@@7QP*MGR@`CI<V$A\6UZ@\SNZYIM"RD>%57U.=3DF$P7PK]1+*(
-MCUD at VG/P;38<%&J5:?:X7W`^/DR.A)X(C at XNB48TYEG)1^3 at H+7HQ:)+R&'(
-MFN`:-X at T/%L'!3C*S]Z3XIZ*\P?-;1`??&58M*@]Z-AP=3D1[FB(O+J^R*02H#
-M=3D"-)M=3DXB]0]A>R>Q4Z4H$IU.65N5>5OQUP"TBBK1 at N#)X?*:=3D2F+%DB>QC#@
-MU0!0V9#X=3DH:T`CO)-*4WTO.L4+1(^>!'903*2^=3D]\8<SRY8\!H_ at O4,!#2N1
-M";3P.=3D;>__!G/GPR.TQ`HZ5Y!'"_;@@("]_(6R0X>6:YW-4?2!*W1F\>``!<
-M`0``7`$```(```!%``%83_```$`1``#`J`$!P*@!`@'T`?0!1`<I)Y2//$$X
-MS'3'_OS/DTE[B2X@)"`````(```!/"$``2"LP]DI?W4"8UQ'@VE(%#(@@`6I
-ML'LM"QAMFC:J4?K5_-5?P2&\3HX1-[+`6'BB+QJ2;5PU8S,)1J/CJ?/2T#6&
-M)41#29\K3)Y8'MB7,RZDN#QX$50VH^&INL0=3D_["<W?`HAH]VCA3Y1>X6A'2@
-MOT*_*LW.N&?!P8RXBY5?X90]3R"^J6R at J-U_S2K!WROH?>H,'7>U$<=3D]##1%
-M&H34*?BR'3'F2C'@;#GM'_)<R0OK@@IZN#B-B0=3DCB$TKYJ<CX+R4G=3D$>F at U-
-M^A[JI10`V1\S_I"&(&+!<V]9QN$4KMGIHC-8);B'B_LH3PLSP;TL>LCD7\H(
-M0+YO1G4`:RI=3D[+_C3::UV1S,:AE7-J"`4GYJ<=3D<MA(^G&7HDNZ$O1D at 2MT;E
-M10``?````'P````"````10``>$_Q``!`$0``P*@!`<"H`0(!]`'T`&0&250N
-M,*%FSMQ8.WAY[)_JAT,N("4(`````````%PJ``!`[@\Y%P[-;W/;K[G%<=3DQH
-MSL`K2BI/'C&S^5N"(%S&0&;3!QUSP>>D&"O)%I+VTR;2%2.6 at 5Y).TJG7[4T
-M2!*W1IA1``!L````;`````(```!%``!H3_(``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y5"XPH6;.W%@[>'GLG^J'0RX@)2``````````3````#"AG at 4'R.1C8(J-
-M)JCPV)J+^NU.9SO,];<H']$PH?&>>$0M])]&:6^Z5]?!?4 at 2MT;G7P``;```
-M`&P````"````10``:$_S``!`$0``P*@!`<"H`0(!]`'T`%0&.50N,*%FSMQ8
-M.WAY[)_JAT,N("4(`````0```$PJ```PPW&15JAA1.J9J=3D01>^C*;/8SD'?B
-MEWJY<LPFH_?0D*?(?"J845`=3D[;>#*[E($K=3D&0VT``&P```!L`````@```$4`
-M`&A/]```0!$``,"H`0'`J`$"`?0!]`!4!CE4+C"A9L[<6#MX>>R?ZH=3D#+B`E
-M(`````$```!,````,(=3DJ'KF*G?$LK21,E,0P]8GF<)H?UVAT!IRHX%#=3DJX\9
-MV,6@(VK.[,!8R=3D?O2!*W1K]H`0"8`0``F`$```(```!%``&43_8``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DETG50%C;\9?H``````````"$@(@@````````!>"(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``]J=3D066IGW6-P
-M#?K53-:BW=3D,AHHC!OXRTM'[NH9#6-W!SSBRD*Z3@@/M6+2NNQP=3D[Z\RFBSO0
-M,]QXI&FBIOJ?>J!\6ZSIMM"*H at WF;,4:]0#-6+V70V7KDO*T\>WLXZ02WS`)
-MX,%,]3.QAAQV;&65UC:2P"Q@$K\39CNO/_+._S\I```DYC7WG!SO+4[LW0EF
-MF!V1LXR_8,I_/.Q8W>EKW6GQ!/(I```<``!`!!8\_4G412__#L.AQVBJ%;I;
-M+<[P````'```0`4,K;)=3DI;M/O\;Q;R[&F3!WQ';[-4 at 2MT:C>`$`7````%P`
-M```"````10``6$_W``!`$0``P*@!`<"H`0(!]`'T`$0&*=3D)U4!8V_&7Z````
-M```````I("(@`````````#P````@``!`!@````'1+D-?5CP7]`K\2^V,'NII
-MSN=3D:]$@2MT8?B0$`N`$``+@!```"````10`!M$_X``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A=3D)U4!8V_&7Z```````````I("((`````````9 at A```@``!`!@``
-M``'1+D-?5CP7]`K\2^V,'NIISN=3D:]"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``]J=3D066IGW6-P#?K53-:BW=3D,AHHC!OXRTM'[NH9#6
-M-W!SSBRD*Z3@@/M6+2NNQP=3D[Z\RFBSO0,]QXI&FBIOJ?>J!\6ZSIMM"*H at WF
-M;,4:]0#-6+V70V7KDO*T\>WLXZ02WS`)X,%,]3.QAAQV;&65UC:2P"Q@$K\3
-M9CNO/_+._S\I```DYC7WG!SO+4[LW0EFF!V1LXR_8,I_/.Q8W>EKW6GQ!/(I
-M```<``!`!!8\_4G412__#L.AQVBJ%;I;+<[P````'```0`4,K;)=3DI;M/O\;Q
-M;R[&F3!WQ';[-4 at 2MT9TK0$`4`$``%`!```"````10`!3$_Y``!`$0``P*@!
-M`<"H`0(!]`'T`3@''=3D)U4!8V_&7Z5/;-:$@&3YDA("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``%\I`4!M[>FW!;(S^H5(47'"-1Q;-@'DCH:F-Q5#QTYSO2A+*V40
-M>W5[\E=3DJ3=3DDL8\3*]@]!+>^!5AZ"U!]BSUH"6;V:%D9VC-UYL:=3D<BARB=3DD_(
-MX-H_C1KZ,&U[_4&>[+/;/II?(I]_,$C`ECBXLYV;RJAS\K*JMNR(SN\VE3LZ
-M*0``)#1QL/KR=3D!V9+H:VWT1!9C[Y<G9GG75<PDI^3AC7Z=3DY5*0``'```0`2Q
-M?$*<`;7)BA+[C:VK>H91'O"_I````!P``$`%$Z]_,HLL4%D5$EH3L.CZ9PTJ
-M9^I($K=3D&L]P!``P!```,`0```@```$4``0A/^@``0!$``,"H`0'`J`$"`?0!
-M]`#T!]G2=3D5`6-OQE^E3VS6A(!D^9+B`C"`````$```#L(P``T)=3D;W]IR6S-V
-MO at BFH(2QZ`T!8^]U#:.M5%@L;X;Q8/M&V08:?@?,H>N7IW_1NW[GL5=3D%1&G(
-M7`GC11`1^@Q3[>)4J7P/900(HRW@<C(]OB/#B-KA\6K`X^+/:QY89R.DPF^$
-MF3%Q?C32G(^&K<>OH"$P,5%`FX6G!T90X)^)6#.B4YT_UZ(.,UJR]%LP6M'B
-M)%^7H5-,:EJ`^AXKS_7D94]*#9"ADZ>D;>)<WFGRBDE'$7*Q8(<>:^Q8X^&@
-M,QZNII at R-+1$`"O*M\Q?74 at 2MT:E]0$`O````+P````"````10``N$_[``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B=3D)U4!8V_&7Z5/;-:$@&3YDN(",@`````0``
-M`)PD``"`9G+!>Z5BT8712#OJ+P1:/[BC(]'5JE7E5*E:&R&0#1($T5,.[P?]
-M/N#TX?31D<!/NR3#\J[+[#.1K]X+QHX$;MSW]X!^6.:B-5&.X,;,_.Q<:K1;
-M=3D>!;J4WZ]8E+KOD1O8NXJ.,1/%H.&#FSH)W\LF04BWV]=3DAJ#;:+[$4 at 2MT;R
-M$P(`'`$``!P!```"````10`!&$_\``!`$0``P*@!`<"H`0(!]`'T`00'Z=3D)U
-M4!8V_&7Z5/;-:$@&3YDN("0(`````@```/PA``#@V3I^VWB9:@^F@*;?JOX`
-M64D'F&M$P)+3&^(>(KC;AZ]J*VJ.`G5"L.?'OC9@:,$V6OM^$G0]A0[H6JE_
-M!>GB:TCVI<&:T"R2MZD2B2,HQD\[(.QYN2G at Z5_2>BHHW"9F*#C.]/[2TXD'
-M'J34PG-904&A!]&G^X]9>O3^1?"C<NC4G9\+4=3D0SY9"43)KIMZ'0.:+*SV("
-M[KN=3D1T7F'L1KK]\(UQN#_DYZXS=3D;6_T#IC*0,/0'KWD]"6(YLAAT?A00-1'#
-M"B`&)>(:;<S7ZT?\)3^DPKQ>?N`0(@P);$@2MT:V&0(`_````/P````"````
-M10``^$_]``!`$0``P*@!`<"H`0(!]`'T`.0&R=3D)U4!8V_&7Z5/;-:$@&3YDN
-M("0(`````P```-PA``#`<CBE^6 at _1A6;*%Z102[_"/<=3DAR0 at 46C^FK3/?\R@
-MG^%I,?,;/W)&*]AB<4+HSEQ*_'EYC\8DI%F9$$9 at S/2[8!AWWDQLZ7NPSK*8
-M5SZ7>$HRAJN3"VX$_P/AB(O[UAO8]'SJ:'L^^)`V(YE_Q.RXLLHSPUG<ECFA
-M6:&/(V6LH!\\N6/6'_JVQQ7=3D>`DZ?RMHTA!6W*6XT6QXKB0[L>L6&XP,[EVA
-M>O<&]>C%FAY)SQ=3DY/]8Q%0LX").UQ4]($K=3D&,BH"`&P```!L`````@```$4`
-M`&A/_@``0!$``,"H`0'`J`$"`?0!]`!4!CG2=3D5`6-OQE^E3VS6A(!D^9+B`D
-M(`````(```!,*0``,`QN!)_)O!:D8IX],_**ZP)0%SAKQ9\3B.%'Z^#FEFH/
-MR$<W_3 at 75*J*6W;Q2!*W1EQ&`@!L````;`````(```!%``!H3_\``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8YTG50%C;\9?I4]LUH2`9/F2X@)"`````#````3"D`
-M`##W>2J^:B-[!HI55"-CS>D2ARLCI;M<1D#JPKJN!=3D*0V(`F1`HFW,+7)',K
-M<D at 2MT;?80(`/`$``#P!```"````10`!.%````!`$0``P*@!`<"H`0(!]`'T
-M`20'"=3D)U4!8V_&7Z5/;-:$@&3YDN("0(````!````1PA``$`?",3`3([)X:U
-MAP>+^6.,)J'X"YPC(!T`:=3D9V-Y.W#%R\'I;LNN6&H at 5J+]:\WHN_$;@)S"RK
-M-3_N/AS!31)[6':P(*M#29)$FJ7M9<I69H>TZD>B0SOA-W73K>6Y347PQ5C3
-M/AQ=3D8#O%1U`N+W/*H,Q'LX>_1AYSOH/J!VM622FRU^*T.`YA[%J.#Q,5%V16
-M:=3D?RY(*E&@G at G(#W8K)-5GH[!_WM!Z%.7T8PQ2`TKXY?@'72%=3DD_2>5[.5'G
-MR!8GSHD'!(;1E@%W00QH,Z-Q5%-$.Q&CU)ZZ$O'+H05]_QW:"ADZD1XR/:!+
-M8'FUD"=3D]N_2!8/\83,*F7S#V2!*W1L-M`@`<`0``'`$```(```!%``$84`$`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?ITG50%C;\9?I4]LUH2`9/F2X@)`@````%
-M````_"$``.`R5-;-5`*-+BL!`*:_"Y-"FP*..&E?K68)5'9,IL(LCX0Q")L$
-MW32VL0WS9S#SOGE3L(:/2A(KG'ED>#`.6`/<5/3L)KW>I"1=3DK3)NI1W-FTRC
-MW/(;.TCETF/RSKY3QE\.,,[Z!B1PQ2!=3D)OCRBT,?AG>S%P,$N?/1`Z2J$C'5
-M[\)>GV6=3DE5.3.-&A,:0^-4@>UVYUZ#,J#_=3D<6JS)9,DZ4#E8;<6RN4:FYOZY
-MU+1?VXT/1D=3DG)`AM]#M;N1+Y$2!6&(IOI.N.>XE:ZO3TZI*:+8:P.XM3>B:K
-MTZAT2!*W1C]]`@#L````[`````(```!%``#H4`(``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YTG50%C;\9?I4]LUH2`9/F2X@)"`````$````S"$``+#<23\'%LYQ
-M*]ZL at W&OC'3"T<IC`).?);"TM)^R""QVK#EK-2S3V66^V_<\JO&@-$*SB^3K
-M(_OO2B;SNN\=3DFNQ$N?A7&")XY7/R-*60GN,[5$9\;'&(!`GA(XF"Q7#?9\'@
-M<(7BADPF+6(%<#L^!+[Y89B9!Z&BZ at 97#T3L_ at GMM[KFD!Z(=3D6EW>1UY6MJ]
-MC=3D2K at 1(C$EQS$65_#&E]1\I;ME20>57/[VR_"P\K2!*W1M"?`@#L````[```
-M``(```!%``#H4`,``$`1``#`J`$!P*@!`@'T`?0`U`:YTG50%C;\9?I4]LUH
-M2`9/F2X@)"`````%````S"$``+!.0!;Q.A;A$FOLO.SR3G:T;S/0:_0WY5[;
-M:).[7P"O^^VD]E9K@;9IP+S"G5D1:ZUV=3DYGSZV#]`H1'I^6A;[M)$IBT=3D!7S
-M**VL^-?3=3D;>E7<P(]IS'5<\R7[?^."[L676O=3D6L.]C(7/:Q[N.9)F/0TIGEN
-MW5D_*>%4T-3]D;@4>^0L,>]&"5([OZF8$'B\X\,ZT08_S.343D(Y%UC%LM**
-MI@<ML'DO4"/!>7XB2!*W1D*\`@`\`0``/`$```(```!%``$X4`0``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)TG50%C;\9?I4]LUH2`9/F2X@)`@````&```!'"$`
-M`0`-.T.V'-Q3>6@?3502OJY)#J+<F-DRC*-[Z;&36W;'-M<"WG+W;KB,SE99
-MP7NJ!?[(6$&"E;E62+'WOL-+B_<H0[@BU+-8`K)E5YM%"4P)O\<)=3D>O/%U+'
-M9W7(EDOKM1/LQ?2L<11Z^&RHNJ[\K1=3DKC'"4/9X67`T8EG5'G)HR!@5KC at UK
-M*YJ`-^*H0J]DOS;7FDG`R.<RG^/XYX-B$^VH:U/%>,5-ETWB05K?.7;RA_%U
-M[_G6ONI25%"8=3D[T=3D*7X,BT_9)Y_;KC[7'^<FG=3D2`C'T9`]7=3DXI2<RM/KSZJ]
-M&FO:O.MU3PN&C7'^5`E>5]Y1$\K."R<I(@]XLJ9($K=3D&(,@"`!P!```<`0``
-M`@```$4``1A0!0``0!$``,"H`0'`J`$"`?0!]`$$!^G2=3D5`6-OQE^E3VS6A(
-M!D^9+B`D"`````<```#\(0``X"(D4(*V>D>2I%PK\IFLJI>[*YD]>PFDR-!$
-MDDI7Q3O=3DI55S`YP/N:*];#:!ZB3\(HWMGYI=3DCO6P.(U=3D/M:EV=3DKOP?'VI0TD
-M'SBX/I3H^K-;GN^\J+*.=3D19$_<2K]:#CN7N at 4;%KL(OEYZXGC;-XK4CEW!/3
-MILDN'EOES^=3D;*^4BT:(NX2C=3D:6QQMX6D`-YQ at TV>K<`A`,"^["@N`9M:`&B*
-M*WN+^L2'*S/$ONTS;99*<'_6P)7]!S4T9W'<)K/Z6H7;(Y$YT at 5I'#=3DS%D?=3D
-M-$`NU>I<G2CUCD.`:XU($K=3D&I]<"`.P```#L`````@```$4``.A0!@``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KG2=3D5`6-OQE^E3VS6A(!D^9+B`D(`````8```#,
-M(0``L,763*G<K3^A+BG/-]@#<-I)<6H^"\8<?G<CGC72(V-&Q8QA(ZD37+G>
-M)@*2G*HM./0-WI$_$X<X6]Y*J67-_76\'\QV+.=3DAYLNNLA+5*2]*[^YNAD*Z
-MNL`-72%D`@ZHWOT at .V8`F[/!B<97EAY#,V`QAL+Y#2GO<(QD'RK_ITL"599E
-M,MRN4VW.VARU]UU>6K184<^QMZB]0!Q,TX8'&;#0Q@%4'-^ZVT+T;01($K=3D&
-MF?L"`.P```#L`````@```$4``.A0!P``0!$``,"H`0'`J`$"`?0!]`#4!KG2
-M=3D5`6-OQE^E3VS6A(!D^9+B`D(`````<```#,(0``L-S=3DDM/R<YK<J8X]_S,P
-M#[OXI8:W5S3-VVQ-I$'`LWCXQ"3?A#O-Y;@6<\@VTEQ6CVREV^>H/*;F59EI
-M6F.AC)L:,?%HM')2CU>=3D"B2&(=3D<OFDL12W3MU'&,+[EW/8G:6N<8]WC[<P&I
-M.^/O[S3ZN4(\Z7HWZ2_K76G=3D+"ZPJO$Q>`!SG3\?SWK6(?&Z;T=3D,D"S?>NG$
-M.IV';86E8ZZ&(]]`ZT7>>Q at G&X``9A!($K=3D&=3DB(#`(P!``",`0```@```$4`
-M`8A0"```0!$``,"H`0'`J`$"`?0!]`%T!UG2=3D5`6-OQE^E3VS6A(!D^9+B`D
-M"`````@```%L(0`!4,G>1O(8!/8)\0-V_9J15>C]5`/A*HM%1EL=3D$;!JJ,$8
-M-A#[J)`GLLYD at XEZ>8>HE!/!$^9LMZ+>"1PV3 at JUS#NXO%7^X\VG)L?$@#J,
-M#!_BJ]4')RKW'FVD6B4T;?%7(QMF*3))I:6/=3D9#,,IX!9XHBZLJ[^2UI#SV&
-M`;(RBQ.W at G;%RZ9C92ZAP8U)&L;/+C\C0'_`2A)GY!8X,7O/?\(:Z^\!.[FV
-M.^_39"A\YM'WWE^5ZW8H,[_Y&A+FCGZMB\V;8:^`!!7N%BF'YYWO$=3D8FUX%Q
-MFEOT4N_4GTFJ/0/T7RMY,_^`L>^+&I[7B![P(RN`-:W.6UW;G77%8U'HZ7QO
-M"@8%9O(/`MO1'Q,GJ.>T?=3D8M;NT##1:W)DU!RI!9QV8'Y8`15+.05B0ZJGX<
-MR/^0PX%=3DZ1,!18($<2-;6K*/Z#S+`E*SWBP%\F6Q2!*W1B-7`P!<`0``7`$`
-M``(```!%``%84`D``$`1``#`J`$!P*@!`@'T`?0!1`<ITG50%C;\9?I4]LUH
-M2`9/F2X@)"`````(```!/"$``2!'.D>Y`J*IN]#W2-\-0B5!&246<]-<5%[T
-MT%ZXUH])]D0<VK]0Z1U<09;%%!A2SC[HI!"IHJXJT#JOK'^H*NRA]$V*+?@@
-M4KCIT4.MF+ZJAPEN]GD&]$U*!<D2.:H at CAE_N?UXCZE8G?[D0FVIGX]`S\VS
-M#>-%0;98B]V-MA2-;\,!:L:.6QYH4&<,CR"P-[0&L'H8_-40.-P>FY*JW3)7
-M"A5)$K[XM*D/YJ04+T>[email protected];D(+9VZ\U4R;])]G:S2Y(N_Q;RJ&,;4`V;"M
-M<A,`'5_0>*U%XA"!,S!Z^>R;-8(G!T5&2F=3DW<W)U3PM8!2U:J:(<`H:@P/3L
-MR$HD8S'M]FS at Q#DFPQ>S(6WAA[%5?\7D0(._4Y.M^TKEST at 2MT;&?0,`?```
-M`'P````"````10``>%`,``!`$0``P*@!`<"H`0(!]`'T`&0&28%M,IKY+,24
-M5ZV:.@'96,4N("4(`````````%PJ``!`0[$;LEGW'%&<,RI33BS]4#WF=3DF(N
-M5GW.6K.?<"5>;LG&%$@.#VBIE57;01ROU0`R([9/,98I/(/)I\@F2!*W1E6)
-M`P!L````;`````(```!%``!H4`T``$`1``#`J`$!P*@!`@'T`?0`5`8Y at 6TR
-MFODLQ)17K9HZ`=3DE8Q2X@)2``````````3````#"DB/I]\8NF%0SM=3D"AA^%H<
-M*$M42$8CE&+RX+SPQ`(2K%TN/V;IEU/1:0C&K$@2MT;?EP,`;````&P````"
-M````10``:%`.``!`$0``P*@!`<"H`0(!]`'T`%0&.8%M,IKY+,245ZV:.@'9
-M6,4N("4(`````0```$PJ```PI$)XH- at QT,.3DJ at 8U\W:A?Q`RB<[[T,KF+$X
-MP!P7UF93PUF,X$!L_!UH6%I($K=3D&"J4#`&P```!L`````@```$4``&A0#P``
-M0!$``,"H`0'`J`$"`?0!]`!4!CF!;3*:^2S$E%>MFCH!V5C%+B`E(`````$`
-M``!,````,+CPI3$;0:C at Y!M!$TJOKB::F.L1%'$LI['!Z!1H?U68[L@>/*3/
-M<HJ at 6]@R2!*W1O*?!`"8`0``F`$```(```!%``&44!$``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE,B4B^QEVL:$``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``U3!=3D;G[E*RGX>28#PCAE
-MB=3D?#[B4&H at UZ/;UE:NY3UWCEP98R<6`M.\./\ACTHGCXMUF(L/9@;[(9'VJF
-MH,-PO?7%/F]5AO5(+NF3J*N=3D%*`POX2MRP<A_M8#K6.$:"-MP5]"O@;(=3DT^W
-M`,DT)7;16L5D8&\K8CPR`1"DV.8&LF0I```DIOHL;4UY%#+'UY*C]7S'LSF2
-MM5+X$%/H4.\NQQ."9H at I```<``!`!-J'-D(N3ZGQ:.3^4#&KMB-JR!B(````
-M'```0`7)()5SVM@,-3A8F6RIW*=3DG5Z+34D at 2MT;>K at 0`7````%P````"````
-M10``6%`2``!`$0``P*@!`<"H`0(!]`'T`$0&*3(E(OL9=3DK&A```````````I
-M("(@`````````#P````@``!`!@````%TW</P3-ND')*111/1,<>4'7'`H4 at 2
-MMT;&O at 0`N`$``+@!```"````10`!M%`3``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA3(E(OL9=3DK&A```````````I("((`````````9 at A```@``!`!@````%TW</P
-M3-ND')*111/1,<>4'7'`H2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``U3!=3D;G[E*RGX>28#PCAEB=3D?#[B4&H at UZ/;UE:NY3UWCEP98R
-M<6`M.\./\ACTHGCXMUF(L/9@;[(9'VJFH,-PO?7%/F]5AO5(+NF3J*N=3D%*`P
-MOX2MRP<A_M8#K6.$:"-MP5]"O@;(=3DT^W`,DT)7;16L5D8&\K8CPR`1"DV.8&
-MLF0I```DIOHL;4UY%#+'UY*C]7S'LSF2M5+X$%/H4.\NQQ."9H at I```<``!`
-M!-J'-D(N3ZGQ:.3^4#&KMB-JR!B(````'```0`7)()5SVM@,-3A8F6RIW*=3DG
-M5Z+34D at 2MT9?Y`0`4`$``%`!```"````10`!3%`4``!`$0``P*@!`<"H`0(!
-M]`'T`3@''3(E(OL9=3DK&A<2HL7G6>*MPA("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`"G6-#)J%E3MA<VK]43^GH[OH(I+^]UC83F5H,9=3DK8V;S9MA#DX.O]./OGT0
-M?^4.R/.DND'0;`!SEUBT3'H8(1KC#AB`'<^+J$.];G#RY,0Q_=3D=3DT0]E,,QX8
-M7R52 at 9HGZ3VR::.3%YJ>&\3`?[+<".X=3D3,8JZ*0)8V9]OQ)+$#NN*0``)&ZC
-MUH$L>58C\6<NZ875C2*6BLLANA1CF46S9JJ=3DB6`H*0``'```0`1TSM>0XV$^
-M%(VCKIO1(NO. at 8R.BP```!P``$`%_8&4`3/^:=3D)GI04\2#38[)%O^-9($K=3D&
-M!A$%``P!```,`0```@```$4``0A0%0``0!$``,"H`0'`J`$"`?0!]`#T!]DR
-M)2+[&7:QH7$J+%YUGBK<+B`C"`````$```#L(P``T*]VWTW<YGWR8],=3DL4ZO
-M.\VMJ>Z(Q3C793?HBV:J/4)3[3K2XO/VVF[P:I_FBGN.C)9NKWMITB%X-D at 8
-M:^;7I+&U`)0!2TEF(2?$F@)#)5!"@8Z4<TUC#-N#_BE\+C?UWT5H9T;R<FQ;
-M`.0\Z$39$:\"9]&Z6*H7XO`>?X1G$<5N>WU,^UCPH4P$"XJ)(U_T?LN!AF[:
-M.X<IZF5SW=3DZ^K*N?2/NL_QCO_G!(.D0)@+[,ZQF<V9&4#YQ#)I#LA2]1R&?=3D
-M9P*X&+=3D^4>[JN$@2MT;:*04`O````+P````"````10``N%`6``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B3(E(OL9=3DK&A<2HL7G6>*MPN(",@`````0```)PD``"`
-MB=3D9[H=3DL]JF?`%@W]@\G7P+_E37("?@XH;J?$([1=3D/YH#A6CIT#7P^ZK:KJ6G
-M]4ZBYK0=3D/!C`*W_6M$""P#3LHV4 at U+>-19W>S at 5JN?P>FM:UE)=3D3<XE$$$G]
-M=3DK$VRU*\76B%7MB3>@GZ4MPZI]=3DN>1\%#*>*:3*K=3DPOU7D at 2MT8I204`'`$`
-M`!P!```"````10`!&%`7``!`$0``P*@!`<"H`0(!]`'T`00'Z3(E(OL9=3DK&A
-M<2HL7G6>*MPN("0(`````@```/PA``#@^0O at RCA.+?)K##,]"4OK;T=3D<3]P[
-MYWU/I]3D/AA/)8]M*3&+G9EZM7E0=3D\1'5)#@FQ,?3GB%A<(_8F:SF3QF8+N1
-M*:;J6:E/!\.!P.DIMR3Q,5RX]MC33UB((X6UHVG$"878@)8`QHWE_!.M$MFV
-M/4STE+4YCZZ2%#B;2Z`)DGC31M+&0.#]44BLF#3$AHXX9-F+;#5-]Z1F,_F4
-M)WIBO0=3D(SK2PJG#_D'57&K=3DA*T'D_8,=3D#*-LU2B$JU=3D$F8WO^]/E).*<\%Q9
-MOD)>KW-:(J!#7)=3DWT.E4EWBJ,$@2MT9T5`4`_````/P````"````10``^%`8
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R3(E(OL9=3DK&A<2HL7G6>*MPN("0(````
-M`P```-PA``#`E1GYW1@&;AH,Q3NU*OW[=3D30)J/NW\1\Q8RTP@(BDP\<X`GO(
-M=3DP`9&XS3T+E8P+%6T`CL5)74"V=3D(+?VZE3KP8Z%I=3D*WM3:$'OLS?1G.9I]R.
-MA1`64`TK'9!.-YE"N^HA[*#1\N`CLQ+`OU]#[+)?Y#D<P&I^)GX#,>\]J0'2
-MR0)M\L.Z5(6X1%L&`%&S@:$.7(!XNB)AD-(1Z?!-_6NIW&C`FU@\Q9W%K/LW
-MB%R5J1_KL!6U@>"\K$#Y9XE($K=3D&'E\%`&P```!L`````@```$4``&A0&0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CDR)2+[&7:QH7$J+%YUGBK<+B`D(`````(`
-M``!,*0``,,!"V=3DSA)CJ+DUL>?J&U`^,BI$#EL<%VT2*T478!$EK,<"Q,-:I+
-MYLLYY,?R2!*W1IUZ!0!L````;`````(```!%``!H4!H``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y,B4B^QEVL:%Q*BQ>=3D9XJW"X@)"`````#````3"D``#!\G6'A
-MK@@LR/UO3,&P(6G_!?_I=3DUP\IP75S4FCQ at N^VE(?6;OA3Y9:>]<8\D at 2MT;E
-ME`4`/`$``#P!```"````10`!.%`;``!`$0``P*@!`<"H`0(!]`'T`20'"3(E
-M(OL9=3DK&A<2HL7G6>*MPN("0(````!````1PA``$`%ENM7#I'YX@@54_&Q=3D0X
-M)LZ14K*6P.R\SLWUZ]=3D,A%<A at 3./5W8Z1\'CO\JL/5LGNARAX;X)Z!;?"<.*
-MFC!;P&@`3&\V+?6SO at FI(ZJQF_(0H[%G&8G!2[+)#H>PUY"MJA1`9A]79`3*
-M<7-02O[F#-P#\E'W4S)0JE\^+\TP>''#YX3+/]07A>T"Q/L?6MQ"H!;N*RV,
-M3CT=3D]PN-H;"D6UTQ,;AIH-G at SDQ3JQ^5'_,HW]Y4/EZ)I_NK%/?.DY3O at 5FS
-M_9IN@%$2C1;YI>AUWV)B83-DM#2>E4#:.MBI__*9Y1F<!4[\_(,"ND\1`#63
-M,:%*WJFTPH2(52X82!*W1I&@!0`<`0``'`$```(```!%``$84!P``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I,B4B^QEVL:%Q*BQ>=3D9XJW"X@)`@````%````_"$`
-M`.#@&IY;DDFIM\(A^1?BG]E]2]'J4A#,2;&8L3KBI##%K=3D]O(OE2&!E(!/)O
-M2*51CG%,8$S]K63FW6):B+=3DX,:M+#+5+$_&U%7_Y6G8G at MN3'&#`:>N\_!9<
-MN7D)`+_>.I(M%/C+D;\.QV_44PWU-+1;A^>8*(A9R`>Z/ZTX\$9IDZT?3^-+
-M`_K)K67+&(LN9@^SYA]MK%3^0YD:ZZZ*1Q:(PJE6C\0YM(B-SX4]KOLRMODB
-M7$+X_I<'L?)VXO_*SLNP.#`]RCV+C*G$/`C-*G;D"+2J&XJW5Q?U25Y"2!*W
-M1OJP!0#L````[`````(```!%``#H4!T``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M,B4B^QEVL:%Q*BQ>=3D9XJW"X@)"`````$````S"$``+`UV8T'(DCF$\YP+0*+
-M\PK'MH*EPW/`4O%'JE2 at W0I:%G`V;/I";+Z#D5EHH3<%.R?1OG$A%LM2?-"6
-MIM&E6HCGQ4F599X1R6"U:+I`.HK0=3D_/5O'$F(JNKI$^IX@$4AS3S6-ARF.&[
-M.US'&U(_KIB2M3=3DU6;=3DAGT1LD6>]N3ZA<*'CRUF?B]?,AO$^OGT:F5[?W>8,
-M^[1F3HY&-#$12E*N5YW_W7)+DE-YSH.,2!*W1I?3!0#L````[`````(```!%
-M``#H4!X``$`1``#`J`$!P*@!`@'T`?0`U`:Y,B4B^QEVL:%Q*BQ>=3D9XJW"X@
-M)"`````%````S"$``+!AXLHH.KOXIK'VY31GH38-!?:A&/5'-$IA[ZLTZLY:
-MF`>YK)D/_:T-=3D9 at EEH!B_\.B+/W;P<G/+Y6:%(,^YB&_H-JT;GVH_%:'&Z)]
-MZ/#/<L#^'_[=3DMA<&^%CY5TB"F^K.\VLY`2<H+IG?J'!:BQ_<#JLEL5R02!9:
-M/IV8#232J6IWL'=3D'?(4G4@"MQ+U$!%6D^5(D9DY_P*:BH=3DO_",B#:JSV8LRF
-M%MS(5=3D<D2!*W1O_P!0`\`0``/`$```(```!%``$X4!\``$`1``#`J`$!P*@!
-M`@'T`?0!)`<),B4B^QEVL:%Q*BQ>=3D9XJW"X@)`@````&```!'"$``0!TW5,]
-M:TOH9JI01&BJZBZ<8WY*#&.';Y5A)%Y@@J03*TJWJ].A4*40YON@"+)3.!IM
-MSSZRW$PGZ&.##H0.&(3;/`<>Y^L?G[O=3DA04A5:W!&^1<)F"IA]J'0,_C^#2]
-M:3`!;#^@.6+<8ZI2"AS11P@#`$+LJ_3O/&/:+]CVUHY:X&ER0ES^./^R1=3D*\
-MN!G,?:9>#@C^A#QGC#?GI:K#RTZR/LCN\(V5+$PYL`]BYF$84PN$-^,`J`7X
-M"D(Y23YOF at 531(]Y)^5M;5M+V=3D(&=3D[:.=3D/]\D'#^U.H^@3X1=3DI9(FIDYVNG5
-M`E(5.K17_\M'%4T`.0RA%J"*(>#,3]1($K=3D&$OT%`!P!```<`0```@```$4`
-M`1A0(```0!$``,"H`0'`J`$"`?0!]`$$!^DR)2+[&7:QH7$J+%YUGBK<+B`D
-M"`````<```#\(0``X$P$2HP;XP&MBI-IEZL0\,;H.74=3D4CI%>4N9)R0H9W3@
-MK:+M!&&R'>?,N*!-J at XRHZT`%P`MQ+9X&P&+VF7;!1Z`CRPV$Y49,B3&F6Q-
-MT_J+I[8S`J8S!.+)K(P2/.UF8RU^#80_X.'"3+'X\^0WRELPY+'?!7GMH?G`
-MY01#\=3DQ&+O$<%=3DEX/`<LHC^X2XT at GPZU-HS=3D*[T>3D1K5&2W+EV.#\*`P>'#
-M]).K:?:-4.(`L*[NDACW>*%A]_*B'21`M--A>-8MU*=3DV=3D,K4;J^@P\UV!@CK
-M#/KV(E32=3D15($K=3D&J0P&`.P```#L`````@```$4``.A0(0``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KDR)2+[&7:QH7$J+%YUGBK<+B`D(`````8```#,(0``L(@Z
-M]"D^@&U at U%D'HU<[7AIO$/`2:_)`6RI)U_49D;Z`($Q"G\=3DX(.Z?'9,:DDV]
-M]H[TW-F<?YU([IEJ at 52./NMXDELWY?5[&E at 9C?Y'[2)\M+BI;#8!,.R3"XK_
-MTE]?J at 2TU`\8X6\E,0,^AVY#$Y1I@/J@<];F(TMV7&2#B`U>#SUNL at K(J/3!
-M=3D$CVC)&YT>B96<E=3DA/=3DM4OQ0L'(;3*FXUP=3D_/HP)\P!U\.9($K=3D&Z"X&`.P`
-M``#L`````@```$4``.A0(@``0!$``,"H`0'`J`$"`?0!]`#4!KDR)2+[&7:Q
-MH7$J+%YUGBK<+B`D(`````<```#,(0``L"G5;5<HOSI-7J[>Z#2+P3KS;F]Q
-MU70D0ZEV[T$#%3-08A=3DLI/#N7']I*^$%I4T[22L>X\+2M6^C?3TB)76ZLH6T
-MI_\O9+"LW8/!&J=3D:_$9OM-O2?VZ\%/A#MXN0`V\K7 at N-[NS7FN1<2%1N)]F$
-MA(#@.4"^[$R2XR2;'D#3YG(-'+P#V/]*())ZP/Q7_\,+EUX!/O(QWAIR_W*@
-MR>G0PY54.+0!>,J54<X[:XY($K=3D&S50&`(P!``",`0```@```$4``8A0(P``
-M0!$``,"H`0'`J`$"`?0!]`%T!UDR)2+[&7:QH7$J+%YUGBK<+B`D"`````@`
-M``%L(0`!4*%D+"I;K^S294JS&.B("FV,TR[O#3ODU\VR:SY.^S5(+[>[\Y0D
-MW*8EF;A?]A)-(\5RZ4:4$UW#A9]0"O)H,TFX1>LQ&,HJ;1<_89;O?9!ED!K]
-MCNW>&?KPKN-3Z=3D&W-_=3DA5.!/&>M\P6`P`-KJG%U:!]::IV]IE8P13%586XM7
-M?>\1_-JG.GC<?EQ[3HGR(CQAYVH\ZD<)W].K)&&%52TP`#.R%=3D*7&1K8U5V-
-M$8R]R$4F?!+I!M+[2JPVP4WJ9?FLGJ<<>BZ5]JFP(]:79=3D.)Q&3^E>`>Y5&.
-MW.DWPPIKS:J%D7:*30'/-U'(TCXX8G][74=3DECNJ:*(G=3DN at __EQ%`7/AJ"J#U
-MAF/^26X1)=3D'TO7GHPO#_OX'PK@)1;3NOR^$>!@K,0QUKR*RU3)&)'^;RJ(]A
-MQ7=3D%Q]C2K;&&C7#Q5"EP._H$F!$P!4%A2!*W1H>*!@!<`0``7`$```(```!%
-M``%84"0``$`1``#`J`$!P*@!`@'T`?0!1`<I,B4B^QEVL:%Q*BQ>=3D9XJW"X@
-M)"`````(```!/"$``2!+.2UC#V(G[PA%DQH<MO>EM"O5CVB59NBS(K.>HB?W
-M>WOVI7%;<=3DG]M<H$W9:&</RU)W-RGM[FLU$EQ.OW^(Z5_;DQR@>1Y-:`1C.`
-M/)U;B6/+ZW-)M?*Y_//@9D16G]]:IPZ<3%,!C]+B.Z.;GW8L)@AG8U"F1*TK
-MG(?JYI8[7A<;8-<8?V!ZMK6V\.!KE=3DEPCAJ,>U"?E#X&KAK5QL2,. at 2*\+$&
-MMJEI(3_H6C1T:Y\0?@K+TZ-TLV^U'VP#$[Q0A=3DYA2/Y]^`FSLX;#S6LL!;*+
-M)TBHB[1#YGJ%^9D]K'IMD9:*-=3DY-L),!\XD5U*BIMO<N316LSM`>#U5;RO[Z
-MAZG9(ZD>K]]E-\/7$TH:-/909 at TL-"_^1.TPB$@2MT;*L08`?````'P````"
-M````10``>%`E``!`$0``P*@!`<"H`0(!]`'T`&0&230[^,YIR]4A1WJOP#SG
-MH7$N("4(`````````%PJ``!`S#`W80"4#NOVQ5^WKP at ST@NG)H*A,M=3DM;=3DK&
-MA;,,\2@%`259Q-/JU179!TB>HN_4]?KLDF(37Z]&"6R]2!*W1G>]!@!L````
-M;`````(```!%``!H4"8``$`1``#`J`$!P*@!`@'T`?0`5`8Y-#OXSFG+U2%'
-M>J_`/.>A<2X@)2``````````3````#"`D%L5J!;:=3D%G=3DLVJ&#//Z+])II at N$
-M5LRI;<0]?EJ+ZP%O09']15<+1)[D:$@2MT;NRP8`;````&P````"````10``
-M:%`G``!`$0``P*@!`<"H`0(!]`'T`%0&.30[^,YIR]4A1WJOP#SGH7$N("4(
-M`````0```$PJ```P92A!MK:YZU?8FI\TDFAMX,KCUT5VI0X'D5M'=3D\__A<+K
-M0.7V?N6$$-^4N[Q($K=3D&7=3DD&`&P```!L`````@```$4``&A0*```0!$``,"H
-M`0'`J`$"`?0!]`!4!CDT._C.:<O5(4=3DZK\`\YZ%Q+B`E(`````$```!,````
-M,`11UNRF,N`&1,ZH+JVU at E+7S\STEO<'9&H']WB2V%A)12RH/-5QX;*@]\RX
-M2!*W1B73!P"8`0``F`$```(```!%``&44"L``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE)(V=3D@/)3+VX``````````"$@(@@````````!>"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``XGY6OL>DA`.I`:&1:>J^/XC&\^Y7
-MF^*"OP`]-%2KD=3D/-J`,F\9F=3D+$*WU1MGW(N%?_C=3D/@3)"Z3#];FW]7S:LTHI
-M4PA%F`#U[`?^JHTR(+9Q<9)N,`#KB5;BE4<(EDNGFW"L*C7(+H?AD.1YGQX8
-MRK`=3D3[*[<+8YB!92WQU771\I```D-:U@($7_UB8JW[DCH*\F,Y1(-11XZ9LV
-MRO,&K<B',A<I```<``!`!"@(/-(KO=3D%!A+.;3;.OAV`A\6_*````'```0`7N
-M;MX&!\MGUI=3DL5X_L+C&4T;+%0$@2MT;CX0<`7````%P````"````10``6%`L
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*22-G8#R4R]N```````````I("(@````
-M`````#P````@``!`!@````%?4#K^7/'CQPM\"%A]8M*6E;0L7$@2MT9J\0<`
-MN`$``+@!```"````10`!M%`M``!`$0``P*@!`<"H`0(!]`'T`:`'A22-G8#R
-M4R]N```````````I("((`````````9 at A```@``!`!@````%?4#K^7/'CQPM\
-M"%A]8M*6E;0L7"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``XGY6OL>DA`.I`:&1:>J^/XC&\^Y7F^*"OP`]-%2KD=3D/-J`,F\9F=3D+$*W
-MU1MGW(N%?_C=3D/@3)"Z3#];FW]7S:LTHI4PA%F`#U[`?^JHTR(+9Q<9)N,`#K
-MB5;BE4<(EDNGFW"L*C7(+H?AD.1YGQX8RK`=3D3[*[<+8YB!92WQU771\I```D
-M-:U@($7_UB8JW[DCH*\F,Y1(-11XZ9LVRO,&K<B',A<I```<``!`!"@(/-(K
-MO=3D%!A+.;3;.OAV`A\6_*````'```0`7N;MX&!\MGUI=3DL5X_L+C&4T;+%0$@2
-MMT9*%0@`4`$``%`!```"````10`!3%`N``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'22-G8#R4R]NS at XTHJW?1+$A("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``'\714XD
-MU at GZ?H(&UXQ!0!CF3:8\0F at J.^M:[8:A+;XWQ*\E8GC(JK"4`&[,T%-@#MK!
-MZOM9OEPKN7JGV5J.F<M7<%.PHHT!ZI%78-"<>,EN`H^0-%"^+1/.*.F+`+KL
-MR@(EGG?TXV5`DR<RB=3DM-+5^J at E?UH0FY1((V"6Q16"((*0``)/0LK(EI0BXD
-M/!K`4_BJ(*-\^S?K&NSR3LF:-"@DTF<+*0``'```0`3$[%'BZ^W8RL5/V!)]
-MW&+"AWCB3P```!P``$`%V6VX,0K35!1!+%G_^5\J/NPN1DQ($K=3D&44((``P!
-M```,`0```@```$4``0A0+P``0!$``,"H`0'`J`$"`?0!]`#T!]DDC9V`\E,O
-M;LX.-**MWT2Q+B`C"`````$```#L(P``T*52E-1_KY8SV\7YEVA=3D3?,Q5.XT
-M9FQ2C0?0"@#S-L!5I`(F%J^2I:\1Y,#*\Q]_-"0F7XZX6&;NV5+[7*"9JL!N
-MYNVOIK*FCD6[/P0+U1&/SN6K8\B;`PIZ]\O_3WG\T:_=3D- at FP&<?56BQ at HUL:
-M</IKW=3DNYFE]!.S%_'^0R2/"K\?0R1;WL>@TH@/&T)":Z$N7]MG%U:18,HMSS
-M9_-\AHJD7!F`?<RC]4K%AH!BU*SY2S_P;GSZ8`2B^'$3H`'<5P<*X"Q+&9\*
-M!Z=3DE1$@2MT907`@`O````+P````"````10``N%`P``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B22-G8#R4R]NS at XTHJW?1+$N(",@`````0```)PD``"`4,+U[N!>
-M;L$J4X]->>A2$"<1`<R'SZ:_TOW"9^WWSS!ZX:_-HD?\=3D*?XI&(1CNI'HW3-
-M.QO'Z6U;$1*IFV9`'S.KL.V*Y92Y9ZQ9-YW`U=3DIJR1V5<?W44Q/'0W>\X!TL
-M]O8Z,8&SKJV?V1J`Y!Q*_,&J[H?JG*=3D1ISL%I4 at 2MT:=3D>@@`'`$``!P!```"
-M````10`!&%`Q``!`$0``P*@!`<"H`0(!]`'T`00'Z22-G8#R4R]NS at XTHJW?
-M1+$N("0(`````@```/PA``#@&^.4C?3TJK6)L>8*)1]GM?JUDJI3B=3DG2-_<X
-MOR+Z4M,!(1GGR-C&1:!UL6I>V)N9?`W5/M3ZO23$!+`!18B5%RP!Y'<9%0[4
-MM]=3DK.NXVAK6<>T&)W7(=3DU*UE`8JC7>3CIB#O9Y at R:5`\Y)UQ*3.EOCPW6'K!
-M8*UNY.QQE5V0+-2.?G&RF]L3_EB'6O^7U19[NX5C^=3DFY,ZP>>>UM"'G;*KU9
-M\#"QT:+C5!%U2H;\(`_L&DR:F/0?A\)KGB38U`>6*T*[H*NS71CYFEQWV$DN
-MV_ at 8#24B0A`Q[US$MD at 2MT9-A@@`_````/P````"````10``^%`R``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R22-G8#R4R]NS at XTHJW?1+$N("0(`````P```-PA
-M``#`(:=3D'=3D4WF_=3D%:OQ:"$N72Z`^7VX?W0$5U-DQEVP`$@D>8E_:&\JB*"3H$
-M$%LA'1[4+<?"/S9MM!EWH6`SM`UD$@$"6_6([H4-,&1N#&679/YW`.N*K-JL
-MBY_SH@?K=3D\6H at J469J-L#CTJ=3DY"9$N$6;MQ02!%Z_%TQH>M#&<0!G$7V:6:@
-M:D&%ZA8J'G27Y<2E6JY*PI'YEG]\\*1._CKB"7D)9A_0]1[27SO=3D&,5SW]"%
-M3_:"B=3D=3D$-<CVD?%($K=3D&II`(`&P```!L`````@```$4``&A0,P``0!$``,"H
-M`0'`J`$"`?0!]`!4!CDDC9V`\E,O;LX.-**MWT2Q+B`D(`````(```!,*0``
-M,$H3<535ZD>T+:MEAF&*9+MRC[-[T(BB#X\0*M?UM1S^!+[`)CS*T>O4/ROT
-M2!*W1H2K"`!L````;`````(```!%``!H4#0``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y)(V=3D@/)3+V[.#C2BK=3D]$L2X@)"`````#````3"D``##^0UL>F_!+7[54
-M at YI&P.>69)V"XI%L$2314Y=3DI!DH*W2Z]Z&`E%15BZ,=3DM4D at 2MT:MQ@@`/`$`
-M`#P!```"````10`!.%`U``!`$0``P*@!`<"H`0(!]`'T`20'"22-G8#R4R]N
-MS at XTHJW?1+$N("0(````!````1PA``$`Q.5!-8#>S#`UAGNLO4Z"30M2B4\?
-M,G84&"89<D'<E6M5B*`I]H4[,YO\O>SIQQL$O<B3.*`/M<0N.K.%%&_JL!8N
-ML%/#K=3DMWM>KX)B1XZ at A5LME&A^_+U8/![CE2I>SNFMMSE at VG[*!E=3DB;CG[>E
-M(2I+57"(_+D,OZ0Q?0CEEI"B(9$Z[&\DJWT?%F#1]#RD2I=3D>Z[;3MUF'/`3,
-MTDA'30"/M;<OL2^L7+ at 84PW8ST`;+-6++^2N=3DRPRFE%35O];7R$55L)J)%7I
-M8=3D1$F5]Z/<F_(?-;)B6<=3D,B?TKU^6B^)>@$*J>ED'D=3D!G)UO5C"W52<HO[%Z
-M>@)"%OVG2!*W1N'2"``<`0``'`$```(```!%``$84#8``$`1``#`J`$!P*@!
-M`@'T`?0!!`?I)(V=3D@/)3+V[.#C2BK=3D]$L2X@)`@````%````_"$``.!#,[N:
-M2/H!%!VKI"*-^M_<U/FS%]Q>@/W*B[FDLALR*)3V"`]ZL^&-EF[8YCL*.RCI
-M/=3DC4)HB9%8P$YBC(%^NV<5=3DM7-6U#P!9Z_-Q"#`(?+=3D\/V8')B$38%\9[.2]
-MSE/H<?R4(HE?EQ,IYYA.I)`ZT%;&K:Y6.WHNMEX/HN6:5G^;JS1"*;K)M0DV
-MYR!WUP>!B[2`0"JCXVB]P^>`&YDX:YESQ[>R at MJR)N(][()Y@"2GWTJ+A9 at .
-M9>WS&^NGBZ9=3DK(C5-W$PB]D,9245/2]TP=3D,UDM*YI at IE!D]C2!*W1NGA"`#L
-M````[`````(```!%``#H4#<``$`1``#`J`$!P*@!`@'T`?0`U`:Y)(V=3D@/)3
-M+V[.#C2BK=3D]$L2X@)"`````$````S"$``+#UF;Z[*NG%,6\WKB'G2XQASSH4
-M5")_`/]!+,S=3D$!*FKS(,/%C$/-R3.H,WF>H[3C(6GM!9DQCP!-Y(WTHK4,^[
-M(U%!/A?DG*K586B+;T$0+RP<W2;GH+34 at 9HBUUH?!+GX1POOTAU_')HNA`XP
-M^&'A\(60NQE52%FP&:8;;:PC!C3HH]MR&>7JOEN#]`>QS at Z%0'N*<#D/TYH-
-MJ<Q']R/TFTD9193_;66+;]E:2!*W1G`$"0#L````[`````(```!%``#H4#@`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y)(V=3D@/)3+V[.#C2BK=3D]$L2X@)"`````%
-M````S"$``+`'+`7V<R[4HP7F_%69&6Z:$UDG;5P=3DEN0"[>:&!SE%4?\YTO;(
-M+ME$E]E"`5 at K`;>)6;15NO8.4/4B_R.^W;^`O7S at P>LP*CTBH[U_K"27*KL!
-M*QPRE?UL[C4.`M'1?V?2I]Y-PYEN[,SJW'U=3DU)RRT/MN(.?/*?\=3DI<#,X<9&
-M.1%6G#RE%O2"Z/[[:HR"F'*5<"=3D'182,J7TN^+"2)/-'I"86C=3D;/U'?C>-OV
-M2!*W1A8A"0`\`0``/`$```(```!%``$X4#D``$`1``#`J`$!P*@!`@'T`?0!
-M)`<))(V=3D@/)3+V[.#C2BK=3D]$L2X@)`@````&```!'"$``0#-T3UPH9)_QH&T
-M;(S&JCUSJRU1,X&\9NYUOXF at H+I.5/)^12&P6KK,1+IGH)/6^(W.382<#6D3
-M?W!29!Z/]A!A"*6`T+D,V1TAO1ZD;5G`;)9CZ'/358X\8?;&\0$WKIZ2."Y?
-M,V%<>J&.[W*_'J"&$LJ0E^>19.#(FDVBQT\Y;\_\Z40F28CI'+NG,-4!I573
-M.X`Z8U/?,,+6+3V"")@"4A>Z!M$`:.#GV49!?2'=3D71B!^!;UEH5$C1G!G#F=3D
-M"9;FTL1$TCO<SQ5CE[;W%E`Z?O$GUP.(?>3%&__Z<9FY[PH.^3C[S$T%"!E1
-M0M+.#/"[I#K1"L^^HS$%VH1($K=3D&\"P)`!P!```<`0```@```$4``1A0.@``
-M0!$``,"H`0'`J`$"`?0!]`$$!^DDC9V`\E,O;LX.-**MWT2Q+B`D"`````<`
-M``#\(0``X+%*1YKF((31L3<3+"=3D"+N/@%J5_0)MQZ.,9L69^W^HW1]L$H3!/
-M,>$454NZNK_YYD#7U/MTN\ZT9.6/C_A/RHA&XJ(,+SA?5['H)",D'$LFG;/F
-M6!X#C*P=3DQ:Z^!W67D5%$.G9)V7FG1`XR,8K,^S!_P$O%$Z\9;:F^-E@!GL4R
-MPFW5W\6(-%Z[5CTOOG`_4`_HF$NOZ2$#*Y>D;\]$+B%11OVLO2A-WI4TTMP>
-MW][VPB4]L,;]DWV/2_BCIT5E*S51 at -U=3DC21LKR3_WX5\FDV>EU/WF'^I^W%7
-MR+E($K=3D&$#P)`.P```#L`````@```$4``.A0.P``0!$``,"H`0'`J`$"`?0!
-M]`#4!KDDC9V`\E,O;LX.-**MWT2Q+B`D(`````8```#,(0``L.G!?O3Y%/],
-MW]&J*5+?4I-W]0[C#VT+?./'JN]+`3Y5<MR-\5<L>(#;A/D)?F/5?LU*7RDQ
-MMN$TB]QZN'VE[MMIE3ORPF-U'*6+E9/E/A4(WG[:<85""!1"+?YLMT/C3_A&
-MYLT5!81JR;!=3D=3D_DZ3Q(LO,_)CS7^T'BP7D3A,:(;,%41M/9Z!\)B/LZ/O7&#
-MI_IO27]<B`0HGXL+UO-EOTMY%%?;/XVVI!7 at PBM($K=3D&JU\)`.P```#L````
-M`@```$4``.A0/```0!$``,"H`0'`J`$"`?0!]`#4!KDDC9V`\E,O;LX.-**M
-MWT2Q+B`D(`````<```#,(0``L(B5QBNG$_T'GXFN./J6$:CSV*8C7%8%:.%6
-MKO`)^X+\O\/AM3\`1H,K,N)SY%N/O*X$&FTHS.0PAE_FJ.-,XHOG*=3D#'FC=3DM
-MEB:>VGKD%_91A>:__/\_2>4V2X=3D;Y*5:TSN#<<-!WW,#BF!Z0"\@U8YO`-79
-M^=3D=3DIPDLLCT6@=3DJ/"M`\OC50![V+:O`&IO.G2@`''D0",V/-EQ.LIR!68"0"<
-MA++=3D?P97',^!>QA($K=3D&.H4)`(P!``",`0```@```$4``8A0/0``0!$``,"H
-M`0'`J`$"`?0!]`%T!UDDC9V`\E,O;LX.-**MWT2Q+B`D"`````@```%L(0`!
-M4%E"V$!)2ET8?DU"9!:/]M[9R!SO6U?UG?A?$?9+\P'67AYR`>Z8]MYG8S6@
-MWX4$">%!F>6]V7<_7?&;^I)ZN$N>VJ&?$5\GPE-!@V2&!)KS_*%]I^;[5F9U
-MC<R\VZM6!N-:1L;5(6ZU]Q:W4(63DT1X-B__Y>7(8 at 1S0VGI[Y-V&8&[%AJ9
-MJ9 at OWA;F6\3 at YKV[S2+, at +J?AU!T2-'^=3D$34WRFTVTJ19O1N9H")4P5O0*S`
-MD2>G<6'*!`>BZ:.OJBGN,QX<(O"4N[E.RV:;.4")D\,&G_Z<L8%XPCY&VE;*
-MTD^_76%J"B#1?ZQ\[AF-=3D^.1`E\KJK8X_"D*#VNRH#BJ)$".U\'U;1U<B#>M
-MZ],49?L=3DPK$:R"O4/.?^F#AB;WUL5K`OV<R/=3DV6ZLKED\=3D@'</5PTI(7)8D9
-M]P36%2.QU80#B89>8P4M;:4?2!*W1@&Z"0!<`0``7`$```(```!%``%84#X`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<I)(V=3D@/)3+V[.#C2BK=3D]$L2X@)"`````(
-M```!/"$``2`17:S^D at 08LM-[D$^DW4::F&+"]5$ZG%%?3N05`]H!,"=3D('/0]
-M;]!]'GE.OD?4 at 7XD$E/9P#DK\?OL45$'T2^1V0,A?(HWQ`6O4!C/QS`!_``?
-M]:H@;-<!,G*H(8:^?\^UT:ZZ#/>D62V`$X6@&`[=3DX]1PF,[-@:=3DC&6T#GY[I
-M4IM%.1$-515$*$3['#YP_D0X9\1'Q=3D"8SD=3D%T#S#P^\^N.5JB\;]02-/!7F3
-MMC`?DG3X'0_7F.#_#DQK9HG_LSD%`7KD:VT`WEVT?AC2$M[(HDX;JG.=3D65FY
-M<8BS&M3VQ'H6^<D<F8+V%5`PGETJA15L105<J41+K%U\B_0_N3YI`>WC&K>H
-M3=3D74DU3WN6I/R(1496PNP:=3DZ^O5O<D at 2MT:BX`D`?````'P````"````10``
-M>%`_``!`$0``P*@!`<"H`0(!]`'T`&0&2>E>MJ;[T+W(O+N:K,-IMT`N("4(
-M`````````%PJ``!`DSY"6ABS!S\*;?I9[Y=3DZC$,$84??2#"YW/&)VO7^AR\/
-MD%6?:^M]=3DC1":..`WTH!)L&'!N&;7GEUSMH at 2!*W1@/L"0!L````;`````(`
-M``!%``!H4$```$`1``#`J`$!P*@!`@'T`?0`5`8YZ5ZVIOO0O<B\NYJLPVFW
-M0"X@)2``````````3````##.AOI?YR-,VQQ.-8<RW4<Y_)=3D*695@\F4%!F>$
-MK,NRC3V([IV../PY<-6Y&$@2MT:1^@D`;````&P````"````10``:%!!``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.>E>MJ;[T+W(O+N:K,-IMT`N("4(`````0``
-M`$PJ```P]5[+_,RSLZ-@/,%9MGA&#W>DO/%O>J$KM3S3IKUH6]L'Q,;:ZZ<M
-MTZHX7^E($K=3D&\P<*`&P```!L`````@```$4``&A00@``0!$``,"H`0'`J`$"
-M`?0!]`!4!CGI7K:F^]"]R+R[FJS#:;=3D`+B`E(`````$```!,````,`$Q\$I-
-M*4:ET*X0>W,FDF16P:5+(>2])5!`$AJ>6097&2P[PR5V':]=3D*6O_2!*W1A8$
-M"P"8`0``F`$```(```!%``&44$,``$`1``#`J`$!P*@!`@'T`?0!@`=3DEJ_":
-M#2C at 5O@``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``?(-)7"*+:PE&B1ZH_$G!76ZNMNEL!/SB`*Z,
-MI__XS,H_&-?AP-,MC,.H4:T`"&&3Z?>LKE5/X?'51)H`=3D#L<^B7`:Q3GC&NG
-M4\-&'G%UI3!3&S6_S"H=3D3YU at RFI^N!G.97ZPF*A^M!8QKAGG6L]M3T7F*@MQ
-M=3DGF<;]Z)0YE[T at LI```D[79M104W\AF"^P/7TKI(DP\6#AB%"9#A#W<OS8$T
-M,=3DHI```<``!`!,\0=3D&#9U.@)I[,8N+,^=3D6_8-CI_````'```0`6+*>O//YI)
-MQH]_->(++7!2*P9UB$@2MT;@$@L`7````%P````"````10``6%!$``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*:OPF at THX%;X```````````I("(@`````````#P`
-M```@``!`!@````&*.=3D&A=3DPQV)_P^$N)?O:5]W$YN"$@2MT9:(@L`N`$``+@!
-M```"````10`!M%!%``!`$0``P*@!`<"H`0(!]`'T`:`'A:OPF at THX%;X````
-M```````I("((`````````9 at A```@``!`!@````&*.=3D&A=3DPQV)_P^$N)?O:5]
-MW$YN""(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``?(-)
-M7"*+:PE&B1ZH_$G!76ZNMNEL!/SB`*Z,I__XS,H_&-?AP-,MC,.H4:T`"&&3
-MZ?>LKE5/X?'51)H`=3D#L<^B7`:Q3GC&NG4\-&'G%UI3!3&S6_S"H=3D3YU at RFI^
-MN!G.97ZPF*A^M!8QKAGG6L]M3T7F*@MQ=3DGF<;]Z)0YE[T at LI```D[79M104W
-M\AF"^P/7TKI(DP\6#AB%"9#A#W<OS8$T,=3DHI```<``!`!,\0=3D&#9U.@)I[,8
-MN+,^=3D6_8-CI_````'```0`6+*>O//YI)QH]_->(++7!2*P9UB$@2MT;T10L`
-M4`$``%`!```"````10`!3%!&``!`$0``P*@!`<"H`0(!]`'T`3@'':OPF at TH
-MX%;X7:A_^&F5IGHA("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``$:I at 2^1"W0/S)C9
-M*ZK0XHD\(VO('[Q+WYO1P@#X!_57L2M8B91*<S60^PU/=3D5"]8HY>+L2 at 6*>D
-MC=3D&D4@]CNWQ_*C&+>*E7SHC1@^_"#\@:!4(7DJ&(.??3_95 at 26-ZNJ+E+L+:
-MS2Z,MR(:9\69":&&?$X"T6(\TK(^@A0C\!:%*0``)##@QT>0R;DTD+G*R_.6
-M\!WQPK=3DH`S>&N=3D]!TU*3>-HD*0``'```0`2,+PM[P\.LU:4DKX!L."<QE&6"
-M@````!P``$`%65QSS)3D5;1^M<]&[\<_P*TE3VE($K=3D&RW(+``P!```,`0``
-M`@```$4``0A01P``0!$``,"H`0'`J`$"`?0!]`#T!]FK\)H-*.!6^%VH?_AI
-ME:9Z+B`C"`````$```#L(P``T.P,?C[*X[#[24SWI'-B0O50F*'&Z^V=3D6=3D5D
-MF/%\+#<#]%N>O#RIU\5NFX$PA7"9C_;DQ at 8=3DS'X[ORW<]U`<V>L@[S6B<YR!
-M5'`[H2R=3D^4K#]Z)PD%AN,"(H+.`U.L(%G=3D"@#!ZFV!M>SO'?@D[<2+B`O3'$
-MWA$_FA>6_]]VP4`C7(]U.BKN1$";A0L]HYT&O67/A[B!L/)V#G-^VDSA*?>A
-MP#1<<),S^@:-*];0R.2DCY6&F>+DL)B[X?C*"2./=3D8]YL<W[*SW/Z`S59D at 2
-MMT86C`L`O````+P````"````10``N%!(``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB:OPF at THX%;X7:A_^&F5IGHN(",@`````0```)PD``"`Y+;KWS2_@`-9!Y[+
-M^B5SB0!A:FYRHO/9GR`P)+UG_E%++K?E0)\7`.DT9U07Z'DW"G"B/->*S:/Z
-MSSS]:Z]@);<<KY at H\V+M:H&7,0,2[&`:<**UFD),"D?D<_R)F3PCH__;.V;T
-M/P\[+FN:LESG>],>F6HV$4Z\2D#P"$@2MT9CJPL`'`$``!P!```"````10`!
-M&%!)``!`$0``P*@!`<"H`0(!]`'T`00'Z:OPF at THX%;X7:A_^&F5IGHN("0(
-M`````@```/PA``#@&[E=3D#^$*PBGOJ\R+,IF*;'7/LS%N2RA(@7BK0$0HHT"P
-M;.'O7@*Y$$UY2[]Z_,'0<DFH'GACQ'I'T<_3;2S]K(]N+_+[9MX6=3D[Y.=3DXI0
-M2(--J>&[(*>82E?,]I.K83Z3US"NNZRC9K=3DQG,=3DW1G%LP5$=3D3_4A4Q<S_",+
-MB7'V%4US90);V(JZY.1!J3:KT7)XM2'<JS*O?8ER&7;=3DG#B$ER6C5`O4R^Z7
-M2V1H'N9/J$PZDJU`H[05+#Z9 at ESZ`:UD?+J(]C.PD&-<L^;>J`Q`8/+;@K#1
-MM*>BC)K7_$@2MT:3M at L`_````/P````"````10``^%!*``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R:OPF at THX%;X7:A_^&F5IGHN("0(`````P```-PA``#`"&SU
-MYAX^/7]8Y8V9#Q<'TNN,Z0_$LD'9*^?JDY&RS9]LOV76PWBO%8P61"8+9_3.
-M-9;FY1+P_T7W(M9,9TCTA)$XGMT4ABL.]66IZ<M&-HII7]2+#Z']=3DD(_=3D<P#
-MLV)/<\&'FC9\U5M4O5`SX<?%U_L'%LYDC&7V,E]&%&9;;7LX>Y5W`+]]Q3Q$
-M'C;KJL9][5UI>8`9Q(YB_4:@*+?KGBP/WH2*)#]770YOD#:`U31CA%CLK"QH
-M(9"T('Y($K=3D&5L$+`&P```!L`````@```$4``&A02P``0!$``,"H`0'`J`$"
-M`?0!]`!4!CFK\)H-*.!6^%VH?_AIE:9Z+B`D(`````(```!,*0``,+YP8-[,
-MOY1A1P0L:I?\^]J0.Y<^YE]%2G]91>;.9*6?-I?5?K9)Y<N/9IFV2!*W1BO<
-M"P!L````;`````(```!%``!H4$P``$`1``#`J`$!P*@!`@'T`?0`5`8YJ_":
-M#2C at 5OA=3DJ'_X:96F>BX@)"`````#````3"D``#`2M.ROR992YMO-K+O>R7:U
-M_!>_&%NSBLLB6JEVK>]HZ61&;;BI%3V3:Y1R5D at 2MT9?]@L`/`$``#P!```"
-M````10`!.%!-``!`$0``P*@!`<"H`0(!]`'T`20'":OPF at THX%;X7:A_^&F5
-MIGHN("0(````!````1PA``$`@Q6AQST$"Z?!.*DT:2AZ,US0`?JHA?L+@>J_
-MIMPXOJ6LY+&N=3D93>P'V($GJ`EKX1)&4;R,_FQB.'/'4P9H$8.)/RNK<.KU.(
-MJ]?F-&I0I:6S5Q%&W0L$^7UF=3D:?T3?YGC!"O]:]]G9U]`F$1QN4J*W>I'WKF
-MN9P')S+C6)T.&"MO9K9CCQ+^R,G^R%5=3D'S7>T<'S?A%<DSI_RQK(YR[9DSTH
-MT5!/(FJ7`HX/OE.+O\B&>FG['I4D=3DH]QD7+W,QP^\V5+%N.614>SS_7#X,Y/
-MU53S_)PE#MX5O\;R6WB*NPXMAK9<%^BJ3YGXA5C!RLD;JC^HB+(17,!48$LV
-M2!*W1G0-#``<`0``'`$```(```!%``$84$X``$`1``#`J`$!P*@!`@'T`?0!
-M!`?IJ_":#2C at 5OA=3DJ'_X:96F>BX@)`@````%````_"$``.`R0(UP\A at Q*@-R
-MQ.O3QFY"[%3.W9][66]7\48M at J;)E&L'(K#&S9G;,T*X0509T^I;?@A^WM[O
-MAZ,5<27LU$PPJ&V9OVI]O\GA(?SJ..4!`5K"P.P[J=3DMLDGKA9+5(0Z1Y)\OV
-M1,7FKFD,=3D_AB]],I$3D]+)7078^,<'A`KVZA:KEX1J$1L;5<)@6.P%\@<`M6
-M-!W5;MMN1[MO0\?1PK/MBF=3D7([&]/(Z^8]FA<"KOKZ5<:%*DW6'U9F<=3D_$D!
-M[N-_$]$<:4HT+]0/E.Q4^2)AJ\+G>15LS.S55/?C2!*W1N40#`#L````[```
-M``(```!%``#H4$\``$`1``#`J`$!P*@!`@'T`?0`U`:YJ_":#2C at 5OA=3DJ'_X
-M:96F>BX@)"`````$````S"$``+!\%9.&"]2]'"LR%HWV4.'UM9L:U at 5U!0HA
-M*WEOOSK6#=3DVI:#4`T.B^O.>;;I&2G`\U-[2H6D<3T&LM6%-$`DC972SH+ZRU
-M"]29G'_VZ&TYM/,4EF/EM,"07VL*(Y;I at L0L/DCL#OXHCNXYD`TALR\84$4&
-M1W;VL)<2\7)'?7C!TIG5R6!/`D&![P'-R6EPFT3:-[MH']$I77%1JM4!-!S`
-MQ8/^FZVIB';U_^M^2!*W1A0T#`#L````[`````(```!%``#H4%```$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YJ_":#2C at 5OA=3DJ'_X:96F>BX@)"`````%````S"$`
-M`+`"OLE9(WT?U6ZR43MLM%+=3D!88)F;N:B.+Y(NC.!&AU1 at Q4T1YO24HO3H*_
-M>*8[BH(RGD5)N9#"^2GB1D0.HI#BM-M3 at AA6M!AAX692\.YM7UM3IE`A[VC#
-MQMQ*E5_P$/>;EXG`/+:L2IF'M(D?AMFS3XMIZ3.];+G6.S6C:73TAC?B\0?^
-M%,_\JR-5"`1RLEVM*_JJH'AK*#P_1CXN#3`ZJ;F-7/+5'PI*UGC^2!*W1L91
-M#``\`0``/`$```(```!%``$X4%$``$`1``#`J`$!P*@!`@'T`?0!)`<)J_":
-M#2C at 5OA=3DJ'_X:96F>BX@)`@````&```!'"$``0"'H3,%YM;%P'"A9MTZD>4R
-MIN]M7/2XP&6%;;4G8XK:@Z_RGW(I65.,^LA*>WT)I2$Q+<4U-)^Q1N5\0SP]
-M'K['_T".#];I at T[O^6.3$X=3D[[Q!1GDX at I]KQ"LM2?RD!?JAIU>R`?\>!<MG'
-M%MDTZJ)9],.=3D#&78'TR%</[M7&,$N"3^\*I&O,L0X:13IWINYH^I*ER!6?T$
-M(,K&`3&$(#W7Q?*YSL?0"_(V-AV&\_HS(B;,ZLARXQD at 6L_E^7=3D;EGV!Q6<"
-M^]@_C],GC-F,D5">JS37[IUO(V7D[#1.."D)@W,G at I,>S9!<)CU6#WXJR%7E
-MLD>7#Q0?!;O<#KY($K=3D&?UT,`!P!```<`0```@```$4``1A04@``0!$``,"H
-M`0'`J`$"`?0!]`$$!^FK\)H-*.!6^%VH?_AIE:9Z+B`D"`````<```#\(0``
-MX!K1ZLUTQBC`>BF92$4'0K0P!I:KVAW4P45!(>$`#0>DR=3DQ;59E<SU[=3D"#BY
-MP6)6IYB,M1(W487RY3JFR+&OCW8/N$$74@^MFX_AL7!+B">=3DLO.W''`;*VI@
-M]9R_#FF5=3D,-<5/+D7!OW4M$/P9!73X$-\]&?N-U?,^5QR,4S at DF??GG&>*7]
-MQA"`!(VCU+ at .OOW02,"#N1Z98H%E^]HU;C38J\F(#L]++S.:_I$2*)W/<CA%
-M&,(-#7 at FT>T>H-[P7FC+G5.X9.A)-&G9FLCK7:`_\7J+MYMZ=3D4:9O=3D!($K=3D&
-M[6P,`.P```#L`````@```$4``.A04P``0!$``,"H`0'`J`$"`?0!]`#4!KFK
-M\)H-*.!6^%VH?_AIE:9Z+B`D(`````8```#,(0``L)+=3D%<BWZ?*D^:8TF^[-
-MZY`")<:2EL0_**OZZON69$#\^'BJE53?+^W/B)SV<Q(;ES`2M*%-R8W;0FLT
-MF,&:W#-EDQ+&'%Y,N\LO9,F<L;_J$MF>V5$G*ZC3U*-Y?T"T%HY8\CK,;*1$
-M5\>YC-`@VDKMZ^:D2LG;RY5-Q,%\_G%C;29O-Z2FAS&;>7[HSRWCP4S/I!L,
-M!6`*+J".K4$8GN(8G1&0ZU`?(T*?(R9($K=3D&/8\,`.P```#L`````@```$4`
-M`.A05```0!$``,"H`0'`J`$"`?0!]`#4!KFK\)H-*.!6^%VH?_AIE:9Z+B`D
-M(`````<```#,(0``L&<%4)UW/;E/7_*J!Q'Q9;TG&7H at 0M.+^LQH*:"Y9&/E
-M<Q>9;+)QI..1)B..#Z[LY<-ZSNS"]+YE^XL?FD-W)IH?D;BD`],*<6SES3EA
-MX;F.<.%3:[BK'66#N]+8Q*41C/-AGI1)FHR0U+/Z87MMF.+6:%.@?77N at 8/+
-M?U4;%*A:CR$,%;N3><XO<$E=3D('@\26>*S!$O<J!3R.2>VVA2F#/!OWPIB/1"
-MC$%H2II($K=3D&Q+0,`(P!``",`0```@```$4``8A050``0!$``,"H`0'`J`$"
-M`?0!]`%T!UFK\)H-*.!6^%VH?_AIE:9Z+B`D"`````@```%L(0`!4-'9*#,>
-M5P<[OVH42H,T.0UZS9:WIBUW>P#!BR53?=3DPBWQG-[:(PI"8"-J*OCINEH+H7
-MEZC2\_#;;Y"@G`J#V/Q6SC.-I1[)MK8CF?6^V:GXJ;_B8RSVRC9)6K..>X6D
-M`__M^[KZ8@$V.Q6N_9"8(D%W&OLS/4--"$@J]'+L;BN(2JB#0?E#@<V%P3]>
-MCAY7,EC+*LO-35L29+^.5<Z9D8_P->PGMIX8O35Q>M?6;P@`SKC>6\'B">2X
-M:S`+Y3JM;.")/I[12U?`H+^48E:+B"\_8;!%+5:@/&]MZ.;.'I,-W at RO$O%Y
-ME96PLY$HH\E2A7 at RW^0V%)AK)RD7'])A:4Y7QE4Z1?IUEW7)!$*FEP!![BU*
-MM)$?A!:=3D<C$.HUSRF(IO3*W4-61^`2KMN1U29M]H15=3D4(@,RPKKJKEW[/@-/
-MVB9]]7YJ,C?O`S>@2!*W1ECI#`!<`0``7`$```(```!%``%84%8``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<IJ_":#2C at 5OA=3DJ'_X:96F>BX@)"`````(```!/"$`
-M`2`"L9&7OVK6'VWD'.+!06JSNH=3D93USO-<+K#(\1KB82=3D=3D]"N2X<NK`J#AI#
-M'VS_U)Y?3>&.'B at X=3D&=3D"6=3D>Y8,#!_'"DF52 at K<=3DSABYYP'3>]?D>CTDZX'%\
-MZJ7!@5?']8;Z^&Z-T%AN6U%MA##'\P-F`)V_[Z_"Q.#^9Q8+*$67%YB.VI1Q
-MTX.Z74R`W:@D:H\CUWNLZ9<(_ZCG[%7V`Y:?YCQ365 at 0?FK#AO+2L%;#'M%M
-M.,VBI(;JX0O$[(Q5+^.BKS3*6A/7.U(?%7H%^?QR!#Z[FX/M"FN)2S&I&!Z@
-MS at N";&`!"NMADK.KZ`;U3:+3 at -?>.E5M=3DQ[(E]6_R!]A(SLF`2.N;RN8]0 at _
-MQ\"85]8D>A3H/XH\;(2@(4 at 2MT9E$`T`?````'P````"````10``>%!7``!`
-M$0``P*@!`<"H`0(!]`'T`&0&29T,%+?'_93P!V7XNIU:L.8N("4(````````
-M`%PJ``!`)`IILZ[(C+6G'5J2^$M4QTT.AX1S<>'-82>DS1B at T"<L_UQ7:1!K
-M%%1/S at YH^VSN/J?GJNCFEPNA.ZG02!*W1G(;#0!L````;`````(```!%``!H
-M4%@``$`1``#`J`$!P*@!`@'T`?0`5`8YG0P4M\?]E/`'9?BZG5JPYBX@)2``
-M````````3````#!\02WYE\0.3QJ;MB*SGAH3DB56H-4K;XUAL4E\$BVF0',9
-M(.-!L]'2!%2)/D at 2MT8D*@T`;````&P````"````10``:%!9``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.9T,%+?'_93P!V7XNIU:L.8N("4(`````0```$PJ```P
-MF<98A_[NK:.YV2V<`R+6YI(@JB^_;4(QE:\/V_V-DA7;`)X$`K2$.3I_%Q-(
-M$K=3D&<3 at -`&P```!L`````@```$4``&A06@``0!$``,"H`0'`J`$"`?0!]`!4
-M!CF=3D#!2WQ_V4\`=3DE^+J=3D6K#F+B`E(`````$```!,````,)Y/OC'CV#@_%VI?
-M)&[5#'\:IJG!Z]5X0AO05R/H>R`!P at E_#UY#1?_)S\$%2!*W1H at S#@"8`0``
-MF`$```(```!%``&44%L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE1S7>%+UIUG(`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``K@>LB2!JQW at G7X:DQFE)B<0W=3DQ*P4^0ID*[96X4_M6O[
-M:(*MB)@/K at YU'X%(VWFJRHSN$6Y4B.;F)%LXR5HE=3D0(<$CO_E(/?D\.V#-2U
-M&I6S,&P:M8[O-,;D)OY. at X/#+B\'YLYB!<8-MYP"$%#G(X'ZP6=3D=3D_L=3D@\S=3DP
-M51('F*@I```DF1,[:O?[F^$HA-Y[V15T.'1?<8`AL`D"W:-9[@1%BG`I```<
-M``!`!.GD!K2:>:TD,A2'3C/J'CN>]Q7M````'```0`6",D_=3D$N!4W'\9*#"S
-MX[(5`?M]84 at 2MT8G0@X`7````%P````"````10``6%!<``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*4<UWA2]:=3D9R```````````I("(@`````````#P````@``!`
-M!@````%XO,O@`OE7S"&$PW\?_<I:I,X=3DH$@2MT:$4 at X`N`$``+@!```"````
-M10`!M%!=3D``!`$0``P*@!`<"H`0(!]`'T`:`'A4<UWA2]:=3D9R```````````I
-M("((`````````9 at A```@``!`!@````%XO,O@`OE7S"&$PW\?_<I:I,X=3DH"(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``K@>LB2!JQW at G
-M7X:DQFE)B<0W=3DQ*P4^0ID*[96X4_M6O[:(*MB)@/K at YU'X%(VWFJRHSN$6Y4
-MB.;F)%LXR5HE=3D0(<$CO_E(/?D\.V#-2U&I6S,&P:M8[O-,;D)OY. at X/#+B\'
-MYLYB!<8-MYP"$%#G(X'ZP6=3D=3D_L=3D@\S=3DP51('F*@I```DF1,[:O?[F^$HA-Y[
-MV15T.'1?<8`AL`D"W:-9[@1%BG`I```<``!`!.GD!K2:>:TD,A2'3C/J'CN>
-M]Q7M````'```0`6",D_=3D$N!4W'\9*#"SX[(5`?M]84 at 2MT:0=3D at X`4`$``%`!
-M```"````10`!3%!>``!`$0``P*@!`<"H`0(!]`'T`3@''4<UWA2]:=3D9R9I0H
-M0=3D4OH^(A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(```^Y8NQ495!8TPUK5I#8H2_:
-MY<^-5C9.P-2^/^^DYLDTJ%W_CL\J4I#2,R'>&C0UA8FC8'H-V]0N:`&09EZ5
-MBD\#])$`JN9C!U`8X-F3"&64GC6%U:[.M5_4!Y8/-_(P#(K]/6&^86R;%=3D2W
-MTWM7]%Z*Q$R8E@^@M&+3](PI!<-W*0``)"E6R;4D!::0"DUBJ2!"[.3$40FO
-M$HX21^0H4IK$C4I[*0``'```0`1N:5:LL=3D=3D?Q_Z]9>NBJMRQ$(E9&P```!P`
-M`$`%D_E4NZ6X&3)<8W\:)=3DBCLX9]Y?I($K=3D&]Z(.``P!```,`0```@```$4`
-M`0A07P``0!$``,"H`0'`J`$"`?0!]`#T!]E'-=3DX4O6G6<F:4*$'5+Z/B+B`C
-M"`````$```#L(P``T-=3D9+/)K2H&Q4,],7V6;'8:&'E8X8C6_71U84AHYIS3I
-M7'U!YBKEYA6, at LEDD'@Y0B)0B,L62S5")D*4FC3=3DMY5J at .I]W*IAL at M2U]3J
-MF/]C<%/#TW`/K:C-6#-S25X)A!)ZD9 at CJ-&W-,2LEI57MP`\"VR"6_H/"<WS
-MRHLU.,'UF/S(L2P=3D<U`>G'G4@"43K,)T<BVRNK1(!:OHEX$<>*03TC/"PILI
-MM6,UEL0@]4E8Y$]A<P.D4%@;TM\*X8"%ZQ,[*988]4:2 at P;;OT at 2MT9FNPX`
-MO````+P````"````10``N%!@``!`$0``P*@!`<"H`0(!]`'T`*0&B4<UWA2]
-M:=3D9R9I0H0=3D4OH^(N(",@`````0```)PD``"`)Z/6$A#7N1'IML[B7/&![_Z.
-M,_@\<A3!#T_\1U&\.9.-NT4+5;@S=3DRO(X:]HW4*<?LQJEO'(VIEDZWZ;4(B0
-MD\Y7]BC^X^*L<1::E6;I`\U+5<GF7XW4Y2YQ-<1`?Q2`O9*],2R1\Q^$%%SL
-M4Z'HC7([(C=3D)TW90)".N%D at 2MT:(V0X`'`$``!P!```"````10`!&%!A``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z4<UWA2]:=3D9R9I0H0=3D4OH^(N("0(`````@``
-M`/PA``#@N6Z]=3D[A3SS>B\1^=3D5<@$)C&16`:H:$[;R52""UY]2DN&(MW60I.>
-MRT4O=3D_88C/[GC9], at D:/B=3DH5(**6F!RZL6W_'"X<N at -PTQN^:92[;1@$310-
-M9ELCU(0`AYEJ'R&%4[!.<B,Z2K5`1:,$L_&'96D_8M2G2SDZ3+&?3'B+%8IC
-M66=3D?3$"L?8MJ04#5\6A*_CU9R9H./Z0\QB=3D$AW3X-X.Y at X.)^Z`-OD^%2?C:
-MV4I9D"#=3DB>()!,[A]_'\N[R-RKU(/]HNW2^>5NM,<NZ"OH!_LS5`-"IBQ!)@
-MNT at 2MT8FY0X`_````/P````"````10``^%!B``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R4<UWA2]:=3D9R9I0H0=3D4OH^(N("0(`````P```-PA``#`,L3WSL("*%.'
-M7=3DTO?!N]I!O/#QX,V7"]+^X70QBVY9)GKOUIMY\(A%]TD8=3D28;=3DU`5$7<'U1
-M;DN/>S\:EA04`M,/\0]<C>[?0&BJZQQ_Z<_7Y_CD3F!^M'5W>6\>NEU4>LZ2
-MVO+O20<JK[[DX`H"4U\A]Y8^&TQA0"C at G>6Z^/;LO&2O8!Z/\/*+,Q7B>#*"
-MI0"K34VN-'["_B;]!Z/2.S1'%L7IX`/T7Q<E+;>@8O]E\1T%[P<I>\>6!EA(
-M$K=3D&,_$.`&P```!L`````@```$4``&A08P``0!$``,"H`0'`J`$"`?0!]`!4
-M!CE'-=3DX4O6G6<F:4*$'5+Z/B+B`D(`````(```!,*0``,-NMOW$''O"C.7_3
-MP4`8F[84"6E<M'*T^\M>U_6 at VR&;8HX%8XFPY%CE*K%^2!*W1CL,#P!L````
-M;`````(```!%``!H4&0``$`1``#`J`$!P*@!`@'T`?0`5`8Y1S7>%+UIUG)F
-ME"A!U2^CXBX@)"`````#````3"D``#!^GZ)KSB'8A[%"KAC576//9!=3D#;DI6
-M%KA\=3D/.Z^B]Z,4I94J9ANK4J755_64 at 2MT;A)P\`/`$``#P!```"````10`!
-M.%!E``!`$0``P*@!`<"H`0(!]`'T`20'"4<UWA2]:=3D9R9I0H0=3D4OH^(N("0(
-M````!````1PA``$`'^8X[EK]D0<#[H$\+R]8Z'0)M at -$XZ?OS!K,UUE'M<7B
-MS=3D$*^UUY/,$PER"\;I6F)OF at EXSD)T6QBR8VP)-0N[Y*BK$8^XQA)KX!)+^*
-M\RUH,TD=3DIS`0I.C2IM?1S[Y[XL/-_2+?1I>5\4W\D]":VR`O4.LFR0'T&/Y'
-M`]\^2;>%9_HVRJB;TB at Q'*NVC]^%_FV$I\7`_'S(@!5&[8_6F^.\$IB;BVL,
-MBU1B/9MV+W.&%1;ZBJ0,(K*1#*X'#J:ZIU_]PA+KP7[KL'9O]Q0'"&K=3D"E-F
-M_*5:MR\'G<A:8S-YX=3DST&>E%".OYR^FV:W5SL=3DN:.<3P')%E\&VO2!*W1I(S
-M#P`<`0``'`$```(```!%``$84&8``$`1``#`J`$!P*@!`@'T`?0!!`?I1S7>
-M%+UIUG)FE"A!U2^CXBX@)`@````%````_"$``.#W!AN&VW!;N`KS]87P*'1^
-MDW(<O%9C(8CSE at 0O,UV&OU+A4SP0QX4>'A>/MYV<VU\I@,:+9V++\;165^&(
-MS2F6SPGO'I*5=3D0S=3DU`A!\'>9;MVJ''V*1F at 1I@'MJ)PPE+]+S5#I#6<V,43+
-MSC18/?Z*9U0`(;8XA%S<;%IOVC)*#G&^CL_UW'1A3L\3/F3$/IYWW@:-:$.Z
-M'63ERDE>2^5_)LPUWSX._J[#\D=3DMK[:6PK)-XG$9$@$7`EH=3DID56?#%;HMM4
-M.`!5ES.FYP!W=3D>UZ?'/^ZY),T9:)($V)21*W1C,"``#L````[`````(```!%
-M``#H4&<``$`1``#`J`$!P*@!`@'T`?0`U`:Y1S7>%+UIUG)FE"A!U2^CXBX@
-M)"`````$````S"$``+"D^HD4-O-0%URDXD/PZJ^LWUL;",KM'L[/<9/9L?PN
-MW-\XH;.B,[U5$/*A<K`:[VMA;38G;\`;!B`24.NLN>,SWT\U_%Z5E;E*'VDS
-MSRY\L8*,39VQ*YQ_ZZDG>PTGWJN5H3*E-X&JE9TZ($U$<I4\-+^^I^D^B0R?
-M.80F*N>0B+XF+^V/OG\3:'^%)Y%0+=3D(W%I3-9`()7OC.F\J95VT?^*Q<`2)/
-M../;7%_,21*W1B\D``#L````[`````(```!%``#H4&@``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y1S7>%+UIUG)FE"A!U2^CXBX@)"`````%````S"$``+#4KI]1
-MQ\(I/M:OTH at 7WMWP5"GDC+G)-UNT?")!R)8M'L"B6W%/93>SW6).8B:K5^_4
-M]80!/UITQ$$]&<T9<A>&J,5@"3__J\[@TML(.E=3D/#A=3D<VQZ#),9U0<C4L;M[
-MYO!/VE?;)SNL4IK]$UY^MHM_S(-V*PF at 7?]P/U17Z?54*LTV8\5+![`%"2K!
-M06HUH,!0*TA?NV#6C\A!4O#4"K,IX at X]ZJ;WU]$4T"=3DD21*W1J!````\`0``
-M/`$```(```!%``$X4&D``$`1``#`J`$!P*@!`@'T`?0!)`<)1S7>%+UIUG)F
-ME"A!U2^CXBX@)`@````&```!'"$``0!7M;S*TYBRO5$N0,,`6TDR.G'4(HE*
-M(*@(BS(QM5#A#;ZWF1FB$B3W""1",<PLW=3D\X"XT"/=3DX at D"\Z63H?994>QRWN
-M:]^Z%FM.KN\-X=3D`6L`VPAE<):HZT;J_XB]`$P/*5'F$";I"B+;C\)`^D5!B=3D
-MA/@-:%TD!Z5]@I at L,+&P2T?-,9:WFW39&X3N:'5WZ&??7!@Y,*BX<:ZF/$.?
-M*9[T at 3*N\MS66?X4W at H"TX$>CDL"M!#V\+2K?&Z`]U<@.]@'X<2.?X.;Y'->
-MILB?%:`B2LST('7SVZJM6P1]`A[;G1Q;<D&\1[7H8[J9URMGZTHJO+AS at K&2
-M`2/DZ at 9)$K=3D&]DL``!P!```<`0```@```$4``1A0:@``0!$``,"H`0'`J`$"
-M`?0!]`$$!^E'-=3DX4O6G6<F:4*$'5+Z/B+B`D"`````<```#\(0``X-0_TP[,
-MHZDZ:.>L:,K+IH4<25R,U\,R<C+Z=3D'/NAP.5"(%0K)%QGGKUZ0,T*'I>1A\W
-M$23KL8FW^];-NAI%U*U;/$\(QGY)]2\]BZ;I26(:=3D'TV[D6+VNO8B[DH%6#B
-M'7VQ%W(K".DHU\?43#JD<!0KSMWKIJ5V5`^;FH at D2[@X</VU4T/<Y4>]ZCZ_
-MF=3DNG%:0@!Y+M<AB)]FS2F2F,=3D[TS(IPRQDD'>MK3WMUZ^S&/L-PDJ:O[ZB3]
-M$_L7AIA]8C"B at S.'2 at 4%E>MOK)5K^-SRY"ZP9GG)Z/&,86A)$K=3D&65P``.P`
-M``#L`````@```$4``.A0:P``0!$``,"H`0'`J`$"`?0!]`#4!KE'-=3DX4O6G6
-M<F:4*$'5+Z/B+B`D(`````8```#,(0``L'B=3DJ2-2K>B>V[?V2(U$@>1?C=3DDW
-M>0\BM>D?&TN9'U at 27>'5TN.PIXBRE4J3$!QB%`DA_ at 2U2-KXFZ#[A\?\<S?@
-MF]S=3D!)+TMX^/>#>[YR`U!'>9D&BBV0=3DX9:A:V]>;C2O[$`0MIW8.!L4B!13V
-MF!`!.+0LWNM6FU5NG^K(4;@3;7-2,!>UI0.9[UY-.E"L2R,E'E,+*]3B$EC,
-MU]_Q7#Q]*T??SM&<9#8[J)=3D)$K=3D&6G\``.P```#L`````@```$4``.A0;```
-M0!$``,"H`0'`J`$"`?0!]`#4!KE'-=3DX4O6G6<F:4*$'5+Z/B+B`D(`````<`
-M``#,(0``L$U=3D$[R+)5E3G@%#I#A/(KCCESXI)YRS"EZO['K`Z.Y at 4W+!Q32V
-MP;HQ.RK"70R;5V_#F&C233HQ4+W.>`W/]HC^[#%T_6I$97\GVRF\I`IH"!"=3D
-MJ>!#(>?-T at C;8$/0E3B.>U"=3DQ-`L5$8+#.!?J`I;BQ";QL5VM!?RQWX2<NHC
-MF32'QDW+=3D,`KT8A(^8&+&EA]-Z\9UA];)Z33Y:.<+(BS_5UBTN8,!YA1/IU)
-M$K=3D&ZZ0``(P!``",`0```@```$4``8A0;0``0!$``,"H`0'`J`$"`?0!]`%T
-M!UE'-=3DX4O6G6<F:4*$'5+Z/B+B`D"`````@```%L(0`!4)Q#.A;,CU-/1RH^
-M/^=3D>6&3>OQ#\T&8&PP at +U9N76'@*HL*](LI*UVO*A&A(,)8PZ`]\5T5U at VOY
-M^H8GF,?5M#XTROH!DT)C6QAQ(FMD%SHV?-`7"(:3X5CW;16"97`Y163M/"O\
-M3<&&JS4]%":W5*X.@;2Z25%T#)#?T&]Y[XTB$D72+DE at BG$@$5JV_HOP!>B]
-M0N\=3DC0>:=3DRA`>8_AN'4C7";??HXY.(SN>-+\O),J@^AQM!QJ@<ZC5^?%GPC0
-MJNY2(V>/OX4RSL6A*F0B-2B"N=3D=3D?6ZPIGB$1[8JK>;G%S\G"TW`KUJ^^RJ%5
-M"3/`B-T>X`4^'.G`&YJAWZ#P30M,70?W+-*OXOBT=3DF99&+CDOPB;1_]%GV`'
-MT[>>#$OA3X^-IX@<D_'Z!ZA:%WUT%]05*'UP`WN)S&<M;1"-MIH08O$!BO,J
-MX`6,"19021*W1C/9``!<`0``7`$```(```!%``%84&X``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I1S7>%+UIUG)FE"A!U2^CXBX@)"`````(```!/"$``2!I^YO=3D
-MDYS7?#R^_3X<$,:V$!"=3D43ZVCYSG&P^#7``;GS/,W*IW8?`5<;0VP/:..H>S
-M%%)T'\!C#7/6 at 0K+K>!<:7W>0 at H[3N=3D[U,68^1W:D=3DW>5YD*^A^FK&E`M0]6
-M,K`Z!0C:-<C64T&#K`[XH`W!:M/QMO?GZ::YSW#T$65R6EY!,CES2W,5W`.W
-MMHT'0&#(6'P=3DP at 3\3AY3*'`PQ8_DWMJ?@J1]?*/"CZ^$Z8X&:G$D?*EEI[6%
-MW+A=3D"/)ER?+#09=3D3:!.&(K%,!E.VO;`@=3D9'9!#ZTDLF75V`3_KBB=3D9I1184M
-M":EYF\:.2*A;%A6US;V_DKJ<LWYP(+7&'9+5=3DOEOW^K<RW=3DQGZP(>J1XPF-@
-M*)O#LZ\N[Z>,VDD2MT:C_P``?````'P````"````10``>%!O``!`$0``P*@!
-M`<"H`0(!]`'T`&0&2?1AM#3L=3D3KZ.9E%7;QC/<LN("4(`````````%PJ``!`
-M=3DW36-]:]23Z.RBTJ:I3-3-`Q]61<6[S"K5ZNN_=3D(*Z=3D+#3D'^BDQ,)1S at 8$S
-MMV@^4(,)*TWF(>!+@(?A21*W1A<+`0!L````;`````(```!%``!H4'```$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y]&&T-.QU.OHYF45=3DO&,]RRX@)2``````````
-M3````#`A,E.*,]Q&L)\#RG(QQCKGEA??-#KPJCJ-FA3M'.A9U!^R7GJ;7>\E
-MS7HN`DD2MT9I&0$`;````&P````"````10``:%!Q``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.?1AM#3L=3D3KZ.9E%7;QC/<LN("4(`````0```$PJ```P/6T*4C`]
-MH$FD1"R4VL%C6TG$V[9?V,HF`S9.>^F4KXBBK3MZ963JL5CYT at 5)$K=3D&728!
-M`&P```!L`````@```$4``&A0<@``0!$``,"H`0'`J`$"`?0!]`!4!CGT8;0T
-M['4Z^CF915V\8SW++B`E(`````$```!,````,'UAY94$YF*M.)MQ&!\2 at 8=3DY
-MPJ,$!5,UY8ZD6U9+#;[24=3DJ<T7S4N699G#YI21*W1D(B`@"8`0``F`$```(`
-M``!%``&44',``$`1``#`J`$!P*@!`@'T`?0!@`=3DELL'4T)D46M$`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``]YF>//X9E,[\UU67P^K@*M<&_G%U02V?)*\1%L018%4M^W[0-JUD
-MD<V#7`-'[*MQM`/SVK:>*=3D`(D))N^0]AQD'`P?S:5`R&8)1)5[[W#J(T]D3=3D
-M$B0OAW.G1<=3DU)XWB&S/-RSE;,BD*`HDJJC>"5;5+^^SVEK_O](B;#K:8).0I
-M```D%_W\#+5(<-L9Z[(.N[TM?6J^ZN#X?3:PEYUQ6?G0J)HI```<``!`!)SR
-M<H&Y5\*-MP5[X3H%7LRM8P9;````'```0`4")`7-)TZ'7X<#E<\Q10'WP:!Q
-METD2MT8),@(`7````%P````"````10``6%!T``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*;+!U-"9%%K1```````````I("(@`````````#P````@``!`!@````%L
-M\G8I"V(T6G7>?T$?83%":7`]NDD2MT:@00(`N`$``+@!```"````10`!M%!U
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A;+!U-"9%%K1```````````I("((````
-M`````9 at A```@``!`!@````%L\G8I"V(T6G7>?T$?83%":7`]NB(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``]YF>//X9E,[\UU67P^K@
-M*M<&_G%U02V?)*\1%L018%4M^W[0-JUDD<V#7`-'[*MQM`/SVK:>*=3D`(D))N
-M^0]AQD'`P?S:5`R&8)1)5[[W#J(T]D3=3D$B0OAW.G1<=3DU)XWB&S/-RSE;,BD*
-M`HDJJC>"5;5+^^SVEK_O](B;#K:8).0I```D%_W\#+5(<-L9Z[(.N[TM?6J^
-MZN#X?3:PEYUQ6?G0J)HI```<``!`!)SR<H&Y5\*-MP5[X3H%7LRM8P9;````
-M'```0`4")`7-)TZ'7X<#E<\Q10'WP:!QETD2MT9&90(`4`$``%`!```"````
-M10`!3%!V``!`$0``P*@!`<"H`0(!]`'T`3@'';+!U-"9%%K197]\VRIG#,<A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``'VM:Y$6_;`\V#$5<:O'55%]#`I>+R.A
-M-PVA!V\NQNK6JGTBHNHJ`8MZ9Q[^B1D#J2;E\2TW"C37S;</D2H!3(`$@D#<
-M[-^FO9%NJ5JDT:X%T:]KN_F_F[DF%2EO?-_M1)$"8-B#[L+FMK^M'.`0%8U8
-MW!-$L^RG)3ULVPQ;ZCM,*0``)'&.IA?;E:(CF+S?[4:%%^;R[4(+"G7FON:]
-MC1$"%+4Y*0``'```0`18<];DHKV,]79CWR;[P8D6^V*"#P```!P``$`%F at G'
-M!O*!@X!*'+R<A.Q*>%5.P)!)$K=3D&"I("``P!```,`0```@```$4``0A0=3DP``
-M0!$``,"H`0'`J`$"`?0!]`#T!]FRP=3D30F11:T65_?-LJ9PS'+B`C"`````$`
-M``#L(P``T,T_8`0@)L,>C9'Q/_F#_N:/M`$D(60,C#<2O&*]5]:X@*>,3^EZ
-M)21/V$C"SLV)AH at K=3DKI#<$0Y76UCS._.$%?)6<!EZ0=3D5KJS<L&HXD&/S.,P2
-MB[E4Y;^,ETOT!$VAL8D>H#8O:I(JV?'8U("]8<1HH3DGSIXOY3!^E5GU<B\%
-M@&N<,RTD05R[>9+7\E^-K35@](4[C-HY08_'%E<+U6AS#!1F9/[E9MTPP/\>
-M^Y9Q+A^;!-$"]+9RD[Z%.),>Q%Y[UK8D#_W:3#TG5$D2MT:5J@(`O````+P`
-M```"````10``N%!X``!`$0``P*@!`<"H`0(!]`'T`*0&B;+!U-"9%%K197]\
-MVRIG#,<N(",@`````0```)PD``"`N@(%;?/-7FYB8/F=3DI\)G\L;1S!=3DOEG\<
-M?)M&H9$5QR at O2YP%QZ`M&3)EPB39F\B)L:V#4^E8-RK2H8P0<I5_-+>%J"@Z
-M9VQB+B1R0BL'V[$'T,XU?.G5R/8VRE;6P^'=3D]5TYXYLS`/-PQ.W<*"03SC'9
-M]E`;7#&P_TD6:TD2MT:_R0(`'`$``!P!```"````10`!&%!Y``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z;+!U-"9%%K197]\VRIG#,<N("0(`````@```/PA``#@
-M*`L'R_I-P238O/)G#H8)!S?>2Y]LF!L1C7Q<)X>CZA[;B1(9*"!,Y/V[AA#=3D
-MBM:5"-1J<5:AE/([HG+,HY*Q6YE/E]>HTM>^41 at R,9Y)O(WV7*O>'-W at .R'Y
-M<Z<P[;O6GF:2:[?UN%;Z5_?Y#&1YNS/9)U4^,<H6TPL&,#]&61N32TRG@[RO
-MF*#8EC1V+M'3ZW;LJ3#=3D9?/=3D9F,M./'1EM,3D4<"EC=3DY!LL83I#W0;DL!OJ%
-MW*#IK7&'ZLZ?D])0#3<HDS"9\T)Z9-%\6^%D;D-ACMK!KBBJHKHH\4D2MT:R
-MU`(`_````/P````"````10``^%!Z``!`$0``P*@!`<"H`0(!]`'T`.0&R;+!
-MU-"9%%K197]\VRIG#,<N("0(`````P```-PA``#`',S6`DXCXX-!!I<(XFC0
-MP`NIC3Q`]B\,^.U`LJR6W0Z4+#\^Q8QC!"JE4MA1Y0XX9]BS%,?HNU%B*E.6
-MGW;XI!"B:G:33*J$HR'+4P&I^U9SM0AZY.2<#B8DQZ2((?:\2[5`V6;6T%T8
-M/3QJ]92*EA7*"*0/D_PH]41#B"MK4-;"?5J'Q*\1>U(R2GEL+!E]''_5E.KQ
-M&H37%QF8UD7A:CD]IF`OVD%5#=3DX?PG at E+=3D.F5>T`"X9E2'U1[J=3D)$K=3D&E=3D\"
-M`&P```!L`````@```$4``&A0>P``0!$``,"H`0'`J`$"`?0!]`!4!CFRP=3D30
-MF11:T65_?-LJ9PS'+B`D(`````(```!,*0``,(8CNO?2K'?M-<6J.BTU;B7Y
-M=3D$".I_LI5K6)D*+!0&\9S at 6+9F7I<*0)XXC`21*W1I+[`@!L````;`````(`
-M``!%``!H4'P``$`1``#`J`$!P*@!`@'T`?0`5`8YLL'4T)D46M%E?WS;*F<,
-MQRX@)"`````#````3"D``#`94/^Q&P56<-,M.C9G.EQU!DC`<`?"[L3H.`97
-MVGS]<I6->-NK0/?I(HZ<=3DDD2MT9:%@,`/`$``#P!```"````10`!.%!]``!`
-M$0``P*@!`<"H`0(!]`'T`20'";+!U-"9%%K197]\VRIG#,<N("0(````!```
-M`1PA``$`'A2$6NU/H+KLR3:D1R(GT(\THEPT07GQ^3ZXN&MGP01D1-#!FZ_W
-M564?$6Q\:/Z?^-F>Y#(R*A(2H?^_87-7Y_OLA?[R7`OMWIQZ\@/)[34O\@<;
-MKJ#/6E1OTE.9 at NW7Z/-C+9!PZR?I$3PL6EWBBI(P at -R-BKFY[`B99[D%F3DP
-M9929UZI)`M26UZ>D3ZY7AT%.#J`TL<]=3DAW+#K,1(^_:(K'GR^V/($'/Z3:@9
-MK'M90E<6#"GR$Y4TG"U51++U;3$N,"<W]UK?R7:?XR.*#[N3*2VGY]I+S^0A
-M+Y6P$)1D2?.-.ITPRDYR/HVF9I8,N`]:-K(,>)F4AQ#K21*W1BLB`P`<`0``
-M'`$```(```!%``$84'X``$`1``#`J`$!P*@!`@'T`?0!!`?ILL'4T)D46M%E
-M?WS;*F<,QRX@)`@````%````_"$``.`?HX$1:9Y_I6]+L^:<4>17#'L/MD(]
-MM%0(U3J`1,H6'(__(N9VD-.G+J]<<%,XM_5-.YPVZ>8N:)%+5(($'AIC56^5
-MR)MY:CRA"#.E5^@TVZB>Z[!8XDPV#ZLL-7QG7/E,F$&27T4(Y0X7S+VJP4UG
-M]E^1=3DF=3D,M7E"/@\J#_^-66[2ZQ>+]JI<6LH4.$P:PR[O^$2]S/;O3'!OM7HJ
-MPX^^FRD^>>M"[&^?@E?794<,>LU9OQPD+MV6A;)J"L.6D&8&'0<NQ=3D?QV7V(
-MWMXL$],+]N-8A$/I!IB:!`AH21*W1K<Q`P#L````[`````(```!%``#H4'\`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YLL'4T)D46M%E?WS;*F<,QRX@)"`````$
-M````S"$``+!:5")/_&3K=3D-XY'G!>&K5WN`A($:^I_XO at IJ#]>S%N!U;,>CA#
-MC[U/3:.C>,RW,A][.)$&*4E#,4E;RMB!YY87$&6D3LLJN.RVNB_]3GA,&'_#
-M%?[W](_);UYO9;SLW_*N%[;^-'?44$)SAX(>6G_0GL-G[8)HM)MIY\/1BTV0
-M91_)>(`&8W]@15`'X0N6R6,`.@'/*LM5DBT<;$]MK&=3DL#<&Y]*7R[M)O%GSL
-M21*W1A15`P#L````[`````(```!%``#H4(```$`1``#`J`$!P*@!`@'T`?0`
-MU`:YLL'4T)D46M%E?WS;*F<,QRX@)"`````%````S"$``+#KVT$+MO5<4&E\
-MH64Y(#S>K%06TN9KM]]#554>!E$@@HB1TVL0F<CRB!RM;(>IW at 0RI@+;Z.\#
-MB;H3&0G-NR'Z@#=3DK!N;>8JU+\3^`^*M4;AR*)E%:NAB?O6J=3D808!NA?IL:,X
-M)>@X_Q%W`;=3D82`+M"<#"9=3D=3D3FF1YCR.KAD.#655U$8E*V!3^?C*DGVY1`!,=3D
-M`S$0(<I3X.Q35`HQ&R^`HOWG%0-4C9C[@$,821*W1HYQ`P`\`0``/`$```(`
-M``!%``$X4($``$`1``#`J`$!P*@!`@'T`?0!)`<)LL'4T)D46M%E?WS;*F<,
-MQRX@)`@````&```!'"$``0`4:N2E-?@2D&M.B`:K(?U at 3%VE(I7;2VPT]0)>
-M7BZC121'"FMTK+ at ND#D45DZ2"([;RRY]L#:90IAZTE5%7NKT`T&1U?8%YU$T
-M(`#3UP6Y)\1+SD;`<;)ZR,+!)@^!]!_YP_()5!_S@;?I`AFG2:2VOY"PQ.,J
-M6Q:;B6M39.CGZR4A3I^H,I(X6MNF5!1X6^I'98%=3D=3D=3D<QF6-%5!/7>/E,%;D9
-M*R.W;2:F/J;1LZ%R%XI(@];B]_9H=3DF&"/_SB[V4!:_;IE;>DI(IBDW?2I=3D=3D&
-ME^*IYPYJ at H*Z5SC3LND6@`K;O/TO;>Y];HG^K0<?,"!M^LZ*&9'K$Z)?)*M)
-M$K=3D&6WT#`!P!```<`0```@```$4``1A0@@``0!$``,"H`0'`J`$"`?0!]`$$
-M!^FRP=3D30F11:T65_?-LJ9PS'+B`D"`````<```#\(0``X#H"\EB at Y/#FO*?U
-MJAW)T8IU6$D.9-5?D8%LXBT]&+,C<@,+/*#^)G#ZQ#SL`O0)\L],H^X-/S1?
-M88TVA,_W%-\WL?\H`ZB?>4(N;Q,>'0T5<V\6/*)=3D?SGJVG1`+`J:EFD'>RQ+
-M[GQ.+`_.BC%SQY\K=3DZ)USCS])Q&H^'0%!,<8.P3:TI=3D[?ML6K";2=3D"-*2=3DL7
-M]&AQ^J^)3YES9$%EEL;(&K;9H8U&PK8*_XMZE(/4;'$0M[Y9>^,)JEW+O<_H
-MCM!+Z["8FCVD/>Z(-4:0`^_+84YT:^P[<`N)IRQ)$K=3D&N(P#`.P```#L````
-M`@```$4``.A0 at P``0!$``,"H`0'`J`$"`?0!]`#4!KFRP=3D30F11:T65_?-LJ
-M9PS'+B`D(`````8```#,(0``L(M.:_>!\KE(=3D4)Y%<0E*,E#!!)\5PRHT.NA
-M,:?'AV0EQT2K2A9V,0Z89 at 1->]T(2DQL2C?[&PY&6(..XO`Q!SS+_Q_ at _+UZ
-MSO$>ABQ+JNT&@;*#L[,6``S6.^O7/UL#$7Z`ILK4<]F\(CU7/DW[GS9'_1G0
-M=3D++HI`T>6M`E!A7HK1(Y/P$R\XIVA:@:S9)XK-XT"A3V#/9:T:`U^D-QIU,!
-M^U0P!(\KU&;_AZ9)$K=3D&[ZP#`.P```#L`````@```$4``.A0A```0!$``,"H
-M`0'`J`$"`?0!]`#4!KFRP=3D30F11:T65_?-LJ9PS'+B`D(`````<```#,(0``
-ML`'B749OI1L*:1;)B"T$ZP9_U*V=3DF_LZ\3IV%Q@`<<.4B]2P*1E5??6R`FH+
-M_F20&9=3D/:">U,5.1J&42SA8W*,CGS#!]@:LYH5/VV\EBVI+56ZZS/4Z20^+-
-M15.O/*T&Q$>)$^+!G!2,USWX-W at S&'DWD/*"CS\"M4I"-SN;.RS=3D:@(*<T%I
-M.`T'*GEW;R4HZZPC2F0PFAS]$I<JN'9U["5JSI!XGH^>=3DWJ*(`E)$K=3D&FM0#
-M`(P!``",`0```@```$4``8A0A0``0!$``,"H`0'`J`$"`?0!]`%T!UFRP=3D30
-MF11:T65_?-LJ9PS'+B`D"`````@```%L(0`!4%(*U(&<\I-J?8=3D<E<0 at 3*>N
-MR%M:PW1T^(CF(1L*?G?.+D6(KRWF9Y;J=3DUUL[9\FGUR!@MVER%>^8?JX+PD+
-MX63\3CPC2HG,9K07O#-]2R]!^5.(\*?_P@\K&!*,]3]8<,_%1A%//*4<(GIJ
-MTW:,RP(U#0NI1!Y7,1-NCKAFU.,&".$$7B)]%WJ>0/.:;^TK'1_,%$'Z3_?*
-M").RU`-X0PSF/'%*7FC+;PZCB-&<AS,.SN at +(JJDTDDKQ76N,CIR>M2A<>#/
-M.&((;V^Y%\^K3F<7W#A&)OHA$\2DW$OABYTLS$RI^)[^757VY+_VEOH4B\'T
-MXK90V2E/,28(^!/L!`#,IG-]LT]07#4S:-*2!U)DIQWV2)'S?+"'<^'43E?O
-M.'#):/,M)_\4]$ME1NRNN6>W0#_$L#.G-4X`31EJF&7\]^9+SF8]QN""TXBT
-M21*W1F0)!`!<`0``7`$```(```!%``%84(8``$`1``#`J`$!P*@!`@'T`?0!
-M1`<ILL'4T)D46M%E?WS;*F<,QRX@)"`````(```!/"$``2`GKRF?L\#G(X>;
-MOD2359X\,RLZUF":B+MK`QQIO/Q]PCE8F:%3B-J_C>UYO9,X6AK(C at R8%D$B
-MRSZEI>HZ6R\:3PQ$^ISV9"TV4P5H at O)!U&?)_8]'._5'V+6=3D3XOJ%,U;H6]_
-M;^TVF/]*A*D@(@A1'C8C*RKHQ31/B1//)'@L#&=3D*YT1P#*@8H5FW[]UM6)2R
-M5=3D6#!M_)'0<3%'O>+<L&,QCE#'=3D3W;,-#/`,-O[5SEE<(9-(?\CKH)PJG002
-MN9M1N\4$S5VR$Q?!$@U--U$2@,+`1[59*:3*5%@F72&B`L!N-70%W<_?@7PR
-M.*,=3D7.L%HQ#YYS#F/+YH[0"PR,ZI_84GM,LWX`_<4_!"ONV;[7\!1Y4CIYU;
-M74!\FTD2MT;Q+P0`?````'P````"````10``>%"'``!`$0``P*@!`<"H`0(!
-M]`'T`&0&27MM*[UF`8A9!U]+"]N40[,N("4(`````````%PJ``!`H$QZDMKM
-M`BK4()]JSM0!!-07Y]_^\5S3*K3=3DZBE=3D`D*`-JKS,+%V8BUIEAKW*/7:U;`4
-MGO?\V]29E%(V21*W1HL[!`!L````;`````(```!%``!H4(@``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y>VTKO68!B%D'7TL+VY1#LRX@)2``````````3````##Y
-MD,_9M%0. at 3K_4V)$H_A[<B=3DXZ$EI`?>V*W=3D_?NEHHI<%.(3CS,DONV*W)4D2
-MMT8:2 at 0`;````&P````"````10``:%")``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.7MM*[UF`8A9!U]+"]N40[,N("4(`````0```$PJ```P[LH0)(5 at JQ/Y;%4K
-M665>82]W5,0K41:F(6[^71R^;`U2ASH24CO;?O1S*9%)$K=3D&>E<$`&P```!L
-M`````@```$4``&A0B@``0!$``,"H`0'`J`$"`?0!]`!4!CE[;2N]9@&(60=3D?
-M2PO;E$.S+B`E(`````$```!,````,&-MWF9JZGIK=3D*LNJA`%G6\8^VT"9"3@
-M.+?B85/(4):W$!`:@7HW0ZV67)2$21*W1HU1!0"8`0``F`$```(```!%``&4
-M4(L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE$'CI=3D<8>^AP``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MPQ0J!KA:;JN7%\?^,Y?EHE;1()BD2EII\$SF]X6^7JQ9&$T92FQX;Q/-+5L3
-M*2*VFJ0;*AY@"/X^!L-GVEQ/F^9*5D>;5\">)6FZIKHM\-\S>C@`JY?J[?XG
-M_YT-\+2X7O,;0TL[7HM.T]*S&:"B<R)/!*]/`4*TYPCJWYSK66DI```DQD#)
-M.6].,Y;%HAV^X\N1WJ3]4G$!V6Y,-J,Z"+6B+$TI```<``!`!$5,<Y,.%D*B
-M)O'_UPV\^,)F/2MI````'```0`6!J4(`PU"G!B.;IU&2=3DLG*D<"5-DD2MT99
-M8`4`7````%P````"````10``6%",``!`$0``P*@!`<"H`0(!]`'T`$0&*1!X
-MZ77&'OH<```````````I("(@`````````#P````@``!`!@````&R^+<W&7NN
-MS^\%QIDP#R6(.,#Z#$D2MT;><`4`N`$``+@!```"````10`!M%"-``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A1!XZ77&'OH<```````````I("((`````````9 at A
-M```@``!`!@````&R^+<W&7NNS^\%QIDP#R6(.,#Z#"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``PQ0J!KA:;JN7%\?^,Y?EHE;1()BD
-M2EII\$SF]X6^7JQ9&$T92FQX;Q/-+5L3*2*VFJ0;*AY@"/X^!L-GVEQ/F^9*
-M5D>;5\">)6FZIKHM\-\S>C@`JY?J[?XG_YT-\+2X7O,;0TL[7HM.T]*S&:"B
-M<R)/!*]/`4*TYPCJWYSK66DI```DQD#).6].,Y;%HAV^X\N1WJ3]4G$!V6Y,
-M-J,Z"+6B+$TI```<``!`!$5,<Y,.%D*B)O'_UPV\^,)F/2MI````'```0`6!
-MJ4(`PU"G!B.;IU&2=3DLG*D<"5-DD2MT89E at 4`4`$``%`!```"````10`!3%".
-M``!`$0``P*@!`<"H`0(!]`'T`3@''1!XZ77&'OH<&^^L3\THX2PA("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``!F[:.%*0;]@</6.)Y8AKD#](:4S:CGE\;@NN504
-M113JTN:,9'7;7&N:L:RG;E_*-BM)"J_-/ZC+8B"9)O8JAKCO/:X84 at IL-<L6
-MMZ4+]QW5N+O/)BN!9YLK?RE`:SE`_0XCN1]O[DJWNMX.F`D@^U6??_.P5J%U
-MPXE>B[!C]=3DOC*0``)`6P:K>*B&8CJOAD2AX=3D:,"PUZY._^?9##LSZ$>CS<[S
-M*0``'```0`3'=3D(C^K31S"@;W\J!UN3E-C*3@/P```!P``$`%9*EMGMS`$H at U
-M"G70C&&<ZF:TDO=3D)$K=3D&#\,%``P!```,`0```@```$4``0A0CP``0!$``,"H
-M`0'`J`$"`?0!]`#T!]D0>.EUQA[Z'!OOK$_-*.$L+B`C"`````$```#L(P``
-MT!)E,?HVE4E$/K>X9UV:6W8.^H-2')JMSZEU9^D87(X(G&I)J`"YV3(G#>@+
-M;YJ_JIS,[,F'.46XL?;+W at Y1;U`EQG-/H at KI<11$\#`6F`UC^MRRCQQ%`Q%"
-M?@HB?RS?`R!0X=3D=3DTK8F_>R$Q=3D.>+ECA"*=3D]`ARTB"17"I-M^&#`L%EE5P at O2
-MY7&<N4Y:)@8DAI801`Q=3DX32MJ`Y(QDS"D)$$(>:0,L6P"T5(">QZ[<MNLD-.
-MQVB/'`I0>U=3D)^.K[G6S at 1P>8VN?"9MDUM4D2MT:CVP4`O````+P````"````
-M10``N%"0``!`$0``P*@!`<"H`0(!]`'T`*0&B1!XZ77&'OH<&^^L3\THX2PN
-M(",@`````0```)PD``"`5(Q7T#R4WN#OVX4*2W^%[W-L4`3OA'+,RH>'@R&#
-M;(GMRPL(=3DX&L9RH&^<U`B.S at KE<')9IEK0^S>U4AY=3D)&$?$FY[&A4>:EUZR?
-M=3DJL41CS-'<%,'\06WLVN0RX63;=3D/EQ&]/:6C%"<A$(YPE(VA(M%1_8?3P#<9
-M<E4@^TD2MT88^@4`'`$``!P!```"````10`!&%"1``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z1!XZ77&'OH<&^^L3\THX2PN("0(`````@```/PA``#@WW$"TF;I
-MQ'XJ,:9R49)T^2L9/57N?E_''04#!2\!1\A?N6?B1_0C&M^F(V4\"AQ`6`M.
-M=3D7E'>]4<:YY9:?1./@8;6*U&AL1!;<3!K0DQ2`VB6FP^FTP%1?N6&%#G%JUP
-M=3DEU;<?(%-:RK:V</E'=3DG%[:]V*F9<Z at A:&1D7 at TFRQ2!B3F#U"A9QDHW6E.]
-M+$M7Q;+X6)5'7WO<4)9W+08'L(>OJY>`+PD_5,P`*:3A?S689`]7K%9R(+QP
-MT=3D#Z"0A`DV,:ENV%Z+\EE#. at _F*?(;>F=3D8J;-$=3DF5>EZ8TD2MT9:!08`_```
-M`/P````"````10``^%"2``!`$0``P*@!`<"H`0(!]`'T`.0&R1!XZ77&'OH<
-M&^^L3\THX2PN("0(`````P```-PA``#`=3DOJS"X9!_P)4E:])NA4R:]>'P at 91
-M,(*QS]1D-SE>8%J-W9EJZ*,9A;/M?48W3ZNE6,Z>>K#4ZBD8R<1CJC'U&H2'
-MA$CLP]/2C8\!W$4S\]R-O6^:;0K0O^GK:3MULD)7BK at EWBLSO8K=3DW38_O'Z.
-M-6<E0O3?X<[J2H>UPGTH=3DCR]IY(9'T"@X`5O66UK'<6L)S"P6B[0DR%=3D5J4@
-M_!NB&`!4\UXX[6^:W"=3D^]EL9^GH%I]5W$LBMPUB[:/E)$K=3D&'A`&`&P```!L
-M`````@```$4``&A0DP``0!$``,"H`0'`J`$"`?0!]`!4!CD0>.EUQA[Z'!OO
-MK$_-*.$L+B`D(`````(```!,*0``,**'LC>TCRQZF_:8N+X)D#69^VYR:4M6
-MEBN;?;>@:JQ<_#T<N`?F4G63(%($21*W1 at 8L!@!L````;`````(```!%``!H
-M4)0``$`1``#`J`$!P*@!`@'T`?0`5`8Y$'CI=3D<8>^AP;[ZQ/S2CA+"X@)"``
-M```#````3"D``##\QQ(9*6AH42FS?RR^]\4C>HL<\$>#HL%OME.RPV7P\C&;
-M:</(40#G1R(6BTD2MT911 at 8`/`$``#P!```"````10`!.%"5``!`$0``P*@!
-M`<"H`0(!]`'T`20'"1!XZ77&'OH<&^^L3\THX2PN("0(````!````1PA``$`
-MYR9>K8A%N5C$C0FQ[N6SJ06J$[1=3D`)-59G<'J=3DU3R\+EMK0#5%1_$5P\Y!.K
-M61^;JG@&7%@)MZ)HX*_%'"Y"L4AS(C,Y8<UPX6*I885)(GW^#$MQU at 61-/?]
-MB]?K4W4V6EC69K%+B5Z27V00:L:)@3S(AQ*I<(Q`%NW;RR["3K%A*TV33)OG
-MV,F-0#6IRMM*;J0I[(W.BF'9&=3D'ZFJ:B:K)5!')X':8,Q93`3R\VUH,&`=3D<E
-M@*J7S-HHVJ<\X;B_`6;L0GD=3DH6Z<MS7,T6+`"B/&+J>(6D\9/PNQA<1HMEP5
-M7^2&T?<VB2]\_48K6\=3D1"U`,TWNE*[:%AK%R21*W1EY2!@`<`0``'`$```(`
-M``!%``$84)8``$`1``#`J`$!P*@!`@'T`?0!!`?I$'CI=3D<8>^AP;[ZQ/S2CA
-M+"X@)`@````%````_"$``."\%S<#9"C1 at CI[@"G=3D;VFCNH3:)BX%.D at 6HGAS
-M_\YF92^.&G8AP'K0/A;P,AF8CAU=3D7C5=3D&)A=3DPB5Z']!O7^)X5U,N"<G].UH$
-M4N838&*X#6N1D:S[\Y^]8B&L;%MA&9_1RP4\U[(G4Q%\0RNY.F[418!55AR2
-MN*\I&RH(Y[X3XT\][C]*UQBD^/C.%#:N7P;8`N5IS=3DJ8OD]O/JOC+YYMO<$5
-M9L7L'%T)Z`>'SK,7X2VTYX6D/8(GK%N^8,NT0B3R68QV`PV at 0,)NDC3T`#>3
-MXX;@LZ]M"$O;B7%"21*W1AYB!@#L````[`````(```!%``#H4)<``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y$'CI=3D<8>^AP;[ZQ/S2CA+"X@)"`````$````S"$`
-M`+#N!\M=3DH9A>SDU,A`23\I->YT?[L4@&)RW_?=3DK]_F8-/K(DH?&/)RPWA*'8
-M at E)/'W7N,+]QI,5?_/MA2\G]"1YPU!Q at 7B0YK)@<ZV30BJ\L^+DIE(=3DM:9*2
-M\RO%]]5OYYC"_6@"$X"SJ5\IY-FWZ34[)7(`OP`8]*HF(,F#(5Y;'/6[$4QK
-M%.^D+K6$CHTPIKCKZULTOEO\L=3DO_$$W$^J4"K<V/:<3/%N-?O3LP21*W1N&$
-M!@#L````[`````(```!%``#H4)@``$`1``#`J`$!P*@!`@'T`?0`U`:Y$'CI
-M=3D<8>^AP;[ZQ/S2CA+"X@)"`````%````S"$``+"G-A3FPF.&[@%"(7FEAD"K
-MYHQB</R'G7(=3DCDP/?WVT47#$4. at P7I]=3D%#Z;WU4Z-)FKYKXGH4A,:',/_K.@
-M/W^>&XF+I\7.=3D>D1*XPOC[MV%/`GP`(FNR%4^X0X)E,OZ81G%>4&[^MB+6MC
-MC'[<CSU+9BV8H-&B/C>O_4KKF*0:/C&(^/,_T._*YLM<NDTD,=3D^1N_7A*@R-
-MN'_/7A-"&'7P9JHWHEIFROYZ6V$:21*W1CZB!@`\`0``/`$```(```!%``$X
-M4)D``$`1``#`J`$!P*@!`@'T`?0!)`<)$'CI=3D<8>^AP;[ZQ/S2CA+"X@)`@`
-M```&```!'"$``0`0C[YQZ8`1A/D8)4^*+7"7\Y\4%@WZ;TV(NE8G8*"+,\)(
-M"N;CVLC;*P/,OCUP'PN0C@)+QI+\?`]6EO[<37>F'YS<HC`.I^_FEVNAMW$7
-M36+$6V=3D%M:ES\A&59D;]E*^HH[HC=3D0SS%?ST=3D-?>(><AAP\?H""%%Y]Q3;3-
-M[A"5YHP[R at QK!%!=3D6+&WRYFG:/'3@]?":Y99+VWG=3D.)UN+>7RG`^93THV061
-M?/\\R,\(#=3D[4'AB#P&OG1$GS914\!DOMX30'RV2D.]X3'GGW,_4/-8%57;V!
-M+T:BZ%@IVHM:[52$XAE74?LL at UX$TE"&UZ4MVD`'>(\20 at FX+`M)$K=3D&)ZX&
-M`!P!```<`0```@```$4``1A0F@``0!$``,"H`0'`J`$"`?0!]`$$!^D0>.EU
-MQA[Z'!OOK$_-*.$L+B`D"`````<```#\(0``X-]5AFJ3EMM.$)&@.;(P#0><
-MO6ADYQYH%20E1E:Y%Y0T>*^F$CN.4T,K'Z)H__6C2Y"?`P^%ATVFH at G(Y:C[
-MD(EC3$419'`L>)/7!5OO,U?BEY3M1#"+:2)7G!6J6,KN\3+K4&Q7QQ^_E;1:
-MQ at OBI?\XT<*53OJC,\!$<$K!2'.)501%\1_D9:9W)012`@,`8&U#O^W-$#5X
-M0[K-T]@P*J*5OA%Y=3D3K36-2,M*G#=3D9MFZM`,<A$_OMWL53_K at +UM&OU9^-:A
-M8G;%5=3DNJ2-N)#JZZQM at -NXW;ZMRV]UM)$K=3D&UKT&`.P```#L`````@```$4`
-M`.A0FP``0!$``,"H`0'`J`$"`?0!]`#4!KD0>.EUQA[Z'!OOK$_-*.$L+B`D
-M(`````8```#,(0``L/D0;Y"/$)ZCG5M[$AX2;>:SXDE>'<8ERNM/\RI*J/`$
-MX&^@%MV-B8Y#TE@`G4U7C*LVF+GV=3D^JE)7=3DR^!LYB_T<W=3D%AA,4>[.)V`YIJ
-ME[A&"`ZQ.YG(V"(J^C"^>@YR%9XTP5!)X6RBNW3!'D3YU*N$Q[QC@:O?M3-0
-M+X?M%]2<56Z,"B+;/K]L!!)\5(*A'S?C4Q[A"-=3D;4*TQ66>$)$3A5*1J^0&0
-M&7KLFH=3D)$K=3D&5>`&`.P```#L`````@```$4``.A0G```0!$``,"H`0'`J`$"
-M`?0!]`#4!KD0>.EUQA[Z'!OOK$_-*.$L+B`D(`````<```#,(0``L!;]F'HA
-MY$!4\UQL$8OGS572:.@&A=3DW,">]R$.Z?F_*'P at R@=3D/I*3?B;!T;^%21H'"*=3D
-M at Z9XA"HW:>HPE](RO.3^F9)ZMI*XQ\AGZ??`QG+):F9=3DSL(4*9XMNW&,MMN\
-M^C1)D?U).'C5`#3W](;/*J7Q/"&.P#EF6\.R*2B7AII8XFCYHINDYG43SNJ@
-M0<NLTM:$I5XK![!ZEVH<,^'Q]*01UV"/5_SE*5%&@09)$K=3D&4 at 8'`(P!``",
-M`0```@```$4``8A0G0``0!$``,"H`0'`J`$"`?0!]`%T!UD0>.EUQA[Z'!OO
-MK$_-*.$L+B`D"`````@```%L(0`!4$PMQ?CP432O7KC#*//$`V#/341BR1%>
-MVGMNC<2NS8_)Q;VUBM34?[(]?:&U."_;3BX(9R:/\5"66"KV>VUT:30:4$%/
-M%:CZU<(CGS'K:CQ-WEC.C++:$X&(#GVED)[U&A=3D8A7]#$*6T^F#M- at N];=3DLV
-MN_*1\+Y75\5_(H-6;@0S-G=3D$SR]LOSTD0_5;(0^\I^JM!E7S#C@]%LV&?ZS^
-MQR6`B!&2XM8HFR9#<2SVS)&S`O*&95N9O)MQFR&_*!"'8B>8(,RXVJPV>G%^
-M[:2TQ3W[FT#9Q4'7B;18).'JMI("5C;1[\3DD6YXC)#K`#)H'`37ATAP&QTZ
-MN^N7W/6.!/0G3&XD!U*;EER0H04KFCBTO)V:@;Q]GC?2SSSP1-!JV-RK`N0>
-M.`'!_/R>DZD(RPNQ*I"`\%:^+C9$H\F\T*)"P at A38T$[IFK4K5)>21*W1B,]
-M!P!<`0``7`$```(```!%``%84)X``$`1``#`J`$!P*@!`@'T`?0!1`<I$'CI
-M=3D<8>^AP;[ZQ/S2CA+"X@)"`````(```!/"$``2`/&OK?W&ZS47XD`AUDGCSQ
-MD["Y7KG<QEE(,+&J$$B03)%8'J-^XS8+V+[X3<MB?@G0XN0ZB8S%O!KM1;\%
-MV.$+]_S(-'JET:/S`GP$#-<S/'O6C#.]QSJ2+ at 0XJL54GYP?S9C>"+X4!$EM
-M?6$_V4;#[SY at HFWE@(OC_G7[/F#23K[?5RY(ZI<$VWJO144JF^5N9+L#.QHG
-MTEK]6!*DF^=3DMQ/ELVQ5\_1::RHF%^"=3D6.(0G6^$*UU75OS8%GL"9)KFD%C)K
-MK$7N#UL#D0&?^G%-!T7'2SM8,7')<)TT9**H64)J+ at LBOA@/7MQ$*J#7-*B!
-MB!"'"^*7L>,`,+_-B'7A)$IN,9"^M=3D"#<ZJ0Z1SDU1/-?3'\4]:E)T3F%TD2
-MMT:H8P<`?````'P````"````10``>%"?``!`$0``P*@!`<"H`0(!]`'T`&0&
-M29:?,6(K,#?5</Z8-!./<.,N("4(`````````%PJ``!`#ILH*$['LRITW^PO
-ME^Q15FJB?0..:V1\+Q!QX3R%A\7%`J+4VV_``^R%B&)K;RI0@/@`'G%)D0+I
-MJ<RF21*W1NAN!P!L````;`````(```!%``!H4*```$`1``#`J`$!P*@!`@'T
-M`?0`5`8YEI\Q8BLP-]5P_I at T$X]PXRX@)2``````````3````#"VDZM?Z;C9
-M'`=3DCFV%QW8+80`0@^3=3D;(Y/.XSV_Y4D=3D%,Y at +>F-O$-#AM!E=3D$D2MT99?@<`
-M;````&P````"````10``:%"A``!`$0``P*@!`<"H`0(!]`'T`%0&.9:?,6(K
-M,#?5</Z8-!./<.,N("4(`````0```$PJ```P4:`3J-"+J^"'?SEXG-7$%Z,"
-M,M at MIY729#9E?I?-B%M at 3*1#]0$095"T1?E)$K=3D&C(L'`&P```!L`````@``
-M`$4``&A0H@``0!$``,"H`0'`J`$"`?0!]`!4!CF6GS%B*S`WU7#^F#03CW#C
-M+B`E(`````$```!,````,/X$C&CQ0(W8OE<96QW'\Q&FT7`(=3D.!WY+PEYH!'
-MO$$^`)'U["BV:'QQC:Q921*W1O&&"`"8`0``F`$```(```!%``&44*,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE8L<&4:O2--0``````````"$@(@@````````!
-M>"(!`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``XJ(K$XS9
-M4S!'T?8[A\FP'0JAT^7^YJT(PTLHO[%##C`(4,3&)^$X+%-=3D>CJ\%<0#H?>+
-MU+$O at C.G1AK(-[UMUY/OHOH7WY-Q[NK/*PK@%$3-Z!>J_/]0%"D;6Y4=3D`JV4
-MR6L.7)P<"WHR,90/'P\L<I^SF]<DMR?H=3D*."`Z=3DKY?HI```D\=3D!X at 4&!T)1L
-M-X\?'Z^S-.&E"H+2L=3DS;S"]-TSV>%84I```<``!`!*-(6IE&@S:5X.\GZZN8
-M%]1-I8^\````'```0`4GLJK.W*C]W(BSM]I58Q'-X2M]+DD2MT:0E0@`7```
-M`%P````"````10``6%"D``!`$0``P*@!`<"H`0(!]`'T`$0&*6+'!E&KTC34
-M```````````I("(@`````````#P````@``!`!@````&GK6T+J"V;H::589Z`
-M+>3Q`TE/UDD2MT9WI0@`N`$``+@!```"````10`!M%"E``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A6+'!E&KTC34```````````I("((`````````9 at A```@``!`
-M!@````&GK6T+J"V;H::589Z`+>3Q`TE/UB(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``XJ(K$XS94S!'T?8[A\FP'0JAT^7^YJT(PTLH
-MO[%##C`(4,3&)^$X+%-=3D>CJ\%<0#H?>+U+$O at C.G1AK(-[UMUY/OHOH7WY-Q
-M[NK/*PK@%$3-Z!>J_/]0%"D;6Y4=3D`JV4R6L.7)P<"WHR,90/'P\L<I^SF]<D
-MMR?H=3D*."`Z=3DKY?HI```D\=3D!X at 4&!T)1L-X\?'Z^S-.&E"H+2L=3DS;S"]-TSV>
-M%84I```<``!`!*-(6IE&@S:5X.\GZZN8%]1-I8^\````'```0`4GLJK.W*C]
-MW(BSM]I58Q'-X2M]+DD2MT9BR@@`4`$``%`!```"````10`!3%"F``!`$0``
-MP*@!`<"H`0(!]`'T`3@''6+'!E&KTC346XPK<5>P.K\A("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``-3+PL=3D[KL&.,7*BF4.,F<T/^8ON=3DH%8I at M3!9D)@4?MZJ'O
-M,($R0X<-=3D%""2Q'9Q.%:8JG%^:5O=3DZCZ-#?5J>YKH!\VCQ'C+!_!8>W,5.AQ
-MU*F\`@@&GS7YDQ>_1A6XK=3D^_0Z&WQ%H&71MA\MA*%IC$E_S`P(R7$0&3/1IA
-M\Y-2*0``)#V-I6U"OL-,"+L`K8O6M6I6R)A%PD558"]H2\UP!;`^*0``'```
-M0`0S%MK0TYI5K%>90$3<8U\8J8]M#0```!P``$`%G_\2U<AN"&1ZA]'CFE:Y
-M#'0KW/M)$K=3D&/O<(``P!```,`0```@```$4``0A0IP``0!$``,"H`0'`J`$"
-M`?0!]`#T!]EBQP91J](TU%N,*W%7L#J_+B`C"`````$```#L(P``T`^@2VX(
-MAPG*J\>9$^I^2Y>,.DLGMT-:S8:0D1H?TTN/%82O at I?(3F?B._<P(_M^P!.L
-M"JR=3D4'-3#'DN/YB@)>Z_2A=3D^8 at 3H:P9.=3D?Q9E.^//I6#ALG'G&HOAZC4?XLT
-MX&\=3D?>9B\.B/<VO$(;Q]OZ`I#HE]9]]0Q8KL;38]O%F:/NQ"EL!JF0AA19=3DQ
-MVWL,8Z!GH99UY3=3DM$2]*428[RZ`#%<3.(3'!^?&82T_K]=3DI1E/25.&R\$WFO
-M!+PC`WQZNP%L!'0]2D4&SV3F/DD2MT;O#PD`O````+P````"````10``N%"H
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B6+'!E&KTC346XPK<5>P.K\N(",@````
-M`0```)PD``"`KO,7C>Q-V*9#9 at QC%C^@7H:\GD)+T9$>Z>HVG>@>BAA8,FAI
-MRQZ<)^/$1[LYO1D`3J(SP'B]*NI at KHJ&:W=3DE]7X*@F)*>`#$.P,-0.,*]NU`
-MTE*;M38DA*;"WO`L9F,PL*R&;$OM^RU at BP)LQD-4<P6M/4**04$P%<80JDD2
-MMT9Q+PD`'`$``!P!```"````10`!&%"I``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ6+'!E&KTC346XPK<5>P.K\N("0(`````@```/PA``#@X0VBQ#$SO9_E`B7Y
-MQX%ZBZ&,7S&@`XB#,[Y%!-=3D-#=3D[+&[E*'2"9?N16+&+)GLR\7VO.B7O=3D;AE!
-MP]9F=3D-U$>:TJ=3D#6DB'LQ'-B>)=3DA*W=3D[RJTJ)#U=3DD]#.8D#=3DZ1"W+>M->81*U
-M;Q\,5EY6'URM")E>[<3?4<J`Y#^I9F\G2<4("J`M*"_=3DX`MDI=3DK_PGEG+\/K
-M+?>`2__*RYJFB#DU>-U;A7WV=3D%>G5S(^I6/GMV0%0MH"EU_(^FJ6I$QLWJK3
-M.6*J$F$K+XB\^9U(L6D6 at OJ;[C97)SG_QB3BDDD2MT:H. at D`_````/P````"
-M````10``^%"J``!`$0``P*@!`<"H`0(!]`'T`.0&R6+'!E&KTC346XPK<5>P
-M.K\N("0(`````P```-PA``#`8)(/C%62-`2)P4G,//]6HX[Z_;),\)O+G(MB
-MPQ>#V=3D;F'\^S]HK\)2EJBZ(!V=3DE9B(]Z?"JK7P21(NIU9D<ABYXP]RFO38(N
-MD=3D$]!_WOT[#>+/3X`HAO6>U+V9T8\=3DS\4P&L4UY37?T&:2>B'JT at 3H=3D+_]9:
-MV\ESP9@!S\EN?U(@Y25U>+YA7\XU at LD;J+Q*5B"QP/9\IK>S(+H at ZNH%A*L'
-M]%%YHCEYBB1CO'F$F^#3Z`7#.`088XOV3AA)$K=3D&M$4)`&P```!L`````@``
-M`$4``&A0JP``0!$``,"H`0'`J`$"`?0!]`!4!CEBQP91J](TU%N,*W%7L#J_
-M+B`D(`````(```!,*0``,$)6@&<4U/JPSZOR*+S3E>&*U5J/[email protected]_4WA\6.,
-MQD,\]M;S]GHPJ,'@;(-K21*W1I1A"0!L````;`````(```!%``!H4*P``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y8L<&4:O2--1;C"MQ5[`ZORX@)"`````#````
-M3"D``#!@:M^3%@\(2Y&CP:;LE1W1$C!/(;89\1+ at I0((NW'1>;1-<0",N!@*
-M,18LE$D2MT98?`D`/`$``#P!```"````10`!.%"M``!`$0``P*@!`<"H`0(!
-M]`'T`20'"6+'!E&KTC346XPK<5>P.K\N("0(````!````1PA``$`Z;Q*RE&I
-M)9!]:R")Z/"3V5%<*.HMJ(,9924<U-T(YE4J+Y_P!<C28PWN75#?Q)ZRVJ9/
-MMH>_XV-:4Y08,B at G,^S?88_=3D7DPN/?0JZR7^.6A/T5M*,N0AA/ZL9:?P82 at 7
-M9?[F:OCKC5?SBV;5SZX<Z98!*;%1D9<!V(+U^YSRIWJLC6N74%(VB0/*Y>L6
-M?<6Z%VKP\N.M]).:<K%:TW,6H>RG(>B^D(-%C#_602GK0;`V*/&09_UY_+.K
-M+<SARWH9\$Y?5+X'6RY"&78-_J^(4$EH-W4Y:0 at S$5F=3D+NY">;Y1<(!79;';
-MG+K-D+`T?A at 0PEA"@8A@"5O?WX6821*W1K^("0`<`0``'`$```(```!%``$8
-M4*X``$`1``#`J`$!P*@!`@'T`?0!!`?I8L<&4:O2--1;C"MQ5[`ZORX@)`@`
-M```%````_"$``."O=3D%$RJ!V4?\($W/*8WW,,6BA)Q,9]Q9Q.2NY4Q`<%M'P^
-MJGVA\LLUPM%^[?KMD7S,U,9*DY4,#BIVA570^;SAO80Y5:]3K:R^/ZM.MD(;
-MSIR2XLGX11G@%B/**6$H_"2[M7OE^%?IJR<'0KO26L&;LJD\BNGG.J#J0V6S
-M`U"*@]BQ0F9D*PK-;WM^$OU6J*0?,6N`$.8!/%!S=3DS(MYSQ7#Z_;8 at +FW>=3D=3D
-M\Z4^<[@<F=3D?\[UJ8[(;A`=3D)X=3DB:O-E;1R!Z0V.J-3W'R6V*1E;'C,..7W;):
-M*Q[MM2VR21*W1G"9"0#L````[`````(```!%``#H4*\``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y8L<&4:O2--1;C"MQ5[`ZORX@)"`````$````S"$``+`+P$?^
-MSIG@"QAJA"BH@=3D<&Y!.H(HA9L<?<XLB/[+RFVV/7-/SKO0AJ%$"I$W__SN^/
-M at V?]:E>,Q23G\6^IR,MYTKR#A7/OM(&GA>W"WAB\-=3D-C18E>3?\Z#@U>CA2.
-M\N-H[`VFJFU[K/42TM*//,1$OA\:LW?(E)Y-_41A>[9]*)0V>!^UE:IT'DJA
-M4Q78(FFONVGR_:M+'%C$-J)*N6<SL`Z=3DQ8.S]:S#23O,21*W1DF["0#L````
-M[`````(```!%``#H4+```$`1``#`J`$!P*@!`@'T`?0`U`:Y8L<&4:O2--1;
-MC"MQ5[`ZORX@)"`````%````S"$``+#E3^9\6TA=3D"4G)-G[Q=3D1&BNCDS(85C
-MR"M4>LQ=3D@*`NH55C^?X8)`CPF&`:)8=3DIQ'M9K#B09"2NT%TZOX$O[<CO3!!5
-M%GB<T_+@"?T24I`IRR*;>T!PK#40N?U++=3D]9385A7WZ#]5=3DJ'>'/`26$^$5K
-M?X`(XC.N0J"(SNE=3DY%QKPKSD44Y16ZG(O9)(IHU:6?C=3DZS-6S!Y372ON);Y-
-MU!ZGSITW-'[RP\@,D$K`21*W1CC8"0`\`0``/`$```(```!%``$X4+$``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)8L<&4:O2--1;C"MQ5[`ZORX@)`@````&```!
-M'"$``0`2V8W;A4["Q%\HGH=3DL?-NF)+TOL5;*MI!H/GDY(K/T\5>1U>0^GEL-
-M#PL+IMW;T::V`?#6LXFQXGJN'I0/^OV#/15[K\0X9N0A?73,F7+2W4&YECI9
-M!W"*O+L(_WA][0ZL(3PV1"-A7VGE*1#JL.`D]4K9',^%7#;3=3D44_%E&PYVV(
-M=3DG>^3Z'@DU.75]01GDCCNB>H>!?+=3DACPP_<^V_T6*^4IU<4]KN&$G72$=3D]-O
-M)N.T`MA=3D`?-%;TP;ZAY]\4)>IK-[SC`!V2$&\!,>\&\9VQ[6+9=3DNX8('6_=3DZ
-M"7I0`I34YA7FJ0+)OQVY\,JJO*;S?UL.]TA/*-SH54Y)$K=3D&U.,)`!P!```<
-M`0```@```$4``1A0L@``0!$``,"H`0'`J`$"`?0!]`$$!^EBQP91J](TU%N,
-M*W%7L#J_+B`D"`````<```#\(0``X.A+#-21(8T_,R)8!_6UKNDE=3D$!G-WBM
-M)^UWB_SF_!"<%MU._'_W)3QT!%'(^;`U?L at ER#YC&B<_4,W6;*(E'W[T_:#G
-M$Q(&%>VV4$J&E/)"F-A&!@A,A26Q\.DU.3#VH9F&@KDYI_4529$&4G7L7?2W
-MXVD+T%@D;2W:<BID`TT+EV-]9X$)XJX^+QM];3\6IGNX0$I0,U3[_7A4:-O3
-MXS:\_0P>#>%-Z,89Z.3Q:>E'VR.C!7@^,>0:B@`))7FG02!GX5[YXD!P56?X
-M?_A3,_?>EG/+,<Q+:W.VJSY)$K=3D&4/,)`.P```#L`````@```$4``.A0LP``
-M0!$``,"H`0'`J`$"`?0!]`#4!KEBQP91J](TU%N,*W%7L#J_+B`D(`````8`
-M``#,(0``L%*/G=3DSR"^;49JI2E+ZQ#L\P[Y[[KW>M6T9Z.R.XXSS^^A+!@\O%
-M2UD0)GV!&I1$90R`$Y(F-"=3D&6.0I3ERKDD3A[OV:"<SE[K@:+V;DPMS5M[8B
-M#6%QJ6ZXM9X_:T?C^;6OFF.,"O;UMP&6;:99IXU6DYH'5]B=3DGURH1W"KQF^9
-M[91(L<MQF`\6$>`2>U-F]8(WONF;/*^#R@?L<00;)"RD=3DZ"^MW+5DCY(&C9)
-M$K=3D&#14*`.P```#L`````@```$4``.A0M```0!$``,"H`0'`J`$"`?0!]`#4
-M!KEBQP91J](TU%N,*W%7L#J_+B`D(`````<```#,(0``L`Y92SJRPJ`X8:<B
-MS.3M'-U3<2!0(<$D*UI4Q4/@@47*1?$;3S.FDH(#QCSJL)U"YB$,(..4XG4(
-M";MS"G$(;-F)9[TQ%"NP0:$99R%%^-.$NX2L<=3D"0"FXN551W>R7 at 20AJQ6@@
-MTAT7N:$33[!N6WL.I%'Y7IF_8IUFLPU9LD3Z'L"^CO,W<)S:[\3":P=3D1'<0"
-MS7>?T?G`DN'HJO+U1H>Y90 at .YW3T#(#;!Z9)$K=3D&##P*`(P!``",`0```@``
-M`$4``8A0M0``0!$``,"H`0'`J`$"`?0!]`%T!UEBQP91J](TU%N,*W%7L#J_
-M+B`D"`````@```%L(0`!4`G20 at T9&A+[6U4[ZD9/=3DB'@8,H1LYH(G2U$YME_
-M)1;8JYE at .?.A=3D%6H%LEK6763,L*Y,6&`'DT at V(KB`O=3D^$@7_2U,2C&L%&SH8
-M*TNKP3U_%E1B(5B=3DR&7+=3DP=3DJ>#^(X'%8D.0#A"#KB1ZQ<=3D*]F9_$COXR=3D3,N
-MR.&JJKT3 at 5#CU:)Z6_]`)/;[P1_B]Z-1"WC$T"#J,MI*L?WK/AIZ5_%[CV6B
-MMV3V#FO!8LMHZ*4KJ"?&X3P1E;;$$$KM<1G$O.P8*'('D&M%3AA8(2;JYJLP
-M?&;=3DS!UNM#"#"OG^2<[5ATO0U2M)6+@!./[YXZQ^U9W6AV!`CC1N+S0WO!V:
-M5SMI)\JS,+>P+=3D3>IT\PQ]8LE\4.!!-0&`@!*8052M/,O$]P83L3]\G$^T-5
-M7?W")?L(][L-EI)A[.>[\'?X/(;;65^!_!_L=3D>C<Z4HD21*W1J]Q"@!<`0``
-M7`$```(```!%``%84+8``$`1``#`J`$!P*@!`@'T`?0!1`<I8L<&4:O2--1;
-MC"MQ5[`ZORX@)"`````(```!/"$``2`R!QYB6+T at W1%YH+"K^R;5D8:FS_YN
-MI%?Q+TG>)A&QM*Q]<0RN%MI[4.Z, at 7?QAO(M!2TQL\I.725"6/739^6F#")=3D
-M`OYJ\?PVY>3<`W^Z-I":A$J+5H=3DMV<AXS9K2%GY,NI_:>V['#[@PT+3(\D!"
-M/!'FNA#&O&<*C#^5BEJ:6W]$V61Q=3DI(7!C_FO&ET]#S$M>U=3D;D!L_E9G!N(#
-MOP"FZP#-D0W'&.1]*&QG^;UW;"H2-&Y`LXT,$.)::W;IDG-'ONF&0G/^`3-2
-ML,#/MGVXUC/:`9)O2-W,$H<9]-S89XN_W5E5CN<M^+`!O3:I3<88-N at YT;I7
-MGI%H!43 at A`+FC&JCY)U"1D9,D_*"L*NXP';<"UTX3!FS#A7V+DD2MT8LF0H`
-M?````'P````"````10``>%"W``!`$0``P*@!`<"H`0(!]`'T`&0&2=3DW"7R/I
-M'7BN):.5JF63PK`N("4(`````````%PJ``!`L^-SH?[1A!<CBN9]_&=3D()@I1
-M+S,&IT_7VM+N)A^.E)N_LS%(B81K$I'%X*<69G`Z$"R,^P'0-2+ at PR*E21*W
-M1FVD"@!L````;`````(```!%``!H4+@``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MW<)?(^D=3D>*XEHY6J99/"L"X@)2``````````3````#"VXB!/#8!REPKPX'_,
-M\%;)_0-N-1$:%?1&]#4F7OT2HHU()#"[<=3D=3D;C/`[\DD2MT8LLPH`;````&P`
-M```"````10``:%"Y``!`$0``P*@!`<"H`0(!]`'T`%0&.=3DW"7R/I'7BN):.5
-MJF63PK`N("4(`````0```$PJ```PQ_J0_(@_\LM6K4G706DA7JDA)M&%?G.M
-M!R"=3DS_7U[[,X9WZ,14Y at 0Q6N]*-)$K=3D&9<`*`&P```!L`````@```$4``&A0
-MN@``0!$``,"H`0'`J`$"`?0!]`!4!CG=3DPE\CZ1UXKB6CE:IED\*P+B`E(```
-M``$```!,````,,M]-S]_5?4\PVJPC=3DO[YQ+T)ZD\-9G!9>*K^1W'Z<AQE:V1
-MGS?$F7?:6,BM21*W1I.["P"8`0``F`$```(```!%``&44+L``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE,WV_VL at 6/@<``````````"$@(@@````````!>"(!`'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``4#WVR:!^`;1.)%:4
-MF=3D`O.LA>5AIJ'L)678D.]S<@Z.-]<@KA7?%$RS7I2]&+C3O",$C735LM>\`E
-M]AN%AQ]JV at A2TT0+3\#O\2M at 920;338+9]@I?V:H(,$.*-R1W_A/U8->L9\Z
-MV'$1?ZG]90>R^_P>%>P!%;Z&#&?;,._,.28I```DHEI,`'7%MNTU>J_,V9`W
-MW^/P;$.=3D,P-^"A\@M^BS*-PI```<``!`!-YOVH.?CMB>-V;/`L+E3;Z#,Y#2
-M````'```0`5))Y;[+K)<JH=3DX'CZ%P!\1%C@=3DTDD2MT9+R at L`7````%P````"
-M````10``6%"\``!`$0``P*@!`<"H`0(!]`'T`$0&*3-]O]K(%CX'````````
-M```I("(@`````````#P````@``!`!@````'+HU@!WK6U_:)F<QQ+6TZ&6SY2
-M;DD2MT;DV0L`N`$``+@!```"````10`!M%"]``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A3-]O]K(%CX'```````````I("((`````````9 at A```@``!`!@````'+
-MHU@!WK6U_:)F<QQ+6TZ&6SY2;B(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``4#WVR:!^`;1.)%:4F=3D`O.LA>5AIJ'L)678D.]S<@Z.-]
-M<@KA7?%$RS7I2]&+C3O",$C735LM>\`E]AN%AQ]JV at A2TT0+3\#O\2M at 920;
-M338+9]@I?V:H(,$.*-R1W_A/U8->L9\ZV'$1?ZG]90>R^_P>%>P!%;Z&#&?;
-M,._,.28I```DHEI,`'7%MNTU>J_,V9`WW^/P;$.=3D,P-^"A\@M^BS*-PI```<
-M``!`!-YOVH.?CMB>-V;/`L+E3;Z#,Y#2````'```0`5))Y;[+K)<JH=3DX'CZ%
-MP!\1%C@=3DTDD2MT8__ at L`4`$``%`!```"````10`!3%"^``!`$0``P*@!`<"H
-M`0(!]`'T`3@''3-]O]K(%CX'ERP:!>.LE"LA("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``'?#,,&806=3DXR]6,+;+I</>MH at T8@+M*G@"0,"P/J&=3D0'BFXSLU-1$I_
-MN&7%!]]O\*.3--[>;ZO,!U?"N<-LZ2`?[@N`WA;W-29`IQ\HGMMFDB4[2+;6
-MV.W^G0_N0`)M<8%H9`UTE/LT.M`$!=3DQ_BY>WF83O,J)\H:*9S3<\%5M]*0``
-M).L24Q17>9$#WZ,"`/4[+D6B&:VU#=3D"+;[?>1CM0C2[S*0``'```0`1A!`KU
-M;9"X1JXH1=3D<-]1-7QW\6S0```!P``$`%'W\X5T7JNJ,=3D;C\[R[#FNEM7CYU)
-M$K=3D&IRL,``P!```,`0```@```$4``0A0OP``0!$``,"H`0'`J`$"`?0!]`#T
-M!]DS?;_:R!8^!Y<L&@7CK)0K+B`C"`````$```#L(P``T&3\I7^?*!/O\*!:
-M*4#]:*16#2*Y65Y;PY8@(<C\K(*ZP\Y5`UW:-DG<G=3DM\IOU]2J\&>;/QQRD=3D
-M$PUGV4694_/Z[M/+[V$Y at M6&Z<M;WQ;NO=3D2YT)\1P3`2NI7RF/U?K:IH=3D5/D
-M:7^[+59'B#?C:!!A,D_E^\J:JBK6H@)!F\TL:J^(1I&81F!#L:3N4>9+AP\-
-M;B8M473N/6:%`*&I'Q68P_U-J*=3D$9_/ZD-7WW'W0T6?,ZRTJ&7&<VQ,PIU/,
-M'E^PXZ<ZIC3%^6:D[4D2MT8M10P`O````+P````"````10``N%#```!`$0``
-MP*@!`<"H`0(!]`'T`*0&B3-]O]K(%CX'ERP:!>.LE"LN(",@`````0```)PD
-M``"`DP4VC&;;WO;A5:RJ2LG]UM;,%SKA0+VL;RGRC.4&B/Q*:]4>'"_SO..C
-ME+O?RO+]0P?)1I1MWP(%_SZLV5N".W^E0'44/J&4(/1O3BX(#0<3GGRZD>D_
-M0#GV8,0.G:S/W<L*)0$$P2%':5SH/8 at EAI07OA7QYF:?03OH%TD2MT:/8PP`
-M'`$``!P!```"````10`!&%#!``!`$0``P*@!`<"H`0(!]`'T`00'Z3-]O]K(
-M%CX'ERP:!>.LE"LN("0(`````@```/PA``#@K%(M!K+4<$@,SM74CHG`LU`Z
-MS=3DL0F$7Z,X at +OWG]71A*V1^L.=3DT"=3DL]1D#-7E0?HA$%3D_J=3D5T($PR-35'9`
-M3<2WF<SJ^>(+/'?"?OI$^5*E?W`CY?;)WUC[/`!;[KAN(PF?C^,(?G>01*D?
-M+GT3I,!R&T=3D#PTI'!L4[IBG[!XTPK?G>#H\QG%9;4-CX7W0U\8G]%%W^/]'4
-M7]!O[Q\V9>;S2F5PN;Y1$Q)@)GS%V;/F$RV25G53B8W&"%?H-?];HLP<G'R-
-M<)9I+1#>D.LC>^-X18-SEDMK=3DD"YLTD2MT9L;PP`_````/P````"````10``
-M^%#"``!`$0``P*@!`<"H`0(!]`'T`.0&R3-]O]K(%CX'ERP:!>.LE"LN("0(
-M`````P```-PA``#`G>YD/3''&A/P)-7CTV>9*XJ"/,@?:+?AJ56MI-K`NCD_
-M4E^=3DTQJI$LL5WZ[9#:*-]'LN;:25308T'CCX4O^)`[C*ZIO4K6NY"LF(0O.[
-MC_6 at 8BX_^4ILBR%M%"TQU3JQ(V&T)D]$1(!=3DK4N-&J*#U?DT?:IPF5P:MLO*
-M/"KI!>A,1/XTH`!+<`&TJ';ZU6/IR_6^Z-OB#R0-^P21"8A&\&M)V6^53C`-
-MI7Y\,QBP[&ELA&[GA>"Q]R,;R<E)$K=3D&8GH,`&P```!L`````@```$4``&A0
-MPP``0!$``,"H`0'`J`$"`?0!]`!4!CDS?;_:R!8^!Y<L&@7CK)0K+B`D(```
-M``(```!,*0``,"7C-^T&]6SLM5T/QV';&!W=3DQ$\ZI$M=3DCVJ7_S;@,X^]BDSR
-MTZ(%%C=3D67_!#21*W1J>5#`!L````;`````(```!%``!H4,0``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y,WV_VL at 6/@>7+!H%XZR4*RX@)"`````#````3"D``#!T
-M)MX$O;"<@]LN(O79YA&\!*#^]WSEY_TGM/$#8I1.-W3SCK&`ZBU[_"=3DK9DD2
-MMT9BL`P`/`$``#P!```"````10`!.%#%``!`$0``P*@!`<"H`0(!]`'T`20'
-M"3-]O]K(%CX'ERP:!>.LE"LN("0(````!````1PA``$`70H[,PR?$9QXL?<=3D
-MBG01\-?WXR0F%ZD;,8.&-'9`^07>)YWF1^&D;=3DPD;;;\7JT&F6R/M)0Y#"'W
-M#%JEIU0)SU?C5,,0?[%M^%R-P[UQXH3MNWP[LIA`-7&2>&E?TBU@*/??;QXB
-MEK+B3GY at ZX'34M(H!AYHVZE)[`$934>=3D>$Q71'DJT\/@32)S$Y$7-&357*5V
-MK=3DF?TAZU^,8@;'U.GBR/T%ZNP[]D0[/:.[_P.22RN'''S0!MZ<.6C;0=3DGTZL
-M>H>?5NUAW;6:Q?F';/Y:S)::A?F/$9PKGAQ!=3DYMG>[[Z\;$T&GNZ9)L+#A at C
-MSF!T4!E&27`GHI"%U"YX21*W1M:[#``<`0``'`$```(```!%``$84,8``$`1
-M``#`J`$!P*@!`@'T`?0!!`?I,WV_VL at 6/@>7+!H%XZR4*RX@)`@````%````
-M_"$``.#2BE"A"Z:,N?.W8K!6,\6-:+4GE(ZFBNY9'+^L#AH=3DJPS`$_C`_E`]
-M[W&%\4\)Z!8Q6^J"VU7M'R[;X62.X@>:@EU.:*%R>=3D4$ZB4!'!RQANA"LJ?0
-M_%B7SFI7KCU)KA4>IS'*6\D05Q[@9F)G[=3D<1G#QQ.+5!;&].WF;=3D8$".%<P4
-M+N(#5\6S0SXDZ*)MCOOH'>(1`"W#`+N%N;L7?OO96'?(F*&NC_W"Q.'H^=3DNP
-M(1/7CB#![R3Y(QR7N+DL:WQ2ZSIGLXD7$FA,1KM6"3)N`FUYH-K,1+7%0O]8
-M21*W1A/+#`#L````[`````(```!%``#H4,<``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y,WV_VL at 6/@>7+!H%XZR4*RX@)"`````$````S"$``+!`7%IFO3`SFB22
-M\("`/=3DIE-R^_T0*I?:KK@"!ORXPP at 19EWC=3D at 7Q`S#8ABM0JH$N&=3D+DT_JM/L
-M`H"NEU1M5-OYO,+'XPP5)I``6ZV"433&`V?\;$N5L2\@T]*Q*7YD70K2+&^L
-MO+H0=3D4.9.<Y1OV2S`4`.GSOK^!^YV#6&ZN1S(^8KO"Y9J!Y[`\V5ZN-3"EH&
-M!C0Y[:>V>F&<R;42$[/;,#`Q:CXR?1!3P('U21*W1BON#`#L````[`````(`
-M``!%``#H4,@``$`1``#`J`$!P*@!`@'T`?0`U`:Y,WV_VL at 6/@>7+!H%XZR4
-M*RX@)"`````%````S"$``+#'T-T\JN%)5(&]OPDO4)Y>1=3D!X'/:L!5_H<$M\
-M]!U9BTT*<$V&\XQ0P7Q(YB\?OTW.6GRO2$[B94MM[?J4:\RC&1<`EW;&Y85S
-M2G&J8Z#.KF\SUUZ:E at V!MOBHXN7AL]1DQM"\W6<')SNB'D./0A[@!C.WLBV$
-MXM<SZ9D2]"LLNGH%;8U97WY1,2"NOQT.WCM?G4\CA]7\A7*7YF5R+946/0$6
-MH[CA3#;M^J2K21*W1ND+#0`\`0``/`$```(```!%``$X4,D``$`1``#`J`$!
-MP*@!`@'T`?0!)`<),WV_VL at 6/@>7+!H%XZR4*RX@)`@````&```!'"$``0#P
-MM<+*\C at TW[%81[F`BYEK$P%X6RX6G;_>81R1?TK1J@:!")KJ at 8(,/AGS6EZZ
-MF4Z,2W]Z-/&=3D\\%#_')I"8?_+;]I8VR[,DX`EK7"?_ET$'ZFN:C[J1L!U'R6
-M>PBOY<7=3D"`B!G;4H at QW4'O^$?[&\H'.RWZ1/BNF`44R0\L(T_'\H&52.9EVE
-M(NF.RQ'H\VG/NWDT+H1FQM at 51KQL(`VY5QCLY'[N$<4M1U$"PW\"U?<WX6]Y
-M0B8SR$!(E.#CP"J>QI6HF_9$ZQW:.A$",#>]^A,LLP#K*U\<%6V^A,CM`T&&
-ME_RF2I*<DA)T0-J1=3D=3D4IV^>G3*C46D^4XQ!)$K=3D&RA<-`!P!```<`0```@``
-M`$4``1A0R@``0!$``,"H`0'`J`$"`?0!]`$$!^DS?;_:R!8^!Y<L&@7CK)0K
-M+B`D"`````<```#\(0``X!MN:-P>H'NV1SY33[#G9YV[3,QO+&'&GJH*XS;6
-MUO"<]`:/[9TH52D/DRN+6V-SZ`2R[OJ+S#!HU6R7HFHWYU69$:Z9=3DGX6;1[[
-M,YE+ZB[EGSQU;75QT3G*G,\E"JSZ[*,'WCPP:'#"(EZNTF+%R*GH!.:UOS-=3D
-M*G at R=3D at 3$GK$J;M8NM'D,^ZE5Z=3D"F(IY?UKP1D40>8;Q7ZH*]XT34L]%-_VST
-MTFK4!BK?*K)?8+8!3$I%]J_6IWJT+PIL':<)D8.<ALK+Y!&"13ACWJ,'N5_"
-M9X$(;C*<NXW??1])$K=3D&4"<-`.P```#L`````@```$4``.A0RP``0!$``,"H
-M`0'`J`$"`?0!]`#4!KDS?;_:R!8^!Y<L&@7CK)0K+B`D(`````8```#,(0``
-ML'N'`.;M\D\]O<O9YBM=3DU[$W at 0&O^KUS\U4N=3D5$PA"YJS)X%V':UJ4C/",AX
-MH'S6&F10QL'&9$SKU$MHP].[%SJX<4PM*SHI"HK&6-[<B at 9Y)>3,'0>:8M=3DA
-ME/B6T'#&8O$*,NTYC[9B]:ZK+0&<Z;MVIH at S$F'4^S!(>Z:4G%,7-?C#K/!<
-MWNUG#\/6Z$;CZ+6(U!/82PN2.;K!U]N;-@""O7ANDO6+YO/RVS])$K=3D&G$D-
-M`.P```#L`````@```$4``.A0S```0!$``,"H`0'`J`$"`?0!]`#4!KDS?;_:
-MR!8^!Y<L&@7CK)0K+B`D(`````<```#,(0``L-6*=3DDAN#0GDQ5M`^`K,>4JE
-MYNW/;=3D1E+W'$W:*5WY<L*VCQ=3DELIP-ZQ'%M<K2N;J?V7_JY6XD.BZ?,`NX`;
-M<V08;ME.GCQ"ZQN4^6Q*SBRA/9TV>3)4#$)XO$W9>@0"1<3G3K0:?YMCHH!/
-M%N#6UKF8`HKL?PDXHN^SX0ER]NUOO^Q<Q`0CK)<&^,D*[L*;"Q5R6;PB%^%+
-M#;BW:M4]/CKQJ<DB/W2+, at 0F<L!)$K=3D&>F\-`(P!``",`0```@```$4``8A0
-MS0``0!$``,"H`0'`J`$"`?0!]`%T!UDS?;_:R!8^!Y<L&@7CK)0K+B`D"```
-M``@```%L(0`!4!]0;9T.OBLG&+X*1(WW999;\K,32;:YJY]*<:@+ at +K;81#&
-M[[<<FQ(<J'8:>RA<R+$MT8.?+:5G0 at 6Y.2.?9)Z29C"V`F`YD.'4<[_)VUVP
-MXQP(!OG)'MY,4 at C#4GA8@*M@>(,.WS.Q#O83+$Y,HN7B<&I/JA9>TS%]>62W
-M$;6HH#Q$1@<EGH@$TXBD"X"3PU<%#XZF at 7R#K8AH2DJS3V7?N;)%?Q'HH*[C
-M03#"$G%#<B/H\'H\=3D0A"W2$'%#Z;Z'0:`"B=3DPC;K;GVPWBOV.T7:5.$#+N:<
-MAZMWL^&7&[B\2N&DMDIB4F2A&S:"L'+[:=3D-J?_\;4)6L?K8G6Q%\J7C^V];V
-MZO8#$`.T(2$@'$>JR0>=3D/5CKQ$5*^S*CHW'-%G*VW%_]M3"[;B*YC.KOTZ9(
-M:YX/+_N3+LLW9^#7:9%H7G$K>0?Y<U,Y?]FJ21*W1F&C#0!<`0``7`$```(`
-M``!%``%84,X``$`1``#`J`$!P*@!`@'T`?0!1`<I,WV_VL at 6/@>7+!H%XZR4
-M*RX@)"`````(```!/"$``2#]#RAR[V8&R($>5(XK$7,@:@Y.Z`S"^%@DQ at T*
-M-YEEO/9OW*=3DL:8V-,`],A9>F&#\YO)<?VLVJ<9.4]T<WV,N>%+%O/%+*:?9>
-MZT<>3R5>57MN*^Z4CL9^49E2E=3D[#\X>OG at +0>;=3DQW:X;D;N!B,J?UD&G1^=3DN
-M4T/B+-HMH.T[GG6+.;D:+&.^%SKD/HX_J>1=3DM\TK3%)N)Q1'^J/IT;\$;BR*
-M/9D$JOIRK;31DT1II8Y#P_)?'>7%^ID'G3P]1T_F<:)AM=3DA6>ZD'>6D0)H6<
-M<(_JI>@J+E"AM3U:X2*)B^//>GSS'FO8TK?&7L_ZF-._)PJ!+U[6/\1D(L at -
-M9P-N*_+7>']MX2R]GB)L1]9&-YHTL_P)Q;4'Y]G%.DD2MT8?R at T`?````'P`
-M```"````10``>%#/``!`$0``P*@!`<"H`0(!]`'T`&0&2<@29T@>AC)_(13-
-M;6?1U98N("4(`````````%PJ``!`(%0EH>:'!-VO`>MC]9433A$>"K#B/;E(
-M1H>T!=3DO%R3GT3G@/BBYX7$:6.ML9OW-JV?'N)./.3#$F/,P<21*W1L/6#0!L
-M````;`````(```!%``!H4-```$`1``#`J`$!P*@!`@'T`?0`5`8YR!)G2!Z&
-M,G\A%,UM9]'5EBX@)2``````````3````#"<9698K#W!FF[$(_U_&)P2G]5@
-M8*)43A%/I%+:(1W<F=3D>VX\0BIG`]*L1=3D^TD2MT9[Y at T`;````&P````"````
-M10``:%#1``!`$0``P*@!`<"H`0(!]`'T`%0&.<@29T@>AC)_(13-;6?1U98N
-M("4(`````0```$PJ```P,(C6=3DRX6/T9!-I:VG71NF&#@VB<G0,2@(8*3OE*K
-M-*=3D"]'.A(%K,T70;LY])$K=3D&P?,-`&P```!L`````@```$4``&A0T@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CG($F=3D('H8R?R$4S6UGT=3D66+B`E(`````$```!,
-M````,%'MBJ\JB+YP2#DD1GG?BMC3:%+?MAQ24YH#U!8Y]S at 15V?N+/N(L2ZU
-MUC3!21*W1EKN#@"8`0``F`$```(```!%``&44-,``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DEFBH6E/<M&5```````````"$@(@@````````!>"("`'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``AONM?&\&1"`OI+Z:-!>54VL"
-M/:/8K13\YJ^;!W=3D_AXZ87Z31<A+D67?*'MXCH@'"#X@!-6Y'G,K)A0U-'MON
-M90UQ))0-I>[`[GK$PO("2N__0CTV-BR>HC6C7$?]@SNQ0LB.B*5?ET%H`H)Y
-MF`RO/X=3DV_Y3SWQ4:O"+"_[$.Y>4I```D#3]XAOAZ6LA&A at 98OH>)/J)RF2B4
-M4=3DM<-FR"`'ZS%N8I```<``!`!!H+AQ#3F>_#A]8U.N=3D7L1ZJ['2V````'```
-M0`49 at G\&C>YHV6`T/5UFH=3DE(>03A]4D2MT9L_0X`7````%P````"````10``
-M6%#4``!`$0``P*@!`<"H`0(!]`'T`$0&*9HJ%I3W+1E0```````````I("(@
-M`````````#P````@``!`!@````$E^RJ!Y7\\WU8K1%;6Q'WRPO\[K$D2MT8/
-M#0\`N`$``+@!```"````10`!M%#5``!`$0``P*@!`<"H`0(!]`'T`:`'A9HJ
-M%I3W+1E0```````````I("((`````````9 at A```@``!`!@````$E^RJ!Y7\\
-MWU8K1%;6Q'WRPO\[K"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``AONM?&\&1"`OI+Z:-!>54VL"/:/8K13\YJ^;!W=3D_AXZ87Z31<A+D
-M67?*'MXCH@'"#X@!-6Y'G,K)A0U-'MON90UQ))0-I>[`[GK$PO("2N__0CTV
-M-BR>HC6C7$?]@SNQ0LB.B*5?ET%H`H)YF`RO/X=3DV_Y3SWQ4:O"+"_[$.Y>4I
-M```D#3]XAOAZ6LA&A at 98OH>)/J)RF2B44=3DM<-FR"`'ZS%N8I```<``!`!!H+
-MAQ#3F>_#A]8U.N=3D7L1ZJ['2V````'```0`49 at G\&C>YHV6`T/5UFH=3DE(>03A
-M]4D2MT:&,0\`4`$``%`!```"````10`!3%#6``!`$0``P*@!`<"H`0(!]`'T
-M`3@''9HJ%I3W+1E0+9^$52]QUWPA("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``&IE
-M9SJA1)P3\G_Z?>-]ZIGFQEV:LH47W9/T%P(826=3DQM1A3BK*^3G-IJ'&N=3D0UE
-MLLQ6]LH;U=3DKSA3:>N/EK>:H)#11M!#AN,Y:UJ#U_+59*91SIJ<C'F<G=3D;C!Q
-MRZHEA)X at -.09FG^V79F,4/PDH^O`$&]UH'=3D-85B[:/8\X_(E*0``)!GUHIZ&
-M*,Q>[`?V(3D#1;<B05MTJXDI>!3AL!2HDJB0*0``'```0`0PZ7?NVEB*V.?[
-M_5!(:LCV3.P6>0```!P``$`%^`(0=3DI'E3W@`*8=3DF)%K/KSG#>I]*$K=3D&_1T`
-M``P!```,`0```@```$4``0A0UP``0!$``,"H`0'`J`$"`?0!]`#T!]F:*A:4
-M]RT94"V?A%4O<=3D=3D\+B`C"`````$```#L(P``T*^<8?!]6'_X`YV>A.R_I-;9
-M%T`M`-."*AHNTIK*`]9(@ZT.,W9*]P[<QX0;;'Q`"Y(V]^.>JG34WN@'$)#7
-M`T5%Z&.&2CEF_@=3DMBH9TR`MC<XI*,!`JBBVIVUF\!Z*/3P;MS[S5L]\9\S3=3D
-MV7\:PHC&O5IN&UY4#LR/",^C@(=3DB2^FJ&M^43227QM2D,-*<U5_._0?^1J<2
-MIF'Z7<W""[UVS`?_T>2A@@=3D*1Z=3DZ*8Z"W8XMYOK-UU!14&V*+N$BMN=3D\;L5,
-M0J9&_/:"5DH2MT;6-P``O````+P````"````10``N%#8``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B9HJ%I3W+1E0+9^$52]QUWPN(",@`````0```)PD``"`$9VN
-MC'_-'DJ>YDW)ZN)^`_%N/`0L.$>&>YJ2!JWM51V7X)[TX+6`X%*U&C*!U#L0
-M(F/K,'^;`SM<X>O;A^EA3;^6K;X3SI,Z5Y;Q.5P$TV^K\S>>*5K1*$OIUH##
-MW;;O:<B8PNATSB/@8`L2^@?[,M;TE'+?7X69:\K4"DH2MT:Q5@``'`$``!P!
-M```"````10`!&%#9``!`$0``P*@!`<"H`0(!]`'T`00'Z9HJ%I3W+1E0+9^$
-M52]QUWPN("0(`````@```/PA``#@2/SNZ3>0'RQ%&703W?I(.US^DUX7>4]L
-M<2GE?/<(/=3DV<4 at MAF=3D5 at 9\0HC4(QERBK\9)34=3DG/;+5U!G\R/1_+\D&6>/LH
-M-P. at QK_3MW%*9#&%S2>%Q<7@\O#&4HR;TI/^,W"U`7'K.03L,Q2KBT%P\AF%
-M^=3D:C5`D(XT)_OV at G;-*.IVS:YKNN[C,A>3O%-%ZMG*@=3D]W+,GZ!LRP&7]*1,
-M#A&3!8G[L9[\&/9<[C>VLE/AVM_KK3A"85C4UJPZSL8$H14\Q2_(:C-MF'50
-M]UZ[]&>4_N4F&MIY_T,Z&4H2MT:T8@``_````/P````"````10``^%#:``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R9HJ%I3W+1E0+9^$52]QUWPN("0(`````P``
-M`-PA``#`:!)B=3D<JYP#WP2MT)YA?>-<Z+4NW[BN at UTE4XH*.8/5V2F]ZNZGX)
-M$:[_S+LU\'/@*O22 at Q#3(LVQ?ZRAO02<D&['33++_!P4!NDX,1FKIH5/K0Q*
-M(*&'OUX`BI7N;0*:_M0Y#+S]T"'8N#^"7,6/E5/#7M_L^FTO=3DOD-%C,>8U_F
-M06]G.MSU58/1]D<J5PW8@(8W51VO)\)^B$1@&QLB]X39,&]T'(2-?F?,?SB'
-MM,F.:K5EYOLHKYK$1QA*$K=3D&1&T``&P```!L`````@```$4``&A0VP``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CF:*A:4]RT94"V?A%4O<=3D=3D\+B`D(`````(```!,
-M*0``,)+!AQ(W>:,9]EW6(<N&:IB+VE?^8'*(HS1B=3DE,WXQQEK8%_R\%>^Z?'
-MIR)-2A*W1C^)``!L````;`````(```!%``!H4-P``$`1``#`J`$!P*@!`@'T
-M`?0`5`8YFBH6E/<M&5`MGX15+W'7?"X@)"`````#````3"D``#"41"MH#(66
-M3TJ6IZPUS.UV+01#Z)SN$AB.*L['LF;$/^`A754V:,N2!GVA<DH2MT;9I```
-M/`$``#P!```"````10`!.%#=3D``!`$0``P*@!`<"H`0(!]`'T`20'"9HJ%I3W
-M+1E0+9^$52]QUWPN("0(````!````1PA``$`1N)\3/KY1F5E]9Q(F-"^>`NB
-M&/S<=3D%=3DG\D)(=3DDI=3D8?Z.*@K8U9ETO6:ZI"78,&!R\^+AZO6>^PLH3Y/R04.<
-MEK'J<Z<N!Y.'!2T+59]_<F?B*`C[M2,O;CH#)EK90OF>JTX'\3L`YN[KO!>V
-MU6[1-Z_/GR994A(2]AIIN1XC7`6S"(9.VB9#)40$:X>>_5!3XMLW6$S)34.X
-M.0TVI&RRI,0A"4<\<).)$O*7N@=3D5$LP\3,+ at _\';O?%U']?=3DD1NHDBO6;:[3
-M3PL63I%'&!!%(@X),MIIG)AF]R`^1PRD3*G1J8$">P<9AI[D4-*'1K',*<&9
-M&Q^?G?"[%K at 72A*W1K.P```<`0``'`$```(```!%``$84-X``$`1``#`J`$!
-MP*@!`@'T`?0!!`?IFBH6E/<M&5`MGX15+W'7?"X@)`@````%````_"$``."R
-MU>:`6*3]IE&JF]F$1WZP[UZ9HMRB8"Q*5ML@\;>ZMD;WT=3D2_[U96B;A<LWS5
-M]ISO!2H47FWU;^E8`+47'X?:P4XG,P8(^EWT(R_Z9N*2*HZ>&FG\'[.E6=3D at 8
-MI6[M/B at 4B9]FJ#T=3D^7Z67?B,?3=3D_XEJ^?Z[E$H8H"_1=3DN4X-2=3D')JRL[5F$%
-M]]8:MV:G\><N$LH at XS"@GX$2NLL#LEP"V]>1/9ES*Q39%[TZ6,SHV+HI.36*
-MB/`:;#;6[`0#,:,$R=3DB1^IW/ML4X/CB1?.&A]H'COY')W,'SQS`A2A*W1J?`
-M``#L````[`````(```!%``#H4-\``$`1``#`J`$!P*@!`@'T`?0`U`:YFBH6
-ME/<M&5`MGX15+W'7?"X@)"`````$````S"$``+!AEA:0"<AYA.0?3M;3*W<:
-MFNB7V>S+>,NM`\VDZ6T'$)[X512D^]0MN;8];IGLD#7V^>B\3G0O?96$".\G
-MWV)8]C;.-X*K9?2!>!2250?;*F.-]7F_^[:<8U>%3?T=3D\^_:(:.!T'K)T?-D
-MF(9N4O,BXHIFO6<M,893!5A+5TM8"R59QV0M2SQSW9QDW0EQR[781PNV[OA0
-M]97$S at HZ3[Q$0/09H=3D?>)"(]\H)U2A*W1BOC``#L````[`````(```!%``#H
-M4.```$`1``#`J`$!P*@!`@'T`?0`U`:YFBH6E/<M&5`MGX15+W'7?"X@)"``
-M```%````S"$``+`VBV8M7[MY at JA5R11KCV121F$PH(`#=3D\CNQ[Q3^G>BP*S`
-MU at UY?F?YC9JW]('AZFV>L(>J>C27ND4A]UIE!8A#LI%V2]EC44*ZRF&3B-=3D#
-M<0``,@"K1,[(HUVSP[N,J[?N-[@:-<87+?B`UB.G4\)2R-]O!&7E\;\ZKJNO
-MZ13)N*Z$*PM2J!TC,51),(D>$L!XS%U$SZ(#@>7&LQ\_W.D.[W\0-[PK9HRG
-M^RO:2A*W1 at L``0`\`0``/`$```(```!%``$X4.$``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)FBH6E/<M&5`MGX15+W'7?"X@)`@````&```!'"$``0`\Q$6M`)#C
-MSO,8J2S\*SEZGO'AS4!SX0I2>FKC=3DFS:4K5W!T_E.$&3]@K$EC)#8\L(2A\F
-M<!/1-U"Y at YYU!JO(BNKA&^_$XGEF.RF5QOU5J.Q\:HDK)^0.`>?I@>+T^U at .
-MN0F^,L(O-N-Y4?]%\6K9!J#]%Q!F&YM1)6B[20*[+)>>U_<VUA-8OO3G5GL0
-MK&S at .MKF@0$;5OYETU2`S=3D%Z\UX/F$+SPKTR?T//\6P/@,(9-XP:$BAA at T\U
-MS]W1%7U8#T.+NQGVK&T9&H.SMB3O, at G\SQ]EZZMFP-M7_WJX_G*53WU%C3&E
-MQJ82HDK=3D)=3D$1\U;+/<SOMKZ:%P!*$K=3D&\@L!`!P!```<`0```@```$4``1A0
-MX@``0!$``,"H`0'`J`$"`?0!]`$$!^F:*A:4]RT94"V?A%4O<=3D=3D\+B`D"```
-M``<```#\(0``X%DE1 at YWM^().7!A@!^ZZOQMK^ICW6B+0C<SSD@!F<#(LY1Q
-MO9XET(9`QA4T9.XP;@WDOVMEW'V&GSMWZR979J-K"(LH_TNB@^QQV/P[]B2\
-MSQWYX#P6/5C2VJ\MSYC3P=3DEN_SKKV$WB(7 at K7^';COZG6Z%S.QO]K1:_S4)^
-M:]UL2).Z37QR$*:;_&F0X/U1V:%5YW]`E0JBZG0O$^[^15(N\;"8ZX2GAO>>
-MZ>P.UQ#PSV+E(#1E/=3DJ0E;O=3DB?CRE at L.4HM*5B/'D2UW.EV^_%KJP!\^&JE)
-MU)/<XT)*$K=3D&E!P!`.P```#L`````@```$4``.A0XP``0!$``,"H`0'`J`$"
-M`?0!]`#4!KF:*A:4]RT94"V?A%4O<=3D=3D\+B`D(`````8```#,(0``L%U0E0!T
-MJ"Z2S<VDF7-')YJ_]MI"?SX5NM8,%Z+=3DG?3!!<.!,37UWQ(&ESF*'G"2):!#
-M/CXZ_66'=3D*DA(2=3DC#M7K#*.-#LT$,(C.IUW)^KT9ZD,5%_4A4RJ1^^7<3R0@
-MUIB,T\UIJ$R(8Z!2AY9H+YG9:ZGO8V;M_L[5#Y8$:`G.QMYONMZX#UBZ2[!X
-MA]S'-[+4/K%3'+@?.YQW\-Q]!=3D@[`>,/S7*2$?.9S9Y*$K=3D&^3X!`.P```#L
-M`````@```$4``.A0Y```0!$``,"H`0'`J`$"`?0!]`#4!KF:*A:4]RT94"V?
-MA%4O<=3D=3D\+B`D(`````<```#,(0``L!PX?(D0U4CK+)VA"1_#]0/Z<,A*`CY^
-M(Q5)I[.P><OV<AE<UN]@"]&7]P2S^7S/Y/QQ!+T`#C$+B50MY_VU98D]F5H7
-M]=3D0SI>E7 at Z\:[Q^H560=3D*<4Z'[<^H<2)<7-$&H-*U6VALOARP_/J;J_32GFV
-M6-[!28&J=3D<OHN'<,,T8"A'US<JJ=3DNG\K#J;%B5TW7$L!%1K>.#B^`=3D[97J1Y
-M'T2T-T.\;GUC<]D<K.M*$K=3D&T&4!`(P!``",`0```@```$4``8A0Y0``0!$`
-M`,"H`0'`J`$"`?0!]`%T!UF:*A:4]RT94"V?A%4O<=3D=3D\+B`D"`````@```%L
-M(0`!4'7`L&VI`U+VH$H#1&]S0'3M'WP#(_=3DWS\92;,'-PHN"/!0"\CWKI3IE
-M%[:-QCC4+\&7YL4S<CR[@P3I.$HEKW7T,-/@9!)&!!/M0A-.$Q^XG=3D;2R&KN
-M":;JH-U\",Q0+[PR&<-1H7"25MSJ7F21\.7;9T&CIGO'=3DLQU5%#;(XCP&RT;
-M^+<:A_#DO0+SG at J8#M;94H\9'7N-+[MSZ>ML(/:-YJ#KI'>0:U&K1G-V)ET5
-MS8UP];<AA"##C2^OX[@>D%).5VNCWLV/[2+">K"J0=3D3=3DUX\59:ZA213TQEGM
-M9B*H6FRB^Z`KR"C?7F&U&*Y`F,AVYVH7S^@`-W.'^RUWP\ZO9>5*C/9B$D7*
-MQ.YAXW8<>#=3DOZ[96'=3D&Q'?431ILXS>C]]W8)DRQDE<;IV-55(7\V6&#!*#L]
-MGR at 2YJ`]C\6?85?)9D0?KSIO/O/A2A*W1J.9`0!<`0``7`$```(```!%``%8
-M4.8``$`1``#`J`$!P*@!`@'T`?0!1`<IFBH6E/<M&5`MGX15+W'7?"X@)"``
-M```(```!/"$``2#:E*JNB<;[O/XNRVP[.0$+D637YN,.XTCR+VA=3DT1$9HZ_;
-M&=3D at 5^-W",0G!2H4ES)*0WY=3D[<$$O?_2),/X\(1V`/'LX03RVZ%_N!UH&[email protected]
-M/0E\'!<%7FK/XIX+_^M2:M7(>A at 4(P,WG\CGS<F$/]=3DN2QY1J85Y-OWS&55S
-ML8P@<O`PDQXF;8%FYLNZZ4^HO?SMQ8)O09L-Z,DXGB7DXK2!ED%`)45T8X-'
-MM7#_H/%T\_M#Y=3DX0\*0N+C5`F$)Z&3;GL(1D-??K%*8(F8FG(=3DCB[MU2:F-J
-M(RJI*)LKMYU>4&X1*R`<^"IZ1LCP7YFJJ#?(/<29E(B=3DI=3D(9]C52W^7AP_H'
-M3D'O2Q^U-[B-\YS/H4<78I`$>"?29OJL?4H2MT;9P`$`?````'P````"````
-M10``>%#G``!`$0``P*@!`<"H`0(!]`'T`&0&24)6056SEN8$R/N^Y).4A'XN
-M("4(`````````%PJ``!`!/4$:R%8+'G)<`A_S>DV%&S5@?XN-#L5=3D_4U1M1(
-MDY-)>GIO/<.#7\P!>!7A^Z!*'3=3D49+<CG++S)C$:2A*W1ES,`0!L````;```
-M``(```!%``!H4.@``$`1``#`J`$!P*@!`@'T`?0`5`8Y0E9!5;.6Y at 3(^[[D
-MDY2$?BX@)2``````````3````#`"JR$;'U:6$FD:Y[^-_>FS8[1*3?]P.EB,
-MGC[>/FP<\(!;OIB\846ZMKZU[4H2MT;FV@$`;````&P````"````10``:%#I
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.4)6056SEN8$R/N^Y).4A'XN("4(````
-M`0```$PJ```PH5QW!#;&`78S[D'SS9L&L?T):86]4;/9!9$1#!B at S'SZR8A3
-MHBY?OCF%C$I*$K=3D&TN@!`&P```!L`````@```$4``&A0Z@``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CE"5D%5LY;F!,C[ON23E(1^+B`E(`````$```!,````,*)<
-MYUUON?^+NYWA?/\8>-PO*><'@MZ#1/)OZ"N$3-E?2=3D6!%M;\-8+A!=3D462A*W
-M1GWF`@"8`0``F`$```(```!%``&44.L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M8RT0C<X;3*```````````"$@(@@````````!>"(#`'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``UP7*D!WA<.F*3%$U1(QQQ_)S)<;K_G"9
-M:F$&W?2 at _=3D-BP%P>ZJ(?Q@\70KTKI.?E;CSDVO!9QW.`?1)"6W42D.LRYFW.
-ME*/ROBX!!DJR]31':PY,;M$A$X"MD=3D9N/?G]\0?R)"N790!0AETS"KWG2+O*
-M'2,1A4YF-%P!-X;ID/LI```DW!]MW1YY*&D7SP2<"Z`9$'3$HW#L]:1XL2L]
-MQ;7+\T8I```<``!`!%(U6RF#8E3WC^NZET0*_"HO<"0?````'```0`6]U93K
-M?;4#0WNE\W\NB&@!*T.GZTH2MT;O]`(`7````%P````"````10``6%#L``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*6,M$(W.&TR@```````````I("(@````````
-M`#P````@``!`!@````$>6E)("Y]A`W,1L)&1;R>MO4).3$H2MT:?!`,`N`$`
-M`+@!```"````10`!M%#M``!`$0``P*@!`<"H`0(!]`'T`:`'A6,M$(W.&TR@
-M```````````I("((`````````9 at A```@``!`!@````$>6E)("Y]A`W,1L)&1
-M;R>MO4).3"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MUP7*D!WA<.F*3%$U1(QQQ_)S)<;K_G"9:F$&W?2 at _=3D-BP%P>ZJ(?Q@\70KTK
-MI.?E;CSDVO!9QW.`?1)"6W42D.LRYFW.E*/ROBX!!DJR]31':PY,;M$A$X"M
-MD=3D9N/?G]\0?R)"N790!0AETS"KWG2+O*'2,1A4YF-%P!-X;ID/LI```DW!]M
-MW1YY*&D7SP2<"Z`9$'3$HW#L]:1XL2L]Q;7+\T8I```<``!`!%(U6RF#8E3W
-MC^NZET0*_"HO<"0?````'```0`6]U93K?;4#0WNE\W\NB&@!*T.GZTH2MT:[
-M*`,`4`$``%`!```"````10`!3%#N``!`$0``P*@!`<"H`0(!]`'T`3@''6,M
-M$(W.&TR@;9-$#V0,[W0A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``!B&Z!X^AN'Y
-MC2QQX-2;A$+I\IS!7W3!9O^BL-YI9<!%3XIWD#X[.U?`U`0F at X=3D=3DA7 at TATJ[
-MC852I`E)_L?>U1WW:GC[M-!7*9,=3D8!AE@/=3D=3D^ZW]YQ#7'2,7MT#?6&FR\I`F
-M2.DP<33F/4`+WVB_SW)<AJIU;A*9.=3DSG5_[:9Q!4*0``)`^D_Z?W%$L>J+N3
-M;RHY/7CUWUI$TO34>-;^GFMY`:^4*0``'```0`2LW"5#R1>GCRQM=3D!Z<X5TR
-M[JK$3````!P``$`%H)QO]T^Y(1/)C6U2';"/,-1 at HYQ*$K=3D&&%8#``P!```,
-M`0```@```$4``0A0[P``0!$``,"H`0'`J`$"`?0!]`#T!]EC+1"-SAM,H&V3
-M1`]D#.]T+B`C"`````$```#L(P``T*OLFAG467F*GZZ,+YLT/6?C3CX;Z_7F
-MPPG[U6X55YU.5?98.E/L-*M^T4&*^PLW9P5RNQY69B%?%!^.[U2Q8_?R)9KD
-MH5'3A^RJ(TB1OKA2+MB%5R@&T_S at _+`E?`?6E>"/2OA2A5UD"KPO$DHI50(9
-MM1-N`XCHTO1VC9&:P at 8W0#IT:`HQH>,>EXI6B]!^AR8!P.S!PGG!!_?\:IRG
-M'Z8MDB)=3D*&:)AZ?"OM<=3D^3BPVX?W=3DMJ(*EIV_R3JTO>,5Q!>W(9P[+[NYXJ+
-MMDH2MT:F;@,`O````+P````"````10``N%#P``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B6,M$(W.&TR@;9-$#V0,[W0N(",@`````0```)PD``"`&T\0%+\!#HT<
-M%WH?H+06%?N_WD&X%:.W-[X`S!'&Y]IGSI]F*ZT;HRO)[J+7OYZVP;+M__23
-M*46!/4-+P-C#@E'@$C'5LADQ^SPS]9X?-1LCZ/=3DM;`I]%J/%32KW#6F(J#8Z
-MRF<&*2[6>;QS;XY-\`A[&P?O=3D7+8&IRW[DH2MT87C@,`'`$``!P!```"````
-M10`!&%#Q``!`$0``P*@!`<"H`0(!]`'T`00'Z6,M$(W.&TR@;9-$#V0,[W0N
-M("0(`````@```/PA``#@TTB4NL(87XS+:#1\9GQ2/_-YB$?ZC(%L$FC6D&(/
-M`83.?"87+<4];]J=3DP'#KMX2-[U"*E/X*!\E?Q\S)'>"WI"$J+-X,!4IT"`,!
-M;]:$,8SR0$A=3D`&'/F]@)KCG#YFHN1;].S,QL7[8`(SSIG,X%<9IZXP0;[E7Z
-M+P0A[B:>TVG"=3DM.RPGN#PIBU%.KW`EMGEK3H3EEEW!P^>;34C^-I*ULU&9W@
-M`R&UI*SX`=3D3!``20Y>[A>IJ%=3DS#V#,R$-7*!`*+6IDV2/+'BT$3^)(B#)//-
-M4=3D-LA;+')!(CZTH2MT9:F0,`_````/P````"````10``^%#R``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R6,M$(W.&TR@;9-$#V0,[W0N("0(`````P```-PA``#`
-M<RK(4I^-,\D3+<LA=3DW^"+0Y91W:K>09)%`YGEAI=3D at V?I-WJ3`+9ED7PF+N`F
-M&9Z3/R)2HT8<;[N&F[8:72S[?Y1<P5\=3D-_GL?:9_P9$0$&1[H]-ZT`('5;UX
-M(W%@0*9R;^_XWJ4LH=3D5B=3DIB\R&;SL$64\36VPL,"6(W/;.[M.%69WJ*KU_/M
-M&@JJ"NC,Z, at N+8`__'43%GAHP9:;Q"]&@^*8>;*F$6[<,H=3DAAPN`FD:C0$PF
-M5X)R&1D/Z'!*$K=3D&JZ0#`&P```!L`````@```$4``&A0\P``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CEC+1"-SAM,H&V31`]D#.]T+B`D(`````(```!,*0``,$SZ
-MA8E\U<N&N5<@KW*5GIU[3M'NMB*U^#9=3DTA?">J;?HS0SA95\#\O&Y&JD2A*W
-M1B_``P!L````;`````(```!%``!H4/0``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M8RT0C<X;3*!MDT0/9`SO=3D"X@)"`````#````3"D``#`0)\G%95Z_+.&L?OED
-M74 at LA4)^\)/\T:KX=3D+TWB,O9`:XB>A4!6+ZX![Q634H2MT;KV@,`/`$``#P!
-M```"````10`!.%#U``!`$0``P*@!`<"H`0(!]`'T`20'"6,M$(W.&TR@;9-$
-M#V0,[W0N("0(````!````1PA``$`4T8''P@/,W#]1(_&,Q]Q6#TCYX0B*!MN
-MO>8_J%<A$LR[2'X;HFNE_JUH;]8 at XL%SR049!<U,OI,^2";N9+[/]6GU.FX$
-MQT33B-0?)TZ.-Q$SO=3D,.*?F3Y\WI]+C'!9N)=3D4$*RDL`5IN54./6,M6ZNJ?M
-M2__K/-WL`Y'9#DS2YH2=3D2C(20SC.0<3>36\(>)+;X`3\8]^:7OC=3D;M:P'Y*Z
-M`O!6&K]T[)SK"^IKX4R+G5L:CW-218[#/^4+$V!BV/=3D7,28P0]S at KWM+RQN6
-MFKVA7S`@@MBE`G\]HUG/K&69A(1(<?53=3DBVH8^:EWX[9%?Z4XRA5%(5R$#>T
-MH!;72A*W1OKF`P`<`0``'`$```(```!%``$84/8``$`1``#`J`$!P*@!`@'T
-M`?0!!`?I8RT0C<X;3*!MDT0/9`SO=3D"X@)`@````%````_"$``.#\R)'H*XG.
-M"S:":.\6O6"J'&U%9 at 8E<)/:TT\<VG434]5CA35/XE@^)4O6[=3D934;!ZT.;F
-M,J!+TW6`S_5S)FZ'N8_ at XIJCT/]8_RXT(BUCJ_:E:?CK^QO%P^PRM?D@!IL#
-M!Q8?7RP2KU40.]]DX8!3CQA!0M-?61%90ZNB,G^LWND6:J+2?'SJ\4")[D+U
-MMTOGDX8^)<;\E%6V0..(D$-/R7NK+#/B3V=3D:/!)YWX[XVO=3D+E'XT086 at _IVZ
-MKJP%6?W=3DQUEE(7SKGV%@G/YAL41%"X3,ETS'N9!>3FOX2A*W1C7V`P#L````
-M[`````(```!%``#H4/<``$`1``#`J`$!P*@!`@'T`?0`U`:Y8RT0C<X;3*!M
-MDT0/9`SO=3D"X@)"`````$````S"$``+"$/#[6YXEY$7GH(_8K>\N::,,#_A!#
-M383)A$31$K&5BWWAKA!B.SR!-6Z'_%\0I_<^B&:6E"*9(\D:-SI0BQ4FYIS.
-M[>^9+S`%+,H2EZ&/,:A[!"<?'W',^-)0EY9RZ_`SDQL+A9?'&1Z;HN"%!D+[
-MOM[9MQ]+TR?:,R#-'QP&F[NB1%5T_:>_+^P5/+XU#2(H&$W.8+23F?QLB_L`
-M,T:,"&]?9G`IN?B#";\H2A*W1FT8!`#L````[`````(```!%``#H4/@``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y8RT0C<X;3*!MDT0/9`SO=3D"X@)"`````%````
-MS"$``+!^@/DJRK.ENZ[:<=3DT&F=3D21W<WN+G1;QD$S>X%%IU$3+?`^+5-C5[9'
-ML"DJ*A6Q,\]F+>@]%4:5+N3P[V#TL.!*,-D at ZFOYZH=3D`]/<KN'M\_&2>>]K\
-MN<3/Z5*WQKS,`(RQ1L;@=3D*`.#B2A)NCW]-]9KF3NLANQ:;]FP/?%R5LM>EQZ
-MAR9TW"*_$LB!V9VV>Q:CC`24X8OT53'\>HPPBU]^NW/S^6&#R+#_:;?\2A*W
-M1BPV!``\`0``/`$```(```!%``$X4/D``$`1``#`J`$!P*@!`@'T`?0!)`<)
-M8RT0C<X;3*!MDT0/9`SO=3D"X@)`@````&```!'"$``0`V&3^6(^Y&TN(:4@(1
-MH:6)[@6'$G9]UEK;9J%5S%39)?[NF!S(@;9N\C<DO"ZQA4L`9]M3 at 3B@H9+Z
-MAL;__,6JZG]7HI5QAD$5-HP=3DN.')#NJ:QO`N]>C:*%;1&K%MT_A*\'-9>_>B
-M0.>2HV2BP$I'=3D(F?$*:ZXGM=3D`00*=3D%"))Y$"CJ:VTN6D3J+ZX")2DAXHD&X)
-M9'-.1J at EZWX9VO071U(VX$7ZX&7VFFC7CX_8L%`:*NP4:@7M6<LS2_^X,[Q1
-M^#+P'C\=3DZ#:[E%)H,\5>9(U7=3D_^`^TZ8LLSTMY$M&M:@WY9/8*Y"-=3D^.M[-)
-MNYG75I&OUGPT0HIV&K=3D*$K=3D&<T($`!P!```<`0```@```$4``1A0^@``0!$`
-M`,"H`0'`J`$"`?0!]`$$!^EC+1"-SAM,H&V31`]D#.]T+B`D"`````<```#\
-M(0``X#J:;2>LC_!PC`XUCS4M5$_:0_$!\D7I!(8^-HMXP/GW6K2DA;,EJI)2
-MZI&:(!?7K15@,_T_:WXJ0J98TDONGY`EE&38&".#MY:1O9]YMQ"H4!FRD:"`
-MG9$>TO`E:UT.8 at .F>=3DIY6V9_>G:TBHS>,J/LK>3+X$FBS3[SO7?3`*WI9>$L
-MY&/R5Y45D%,W#%5C4MBSN5N@"MTK)E&4/WM%%KTX^L_?>\YSF@=3D._V3+]P[H
-M<RQD[QN8(2AL$7(DD3AG`?G24=3D5C,%S at -JICNP%G4/2Q;NL>L\);,&<P(GA*
-M$K=3D&LE$$`.P```#L`````@```$4``.A0^P``0!$``,"H`0'`J`$"`?0!]`#4
-M!KEC+1"-SAM,H&V31`]D#.]T+B`D(`````8```#,(0``L,T6>2O\9]\@$7'*
-MV/!85 at 9UP:E1G#>H(/`@X at T>UL&89T&.";U<98JSZ>DA+!/D#H8QNR=3D)F2WZ
-M(KL5"9?J6 at 4<V(_X=3D+D9"!I>4>6#HW29;\,?;$AS))>N4`5P;*[+>_W`/;RN
-MWQ?[$``;CG),NW]SOPUNC>`;0!P:+<?04:[IG"@;3S_O at 2LTZL;/3MG)7D&F
-MTUQSR4+UJ"ZUE"`?J2L2"RYG9JS_:#_8</Y*$K=3D&HW0$`.P```#L`````@``
-M`$4``.A0_```0!$``,"H`0'`J`$"`?0!]`#4!KEC+1"-SAM,H&V31`]D#.]T
-M+B`D(`````<```#,(0``L%GC:0:\7Y*<W6?B$C$41N(*!"J&)UHI/8Y$I)3.
-M=3DVIS\"N&\?3W@!`J3=3DMU8AP(=3DA`_'4_,`:LP6B)#YP09]"[]MR"E[.:ABS8\
-M_%1,TT.F,=3D at A@.[,_.I,K5R+A5$]01&6V'C1^<&`YTOQ/1M"[#K=3D=3D5A9.4<K
-M<TS#JT+/$XO"W_34ZU\QZ+)XC?WW&A/W7??HO5-\=3DL1EQ'DIDL%388=3DN>8A7
-M$G=3D*9X7 at FG-*$K=3D&I9H$`(P!``",`0```@```$4``8A0_0``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UEC+1"-SAM,H&V31`]D#.]T+B`D"`````@```%L(0`!4,`4
-M\V?TA+A9/J4$5E&TLT$F4V6M(M2+G3X7B#6)`7R+0:W`',)FV8BZ86 at -@TUL
-M71U\Y&VS;)K(3,+[A%7!%^=3D.>!,/T&E1[3_"J-GBF=3D\C#[]<:O+MA6DV?!(?
-M@]U2PMCWB&#/"J8JR43,##SX+HKKG7X5M+'P*XM%@![COPQ,>S3@(V_R,1JK
-MWIYA7S]]X$,A&1"?ICEW`WU?[J>_DL`X!4N\JKNMHC1%+X;M5;*/AF<X\,T\
-M>"UBU$CUAJQ0#4'#*VK3%;=3D?M9PN;CT%ZC^T8;,F^;('6OI_S-EE$))Q7:E;
-M0SM>1HQ3UL=3DQ_+<+9$A_P.^F7UP1$'I)]$B`$@)H^JCF/Z&JN0XE[(]R'B0H
-MX2!KX?V[L;IY at VAKG!UPWXW=3DMA)V*7(!@]4-]XOIC-9)*)9QEFL\2\%I1!%=3D
-M!A&6Y08U("658_NC>^`)2A*W1G3.!`!<`0``7`$```(```!%``%84/X``$`1
-M``#`J`$!P*@!`@'T`?0!1`<I8RT0C<X;3*!MDT0/9`SO=3D"X@)"`````(```!
-M/"$``2"7X[W/F2`[email protected][7MG$M_J]`0/#2 at F+SA!PV;[4OB^O8=3D_*%:0%V
-MC10"5MB'M\^7DO[-9'154GW_PMH1-!.&+'0C&Z9CJ7/-NMO/@Y'\];LD(P5E
-M%?VV>V=3D^=3D<)U%W\3TQ+66(=3DB?^U[8`QBBO%%R+%&W1RQ&%4Y^E*+(,?*]]F;
-M0U%ZC8EF,44;E%"99OL\'/!7/N8E?4T;HE&/JY(V;2,7J,\ND=3D-S>@G3WZZN
-MRK+;[_IQ":#+U at +4V_2>CAEJ>1C>/D6A?C_X>J?(D$^,0-*@]PTSF6[5+5WL
-M at FQE3N+R:DP4H<%LG9=3D5/EM0[5`Q(+'80"_J$X!MV\)Y;O1()14J),5[S9$?
-MUV28#>G:._,_;44=3DG\R&BTWNW4H2MT:6]00`?````'P````"````10``>%#_
-M``!`$0``P*@!`<"H`0(!]`'T`&0&230'OX^5 at P,IX[TAF`QOQ]<N("4(````
-M`````%PJ``!`@&O2LN]";$_VL1\B\>F(8^#=3D<"3LLBL`@"5W0I``3CH.,;'*
-MHMS7OI#S4+1-Y7]%>Z86B$+(S4,K4*/#2A*W1@`!!0!L````;`````(```!%
-M``!H40```$`1``#`J`$!P*@!`@'T`?0`5`8Y-`>_CY6#`RGCO2&8#&_'URX@
-M)2``````````3````#"61I0L.]GV6"(]=3DML?++,7-:N)4;!\F:`I2T;SJ/+1
-MO^B<W]<D`=3DS'YK4BHDH2MT:L#P4`;````&P````"````10``:%$!``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.30'OX^5 at P,IX[TAF`QOQ]<N("4(`````0```$PJ
-M```P,C+%HSBE>"6_RB$SD&^I#M3_3]/S9E0%".0D=3D at TZ6M?0O*?1-_"7QE)7
-MR&=3D*$K=3D&!!T%`&P```!L`````@```$4``&A1`@``0!$``,"H`0'`J`$"`?0!
-M]`!4!CDT![^/E8,#*>.](9@,;\?7+B`E(`````$```!,````,)ET<:ZAKKF%
-M$>\R7XB!S3=3D5S]7"TKC#/'.UN+TP#X`;3%RQ93NGM<,Q3-Y:2A*W1N48!@"8
-M`0``F`$```(```!%``&440,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE/9&Y5CV(
-M6OP``````````"$@(@@````````!>"($`'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``H>'CK])-KQ,YFYT?)<SXV.C;=3DAUUG/:=3DW?;CRO+.
-M"B>-$&6-#\K:<A%/^M^>[#1'*.9(1MB9<M_SV<M]60HSF:5BZ8-P!UM9;RN^
-MW__DWN1TT8-G-NWKTIQL$SN2Z->H<`1#;J\I%;RRY<:^D%)H=3D^(?M#+=3D*5P^
-M=3D>Y5;V2&$AHI```D/I at D;FA0KNKFXW>0X<KIM)46S>N*A#0-SIX#^U=3DHR1HI
-M```<``!`!!>TT>HGCCCZSQ`P1#E9P7HM2;N@````'```0`4[C+CS#I97<Z*+
-MA+:S]=3DN*@[.-,DH2MT9;*`8`7````%P````"````10``6%$$``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*3V1N58]B%K\```````````I("(@`````````#P````@
-M``!`!@````&7RYD1&17V?D6V0AGZ.V*]D&,:34H2MT:".`8`N`$``+@!```"
-M````10`!M%$%``!`$0``P*@!`<"H`0(!]`'T`:`'A3V1N58]B%K\````````
-M```I("((`````````9 at A```@``!`!@````&7RYD1&17V?D6V0AGZ.V*]D&,:
-M32(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``H>'CK])-
-MKQ,YFYT?)<SXV.C;=3DAUUG/:=3DW?;CRO+."B>-$&6-#\K:<A%/^M^>[#1'*.9(
-M1MB9<M_SV<M]60HSF:5BZ8-P!UM9;RN^W__DWN1TT8-G-NWKTIQL$SN2Z->H
-M<`1#;J\I%;RRY<:^D%)H=3D^(?M#+=3D*5P^=3D>Y5;V2&$AHI```D/I at D;FA0KNKF
-MXW>0X<KIM)46S>N*A#0-SIX#^U=3DHR1HI```<``!`!!>TT>HGCCCZSQ`P1#E9
-MP7HM2;N@````'```0`4[C+CS#I97<Z*+A+:S]=3DN*@[.-,DH2MT9Y7`8`4`$`
-M`%`!```"````10`!3%$&``!`$0``P*@!`<"H`0(!]`'T`3@''3V1N58]B%K\
-M(,R&Z01]O,0A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``.;VS`C=3DP.J3"7#0E/L%
-M#?5)=3D">+5<R.$FW7/8)J6@><$K.<`9']I3M#A(U%YN\POZNLHNOCT=3D0R0RFW
-MMT,G1I-YK3,#/@7T;4<?C!Z at 0U"2"D;(+2*W$*QF+6IS$9O2[DS(T;$A$`MP
-MTQ"_5/4`#E(L=3D%S<[1R."\1+TFOANG0"*0``)([!Y^=3DOY712!`_YJP12+0%0
-MMJD]^WB::4DRPRI,22WT*0``'```0`0C+19Y<8A$E;@0>_P"JN3)5IU8NP``
-M`!P``$`%LVU9Z:Z-<Q4STG<)I??D1[*?CFA*$K=3D&OXD&``P!```,`0```@``
-M`$4``0A1!P``0!$``,"H`0'`J`$"`?0!]`#T!]D]D;E6/8A:_"#,AND$?;S$
-M+B`C"`````$```#L(P``T`-%/Z^$P_+'2'=3D3^I[4X]J>MK@%9A6-[=3D9&]1!E
-MT;Y*^<7Q2H<%)<0@<2_%Q2/_IGMM4;S9O%G%X5!];BKVJ+]]6"JG!LH/P^$-
-M@<+/'UN)>Y*W#SM\CV5G-6RT at D[AVLL3/NO+,$UU"UJ\`1-+/E`!T4E6AU-T
-ME(9C`<9"]-.U"R,^LG]F>`G#HQ\VBJ-D<4!89F!W>Z-7T?A:$MNB[4RVDMU@
-M/5Y9%I%3WS^R"%D?DXAL<WQFDFA%$V7<2[LH`,!N@#CUKMFZ&K_L.4H2MT8\
-MH at 8`O````+P````"````10``N%$(``!`$0``P*@!`<"H`0(!]`'T`*0&B3V1
-MN58]B%K\(,R&Z01]O,0N(",@`````0```)PD``"`]+62!4?J#JTH+WR"ZRTF
-MM?6QKB/D=3DUD7HU/8GS at L_"[";7%>^PN*404TBZD>/PFIR8.?OUC![DX9*3Z`
-M)]]%%TR1'^^YP5_?0^$WX#O]%=3DSY;/1K)_'D0<M?KKE1A5ES$=3D-[UJQR$#)_
-M.T]CYJYRG/U4.:J^^^9S04EI1TH2MT8,P08`'`$``!P!```"````10`!&%$)
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z3V1N58]B%K\(,R&Z01]O,0N("0(````
-M`@```/PA``#@C\^]8K=3DE!?17>3_]Y*SJ.+14`Y+>]G8I)=3DZ..Q`E]?,;.X.H
-M''O=3D[J<XX5Z6W<9I'Y1B!!9*E\[1"'$\'40P:]X(H?.Z=3DQXG!(/I<DM0R=3D$;
-MY-#LA at .+1]0LNYM\/4.WMH'*LI1]@6T_K&=3D38R>RICM+A&5I0,/U<0$V#4\;
-M=3D=3D,$F_,T6D92ZG/2-&(&)&-.E!NS[,;-7M5&4Q2/HD_T;J>J\AA'S?!.M7ZI
-M]4R%<D:4>;=3D73O=3DB'"QMV)E&!.%_F at D"*D:B*9SA?":4BO2M,9HF)T]MUP%X
-MQU!4^DH2MT8=3DU at 8`_````/P````"````10``^%$*``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R3V1N58]B%K\(,R&Z01]O,0N("0(`````P```-PA``#`6[=3DF:!@D
-MY/')$LIQAG?T?FAUU5?_E0G$QV1PX1`H%K_=3DB-T$*NQ)(^4AH0FP-K=3D3^Y+M
-M#>L0T1F$0=3DJC4$@B2;[QK*F-1.J<8%*TCH8/L^3%U-0[6Z`ORB,K#T'[O>G$
-M8P*:NX;I?;NF?JU#6.=3D<:=3D!WEC$E+NK)2,1T(KW\^?@_BGY38+U9;<JSVN/0
-M`P_"1J3^MIU)H^TLEZ`V$<+P24O;KO+>0*F@)X<?7V%E/;Y#'CK=3DUFM-E.P<
-M+4A*$K=3D&EM8&`&P```!L`````@```$4``&A1"P``0!$``,"H`0'`J`$"`?0!
-M]`!4!CD]D;E6/8A:_"#,AND$?;S$+B`D(`````(```!,*0``,.$N4@`,<RXU
-M++GLK+X_DJ&JWJYZ%M;U^=3D#CLD/H\%X&AKW=3D[F0YS,R[N>B*2A*W1A;S!@!L
-M````;`````(```!%``!H40P``$`1``#`J`$!P*@!`@'T`?0`5`8Y/9&Y5CV(
-M6OP at S(;I!'V\Q"X@)"`````#````3"D``#`&V5%`@)ANNP83A at OM&,DSYGB@
-MD8(``CU;8 at W=3DHGQO<CXB"&7L&;;$Q=3D/BCDH2MT;##@<`/`$``#P!```"````
-M10`!.%$-``!`$0``P*@!`<"H`0(!]`'T`20'"3V1N58]B%K\(,R&Z01]O,0N
-M("0(````!````1PA``$`54$QX?8 at I;3'5UUP`,20F"L'!YKV at 7ES]W\*J4!/
-MWA)QQ_V?RJUX0L:6]*VH_?KGRW+,&_RYW8!E#5,MQ.+^S8S2XV-9UO.(X_=3DY
-M$G2.)<Y=3DI=3DL`Y_\$SZ4B*.HOFTET_W'2)RX1S#V1`-9J9 at N3\M2I9X)=3DMGRF
-MLEFZ`*Z0V)P)'(6AS%=3D$1G_,#9WLBO*M at W>@#&J0:E,V]#'(K>^S#A8 at 1J\_
-M at Q%XA4BG/$5$(-CFIJ$ZX_+_QG.[CS2")D@&BTVNJ%-FHT6N(^6O>UV9+XRY
-MCQ%6F54-YV9 at 7^X>2QP*F?.'C>1$DF*!@(H7.<L"=3D]/:771Q!9GZ?L#K2A*W
-M1KD:!P`<`0``'`$```(```!%``$840X``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M/9&Y5CV(6OP at S(;I!'V\Q"X@)`@````%````_"$``.`9X0-J6_HMM7OY[H94
-M#W<(Q#R"V6\@,KUA89>_8MXHEQ%):1R at OJ_)V$EI>Z^ZUL6DYN9T,9R+B.02
-MT<?205:\<_$R<N$%F1I6<^4P2Z8<DE-+`IL6BGVC)CQ[G\?PTPX6'.%(Y7)B
-MA50#!RVR`*2+9).AF341X&B,!CS6,FV7JK37Z6S5%?ONCC+3T=3DV;!J58LK'Z
-M"J!VQ3SEL)GAS at 2-%=3DDB3X?7-\!"-+:IW+QZX3'ILS=3D'`3,7L#&]W):IJHN4
-M2AN/F=3D'2C^1`)SP3DZ=3DOCAGW$Q0)2J0]I=3D"02A*W1D(K!P#L````[`````(`
-M``!%``#H40\``$`1``#`J`$!P*@!`@'T`?0`U`:Y/9&Y5CV(6OP at S(;I!'V\
-MQ"X@)"`````$````S"$``+"%7GGZE&-OX at 6+SHO,T7(5'?L5C:;`(V&8Q'4^
-MT$1_?6UN*L#Q&$E5'=3D88S/H"<$W5I:_/<9".BVPI4L>)=3D13?QC at G7`&*JGP0
-MKPERB4^L036ZL)GJMR,A0][Z)13`"L2PS(Z*(`;<9&XOC@^(01R;[!!&9DTC
-MN!94?7%WI<VLZZ(>U4!:"2!%:CH\"/,)6>2,!DD8FTKH9GAJ(V3+I at Z8?*RN
-M>,Z<O0W#37DN2A*W1K](!P#L````[`````(```!%``#H41```$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y/9&Y5CV(6OP at S(;I!'V\Q"X@)"`````%````S"$``+#Z
-M51(9<5]\RY0>Z"(GK7\!TBP0L;17JO1757K^.P-(^V!M`1FN3R;:8IGSY]M'
-MB-]$YI`]O.0H,])9#JMO$5P)^.Q6,QPXD*[I/]Y7XHW3GEUH at 92O<+,^E#^J
-M9]6A<1$!#KN"`R'!4!1Z7&N-4:?;+/T^0&,N<FGZ(7!%D`?$"CH:?GFX^JV_
-M=3DM9!99\H$B1&-*C^0W"H"H6H`?-<NH6W%1(=3DKR3X%O+O8\Y*2A*W1 at 5I!P`\
-M`0``/`$```(```!%``$X41$``$`1``#`J`$!P*@!`@'T`?0!)`<)/9&Y5CV(
-M6OP at S(;I!'V\Q"X@)`@````&```!'"$``0#S+GR"QX*6,U9J4[L\D)4F`(%<
-MWSFKZJMZS)A/RR-2VEI:F%1?2U4J_K%K*I!JQ[XL\`9@:N3V<[2VP(I8.()*
-MW73 at 8SWW)IIK06IN0BJ"1U_U(#FF;Q'PH\D$A\,[!7MUKS[J*PIE2#?+3J_1
-M*=3D^G*#U]US/*"EP9\MW'X3#$/W_GA>[_"=3D<*>,1#"`H9A1>Q4EN'JU07SES6
-M5]9@$"&&.]ZT(]DY"C89(G[65,;#L4]]"A)8X$'U"!0\]G_<4E%]5)]<6>1Z
-MNKTLC*7CWRMW336_3.!I.$(]=3DJASG[F%F3K\_8=3DD-4$TO.I]G]0KVW[0,JK+
-M&I`".LJW2A%*$K=3D&:G0'`!P!```<`0```@```$4``1A1$@``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^D]D;E6/8A:_"#,AND$?;S$+B`D"`````<```#\(0``X%5E
-M]B&Y]L-G.-%M5G(TBS"";&K]SP/VY(D?R*WZ.D$$]FQ#D2\H<Y>4>&K42]7F
-MVQ=3D?*\U6X[*"\!4D94*/AR(\;7$GN-;:+HG:EO9=3D#\`.WC33^6B=3DEY"%3FM+
-M9!E$]08%+%Z at T[YP;>T3"5J<_>C-"1,X48 at X:NCG$UMW,V,A5=3DO4FLRT@%'T
-MPVXRM^+^;2,)Y at D@Z94/:?9>Q(.VFM6M&C-<`QD.JHQT5JA_=3DSA7_IQ;9R(X
-M#\DJW\S!O_J2YNN1%5-?DW-B5X4_A/T2,.F`PDTNCP at 0L-[!9\]*$K=3D&OX,'
-M`.P```#L`````@```$4``.A1$P``0!$``,"H`0'`J`$"`?0!]`#4!KD]D;E6
-M/8A:_"#,AND$?;S$+B`D(`````8```#,(0``L&LD5SO,(%M<P,B'5?;P>`*X
-MEKWI1+C;[_EH2GJ6/YFOVE70 at 6$_G'F5!,U:7D%_20',45Q`T#'D5H#V8GLL
-M=3DKT@%3<W8P)?W at 5S2JJP\9D&ELC1W=3DDF71&5PA-<[VNO])!>&C9_(Z3GI2%2
-MNKHV0-AH(K0+>UKO;:9-$?4$LKID+0$Q?PT!908EI'E`D=3DFQEZAJ`>]E?!NI
-M!?R[]T?5:H"D\T!X]^$V&,C6$$M*$K=3D&\J<'`.P```#L`````@```$4``.A1
-M%```0!$``,"H`0'`J`$"`?0!]`#4!KD]D;E6/8A:_"#,AND$?;S$+B`D(```
-M``<```#,(0``L+=3D`M7`O:E4-V[FK)K/>,`FI-JL3"(IB"7EK8XI:6AP^!ZT!
-MQP^F6=3D#Y2S]2O8!O;+6AM?GR7LIJ<*3EBN.UX2LBD.UC+I#1BS!KS;>`A:S-
-M,Q9*@6J05R`P@)Z#^&N/*NUGXX'$;5+O^,9W>P4"-""G^*8.<(@#4[!7.N3B
-M*1C21RUVJ-2\, at M)9;@7T&,G)XAE.<PZG[?/XIM.,U4E-[RP3=3D]3P^]DHOIX
-M4A5*$K=3D&A\T'`(P!``",`0```@```$4``8A1%0``0!$``,"H`0'`J`$"`?0!
-M]`%T!UD]D;E6/8A:_"#,AND$?;S$+B`D"`````@```%L(0`!4.X/7G?DRK/G
-M=3D$*.42#>V:(EM041A4L(0[$E5X+CSL`_G*-L.<8Y*Q!9+$^"1>\H^R;J;=3D/[
-MIUD2K)OF`",W@"KNL(#[N_/S;Q+J]Z]WZ%6WN!+;:%D7QA"/[WLHCYO]WY1X
-M"FC!KYTML2C&+U&PW)^M@!C^`.^"CH!Y%E-'['XMW9J;R#L"[<!@<RW%4C,'
-MJ2GK)&N[<0PIH<D-?B0'%SP(_!V%7:(R'/E^5[J7C'LC&#ZM>,C,A,W=3D6WTC
-MC?$Z&9<1F%&3Q:!QPYU]'=3DXZJ>6H>6IC5B*[9QX=3DO<U'.WZL=3D8&'Z*`_G3!-
-MJ;^S*7Q(F8L30&;(ST+M5H"7'VM11/'I*.J<P5]4QQD5BF1!.ZW"A'H(WWNK
-M7)RHERX3SZ;R(AI3TEO<R&02\<V=3D1F`QZI$(HP09:=3DI&SKDUC,M"JT=3DLIVAK
-MB[[[[W^6^_$S2A*W1F$""`!<`0``7`$```(```!%``%8418``$`1``#`J`$!
-MP*@!`@'T`?0!1`<I/9&Y5CV(6OP at S(;I!'V\Q"X@)"`````(```!/"$``2!I
-MOR2/Z44;UEB>HP=3DH&.:Y+Y38$:3.2UOR[?)T[$;=3DR\A_E$!=3DL]+;P)6>[X/&
-M92G<W&Q]J,=3DI[D24V.Y,)%,X:;?G.7$:E3TMW`7*M%L7[0(U!"9CMX-J8(YZ
-M4A]HX2I3S2Z5$85\'F85DEQ+[-'Q83/9.FGV9\`W0$</Z?$LZ\.DUVDTOSO\
-MA#+%\W;9@>R/!+^>G>S4GPY&LP#M+8DOYPDY$^]#^PT>$6+TK!/*LBMI+8K"
-MJ!HB at -F[$G$P(]""<O at 2WA^#$BEY\3'O]1)-Y(1L]09D>F;[K:[LS*(O</)F
-MO2A")-S,[\X1&`TNC;3<IW4U&JK.8R13`,\.=3DAM2'/*-.A^7L^NV`3[SW&J0
-M0#Q"J%PKUVI:%AB at BTH2MT9A*0@`?````'P````"````10``>%$7``!`$0``
-MP*@!`<"H`0(!]`'T`&0&26RT.(!S]A0^:JY7H;`BK\DN("4(`````````%PJ
-M``!`)S*^->+)L0<3;:"@VU&U-W/J-28/*S3'I*2.+</U:9/&?$Y3MGJ/Z_VG
-MCOV/2,!?0AJ^L7:9\CK2]Q%R2A*W1I\T"`!L````;`````(```!%``!H41@`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y;+0X@'/V%#YJKE>AL"*OR2X@)2``````
-M````3````#"54#WXZJ<\MT>CY5UP]FS'C$KH)Z(JBX0JV$JA'X(KX?^&]FN`
-M+EB675GK"4H2MT930P@`;````&P````"````10``:%$9``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.6RT.(!S]A0^:JY7H;`BK\DN("4(`````0```$PJ```PQL!Q
-MO'X4+0J]4SU_@>%!XB'_KG2N#R0`Y)*%E'$R?R'[Z;L1!&C%+&F[<AU*$K=3D&
-MA5`(`&P```!L`````@```$4``&A1&@``0!$``,"H`0'`J`$"`?0!]`!4!CEL
-MM#B`<_84/FJN5Z&P(J_)+B`E(`````$```!,````,/9^!)GBPF4!(/A!BP^H
-MD4DM`R[*R^RNDZ*3HWBH?ENPP0;L_KR1]?:S5T_+2A*W1HA*"0"8`0``F`$`
-M``(```!%``&441L``$`1``#`J`$!P*@!`@'T`?0!@`=3DEK^(R$.VM"B(`````
-M`````"$@(@@````````!>"('`'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``N)CW;IGT/#(IQH;PW9'"_M4^VZ;FS-Y`AFS$/M!,34"\LSQJ
-MQSL76M\HGT at DTWI-I.[_\*P071NR"H);&+(,I(-X`?3CO&0SX_Y2X-T?T'$,
-MPQJYH^/1]0$':58@/3KEGG:OOVMU4LYXQ745T>C3B]"[D/`^[V]"[OT8[[;A
-M_7\I```D8)@1$8TP*D@>>1@)DIWNI<5YT0X#<JOFD#^0VQEU%Q`I```<``!`
-M!+6-3U?U$R]"J/DI@$R1YAMW(;$I````'```0`7[8P.=3D+QQI)8_8TIT:7\BE
-M6NW<+$H2MT9,60D`7````%P````"````10``6%$<``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*:_B,A#MK0HB```````````I("(@`````````#P````@``!`!@``
-M``&9)F37"9MY27[^".=3D1W[:1,TV-E$H2MT;-:`D`N`$``+@!```"````10`!
-MM%$=3D``!`$0``P*@!`<"H`0(!]`'T`:`'A:_B,A#MK0HB```````````I("((
-M`````````9 at A```@``!`!@````&9)F37"9MY27[^".=3D1W[:1,TV-E"(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``N)CW;IGT/#(IQH;P
-MW9'"_M4^VZ;FS-Y`AFS$/M!,34"\LSQJQSL76M\HGT at DTWI-I.[_\*P071NR
-M"H);&+(,I(-X`?3CO&0SX_Y2X-T?T'$,PQJYH^/1]0$':58@/3KEGG:OOVMU
-M4LYXQ745T>C3B]"[D/`^[V]"[OT8[[;A_7\I```D8)@1$8TP*D@>>1@)DIWN
-MI<5YT0X#<JOFD#^0VQEU%Q`I```<``!`!+6-3U?U$R]"J/DI@$R1YAMW(;$I
-M````'```0`7[8P.=3D+QQI)8_8TIT:7\BE6NW<+$H2MT8/C at D`4`$``%`!```"
-M````10`!3%$>``!`$0``P*@!`<"H`0(!]`'T`3@'':_B,A#MK0HB;9G7(:&'
-M^&,A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``);R,C^U%4GQ2_SE%:,,<B.R%?9D
-M-03&!G8VQC_B.#@ZSIJ3S1VY[IY'[OVGQ7.']CKO[K?FJN[6"08<*;.\HZ`2
-M]?210M4F5;((.G?X7L^&ED9=3DW;[\0QQ!$((YLY'8(7Q-#3AV!'8HZ,I\H&8?
-M!&;]X>Y"N.JWLT*:%JZ7'. at V*0``)!!/1P%>-WT1*_K7 at PW".[[4_J1/]W*)
-M`8Q:HS+U>R^[*0``'```0`2AF9[DL$O6:NJN;RMR?R(AMG(7(@```!P``$`%
-MHAK3`')X.WFU at JS_UC].,3(Q@'E*$K=3D&=3D[L)``P!```,`0```@```$4``0A1
-M'P``0!$``,"H`0'`J`$"`?0!]`#T!]FOXC(0[:T*(FV9UR&AA_AC+B`C"```
-M``$```#L(P``T"Z\,Y=3D<>^,/H;G5]]G.#J;/Z+'($=3D`8XBHF>)WB^[9^KV*>
-MW3BO=3DHE53+S@'G0_^UW5]Z$+5QX%E./L:]?Z*L/A(MJWNQ/L,"I;JQW`!Y1/
-M3/8EMHCEHW\=3D1Q;Y^RI?*:H>*>=3D-+K%8.>XM?OTR'HL%)D7%F3#Y?].;:%J0
-M]IIO#&TC%!K0O0)@%7&2?Q[7JJV+O at +=3D_4O?\!-D[:I$47;>/H=3D+6\H69=3D/A
-MJLB?1P'N\TS8CFZ]S:7[UVXP1Z_U@;H.^.07I&J*#KJI-DH2MT;RTPD`O```
-M`+P````"````10``N%$@``!`$0``P*@!`<"H`0(!]`'T`*0&B:_B,A#MK0HB
-M;9G7(:&'^&,N(",@`````0```)PD``"`=3DD*ZU>_>;'T;04X'2\/NU9F3_M:)
-M<A+9@$7HAR9MSWI5`,D`T.\^DR7D\@JZ[DHDN[ZN'O?60F+%II9D/_J(3P$%
-MD-B'$BY[#`/]S]43>B"Q at KG1\D5HGC<]GF5?BGU6[TFN=3D\;4E0A$<RI$R(MR
-MC/MR;)S1H1^(*Q>VTTH2MT8A\PD`'`$``!P!```"````10`!&%$A``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z:_B,A#MK0HB;9G7(:&'^&,N("0(`````@```/PA
-M``#@I6,V/B]7G/SV!U[:DD89M-`VS@$B_P*UB=3DD1Z^K?R"=3DF]=3D4%)52SCKP+
-MD1.$$"BVB/6KACMGI8FET"CG3QK+]%:^GTQ5W;H])]$G at 8]U]O$L"[&^RHA;
-M-N7#.0:03Q5CZ)1;C^L[8Z]Z#)CJ9V=3DFX*6-F(L*JE`]<`=3DBD4`%*1=3DPL>P)
-M3E\#%\;"PT#@6<L7,(^A*CI;$;=3D8AH+P5A;ZO/Q)-1[SFX(:&#6?LQR:U%<)
-M(X]X]2)<@JF*^HQGE<KRVM##_'J%C6$`UX*?#+(>Z!K_CJ]?1'"O?6X^WDH2
-MMT9:_ at D`_````/P````"````10``^%$B``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR:_B,A#MK0HB;9G7(:&'^&,N("0(`````P```-PA``#`(D]3$/A#YS+;C1[;
-M!W;X[7),2ZL[52`_SEZY)+H8!Q(:, at J;/$U_!+6TR-WULO!J4E"XSTH(VQ1"
-M:/\<S*7?$F$687!0,:A-M%VNZ6`H5YS6F9!_`U`:I`NW_^0/7WK34^@0^;OL
-MZ)"2L2>NGNDD79+JHGOW:>B=3DL/,$"54\0&0>I7`'V9\(PV1<?TXNZ)CV^5R,
-M%<-C0]99AO-`<K!DBUVKT\S(VRZUL8F?>61NSZ[NEM at Z*$$UJ>/HO9-*$K=3D&
-MYP@*`&P```!L`````@```$4``&A1(P``0!$``,"H`0'`J`$"`?0!]`!4!CFO
-MXC(0[:T*(FV9UR&AA_AC+B`D(`````(```!,*0``,+B:RKNMD;$^GI4_4)U/
-M7_1]4Z);=3D1\->,,/4;[-TIT;(E=3D'OPF_!-/2O3/N2A*W1M,C"@!L````;```
-M``(```!%``!H420``$`1``#`J`$!P*@!`@'T`?0`5`8YK^(R$.VM"B)MF=3D<A
-MH8?X8RX@)"`````#````3"D``#"GQ\8-M>@\"25PR:Z863_&%_Y%85Z*C,V:
-M6F+M:@66,J?'Z0`>4#55\LX=3DK$H2MT9N/@H`/`$``#P!```"````10`!.%$E
-M``!`$0``P*@!`<"H`0(!]`'T`20'":_B,A#MK0HB;9G7(:&'^&,N("0(````
-M!````1PA``$`:(VU^(N]'D3B\]!63@=3D807D5EFV7.-`G=3D?[O"NZ=3D+L^(8[79
-M203N4E4U^W@;,%,W#LSI2[F%CQXMWP8=3DR_"Z(=3DL+G/F/'\VG!JZ2P"<E:RH:
-MM$T&(H#8T33O"2M;3?R$-0&ROP%)XW$VI"T/M72Q0!?:UF\X,J`D*$,5QK=3D:
-M%4&Z,E`[9J"8J%5U4*`E*ZS&WD=3D!-`XGV$S_54C:7-+.6I=3D*0%@?7&C+B</(
-M"<TK`IR<.7!\MF%G@%(V?9R`A(:U=3D,I.J=3D+^-RY23./,!<C>4_ASPD@,I>(]
-M?M%CD<!_6^5R':V$T-KVY9%N4 at U#YV_H)@"VY1GMFS3`BGS82A*W1I-*"@`<
-M`0``'`$```(```!%``$8428``$`1``#`J`$!P*@!`@'T`?0!!`?IK^(R$.VM
-M"B)MF=3D<AH8?X8RX@)`@````%````_"$``.!GZ$UN9*&J,8K?]OS at 7PY_6[$=3D
-M:Q![>B40N*RE09OY/#+"FF5KY^"IW[M.4@>=3DEONT3LD%F93E>)]GV<H4G3SR
-MZ_<XN(M0X)\2`^,XD/_!77GD?1I.9R>7,YPU_TDN'/?&LO8!)U(/:_<1'VYF
-MKI]#[NB,NU5;[6PAWC&E"L;Z(]?.5$"Z#F\Y?/OGKM&FH#Y-4D+-G[K`C<1^
-MC_%2?><1LOCW$4/;1,</_"%!MB&028^U&6BBFX4P`MY=3D.VU,"I?@O8YKG#JU
-M4A[T<3,(3=3D"5-L.Y?*]/2X73QT,U2A*W1E1;"@#L````[`````(```!%``#H
-M42<``$`1``#`J`$!P*@!`@'T`?0`U`:YK^(R$.VM"B)MF=3D<AH8?X8RX@)"``
-M```$````S"$``+##!9>"LBZS)EL32`:3=3DIZ#/'-&AAD295ES/7:>U3,#WDL]
-MG:BUXUQ$74W_YCAEF%=3D4=3DI)_2S6"*7*AZ(X$A0Y.MZJ<S/(22W_7KR8!W0X(
-MY^W;_%_..;/?H]PD;+/-R9M/KD+^N0L<;Q*(U&@-7-R at 7ECFZ?NU5\A[HIP'
-M;DA/_'BWA3)*QRQ<$WI)=3DH)YR6KJ(=3DSI'X]4G`K4]87(&L,+OF?"NUSF2MR.
-M<!NZ2A*W1OI]"@#L````[`````(```!%``#H42H``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YK^(R$.VM"B)MF=3D<AH8?X8RX@)"`````%````S"$``+"'B>\6+VI?
-M5XBNK:T.^?:0EDO0F'H9=3D3,ZIX`9;3?A!(J7L0.*I.'$HZTTA=3DE_!3`G+"3Y
-M_<5H(^^(RC'`FO$-#0R1F&5;"_'N5H*YAYR&HA;%A(_2VUN;N]B!KL1&G-Y_
-MR!G\"AI&A4/\QAV.F30+YQ27,:;2GW^S_=3D-!7Y)(_+H5L#S_X-AJZD^Z9^/L
-M\WQCRZ;?AR,3G+KF-X at 2F-3D*?!O]R&4B!L&*7&,2A*W1AB<"@`\`0``/`$`
-M``(```!%``$X42L``$`1``#`J`$!P*@!`@'T`?0!)`<)K^(R$.VM"B)MF=3D<A
-MH8?X8RX@)`@````&```!'"$``0";VC`,O`:L"/1%.!\S<Z'X[E/ZY9#LSV1\
-M5\V5'`E@?V/($3KYIM31;@ZO(/<C$L1?-#5(Y@@"Z[^8.T`&1"OFD-I31,<)
-M!(O1\WK`HK2Q`T:UXZ\<11-A_H3K8(@-K/E5V.)(+MP at GCJ*SHW*LZ6X=3D,UE
-M.L@<ES"^O`G0P$TI2HN[GCG2G$*!Y%;DBF>F_W%].=3D/@[N[RU$"*+.$&^K.E
-M#@7P#P5]_3#'O at Z5U7=3D5)^;'AF&.9FR0=3DBW_&(31I.$#X*[EI,X4E5&5M)KD
-MQJ,/PK=3D]#B*^-J\%38NR4W6D$8"L0H1DFDO.KE)2IP+M"[SPRI/UP:V]63YA
-MA\E*$K=3D&TZ<*`!P!```<`0```@```$4``1A1+```0!$``,"H`0'`J`$"`?0!
-M]`$$!^FOXC(0[:T*(FV9UR&AA_AC+B`D"`````<```#\(0``X`.S;529BX:Y
-MPJG&P3?$7D`7[G#5[3Y-V]A=3D#"":C#YG-UT:6+SEY]7B#T>^[[&Q>?=3D[3(AM
-MYASE;E6Q)`ZW]QLKV&GJ^,/]1=3D5/;XE1/E0UV[EB8I]J!-:ROUCG1L&(;A(&
-M)W11R9&0FNH:$)3_6K,=3D#ZMPP4-FAXZNS*%-C.N=3DO,''GSWO5$^6`\/Y"2F^
-MNM:^5T;\2!O(W6[FW?'<LRV$41L)Y,%/QZ/,';];%<A;]X?#BGYD'2`YYV[)
-M)VK^0W%K=3D\EY,V.]0'!DG69%]:^_SH*11%6=3DV/P>T%!*$K=3D&9;<*`.P```#L
-M`````@```$4``.A1+0``0!$``,"H`0'`J`$"`?0!]`#4!KFOXC(0[:T*(FV9
-MUR&AA_AC+B`D(`````8```#,(0``L/:NWST at J.H0N2Z>94W at 1.W?!\-@/>X4
-M#36ZY+KV7'\H2M]*$C28'.^349%-@,2GA9H6JJFBAV_^=3D6H*&I'1E1 at 6D601
-M2&>**T;F'5"ZCE],0N)[8J5Q)KI;'C!7(D1;V:KH7U-#@$%+00-UMJE<W2&%
-M(;&<'6'N.#>187`<J#W?1-7%57E"8?XORU0U#:IH"JUD<[9 at H/><S=3D\,WKFE
-MS*SKD%:,3_930K at V_2A*$K=3D&[=3DD*`.P```#L`````@```$4``.A1+@``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KFOXC(0[:T*(FV9UR&AA_AC+B`D(`````<```#,
-M(0``L+&"A[`V*T,+^_\FKV7</:8J.*ILOWZ$P7%>W*,970@:*SI+/E-<Y[&_
-MZ7,Q/0P1;ML6QXT+<)MSI>FL85>O]MOS`W3T/RPWNEGEVBF"7F?;D]IZI-UW
-M93?4U"]$EY^29HW4UP**@L2DCP8G2/@CW:R@#(++*9$Y0L;'@CLRU(81FW_O
-M0J@,Z_A9D&]0Y(=3DTT')L9;$B`$%])192VEUA'Q!"]5L8ZGML5)991K5*$K=3D&
-MJ``+`(P!``",`0```@```$4``8A1,```0!$``,"H`0'`J`$"`?0!]`%T!UFO
-MXC(0[:T*(FV9UR&AA_AC+B`D"`````@```%L(0`!4.\2`@)^1,M&%K(Y7Q)J
-M?E&^SBZ:]2#6D?[XV?V%@$))J^#*PAT40/Y#*P%($@W/!L'")%;(M",Z";6:
-M(\<E#[JF<J`Q;G#\F??5:Y&?1(5YW&V'^D?:Q-1\0*2M+&SC_>"E4/2RJ?07
-M.!@D<#H'Y&;@),65\UUJPU6$SJ)42F1IR4Q-(DZL7PT=3DE(;-LUR$0-VB^P]H
-MK305,<PE04D0FGJ!HR-L<@R&A,O%BG\]&PW6!W[7_:"?L%H,+0>E>AYU=3DLZY
-MW)29[M9'#]Z%.CR3@'P>,9(U.EC:E9\V`YOV.4;0A0>C*8%A at FOX7-UFE:#R
-MK&0%-L%&]/DL5;>;B[GKZ)V\/VPC:F$GN-QG$=3DA!OG#=3DQS^H,MJ^T)?ZL1]6
-MX)O*I=3D&NB>X]AX5G2YO]/S!7E?C"6NS``'DA0#Y]&8`L5U]0E!%Z;OG0U[WO
-M]1L`2A*W1A at V"P!<`0``7`$```(```!%``%843$``$`1``#`J`$!P*@!`@'T
-M`?0!1`<IK^(R$.VM"B)MF=3D<AH8?X8RX@)"`````(```!/"$``2!+?</LK2EF
-MEP]6;"G#GIP$!K7#4+9CAZWM$K8PP*1H___%6B71Z:KX39Y@[9=3D.C\XI29*K
-M_M>YD?>1NBZ<S'\CD]S!9A?K$S49!JQ&(W'^N#6P#A8'L\((,1<D!<"W859+
-ML41+]9:4J?;HWI*24>V2()^:$Q.,^EI[S]Q45?2 at U@RZ$HLSIEC_$!]BY"7Z
-M$>TY[*8U>?+]0?!W`2R=3D:*;-YL'6N^N("[1C^ZF.B*6R!D/LH8`>:$X`%V%3
-M04CNT0.[>9++<)Z=3DOR+_Y"HQ7&]-I!M6<HEC$A*[%U@,.1^'H)SH-Q`V*0^M
-M2W=3D:&^'0MX$O*,@[]4B3`\(F!5P>)ZI*GF;68]&609?!+3%[;D-,XTO.5R10
-MUY+MB>.?1DH2MT;X70L`?````'P````"````10``>%$R``!`$0``P*@!`<"H
-M`0(!]`'T`&0&243TBIF4P0^?D?4?P5T(@!(N("4(`````````%PJ``!`O^'`
-ME>$5]!`L.\U0!:>&TC7;,LL-]CW+!6I7RH(87X)S-(0;JNKU$X3`)F(%CL,-
-M597RQ($OD>A1\ORM2A*W1IAI"P!L````;`````(```!%``!H43,``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y1/2*F93!#Y^1]1_!70B`$BX@)2``````````3```
-M`#"*N]B,X!9S5UT3HK:\"&SJ!]8)/@=3D+7\$7"-$[5>/F7EWOYARE;7H+P8EV
-M0TH2MT9M>`L`;````&P````"````10``:%$T``!`$0``P*@!`<"H`0(!]`'T
-M`%0&.43TBIF4P0^?D?4?P5T(@!(N("4(`````0```$PJ```P\(;:BQ.'SO:;
-M!:^?W*T'')J[Y0,:W5#>D4G,>-=3DT'ST/%&D]#-X<`4^\)7=3D*$K=3D&R84+`&P`
-M``!L`````@```$4``&A1-0``0!$``,"H`0'`J`$"`?0!]`!4!CE$](J9E,$/
-MGY'U'\%=3D"(`2+B`E(`````$```!,````,$3#-KU:\D9M+)?<@7:<=3DZI8QL;:
-MB!OF)?]7B?7+>:+,&^;+]YGH)JW';\*>2A*W1H:!#`"8`0``F`$```(```!%
-M``&4438``$`1``#`J`$!P*@!`@'T`?0!@`=3DE<7$!&0\.=3DET``````````"$@
-M(@@````````!>"((`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``&+I*MDBO5HA,E"$)--^_[!^!#G&:TK:K"3F;Z@@(/-]AT>*QL_:Q<%P,
-M&HN)A,1K`#HCGM4WZ.M&JRDJ at 3[W-A8NM3FWY[=3DB&8H;UHV<ZO.&S:[G&&SS
-MO\,8LT0+3:N1Y[,\Q*8&/SRRR30.R_BH>W*A5V1']+FDW1W at O+2KWP$I```D
-M9%!E?UB$R:FYA$C5 at K-A!+Z62I8:6I!A;,<$3R<[AX,I```<``!`!*[QT97^
-M at V!65=3D<6HI`33SI60TBI````'```0`6Q4)P0!J97"1W<VQ,/:G9P5P8<*TH2
-MMT8GD`P`7````%P````"````10``6%$W``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*7%Q`1D/#G9=3D```````````I("(@`````````#P````@``!`!@````'AW.,Y
-M'FPS[CQ!+\^L#R$1-KQ[G$H2MT;"H`P`N`$``+@!```"````10`!M%$X``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A7%Q`1D/#G9=3D```````````I("((````````
-M`9 at A```@``!`!@````'AW.,Y'FPS[CQ!+\^L#R$1-KQ[G"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``&+I*MDBO5HA,E"$)--^_[!^!
-M#G&:TK:K"3F;Z@@(/-]AT>*QL_:Q<%P,&HN)A,1K`#HCGM4WZ.M&JRDJ at 3[W
-M-A8NM3FWY[=3DB&8H;UHV<ZO.&S:[G&&SSO\,8LT0+3:N1Y[,\Q*8&/SRRR30.
-MR_BH>W*A5V1']+FDW1W at O+2KWP$I```D9%!E?UB$R:FYA$C5 at K-A!+Z62I8:
-M6I!A;,<$3R<[AX,I```<``!`!*[QT97^@V!65=3D<6HI`33SI60TBI````'```
-M0`6Q4)P0!J97"1W<VQ,/:G9P5P8<*TH2MT8OQ0P`4`$``%`!```"````10`!
-M3%$Y``!`$0``P*@!`<"H`0(!]`'T`3@''7%Q`1D/#G9=3DKWV6>,N(I&8A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(```6/ODOZ_/)[\>FVL8UZ8FSICMZ$TVN at DF"M
-M^C!M26;)B$OR2%#7[.^XRH.Z#*3LI?2E%D3OL2\!E\H94-IV<L;K)I*P3)N:
-M6&)4C%,9&8"T?8XK];\I7\*?<B[)>AQP7+%Z@;*UOH6:7[:=3D>0%+D-[.V:(:
-MJ?@>Y6J=3D%9ZL'`64*0``)`A=3DUIG'1Y8\Q4&HH4=3DJL%<(?XJ<//&B"MVP.XMU
-MJ&=3DV*0``'```0`1F=3DS'R'_?U#;(S48L1EFA7I(0&\P```!P``$`%6)ZX*H$:
-M*S9#;>:-0M,9$4A^@/]*$K=3D&0_@,``P!```,`0```@```$4``0A1.@``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]EQ<0$9#PYV7:]]EGC+B*1F+B`C"`````$```#L
-M(P``T.D9!=3DY:1*!K"P5HE4%<@JX/L=3D173%AH0`KBR)R;76X at I&BF51A*K8"T
-M:`XU^, at KS*34E)$F`985::6]93LKKYF])QN?MEB&,!4-)7F`H%%E<Q]1&9KW
-M$"I2)Z[OH06FN1T>;MHMB=3D&:3(AE\R*MB:;-QKD0,%(&2/J!V;+V;&1X4-X;
-M4"3,`UHCKTN_9,.HK8B(Q at 2V",5'=3DX=3D)O"/SEL#I&@_JPC,FD=3DG^BGBH9O at 0
-M+#5BM?$^4?OX"N^$G`A+XS6%W+A>_$0,OKFE-TH2MT8Y$@T`O````+P````"
-M````10``N%$[``!`$0``P*@!`<"H`0(!]`'T`*0&B7%Q`1D/#G9=3DKWV6>,N(
-MI&8N(",@`````0```)PD``"`?DNK8,0ND;3!PSXVB8BQ;G/IU5E[$@P6G]%M
-M:SD#SM_+V]KDJ?F_&X881"A6SW)LSF$_(0*L0C%H1G,LO0*"`[J7CZ&)\'[[
-M\0)(J-Q=3D7H?146/)J/=3D^*%09KEA^[5=3D8S,BE2^(!$+\*#C!F+B-X[%9V**M'
-M;H_7/[R_>$H2MT;`,`T`'`$``!P!```"````10`!&%$\``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z7%Q`1D/#G9=3DKWV6>,N(I&8N("0(`````@```/PA``#@Q at 7,
-M^W@%.PP-2 at Y?&?['Z at VTJ"`0$*V]1G"(8&A at 095-RD>O48)6>O&0>.DURXL5
-ME&T6MHE*4R6T<F`/[#"?>9(MCQ_J[WW,XW_:2/.8SR\49*XF>P&"'KB]^]DT
-M\%N7.RT9F(IJ)C/&(%G;#*G`%U^Y\3W#!J+7(.S*?I^E#P4MA)LZ6/EEG0#C
-M#"&SVV32STR<,]$LQQ)_\T4 at 4,S%*'XC`)_Q3$]ZW5`K]&+VV2#&ZOUBRV*:
-M"D&2*H0>B?-E.GP*&LO*!1T#.)I3I"",Q)$WXX&."LPJLNX9J4H2MT99/`T`
-M_````/P````"````10``^%$]``!`$0``P*@!`<"H`0(!]`'T`.0&R7%Q`1D/
-M#G9=3DKWV6>,N(I&8N("0(`````P```-PA``#`EX;T,7+K)PQWRUV<JP>]AN*)
-M5%372:A`[>[;!"7N17S:<&?N'47=3DPUT#'1KMYPO0SB^!N__0VK^>5#%34*[I
-M?A"*5P8F(J+[(JET"[L*5I3?56C(S9^D-9>GP'(,\89-8GXH:/]J>]?/7E?X
-MF^26],/AS1'5$F^&JOPG!1"6>9&]>7L8II6FS7A?U!E;%&-%@5["<TKSMZZ`
-M:%K1%_`1\!C8F,BI<.N+[WQFREM"#\=3DZI#R0&#-I[QNGXO]*$K=3D&RT at -`&P`
-M``!L`````@```$4``&A10```0!$``,"H`0'`J`$"`?0!]`!4!CEQ<0$9#PYV
-M7:]]EGC+B*1F+B`D(`````(```!,*0``,,*],&*]7+"DP1JDYB^^X:ZNGZC^
-MC at HYCB6OHGSUI<8)0T6H%B.9*X8N-OE_2A*W1FQD#0!L````;`````(```!%
-M``!H44$``$`1``#`J`$!P*@!`@'T`?0`5`8Y<7$!&0\.=3DEVO?99XRXBD9BX@
-M)"`````#````3"D``#`WZ_0ZWLQ]V2$/8%Q4=3D!BS:8).EBMIJ?QBLZ@:Y/6W
-MP]"XLF;5.6M;Q^L37DH2MT8/@`T`/`$``#P!```"````10`!.%%"``!`$0``
-MP*@!`<"H`0(!]`'T`20'"7%Q`1D/#G9=3DKWV6>,N(I&8N("0(````!````1PA
-M``$`CG73XMG`\T@;8.UKHNJ3^@/[V1W>=3D^L"0GDBJ)58`S5'N&-M*]R^Z!2/
-M:"M%"":WU(T;2G4)XP?#@%280'IF^)@Q4/W_]+9'80.%R;Y(G9BYH8=3D_B7;;
-M&;V1P=3DCNE0H^UU5]N(:OV\`1P)@)',L>BA79Y&E)B'9^QVO5N6-3H$257N[8
-M`JN3,&8P=3DE06EK7S2`,2-OI[@6)85??%HY.D[V!L!?CP_W0L29A!3:A11^J;
-M9!2+S;@FU!`EUTYK^:BA;+B`?%'WH?+F<AE84])B'?NP'1AV"!R#HQHQ"]!/
-M5U_!7R,8LK<UET at Z0=3D6-6;@A&9S:0"R`&<$F;SFS2A*W1MZ+#0`<`0``'`$`
-M``(```!%``$844,``$`1``#`J`$!P*@!`@'T`?0!!`?I<7$!&0\.=3DEVO?99X
-MRXBD9BX@)`@````%````_"$``.#M*T@!OO$B<2+$"G/'I!K<II!KN$"+$(X!
-M/GPKND+W/I[^\E`XK[(VP=3DZRXC0OUU"A>9'""X,,*+#"ED!%97GR4-XG$FY3
-MYA-&8(:4Z^?(\1$%,QH0%-T8B-,]O/BE"KK. at 9".#!H/S:YH3+&'R;_O6J]=3D
-MH#$PX]_#>Y0/;N at AUX'[;G?(5LC^K^@(V&CN%^'[%],Z+7`>Z^LYXQ"9%I(!
-M</&!-6>330U2_FK<1<^PVHIP5S6>!=3DP*?:`'TZH7V<#3,Q_[]P#`DHQ*TH$R
-MN>J;LA at 16O=3D'@'@-0PHN2A*W1E&;#0#L````[`````(```!%``#H440``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y<7$!&0\.=3DEVO?99XRXBD9BX@)"`````$````
-MS"$``+!OK]]`5!CE;/1?B at ZS]$8HS>T1&:B,V.WRS+Q#*F-U+N6Z5\'`Y"""
-M!*, at 1?/*1BT>LA758,^JM*66RK!",A96+$BVZGMI,A$$H<]5.:[A<RLQN9F$
-M!NM/0 at Y!`XGJQ at L#\>\S^H-6^3^=3D0P(+?NA_O[2);'8(::]=3D9N332/5YL)?N
-MM+'>09)Y[29T+/SS$F1 at YA#N;X5+`NYG[$5A at -A[:ZNC:29]],SYXF5&2A*W
-M1 at B_#0#L````[`````(```!%``#H444``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M<7$!&0\.=3DEVO?99XRXBD9BX@)"`````%````S"$``+#XH10<KD!'G?,VR-(2
-M1$J9L.92YO32:%9%FCZ,6S:Z(G(\##GZI'&.PRKE*%_[U&2Y3X=3D']`.1FR8W
-M/[M-YRVR.YK!:U=3D"5%_Y`K01,1<%&;Q,3;$Q*.O-%<]WZ5,I<]^F34:8OZC5
-MY5&(^!E6/#'4-6F2AK`HC`Q`=3D'JMNUSG]H2+.<&$??6+9.^SX6)P:2C$1[N]
-M:8`<6"<A:9J^#!<\X"OL3*F;"DKN=3DCB[2A*W1A?=3D#0`\`0``/`$```(```!%
-M``$X44<``$`1``#`J`$!P*@!`@'T`?0!)`<)<7$!&0\.=3DEVO?99XRXBD9BX@
-M)`@````&```!'"$``0`5QZ2.!>%:/S["X0R^I3#N[0)@"2AC%P+0)B?&A[U@
-M&(M2#L)^(@J'[T$!1"+CVAP+[G?>=3DXWF",9=3DD=3DWLCV2;CR+6`:OWT;'3W?$M
-MK+6)?>P<:SW8G/XKS\!WDGR4BDJP_#H2`,3N)H9?;6":?.\Z(8D-8`61E at QH
-M]/F14UC:OU&D-Q-(:P+:SQ^'HJ6"P4/7"T%E=3DV3'QQ.;SN+/N7-V#DZ3\4TN
-M*=3D-*]WG\#VP"T/O5<V at C.6LZ\TZ"#-LBCHC<\V4<NN`T=3D>1<`]U6-9<#H.>P
-MH)JHR>,\<\T3T<A_^XB1X?``?S\$<"\P.AAL*;&'G`R`*>HUFZVR%Y9*$K=3D&
-M`>D-`!P!```<`0```@```$4``1A12```0!$``,"H`0'`J`$"`?0!]`$$!^EQ
-M<0$9#PYV7:]]EGC+B*1F+B`D"`````<```#\(0``X+XTI+:[=3D3D0\41#?6]"
-M\.P]\`C]OQZ6YT3DK=3D7C%[]+AC.DR4/0XQ%"L<`:.+72WGWP%J0+-.CS/P-2
-M;6=3D1(1W8M6PYPS=3D at D7"V+8F>V?.3T,Q6%B,L"JD,$8B2Z0W->%V6)\P\@2-N
-MAE/WQHUZ_<OM;>E[X^U"/;X36AFW2>Y6;X2B!I_PF$9)%$X*29413D_5OLQE
-MP2W<,J-35MO^U1)@N.>Z-LE[<,N/?^=3DZ@#L]&'IUOR",7W&MA*VD^#RYVB.E
-MUD(NXO;&V.(LI0&*9A"?`4%!)#!J&H#>LS9*$K=3D&S_ at -`.P```#L`````@``
-M`$4``.A120``0!$``,"H`0'`J`$"`?0!]`#4!KEQ<0$9#PYV7:]]EGC+B*1F
-M+B`D(`````8```#,(0``L%:4&4TJ+"B&58`>!<#DXIG"HHEB4K?<\M+^!ZK^
-M!>4>D<2^U,DJ1;L.5!4EOU%6L+_WT)@]3@;BZEX2HR$G$3TFF/N'*_- at AR^W
-M at P^8IO6E'.1^+QB01:,W&&2]7929+][G8$MCVI=3DBIS=3DTU773:"R%^O-%IE&D
-MJWK)%W=3D6O!*NP)\O`(7]$ILT.KI_,>XD*99PL?C<F+TD,KKHK0S4:;?(4D!"
-MFQ80Z<^V!*U*$K=3D&*1P.`.P```#L`````@```$4``.A12@``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KEQ<0$9#PYV7:]]EGC+B*1F+B`D(`````<```#,(0``L+\]
-M%>]%<]=3DO<<V.OE&G;C"N=3D%TWT at 3Y6IR=3DL_.-"+6H[1$#EYMLVF-I;MV70139
-MM`T-[W-=3DF$3#%["?":C*I)P=3D*AQ284("=3DH%;=3DWQCGO$ID[S4P6GJ-ESAO7F#
-M[]]%=3DP&?7!:CA8$9LNHX)\-?4UDHKU:UM=3DI(L8YY*Y0IR<9L4V&M6^8-^PN6
-M>Z at 2\498*8DI;Z0U;"?)P)N-ZY+5B at EQSOGI3ES2A%F].IE*$K=3D&#D(.`(P!
-M``",`0```@```$4``8A12P``0!$``,"H`0'`J`$"`?0!]`%T!UEQ<0$9#PYV
-M7:]]EGC+B*1F+B`D"`````@```%L(0`!4$V]1B]4"H>^F&!V6%>Y1%IW$)\`
-MA8KD#+QS=3D^L<=3D2\EL$@UP+YRDIOMW.SMJ*88DQ"6_\/^.7KJ,L^8LTQ8VA>P
-MIV23!U/%DZTVZ?YW\RWDWEB)*PIVUA-L0T_/%FPQOAN0#8*!.8;*?V>N:OW?
-M\A$AQ=3DO59`!`GK4'3\?,A_N%:1L.4[NM;PG0__8(]>+F5M0?&<2@[WKR87[)
-M\LC"$ZV3M`Q`E>M'M9N/QB;44(ZGW/W8$([Q*+N"7TD;,;P$SUB0KK0ES\<T
-MFK,*<=3D-N'+2*1')FQ9'0'SB5;#)\^`[$>/&VGXIL$R[HNH9DV=3D7/N`.C8RZR
-M%OQY!12UC[.6D?%C6-?OG>7Q#IUUE]96#F46S^Q):_)+BK`]@`,23*>P/D%@
-M&;5)!W/X+B[K1D%M$M]QZV!V<7*_F\\5'K5!,^#0@#7;G->1:1J4IIL92A*W
-M1H=3DV#@!<`0``7`$```(```!%``%844P``$`1``#`J`$!P*@!`@'T`?0!1`<I
-M<7$!&0\.=3DEVO?99XRXBD9BX@)"`````(```!/"$``2`R3<1**.W=3D"W=3DF*/$P
-M&J=3D(K6"I],;,)B_B.J`Z-&J^XHY&9K(W8F['=3D<-,]F:8AOX[5S=3D1L<3'P';U
-MULMNS)[.YL<V,0K at D;0,^=3D5[O^*Y*>2.2:P2/BRPY8X$)]!;EN0K4Z43:Z#G
-M60O!:O!<L?'5$UB\QQKE_0$8[VBZ(KK./$00P*>RZ+/Q:>[TNK5Y!)("[JC2
-MF04W8:_5XZAA=3DMH<SKN`H]3[B&8J#?^B%KY]Y1$L$XYZ8NR4)O3&;SZH5ERR
-M4'1](N?K'][C,;N<07G]81?1T^,&!!NJADT6:R5)C`"690J9&,`$-]Q/'J47
-M>Y>:ZD/6J')PLWC1Y:.[?P>&3NMCRMZTVG*(+N3CIQQ91VPC.?KQ;0Q6&>4<
-MZ$H2MT9"G0X`?````'P````"````10``>%%-``!`$0``P*@!`<"H`0(!]`'T
-M`&0&29]:9>_.<]:LL0138`>".\LN("4(`````````%PJ``!`TZWM8QKG*3ZX
-M*;\[+/]?B?VWJTO#JCO!.<(X)@9F`4R>:>B-H98450`]M!N#NT?<S)"A4F#U
-M3S1JX!0I2A*W1N&I#@!L````;`````(```!%``!H44X``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YGUIE[\YSUJRQ!%-@!X([RRX@)2``````````3````#!KYLI6
-M&UD(/F[R0!*:JZL)B@(5@"PCF62FZI591#FJ%!*ZG\XAZ^0>HFND74H2MT9P
-MN`X`;````&P````"````10``:%%/``!`$0``P*@!`<"H`0(!]`'T`%0&.9]:
-M9>_.<]:LL0138`>".\LN("4(`````0```$PJ```P>.N9^'UE7!4Z%G?GE(SG
-MAZD,J^SX5]^BTH#21S!#<G+A,^PPM'>`NSO5L/-*$K=3D&M<4.`&P```!L````
-M`@```$4``&A14```0!$``,"H`0'`J`$"`?0!]`!4!CF?6F7OSG/6K+$$4V`'
-M at CO++B`E(`````$```!,````,)3.8X\\S1T)QIE2[5\R5',\Z,XM*\M.9]A)
-M'5URRK:D+`BXZP'M>X")O7]_2Q*W1NI_``"8`0``F`$```(```!%``&445$`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE9?7)!26@";D``````````"$@(@@`````
-M```!>"()`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``:QZW
-M)>H, at F+ZX%@;"/5JBWUH]G4.I0\<;%^$FKVDE_VGLF1WZ-&Y*#JYJ?9*7/24
-M\ZT\2K7J>5\TC`YA7TXZD!J1YK<?V at ZCF`SO*/OG2:LOOE66(J]%-1A[%>\*
-MK*PXGD.!XA;"\W2B\1*-WW=3DZ4>/332\R$`/"/W2'9^1R<$,I```DBE6\MN&T
-M:+&X<F<V,4W(7;Q$3G+KI'T"[0XP<<[N=3D+$I```<``!`!)[%3D[^343+&CV#
-MC>MBD1F\$"-!````'```0`4_F;_>J[+*-"R`#VQ/`5RA&7I=3DTDL2MT:/C@``
-M7````%P````"````10``6%%2``!`$0``P*@!`<"H`0(!]`'T`$0&*67UR04E
-MH`FY```````````I("(@`````````#P````@``!`!@````$FP6_%4_<]Q6(Z
-MHICL6DD$.6/?Y4L2MT9=3DG@``N`$``+@!```"````10`!M%%3``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A67UR04EH`FY```````````I("((`````````9 at A```@
-M``!`!@````$FP6_%4_<]Q6(ZHICL6DD$.6/?Y2(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``:QZW)>H, at F+ZX%@;"/5JBWUH]G4.I0\<
-M;%^$FKVDE_VGLF1WZ-&Y*#JYJ?9*7/24\ZT\2K7J>5\TC`YA7TXZD!J1YK<?
-MV at ZCF`SO*/OG2:LOOE66(J]%-1A[%>\*K*PXGD.!XA;"\W2B\1*-WW=3DZ4>/3
-M32\R$`/"/W2'9^1R<$,I```DBE6\MN&T:+&X<F<V,4W(7;Q$3G+KI'T"[0XP
-M<<[N=3D+$I```<``!`!)[%3D[^343+&CV#C>MBD1F\$"-!````'```0`4_F;_>
-MJ[+*-"R`#VQ/`5RA&7I=3DTDL2MT:&P@``4`$``%`!```"````10`!3%%4``!`
-M$0``P*@!`<"H`0(!]`'T`3@''67UR04EH`FY_);F8_SJ%I<A("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``(G.T."M(#+?Y@;H7^-5YZ>H4MD=3D-^53"`AAO'O>I&8H
-M:>_I1$CU]L4>5E.2?\F1TA:QQ?C_M0/9>=3D(L7/."$7K1G7Z.-_A;[;G*?5:A
-M-F+=3D:A":%F'/IA+=3DK?>;Y97=3DPE[L32;!8H+S.><VVW,=3DF'H[Z?-L)EWDC@]>
-M#^M4&90(*0``)([0:#E_[/R*+XL&U)&M=3D<*?FE$AAI;:H.9!7"9[%C$S*0``
-M'```0`0?YPB!!'FF2^D(3 at H@YX"[D5^>2P```!P``$`%JJ+IRTL`FJ+;B#LS
-MS!\_X<$J`XM+$K=3D&6>\```P!```,`0```@```$4``0A150``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]EE]<D%):`)N?R6YF/\ZA:7+B`C"`````$```#L(P``T/0_
-M@`%!3W32'AI8(9EZTK^`N7J9I+[[<C_HHY(JG$98/+I)&OX5C:\W3L=3DZAYOT
-MR%]$>!)"[$"V4BSQ3U&D.]OCMMESP]ZZD>$69?5@`?'YS#S_ZO"5<KFX@&O!
-M.O/E2`Q09./2=3DW59OTZ'Y0:!&@?"@FW+&0HVB.GF`T4_&LJE.NK=3D*#LD0J3Q
-M%`:!FSS.F,8M?E%E[TL0#SM/>DAG,KH at -U5NY^\58B]>XIV:SH0QTO]>3<#-
-MISME>!WDW?\T%/(?N,NW?[]R&F\0<DL2MT8*"0$`O````+P````"````10``
-MN%%6``!`$0``P*@!`<"H`0(!]`'T`*0&B67UR04EH`FY_);F8_SJ%I<N(",@
-M`````0```)PD``"`<H_4UO^H-O)N+7HX/(ZR>_=3DHWRT+D-W.IYJ4V['F8BH[
-MI:IHG<K6]MJ/<CI*]$^43;@NN>I]\CWMTWL4^E=3DZ.O$,ASLUI'4I&4H/=3D$`!
-M%OF_+FXO,!EXK=3D]4")[K%,&*V;QDA.8LQAFY8DQT!@EP&T+E$ZG/R55H;E8W
-MSDL2MT:(*`$`'`$``!P!```"````10`!&%%7``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z67UR04EH`FY_);F8_SJ%I<N("0(`````@```/PA``#@_*Z at 0%/S^%%E
-MF,:]CK>(ID9`J?C91MC,75[.V\ZJ1:A07I5!Z/2-1"_7D`A3YC&I:%!BI2[L
-M*EY+%XBLYK-".9753YB*O[&'5VI.X*IYE87/"I'E>(VRM#)+E*!X=3D7V'W52%
-M'T$?.HT'1E^1/$<NY_H!P7O/X;BDF:?/Q3_&.<-L*<]^B!E&/A<'F`B8/:I>
-M;(DH2:4=3D96,R_H$G\AM\3;YU/4#@AGXUYP=3D8##&VN'I:<^.R)@!@!PPEH'9K
-M(48P5]/L9_=3D at 6JB.#/'S'(SA"-CZ9[ZK'>@?C"6,Q4L2MT9H,P$`_````/P`
-M```"````10``^%%8``!`$0``P*@!`<"H`0(!]`'T`.0&R67UR04EH`FY_);F
-M8_SJ%I<N("0(`````P```-PA``#`YA^0P<'VI`"X*.L#YAWG1`<=3D(W8Q&\#]
-MTD=3DTJ-!J42M'E>]RR!6N&4K!H4#Z$SBH!=3D]G#.19^[2`GWOM0.\FAPO,W\+C
-M=3D=3D:<$7=3D$];FE$9+IW_QF2?CCN4=3D38?35/<+=3DL45TZ\33L=3D6&8,NGU3*\9;(%
-M^54L*+PU5=3D9K&33T2E,1,1<17;;]?SK/[0CJ;6-VVEBX?3`;.)*MR\!6)'*:
-MQ@?-8%]AF'=3D_**YD:I5T8+L,/M4"^.C-K*X67CQ+$K=3D&,3X!`&P```!L````
-M`@```$4``&A160``0!$``,"H`0'`J`$"`?0!]`!4!CEE]<D%):`)N?R6YF/\
-MZA:7+B`D(`````(```!,*0``,)J3T8J5YO$+#,G0?BAR:%7?QHA33:*I*=3DU#
-MVXO2#&J?!CU58J_S2D0LEJ&Q2Q*W1FU9`0!L````;`````(```!%``!H45H`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y9?7)!26@";G\EN9C_.H6ERX@)"`````#
-M````3"D``##_'IV@&_2."K)U)UB>5$*``%/GL><PZVTAU*(")M+[A\<J>AI=3D
-MO+6NSZT[SDL2MT9"=3D`$`/`$``#P!```"````10`!.%%;``!`$0``P*@!`<"H
-M`0(!]`'T`20'"67UR04EH`FY_);F8_SJ%I<N("0(````!````1PA``$`0A^]
-M)^Z6?O*!6AZ&,E:;*":4KW4MLJO`,VW at HB3)++!5309DN_Y=3DM]J4MN(5I(1&
-MM55G],DHK=3D5Z\-CQ9/Z&P9\:[^,EUBE7['@R7SV4D[=3D#^2XJBN%NN"(V-!B(
-M.Z_@@=3D4CF4QV`S&[UX+TH!@^Q$3:N._>U%]LYR=3D/]IK.JZ`1 at 4B)*+_=3D$LYO
-M#L!2F9K`!K_DM-G4&R>5\;"6!H(+?Z)A5A9A-95^7^J@'+*DJ&XW[\L&O)>Z
-M_VJB-TX,B2L,YP=3D+S^Q7LXZ+BJ+,R at D3A"B>4]Q4HW<NYZO=3DV\;1.!\G,?CT
-MT(.U6G=3D^A@\F<\C/SY19[_E<WN$BA,A^2Q*W1D^``0`<`0``'`$```(```!%
-M``$845X``$`1``#`J`$!P*@!`@'T`?0!!`?I9?7)!26@";G\EN9C_.H6ERX@
-M)`@````%````_"$``."_Q*:G^2H`A1(J6PB'DYR;),K`CC:E:F*`%\W#"3=3D=3D
-MM=3D4W@:\1B4C9DQA2^'+C_G=3D-%@"#<8:4,!GEX-'(<+?H3XMY:%K"/C4YAQD(
-M at _U9@\^!0!2CP'RN-&8#5P`2\#@Q\JU"-4:-KZD/E[6C<0Z:#J.*0F at AU7R[
-M$?"[DI`9J27F][L>?S1$*MW\D7O$3HP/8`&N'N6[Y]=3D1.4W-A^BWXSDMR=3D.!
-M6=3DRQU=3D/%>VYX9^:V1SRUT_^YQ2J!46HG/PYL6]RV#<,;LG&@X:<$/.MJZ^%J
-M4U:$I>:4D1),2Q*W1HV/`0#L````[`````(```!%``#H45\``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y9?7)!26@";G\EN9C_.H6ERX@)"`````$````S"$``+`^
-M-)31A,ZZIBR=3D6S1S6R1M#X0HYFROEQ\[6=3D?N-F1?;UGVP]-;LQ8=3D-NK4]3*C
-MK8>!S\]U&ZK+R^(VJ[@&JP9+.(6ZKX5(N/'W%V99?])*5Z9??(B[$(X5:N$O
-ML#K at _W>1A57??)JX\K)?Y).J6:*4%7_)*3OH8SQ;]^"W(T5J8LW/*E:P&F#]
-MJUL)F;HH1LE_R)ZUBSI"6")_+&]=3DBX%3WG,+$'8%?T`OXHYR2Q*W1DVR`0#L
-M````[`````(```!%``#H46```$`1``#`J`$!P*@!`@'T`?0`U`:Y9?7)!26@
-M";G\EN9C_.H6ERX@)"`````%````S"$``+#R+J1CN`[[?-R*@9H7TIO>3,\J
-M<)%SE2T4!F'P+O70 at T2ZS)C8BA\!@$=3D9A?)*U=3D&K`?A6@\_U#'1JG29:0^HP
-M:!Z:.D05(87:0X7 at 6+/-GI3`4$MI&HR]\+P,2PK08-Q7$8&\K$FOQ<-2#3)Q
-M"CBN'H(0O<OWG<!`1D4)]TI>D6@#"Q,0'%+Z[SA^C'GGST]L$M__OUX_!BI7
-M6_6_R)F+UNX][2(\E3S=3D%L"U2Q*W1A'/`0`\`0``/`$```(```!%``$X46$`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)9?7)!26@";G\EN9C_.H6ERX@)`@````&
-M```!'"$``0!ERS_G'KNIY2AA+L('L%J+6\!`T6]2<GJOE#H*,IFPAYX17Z1I
-MY/[.Z/,?R<$?O"D;$_\RI9,YK*RZ!*F^)`/[*?RSW"/=3D'V&93A,/F),+P'?7
-MWL0:AS(76^7P&.KDO4>E=3D1BB5U]:)4<.C\8M5?0G+AZ`GH$N!H7R!P521)'S
-MKV-0Y*&\RY0"+(\I]P%TKO1TW=3DL)MX_(EU>H/$$X2_^,5IZ*R_/$S'[2L=3D%G
-M&.Y*(\,+1Q#XX0;_<8QPR80T9EE*7P]N1$=3D"D^[QA5G`5%P)5B&NP%;VGM'A
-M2JW7KB%)?0M!N?.3R8MI4=3D'1ZZQ7X$5ST1Z>8(OY/,*-#B)+$K=3D&(-P!`!P!
-M```<`0```@```$4``1A18@``0!$``,"H`0'`J`$"`?0!]`$$!^EE]<D%):`)
-MN?R6YF/\ZA:7+B`D"`````<```#\(0``X*ER>]!!-$B5_B\;M?5>#,B.\&,3
-M28X9A7T@\9/^!]-`F1=3D:[O7(8F_CY6?9XDHOFCUW"IP?+S[F,O`BN7U7((ZR
-MV.ZF+HKY3:G6K:>XR5+H**MTK/T6"F.]O"S>#GAND;P^Q0PQYNB*D_7;>!UF
-M'E!EN>_%:(F=3DV>7MP`-\.%Z#X=3D?W$$]I.=3D`*(=3D5!/J4'^(69$EC at Y,>0S(0%
-M:Z[<]OC'&;?14`(<ZLT_=3DDZXF4_EXA>!&^Y8$Z4!W12WLAY#:J!AT7I at N(XR
-MPU()7YSA,*&]O>AQ!-M$&"MO3.)+$K=3D&G^L!`.P```#L`````@```$4``.A1
-M8P``0!$``,"H`0'`J`$"`?0!]`#4!KEE]<D%):`)N?R6YF/\ZA:7+B`D(```
-M``8```#,(0``L#@'!&`HY090W1ZKKC](A=3D<?7:G9\=3DB""Q+T*K=3D[R\_V4CGV
-MD1T*92Y?]W.7[+HOF5J6.MB%(N7WS`9$U,#%OK1\6>\H`Q/+0[G\/ZU9&FT$
-M35CU^"0"3'EQHU]KVT4EA at 2XA/U+0H$+;.NF2D%^*ZV:$B7>>SBR9\`42;,E
-M68C8UX."'@QV\1-JEP['<8NN0.?,(.Q6[Z01*8Q$K-.\L_G>I`U9\5#U^D6R
-M351+$K=3D&C at X"`.P```#L`````@```$4``.A19```0!$``,"H`0'`J`$"`?0!
-M]`#4!KEE]<D%):`)N?R6YF/\ZA:7+B`D(`````<```#,(0``L(\`WX[-L>M.
-MY$D%'*L9S5++YJC6Q^?7$D,Z9K+C$-(&PH3[?E%A>WY14/)ZG\\8?0)\$7\[
-M[O>?U+V>(U?(12;3"R0J&H])"2;<"T2A7OCX=3D5HG`;2\=3DGQ$-N6302%4RK_H
-M,(VBJ4P5/(,L&XC[?B^Z7F(7Z%5)9Y^79VX:KGT1/`H]JBG3>(`U$0;AOV;^
-MQXY%-/'[I\/<<$T[-Z3XKVJK9.?;\9.H[\V2H:!+$K=3D&+S0"`(P!``",`0``
-M`@```$4``8A190``0!$``,"H`0'`J`$"`?0!]`%T!UEE]<D%):`)N?R6YF/\
-MZA:7+B`D"`````@```%L(0`!4.>68\I+Y::U[/M!HAMOT>",B4<P.#!A.=3D8.
-MN%XTSZ%E!ZQEHC:IKH[T')759FJ1`!Z>A[OF^2YU\EXJ<=3DAG1FXN<@KDV`E/
-M/C;CE,<AU=3D*[I`D:5P#47U6MA]W![2I%E^M'/**)Y2D#H3IW\4?`T%^7W$M@
-MRCMXBIM/8M>#-<6<^*YAZ%@*V6'JC&&L;R]TH"\&I7'J]7;<T(>5J at +JT2;P
-M2]3!#M(SYL-Q1$0G?K@"\&"BYV4#!5TME1`NM>L=3D5L?:I'#29&,57A<GF=3DR]
-MC*6_5$\JBPIB]S=3D5TBHT=3D%;6),#4\R.A5)X>%K>KKL?U3HZ0T#L:IR?E+ at P,
-M3`MD`]1O(GGKC3?PZA=3D07?L+#6!.!V8JD[U59/[-Z`J/I$%@A`YAO5^[?YE1
-M]4+XK59V83&H?88-?X#:#Y_#?AD.EAO,WE^D\?H(`K"4R\9Y2Q*W1NIG`@!<
-M`0``7`$```(```!%``%8468``$`1``#`J`$!P*@!`@'T`?0!1`<I9?7)!26@
-M";G\EN9C_.H6ERX@)"`````(```!/"$``2!;WXWDWL'`710H/`:A9:/V,?E^
-M`@IV(\&<A!J$>,E`JM\DD>9O+P!&'RH47>L at N881-<O#Q/F#K$4F_0N!"R.K
-M)M3-OY%VK:Z%IG4#FG8:%P!']+>PW16^ID?M)0/"Q=3DEH)?M$_NB"0USU<YT!
-ML*LLRB@=3D@'BY7O^R!,2!.!1QNJ,58<[I8R=3D^5LCG6,P1+87]D]L:=3D>Y'=3D5LS
-M(P(P=3D?#XE#HC,G#4G!E51@:^NV#\9P!N4R_]6/2Z$%[1\L6F9V\\SPZ:2H at H
-MZJW($!LISNN$?KU5VC#$]G_;MQ_&'[93`(YQQX&&C;*1C-8)BIT/\QM6T"C[
-MIAD8ZHW*?S10I]<;P73F3E18C['$L*1Z[T=3D88[%HGOC$;-/V><SXADL2MT:I
-MCP(`?````'P````"````10``>%%G``!`$0``P*@!`<"H`0(!]`'T`&0&2;6:
-M at ..>N22ZM!43%V[$OA0N("4(`````````%PJ``!`YJ"FWN]#RZ[D7, at LQKXR
-MQ[/S)ZY3]RTLQ0NU/T?JOH"JN`<(2YV&%(>Z4G*6=3D:7HA0^SV"F8+P\F9$&*
-M2Q*W1NB:`@!L````;`````(```!%``!H46@``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YM9J`XYZY)+JT%1,7;L2^%"X@)2``````````3````#!3'B>;C_N&7G at K
-M\ZUM<?FS?@DI1K05:*ZKN,SFUWLV_TLSDBCJ;%N=3D!+,ENTL2MT9JJ0(`;```
-M`&P````"````10``:%%I``!`$0``P*@!`<"H`0(!]`'T`%0&.;6:@..>N22Z
-MM!43%V[$OA0N("4(`````0```$PJ```P at P]`:MO5C(%:1['XX9ALFB3(X%%]
-M]5NXI16"\/XIY1[/QB0RAFVJSN:@@WA+$K=3D&#+@"`&P```!L`````@```$4`
-M`&A1:@``0!$``,"H`0'`J`$"`?0!]`!4!CFUFH#CGKDDNK05$Q=3DNQ+X4+B`E
-M(`````$```!,````,!\"[L..>#4ZC/&-#\_()&JGN9B!$'"Z58;&QST3QAS@
-M[&OP0'[$&EO&ZH'B2Q*W1I>R`P"8`0``F`$```(```!%``&446L``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE<"5$X$FRT8,``````````"$@(@@````````!>"+W
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``;H'L^8*#52<!
-MJLM#I\&6=3D#2$-J&P(/08>O=3DD2+=3D``9@#+J$*4W.;G$'%D`G)(/+)HAH?LM1(
-M.7]X,ONU8UCL4F"UYNT0P\O7-FV-UV824%9?=3D$^5*2C*L<R-E?\&S at +.?Q`_
-M4P/R>(?4-[S#`PP(\UQ+GU&8:%N2UCC_%&-72F(I```DP?E#G%Z_:$X,0Z\V
-M.3^OY`K>5O1B.<?`^N$0CX3YL;DI```<``!`!!%R%@H&)_E>W>S8N*G)!I1T
-M-;86````'```0`5BJ)-K)UUI(/M%!`9=3D[J/_0CLC8$L2MT9-P0,`7````%P`
-M```"````10``6%%L``!`$0``P*@!`<"H`0(!]`'T`$0&*7`E1.!)LM&#````
-M```````I("(@`````````#P````@``!`!@````%1MMCX]ED32)3R,/8I_3?9
-M(XL4?$L2MT;#T0,`N`$``+@!```"````10`!M%%M``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A7`E1.!)LM&#```````````I("((`````````9 at A```@``!`!@``
-M``%1MMCX]ED32)3R,/8I_3?9(XL4?"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``;H'L^8*#52<!JLM#I\&6=3D#2$-J&P(/08>O=3DD2+=3D`
-M`9@#+J$*4W.;G$'%D`G)(/+)HAH?LM1(.7]X,ONU8UCL4F"UYNT0P\O7-FV-
-MUV824%9?=3D$^5*2C*L<R-E?\&S at +.?Q`_4P/R>(?4-[S#`PP(\UQ+GU&8:%N2
-MUCC_%&-72F(I```DP?E#G%Z_:$X,0Z\V.3^OY`K>5O1B.<?`^N$0CX3YL;DI
-M```<``!`!!%R%@H&)_E>W>S8N*G)!I1T-;86````'```0`5BJ)-K)UUI(/M%
-M!`9=3D[J/_0CLC8$L2MT8S]0,`4`$``%`!```"````10`!3%%N``!`$0``P*@!
-M`<"H`0(!]`'T`3@''7`E1.!)LM&#T;B[X%.]4[TA("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``#Q/"PS9P+]7/_-\"4\)13CE5XLN,PV:L8IA_(ZU)C-Z3*CVQ0<X
-M)GW8;57GX0-X:?4R0NE6C2-XB=3D:Y;9Y=3D6+;@(,JL3FT5K$?R2;:9ZE"2Y:EN
-M],2A9!6LNE_SHZJJ6W+2C)1=3DM(HL$N4(+,:(8LTDCLR:M&!N'"W?G6+=3D]K`-
-M*0``)%VG]1^Z>A1=3D(;%!8ED<ON_3:95)9)NR(D$T$O&KC$V7*0``'```0`1;
-ML04$T3!DA>Q"1FX[<%>=3D>\'HB@```!P``$`%=3D\HX7C'@GKN=3D["NMWC!8OA3/
-M^QY+$K=3D&9"$$``P!```,`0```@```$4``0A1;P``0!$``,"H`0'`J`$"`?0!
-M]`#T!]EP)43 at 2;+1@]&XN^!3O5.]+B`C"`````$```#L(P``T(XB(&P;VQ+>
-MB3XZ>A80!GG!@34MJ9'2G[I-<PB?C[#?*%Y7\/V#;XZ3B(;62*C7\&+[@X64
-M"_9H4BQV3N/M+NF)-,Y*R5RR<FLN0W+W]XZ3R43(LMIIX58UHE^40Y]%+HEB
-MYD3UG#*HF\IN=3D(]OD\'!J at Z%B*:+<D<AP#E8,Z)<5*=3DP=3DM_>^_K;L*IF"44"
-M>L>5YWSKYFDQ`P`4?M%;AS6Q"J(EOY[6.SN"M0U34<LPCF5M8;/L;_Q&`,TY
-MF(NV8V\Y4IT$ZIBKS65C)DL2MT9+. at 0`O````+P````"````10``N%%P``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B7`E1.!)LM&#T;B[X%.]4[TN(",@`````0``
-M`)PD``"`RB!*7^Q8H962YS5?FV_G5!M:QAS%J)++\7N=3DA^Q54THA/YN9G<!-
-M5;("GMELB?4G%=3D!I\=3DV<VZE7CO]^PD,6'5^L961#G8VX,G[VT&E,7H-45>/D
-M!EHA?8%-0VPKMEVE2%4'WX>\OCH29,6)Y$9^J7"6 at .%T%6LAAXH7UDL2MT:V
-M6`0`'`$``!P!```"````10`!&%%Q``!`$0``P*@!`<"H`0(!]`'T`00'Z7`E
-M1.!)LM&#T;B[X%.]4[TN("0(`````@```/PA``#@:7P^2H)F_:"0XFEH3MUS
-M2B]'&Q$](+<('F%:Q'<$Y4?4<)W10H_D6QI]7F7*YDUDH/K07.M$X/W`/@EW
-M[+U'?0`+W-*W6OM<UE',IQ)*LZXV#I"N)4YBL\*RT*U(Y/I=3D.9Z"9C5LZKI?
-MY?V(-1R7RK7(5UOLEN8#+N+ at RH@W$OC>@;?4\#CQ-FM=3D=3D>7.K3:;`:4ONP_"
-MB\$,5'68O#=3D>0N.PR8&FR@/X][W3YFJYTE^M[L0B8Q*05$G^=3DC9200(ETOMA
-MU`<[/72&4@"PZ=3D"^IK(-&L.B<(Y7L]U?A$L2MT;Y8P0`_````/P````"````
-M10``^%%R``!`$0``P*@!`<"H`0(!]`'T`.0&R7`E1.!)LM&#T;B[X%.]4[TN
-M("0(`````P```-PA``#`D[O<>OQS5Z'FJYK2%]3]FG^+D&P^2)T5X^L+CYSK
-M^CA+`YDDWQN>R3H9Q"&R`>^S4Z)_+Y?"<=3DO at F&TOPO693B2GU!0O+"X)@7)$
-M2&>9S[SR;003F(R4A'9B'.:$1:ZT&^:G"$&!)21_4.F,MLE^_(J0]SQN#S4[
-M'VEA`7+NX2F\Z5O+X':(0*2'RHO6_2?FN<HB\3-AENUID_H:\OL^%I8^WT0]
-M@?PLSA+.`39Y0I0YRCC=3D0E/??1/BK7)+$K=3D&$7`$`&P```!L`````@```$4`
-M`&A1<P``0!$``,"H`0'`J`$"`?0!]`!4!CEP)43 at 2;+1@]&XN^!3O5.]+B`D
-M(`````(```!,*0``,+@;Y7%.2K-VBUBTZ.IM4)9RY[9_&MZ%R4F,5<-4QF*N
-MQSA#X8#>';[^:^742Q*W1O",!`!L````;`````(```!%``!H470``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y<"5$X$FRT8/1N+O at 4[U3O2X@)"`````#````3"D`
-M`#`7%V)-!`N94Z4"Q"&A8#HO?(2_&F@>+WF9Z3+#:DS*O'5PDQ". at K(`PRWC
-M_4L2MT:(IP0`/`$``#P!```"````10`!.%%U``!`$0``P*@!`<"H`0(!]`'T
-M`20'"7`E1.!)LM&#T;B[X%.]4[TN("0(````!````1PA``$`48P7UAUTFCPX
-M#/D[B"K/LHF+Y6S:22>N8&2I&5FUKIN>P96)"/Z$HN"-6WX6(K1M9</!Z2:S
-MX\S@):5$01P`9M1-*=3D,,V1!]RI[QBE4DKH1H7V66M`L'\Q"F'9H);-K/WGQ&
-MON<Q:9:U]_WNL[,]P,@[,+P2^"O=3D;('-<_]&U95@%X3`1"NPL+&7GVR(-+MW
-MX)@/-*]0CH(3:.?]F2"4895.K%$P,SOAID,PA8RO"6(HYNUU-81D)1R8MVC3
-M#O4)SDGUMWYE4&M[HUFZLV>0BX+)JQ59F7*S1;-IG[P>#P2XY<9CY58*5H7&
-MTVB.MO<BM(')%07[3LD,<L[/2Q*W1 at FS!``<`0``'`$```(```!%``$8478`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?I<"5$X$FRT8/1N+O at 4[U3O2X@)`@````%
-M````_"$``.#!8>KCXV'^<LM:_EJD<?KB(?ZY5A9[PGFM]J#45)66X".<I&82
-MYC)+[Q](5/`;_44!ZOC[#\MXC?.+2J\G/VM0NIA4AJY5?NM/+7LT.-Y^@2B"
-MA7#MMG?FM:V9\')!9&YUZWF%`$=3DM at J%PLO*-UE%=3DME0MH;*ZFC[)EM**6L4@
-M3;9((2Y/^]__^0A8V"4)S%F9:Y7A)%C-_).7!1(MR+#*3=3D?VWZ;ZB>JLHO:B
-MD;7!$7M8<#+--3KD(HIG.Z]5&5SFCT]KCCZ"=3DOHVYQ98&;5064?/B<1N`[M#
-MX:UX2Q*W1K#"!`#L````[`````(```!%``#H47<``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y<"5$X$FRT8/1N+O at 4[U3O2X@)"`````$````S"$``+!_=3D:<T($^+
-M2 at VQ/@4E/TFV3:XDLN"#NZ5V3(;'`[VMWKAC`-/(Y&[A']1>L;6F:G(D>RO[
-M.@?L<#+E#4-S5^8V!'FG;P-:BB>2N08`'G-XD,?@_!:F/[PA,I@(C0W!S"K/
-M;CBKMQ. at LL]:S]OL?+"DR)/JO2$\/2<+($$SBA!92(H/5I0+`9YO.`12WE/5
-M'QENTX',SGY')>\2QGZ at A9$E$/`8Z-B&+U3EC`\%2Q*W1A#E!`#L````[```
-M``(```!%``#H47@``$`1``#`J`$!P*@!`@'T`?0`U`:Y<"5$X$FRT8/1N+O@
-M4[U3O2X@)"`````%````S"$``+"54*,23TLR]CPBW#*.8^\C/R9L0?FSM9I>
-M:3=3DF)EX`&@5X1[#,]YEZ;Z;\?4&E99[&>D"F$"=3DYP>=3D.P=3D52'__-$4M!$^:-
-M]C>$O.Z,0W_L@<&V]H0$HT&(Q::FT/=3D)W3%*_5_Q->#(.U0>DJBF1,$$K.Y>
-M at .O<UDL"O6L^"/GMSO.?E'MB3-'W0]9W9O&^C:9J[?;`R7Q]?O89R_"&S(V?
-M0PPQZB0=3D1ET3*LJI2Q*W1CT"!0`\`0``/`$```(```!%``$X47D``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)<"5$X$FRT8/1N+O at 4[U3O2X@)`@````&```!'"$`
-M`0"<G)E(&*NR/D at JYXK@71'KCG88\WOU54_ZR!&6^?ZKJ%Y^WP3/K^L"-"8G
-M_*P,AFJ=3D6',TT,>%'3J:V at .CPYBZ!DZ at U"M],-HC.A87-K!>^>LY$SPUU\)#
-M:[N+Q$.JN*3:<?Z672%*R#U\QKKB+HQ.`-F9PWA;P!`$T[?P\?392]@O2%N`
-MKGC&?]I!&LK8LBFQ6:D)AMJ'FOT.;__ZG#7PG*L*<)CF(>%U+C<LDI>0#!YL
-MQC7-_`>W<^V3?:[GWFO25;RJ"ZB$.-VJ9$I\<?]B0GF>G%-[FNG/?7!'!80G
-M[^G\Z*`$>0N`TNI#A!G']-D1R*LMW&9Z*8K>ZNU+$K=3D&*`\%`!P!```<`0``
-M`@```$4``1A1>@``0!$``,"H`0'`J`$"`?0!]`$$!^EP)43 at 2;+1@]&XN^!3
-MO5.]+B`D"`````<```#\(0``X+[T9DCP6CVW(MQ_N!P#/&.4T#/^^;0(_MUD
-M`YA`.T("!$8K8F-G098X@,[[H>"+7^0^:-"]J9/VLOHH>_IB7G#E\NN94OG-
-MPXAI11JXU=3D<]1K[$S_M]S@:,!`*!XB!IP&)VH8"K9QJJJBN>0/2JWVUH_`Q#
-MH*?;(;%A7ARB.0>H0-$:&$9V.NO_9*.;ICY(XMGBDD)M"8M^^<2Z3[T\[]`*
-M'5KR4R=3DQALAVR;7S#1^VLS7%/D"VV8S<5*_[ES$EK$LWORHF>Z?O;3OW?9F6
-M5[MN]H-$LV?3T/UT,A=3D+$K=3D&YA\%`.P```#L`````@```$4``.A1>P``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KEP)43 at 2;+1@]&XN^!3O5.]+B`D(`````8```#,
-M(0``L/?+"'C<<*S&$K1HTUE<4AMJA_)7UH_W\[F.123)M)*=3D?\*F&<)Q>^S9
-M>%+\9#QD0T1-U;=3D_?N5.0PP],&_^MZ3;<I0:2Y%%9.R8+ at OU#J,<A."N-A)"
-MS3&F=3D'_1.\"L(V-Y9MH=3D&1?5Q6CT4`A\J6FD#?7N)+_6-?/PI)]AD@*=3D.P06
-MZT$7+(\T^NF)!-^3'*2A1AP'V7_FF<7)-2"D'TLXF"G+'V!W4!A@/QM+$K=3D&
-M'$0%`.P```#L`````@```$4``.A1?@``0!$``,"H`0'`J`$"`?0!]`#4!KEP
-M)43 at 2;+1@]&XN^!3O5.]+B`D(`````<```#,(0``L'9\+D6,H?&FDFF*-R1O
-MQI:/+#E9\TF./7 at _X-\E8N5#'Q\L.,0M9H%#K/V_GM\];QM"'R?3D6IR#XLW
-M']C#VB$-@'=3D-\&8D5*,JG.:!Z`GZ at 9=3DT,'SG2=3D4HXB_G3)/2(/O<IJ8$SL8N
-M-A at 1>-LCCB4X&QPTB(`W6(E.E<F)K6Q0C0^6Z..,YQ^-:W^RQXU'48;XXA+%
-M_.=3DS1\RMNR0Y0/=3DZC2N6+N3:J0;VHS1+$K=3D&.VH%`(P!``",`0```@```$4`
-M`8A1?P``0!$``,"H`0'`J`$"`?0!]`%T!UEP)43 at 2;+1@]&XN^!3O5.]+B`D
-M"`````@```%L(0`!4"1"[O9KH)";:*;]0S#.E6YK[(@3ULJ8A)E5I)&V_XC[
-MW!5.B`6^_JF+W at _-@($5,KGY7EVO=3DMYKZH<_ZA"3=3D@/;%1V;N,%PB[*W6<&Q
-M^M/A at 6B"#;U7P*)/'$^>_0']56YX>=3D1KA)?F#VZ&M+`A<A=3D"+P`&>/CO<N:9
-M.H&@Q^&7QLBM3J(J\,CU,9$HF%]][]IQ?\?(UE\Q6?N9<=3D>$,H15<O-:JQ7,
-MU,#=3D*]2EVL$LQ^QM&\+VS0@"0$BXT82Y<H at X+>*B=3D9\"MPUZ>HZ??:WPS at 9C
-M(DX4R?K900^C@:Z^EKX4Z$Z0E8_56!(7GKHX`F"0X%@>?X\W83FM at O@I(AKB
-MJ.,/D:M)\$^[$WV\O,33H$E<YG8E?69Y%]X#$B,_4[P.MIC2A/CP=3D58^ZUK8
-M^CZJ3<^>&+6,[)6Y:<=3D@^`S[-CFG!%70S?,`P%=3D22Q*W1NN>!0!<`0``7`$`
-M``(```!%``%848```$`1``#`J`$!P*@!`@'T`?0!1`<I<"5$X$FRT8/1N+O@
-M4[U3O2X@)"`````(```!/"$``2!%%:X(6 at LA47X@/]V46D>XK'C-/['V at 9@=3D
-M'MKA]J&,[Z.[X2XA*Y(%4JZ<1TL`C],'FA$OM*(^$G*LH7C06JYTZG^53&Q8
-MO,/&Q;Y$HO'1[QV0^>O2<6/J3SZ4]9T2,MR1JGVUM&;3'./4%ZT]OU-.1O)Z
-MARKW6UCQX_5`&,O/::%TABG#85$.*,IY+GXZYI2Y0XR`9+_6OK<L00X*8]!W
-M^`TP80H1`S(?YM+)M!8N#IUL<ZF>6ZN_*`@?);43EGBDYKH0$4K%<_PCTXWZ
-M#].02=3DR&&8"J@*97:DB:PF5V_*<(R at Z,TW-7I3%E1L.?7<6*/\M-?NB1#Z>?
-M7.KW;H3FK\J7.!GJV(HQRB4H]R<TB-HL^Y@"QD<6;`\,)DL2MT9\QP4`?```
-M`'P````"````10``>%&"``!`$0``P*@!`<"H`0(!]`'T`&0&2<*OQUC2N7!V
-MMV6UW%7SO^TN("4(`````````%PJ``!`Z,2)=3D*'":SJFL6.%7G#,#?XNQC+D
-MQA^+/DQ>LZ&=3D%0VD^5Y:]9.ALRO!/KK"G/@<>>+CG,,.LRJ2,.NW2Q*W1G#3
-M!0!L````;`````(```!%``!H48,``$`1``#`J`$!P*@!`@'T`?0`5`8YPJ_'
-M6-*Y<':W9;7<5?._[2X@)2``````````3````#"P8\L-!MA!\\$Z#0782K`"
-M0&T328)_"*5KC\.]PQ_K#I34XPQ6ZGIGN+R1+$L2MT96XP4`;````&P````"
-M````10``:%&$``!`$0``P*@!`<"H`0(!]`'T`%0&.<*OQUC2N7!VMV6UW%7S
-MO^TN("4(`````0```$PJ```PQ<Q3L\_H2C7[(N5!&]KR?E36UINN8C763/>&
-MWHY"]GCWO-"BO-21$75%!^A+$K=3D&I_`%`&P```!L`````@```$4``&A1A0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CG"K\=3D8TKEP=3DK=3DEM=3DQ5\[_M+B`E(`````$`
-M``!,````,"0T/+OW=3D>)^H,M'/"\81><MWCK,M/>O$DH2.1,L8OCP4AK,8AEW
-M<G6+JF\;2Q*W1D'J!@"8`0``F`$```(```!%``&4488``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DER;>A#:@XE;D``````````"$@(@@````````!>"+X`'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``^E4&IB\ST:%^S\VH)*,I
-M+/#L*YXYHD[=3D'?GXKZW1IE!CZ/HRX_2D;7OGEP[UUX;]`P%M2>N,3C+R-!Z\
-MKY486X:<NH4=3DWJWZ>-)5BQSP0($SS+*I-(S9IVC[92H;;3Q4:7L1[$/F(/"6
-M'*(^*_LF*7P;$"4-*XX#=3D>=3DU7Z"KZ#(I```D20369XF&@-<DW7/B+?A4 at 4.[
-MF$@XURVQJOB?.O?D8+<I```<``!`!&5Z#!SL=3D>I>H+NP;Y+G'>F+-R"6````
-M'```0`5[JZ]`K#1>AGX,+,F],1<W<C&Y8DL2MT;5^08`7````%P````"````
-M10``6%&'``!`$0``P*@!`<"H`0(!]`'T`$0&*<FWH0VH.)6Y```````````I
-M("(@`````````#P````@``!`!@````&P^Z2+'81'"TU"!DD?,9=3DEHN0W<DL2
-MMT:%"0<`N`$``+@!```"````10`!M%&(``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA<FWH0VH.)6Y```````````I("((`````````9 at A```@``!`!@````&P^Z2+
-M'81'"TU"!DD?,9=3DEHN0W<B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``^E4&IB\ST:%^S\VH)*,I+/#L*YXYHD[=3D'?GXKZW1IE!CZ/HR
-MX_2D;7OGEP[UUX;]`P%M2>N,3C+R-!Z\KY486X:<NH4=3DWJWZ>-)5BQSP0($S
-MS+*I-(S9IVC[92H;;3Q4:7L1[$/F(/"6'*(^*_LF*7P;$"4-*XX#=3D>=3DU7Z"K
-MZ#(I```D20369XF&@-<DW7/B+?A4 at 4.[F$@XURVQJOB?.O?D8+<I```<``!`
-M!&5Z#!SL=3D>I>H+NP;Y+G'>F+-R"6````'```0`5[JZ]`K#1>AGX,+,F],1<W
-M<C&Y8DL2MT:>+0<`4`$``%`!```"````10`!3%&)``!`$0``P*@!`<"H`0(!
-M]`'T`3@''<FWH0VH.)6YH#[+9BL77K(A("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M``5&!:OX/X=3D)R9,-1TS/QV/""#7;/P)G0 at ->`U at G@"X9%`><SW*3?`X,-L at 1
-M]8:]8`@\XB$J<),ZPQ+29>P6]2<BS"K1,4Z+TTK)!PB!OR+ZU3+QJ*S_.,?P
-MG;O]_9Y3:ED[Y^#*KV,HW*!)GC>/U69U!@^MLE_B7/HPL;BVJ;\^*0``)/Y`
-MCTC<_WD2VR&`MG#;<M`;T:V&;=3DKELJ19)&5R.R^=3D*0``'```0`0)T^TGC at DF
-MT2V3-?]ZQ=3DQ=3D1^<E#P```!P``$`%,R(Z"Z`MR*?R/CY3$_X0U&L/X[I+$K=3D&
-M$&`'``P!```,`0```@```$4``0A1B@``0!$``,"H`0'`J`$"`?0!]`#T!]G)
-MMZ$-J#B5N:`^RV8K%UZR+B`C"`````$```#L(P``T/1?<`JD-3$]Y$23]@FK
-M=3DHRC**XR-.*U9DU(D5!L.RVG5`NB2:;E[=3DY1&"4I1S11_7<?AE45SS<GB1_Q
-M=3D1>3R`$5QY;Q(2P9!%!)M#NU)4_2LFC!OAP%Y[/I79)GI\+0=3D%:7>FTW_=3D`Y
-MIIDJX,)GKRYES)MGHP!A0AW]*[G'U"2PO0[NA$@#W-63S=3DQIJ8E<*CT7"7,2
-M,W9%*OOE?K00\`2BA5<#![E<_[*`=3D2(:J7WZ<,KZ@#[2RFF80(:;CS[&S2*R
-MLP4I>!Z6;AS;%4L2MT:P>`<`O````+P````"````10``N%&+``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B<FWH0VH.)6YH#[+9BL77K(N(",@`````0```)PD``"`
-MO?!TT)>3IY_Z0";,?<(1[RQUN=3DY5EF#M>`_@:"]L\%$B+<:H*D.`W;"W](PU
-M\HZ(?C,K#*FZZ3^]PN)PT\GHU=3D,VRG!C&?4!X)Y<A>1)M;V*^KETBX1A;D[)
-M at I@IY.=3DM at .&>X@^]S^";GNQT;ABV@\HUG3ZC4 at JK<L"!54L2MT9!F`<`'`$`
-M`!P!```"````10`!&%&,``!`$0``P*@!`<"H`0(!]`'T`00'Z<FWH0VH.)6Y
-MH#[+9BL77K(N("0(`````@```/PA``#@WH/9]NNK,SGR:4_>8I/\@N>-*\BN
-M^Y$K#S!`I9#U2/5BQ,I"S?&+,N[&2Y[7@&;3 at P0L/R#Q_XM-=3D1,K)<U\*3,A
-M5!:_!^`:4\.$T>(`BX3SZ,L^65/V>QD2:APZLWMML?-#HV%KQ?!KL60>?U9D
-MTA^?[5>1/0!.9G0*.)@&-H;4X/M/-?)+@[!PYWS8;D-+NG3$01K#@S at O\X"*
-MT/;WKR_H5E%SQYIHBGC6IEM47\["DDPK-,>(NUT::]MD,,%O6XH7M(5%\"`N
-M&\]Q%!:9\AXHR)IQH*X77R_TT4L2MT9.HP<`_````/P````"````10``^%&-
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R<FWH0VH.)6YH#[+9BL77K(N("0(````
-M`P```-PA``#`)3$%D+SV3R&*>:7YHM=3DF3(Z%%B,MDBY%W202$[X at L.-FU'OY
-MZYO&]IQES)%F*OIOQNFL;LVJ6<@C70<K[!;+S(C%0C81ARKS^:;&6UEO2.#V
-MTI<OP1J:HA&D'#U-.YV&)9I)@_&89D';9K^H!*<:S-*CME<76R#?38.;]UP@
-MWN7P;K^N31M\B$;(A;EL"^B#V%823]7;QS@!(>!GV,Z-2YVA+LOZ]HM"ID$:
-M`?^%HOW6=3DV"HX4+[,P$RKR1+$K=3D&"JX'`&P```!L`````@```$4``&A1C@``
-M0!$``,"H`0'`J`$"`?0!]`!4!CG)MZ$-J#B5N:`^RV8K%UZR+B`D(`````(`
-M``!,*0``,.J.CS.*4^<*5R+5)5`:K4]<8U@"-_)/L-B"/7JG=3DCUU<!B20^HP
-MXUK?Y<G12Q*W1N7*!P!L````;`````(```!%``!H48\``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YR;>A#:@XE;F@/LMF*Q=3D>LBX@)"`````#````3"D``#"=3DVW=3DX
-M-BWEF+<&,#XZB_7L=3DM"`TH9*6"WX.8/<)I>=3DT;-4)/YGE]]BD6Z_1DL2MT9H
-MY0<`/`$``#P!```"````10`!.%&0``!`$0``P*@!`<"H`0(!]`'T`20'"<FW
-MH0VH.)6YH#[+9BL77K(N("0(````!````1PA``$`BF.(K at JMJIR7RK*+9IGP
-MB[B)EF9EBK)BD3A"<O8RIP'@,8#VY%E4WT.OSS./>$^]H3&AU%W8PJL4%)7:
-M04N7Z8+M+*!+Z3JXM@'*WR at J+&S"!YXY[HJ)ZF=3D'?VQ-`'MF+!SNE_+_C\XY
-M_<_`V:]9?@P+#<4$N0>LK>[1;]57`L%0EF%O1WK7]XWV?,J^U"=3DX_ at 4=3D=3DE0K
-M/^`(XTJ<B\30:E?M at ONQ+E.E?<62+RSZG7Y:_4%9V_=3D&JO]%%:>[`KWW:I&Z
-M(BA$-S/@=3D#"MBL/3@^X_W-W[#*-IT6LEWJP9'3T=3DK38A+J]Y-M2ZJW^Z`OSE
-MB,+M--QW68%JNZ+W2Q*W1N+Q!P`<`0``'`$```(```!%``$849$``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?IR;>A#:@XE;F@/LMF*Q=3D>LBX@)`@````%````_"$`
-M`."]HO)A413 at G84G<!<>A5/-N%#F,6//32USW=3D\)=3D1D*SXN>5^0_)*@+X=3D!P
-M;PQ^A("IC1/1ULWZG35IEM)\*08/3]JKU15:BG]^'S5!Z#;GC8#K9(15,(NF
-M=3DM6[V at F4P&YJ+TM0/[*B3SR]R:R76C20F$6^`@S!Z&JHT7K(7@*JUG#YC]K#
-MRNHU^X\GFG0:+9MPCJ3.3MN at WW?#SW-;BEV0@!MX_"DCB*KX.,;H,#36$GGG
-M!<G.3L?=3D-/Z\",OF"[BL8S`K?UTO:3D_C\2QWA<64\B(&IU)/\D]YI_>2Q*W
-M1L`!"`#L````[`````(```!%``#H49(``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MR;>A#:@XE;F@/LMF*Q=3D>LBX@)"`````$````S"$``+!*SOWV=3DB7)-UC9'`C4
-MQBJKNMO\W:,#&(3I41-H8%X=3DE-4FS\=3D?SZLA/[G>-;'=3D+`LF9:1,;[2!O6G/
-M$I*MK*;%,\+,N1PX#/[*[S.U[:*;G!QTM&,QTTG0.,%S#J4YE;>8EJUZO<`!
-MASV at _M2Q^)%D';:0FD2HJIW1WA5J]6G0#6NUB^20264$-KXS0PF8"A.Z at RBQ
-MC`B:;`6R"[DIK]8&>/0K+TE%Z.LH;N*E2Q*W1K4E"`#L````[`````(```!%
-M``#H494``$`1``#`J`$!P*@!`@'T`?0`U`:YR;>A#:@XE;F@/LMF*Q=3D>LBX@
-M)"`````%````S"$``+!@YT(.'?Y)?N[9LTI:7/]0<0\J:[$^>@'$_":7$&OK
-MI5&/A#>UM3'9Y5TOF'>[_0%>!M9F,>YM_@;T_5IE$$5&]^QQX7FP<I1\O)Q"
-M`4TOH*9_=3D\`$NV;:AC'VVS%ERKK1#IU>. at 07>(^9:CX71"O$/8$<#8(`O)%8
-MWYIGW`1L;1+$L/;W'04/.W\Y`>,=3DSV6PS,83>A+X-,E0=3DL<S7C.T/WK7-S>-
-M3.:^GJ*$2Q*W1MI""``\`0``/`$```(```!%``$X498``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)R;>A#:@XE;F@/LMF*Q=3D>LBX@)`@````&```!'"$``0!R>8SM
-M)JY!E(&(G218#7FRF at X4IB?>0QX\UK%)Y$C+'4C%B=3D,G(R+^ZWWFF.EXZ$<6
-M:W52ZT+1%[HS1+5RUE$DVSXA^ENP8(E91MBY8>E?-NU>6O[2IF)A-LAZ[M(I
-M%TZ4[B8I?=3D['1=3D)*SAM!ZK,)0!7,@(XR;%F at 8K?V25)>E.I?<7=3D]7&"L?2;2
-M%X6B'YN%>7-*6SYVUAM!31#X%7RFMS:+U-Y_>T%3*)3_)Z"3GPV,IJJ&]>1(
-M'VK&<H]8`8,?ZH at QB2^14:=3D3\\*]]#MMOF6'[)XA'MU5"V5*^5#54#F=3D^0<6
-MV$7%LJQ<9`#O71><+7A7P(3-+\_]UL)+$K=3D&;$X(`!P!```<`0```@```$4`
-M`1A1EP``0!$``,"H`0'`J`$"`?0!]`$$!^G)MZ$-J#B5N:`^RV8K%UZR+B`D
-M"`````<```#\(0``X'/&-.#S*B/RHMDD9*,0(%,2E*Q53B9E6>I-BY+9]SZD
-M$Y)B`4 at X(@5;CI#RX_Y^5RO9<_U#MT'J^M1=3D%[D<;?5L1FYG$"!M#"1)RT0&
-M@'=3DRDT at 9\O0^_W[W2!:9AX<CG+`8A:!GS<0"_LIRN7L7#7E%N^RDYPH3%58)
-MYL#BT^7?B%%P/RH=3DRX$CI2J(/>PRPDWU[C=3D@)TYQ60+?!K__%["?FS]$%8QI
-M8^+>.2'([C&$1F4(B.\3B]I9"3YT73-S\I2:GP<(7.X-'$_'3%%8+'I:S>;>
-M&:U39W<B_\%+$K=3D&75X(`.P```#L`````@```$4``.A1F```0!$``,"H`0'`
-MJ`$"`?0!]`#4!KG)MZ$-J#B5N:`^RV8K%UZR+B`D(`````8```#,(0``L)[!
-M&V%T_O)L>\)OZ3V]E2CYS`>-!#!BS<T(?_<C)(B]SW7NAMZ*B]1DF9J`63P.
-MUUDZ[CJ7KSG_QVE#\KGT`,F</!HLIC1*(V<6]7-;,AGOE:#1Q3EM0IO7CDPK
-M[?HA%NEC%=3D#V0"72?ID:WW]81373(RET8VI^Z1"(I1$>O6SYU<BX@/2 at C5-:
-M4[=3D)2&5%0QV./CY_HA&?8P!]Q*^'M!16%V at A&6#7IRU]B^)+$K=3D&KH$(`.P`
-M``#L`````@```$4``.A1F0``0!$``,"H`0'`J`$"`?0!]`#4!KG)MZ$-J#B5
-MN:`^RV8K%UZR+B`D(`````<```#,(0``L(Y)4%(`32S6[H;T?C at XK*G)A0U+
-ML,.<Y_C(&^`;W`\)`E,0,>H2*#/-A8NG?'0H5;8+TBHK/]LD_P[%Z>Q?HX-V
-M]MGE\YBHY'/`Y$2ETXMJ&)]![EV3,E)$R1+RO`)&&MB/5VV7_$IT.'']Z6PC
-M(%LKL^@260QRJD7E]^P=3DOX74#RI=3D&>&&\T<'CI\6;>[C0/AG`G,;S28`;PW2
-M=3DBRG6:F.EAV<6"*WK/P1!,E+$K=3D&XJD(`(P!``",`0```@```$4``8A1FP``
-M0!$``,"H`0'`J`$"`?0!]`%T!UG)MZ$-J#B5N:`^RV8K%UZR+B`D"`````@`
-M``%L(0`!4"V5W,DB6TD1AOS^M^ZX;RD<A+TG(.@\TYO-XO)!)[GT+Y`-ZSP?
-MN>HH$LD/1)ILPAM%Y99`=3D27=3D9:5(HF?:(K$L0OYJ"@LD0SM.59*,ZS\)`9IO
-M>MU4<?:4!4\K/U8'CH/OD:%G6$:2R)Q?VS2>ZH;B5=3D%),=3DSM_,T;K3I:^C;!
-M4.KEB8I>:)+`%QTM)YUZ#F`8N^=3D-82]`687J&N7,D");;,<X5WA).%&(TKSQ
-M"O@/5W"1J,.&CV at 1/[D%"ZC%-:SVV#$CGV*SU%$@UAXD^01K:+Y59-9]*#'5
-M6]Z'06U'/FO+B4UPD-1_>&$FYM!$(`NT]S at H%.(G1Z`[Z[0Y%B'DQZ3W3;Q-
-M3Y^>.!$ND:OYKE5L!`@0NG`-,V&7B(-6>E"42)'5 at 950&V=3D(A]C2W3LY?]:&
-MC&KL<7+*[TRF3$,Q"9$V1S5ZG`!E9/&$2Q*W1DK>"`!<`0``7`$```(```!%
-M``%849P``$`1``#`J`$!P*@!`@'T`?0!1`<IR;>A#:@XE;F@/LMF*Q=3D>LBX@
-M)"`````(```!/"$``2!3)<_5?Z,IMJ=3D#ZPFR\<2G:9.21Q60 at Y#;J.VA^HUY
-M7?ROKV>18/^9P?1[8_;T<PU7EC.7A>(J:6,&$6&:H8_5MOS>8FL4[[D at T%]Q
-M=3D=3D[YB[9,W=3D2-=3DQ3:C66'R)JOV*VB$Y22AA`>J$-8?>+S'_EVL2X4U2'@8YS9
-M[/LZ^X0ZTMKD%#:J)QE2]CBQ%XQZX(+$RAQ355,JR0Q'AH[GW'N,^$U)PY,>
-MN^I?8[\.3'1UJ@!$#7/F(1,.BWJ#R9O;+2>W at 6KNT865MB0(.).X/,L_S5U5
-M.^2?L90)H)>VI8L6N9G-=3D#AQ at X]!H47_Q43X^P3]$PG'`L(L!9VC at 926I(,,
-MA\,F)>OY9?+_DE%*,P at Z.\-SS]:TP.F"I.*3*4L2MT91!0D`?````'P````"
-M````10``>%&=3D``!`$0``P*@!`<"H`0(!]`'T`&0&2;@?&VKXV+=3DE_HH8WX42
-MSW,N("4(`````````%PJ``!`H6X14$\\I%:^\J_5IU6=3DA6TRCY%%Q,`7PHIF
-MI4`*\!Q-F>`0CP%@K`"0BU^8G<N,B(><Y>2_,H0?9"3$2Q*W1O`0"0!L````
-M;`````(```!%``!H49X``$`1``#`J`$!P*@!`@'T`?0`5`8YN!\;:OC8MV7^
-MBAC?A1+/<RX@)2``````````3````#"I-B'R.#$@&4'':7*@!*?!=3DKU-#43L
-M)(*FB8M8-B#CE<_!.N6H at ZE17ZQAQ$L2MT8,(`D`;````&P````"````10``
-M:%&?``!`$0``P*@!`<"H`0(!]`'T`%0&.;@?&VKXV+=3DE_HH8WX42SW,N("4(
-M`````0```$PJ```P;![)A1=3DF%P%1(;[P^H;,P9M<)LH,<LP![`O?*QL9G!/'
-M5]SJ^YY2X(5CH*M+$K=3D&!RT)`&P```!L`````@```$4``&A1H```0!$``,"H
-M`0'`J`$"`?0!]`!4!CFX'QMJ^-BW9?Z*&-^%$L]S+B`E(`````$```!,````
-M,%.Y0%`:/A\Y at .4-E9U=3DQG;(2%"/:D%ZQT:5T0+V=3D;[X7`?=3DE8H!&OLN16G]
-M2Q*W1L0J"@"8`0``F`$```(```!%``&44:,``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEQ*+L"Y90+"H``````````"$@(@@````````!>"+Y`'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``V%7J_:,2Z>ZM';7ANHQ9R:XA%Q]3
-M:!%T=3D?XU-<MXJ>(1\5*Q4H)N7>HY,[JYJ*,;O2,[$A3-357@)S/H/]*A%$D;
-MB6OGZA<5&A=3DIN)S#6;?F,ODHKV%DQU!7Y,">KS1GK!KK,7)JH\6"7.CF(X?M
-M0J_(U3NVM#=3D>N1D-($U6OS<I```DJ%Z+R8F>X6S>M3NHJ>U>&P21_G4HN=3D!^
-M-79\GC%J=3DJ$I```<``!`!`&T`6N5,KNU at LO<*-#XA5]'3G9U````'```0`7F
-MMR3$J3JI0G.TX]75R60+'%R/!DL2MT8G. at H`7````%P````"````10``6%&D
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*<2B[`N64"PJ```````````I("(@````
-M`````#P````@``!`!@````&..MVKAKQ-2##=3D)0&SE<M\OZ:*9DL2MT:?20H`
-MN`$``+@!```"````10`!M%&E``!`$0``P*@!`<"H`0(!]`'T`:`'A<2B[`N6
-M4"PJ```````````I("((`````````9 at A```@``!`!@````&..MVKAKQ-2##=3D
-M)0&SE<M\OZ:*9B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``V%7J_:,2Z>ZM';7ANHQ9R:XA%Q]3:!%T=3D?XU-<MXJ>(1\5*Q4H)N7>HY
-M,[JYJ*,;O2,[$A3-357@)S/H/]*A%$D;B6OGZA<5&A=3DIN)S#6;?F,ODHKV%D
-MQU!7Y,">KS1GK!KK,7)JH\6"7.CF(X?M0J_(U3NVM#=3D>N1D-($U6OS<I```D
-MJ%Z+R8F>X6S>M3NHJ>U>&P21_G4HN=3D!^-79\GC%J=3DJ$I```<``!`!`&T`6N5
-M,KNU at LO<*-#XA5]'3G9U````'```0`7FMR3$J3JI0G.TX]75R60+'%R/!DL2
-MMT;;;PH`4`$``%`!```"````10`!3%&G``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'<2B[`N64"PJ^2+_)"5(03XA("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``%Z6*[+X
-M)"?3I5TD<&(0BT0;G[O at _%()9Y)=3D0LZ-@]U&GWI"U)LG4IXA'@.K5-LD"UUU
-M%Z"1^0O?=3D%CQ<03,OOHS/#PP1/S4''>*5J>\]O&0RE=3D?\ROK*J(B8ER/CY\]
-MVMG:3AE at 5KR8HBKY5%[Q!^5(#-1=3D#!Y at 6L/@N2TM2)OK*0``),W^F7"M`+J)
-M8#8S7F/A`>LT(YU5!5+FP2789K\F5GD7*0``'```0`3-&#^?<J?"K2@^[M[U
-MZ3E\X]8K;0```!P``$`%3_"!\2IP`B>2GIR0Z<?)JCLM&E9+$K=3D&&9X*``P!
-M```,`0```@```$4``0A1J```0!$``,"H`0'`J`$"`?0!]`#T!]G$HNP+EE`L
-M*ODB_R0E2$$^+B`C"`````$```#L(P``T'DT^6AB7I&OA>Q at 3I"%S.(_S*.\
-M@<\TION-X_`WPH__&OPY`7?C,37Q!I<-RZV*%+B?237[$::BFW^C#9I1&22E
-M>*_8HBB`^?M?D&%5&7]!-=3DUEV'OUZL0VL:@)+H25734&TI'B_30 at C^D5$BKA
-MYM.KHM_!\YCAV/`H@&(>X"'G(BD, at BJ`>6/UAJ;!`6,:+1^R2<+'QR.XKV&I
-M#A(A8O`&M$5T?'*K]6C.Y\RD=3D2B)<DG:CO\%"($L at -JT^J]MRHKS6.5;E_.W
-M8JO[(4L2MT:]M at H`O````+P````"````10``N%&I``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B<2B[`N64"PJ^2+_)"5(03XN(",@`````0```)PD``"`F?E8I]Y7
-M17WRM&\VTJ`O-,CI3V.H(C+PUJ1T97U_`"<(JR[7J)K_YX*GH;6*&E`:T at V^
-M"9*`I!Z$4!S,D]1OE at .%<(4:,9.$=3D.;\,Z$CF9[10.=3DY!`#3%:?V!$]M%5ZO
-M+"A)?0%#382=3D17=3D/!3P$CC0'=3D7X+`[++4O*VITL2MT9ZU0H`'`$``!P!```"
-M````10`!&%&J``!`$0``P*@!`<"H`0(!]`'T`00'Z<2B[`N64"PJ^2+_)"5(
-M03XN("0(`````@```/PA``#@`)7+BZ%X`V1+XPBSUK:UL;U>4]__0U[D$,I%
-M\[J->9 at 9>V_A`5`GNJ_!9'E>V8>/Z^#*(CD,)<.CZC.*L?O(F^/-:1LX:F:&
-M&::S<K/208/'M'XGMR7/@WE";Z7\"GOU05#Y2$8X7S-1P=3D4EI1M6*E&.-GN7
-M7?;1DH6GZ4;E.S1][H3J]><5:#:TC+!'.9R=3D3@@MEV/DHA4V.>PKIY`7GJ$Z
-M,.9/KN=3D]7`_W.AZSJ+DK;.%7JDU$Z"+QG*;`+\<G5OASUZ],XMM(MP1L0<0/
-MN;I90:(STC+NW>/5;$L2MT89X`H`_````/P````"````10``^%&K``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R<2B[`N64"PJ^2+_)"5(03XN("0(`````P```-PA
-M``#`0#4WQE:`*$:#;Q#!L(67X?R[J:-+F^NOAE10P`6O*!8J+KX?!5I^%M1"
-MBEU9ATWI#;6V#CA')C'^LLR#)R%SQ_8$+CK\S6.60B*;3>FOQ(/+F-QSD$GZ
-M-$BD>AWZZE173Z;K$8)^P^/,DJ$D0,+TC7K:KM`(SM@[QH$09&700/L6:S^U
-M1Q$SY(VH]1C>Q.E7$YCRI$.9LSXM;0]T9^8$@J>IF>VX^9%^97OY)V:?PXTA
-M'GR4_6L!N@=3DE at Y)+$K=3D&LNH*`&P```!L`````@```$4``&A1K```0!$``,"H
-M`0'`J`$"`?0!]`!4!CG$HNP+EE`L*ODB_R0E2$$^+B`D(`````(```!,*0``
-M,.'R0$-X?/B:@^(T)E.X^GI_9M2XXZ-UC#NDFLUD1*Z>/M._>GMI_%>!-TBD
-M2Q*W1F4'"P!L````;`````(```!%``!H4:T``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YQ*+L"Y90+"KY(O\D)4A!/BX@)"`````#````3"D``#"YZ!2Y]\P!0J$C
-M;Y$YI4:3ZN\\DM?8ZD[C\)^BSPC3)J+:8[J7)KP=3DF"&)-TL2MT;2(@L`/`$`
-M`#P!```"````10`!.%&N``!`$0``P*@!`<"H`0(!]`'T`20'"<2B[`N64"PJ
-M^2+_)"5(03XN("0(````!````1PA``$`3F4@`_X,WP9'^J1<Y-_JWJ4<RE2G
-M@"8ZU!;A+TK<*V*.Z\@:[C>WP?9[;G5V47EGVBPR:LJ5(2($&J8SN`7U'+0)
-M=3DCU.A4EK0!M>!_8ZX2EDS<$\8:5L3Z+"^<4;N1-$9IA936+D!!!_'3#Q.^75
-MRID;4L%%@$2-&"+G^C[EAZG7,2UC9'\8-77_!F$:(M&P^:US?%1\UO=3D=3D#VL[
-MH#-IJVP6,)-L."L6V2#9Z/5VZ++,,X'OZ8^#G$CM]]\/O2@!8'QGOC<QAY=3DT
-MV!X/=3D1A2)8#^"AP;'56'>\_H at .U8U*?R<9:+K_N.`1%&+E<S0:F\\`,G<UIF
-M4ZOL=3DRII2Q*W1M<N"P`<`0``'`$```(```!%``$84:\``$`1``#`J`$!P*@!
-M`@'T`?0!!`?IQ*+L"Y90+"KY(O\D)4A!/BX@)`@````%````_"$``.!MNJ=3DV
-M/%Y`83++;Z"7 at ND=3D at EG0P=3D,G[,5F?+O$^9_,\TV>D+D!',M,<W<*]&Y5^UX7
-M8Q9Q4, at NMM\FX1D4$3_.'9[9%O8Y-UTX,$SD at O9?$'N\3H2/+CZ1'LGTU++M
-M(R2WX^7>CP_R$]3&QG$T["3M'LG%\T,:#94A-'O:CQW2#_(GDM276M`>'9<_
-MYZCQNU2`29NA',+8Y7BB'-TFOM[/91#1^--]"814KB2A6(Q?N37 at _N]2"D at 3
-M=3DVC5K'QT0QTW7]![+.\H<9.=3D^"@X;NAWS1P@^)3]^+W3\L2*2Q*W1AP_"P#L
-M````[`````(```!%``#H4;```$`1``#`J`$!P*@!`@'T`?0`U`:YQ*+L"Y90
-M+"KY(O\D)4A!/BX@)"`````$````S"$``+!=3D3REOAH0&!L3%\[QKQT0?5%1C
-M62.8W[]=3D9,+%=3D>-L1=3D6(V)<_^QHHP:IMV<!D?'-JBV,OLHS]/U2AI3YJ1*J2
-ML]UH<_IH//D*[D_PQR<?@^<CS[_>RL/ETF?UR$TZ>3$>##FAXB=3D7_K8.QWU>
-M/3*88<SX*=3DT,AO.WE(+!?JZ42D4_MW.&88L:*K:B2K;0BCRHT`?])PD%=3DC>!
-MZ`B$SVRC`!G5<LOS,7!&1/`>2Q*W1DUA"P#L````[`````(```!%``#H4;$`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YQ*+L"Y90+"KY(O\D)4A!/BX@)"`````%
-M````S"$``+!6R:'22M.(LN`"UMG#8/@D=3D!J,;4T00-+.8EGBUS3$@7>6S6^^
-M>L[LYJ(VW=3D8KN+?3;?DIX9.\*&)..?,)"B#$&?%[-90?SJX&=3D]+A2+.Z).(1
-M%A'O8B)3M)B4(S,UAMVAD)WU"XJ9NG.`G-?IK<"L"#<D1ET!07XI+I>TD7\5
-M($Q(8:HYU&_PCTF5S=3D_,^QD?7=3D$- at 7(SQM2VL#<B3/GTE:YRA>"_G/(FKU at N
-M2Q*W1FE_"P`\`0``/`$```(```!%``$X4;(``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)Q*+L"Y90+"KY(O\D)4A!/BX@)`@````&```!'"$``0#&N7>1_1>LL\+C
-M:$I at B4GH-APPT,AC`I0IJ>7J at E/T$<,?D0+A:&CT?'!,3&>)M*R/JIW*\7!&
-MC5&,L4%O2(*&L?\W52(UL!V=3D4&<%4F,W@"D&!H>!-JZ$\#B;D;)9LF)%@I90
-MN*G6\>]D]ZS"*673M%O862]UGMTFWLYA1`%5WB-E</!?_M_<$;.F`K#[VQF"
-MV8!&87A,.K<F8H3`F05-2C;L]Q=3D,ONYFO\N72L]3*F+9N5N/I.;>\?Z^+)G1
-MJDE39NHIG1#%$G0I[_JOX']N8 at EAP77N;GS#6&QM$^8@>HE%?M6*L'MA@;`F
-MKMU5)"Z\#)Z!GA_/MR9Q_=3D%+$K=3D&HHL+`!P!```<`0```@```$4``1A1LP``
-M0!$``,"H`0'`J`$"`?0!]`$$!^G$HNP+EE`L*ODB_R0E2$$^+B`D"`````<`
-M``#\(0``X$JDH`OK6AAMF1F8['=3D.H<GT4!/9:P%=3DPHHE>,ZV,;:7EE"!"6JR
-MFP?TL=3D3(]NW+7TO$"6F4U7N.4$/"XVQ#T/BJ%T[AZF`(*[8$8[Y?U+VB;QNA
-M;4>+LH+[E5YL&JK.R+'F%R;U*>O;'PL5R?75#WA]V13!P;-CATG]8M+U$(^U
-MTR>``V*X#YT7ESD(&0H&JC7GF%:J1V!OK]$DOLVFM?))ILA]^K)YG*NFR#""
-MG%#F$4U7PIGO/5#/-1&OM67-()C at JD2S0ID#7G-!:VBTLJL at Y)$HNF0D^K\X
-M>^-+$K=3D&O)H+`.P```#L`````@```$4``.A1M```0!$``,"H`0'`J`$"`?0!
-M]`#4!KG$HNP+EE`L*ODB_R0E2$$^+B`D(`````8```#,(0``L(-,<Z^BG7,J
-M/1<$_M[P%SB,.2LBEL^*)]V85:J=3D_<0Z&Q8M!_+(@R/(9>DXZ^M at S3UDEYVF
-MS___*P59B:@,GP*Z-6;0BE=3DQ`*LW]UGJQK`_>[H:<N#HQT&^?D;U/\?G*N6K
-MU6BU>[Z[WVBE1\AX.*FYG*\#*52#!;7@'CC3UV?EG`'$$?P4YLNMB+.A"X<(
-MG^@C_`@F`,B\I/#H)".9[=3D1!.0#'N,=3D8SKV(Y"E+$K=3D&';T+`.P```#L````
-M`@```$4``.A1M0``0!$``,"H`0'`J`$"`?0!]`#4!KG$HNP+EE`L*ODB_R0E
-M2$$^+B`D(`````<```#,(0``L'_&H`03?2:58<SI)$#+.KD*LJ(X2PBZ7*YM
-M)HD_)Y".-F]:[K>4<I(XB`?;V((EVY08?#73T^16MS5Y=3DU\,IGP[1)B;G"Z:
-M]N_8&7=3D]_+EASOE6AP'BS!8D?+S1V=3DDX=3DI4F(!/-S=3DYN.-1/B&?@'H8W]I#I
-M)A\RH2;=3DFCM>W2,(NQ.YDZC7V1_(50-UB("W].G$/1?\^YZ"V%XP>!KA,N-L
-MU*Y!;R)B*QD40^)+$K=3D&_^(+`(P!``",`0```@```$4``8A1M@``0!$``,"H
-M`0'`J`$"`?0!]`%T!UG$HNP+EE`L*ODB_R0E2$$^+B`D"`````@```%L(0`!
-M4*1I\_<+H:4\3<^R2+ND\NNJ*NA"*.L\"GB<(-7O08(\V\]V_MGC3-L1AKA%
-MU8,I!&GV>P;(X*O+0<[)O3SQ@?2G:V$5NJ]Y,-.52BE10VESA3@$'/`3,)&I
-M^I28?6J1[4A07A+D?]7_8/,L)681"),"%$E'`M\NC;^V,WR,+=3DIBZGJTK5GV
-M/'ER]!);:-`HXIH*W/X29I=3DX=3DU7@/[,D.7(HAB.I#2C6Z\X>(=3D>C@=3DZ;@T_Z
-MU"`YN=3D;F?2X)EQ5V<C)'.$+HJ/PD9X<=3DJ]0(+;TEM[&D+P5=3DQ-DAIB\0!61Y
-M%R?6H$H*-?8#2^((.68W65)7($Y0=3D/%3<]C(8T=3D>G%3F?):9#FG[L[F_-8U7
-M1)9E\%,H1']VT*7\DR(&7Y6WDQ[.MV78"V at -ZCL&D9Y!2J2_!RAV8;..<0&4
-MXA6$Z!ZJ`J=3DBTW;0`@*9M-/D2Q*W1A`8#`!<`0``7`$```(```!%``%84;<`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<IQ*+L"Y90+"KY(O\D)4A!/BX@)"`````(
-M```!/"$``2"F;TV,*.LV.+OC=3D\Q_H-L?8)]/\#WR%F]@5IJN_6J9VNP58%5"
-MI2-J6V(B.IQ+`M(X)D,@;#;WC9LQ/B*`#\0J"7QM6NPE]AZC:-`4_3&G=3D^<(
-M)0!IC)IO&#=3DK\2'G3&]#[AD^R+L#YZNUY\*RAK_MSJ?.*F<YH"NA'#]C&\X?
-M1QPE:&6,NUM!D3"JMT__Q7(LQ(=3D'?1!<!<-!1Q<63RE_-'#?+GC4.F9L:F3E
-ML#/U]U$LCPR>;\(BNEC+S+8M87)4>1YPLJW`:P1]W5(Q-/*.6FOW8)8D$0>Y
-M%M#BU^G!I6Q->T3%VZ^S">(.1%>4[M]C8N*HA\.L"_UO:^B[!$(-DX12Y-F-
-MU!3.3A_/KWU?.$',#LVCBA\DC:=3DWXDL2MT8!/PP`?````'P````"````10``
-M>%&X``!`$0``P*@!`<"H`0(!]`'T`&0&2>973-<H4"2HA._!P%N:I)$N("4(
-M`````````%PJ``!`]!'9GG6N%Y5"2UJA!Q#B$#?$/H-&N,DGW!X3^,D]%EFY
-MC$7K*H?BN=3D[$O)CQ[%VC9JPG=3D?EQ\6A:IZQ/2Q*W1CM*#`!L````;`````(`
-M``!%``!H4;D``$`1``#`J`$!P*@!`@'T`?0`5`8YYE=3D,URA0)*B$[\'`6YJD
-MD2X@)2``````````3````#`OHP)_(,OJP11**[5@]_O"$R;4`>W"."`-UYI,
-MYHAR%D20=3DSC9I?VVUS at 5M$L2MT;E60P`;````&P````"````10``:%&Z``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.>973-<H4"2HA._!P%N:I)$N("4(`````0``
-M`$PJ```P$JJ>:TH5GF,&4,3`GR93P95QM1J&?\D3_I57XQ;5)%#\S]A?5EP4
-M<23"T9M+$K=3D&(F<,`&P```!L`````@```$4``&A1NP``0!$``,"H`0'`J`$"
-M`?0!]`!4!CGF5TS7*%`DJ(3OP<!;FJ21+B`E(`````$```!,````,(SU!11A
-M41[M-10OHP!5]&`^*A>JHJ[1K0B3GA3A7$1[J4*/@M0^18*Y29/12Q*W1EUA
-M#0"8`0``F`$```(```!%``&44;T``$`1``#`J`$!P*@!`@'T`?0!@`=3DEX<)Q
-M*,Y0B;X``````````"$@(@@````````!>"+\`'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``Z_-Z<JW%@F3O at +O`:ME6\]<<5*+;&9#&<`<N
-MS9#O^WC8'-*59/Q3",W:8Z[-'],!\]+7F'PNO<S^.FL8A([5+JT>8A0Z8_GG
-M=3D>808WSPI9709FJ#%#%%?$D'[`M7':`7W%DFG8I<23%'Z)$BTY<F3?Z,IKI>
-M?!8T%=3DS3ZH&:A>HI```D9K8\?!#FBCQH51B!U!6*1]?$,CM-(*K7=3DOU/]P?A
-MR*TI```<``!`!%?#>8-P'V/-G^M`=3DUEUT)@1[7W@````'```0`66)31VLMOK
-MU5@$JN7#=3D\2.=3D&]IRDL2MT;X;PT`7````%P````"````10``6%&_``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*>'"<2C.4(F^```````````I("(@`````````#P`
-M```@``!`!@````&;&=3D90H at 6[7Z)W+;/+?J2IP0H'$$L2MT:N?PT`N`$``+@!
-M```"````10`!M%'```!`$0``P*@!`<"H`0(!]`'T`:`'A>'"<2C.4(F^````
-M```````I("((`````````9 at A```@``!`!@````&;&=3D90H at 6[7Z)W+;/+?J2I
-MP0H'$"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``Z_-Z
-M<JW%@F3O at +O`:ME6\]<<5*+;&9#&<`<NS9#O^WC8'-*59/Q3",W:8Z[-'],!
-M\]+7F'PNO<S^.FL8A([5+JT>8A0Z8_GG=3D>808WSPI9709FJ#%#%%?$D'[`M7
-M':`7W%DFG8I<23%'Z)$BTY<F3?Z,IKI>?!8T%=3DS3ZH&:A>HI```D9K8\?!#F
-MBCQH51B!U!6*1]?$,CM-(*K7=3DOU/]P?AR*TI```<``!`!%?#>8-P'V/-G^M`
-M=3DUEUT)@1[7W@````'```0`66)31VLMOKU5@$JN7#=3D\2.=3D&]IRDL2MT:WI`T`
-M4`$``%`!```"````10`!3%'!``!`$0``P*@!`<"H`0(!]`'T`3@''>'"<2C.
-M4(F^?<4JD[$?AYTA("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``(ANGZ&+QW]%4]-&
-M,AP](CH_O/U67[#3J+XL.*^14*U&M:FD8-I]7@)>H\>\[FBRJF>*GHI4H8'M
-M[@DE,AR!1(Y]*81I?.)$CF$6Y[Q&3/&9<F[1)_-J^ZCN(@\4@\)^F8]UH^/`
-MP][^R?-[_MUN+&"<Q/E-Y42=3DFN>&\W,D,TF=3D*0``)+$_%VHQ?_Z.DSD"RWW\
-M'!HQ2N_]-%[-UE!^;#X$V0G<*0``'```0`0/MH#PLBLXW!<UO@(OXYBWLQ!%
-M!P```!P``$`%:4K2XV$TE at 6"(CUOQSM/(]\.OI%+$K=3D&XM(-``P!```,`0``
-M`@```$4``0A1P@``0!$``,"H`0'`J`$"`?0!]`#T!]GAPG$HSE")OGW%*I.Q
-M'X>=3D+B`C"`````$```#L(P``T$BU$8D2V/%PT"N,"PNU*?E^N).T2\$73;0Y
-MKB99LXI.A>U7`Y"CJ92AFO*$RME1F;96POM(WU4!:/##8$`O)W01Z]BR'(9?
-MKTO=3D at WKH!CN@=3DX/9OFC)K$C:NR7^&IN,Z%M[I_GF5'SJ'JO#T\E-/P=3DCO3XS
-M^A])ZFU(ZSE;?"+*VWGG(.T#90>UUA+B>)\M6\.$%X2T-[\V1_=3D%_\]TI\QS
-MB#K3HVL[BIZ/Q#+G4E[\*5^TGF#;^Z4TQFZK!]L#=3D[<P#5ZRJC.&..3;'4L2
-MMT:>ZPT`O````+P````"````10``N%'#``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB>'"<2C.4(F^?<4JD[$?AYTN(",@`````0```)PD``"`OUH<_8M:*(W*?99E
-M@$X_TE'80 at C`W5=3D6'@_91:/*/\Q*:UBYL#.WUW<OQ?KF=3D+.;6)L7V9K>QZ_>
-M-!`PY'QW:'[M[5$[F)HX-%3.)ICA^(ZIC*E5 at RZ:*+!K:4/L/.R%*[:Z%]:`
-MEKZ/N:Y^,D^0FP#U^:'6;)$SEN)^YDL2MT;;"0X`'`$``!P!```"````10`!
-M&%'$``!`$0``P*@!`<"H`0(!]`'T`00'Z>'"<2C.4(F^?<4JD[$?AYTN("0(
-M`````@```/PA``#@]*3UK-IT<S[4$8*BK6S\JJIW>AT3Y,[-MQU86X.83A/N
-MI/IK$6P#%/1BTLF$HK$]<S&+?!A*<6WH_)PFJ=3D^X4L_OLJGER&C=3DX<>#`'RA
-M]7%UO:</K\Y`DZHYK:H0)_WE5?%T*QDE0O)-QYJGXB!S0299P!,H#",`"Q]\
-MP/?5EJB.<;BGF+.(<BLNU\XE"Q;"L?Q8]Y2*NTM9F=3D/)V'=3DYAGQ;%(B2SK!=3D
-MQ)>I_DCI*:N'T[0P0O1&M`EAM<6FBV,,!,=3DSG(H)'(%I&TC*_PLDQD/C%2Q2
-M-&!#^.0R!TL2MT8A%0X`_````/P````"````10``^%'%``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R>'"<2C.4(F^?<4JD[$?AYTN("0(`````P```-PA``#`51VA
-MVUC"*)YD%(1G2S&1T&ED1#?C)#&3]^)E52!*6=3DGZ34HW0F.;_R!7]%860Z?>
-M-4#XX3(#TS+=3D^@G;?Y2AUBH8:@Q/<OYA8320:+P!""-U3"E_*V(/?DL6D8IR
-M-/,<BHRY*":M9E_$XTD^P^:#/2;T0"%<`C6L:3@]X?R+(%_E(1%DJK9>GWIU
-M`+LZ]^AEG_ON2!HDF216_%OS55P5>8C_RA32)?(NTE^P9]_SK8)YYS_+_+1#
-M0),$(N5+$K=3D&\!\.`&P```!L`````@```$4``&A1Q@``0!$``,"H`0'`J`$"
-M`?0!]`!4!CGAPG$HSE")OGW%*I.Q'X>=3D+B`D(`````(```!,*0``,/A14TQ9
-M!!/W;>(&WS!W4EBS61T!8B(>]I9&"8+Q$=3DN>Q3>NC+GGQ?#N#)\B2Q*W1LTZ
-M#@!L````;`````(```!%``!H4<<``$`1``#`J`$!P*@!`@'T`?0`5`8YX<)Q
-M*,Y0B;Y]Q2J3L1^'G2X@)"`````#````3"D``##Y1LXCHJQ/NCA".C*'VGN\
-M^GA3`+XK(1[+=3DM-[HV6G$X+)I]2!#&+O)ITK5$L2MT9P5 at X`/`$``#P!```"
-M````10`!.%'(``!`$0``P*@!`<"H`0(!]`'T`20'">'"<2C.4(F^?<4JD[$?
-MAYTN("0(````!````1PA``$`VJ*KJ<:^6I,\]FME.RHSM<*ZH:=3D`EBEYR46R
-M@('3@[?;#T-08TWB5X<RAWA`V,%0=3D/$RH@!(?3^,-[+ at 5\_U/<EA4Y44`J(T
-M>1W]XE9/G512G%A.VXXS#Q6J8;0AH:GMOWOMSD@*.DU)6HI"L[N40RBZC(^[
-MC6Y/C(E,66'"RJ2B259N_>8#<F?KU_.S`420"MT5.N:XJ75D,3^71&34[SAJ
-MT`3TOGOD:`CSRW4D=3D8T2<%%@4?<@S5X+'4D74'S8 at EO;AM=3D'JZG=3D:L-._E?9
-M1P4W,.9"W<D]]Z\23#;7-QY&LV&FYC]%*2ULZNL+?!RPO?)Z\::>K`1W_"=3D3
-M2Q*W1FAB#@`<`0``'`$```(```!%``$84<D``$`1``#`J`$!P*@!`@'T`?0!
-M!`?IX<)Q*,Y0B;Y]Q2J3L1^'G2X@)`@````%````_"$``.`#93>!I*)B8DAK
-MSS8=3D1-YOX1(51T@,]P6*Y,IP$8<6R)8(Z4)P6)CB!,GR2W.PY^[48>"*4X/E
-MB&K09TW#>Z&K6$Y>(U)<:2@#3.6UD\$#J/F`P\R-BP?%[1%=3D_%EY%6=3D)J(1$
-M8=3D"[_75MB2>I9=3D:7XK6V&=3DR#U<Y"/QKHF1N)0U9$-*9[HMP?.,L&J*^G$I[9
-M(F^:X.NW at K:(XHTW6_;9F7-$H;CM1MJ1.R"<T`%[@%\.S4LF<JT*YXC<-5_9
-M5>!2")VMVQ4,+*)`C1_Q^TD(U/P9K5#!$D[&!O\L2Q*W1H=3DR#@#L````[```
-M``(```!%``#H4<H``$`1``#`J`$!P*@!`@'T`?0`U`:YX<)Q*,Y0B;Y]Q2J3
-ML1^'G2X@)"`````$````S"$``+#:ZY:^X?@+RN:Q&2$%6YNCF?XKW\A/SZP&
-MO<B6[P3[A+*])H^(O*[-Q<2J%^IO?$7ZJQT+>%D@>@UKFJ"?7SWE5_]WQ%YJ
-MC0H5<SM=3DJ0?+1OY(&3RZ3A*P`M=3D9.3G(D4H at J[^6F1:MG`F\$$.P6ZQZWR^M
-MG#!^_:S:(\OGY`S<?22ME,7P0<&EK,!*B:N72`W.LR,R>\9SEZ/"N/G?ZC-S
-M@^,#L*6^/O;9=3D2'82Q*W1G:5#@#L````[`````(```!%``#H4<L``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YX<)Q*,Y0B;Y]Q2J3L1^'G2X@)"`````%````S"$`
-M`+`<)@)5*0M!4Z!X2H#'+W\\6Y>LJYXOR0B3.<FA\0=3DQF=3D0K=3DY(VU\DB6X<A
-MN,EB,6R8##W:\'\R>+&A@=3DK&7P1 at W]7?*0Z:^(N2+PM`-%'%-`%)1J_R:!N?
-MPX4S&JMW<A$@LL&.JO(#-_O@`;?D1#6!`=3DTUPXO]JT2%.+983Q_?:;T9S=3D**
[email protected]$MV#9N+&=3D4<)6V*">O_<"3@,V]]H1CD3AJPH)DCO-$[02Q*W1E.R
-M#@`\`0``/`$```(```!%``$X4<P``$`1``#`J`$!P*@!`@'T`?0!)`<)X<)Q
-M*,Y0B;Y]Q2J3L1^'G2X@)`@````&```!'"$``0"'M/A6H)[3#P<KJ=3D\%/8)C
-M'EGAC_*F>`$6ELBVVH=3DH#?IP=3D$SQO2G*J+<AFHLX&"1$9`4%P]4Q.HH&]LI!
-M=3D8$6Y$[I/CXMW$]PADG!<1:]9(F$JL7RPH_9-R918"WV$CJIG2V145&IP;L"
-M'4:Q93!.\"E4W1",>$!FVF89[8AD+/G)=3D,.6NR-_-EM`\X*K?R]#Z[^_CN/;
-M^JXS$DY.)J3$I1=3DLW+Q!0O=3D*?J/2PWPD4O<B";[/@J_EQH@,"@&-I<12_K6^
-MGGA'=3DPNY59K,DY&/,@[]I/3N._.<%:M/>`)%/$YV:3?OX#6Q4WR1)I+GY8[#
-MB_=3D,1&2 at _;,40[]+$K=3D&++X.`!P!```<`0```@```$4``1A1S0``0!$``,"H
-M`0'`J`$"`?0!]`$$!^GAPG$HSE")OGW%*I.Q'X>=3D+B`D"`````<```#\(0``
-MX)"0TQ#Y1AXC3,TOZXC]VGEI$9E(J__Z-G+=3DT*4ZRBE@/GL6<X!_3?*1114Z
-M+^A4TPM&#M'*N)*_;FJ.>^EN\I_AYJE<B/[J%P2Y5U41=3D3G at F1`%3-/M#$`K
-M9M?S,MU<.'P/Y+Y#$L;%U3X?@4I#=3D81!3#4\CP]O%,F3F1`1DKB++Q\1,BL=3D
-MQM*XH%3(C<5I`I1:$/UT3C@;L,O5E$K")/=3D&5)\57)W#YZ&>OXZMZ)@^QPD\
-MD00GH*3%<)Z)974=3D1OU=3D"*>^K6E8B<=3D745`=3D56EL$$+5O.8R6^0QCDM+$K=3D&
-MA<T.`.P```#L`````@```$4``.A1S@``0!$``,"H`0'`J`$"`?0!]`#4!KGA
-MPG$HSE")OGW%*I.Q'X>=3D+B`D(`````8```#,(0``L-=3DH*$ES,NI1Y"U-0OQ4
-M\C+3<`TUW-/F1HXS1CYUOUG>P=3D`?I*+7OA]D"`A)-)%,K;D4SCA%HW]&&6S$
-MN'NZ?M`JZEYYS[YCZ([[XM9H6G?&'ZWQAO(H(A?L][]5VR(:L?O&U]H=3D0:MD
-M&9CVY")9RTXHW.K(P]//./@M1&OL>,O^9.Q#FK*2)Q]A1*T5G]+MHH5JKSL[
-M$:?Y?F<U\B)LT1&6S`)WYS,,JDV8_B=3D+$K=3D&&_`.`.P```#L`````@```$4`
-M`.A1SP``0!$``,"H`0'`J`$"`?0!]`#4!KGAPG$HSE")OGW%*I.Q'X>=3D+B`D
-M(`````<```#,(0``L.4#I'**''BZAVUL5!9TVY!W);Z0ME<EUDY^7<_51LR#
-MXK6493/Q2P0/B'7B83_B'^#*F;'5UDB^_I#+92JT\QA%XD-,Z^%Y at SA,P`5?
-MG4T)40L^ZL6.NC@(6LRB5/!S4=3DF[O#C%81&O0Z.Y+`$C(T9$[.J9&:L+,.+4
-MD'#ZG^22R[1/W`GP_2K\#LG6[EFB4CJ)3?[FGHQPECF(M+,HS5KA.8XG7H\)
-M\=3D0TR>]+$K=3D&,Q</`(P!``",`0```@```$4``8A1T```0!$``,"H`0'`J`$"
-M`?0!]`%T!UGAPG$HSE")OGW%*I.Q'X>=3D+B`D"`````@```%L(0`!4`7_OHN]
-M]Y^2GC(Z$BV`[;QPT:^`<PUF3/E>]ZSZ<HQW6@;GJ<NUP5-JV-[9#D>![8T\
-MT5E%3]^WP4E.)`J;((G=3D[P@^(3+DPF?NBG;1W(]%7+LCJ#SVEDT@[!HT4I:+
-M.:CW^)K:^*93=3D$G3Q`1EHM>5IWE'+K9D*W/;&')+`!P"%\$4E(.G),+>Z'ZK
-MF!D^3U%=3D<\$'1%`OO&1!SCEY8SYQB/]H2EQ+[8ZQD$!?7CU.;YPL+JLT.D#G
-MK2ST6LI2^QL[];S`_24?^A/!+],"=3D83"MI$E41T[E8A.SM>"1:=3DA9)`J?"H#
-MZ9`H[;!(`(M04()-BG5Y_I*:^*&X`/`,RR+1J`\2:Z+3IVK!*[\/`(D2M&)F
-MFT&'-_\QZ`0_1+3':>S>2]U,KO5X[R&+.Z1*)*8'N;\/D[:W#U$:"WF?D5X.
-M8 at JEL@S<AB(UOQ5Y3!*W1I8*``!<`0``7`$```(```!%``%84=3D$``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<IX<)Q*,Y0B;Y]Q2J3L1^'G2X@)"`````(```!/"$`
-M`2`4JS&=3D=3DPX7T(_1$W5!,Y5W36"O+XX2%?`8-D/$A3K#$92U\@*!'G.7C]B<
-M'T03>92NFE879I[.3:R1WX[[^(MIV_=3DU1HC1,G]F?;A-(5=3DHV"0T'2C4ZZ72
-MLS73'$H+_LCQJ.ZTV>0!]`,F7X8)2G-,BI;J%:]/7.D32Q:@I<"6I58"<1VS
-MD*A"F&U<9(;=3D#G,Z!V?4GKD)19<I$QW%'0XF)DFG8N7AD;05W&>0"=3D"?I'ZH
-M&B)J0+SSE;\$**EJT:MBULUU[`6\Z0<*EH=3D[[PR_6->KGE6FFO>"%3Z6F.X:
-M--GU;(QT[HV&#W8?9-W.'?-0;6/9.=3DUB36O_7Y1$=3DFQ>OG#IT2A/KFM,O6(6
-M8O+!M'FM51FY)&;94I-,UDP2MT;_,0``?````'P````"````10``>%'2``!`
-M$0``P*@!`<"H`0(!]`'T`&0&26GNEE[.JQ$4W.#>''CP28$N("4(````````
-M`%PJ``!`EMM`<QKP>/YL?8?Y_/EIP34`4KEE@>"Q--J9_YBG`FWR%M/^?_E;
-M.DK#OBPOW2C at +RRM'HF at M""?0:$'3!*W1H`]``!L````;`````(```!%``!H
-M4=3D,``$`1``#`J`$!P*@!`@'T`?0`5`8Y:>Z67LZK$13<X-X<>/!)@2X@)2``
-M````````3````#`W["/:J-9V*+_(1Y'3@:*\&RZ9#L>)?9<7;6Q`.1V\K1ED
-M_1;00<'Q,9XK"TP2MT8\3```;````&P````"````10``:%'4``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.6GNEE[.JQ$4W.#>''CP28$N("4(`````0```$PJ```P
-MZ,2Q)@4/U#1-M5";EY[R;)?R3IB,IZF/%)=3D$%S+9JX1"*>I_=3D''!+^9?AT!,
-M$K=3D&G%D``&P```!L`````@```$4``&A1U0``0!$``,"H`0'`J`$"`?0!]`!4
-M!CEI[I9>SJL1%-S at WAQX\$F!+B`E(`````$```!,````,)HD-M6R!O=3D@<LY<
-MJ0ZPQ*?QF.,[PG/@R^$MXES+[,K=3D/NN8M/A?<VTG;9<B3!*W1LI3`0"8`0``
-MF`$```(```!%``&44=3D8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE25Y*,*GDWM<`
-M`````````"$@(@@````````!>"+]`'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``=3D.;S3ZDO8[?SP+YEAK$W<<OO#FG+`&%9AY'42^`""D(A
-MO;!B9)0%"ALY)(+)QD=3D;PP10&C]_2$YI8_I9>Q0+.5!O8AC[@:%H:\'-<]O-
-M+]\)*TJI8=3DGA&`PCZ?)`]C1L$C63&&DFC,Z\P)]/]YOTT?*A69SAI_]:UH46
-MPU?DO<LI```D_Q-ANKJ!%JX<KGOMH\4 at R7=3D927)UG]J^&/F+*6:T4CDI```<
-M``!`!.+CN\=3D!`BO8WT;%/!*]^CU"6$L\````'```0`5"5C])(2-55)$E^K1"
-M+1T<P6!#LDP2MT:L8@$`7````%P````"````10``6%'7``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*4E>2C"IY-[7```````````I("(@`````````#P````@``!`
-M!@````&U#3Y[0=3DO6S at K0`JJ]([6V:7WY\TP2MT:/<@$`N`$``+@!```"````
-M10`!M%'8``!`$0``P*@!`<"H`0(!]`'T`:`'A4E>2C"IY-[7```````````I
-M("((`````````9 at A```@``!`!@````&U#3Y[0=3DO6S at K0`JJ]([6V:7WY\R(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``=3D.;S3ZDO8[?S
-MP+YEAK$W<<OO#FG+`&%9AY'42^`""D(AO;!B9)0%"ALY)(+)QD=3D;PP10&C]_
-M2$YI8_I9>Q0+.5!O8AC[@:%H:\'-<]O-+]\)*TJI8=3DGA&`PCZ?)`]C1L$C63
-M&&DFC,Z\P)]/]YOTT?*A69SAI_]:UH46PU?DO<LI```D_Q-ANKJ!%JX<KGOM
-MH\4 at R7=3D927)UG]J^&/F+*6:T4CDI```<``!`!.+CN\=3D!`BO8WT;%/!*]^CU"
-M6$L\````'```0`5"5C])(2-55)$E^K1"+1T<P6!#LDP2MT:UE@$`4`$``%`!
-M```"````10`!3%'9``!`$0``P*@!`<"H`0(!]`'T`3@''4E>2C"IY-[7K+DK
-M_KE\1W,A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``'B].KZ4K8BH*2S<!?SF/EN?
-M;8$$W&HSFFBD1.Y(OMZJ4OY1QJ<2&>!*&&6:NNWFR at H)NT*(LOYVJ;5GS[6M
-M\XOB2MS/X**=3DD1Z9JFKB..'LFEY9[I-3=3D,0I'=3D279+0`#S#HNFK1WK,F?^?X
-M/"SR`&2WIJ?R84;SUH.6#FYMF)R?*0``)`@:Q2.6%'J89KG`$\SF"J%G_%HE
-METM`J&\LP,F*B?-G*0``'```0`1=3D(B-E/TTDT%:[12M\P'SM0@&B=3D0```!P`
-M`$`%WI].*H5/A#5*B968"3<6S"%0U1U,$K=3D&LL,!``P!```,`0```@```$4`
-M`0A1V@``0!$``,"H`0'`J`$"`?0!]`#T!]E)7DHPJ>3>UZRY*_ZY?$=3DS+B`C
-M"`````$```#L(P``T%MWNAU=3D$CXV_@`0P`_64?W93E!*VJI'86*%K.([A\&M
-MUMIU6*/51X&?4S!IBOOL0EZM?^#'W)40`FI0@<"=3D3/@K68L0XQ^^4G^3J06X
-M]<QRH4KCO+T20;,%G_[3*[^KQ:?5PLK?Z6M9.)01GJX*GQ\VU7/>9XU"<-'0
-MY9F=3DD"NSB=3DUE%6HXR#06!LK?Q'5)YI@/]0(,$3*C/UEG;44TIC$!XZ45R=3DWT
-M*DU,$TKZ&TB#+M\SQ8E.RS(T=3D(!N+73F]R\[>GCP`*UZ4R1HX4P2MT8]W0$`
-MO````+P````"````10``N%';``!`$0``P*@!`<"H`0(!]`'T`*0&B4E>2C"I
-MY-[7K+DK_KE\1W,N(",@`````0```)PD``"`3<*::0*3#ZR,KF,WM155S1_A
-M[)_9^**E<&?9FU6"VTET, at 9B8'3D[FAA,J'Z#S4OH<"C?&5ORZ'H[*N7C9NM
-M2'UBJ=3DW9P>EGY+]*\(VFL_A9//;C7S(_%9]L#G#0+7<'R#@RT3!Z4T"N6P\G
-M?!;P*I'&1LTXAT-3'4__`DP2MT:A_`$`'`$``!P!```"````10`!&%'<``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z4E>2C"IY-[7K+DK_KE\1W,N("0(`````@``
-M`/PA``#@RT8%9]%4X3XGNSLCU-4\3O5PDT1^G_#Q4M`TW&73):=3D at 1A/G=3D<0<
-MLQ(6$76'Z3)(D`],(QQ.)!ST&%>+JNY=3D,6Z"?,;SET>\%U?[)FFB;C'W]BMT
-ML/YCS4"?M(<S5E_V)62KP+D>"HGC.('*,YE9HG",&Z4#1))/1U=3D=3DR",#U>2@
-MJ38=3D_\]PYWW(<@"*&A,*/-`FH!R;#Z>+M=3D+ at 7#]?5T,;7OBRATH_/V^6%1O"
-M#C&WN"RI9TG39P("WM3:(,=3D3B[`O(E#IBL.<(O0)"2JZ(2N?$ISA95W@/'EU
-M:DP2MT8)"`(`_````/P````"````10``^%'=3D``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R4E>2C"IY-[7K+DK_KE\1W,N("0(`````P```-PA``#`JAM$Q;;%WI^#
-MW8V2LF$JI,'UDS8/TXT%^+C+K"C2IF6%4!6F?P4H<`K`3JY<!L(1H;P9P2:C
-M5^0KN(JAX.VMTN\,$/WFR-3AIZ_3E/H>H2<2%[T9HCBESS1<C6(%?A$]!25:
-MNTT?1`?!__<@[0+GGS,`D5#_LZ*+I.K-64XSCVH"1NN&N3AR^$>B9&8_V[A4
-M_#6=3DJA]G-!+N)\!,8 at WMID^*)^WSR4TTZ;"Q?OU5!F!G1H3UCZKJ+0[?2;],
-M$K=3D&QQ("`&P```!L`````@```$4``&A1W@``0!$``,"H`0'`J`$"`?0!]`!4
-M!CE)7DHPJ>3>UZRY*_ZY?$=3DS+B`D(`````(```!,*0``,`VE%S(%,L:HLDC;
-ME=3D8X6C-1)R58)S#/'IT=3D0V:83+)K4SD*-^C3MP*X.5H`3!*W1GTN`@!L````
-M;`````(```!%``!H4=3D\``$`1``#`J`$!P*@!`@'T`?0`5`8Y25Y*,*GDWM>L
-MN2O^N7Q'<RX@)"`````#````3"D``#"4\V&<N"<(_ at X_+HZ5:8-B_0)8B5L@
-M[K_K.5*E<:,4XM%/KM at S-F("-O6:RTP2MT:220(`/`$``#P!```"````10`!
-M.%'@``!`$0``P*@!`<"H`0(!]`'T`20'"4E>2C"IY-[7K+DK_KE\1W,N("0(
-M````!````1PA``$`!@^VR8^^KM\'*=3D.`EY1#,^_%D`_.91+KWY+#?F&-7T-V
-M]1`Y3+A2\<99=3DI>@,H)%+<,Q*'C*';\@^)<O4?D.02OCJA7<;X?KX[=3DYZ2,[
-M1'U^':!`NI`2+%?2IR9'Q8R(;(IA],NR1)[`?>@>#0TX0>4N9SG5.LIU`.MG
-MQGVA&R#N<$-$ZY-0^*_E!A.973<)-&&7$)<\!@/SQ,M]^UAYZY2;KG\?&TK8
-M6BX]YS`,3_GV3U*U63#N,'$=3DXH)O*#[$6TN=3D)]'VT(HG-V'W`WG0FDD6NF[E
-M]-X_W*]O-"G#9%FOO?!'K";G,CK(X0;#&BT?#$A at .#*<H=3D(K_X(\3!*W1G)5
-M`@`<`0``'`$```(```!%``$84>$``$`1``#`J`$!P*@!`@'T`?0!!`?I25Y*
-M,*GDWM>LN2O^N7Q'<RX@)`@````%````_"$``.#BU'>W)K(R1JG6?OY5<%71
-M!5M<MULJ2_.5-Q4)T!$@\2\V:WL\5D:[>Z05W1A[VE'!1$%`RFW75TUL-S1E
-MF7/HL-L3XN?2IPX!>Z#`4%SP5;YUP!<32[/UZ63L39=3D@<''LC(PNMEH5LQ@"
-M2F*+8JZQ9&[XNL9_J;E4IHH/LQQ`FSL[NO:XP)SJK^>M8FQO)[W`IT(I];H&
-MQ2EVO"H%`43O(J\Z]3.ER"*5%<>^+XN]LG9Z;J1KA3:-?0#URUG-]HLL%O[4
-M&- at 0`I(S5<PSI$_451G[DVTC`\?D%-S93!*W1KAD`@#L````[`````(```!%
-M``#H4>(``$`1``#`J`$!P*@!`@'T`?0`U`:Y25Y*,*GDWM>LN2O^N7Q'<RX@
-M)"`````$````S"$``+#BW'NC#0^;JM_9)D#\5[,O,?A at 9LNW\R+XHU7/%YVG
-M"2Y!5Y^#'LM>OH^QSN`V%J,'!VW#,<.I&7ZU)RZK=3D\(WF=3D1)52SXGM"1PGVK
-MO=3DZ]EM#*-<;M^F)O'&0_X&EE1U?Z&/*NZV,<JBG#_?[$'88=3DYY^7!6NY#9L$
-MNC"DQ1#J)UPL./F/!`*633G)W2W_=3DP2J&?7.,7+]+*W%9OU=3DS=3DTZ?\V17N9C
-M/@'2Q."*3!*W1B^(`@#L````[`````(```!%``#H4>,``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y25Y*,*GDWM>LN2O^N7Q'<RX@)"`````%````S"$``+!;+1U@
-M9.[`__&T/E.P./[]H>S_\E/37(\)_>[I<H6%&/7?E+\`*&-)!B.:BZEEU5T[
-M'$JOF+J>M6R`L0X33,<F+9J"5M#D]\DTX4:!SAG*"#"P0@^!PI;- at A?Y7%T4
-M;#LN'3Q_!3&C&A97`QZA`&.D<*#5O#Z9D9,J!99/G%&.^PB5$`S3Y\PCUPO-
-MN(,"\.Y7%!!IJ.]`<+UQ,E=3D8>$?*R!#:7"F#Y)M>[ZPU3!*W1FNF`@`\`0``
-M/`$```(```!%``$X4>0``$`1``#`J`$!P*@!`@'T`?0!)`<)25Y*,*GDWM>L
-MN2O^N7Q'<RX@)`@````&```!'"$``0"_5POV'7WBVV`KCO3&W&Z1=3DZ;K16VM
-M-#*[2!?3#R/HV+Y:[RA7?9\IZAW^H(!>,O^WQB at ICF'G#&2:F7YVF'!;M>YU
-MU0?-N;)JO3F)MIEO=3DP(&$=3DU56JVYS;*^<,<A_9&3S.8R_^G81G*T*O;2_U(`
-MR/,ES7V'CR`U9P;<"*T"ZQ"R;D4Y2/?F)_]UZ%\G+;0TJ.X3/HJ0T'D?'35+
-MS)\YL?N_D4Y7:HE']]703^T&0U&&SX<6%Y,<Y4Y4^NFC-G,C(KL5YMC3#SBT
-MC-+WGS at G1*`X'=3D'"##KZOG"0:Q^Z$O?#F#FK(L\2%@OE(NGPP:761I?]-\(B
-M^X>0B41,$K=3D&K+("`!P!```<`0```@```$4``1A1Y0``0!$``,"H`0'`J`$"
-M`?0!]`$$!^E)7DHPJ>3>UZRY*_ZY?$=3DS+B`D"`````<```#\(0``X-^1L`"R
-MNU_X]>["SIED!-Q0C4QSZ<ZP7$M+B?82Y"<#&KFM76OD6TCE<AG(S2@)>=3DI)
-MF54EFK:_E3Z5E`0YIA';0+*&^Q7,(A=3DNVQ]GN,P.D&/FC?_*GF<8;M4G;P&W
-M*6FI96[FVVN]"F5C9.$UWG1<N)GG\1-2'#/B=3D%K+.>QA;N%-PT;9)4VX?'S+
-M\#.I$9BDJ0W4:5FL-09]D&H"GNKP:, at XY>57\\C:0PRD$YWCU^/%7C>!_,Q)
-M:#$Q7TT(6)@6888V)"$,JE7?UF(0@&G'PD:KI at _;#N.,[E5,$K=3D&Y\$"`.P`
-M``#L`````@```$4``.A1Y@``0!$``,"H`0'`J`$"`?0!]`#4!KE)7DHPJ>3>
-MUZRY*_ZY?$=3DS+B`D(`````8```#,(0``L+VK("\]">UY+PV36HD7$R9;@P)#
-M'T$B5D%G,=3DS&\T0C1-J062:LM<:^=3D+/NF(6?0,BKU216=3D*?M;*1]JEO8%=3D9:
-MA;U429#.T,HW<!M+64^5Q_;"Q0B(%)R+>G'8RUJ?/1(T78<[V^W4E(A\PQ>$
-MH<^<W$4`AN7"+YKT\MO[@CPX3\4*(MRSAXZG6/B,_?84$T4`'K)(B\RB()#D
-M/%E-K?V.Z(MAW4N`%S2QC`5,$K=3D&1.0"`.P```#L`````@```$4``.A1YP``
-M0!$``,"H`0'`J`$"`?0!]`#4!KE)7DHPJ>3>UZRY*_ZY?$=3DS+B`D(`````<`
-M``#,(0``L#*LQ%*"#$@D$1GEFU]7GKJ:S!,SNSRSRH0J1RL)-7?\QB5XUW*2
-MU^WC(U8CE/]H^X>J+>L?*&FZF'8$KU@(VCC9YKAJ^,"X(_%@_U.6L?7YO2X9
-M^JWJP')]T8'X9<8F$^/9#I[>3LYA"&N5MSDS`O%.!'\,Z?C@]K63I6=3D1*XNZ
-MDS<6K[V-<H'9FR">?!04_US-4/'+RH&AWXL2"J^8BP.O"00F:KW^U_D(O\!,
-M$K=3D&VPH#`(P!``",`0```@```$4``8A1Z```0!$``,"H`0'`J`$"`?0!]`%T
-M!UE)7DHPJ>3>UZRY*_ZY?$=3DS+B`D"`````@```%L(0`!4"N,8$.ED/?TMX.8
-MS!S"0NO%$N4J"T,$';;`.'/.IVSF'DJ3JA\2[C48M)"H=3DW?#W".SP=3D<V\.!!
-MB0O*O\\ET=3D:3?0\9^K"LIK%H_8]UQ=3DZ!PTYZ3`])C!-"B*;M9. at TW/[1E0%=3D
-MOV9:'T>[:QI&N/1E.0P=3DLL78#^]`YG)W$A.M77$9%R'.T!T"<N'N=3D^FL;/&O
-M4D^VZ]2EJ,YT0/1.8\O1(^W%V:K&EO.Q]J*^`FU.A'Y.1`][%1Q_JYR.2$*8
-M5+6R)+-U*"7\>0K,*#5ZGA3<[I\1ZP>)1A6LB'B.0X_DOS*`YO6T0-_U;S+<
-MW;]2.2-ES]=3DCVV]P"=3D?N215,0VU<`-#R;L*;]Q*@,/!YL$NY)NI#C%.$#<SI
-M!%2T\8S0HJ7D3NB2/NPJ-"@8)5/#//<@/#OC!DD*(B9381'KJB:V/KBS-]:,
-M%E%AY):V3!*W1A(_`P!<`0``7`$```(```!%``%84>D``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I25Y*,*GDWM>LN2O^N7Q'<RX@)"`````(```!/"$``2!2K#F#
-MRX8?'1BE[$8+!A9,/]N98R3:WFTAQDR>-MP\`$@I!JNL(9NMLQ4X-P88H)87
-MKGV_WYT9'N.JTX_$6!L*Z<P,IZ#?!(IW8E^#6[?#IUGDM8NB0BEY-2CEQ at KO
-M\,.$ZL#)EBC5*NPJ7J6CO<\@A*S at Z)`PG at 7[](LZ1$Z6+3-UQNQIS[Q)/]ZF
-MA@,W.^5(:!K2?M_3:(Q^A2Q/XDJR('JT"!L0F.*'KJ1N6:9P3^9I"$)3HH(_
-M$B9#(TNX-UC4,Q(#KHM8<\3""=3D??)8YMQ$S:I97"A<@+6+.))!3`1C.OS8(V
-M+4]4M5WH`+/PA'=3DMC"I2/@;/]?XSZR8W+N2%J5`0C.U.[>ZP'(`(]S[VMM4D
-MC]J5?Q+3)9[XP4P2MT;L9P,`?````'P````"````10``>%'J``!`$0``P*@!
-M`<"H`0(!]`'T`&0&27$)7&*_[T$0H^JBM.]@/9LN("4(`````````%PJ``!`
-M:G?X*#5-(9?J2DT_3;N>6JL55708+!AP*CU8(;FG*>$JZ at AMWG'E%\BJG at W,
-M:1$L#UWC?[I-Z/:Q)1X^3!*W1O-S`P!L````;`````(```!%``!H4>L``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y<0E<8K_O01"CZJ*T[V`]FRX@)2``````````
-M3````##S3D17#F40., at B?IB3*6#V!Z<27.C+;K/[N"+`&<\O:K[9'-CR\0ZR
-M"1SF#$P2MT:8 at P,`;````&P````"````10``:%'L``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.7$)7&*_[T$0H^JBM.]@/9LN("4(`````0```$PJ```P:7[>Y7`)
-M3^VFA>&U:?[$1A[ZL=3D^+PL&D2=3D83^GV at 5\HLHT.=3D&G'Z$S75^#Y,$K=3D&G)`#
-M`&P```!L`````@```$4``&A1[0``0!$``,"H`0'`J`$"`?0!]`!4!CEQ"5QB
-MO^]!$*/JHK3O8#V;+B`E(`````$```!,````,"?437%'^;[B.+[A/N(T_Q;W
-M^IXYFV>U</\Y*T[A.!5UZFSS<W8DRSO>LNQ63!*W1A*-!`"8`0``F`$```(`
-M``!%``&44>X``$`1``#`J`$!P*@!`@'T`?0!@`=3DE(0^#5WH_AJ\`````````
-M`"$@(@@````````!>"+^`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``%PUIB`.3C(7(UZA10L?F:C.RM8%R.H0 at S#")+[!)?ZUYL1%CJ)K!
-MZV"+6U\(V*7NZ#`F?4X/RL1I[G7"/`NB_YK;^!\I29PM+H+E1]YS1'3T6.HQ
-MSA4HRJ4`1I)?X=3D3L4%0QZ8H2;"T5B:\,4L3N*]Y6PGNI4N/[K]E\]Q.S'=3DHI
-M```D=3D;LB]ZF846!BTYKM/J#<K2%W;G1[T?:OWSX$'OV4FS`I```<``!`!-_I
-M+MYIM4X+=3D?RFO\+(&'_RU.-+````'```0`6;)Y:D3E3[I!Y&%!)7,MIB*/Q5
-MLDP2MT;HFP0`7````%P````"````10``6%'O``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*2$/@U=3DZ/X:O```````````I("(@`````````#P````@``!`!@````'*
-MW`F]2Q&-Z;[<).^3,2=3D4OAQ+3$P2MT8)K`0`N`$``+@!```"````10`!M%'P
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A2$/@U=3DZ/X:O```````````I("((````
-M`````9 at A```@``!`!@````'*W`F]2Q&-Z;[<).^3,2=3D4OAQ+3"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``%PUIB`.3C(7(UZA10L?F
-M:C.RM8%R.H0 at S#")+[!)?ZUYL1%CJ)K!ZV"+6U\(V*7NZ#`F?4X/RL1I[G7"
-M/`NB_YK;^!\I29PM+H+E1]YS1'3T6.HQSA4HRJ4`1I)?X=3D3L4%0QZ8H2;"T5
-MB:\,4L3N*]Y6PGNI4N/[K]E\]Q.S'=3DHI```D=3D;LB]ZF846!BTYKM/J#<K2%W
-M;G1[T?:OWSX$'OV4FS`I```<``!`!-_I+MYIM4X+=3D?RFO\+(&'_RU.-+````
-M'```0`6;)Y:D3E3[I!Y&%!)7,MIB*/Q5LDP2MT8'T`0`4`$``%`!```"````
-M10`!3%'Q``!`$0``P*@!`<"H`0(!]`'T`3@''2$/@U=3DZ/X:OW$BT[B+O#HPA
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``/HPI9BBR/=3D-[>D/5F"Y+L?[D7'HJ6<T
-M]$;"_=3D>:B8XN>Z,OWDRQ>)7WPW<4`B&96YD\7)9<*S:4=3D(^:LWSFYAQYIZ2'
-M-K:6!#=3D,O_8OR",O8>S`;/(^H at 8]A3)(Z[[-O3DCV..90LMEXU5M;*G'=3D\%Y
-M5<3\!=3D*2D2LS+?I?O>FY*0``)$6DV0Z;G!ELW=3D at Y<Z'Z7L?!XO^4A8GR\I+N
-ML2,+@!5Y*0``'```0`1$2B$;JU8G72(A-M\4"YX>966`(@```!P``$`%!@<C
-M21F2ZG"CJ/:+Q_.;`Y_<KS-,$K=3D&O_X$``P!```,`0```@```$4``0A1\@``
-M0!$``,"H`0'`J`$"`?0!]`#T!]DA#X-7>C^&K]Q(M.XB[PZ,+B`C"`````$`
-M``#L(P``T!Z]'&&442T)C\EHP)+':YK66^K!>)`_$K7Z<DR6I at VX60C?%*KB
-MS,"VA2[@[TLL=3DA6^D&OR1%(G?5I<Z`D9F`V.3-C4^&SNSZ7%_4J(/1._'<[9
-M,A]X?=3D,_0!>W$Q)37MI<H1#?PBK^I+NM4D]S4"V[YOCR*1VL&HF5G;LD57)_
-M.%&6"J0EY0"5=3D;U]ECLR?/Z!>*&.?[-!0_>GEWQ[?,5=3DA):;:*O9X"/3D>0W
-M8*"M-5)R</'&V4<AAR':T6Y#H#`.KT6OZ at BHK$M at A$P2MT9G%P4`O````+P`
-M```"````10``N%'S``!`$0``P*@!`<"H`0(!]`'T`*0&B2$/@U=3DZ/X:OW$BT
-M[B+O#HPN(",@`````0```)PD``"`,I?GD8$&-FK[V:$.H0/3U2BMTUVJ=3DO+Y
-M91DR<W5(_0B?O`7$6*'C'`ZYZ'],JVT'ZR8_*DU\R152XU-?/4A3UU=3D?R)0]
-M#S4HEI"OM><[']^:4_EC%!B=3D>>RK#OK\9\\0Q:.J4O74"`+]PWRJDU#]D!MO
-M;&0UAS^=3D+4Z8N4P2MT:_- at 4`'`$``!P!```"````10`!&%'T``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z2$/@U=3DZ/X:OW$BT[B+O#HPN("0(`````@```/PA``#@
-MNB4ED-/*X*1)0,2:8U\6[XF at 6LIRZ0I\FZT-"\Z?0%34"QZ6G*<U+;]-IBX2
-MXJ;WS\R`4+6$7[RJF^R=3D)L_O@]8FM2+<W(D:MJL$6WYF,]$CFZ_)2P5>_35&
-MQFKA0/YA0N<HR.NR0O73AO6AT1=3D$8:@<T)/O0Q/:VGTSHO=3DT;@U;.QIOQ+<O
-M.$$%,>^`5=3DHI^=3D'^(U(?8^`T9G((PPG'>#I1(4W at K[BHGJ`MDD*FC]E`?P8P
-M>$7Z?3AN`"C3</TG8UG6-A%3=3D9N+9;:G\]%]"-Y"BVYEY.\=3D8UE]2DP2MT:5
-M0P4`_````/P````"````10``^%'U``!`$0``P*@!`<"H`0(!]`'T`.0&R2$/
-M at U=3DZ/X:OW$BT[B+O#HPN("0(`````P```-PA``#`WH_:&0L#N,(<#("O;"F'
-M)P;):G97\7*Z,DF\6I/`88;"](FF>+YU1G-G.75>9FX7-M\(*4DS#0I]8$Y.
-M.PG(O"L[W`&'6C^;]R at 5VV!G9@)&CF+FI6^)Z,@%WTR[$C!N<YM=3D]FQ?PG>6
-MJV8>B at GW*X"Z?OI?#Z`LJ/V'8U&A:#3RWO#?2#B;I6[BW1B.!AA4+IX>P_"G
-MY>5.1WKP5C7'P$KMD0?VN:&7,<Y[ZW2NK5LRKF!HOTL*G%W(1EY,$K=3D&3TX%
-M`&P```!L`````@```$4``&A1]@``0!$``,"H`0'`J`$"`?0!]`!4!CDA#X-7
-M>C^&K]Q(M.XB[PZ,+B`D(`````(```!,*0``,`OL8QLB<XYJHNNECR(H_U_8
-M?$U[EK2`3C!Z!EBL[CMC>8G4QY)!U-_QM at Y\3!*W1I5J!0!L````;`````(`
-M``!%``!H4?<``$`1``#`J`$!P*@!`@'T`?0`5`8Y(0^#5WH_AJ_<2+3N(N\.
-MC"X@)"`````#````3"D``#"Z:K0F4O'B2FZR0D/6B!1ZK+-KRY3$7.\PV?,8
-M(+L?;&$V-;[DCVE1B9H0BTP2MT:-A at 4`/`$``#P!```"````10`!.%'X``!`
-M$0``P*@!`<"H`0(!]`'T`20'"2$/@U=3DZ/X:OW$BT[B+O#HPN("0(````!```
-M`1PA``$`54Z:1O!);;.S4"B`V;,);%XF$[BZK/?+6V#V!"/SG"^K(K-QH%D$
-M`5<QC3=3DFI2)FG;QR$"TRBNGE5'.&[BR=3DJIA")J-TGF^:?=3D#S'V"#9ZBPOM#F
-M3KCS%]#B?#'G=3DE@"]VD\9:%W'5ES^I;>_C=3D[)>>QG[A](?"6P at F6AM<04OO8
-M*C0S$I`[R#22V3>&9I]6HIRU-KZ?9"QI,=3D0(!,Y)^B-]&>;FQ$ME4B[.%^<,
-M$FL/35"P$$=3D"CYI%!:'JS^CO/0U_9'^8E&,:NM\O1)?_#Q/X^>61SQ-O15:/
-MEMH_H5,/44\&V*_B8G_4P47\K9_<UM:ZM at F04!+AL#KB3!*W1I^2!0`<`0``
-M'`$```(```!%``$84?D``$`1``#`J`$!P*@!`@'T`?0!!`?I(0^#5WH_AJ_<
-M2+3N(N\.C"X@)`@````%````_"$``.#=3D_.627%QC%:G!3W".FIS5!C&-K>L.
-MW#?+]79!BU#^KB]E#]4>SW*8L6&N\H/#2$X3GL4P-O`:%A>Y]=3D;:&9(N&\YD
-M1\!CB8B$8C2P>'PZ#KA?8=3D)Q&]A_HN%W7PJBQITJK:+8/PDT>2O`G$0ZS1WH
-M1'5&K>Y&Z;;5%U:Q])AMRO+V'YU52RW,;F,?@#>6^F<J<@$3GVU<W*K,G^9R
-M?G at U?2UN_%P.^=3DRXQE_E%VXGI9Y"AH)N+O5J78T.6YH]F5X,A8T[)WZRR2^>
-MI\#O$6B_R4M- at BD=3DDS9Y]\',3!*W1FVB!0#L````[`````(```!%``#H4?H`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y(0^#5WH_AJ_<2+3N(N\.C"X@)"`````$
-M````S"$``+`[4(:,"<V,A/1$I:,1FK,_GF]B[C<XS_$()X<TSG.)J3RE\)KJ
-MVS:/4TO;+SMF^XSF4Y(W-=3D:Z!CE(5=3DY-?]^\[Z_`Z\[!\.2RA/A%AYJK$+I6
-M[J(O4OFD((KSP7]*_;,]@*+<G0BK3%'Y?**-]F6%NTN!=3DU@(1T7/PE9:!T$K
-MNB>'3\S0YG>OIU'AUYK43INFQ)6\]+/6IY@'O:W$G>HG6!ZPNF,?L'C$D?NA
-M3!*W1K'%!0#L````[`````(```!%``#H4?L``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y(0^#5WH_AJ_<2+3N(N\.C"X@)"`````%````S"$``+"!F*[:%,8XY6,U
-MJK("4@!Y9M\#K*)7D9Y]%-;(&@M#E(6#N`EBF75;)^4[WJA=3DO3@:$88:R*S\
-MXA/U_,^E`.2G5<U4'Z@#`XBYMU<B+D&`]1GSVYTOQ at V`WOGO"3`(ZR$`(0?0
-M%X_X^#]C+N11FXWY*W*P7(-^GE^<-_?ZVH/%2-A%YIFA)!;YG/&^4'J0"-XN
-MH;W;3'^5!&"E6I2#-*!!%ZYOP%`S7)2,-"`33!*W1 at OC!0`\`0``/`$```(`
-M``!%``$X4?P``$`1``#`J`$!P*@!`@'T`?0!)`<)(0^#5WH_AJ_<2+3N(N\.
-MC"X@)`@````&```!'"$``0"VE[7ME$]])DP-2/*=3DW;1#UD%`Z2J*:*N[,-ZD
-M:+B&DC(:`9\]["VCF4(4U?EV\:^OCGO(1Z8TO.5$(XV'-JNLR%`KOUTKZ9XR
-M%8C!5&,V\?/FK)K&T)MDN<+[Y`8=3D)M%@(=3D3%"A*7$ZN$G;(X(`7GHD!?M.XP
-MC2CI4%$7LU<<^(*D7T`H(^.P*%0\!&XY$V+\L)W?,>)=3D>]VKR"CFCD5:.P16
-M`GB,E#DPQRENVBP9M]T8K2'O!92),%3H]5Y>J76F)PBH6OF0_Z&>^%/D&+'>
-M5?>C]=3DR]CN-W7N/^-V$=3DYVLH?,,@'N`/^LVB'ZHM$\YW!?&YUB&7GT7>B5E,
-M$K=3D&2/0%`!P!```<`0```@```$4``1A1_0``0!$``,"H`0'`J`$"`?0!]`$$
-M!^DA#X-7>C^&K]Q(M.XB[PZ,+B`D"`````<```#\(0``X'_-58"V?US<WS9#
-M60WR1OI6)C90^E-C5A$=3D&/".)_4J#4-$X!QH4V9=3DXHDP7"*4:8SEQI([H*\:
-M9:'_E+(1#2!T/@9$#CR_G<&#-2]5"3+A/QJ4I529IB\L71X7MEML!3QMJU)N
-M/R9WK`Z,B^@:JV]*OZQ&^.$L(2/=3DR05!T5!7>AM4XK_66T4GZN0NL<[`OE\G
-MC`$Q5<ZW5[M/IQL1]+$JZZR.'("?=3D:]X9DT5ED*R>#W\M%@6N.[JQ&OR0UVC
-M21P7-=3DH191 at L'`JZ?U2O?*,>T,2\3,V&K#3/C`%,$K=3D&(_\%`.P```#L````
-M`@```$4``.A1_@``0!$``,"H`0'`J`$"`?0!]`#4!KDA#X-7>C^&K]Q(M.XB
-M[PZ,+B`D(`````8```#,(0``L/3V6#$EI>;6T6T][Y"O*(COT2X3U7X6QK`!
-M!79$3'9O""*9KP!#LG.$*4Y-GCL>"_^&G\3$""K`:,ZW_OO^+(Z?_)*'9T1O
-M&!CFF0K_4 at 0X4S0,V_MD!-.-!INIF:/>`*AET at 7*2<F,37D"6SP\<=3DMXM?(N
-M,12%(Y6&L1!C4*0%P"$K0"BI*3.E_#(-JUM\HA!P6-J8.KV9G2A>`F;SBG\U
-M$KJ7^DM%W08>FBQ,$K=3D&/2,&`.P```#L`````@```$4``.A1_P``0!$``,"H
-M`0'`J`$"`?0!]`#4!KDA#X-7>C^&K]Q(M.XB[PZ,+B`D(`````<```#,(0``
-ML/I/>VAGB(C9POX2:]\"X<]@`5JMLG4)K:0'+90H>.>);)FK6U,N->!:&HG'
-M&G!W\X*TZ3`?KM2S`.S;E/B5AJU??Z)7QLV+ONW!GP')S at W[#%B^,B944?'S
-M,ZM[2-Q=3D"59GOOG5)G<Y>$#"Q[9.26I>2]AN@].\3,&NKJ&IYWFE[6>8!_M^
-M?[5"&TK@)=3D^S/VNEBW;L^EER&SD@'FYIN$H at -K0P]"\PP;'`3*Q,$K=3D&W4D&
-M`(P!``",`0```@```$4``8A2````0!$``,"H`0'`J`$"`?0!]`%T!UDA#X-7
-M>C^&K]Q(M.XB[PZ,+B`D"`````@```%L(0`!4"^(C\F=3DF=3D=3DH;)EHHVA10,E?
-M$JU`(J\34@\P7$FC=3D3JD;ZYI1Y>U03`T7!BXB^J$Q%PI\?W:&+`<ZJ[83^W@
-MGY^N(D)UL0\8ZO(%9"#WJK1W2.;_#[D#S\S"(7OTHWS`@.)7`YXO8<H=3DW>)Q
-MJK"`%*FA[^FH?L7((%?GTHPSB<X`LNH)B4O854V=3DW-O\DBG>4X>7CE#RZJEG
-MU*!(IIYFJ#$CY6T__C_WTK9;`9QB`-<WZ;L>%M:U#*^;'KW_O4 at H-,=3D[;1A;
-ML*SJ^F$+:B&F1$A!#(V*>.>EEP&*GYF_4W$U2U*:1N#*[?##@CGWB=3D&<<LZY
-MWK,*SJ:_M-.G7+8\1Q^`RW,"0#.U/Q.`PL#97>,^=3DG]P568U8N!D(@UO88,F
-M?ID72<IG4Y>W`'=3D]`Y:5K^^EJ0IA"4;W)O/SK4*+J_/[UTYG<2!`954S38Y7
-M3!*W1G5^!@!<`0``7`$```(```!%``%84@$``$`1``#`J`$!P*@!`@'T`?0!
-M1`<I(0^#5WH_AJ_<2+3N(N\.C"X@)"`````(```!/"$``2!%"NUPA\$(X<;-
-M'S.IJM#/RT"*_)CNPD_&*2%;"`ALH*U/TUMRWJ%E-\5 at X-,"8=3D_4]O*%4(5:
-M1<7CI3#6^[G,N\IGB'N=3D4T.0XY;\OAG1P!2+EWIT8U6Y.F^,<LV!2LPEYN4C
-M=3D7&VT^YJ)LU*AJ.VY.S+4*B^_Y-T+J4:Z`M,JI&+%;)Y^*=3DJ2J0#5YMWH%Q&
-MP`#R610M^0S$$MVL\])`K+CGR.T1:XI[_<;Z5S![]?)E454L=3DXI]KQ,%(Y+U
-M_,;K5YF#1*L+&@G$--YP at B@W!3\S[.%\>R?HA\%0L9H;T(HQM0DA(A,=3D7]J_
-M>7N\+79QB;+4FDJY_`&-6_V(I8!71OG`873&`R3['A)UXZF&0`F'V05!9.A+
-M8Q[J04P2MT;KI08`?````'P````"````10``>%("``!`$0``P*@!`<"H`0(!
-M]`'T`&0&20&4T27/1=3DQBT5"@4([=3D<E$N("4(`````````%PJ``!`@4$+ at M'E
-M.6JB"!=3DI0D1"4&_D&MZ]_I7U.XN-N9]<:-02W6?W^=3DW>0J^],DP#69FS3HU@
-MJW_B(\4TN1/@3!*W1GJQ!@!L````;`````(```!%``!H4@,``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y`931)<]%W&+14*!0CMUR42X@)2``````````3````#"\
-M7D5\(XZ2&6,.*`)+@[-'59B'.W^35,M31L9%K&=3D=3DF+(EV'Z<55=3D#KJH?"DP2
-MMT97P`8`;````&P````"````10``:%($``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.0&4T27/1=3DQBT5"@4([=3D<E$N("4(`````0```$PJ```PJJY)Y1;LXSP,.6VR
-MH<Z11M at B;UA:(X3X1LE:@=3D9%;8 at OI:1\4A;5UP2]Y<!,$K=3D&6<T&`&P```!L
-M`````@```$4``&A2!0``0!$``,"H`0'`J`$"`?0!]`!4!CD!E-$EST7<8M%0
-MH%".W7)1+B`E(`````$```!,````,"3R[)5T*M?=3DNAT_UQ>H,J/^G#BRFE;L
-MRTXPL>- at E?R at 2@J+Y`LEQCB20D[@3!*W1CC+!P"8`0``F`$```(```!%``&4
-M4 at 8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE[AGL/8J0(7X``````````"$@(@@`
-M```````!>"+_`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M"+6XF3/&R2(T7C>Z;`L(OE\K+BE8D5;EBB'.\?-04`:.W*3:I!WY;R3R?,J7
-MG0*J3T0,;P57WSYUCZI_`[9<G$YC<A#MG=3D9Y2QQJ$%F`$*9>D8"2\B6IKFUR
-M:(7HMXUAS0B=3DDIQJJN_C1V\*%W+D_)PCK.O@@=3D)9MV+CE%AOCS4I```DLLWP
-M+D-7$2B\#O+LB%YOH`DY&SW"(`>J?L[;=3DGY066LI```<``!`!!QSGS;NDVO3
-MZ-UP%14K_U)9]=3DTG````'```0`5FJ&G^RB9:1S^1J,AGM^EB.7817TP2MT;I
-MV@<`7````%P````"````10``6%('``!`$0``P*@!`<"H`0(!]`'T`$0&*>X9
-M[#V*D"%^```````````I("(@`````````#P````@``!`!@````'"%2BX8-83
-MI?M?"VD0BKE_"W3W!4P2MT;PZ@<`N`$``+@!```"````10`!M%((``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A>X9[#V*D"%^```````````I("((`````````9 at A
-M```@``!`!@````'"%2BX8-83I?M?"VD0BKE_"W3W!2(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``"+6XF3/&R2(T7C>Z;`L(OE\K+BE8
-MD5;EBB'.\?-04`:.W*3:I!WY;R3R?,J7G0*J3T0,;P57WSYUCZI_`[9<G$YC
-M<A#MG=3D9Y2QQJ$%F`$*9>D8"2\B6IKFUR:(7HMXUAS0B=3DDIQJJN_C1V\*%W+D
-M_)PCK.O@@=3D)9MV+CE%AOCS4I```DLLWP+D-7$2B\#O+LB%YOH`DY&SW"(`>J
-M?L[;=3DGY066LI```<``!`!!QSGS;NDVO3Z-UP%14K_U)9]=3DTG````'```0`5F
-MJ&G^RB9:1S^1J,AGM^EB.7817TP2MT;+#P@`4`$``%`!```"````10`!3%(+
-M``!`$0``P*@!`<"H`0(!]`'T`3@''>X9[#V*D"%^#G^G=3DZ"D4=3D4A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``$R at 6NY,M@>(P6=3D$G,=3DO*ZA]/\#HUV?&H$C"\\82
-M?-:4CKS/U/$F^=3D3DEPH+<#-0PTX3%:M, at 2GB;%/7';4T6AK/Z;Q1ZR]FS8!2
-M(H at T]/@TKF,-:-&<]/R(-,\!$W%Y)0MM"[1Z-^Q-,838]UF0UT];\=3DR$_/?)
-MR7!?'1XD8GO9*0``)!87/=3DSQXPK6^)DAHRQR5G_'W!A0CE)9SZ#;4H/W4\BQ
-M*0``'```0`24J^>JBE?1224&=3D*AO=3DY;Q+:<)+@```!P``$`%/"L_'=3DSAJY$5
-M9(*/`,9U6'0=3DP>),$K=3D&Z3P(``P!```,`0```@```$4``0A2#```0!$``,"H
-M`0'`J`$"`?0!]`#T!]GN&>P]BI`A?@Y_IW>@I%'5+B`C"`````$```#L(P``
-MT(MK1=3D0FNEMI790)@,X-_1D5<[=3D)MOA>>=3D)G<28DI@^35AQFJU0^DNO5DN*/
-MWW[\X2^43=3D[KV/2I&H)UV@"PG&WH8-_UP^*P7&)`7QHV.(QA"&YE&K4QV0\R
-MT!!.<03S<\YK[8%*S"T!.P?_0V+/*N:JWL>*#9V$[HE!(IN>FZ/%1J6J;_2O
-MWZ'W%(@'Y7"+"AZ\?:I&47=3DVX+XE:R6,:>.AI#<%RI/$"=3DY9=3D!R2,G<=3D^`HR
-MUHV\HUP,95D=3DQ--1:E-$\/3%5K<>[9`@P4P2MT:950@`O````+P````"````
-M10``N%(-``!`$0``P*@!`<"H`0(!]`'T`*0&B>X9[#V*D"%^#G^G=3DZ"D4=3D4N
-M(",@`````0```)PD``"`V\?KPQ(*/@2'>>V?<R]F`#YJQN5SP>U7QC4G#U2&
-MVW)#A at 0#8CT=3D_.%)V8Q=3DQ2X)XY0EX- at 29QM"$F`TAQ,6$)35`5>I_R=3D8HY3^
-ML+FSHOJU1K\)6"T:A+;CCYMG&;@1>Q`*Q+JDBDL#$=3D^-?V(VDT-Q$.8DO$L-
-MPL&7X4P2MT;^=3D0@`'`$``!P!```"````10`!&%(.``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z>X9[#V*D"%^#G^G=3DZ"D4=3D4N("0(`````@```/PA``#@G*S&90$.
-MR*96T^:\6M]_L1ZIOUV,7&!H0TUR_0V[8;'H-G;P?7EC at -F#:2[$\G*J9<PX
-MEME_<T`'<N2C=3DVJF*@K:R3V:FW/)>"(S^#PH)6@'\S#Z*1@%]'CX/3Y!QLEW
-MWQVA!)<P)=3D!YVLF3;H;C-PWGCK%7FTZY`9"NYZ/O-!`&I-0NN$VDX8B,YQ\5
-M\M[5=3DHV<M71U=3D1D(Q/O>TCOR3=3D&QE5,L7`NAC7_JPAOL&FP5',(X.^UU[*'E
-M at 4=3D;":IAGBJ71S3Z3L%%?C;)N`%RC]1)/RQ#?R;S]8!Q3TP2MT86@@@`_```
-M`/P````"````10``^%(0``!`$0``P*@!`<"H`0(!]`'T`.0&R>X9[#V*D"%^
-M#G^G=3DZ"D4=3D4N("0(`````P```-PA``#`6;4YTO')ESVPK*`DK]JJ]/M?%8V]
-MHB+DE#E=3D0?*IWK^N33O)ALQWU9&,.WG_+MB-DLT4WH%*PMJA[D0`DDT-<I'"
-M-I"&6M'3*8B.5IE?G at 0&J/G.887Q8Z!`J;HF7>*Q8=3DV)I6ARJMKB\VUW:>/C
-M&+#Q6_()\Z)69UCRYEXWE&@+KD61IQ<K$29^=3D>-=3D)?8HU@&HYW\UU;KY#$N&
-M]&`V"E0>+-<OX at 1(X8D037(C!:CQ92(DJ+U-S6P=3DL0Q,$K=3D&&8P(`&P```!L
-M`````@```$4``&A2$0``0!$``,"H`0'`J`$"`?0!]`!4!CGN&>P]BI`A?@Y_
-MIW>@I%'5+B`D(`````(```!,*0``,.3DWHZ+A7*QBO?1%MD(!5O-0`542`*L
-MASX2YT=3D1I1V3,I%M/`$O7#\03CK<3!*W1L>I"`!L````;`````(```!%``!H
-M4A(``$`1``#`J`$!P*@!`@'T`?0`5`8Y[AGL/8J0(7X.?Z=3DWH*11U2X@)"``
-M```#````3"D``##U=3DX<Y,$B8YVEBS@["/^7T(R0#]BO?B^0QW^BK.-9V]K&&
-M=3DJE.T=3DPE9_.[ADP2MT;EQ`@`/`$``#P!```"````10`!.%(3``!`$0``P*@!
-M`<"H`0(!]`'T`20'">X9[#V*D"%^#G^G=3DZ"D4=3D4N("0(````!````1PA``$`
-M];&G(O%@^]0G>S!I7U3_/2.*-$^A+M%IM:$".OXPU?Y>>`IV=3DQQ1B$AVT58X
-MR#T2SQ6WH;G-C&BA/SKAE&?C0 at 7O^6NGQFJ-C),)SM&W_$%I(5.%.NBX2[0T
-M.8@,RI<J*4VHEM!"KVTHN6")Q!<)^->>#A[U8Q;*OM9`9S-VL<M1ATM%AF$$
-MU\^A8]\,PAR<@MXW`4SJ:3PK']G8LIB:)80'PI\<K*]@W!][IE40L/&_Q@)D
-MBBOT5)DKBD[[+JA.H3EE*R09GG">1AI%NZ>N*ZN-+O,(&E#C(4@%[;B<WY at 3
-MY8/Y>V$WKC4I^S#WSN)->0!06(QS&MG!4/"Y3!*W1AS1"``<`0``'`$```(`
-M``!%``$84A0``$`1``#`J`$!P*@!`@'T`?0!!`?I[AGL/8J0(7X.?Z=3DWH*11
-MU2X@)`@````%````_"$``.`>HDK.D&!YG@"2 at CL;%QRE:>"W^6[JW+AC8J![
-M*8'HF8+=3D:A\I2<6GA/):S/>%35V1-&-,$U1OV>;F<O^J/(`2BOD2I4F=3D1D(J
-M89%COZ^V?.9D<!N];I!SF3EJ4P-C, at R#E-[8/GAJZV-\<\99LYZ*"DU/4OMU
-M2VIQK.>IX^!D)<OX:J3;03O\UQ!&LX4 at N?.'-W,U!DC!7MQ;63_5AJ?<#R3*
-M\FR[_BQ.Y)18?X.B0-!1A/$>VX`NAOZ`\NL?62G@%/!SGR&*,V*2(Z__0H61
-M0FVQR6;:-NIPND at 83!*W1BG@"`#L````[`````(```!%``#H4A4``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y[AGL/8J0(7X.?Z=3DWH*11U2X@)"`````$````S"$`
-M`+#KYTY58/4<B'(AP(N#??V0Y7`P3+);(!@7H)ZOBPM.(`[D:.,2CF6]GWC]
-MO9G\.U?UIJ[)^H'(;_[Z>^%KII;MGS+U7G=3DZ'1W>DDQ>DE%Z<0,L@)J.VN-C
-M^F?VGRNT]Y-'BIX;3YI20IA/9E5E/^4E!:"7I3TYB^8MB_:Y[#L!2BWCT?_%
-MXT\K<'I&B7+J]LV1=3DZ@\##:ZY![O?)I?^I":A`[.%_FX`#`;$6DV3!*W1BH#
-M"0#L````[`````(```!%``#H4A8``$`1``#`J`$!P*@!`@'T`?0`U`:Y[AGL
-M/8J0(7X.?Z=3DWH*11U2X@)"`````%````S"$``+#V1^/5^QN/LVU^EQ404)R<
-M@$$V*5]BY7'`[CLT*0B`S@,K'[-VN2MR+G;&!"3YP[(YE"LD3\W_B%EJ\7R&
-MPG-.6K_%4TE<ST!CS#-G#_M$RYP4A-62;+J26[FC0D61A<2 at WAHR%U28(PL,
-MN(T0`71+URCS+U=3D-65&NHE>A%G3`@C8=3D=3DJ.Z^+LDI_1\>%CR^7G'*MB^7>L[
-M/N>%!Z at V&0-7P.LAJS:8W*$9.B5P3!*W1H,A"0`\`0``/`$```(```!%``$X
-M4A<``$`1``#`J`$!P*@!`@'T`?0!)`<)[AGL/8J0(7X.?Z=3DWH*11U2X@)`@`
-M```&```!'"$``0`=3DLTM>K*\.IUU$R3M8&QKO9$5LRU39,MJK8756`*6?G>G7
-MNQC9$XW$J at S6&M);)*4<2:1:#K(]C,,_,XD]?VKPG+YLAM!BN]"&Y:7$I1J\
-M$R1S4`70D\_A^LW/NUIECM1,!K=3D*'OM`'K$LL at A.2BL\O!?YP)1)-Q9R_'>#
-MRX_*O358&3TS<<!ETNEH)O--<MB+1N4=3DX>X]'YSJ0:PX`Y"=3DZ'OH2E1N`;:E
-MF]+!%(*V;70^2YTYW]TO^31T_.Y,W`MZQH`$]=3DG-0!OU*AG)0+IMW#U73,H?
-M0UH"NJ*WT!Z"+,%R,$$`;VF=3DW3DY7@'27WT(\=3D+TS;.6DU^8,UE,$K=3D&H"T)
-M`!P!```<`0```@```$4``1A2&```0!$``,"H`0'`J`$"`?0!]`$$!^GN&>P]
-MBI`A?@Y_IW>@I%'5+B`D"`````<```#\(0``X$@(^K1['HS"?,IWJ at J7@43A
-MLI6T>#,B>%O93\U`6W,G;PUG2Z_!%E"%KS>;Y3_LF7M%#,)O+.0P,ZLI5EX%
-MN0?;DGO%7KT4T!<&W[YZSGD'U8]M>,]Q^X'=3D1L.5*[X8J^39)RJ:H!@)190A
-MY9R[H]5TM\@[.&7U"$IRKL+04&;9]1F^YVM097`[@C#"IO;Z0L6SX/A/'9AZ
-M75FB_4L/5NF&].IO1)+(*P=3D#V*EDS3*I<Q_GL),Q'FV4!9KFY-(:-#14-H3R
-ME9[_L=3DH!YZ7*1AV##N!3MV)1]S%+[.-,$K=3D&KCP)`.P```#L`````@```$4`
-M`.A2&0``0!$``,"H`0'`J`$"`?0!]`#4!KGN&>P]BI`A?@Y_IW>@I%'5+B`D
-M(`````8```#,(0``L!CU>-GT*7!E&`MBAJ]I=3DZ]&R1;LS9W][)S`ZZJ`R%UB
-M-A.,^#ZA`H#["ER$LTR at V#Y6=3DMG?HF at O_#KHG9,T?F>0Y8`5=3D4ZI&?UZ%(.!
-MQM9TD;_DL/:[3TBZ457?>^.?1T,A0`=3DV\O5T_2U2D,T,_*])^V\=3D;8A]B)!"
-MN5"@H*3_!!ZL-^]#@D>7E&LC-DB5`!T4CG>ON:=3DM]2[YU@)B^*@\#?"!)/V^
-M68%L27Q,$K=3D&5F`)`.P```#L`````@```$4``.A2&@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KGN&>P]BI`A?@Y_IW>@I%'5+B`D(`````<```#,(0``L)@&3^CU
-M"63O&`-C)SKT354'*6SV\9 at .QXZ>VL#IB5P*'C&[P53JV>X\!\?I5DLUW+<X
-M95BR:W3G;V;>*'I(#1E(B'@KN.O$JT1JC8P5OEZFLLFE#Z*2X=3D"]TNE[9D?`
-M<"AW$^.<JNA3WJTZ[[U3)%9>5A7__$=3DC.;B[@T,_TOINE$[&_5]-B1(1VN>@
-MN3YTLBO9Y_Z!+EI(18X\";>#,MZ3=3D`70I%*56'X&SLI,$K=3D&K88)`(P!``",
-M`0```@```$4``8A2&P``0!$``,"H`0'`J`$"`?0!]`%T!UGN&>P]BI`A?@Y_
-MIW>@I%'5+B`D"`````@```%L(0`!4+"03O876W&6A/V=3D.IF>!C/^@+$!&SH`
-M!+%HZ:N(G:UMP\G(?5$"*Q87O+!9J!I[II+AI.6E4YH5Q#E04KV&I%F=3DY`!^
-M)-X^D#2A-?V@?7(N8068T(V`EYPJ,DX:^=3D^=3D<Q8PE[)&,RSR6FP)[8V$C455
-M=3DX9#\/&ER](/'HSDWYXSE.F,YGUFS6C7BI#NZV-O at LTZC`=3DUCS.C6!E603[N
-MB(=3DSVNK*C9^L'B<ILD)3-+K9C^(440VFOTF\[FJS]X]LB?[(RH at _&Q)I(B<!
-MNVP];%F3>_X%%J'VRN;"K7_--811!L+T/O5[9CJ#&SHHR^4@'*C(FJ+RI['7
-MYJ8YSU7:M-BXY at TQP083OBQDD]]ZLS/)@Q%\Y@#OK/;AQXZVLX370,C>*I8<
-M[V_`*LP?ONB723N,T;A72N=3D*\&>9[B``6&K]'JJFGU(?"+M8=3DF^M3!*W1KJZ
-M"0!<`0``7`$```(```!%``%84AP``$`1``#`J`$!P*@!`@'T`?0!1`<I[AGL
-M/8J0(7X.?Z=3DWH*11U2X@)"`````(```!/"$``2"DB7 at 5>4UM^<(5'U9%(1\G
-M^J3;-5SDC\/@V'SC>]:_O>K4`NFBV_(Q!8BD-&_#(&/L^^/'=3D,_K?I\=3DBK5[
-MJV0^.]P&^VTGA2J3S7!A,7?,";AD^ZJ]31$1D(Q'?TF/V!)D!]KWM=3DA9OI&I
-MJ=3D]YF2F.PMT72]6IB:%/[63X`@,:MSBH_ at RK)/HJ+[>I:5V$_X%OQ6&#\"1I
-MJ`B7U01#R at U'WW/6"AN8:.=3D'Y;0&DL,!+O+=3D%_%BW#*B^]R3>_5?W0OWL6'T
-MZ9F1SR>P2!;2+OH<O>(*^PM3GXO`L;SJCT9D`DY#:'/2UDPN0N:J4HQC__J*
-M<(@^'=3D8Z5L"3?`<4PK4*(M#4)/[A#YA%?-J";*@9RJU"#%0M,IQ#[[`J%TP2
-MMT;=3DX at D`?````'P````"````10``>%(=3D``!`$0``P*@!`<"H`0(!]`'T`&0&
-M2:3R8NQ8.L6JU3M=3D$'3A+@@N("4(`````````%PJ``!`283J/FH7$T`2/?>;
-MDRF&>HRS5YG:NB9"5^9P\5LY>;GC7<B_*ZE;?=3D%64C1I+4Q\.79Q$^/7)WXN
-MT*GD3!*W1C?N"0!L````;`````(```!%``!H4AX``$`1``#`J`$!P*@!`@'T
-M`?0`5`8YI/)B[%@ZQ:K5.UT0=3D.$N""X@)2``````````3````#!SKLPPLU%I
-MBV*:KT3=3D9.U'1U])*C"R[S^_P*:G<>=3D/6Y_<NV8$I+%WQ4019$P2MT8+_0D`
-M;````&P````"````10``:%(?``!`$0``P*@!`<"H`0(!]`'T`%0&.:3R8NQ8
-M.L6JU3M=3D$'3A+@@N("4(`````0```$PJ```PUROV`.GAJ;8Z.UGE at H8*&*#9
-MADY,`2Z)[Z2"A.^X_N8[S]L?J#=3D`6EW?!>1,$K=3D&7PH*`&P```!L`````@``
-M`$4``&A2(```0!$``,"H`0'`J`$"`?0!]`!4!CFD\F+L6#K%JM4[71!TX2X(
-M+B`E(`````$```!,````,!Q%=3D:Z$X?-5ROQ8HWOO\T47_2<P'-ZK[DD6^!=3DG
-MA"!?"?'Z-L2?%09L$YQO3!*W1G8("P"8`0``F`$```(```!%``&44B0``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE=3D)KA!Y2QK5(``````````"$@(@@````````!
-M>"(!`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``PH4:(LCK
-M/;2/1)L1M2/J1S$-K]"\-,B<Y$KYY<I5%/^LH-X?4EC"WYD%);K%YR/L8"!W
-MB0<SD`H^12L[]<+);XOQ+L`9C"\0N;=3D6^,I7(8Z;W[G>O4!5U$VO`@UB2<'@
-MC6@,?O:YE7$8H`G#'E&W6FZ,FM%'Q8=3DO4FRM at 66O/J$I```D5]&)^SJ)S<P)
-MWP]\_A6*9.+,)Q2/,N7J_;/+](Y;L3HI```<``!`!"SD`3JOPF$A\&K`=3D%-"
-M+V3(.*R<````'```0`4H!$S/E4N]IKF6\%@1-2CV!)M?TTP2MT8"%PL`7```
-M`%P````"````10``6%(E``!`$0``P*@!`<"H`0(!]`'T`$0&*72:X0>4L:U2
-M```````````I("(@`````````#P````@``!`!@````'U")2S/\&4+[<=3DW2M'
-MY+818Z$YD$P2MT;U)@L`N`$``+@!```"````10`!M%(F``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A72:X0>4L:U2```````````I("((`````````9 at A```@``!`
-M!@````'U")2S/\&4+[<=3DW2M'Y+818Z$YD"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``PH4:(LCK/;2/1)L1M2/J1S$-K]"\-,B<Y$KY
-MY<I5%/^LH-X?4EC"WYD%);K%YR/L8"!WB0<SD`H^12L[]<+);XOQ+L`9C"\0
-MN;=3D6^,I7(8Z;W[G>O4!5U$VO`@UB2<'@C6@,?O:YE7$8H`G#'E&W6FZ,FM%'
-MQ8=3DO4FRM at 66O/J$I```D5]&)^SJ)S<P)WP]\_A6*9.+,)Q2/,N7J_;/+](Y;
-ML3HI```<``!`!"SD`3JOPF$A\&K`=3D%-"+V3(.*R<````'```0`4H!$S/E4N]
-MIKF6\%@1-2CV!)M?TTP2MT9%3`L`4`$``%`!```"````10`!3%(G``!`$0``
-MP*@!`<"H`0(!]`'T`3@''72:X0>4L:U2:.-U;(D[SF(A("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``#RE:;R)8":$+6^F5/Y^;ON88LSZ30>1G0/LT6%]SH.\F!$.
-M\5H:/S[!WL46<$'6^K<8!EUN]O63?T3(LJR8*H@`D?`C#ZZ4GFGGE!B-C@`9
-MCR$2>^^)@)>1W]<XP'Z92QW@>'P'/U#L6LP9>Z5;;CU08Y!L^=3DI*4Z]6V(@1
-MA>/Q*0``)%L'R4\4]S55:^IV(KN40";T>N*=3D44[>E":'/+DJ]$)=3D*0``'```
-M0`0&&\_*E$S(4:Y8/14;FY4]&G&Y/@```!P``$`%W;W)"UV+EYRN(LW"4:EU
-M1)MVSI),$K=3D&V'D+``P!```,`0```@```$4``0A2*```0!$``,"H`0'`J`$"
-M`?0!]`#T!]ETFN$'E+&M4FCC=3D6R).\YB+B`C"`````$```#L(P``T#<9ZKAA
-MK*6G[T5E'V!!5&IGP=3DWD2*BE,FKNY6=3D,4#<""<"6B:$IN(I3W:@2XT&'%.0]
-MF:AP%20Z(M<Q]AU!FEVG)S)&$_;J/]%SXTWE#A^'UAF77+OA8M-7<!O.^<7$
-M`]Y417#CRMDN%SI9/*+UX4MIFU`2:119W%-RP[B[`JPV8A-N;P+C$M%T_J^)
-M&-3GL]7KQ;F-!-V8`_0U^&ZA`K86=3DKEL at 314"K`4R\V$T4 at 8^<6XTJP at J&&$
-M5I(^)<5IQ-B\\6U=3D,0*-8FW<9TP2MT:;D at L`O````+P````"````10``N%(I
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B72:X0>4L:U2:.-U;(D[SF(N(",@````
-M`0```)PD``"`-_`$@'%@]G5QVWIG-7FIA,SOKN[`FC4IIQ)X:S:WOD(UL1)K
-MQN(0`6'%Y at O#"Q)(;?NDO]YO,0OC[M!6B;D)C`+4%CH3>[I7%*M2OETD?HV%
-MDM'B<X[=3D17II1Y249T1-%AK!D6U at 6Y)ESL9M^.Z\<#,BA=3DDSD/C`/0XW(TP2
-MMT9BL0L`'`$``!P!```"````10`!&%(J``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ72:X0>4L:U2:.-U;(D[SF(N("0(`````@```/PA``#@%</4.[Q>-T at 5@`P`
-M15Z0<97^6M-JQ'P7YIE+6_U%9IR\]$E,X\L(8<,91\S:2+OVI//'FEN#LLV[
-MKB15[&$]+%#`_GK-'MU1YS,A8#@JX3.M)N(^VJ6"<CPTCIN!__*1+G..NI+Z
-M1LTU at 3).VC=3D:7L0,8\^QH71,(825/4]3HOD%KD"(]#'2+G+ZY0E*F&;PKPSM
-M`9C+9?V?D^J^,;@F8I8C]@`Z2^E+:^,!-"!#N]<C<'X4K?X+9?X?14=3D<>F2(
-MK/]*$(M#?/"."S<W:]ZZ;-HRAM<+3B]W_`?^K$P2MT8,O0L`_````/P````"
-M````10``^%(K``!`$0``P*@!`<"H`0(!]`'T`.0&R72:X0>4L:U2:.-U;(D[
-MSF(N("0(`````P```-PA``#`GHHRD9"NQ5\E;T:`.8Y8%T$"#KN&GXQBBFGW
-M"]"0[MD)LC(=3D.MTZ at B'M1JEZX)`<*32V*:JA2Y&]5B(Q4W`RPMC]J*6DO^]@
-MM$7[`CTR\S8U+`6Q.)8>:N\6<AHM21*?M6Y.ZKND>1/G9$^&/LC*(3)$-I&8
-M'YF*NG1 at D`BIKGFC?RO+3X:XCBKZ%,DSA1;"WCD5PT<[X&+Y?MQS7BW9B_7]
-MJ49.BM"8NZ[A at D]WG9NVCR'D,`>>SR64#]Y,$K=3D&JL<+`&P```!L`````@``
-M`$4``&A2+```0!$``,"H`0'`J`$"`?0!]`!4!CETFN$'E+&M4FCC=3D6R).\YB
-M+B`D(`````(```!,*0``,%S+@^7%6^J5LB/['@$8334>K>D>8$DGP&7[JH];
-MC9_-Q at Y?3LXZH.@>@7XT3!*W1A+C"P!L````;`````(```!%``!H4BT``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y=3D)KA!Y2QK5)HXW5LB3O.8BX@)"`````#````
-M3"D``##7#7"7P*8.<^J at JDB'V)TT'M2:Y9I0Y!?7*,C52*'JG.Z4//T4@``/
-M;OS=3D$TP2MT80_PL`/`$``#P!```"````10`!.%(N``!`$0``P*@!`<"H`0(!
-M]`'T`20'"72:X0>4L:U2:.-U;(D[SF(N("0(````!````1PA``$`K`&UH`T0
-ML/E;GCK[]6=3D'^, at 0/.&%-Z=3D\#H,V#R`.3Q\,PFX84)U=3DG_RBINZH07A8[@?T
-MH4`"9CGY+J+5WR+*9I&U+H3]UODE4$)%A(OV;<B!FC0YB0!`3*PQ`"#4X/G[
-M\N$W9[9BQ/TQ;XZU"\2%B,[P#(=3DG96:N(?7%4^2_X at EM>B$90)^8G<SCB<L'
-MGL6?X*:$B#09Q;:=3D1;$`O7OX=3D"C%Q#5-#>F6#8W]L7#BM1'S["ON at .@+8F;+
-M7!=3DA[G64784*OH;-T-GC\*[DB_<E=3D5%7FJG?TB&Q74+968\&XJ#5@\^C3.`J
-M\SJFS!<NLUHH>SKYW`=3DP2!V!"7VR3!*W1M,+#``<`0``'`$```(```!%``$8
-M4B\``$`1``#`J`$!P*@!`@'T`?0!!`?I=3D)KA!Y2QK5)HXW5LB3O.8BX@)`@`
-M```%````_"$``.!ZFVE]PI:]S9OAMI(.F:)[?_`6O5=3DE.P>N1AZ<(OI!<21'
-M0Q0A4']E[&7Y+TR8FQ7PQ+MV.6B:/+=3D*^RW4>_RK(5:`RFF*4'- at ZP_U$2;O
-M'O&#X*85^CM:2W?5NV$CSUV at 8VB(IGX2R!.?=3D-0T;"H8AJIXQJ=3D9_JCBY/6]
-M_T at 4*M?66%Z?5EJ at HKZC?M4CLM9J,+YK&3;$9:+M]0`A#XI<9AV$VJ'I>@'K
-MD'7`>*;Q1VE3T^O5T)OF,R2@\#Q"OJ%JG[#EO8\FI at Z$I$P,,=3D;^,\HE>A:!
-M'`X.F]=3DP3!*W1@<;#`#L````[`````(```!%``#H4C```$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y=3D)KA!Y2QK5)HXW5LB3O.8BX@)"`````$````S"$``+#@)/';
-M4",<SH^PJ?AY38DC$WTG\Z^X_C\'<-IK\QN8](9VW[$?4OY/>TVN=3DH6)^'D^
-M83*1AH#[VQ*]T=3D.X)J]<D4%!G6JL9CBKJXK^5H+LH4TT"6.YT%FU14;T/W]%
-M7*PAH.@@0WPZO(DX5\\=3D-=3DLVZVP!:3$-N;2<_$0,U7!.L8H4$3FQC%`'V)<B
-MVOWER*Q=3D5$][JE.SY%U?XYSG3=3DP-W\VUQ=3D>K&$U>>P>83!*W1IX]#`#L````
-M[`````(```!%``#H4C$``$`1``#`J`$!P*@!`@'T`?0`U`:Y=3D)KA!Y2QK5)H
-MXW5LB3O.8BX@)"`````%````S"$``+#;F_++A1XD<6#8:^-HNS8!N1JK<S8R
-M2)--?D1E+(R^JFV#Y+^VUCP#D$REF@*"`YISK>P`OK*>__+BJ9CM*N>1C:XH
-MI$:^#\_K$T?Y,\J>T':8X5I(]8+%;S:!_&PBC at K&1>1A^FWAEPQ/DW%X$Y.L
-M?.0^74KR>!B,&*.`8H>MI2C^6A:=3DZPI at 4^D72I$Y:_NY@^G4\PP2^SI>)DCX
-ML.GV52KU7T1^9L".SX6D3!*W1LA;#``\`0``/`$```(```!%``$X4C(``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)=3D)KA!Y2QK5)HXW5LB3O.8BX@)`@````&```!
-M'"$``0`_]5.-#P8/HX#\#C&Z;?OPW(E'M-2KL%.5GMVNW86A0:M.2MZ+R#^.
-M.YY[%)3YU$X8ORMI5G]T;F-SZI8=3DP"9)G8VRH5U;`N]"9P<?[E[(%HO/.!\2
-M__Y/7.R8/%$<]&+:)0HQA`@".Y/NP<-0\'^F:#NM>^W at WATTN=3D6R2VJ2*O\S
-M]M=3D=3D"(M3*T7>`KR1[F at VFU:"12`2Q_UG_(T?!4G0[86*M:RQ;J0$W)>%DFY[
-M"N`CHG#B"<.":BM&K9H9YV@)J[DIL["&]<77R3?..I;Y7(L70^4E'H(;!J3+
-M+TY0#AC$YSX,1("BB[E5:JG6BMA^5W(>/)2ZE,CX3ZE,$K=3D&SV<,`!P!```<
-M`0```@```$4``1A2,P``0!$``,"H`0'`J`$"`?0!]`$$!^ETFN$'E+&M4FCC
-M=3D6R).\YB+B`D"`````<```#\(0``X(;O_!PP63A69;09!I1:"FVV$YJ7][$Y
-M`0G)DHK(=3DY,W))UQ1]9!'I/D7,`QKA/<-R!;#K`]J\Y\Y.<-E:OLFIJH5T>C
-M63^0_"D@(PRX7HI?X$[0DYRB.HQ?AIML7<%[K35>[6#[A7EZ!35EE#DBDS3T
-M+-/G`CY7Q#1RC\#L>J4 at K>D3!0 at FDZ24!H1^U,:TO at 3H/]FIZX\T/]QD8A5I
-M%"1X4(42%.E9K!3']C=3DIHK)GCC>)]U"07IE93)$JFY]WL0D'=3D__9ZL6PS7:5
-M:G;HENILS5ZINJ_Y[0\0`EY,$K=3D&27<,`.P```#L`````@```$4``.A2-```
-M0!$``,"H`0'`J`$"`?0!]`#4!KETFN$'E+&M4FCC=3D6R).\YB+B`D(`````8`
-M``#,(0``L`?>I5!ENL5F$C_[6$]7R,"<<?5 at .J9#6E\DW:460I/2<O@%5OS^
-MU)A5 at -8PXCI[OW#PDVW#/IT.D7-C0N*&`VN(F;EIZ0!]>*O),DUO31\*?NTR
-MWW?4-L,QEW*H+]@T/RKUW13SV-MRY&K at .\LTJ=3D\&$\0IM/W=3D."=3DBD#-[?JR*
-MG\U]YFR7.WP#\KTDGLKL5BNCDZRD"]'`.7M^!*5V_#X5.I,DU!'Y;M@&_;],
-M$K=3D&*9L,`.P```#L`````@```$4``.A2-0``0!$``,"H`0'`J`$"`?0!]`#4
-M!KETFN$'E+&M4FCC=3D6R).\YB+B`D(`````<```#,(0``L%(HDCC?=3D445[.JD
-ML7G'T>ZYC=3D-CQA[BS:A^-MFS:)\`#$$C)&UU2;)J&@H4YK,OU9/$\8'L.+_W
-ME5ZW%T9^P7;(?0J&,L8R8Q/JLQA)%QM5K?P14*R]($I_#$A,)'8X0WA#W&FU
-MQUL:F&=3D46OKHV\#!*%Y9>@8YSW;[65\W=3DM;IA>O,]UE'A>X#W.WNG-\SW=3DXB
-M`,?\@(EY$5T:.VQ%6Z)$1!O&:#=3D at R!2C(Q!,$K=3D&_\,,`(P!``",`0```@``
-M`$4``8A2.```0!$``,"H`0'`J`$"`?0!]`%T!UETFN$'E+&M4FCC=3D6R).\YB
-M+B`D"`````@```%L(0`!4)J2 at SI,6.Q^,L/BA;#U2K2YNT6ULX_#V"<O7]!B
-M!(HN.0;;YU^5()KBKD6Y!)_T;"%*4*DMMK[_VA:Q$7($W&IQ8VL=3D%\ZR^]"$
-M/M'F1%[J/UBSA!#\"(ZNT9B],"MH7W],<,D4[[*W4.Y+!0N_-@"TW@:]O@^M
-M'*N,\JG$:70Q1,QZ]4K>FJU.D3G'76BI5!?@LK,_;ZH6<H84SAOKO4Y3YXZB
-MU/7"%"F`+%<6,4IPG!^."O=3DWW-.!XNUNUWQ*QZB#UA#Q/Z1$A^?^P.VOV!=3D&
-M3PU*_SJ&R>\BKJ[MA/H^0)JWHTSZUWZP%&U;))Y;8URP2)K+1HYD*>&M`T1W
-M<]A-O?A!'>XW$6J+5AD_XLG at PY!NIJ5-^^J9HX-_.NO'&N8\88.JXNU5?W\0
-M%99I>;>/AJ?Z$/O_GL?^*5=3D=3DT.TA&B(,K0Q1"4?#^N6R3!*W1BCX#`!<`0``
-M7`$```(```!%``%84CD``$`1``#`J`$!P*@!`@'T`?0!1`<I=3D)KA!Y2QK5)H
-MXW5LB3O.8BX@)"`````(```!/"$``2!.\>`*!SQ1-E:*7;!)3?\?7K&#V`9H
-M&T&/E4X03Q1`.]?,<!B/'88*'ISLANNCF9YL2 at T4-D>H2)Z\"#/>=3D01V?N[J
-MH/G"[JE<WDO!<YJ7A?WJ$SJ4S]5LP_:6*4WI)U46`2H)ZL$=3D#'2WWZ"9Z`?V
-MUU;FVC"J.,N?L6F$#0%=3D0-]*CO(#T;WUA15`<1`064ZMU';87#EB0J`@^1-L
-M]>F?.KQ5M__)H4,"AQWM_N]S"H_)KM9Q.$45X=3DB!_R2C?]`*#D1L9(5'H]^;
-MHNW99*%2!_,+FMBV)ER!A^-4^ZP,1/W][^11Y,*'G\0N@#[&H/S7-:-%S1SJ
-MV_*A7P'+4RBMTZGQQVV'A-J7V9E\APO5:"2AVG0Z&T>Q_SS"OTP2MT8_(`T`
-M?````'P````"````10``>%(Z``!`$0``P*@!`<"H`0(!]`'T`&0&204=3DV.3\
-M4I"PKZ88QZ]U!+0N("4(`````````%PJ``!``F(`\R:3'AJ$J`5J`.BZZY';
-M[J^-?\Q!HW%Z%,HX_=3DQEL8*'/2<URX-1&S0[]MD(WK8:0+(;9X3"4.=3D?3!*W
-M1H0K#0!L````;`````(```!%``!H4CL``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M!1W8Y/Q2D+"OIAC'KW4$M"X@)2``````````3````#"*'LG*?X]XWH*8PWB<
-M=3D[;['\TAOV=3DR.NS&YT[Z#C'/N96)MKHIVP_4(,,\>$P2MT8_/`T`;````&P`
-M```"````10``:%(]``!`$0``P*@!`<"H`0(!]`'T`%0&.04=3DV.3\4I"PKZ88
-MQZ]U!+0N("4(`````0```$PJ```P#VZ8<<./(O2O<O`$\C=3D\./(N!#Y_%Q"Z
-M35WQE2&4&Q!+20'1UXH3+*/IGA],$K=3D&D4D-`&P```!L`````@```$4``&A2
-M/@``0!$``,"H`0'`J`$"`?0!]`!4!CD%'=3DCD_%*0L*^F&,>O=3D02T+B`E(```
-M``$```!,````,`D5O^RMFTW7GOH^B'?QTY7P-\!)Q`D at IIH`F7/I7!C&T38-
-M$0.A<#D-*66&3!*W1FA'#@"8`0``F`$```(```!%``&44C\``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEM3U8;BIC=3D]\``````````"$@(@@````````!>"("`'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``R36]K.U%1U&J[LR4
-MXASC$&99,1(EQRS\YG)V\?;]07M=3DKIFN38M33M1>)27TTV3VRP=3D0&BZ=3DM](X
-M+/"6*8'`&_'FTUEZ7Y3%:4OX[FJ1178P>3+4`-R!`"Y;O0GU6GK4=3D<GX1P#/
-M8+M"@_CN^_R=3DP.#RS!B/W:V`GDJU0]K=3D+^8I```D'.[29(]K6J>]L/VDO#4_
-MG*&2:V(I.7V=3DEM8\I'EX*>`I```<``!`!$74X0G;$2F$-Q$$'FR'RP3W$09^
-M````'```0`7N+KV=3DL.H-V;N#N+GQRYB]D=3D%_6$P2MT9M5 at X`7````%P````"
-M````10``6%)```!`$0``P*@!`<"H`0(!]`'T`$0&*;4]6&XJ8W??````````
-M```I("(@`````````#P````@``!`!@````&,,&F_N=3D"[R4)/G/'9ZMM_+?R\
-M]TP2MT;79 at X`N`$``+@!```"````10`!M%)!``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A;4]6&XJ8W??```````````I("((`````````9 at A```@``!`!@````&,
-M,&F_N=3D"[R4)/G/'9ZMM_+?R\]R(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``R36]K.U%1U&J[LR4XASC$&99,1(EQRS\YG)V\?;]07M=3D
-MKIFN38M33M1>)27TTV3VRP=3D0&BZ=3DM](X+/"6*8'`&_'FTUEZ7Y3%:4OX[FJ1
-M178P>3+4`-R!`"Y;O0GU6GK4=3D<GX1P#/8+M"@_CN^_R=3DP.#RS!B/W:V`GDJU
-M0]K=3D+^8I```D'.[29(]K6J>]L/VDO#4_G*&2:V(I.7V=3DEM8\I'EX*>`I```<
-M``!`!$74X0G;$2F$-Q$$'FR'RP3W$09^````'```0`7N+KV=3DL.H-V;N#N+GQ
-MRYB]D=3D%_6$P2MT:(BPX`4`$``%`!```"````10`!3%)"``!`$0``P*@!`<"H
-M`0(!]`'T`3@'';4]6&XJ8W??6W&-\QFR04\A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``+XOOGUZQ4+BNZ5,<(9+*3EOJ/MWK^GK"HE&-ZC?T:<YAP3SRK#P[`DN
-M$Z*+3:G)U=3D4Z'`A`L>V:+MJQG3SB*BG1AG0DM/I/B,-"3LVFQ7LO538.=3D?V:
-M6_;M8ZBK.CXR*'UN+AXVB;TW,("XE(86))@DC1VNB'D]98F93^59@/I3*0``
-M))?OTJJP%+\XB=3DU[\DF_.4(^@1DV<5HS1!]!_WUYAG9I*0``'```0`3#\<3+
-M+T<>F-WM\4+<,5Z:":UW2P```!P``$`%EP6RHOL#[@)2F6B7(:IM`Z39FC],
-M$K=3D&4;D.``P!```,`0```@```$4``0A20P``0!$``,"H`0'`J`$"`?0!]`#T
-M!]FU/5AN*F-WWUMQC?,9LD%/+B`C"`````$```#L(P``T&#(H=3D2:_SV)FD,E
-MQH3=3D]ID#AV&SV:L,/:B%K6N@^7Q>EM8879?`6E8*%O'$!*6:FIR/02D:_Z-)
-M:\^L%Z(BXR]BHCAO+VL623W9YLEP.TS%A;"!HY6^CR_DS]]O!SJP!1,59/+Y
-M^O!NPP$1C$8#5[Z$UEDB(V%]YV*`9&N+UI3J!&EYVIB^\!.-3+>I=3D[GA0/'+
-M%Y`&EX^\MJR+_LL$I#1N63KS-<%6P+X2M=3D03VUK^V#@M2"WFJ?@EP5-<4.GS
-ML=3D;,"!,L8EY*;;BS8$P2MT8,T at X`O````+P````"````10``N%)$``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B;4]6&XJ8W??6W&-\QFR04\N(",@`````0```)PD
-M``"`WV;2Z)<!PH<7"8!LP<G>>V^DPFF5<\/;>CR]XN>S&,HM=3D/Q#YC`H!I9N
-M.35%^C+6EYG8>J[IM)R7P!I`B@&_0UP#G:K&WWK#6!ZT=3D8\ZG[JYI+DI?]Y`
-M/W)9>CV+22S"-D_%G7ZXNU/!02>A]'V)T&&]WX<2G^H5]?.4CTP2MT:(\@X`
-M'`$``!P!```"````10`!&%)%``!`$0``P*@!`<"H`0(!]`'T`00'Z;4]6&XJ
-M8W??6W&-\QFR04\N("0(`````@```/PA``#@]LUL4#2#X5WU.J:ONQ&248,M
-M3I$Z$QGB4$8^F/[ZFB53!YOAH_?E;.ON*BNG/0CX[IO<N>9'X0Y7U at F?NL56
-M"R6ZQD95.0QK/[`^'R at 1Z:N3<^/OX;EEC3$=3DL7@^)`<5K"_IQ4^WRMLT00;=3D
-MO0#]_D!!FURXU(TJ9"MSA9?3<*H</=3D:XSJ3$`7[MA:A-3!U0`.5R3BP"_YB;
-M\O6C=3DQJ-(TA^T/IK3/>_09HU8)@U:5<@OQ2D\Q:CH^Q]MN`W"M%;51[)!;1:
-M9Q)=3D62GRN?<F9DKW<]F:(]-I4LGPATP2MT9)_ at X`_````/P````"````10``
-M^%)&``!`$0``P*@!`<"H`0(!]`'T`.0&R;4]6&XJ8W??6W&-\QFR04\N("0(
-M`````P```-PA``#`41"W8A1AO@%H0&1`A_C_<@Z.,VQK7CJU@%_!\R=3D1+U[]
-MJ>K+J(JN*Z?2_5HE'&$OH.O,-4[LB/75QA5UUKEGV]Q&F?SW%6/*P4&"//8G
-M_>TX:VF&Z&'XGJ$SJ7X$6SLS;+J)G2OUWE:D9`PHQ;S<:LQ.23I6$L_GCZC>
-MYX0*<[#R(O?;`56K.YJ^`]GWP`ON5JB\]]4O$$YPX<_RN[@REX&S,"P6^HKR
-M'`!HK9;I/PI8TPCAAAAKE<B&251,$K=3D&#PH/`&P```!L`````@```$4``&A2
-M2```0!$``,"H`0'`J`$"`?0!]`!4!CFU/5AN*F-WWUMQC?,9LD%/+B`D(```
-M``(```!,*0``,`<^;T^M9W2/%^!%[J@$LQT_AT,CGO-*,'<:MKW>T"?5CJ:F
-MKY%*\%S_BEQ&3!*W1A(G#P!L````;`````(```!%``!H4DH``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YM3U8;BIC=3D]];<8WS&;)!3RX@)"`````#````3"D``#`&
-M!/92$7;H$88M$?*B>Y^N[`2PULB[IV`#R06USHWT0%/C=3D/W#C/T%V_"^WTT2
-MMT9]`0``/`$``#P!```"````10`!.%)+``!`$0``P*@!`<"H`0(!]`'T`20'
-M";4]6&XJ8W??6W&-\QFR04\N("0(````!````1PA``$`S5U5VP)VU:^P"?3]
-M2L]@&?`>9PBAPD%U&X49$'Z4*GH.ITBA%.*F$EJ0=3D%N&*(MGJ[+_PHQIDL,Y
-M*ZANJPVS!$JSWUP%(I.''?]!A7.C['&(9ZB>O(.=3D&'[)-!O)3S:M-M.L,W=3DJ
-M61.C_FA![2Y]?;#*?CNEH6\%&I.9N>H_X>L at .9([DS=3DI`G,QW(G0:4R_[%<=3D
-MATUUK_8]/5>J:V>=3D+2R2R_4<:-D`<J,7!-G7;8V'QR6I%@WOL8;*"WM&L-GQ
-M7I[ELB\2,Q3N_6BY]7J&9#'GHQZ4!7S)\11<+FP95,J:7IBC9F_&JS!'HX1G
-M3WWNF%`HN$V0]T$.,\GT31*W1LH=3D``#L````[`````(```!%``#H4DP``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YM3U8;BIC=3D]];<8WS&;)!3RX@)"`````$````
-MS"$``+"/]SY.6U2>!:PZ#!/)>YBLRQU:V`98)XD6!*FA>;QQM>6T%-C28-13
-M_S0&M\;^-(ME.YAH.`,.[^E%)!2>)*0=3DZ*^N+PUN_]E^SE9)#2[&:7+=3DE:VN
-M7.K5(FXV<61US5;/PX)2(HL.9M at AF9B6I.[!RM*=3D^.R0"2QO6F=3DZ%K)Y[-:Y
-M".I]D6#F*7L%Y-O>/ST,L7:E_!WJ9[H^SL>-MXR&UP"."/VTBBU//ZG531*W
-M1@(>```<`0``'`$```(```!%``$84DT``$`1``#`J`$!P*@!`@'T`?0!!`?I
-MM3U8;BIC=3D]];<8WS&;)!3RX@)`@````%````_"$``.!8SP3O*;(-36/J_26X
-M,X4+."":F^SI?MN15.W\R?,1!,S`[(/,<1LXS"N'[&%9XB270;H:\$4LOVMP
-M^B1[EN)!%M<[*)6&&'E^:^,7>5`Q?Z'=3D[59Y:R=3DNG#"'4I)ZDQEA`BA5*O%'
-M>+5?I3</"BA/B/Y<&AT!3#^Z%5I5[U^P@^;]LV$-B$LT>%'9>8YI9$8$:7\H
-M:JE`NHD1%&[%.UQ<7V3!$#)<"/G</[>!PQNT]2MW8OI@\&!.C[I/1>1^FX\+
-M&8<R97@*D_++33?/#Y]"3E\@/WY52>W0OPJ"31*W1D]"``#L````[`````(`
-M``!%``#H4DX``$`1``#`J`$!P*@!`@'T`?0`U`:YM3U8;BIC=3D]];<8WS&;)!
-M3RX@)"`````%````S"$``+`&CLT>@\C9=3D%RG4U8.L1[PPSGLSK+)G'$*I#./
-M`28:/>[ID'W<QJXO%W(4S<7#>]\1$<WQ2P+AU3%2DL5/"5?C3]W.Q[9D*Q65
-MZ\@CC$I/Z`"),YA;?K^SB.%BRTN:VSBMTAH/L+SCEOP*`.+*$@4M4Y1WU[&?
-M[L%C?1:WI947#>P#)*>G2HOIWVP\'W&>P`?T`^%:Y&6]=3DMW:V8;=3D*JV77^O&
-M@)ZGL?U4&<_631*W1E)A```\`0``/`$```(```!%``$X4E```$`1``#`J`$!
-MP*@!`@'T`?0!)`<)M3U8;BIC=3D]];<8WS&;)!3RX@)`@````&```!'"$``0!$
-M&0G$4OAA]*F7VSA8+INMB#@Z+,^F8@]14!@K>\9^42V-.>`X(6JM`M=3D3P[]_
-M\ZNST:>E(9+,?SBFM:1F+8]S"VQ5*_`]P$55\TA]BYN,S[U`5#4JEN8+1),W
-M:U?=3DGO>HSU>L9A^2X;,Y%FKV+N4.]0\BO(X;>>=3D,0U&OC,_JHC%DOC\W+#4@
-MYP*%X;\Q9B)*,DYQ:9ZY+N,7\K(%=3D\GQ0OD.GO>+9=3DG^3)'6BP;*B/(K/!W'
-MCPLNKN1/QY(X<ZAY'184UHTPD+V,N%4IN3#:\.^+.[F$;J93C1[GA@;PHX)1
-M-3$2)/XM$OGBL%)\/IVH<A+&>]U:RW=3DZ=3D:!-$K=3D&K&T``!P!```<`0```@``
-M`$4``1A240``0!$``,"H`0'`J`$"`?0!]`$$!^FU/5AN*F-WWUMQC?,9LD%/
-M+B`D"`````<```#\(0``X-'HW'\O=3DE\\C#4NA4"RG?!A-4Q::<`%P05`@R]X
-MAZ/8YDI;X[YJX4E#BS01Z*-1-V8MQ6:+6Z-&%9GUU;"#M9$7[MJ_OE*@"Q]C
-M%,C3>)6JPI=3D-\5E\QT]M^[;XC'NF.M).3M0^:7!`PE[*OQT5/6_V`>&>[TEE
-MOR$D#T-W!_2J>;R9^PER#FCHN(45Q"_W!QR:U*<.7+_,W')'J at E9/D4RJP<^
-MB\Z(ZC+G([`:?LR+&'W-=3D>"NFD^Q8"\A9*`__'>O!^AV?*\>$)9 at S*LR7MO(
-M:"@\/9`]4!\^H^--$K=3D&"'T``.P```#L`````@```$4``.A24@``0!$``,"H
-M`0'`J`$"`?0!]`#4!KFU/5AN*F-WWUMQC?,9LD%/+B`D(`````8```#,(0``
-ML`]Z"P5`@S.?\^1+3'D8+>2/EK;255FVVV1]+)TW,6RC97ONE81S<?D-A;(V
-M=3D<0)%9`9O*X4HXVM'3S)_6BK!.!XOG0']EL5(78E^\9+D>[,8V8/.B\1*%&+
-MQQ05U;65%/TC$G`S36WE%HM)/'@DK2X5_6>0\4[9>Y+4W0MWIG1?VL2O.`K)
-M\N&!P0TE5PJ5<L*-C'%%P?>"5/*:.M at H&7^F*(#E!>]324:+_ZA-$K=3D&`*``
-M`.P```#L`````@```$4``.A24P``0!$``,"H`0'`J`$"`?0!]`#4!KFU/5AN
-M*F-WWUMQC?,9LD%/+B`D(`````<```#,(0``L-Y&2:"W1KOJ=3DXC4WSS^9TCL
-ML+JD7Q)H`+L87]RFJH#)K.W]@IPE^KUR3][G4RKX8V)1H)P<IR*L0 at 4_9!R3
-M3_.DXVZH[9SUPKXV3/:4K4C/AA'X']9U6(/DBE1K#M,]^'@5>%&BEJD//DO7
-M]$/#,)5N;R0LT-V7NSS[1YG9J%=3D.]W6>AX^4M<SB8J*:+-2_ at MO^?A"RG<::
-M]H9$FHC6B`WI^>%\C)EOCOO8Q?5-$K=3D&Z<<``(P!``",`0```@```$4``8A2
-M5```0!$``,"H`0'`J`$"`?0!]`%T!UFU/5AN*F-WWUMQC?,9LD%/+B`D"```
-M``@```%L(0`!4+I)DMIF(L at S\]$8QDZJR.FP4#)S/I6EVUUA;<,SZXCQOYV,
-M1I75U%,+7P,!R"'%#3HW'!M'#C[UD4C6/V:#CN^_!B>)H:XMW\`I1%,>S_OA
-M7P/(&R`4J"UK7S9/IAK`/"5F8R)67^R)+NIKU$1=3D??&?QRTBMJ=3DWC8]_([>7
-MX9>$<0XX?^*G=3DU at 0F[.&V at 1>D?;!?PHSH8=3D.CT$^0F6UMW"K0[EN"?H)-X$.
-M3DMFJ"4Y6T>H+_4,36KN,T at X_"^DH,?;MWJY2[(ATM>QS4)+3)_.AIQ*PAR\
-M"*58().Q]Z[:EW/PNN]DRZMG2?C?`JK8875MWGMJ,I0CRCUC/UZ6CERMK0L&
-M*8!-X3=3DMO`U&'J72S[7D9^X\'AHA_4NJ&-+WL)!I.GS(=3D)`')5"@S5Z]=3DY(L
-M5?H0$S_C@^"I8+7+>&)_D!U\^L=3D.6<+W)\DY31*W1I[]``!<`0``7`$```(`
-M``!%``%84E4``$`1``#`J`$!P*@!`@'T`?0!1`<IM3U8;BIC=3D]];<8WS&;)!
-M3RX@)"`````(```!/"$``2"6(>(C#D%H/2:Z?0&B7N$YJC)$TCWGRVPWK-#?
-MT$F(A51LZ_6[Z>O,)S52ZX[Q_BEDTBPE*+H)J1L1S^(J$3\):42J.46'-K3$
-M!Z,4L+T3:0$UB-WJI58'4TM`!)#J[/ZF(.PXHP]`T.L5G3'(S<>UM%SXW4T!
-M#Z.-":9G9@]NPLT<FX at OW7;9=3D,<)_41V3]YM@%#58+*X3]]#G$/W*9LEBL'R
-M1O9S;XS.WF?)A&(XP@&@#63F4B#N],X<'B97TT\TC4,P8A]1+:;T,_9-G at IK
-MY2_J3N99IG.(TNV!"`:JXI4<^:D*TOE^B9=3D`RMDP9%^+>/4M at 3!M8W)))-(N
-MZ"(>%EC<I+%(/ZKLSCH1CW^UH:*'R<:*SK".2, at OHTT2MT8!)P$`?````'P`
-M```"````10``>%)6``!`$0``P*@!`<"H`0(!]`'T`&0&24-7N-=3D2M4[IHZ at 6
-M`@`P?#4N("4(`````````%PJ``!`,QV,YPTGZ,35(*T<%`;1;>W[9Q8\TRU<
-MH&2R<]`0LQ^*280_!1[6AWJ`5(_Z#3^TKU<`X]ZG`%F`TPGZ31*W1J8R`0!L
-M````;`````(```!%``!H4E<``$`1``#`J`$!P*@!`@'T`?0`5`8Y0U>XUU*U
-M3NFCJ!8"`#!\-2X@)2``````````3````##!A6U)77&6S77RL\..SU$BVPZ)
-MV-Z?/7 at J+;@E+SHM':@8[0B)W`_P$8?54$T2MT:900$`;````&P````"````
-M10``:%)8``!`$0``P*@!`<"H`0(!]`'T`%0&.4-7N-=3D2M4[IHZ at 6`@`P?#4N
-M("4(`````0```$PJ```P0RQ,=3DG)J$&N/"X8)L/Z0C1PMTG:U)B03EPP!AD,S
-MB]`=3D,/*H$!5,WT:$:@9-$K=3D&:TX!`&P```!L`````@```$4``&A260``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CE#5[C74K5.Z:.H%@(`,'PU+B`E(`````$```!,
-M````,&-U@*_"`37$[VAWL`[:\51?'1?K!(>(:+,5GQ-'G;H&O)%K`Z+&\.!Y
-M[O"B31*W1IU+`@"8`0``F`$```(```!%``&44EH``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE#>I>T#XBO.X``````````"$@(@@````````!>"(#`'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``&ILD]&V_,:'QD%?VT!CX`J6&
-MA30T6N11L"K>50J57U!DQR(2DLRN&Q0'0,Q-192EFS9^RX\82QY4%Q_QY0IS
-M=3DZ6:(.O'VSYH*T<B$!450X?C&LQ]4-LUP_$`64%7XC38"RG4NB@>JMY"KY`K
-MN*,%IR;OSZ..C-G:R$G<MP<QH2 at I```D$<+9D+)1BGPJ('INWDA9>2[A2W=3DB
-M9`N8=3DV*)V#V1`U(I```<``!`!#&4^QOIR<(R`",-1!3.7=3D0HR<QJ````'```
-M0`681<H,`3<W"*+[PCAZN]'O;#\N]DT2MT9H6@(`7````%P````"````10``
-M6%);``!`$0``P*@!`<"H`0(!]`'T`$0&*0WJ7M`^(KSN```````````I("(@
-M`````````#P````@``!`!@````&5TA9PHOT"JAQB;2J1O)^5"IBWETT2MT:]
-M:P(`N`$``+@!```"````10`!M%)<``!`$0``P*@!`<"H`0(!]`'T`:`'A0WJ
-M7M`^(KSN```````````I("((`````````9 at A```@``!`!@````&5TA9PHOT"
-MJAQB;2J1O)^5"IBWER(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``&ILD]&V_,:'QD%?VT!CX`J6&A30T6N11L"K>50J57U!DQR(2DLRN
-M&Q0'0,Q-192EFS9^RX\82QY4%Q_QY0IS=3DZ6:(.O'VSYH*T<B$!450X?C&LQ]
-M4-LUP_$`64%7XC38"RG4NB@>JMY"KY`KN*,%IR;OSZ..C-G:R$G<MP<QH2 at I
-M```D$<+9D+)1BGPJ('INWDA9>2[A2W=3DB9`N8=3DV*)V#V1`U(I```<``!`!#&4
-M^QOIR<(R`",-1!3.7=3D0HR<QJ````'```0`681<H,`3<W"*+[PCAZN]'O;#\N
-M]DT2MT;&CP(`4`$``%`!```"````10`!3%)=3D``!`$0``P*@!`<"H`0(!]`'T
-M`3@''0WJ7M`^(KSNT*3(I8U(\P at A("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``"UC
-MLEBO)16\UM&9^;J(JP2`VCN*"Y[VB\<&JE[N*'*'&5:.;"HRNS/>C2AOF"M!
-M!/K4 at ->O?GNF,:"\6CL=3DQSA(`]BV*RRG:EIUD--`V2D-:K!Y5Z/VXCO<*BLQ
-MW18-G,`=3D&`3`J4-D3E at HAA3UC#T;DD at 3Q>L<%C3&VVK$JK;S*0``)/1":?U*
-M-N>`7!WB6VD8Z6#6 at K+&G'`.J&"%=3DR(JU at 7`*0``'```0`1N:.BR.P1*IGU:
-M[5!!#&^+H\5N10```!P``$`%SG."O/DLD8$S>4;/O_L7U at _#!9U-$K=3D&KKX"
-M``P!```,`0```@```$4``0A28```0!$``,"H`0'`J`$"`?0!]`#T!]D-ZE[0
-M/B*\[M"DR*6-2/,(+B`C"`````$```#L(P``T(R3NG/X%8?(AD^'3US-SK_<
-MU>3A6^59JT?IQ8"C(<&%N[]LYWWYE81RH=3D*?@[AV.*",`S-OMO<5C!BBK"SI
-MXDJ\B1$0HRB-"&Q8W+<__5:V^8582<>4C88GQ!","D4D#[T<\L at -LC!-&'ZZ
-M<K4^<N%(5JR5T;L*(TG_^_%-B8;&?S/Y03MIL1C_U3_-2QK)YC:C%(_7D-G#
-M;5<X890';H]B!S4?@M:P?`S*!M#"$D?C18#M[-'W*"AY'<+&IENRU34N!`H5
-M4"\=3D\4*#0TT2MT;5V`(`O````+P````"````10``N%)A``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B0WJ7M`^(KSNT*3(I8U(\P at N(",@`````0```)PD``"`[%W_
-M:)Q";_G%MO$=3D(D;__E33:.$7FL\Y?ZK;(7"1J(DE9_JT?T)=3DV?4`0R&G;/M9
-MH2(Q43>)0^#[):<O'WZ\1EF,I9$S'=3DQABO[U(^QJW^,9!XQ!5KS\?-\[I!X3
-M'CKQ_HHYUF/=3DAV$PU?$D,QU0[XL"FO8PQ8WM$:M`4TT2MT:%^`(`'`$``!P!
-M```"````10`!&%)B``!`$0``P*@!`<"H`0(!]`'T`00'Z0WJ7M`^(KSNT*3(
-MI8U(\P at N("0(`````@```/PA``#@T7*M><!&A>K5$"9+P=3D]2U7H/9ZV"<ESI
-MDF^C2B^L$[EV3N2BOJO4Y?ZS.5DDX/Z470_D.NL`Y_;[-X\&&W.^WGLZ14ZW
-M at U^6O;]#_BU_.J.)4*8(3!];2?C%M`5G0I9X0OM-.(.FOFWH\9!ENIX/>!OR
-M'2@*=3DE"63^/,Q@>LOD6<DR_X%QBRN$H3VLJXF8H^#4.7TAC[_44][G>/<O@&
-M[^?_TV$-&1).,+3`^Z_'B58(X4SO2>=3D)E$#\O%ZF*-?-"U'\2096`4I&,^?_
-MPO)0D7"'YJRWC1("Y_<',$T2MT9V!`,`_````/P````"````10``^%)C``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R0WJ7M`^(KSNT*3(I8U(\P at N("0(`````P``
-M`-PA``#`80FF8'G;JI)C^K"^6GH`IF6,3PH9+XN1C#GU?U-FYVB+J2)_1X+^
-M(<<EUR%4+#X+Z2X;)09E[&_V<6GP4>*K5>:WOP9!XVR4=3DBBUEA)'6.:%+R?M
-M2#VJ&=3D)=3DE<EH7E,76L(=3D.!YI3UIH?%!WXB4T2^TN17?'^=3D0U7![A)'M&G1">
-M&0JZ!#4FL\Q]SY`1D4-+5&M3PD<I#8!G:95,&SQ`88BF1GZ*[3&6B?Z:EWLY
-M1$EYLWTBW""CW.-:/AM-$K=3D&5P\#`&P```!L`````@```$4``&A29```0!$`
-M`,"H`0'`J`$"`?0!]`!4!CD-ZE[0/B*\[M"DR*6-2/,(+B`D(`````(```!,
-M*0``,`U\)&ACG<SG;^``4"#-?-0!(6%2U_1;T_9:R6JX-4*CK"+F(IN!]4 at A
-MC/PC31*W1@@L`P!L````;`````(```!%``!H4F4``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y#>I>T#XBO.[0I,BEC4CS""X@)"`````#````3"D``#"H/T16J1)M
-M4V0,@`./OWA!K4.#GYP\Y1'5L0D%!U;A!V+%Y/25#N,\]U.D]DT2MT:?1P,`
-M/`$``#P!```"````10`!.%)F``!`$0``P*@!`<"H`0(!]`'T`20'"0WJ7M`^
-M(KSNT*3(I8U(\P at N("0(````!````1PA``$`MK[#N5_`LL%3<9>BIN453QWB
-MTF=3D"L_!WKY0ITR^SK50(G&G\V8I?"=3D+8PIBG5,:7A8Q""NHZ<82`V2XP%+<:
-MK.`>X1+.3HZ3U4J^J9O#-*QCJ1$\<4AVY]SAV:'YI6N`V(D6$LMGPETYT/TH
-M<^'S9,/#D0"6CT(2NG(5R]Y<.%5NR+'FN9BZQ+!"0VX\D->.BNKGMX7B]4C[
-MI,5[L/I@/8HE,J"\=3DE;A-9 at N`@96N]:9EOQ+<V5G at ER0RF[R'1Q>XWHC;G&`
-MEAPRLGKFE_)[[email protected]>8`!8H!C;\D340JY_'[_A/&_C&!V%S`J)3<.A*`V
-M6M7GKXZB,U]=3D31*W1H)4`P`<`0``'`$```(```!%``$84F<``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I#>I>T#XBO.[0I,BEC4CS""X@)`@````%````_"$``.",
-MI%,W<5D!3AVO-KMDI%X8=3DAYLL\\5Q,/N\J+2A=3D8*ZV^Z"%?B$_5ZO[<QEKW'
-M=3DI_KFA/,G,^\$10!2S8&R2`=3D'8G;($-H4R'LY-VI"\`!!C8D at 4LU?A4,S6P5
-MC-26&H-'6#B:*+WIPLVIJ#[&9+GU at THG!P:DA#4OL,5B-^[DJFU"SC4Y^`S)
-MP1:1.UNZVJ8,WU,^"V9#T`[[_1R8N*!\6.K?R&T[$`U'4;VQDO-F[^!+*B9'
-MN=3DMIM[H/#GQ=3DEGV!$^IUDT%"/1!1XWS:H>0QO:`#U-8$FV$B-?AP31*W1N]C
-M`P#L````[`````(```!%``#H4F@``$`1``#`J`$!P*@!`@'T`?0`U`:Y#>I>
-MT#XBO.[0I,BEC4CS""X@)"`````$````S"$``+"DPO=3DYKJ\DIOV>0><;K-P(
-M*J?'#/I\;FK\3O>419^[\(-5X6P_792Y6)3[9?LBSSP-.X7(/CT6>G&#BW`3
-M!C.$534-:5P*6]L:`^7 at 5$O%B%NHX#@H2SZD9"DAZJO4ZFC;2IYPQCLRP?S*
-MOFRXZ[Q+)7)T8_]=3D"VH"X3<P.7@>3\4HG';^#BGHBWE&9]4[)TG-?)UCJL5#
-M\0#'"LAK^^7H%M1H]RV<2CFOA=3DW.31*W1@:*`P#L````[`````(```!%``#H
-M4FL``$`1``#`J`$!P*@!`@'T`?0`U`:Y#>I>T#XBO.[0I,BEC4CS""X@)"``
-M```%````S"$``+#VMCY6>)L#,B?$KMIWRO1=3DU<6=3D>E7"K6L at E<8&,H4&'U'+
-M,>E?</4_C6E-@&JRH=3D:265/3M?'`CR//T?7&]8G''*]+!*4T<%J'NW.K&0[6
-M^0D;B<905D$5C3V9&ZA;'5S+_:3H&NIUP#"\02<`4JK96&/JL%G/V#T!T+:,
-MMIZ1*1'@SC;PFQ-Z`^&'@CI`<[GJ^N??QN]WB^Z;E\`!YNE>=3DL/BPE<$&L at 2
-M1XJ)31*W1O^G`P`\`0``/`$```(```!%``$X4FP``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)#>I>T#XBO.[0I,BEC4CS""X@)`@````&```!'"$``0!5C<NMB*1K
-M`^INOBPY"QCYMX_1P6?EO&J>*2-0*<&;PY$_2V;9?LI`53Q[3U$0T_`#S)Z*
-M8W6,;W^LKK+G5L#V3O.!--C`F,D`0BQ-^Z7X"1^`H.[>R"A=3DT_>MO:(*`0Z!
-M6&$B5-WZ1&KI]=3D>-J[[H&YD`O!K8:=3DOV]TP+%'3V"#H+-7<9E><OQ4US9!:=3D
-MTB/"X]?R\AX6?_E@[=3D:P#C;#6X6KP4/ZL`@I%D*\/@"O7@)`@<V*\:UKU-\B
-MV$LD9IYJTI1^+JM"O[#::;1":HL?*(M]KF9)3;!JD6J/J;QEK,WQ&(!+8JJ5
-MKG<@P?G-1_F?=3DT/V4`W"LX22^@E-$K=3D&O;4#`!P!```<`0```@```$4``1A2
-M;0``0!$``,"H`0'`J`$"`?0!]`$$!^D-ZE[0/B*\[M"DR*6-2/,(+B`D"```
-M``<```#\(0``X(;`OX7+\K'P?HX6Q7^;!4SU(8FVT!?<F-5+]?K*'"9;/[H_
-M0.`\NOO1X+PXC)TQ0X';F"A)"8&F91HA*W-V\SUO#3?F_VUV]2;#3;L@[.NA
-MQ=3DYD9JR^F#<[\4!PEKZ<N.'H at RB_&!Q-VRSPQ>!5B<9 at AUBG(DSXJ at GH^X3>
-M$ICOS8(1C+O[@Q&*\S)6!5/A1#DZ0IDW9Y09_F)/E.8!OF^V9FME'B3R)VC$
-M"=3D"YN]`M!OI%8SI9#S-184TVK3!V'SC\R+L"VAA("(F1=3DM,*>6SOP3I3TBXD
-MY0<S=3D5Q-$K=3D&,<4#`.P```#L`````@```$4``.A2;@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KD-ZE[0/B*\[M"DR*6-2/,(+B`D(`````8```#,(0``L$"PN;E[
-M=3DE%M$C!??#I6PDO]);!>I3F>"<WF5BG>'\OG99NUU.R,J+;TDZK(_Y6"<H at 9
-MYSL1Q+_%2,#8M:[MRP!N:Q.`N3;&BPM-[0?)^@YY7H;Z02MH5VX`4Z+D4_,)
-M6%P`Y+DSIQYO>;\,H790*\THC(#B2C+-;T<(U.Y##)SZRM[MTSID'`,HZ7P5
-M[=3DE.!J*=3DNUYT>"_#[4 at 8C%JRE8A>`811W?_;60`^.^Y-$K=3D&->@#`.P```#L
-M`````@```$4``.A2;P``0!$``,"H`0'`J`$"`?0!]`#4!KD-ZE[0/B*\[M"D
-MR*6-2/,(+B`D(`````<```#,(0``L'G/V(AV<:@B?_FZ,$(U7EP"F9>$(+EH
-MUBW``<6O(/'J20];AF"NH?HRU_I8?"I(5*#[QR?FCX3WL%]_6K7W-QK75$Q"
-MT=3DVP3=3D2]UN3V2>8V2=3D`UW_T)968)A3;NTZ;J\*U\;]'*W&<.?_58E^S/5\8\
-M:<,:OR7OVU]._B.71I!)DH`\+1R5'9%UM"R/$-E243/@S[Y(#+I_K2Q,?%W+
-M^=3D'PK8=3D0*2X+_CE?I,]-$K=3D&=3D`\$`(P!``",`0```@```$4``8A2<```0!$`
-M`,"H`0'`J`$"`?0!]`%T!UD-ZE[0/B*\[M"DR*6-2/,(+B`D"`````@```%L
-M(0`!4,I.Z+8*I\[&J*14$X%;)Q>Q3QSVD4:?Y65/2FB)]\"`PV[3H(8'-@>M
-ME=3D2R)K+B0H@\X)4EG9=3D,D%)!2_1SQ8$=3DY^7?B"M+-GUUP-M0;4$H#ALK#/ZH
-MPD7V5'GMX>_*1;;!;?8[3LW;"#R&1A*\`!/8;7#X6XI2+;@W*]4]@:'$<OQ5
-MQ^E%W%=3DNK+_%@G)*Q3\'I.*S,MV#-S-@=3DE**NQ3GYS(&.AP=3DV$2Y+I/A,-IT
-M'&0`T-3FAN)"JA[('>_AP"L<^=3D.:7MC<"0RM970TE]YGY42`<44980$)DJVN
-MCQOAPI*<6A6)07006"WS6Z^\@:83[&A'+]23R2=3D7['Q at H^57?Y%LNFGNP6P;
-M-T#EC'568QJ_Z#?GC6U*(G;U"`5,[DS(3N). at ER1ULZ=3D-[+6X#?=3D#MMKB";`
-M:A!$]PME[A!*W#RA0#%@,)JU&CN631*W1I=3D#!`!<`0``7`$```(```!%``%8
-M4G$``$`1``#`J`$!P*@!`@'T`?0!1`<I#>I>T#XBO.[0I,BEC4CS""X@)"``
-M```(```!/"$``2#KR;SN\KR0*)9,;:J$'71):^JY/;)&_\W?@D;UPI8KAJY"
-M*H1 at RE&8";P$LC9:]#G:`1Q7E_]E+16[#=3D!H<-+D(FU+-?,)2)5Y0LD*J!PW
-M]3G1!EC:%4Y:HYR5UH3M6&OMO`*)C)G2U]BUAW5=3D)%%*CY3IF)(^M\YDHHUT
-M1V:X'Z9F.;_ZL,,+_+50$/BRP3_!#;J%GOW4(J"5@*U6U<N\[*#@>[S0NE!@
-M!<^PT\9D!YB]64V7N#)0=3DMU3,9YYQ#76M4CLP%ZD;*?@AOWL3;[<"UD,])O\
-M1[CUXQ5TYL6[5/"MH5#D^0>UA00;>6X')1_'JL79W[T<G[(EHCP'^#@7YZ:?
-M)$\>$,)_\$47A=3D0J3.SDN3=3DM)C)@=3D$RY14T2MT8";`0`?````'P````"````
-M10``>%)R``!`$0``P*@!`<"H`0(!]`'T`&0&2:F>6>DN+"0+H'9:BWYFZ at HN
-M("4(`````````%PJ``!`43RP at +?@]_CFIP&S(,R=3D"TH>J$20,6M8KS6_K6BD
-MP]U=3DV%4(6!XO^Q[V:CQ:ET\^KN8%]WGSK&RQMY9*31*W1N!X!`!L````;```
-M``(```!%``!H4G,``$`1``#`J`$!P*@!`@'T`?0`5`8YJ9Y9Z2XL)`N@=3DEJ+
-M?F;J"BX@)2``````````3````###D\)-JY<J>$2]^#$?<)L[,P'$.]Y,:MK!
-MSMGW\J*2SN"S1Z#C1:C2N#&8(TT2MT8[B00`;````&P````"````10``:%)T
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.:F>6>DN+"0+H'9:BWYFZ at HN("4(````
-M`0```$PJ```P=3D1 at S[TA.+M2]MBL(L1A>B"!QXM2/=3DR"=3D?P;2V0ROUMW/B$1?
-MY3H])'O!M/%-$K=3D&TI8$`&P```!L`````@```$4``&A2=3D0``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CFIGEGI+BPD"Z!V6HM^9NH*+B`E(`````$```!,````,*0?
-MLGOTFMHIM8XA)3'A2%I5OGLQ<!V:"TSCVOLSY/:*J*573\6FW96I7%Z\31*W
-M1HZ3!0"8`0``F`$```(```!%``&44G8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M;Y^Z2+R=3DIE$``````````"$@(@@````````!>"($`'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``+XG$'[9>W9S*B>H8R&,0GL:Z8(>;V7VD
-M,CE5"Z`2_3/ZC_H-0V\W]7L\*2_*![07TYH9B)&=3D93%`HI;CR;OH^VO6RT=3DH
-M0"P\M>84^W#4!)8&XN,\=3D6Z0R/K*<KZZ!4/=3D:@D"!0H7HCY)#OW<4_V,+N"Y
-M//ZQ;UQ6`"TG2MNQ,O,I```DQ?Z9'%XT at S_YF-JGX`+;U9IL4WPX_C3/&IW)
-MNV>%K$`I```<``!`!)U.O>I94\J)KOT%PO[(DU*2J%&W````'```0`5=3D[49`
-MC`N9WJ^;;_8(GW=3D'`0RW+4T2MT:`H at 4`7````%P````"````10``6%)W``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*6^?NDB\G:91```````````I("(@````````
-M`#P````@``!`!@````%G\)D]'V/_P["TH08)#9KL5!#JGTT2MT;0L at 4`N`$`
-M`+@!```"````10`!M%)X``!`$0``P*@!`<"H`0(!]`'T`:`'A6^?NDB\G:91
-M```````````I("((`````````9 at A```@``!`!@````%G\)D]'V/_P["TH08)
-M#9KL5!#JGR(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M+XG$'[9>W9S*B>H8R&,0GL:Z8(>;V7VD,CE5"Z`2_3/ZC_H-0V\W]7L\*2_*
-M![07TYH9B)&=3D93%`HI;CR;OH^VO6RT=3DH0"P\M>84^W#4!)8&XN,\=3D6Z0R/K*
-M<KZZ!4/=3D:@D"!0H7HCY)#OW<4_V,+N"Y//ZQ;UQ6`"TG2MNQ,O,I```DQ?Z9
-M'%XT at S_YF-JGX`+;U9IL4WPX_C3/&IW)NV>%K$`I```<``!`!)U.O>I94\J)
-MKOT%PO[(DU*2J%&W````'```0`5=3D[49`C`N9WJ^;;_8(GW=3D'`0RW+4T2MT9V
-MUP4`4`$``%`!```"````10`!3%)Y``!`$0``P*@!`<"H`0(!]`'T`3@''6^?
-MNDB\G:914[O-'%Z?&S$A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``,A2R9EVS[5A
-MZ9R/YW\S;5<JX0%\&VRD!(3LL(TC[O!H8(DML2*'E8#T%C'4)6>T7&%/$(ML
-M(TW%#/!>YOCI7<E-FW+<[MT#5Z.,FK[DH,?/M6AJE%N at A\\QT]M/]6-.4A%8
-M0/=3D)-:(\`32M25J@(8#\AV*1F$]59#&)V(G9=3D=3DM"*0``)$\/(+(`X,B9_*-/
-ML'!**GP6N<5EU=3D\19?J(VK29+R.>*0``'```0`3Z>[>R'WS6+2?<=3DF^$!?@O
-M\^144@```!P``$`%EA53%@T]F-XR;JEW&48;;##JL%5-$K=3D&<@0&``P!```,
-M`0```@```$4``0A2>@``0!$``,"H`0'`J`$"`?0!]`#T!]EOG[I(O)VF45.[
-MS1Q>GQLQ+B`C"`````$```#L(P``T*E0)S+(B!45N[!#F!I/]<*>V7I\&(P$
-M9*W/E8/\\F'A0H0^*<$/L@)I^^&P\@%[.QVBH0E=3D/>I!8:G0ICZ,P;*;<`J7
-M^.<LSWR8\6[XYW?(&"%29-GE4J5U_P5>Z8!Q-Y]:"D4`1'CERL&:>G5\:8O2
-M613D+C/ZF`M#>C3-U._IA=3D:7T-9M&Z3<6>1'$PS57IG3!#!WX*;XCB!T^I!J
-M at J3E4;;7WX8\QW0 at WXE^L3M!B&@C*H)MM28E1Z"CJW3+C>KQ(%[FGSE;F5D"
-MSDT2MT;;'@8`O````+P````"````10``N%)\``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B6^?NDB\G:914[O-'%Z?&S$N(",@`````0```)PD``"`_/::U at K8&I)K
-M=3DY-VXL>^L,OWMJ5RG0'NB6F\Z!YBZ"(?.Q7SSC,K0:H95W^[@NKCQ),VF*FX
-M5,*02$,"--D38PW_?5R3%142<S#VZH<,]"R6JPQ$\\0<25-1YD?K,$?64G#^
-MWHR=3D+MJ%Z-P_Z>]$13E&E_UX**X;W7`XJDT2MT;=3D/P8`'`$``!P!```"````
-M10`!&%)]``!`$0``P*@!`<"H`0(!]`'T`00'Z6^?NDB\G:914[O-'%Z?&S$N
-M("0(`````@```/PA``#@`@T+/;$?SS219E]BF&K'Y`:4MDZZTO>N+:IW]@P@
-M;27N_R\\E#>-A3)8^P/P>7R=3DE#/5.CAU-F=3DQD%HEX$TNHPQ!P4S59+2#,#;Z
-MR4M/$5>7R\?6A$%]7[Q.48<$>FW3S<8"-;9G90>=3DI9Z5"?#_WVH6$RCO at CRR
-M,NHJQO(N1H:UFOREA86A#B<^663HM1#&QT0`!DW5=3D:DX7W],X.T#('H'763N
-M];5D5 at TN=3DSV",*=3DQ3>G[.;AI^V'@YZ?(8+OIQLT^:%SG\T_A0=3D?B`S:D6K5:
-M?]*`C!T=3DD-O-PTT2MT9T2P8`_````/P````"````10``^%)^``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R6^?NDB\G:914[O-'%Z?&S$N("0(`````P```-PA``#`
-ME$YE59@"VT$TQ\WYX?O2F=3DO]Q(>-]N'7115FGB4/^E/HL%CP26]`SM7V_E"G
-M at _<T,;4GMC4,'2S"H[F+TB>/MPB"U54R+J5VKR!N""85F]G8=3D-[4R_:U[$ZK
-M4?4&C,K>X8-YT&@3G3C1--MI8#_9G at S3CC_U9",ZS8W7/ET7*PQ98R2MHT=3D.
-M6.J?46U%63G0?6FL8[K%W)<;LT#_W`F=3D@#"AUA1>B at X4+3[HHYM`:.2>'=3D)J
-MGD+M!@MGY-=3D-$K=3D&'%8&`&P```!L`````@```$4``&A2?P``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CEOG[I(O)VF45.[S1Q>GQLQ+B`D(`````(```!,*0``,+VC
-M-0FBPTO)!O7DF9`(K2(5;A at J_S.:[-?+KS$PSS0^[ZEPK+/'RD*C>:Q031*W
-M1B5R!@!L````;`````(```!%``!H4H```$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M;Y^Z2+R=3DIE%3N\T<7I\;,2X@)"`````#````3"D``#`QN'`6@[P04/H=3DR`.>
-M=3D)DRL,_,XIFF\XHD(UN$!'K!(E%)"C6[%<_\K_(,*4T2MT;MC at 8`/`$``#P!
-M```"````10`!.%*"``!`$0``P*@!`<"H`0(!]`'T`20'"6^?NDB\G:914[O-
-M'%Z?&S$N("0(````!````1PA``$`JP>=3D at YX39/;O09"HIJ2X3T>YC'.-<GV!
-M9LDE/A;?*C3H>S<4+&X*TFS;B;%BS3&PA3N]L&@G33R`["8^, at 7'@Q&,68 at 1
-M@(!ZRYK?$$4;F[N?2+0(?EYN3^R.H0&A%MD27%GLM&+8%@2CT>5/S7$\!`H=3D
-M"5F'+SJ`:TWL7P_I<GX8DQ5BD[!:(!.$F0'=3D1B'3>W95:Q_=3D^YPM8^#P67-1
-M#YE;5*PE(M^JL$Z421%0'59'#-\GLJWBW%MM7QB0!&9,`8YN-;3^#T>8,SS<
-MRV29-P"^CX82E2+:O`4;JN\]3]X+7+ROI[N#F%N42-+]:W8J?]BA<`\A[0EQ
-M>A3J31*W1E6?!@`<`0``'`$```(```!%``$84H,``$`1``#`J`$!P*@!`@'T
-M`?0!!`?I;Y^Z2+R=3DIE%3N\T<7I\;,2X@)`@````%````_"$``.!/$`\O'S(9
-M^9OW[=3DC)O[^?9B`:@`F;?\\BO at 1CO/`=3DIM]IZ7*[X^3IC3(Y!AG.?UU$:LO)
-MR\4EJ[XU16]@X=3DDJ*$)X9`(O</UP.MV?4>A1YWKJY/5A\G$<;B6Q5PU)F+P'
-MFL61U#>@[WRW5[`+HP_E'"80=3D#+*JA^TCQ$`>@+"+?M;^`LE(KC>2(9\SK at V
-MQC;#U79MW]W;\`9_5N3/J*CTK+[0G"2MFE>0?Y,*MN(*45H>/3H\R)W,S?Q+
-M_?"MTU#[XR'N:XQFLI&`BK*DIG/J\Y[Y5W\9Z:P9(SI831*W1B*J!@#L````
-M[`````(```!%``#H4H0``$`1``#`J`$!P*@!`@'T`?0`U`:Y;Y^Z2+R=3DIE%3
-MN\T<7I\;,2X@)"`````$````S"$``+"4Y:&RO(*-\]PF<;%@-O[P%$R?OD'(
-MLU/Z3?%B*RRSL&6-`\'!"FTK,./?['D=3DRB=3D$W->$%0'^_#V8Q'"(9I2:,J at T
-MGF@@"A(]J3QD(J!U+=3D'43"%SK8LE.EB^A&`A"#:H6/"'708'+<V+H%O,"*M`
-M<W3I at D=3D0CIP-LQ?XPXI55CS/CT?2)>.[K-?6[=3D)KU5VRM?_!%G61C9TOX'GX
-M1#PH at .Q!%(IB)BNKY[2731*W1A7.!@#L````[`````(```!%``#H4H4``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y;Y^Z2+R=3DIE%3N\T<7I\;,2X@)"`````%````
-MS"$``+"*""&7H!XL at PDLYMCV'8&D2%^_S;U470KW at O<;X%DZ&0B;%-^+",02
-MCSQ++<%FL.:)OV"/+A_-)Q:"OG6E<@%RM,L;@['@0>IJ29G5MP)2WV_D^2P1
-M(O:SL^Y+4ZA#<]3&D#A7C>+6%M$(V,6C%";G&@&WE3LNX::?;P$H.\4!&VL`
-M,#$)^YR=3DE=3D^03']ED*/[Q5MMIOL$A>"!6_;(HX9#=3D7TP-V^YJY5.</B.31*W
-M1BCL!@`\`0``/`$```(```!%``$X4H8``$`1``#`J`$!P*@!`@'T`?0!)`<)
-M;Y^Z2+R=3DIE%3N\T<7I\;,2X@)`@````&```!'"$``0`>IKW9T?(LL6^\0$6*
-M,%J6Z[YXK1!3%,=3DK!,BBJRJ$X\0[M8)12H(Y%]CO`FIEO[%\A16P_-SPX5O8
-M8X at H#KI`@%;XETCTN0F:92DS#__Z@"HRF[$L"&.BJQE;<MB&K\/_M?@,P0A4
-M9D&I8,_0<;NHLMYH/M`V&PR`YY*@R,]:9_(99D6CTT00TG_<R=3DK[_4!(0VFD
-M/C\CI9-B">7FB8PE-:_EBBICCM]M1&]B-AH`4I'M\ZP7N;P/D6,30HC;;`B$
-MYZ5NI0U5`_%>@0B1I0U^6->V(LIG_N6Y&[$?GIUE,8)(D6K^D"\X3:&IXETV
-M`4;DCC=3DQ36&ZOQ)&<^--$K=3D&N/D&`!P!```<`0```@```$4``1A2AP``0!$`
-M`,"H`0'`J`$"`?0!]`$$!^EOG[I(O)VF45.[S1Q>GQLQ+B`D"`````<```#\
-M(0``X)-Y2#"<(Y^0I/'@#O>D`Q\]P[R]&(K:(HW3.YUG%"GE]CBX.S$T=3DJ]I
-MS<LT<`-_^P&-IZS&=3DJ,41U'E at -)(OP^UR8(V=3D.Z++F(>^N;*K"7^4&MC7,2R
-MJOC-%:MUSQ7)NFE1<L^+\-R at K3`G!P@;Z83:V/XQ_F#3ZDNSJ+AX*^C*`\Q'
-MKA&$OI&$<G.=3DNN/8H`[Z4DTJ6N'LH+4F,'S'%&0YLV::N"C8GW8"_ at W]+I1J
-MP8F+)LV_V4X&-R,H+67$&\RGKXZM`**8EV''O712Q^9_-L03`SK.EW"!9D9-
-M$K=3D&RP@'`.P```#L`````@```$4``.A2B```0!$``,"H`0'`J`$"`?0!]`#4
-M!KEOG[I(O)VF45.[S1Q>GQLQ+B`D(`````8```#,(0``L*ZX8(PJ/UW*"6*/
-MGOWTX^4 at JM&ISSL7A\E#5GG,O&6_C"3H!TI&-J>$(KR!Q`R1F2!C90S]W6XM
-M>_)^E\N3^W`\2=3D$R#%LVKYO;84=3D.8Q/9&:`TP0%6I1W/OYWP at IQVI9JH/6W\
-MG^9:,2P!)U8BOS#/20VS(L9'O*U!A&'P1NE=3DC8D3\H-]V0Q_:;X2.%/H+BNS
-M=3D at R"X3L`$9FE61U?*N7TXRLR@:((CT!-$(Y-$K=3D&V2T'`.P```#L`````@``
-M`$4``.A2B0``0!$``,"H`0'`J`$"`?0!]`#4!KEOG[I(O)VF45.[S1Q>GQLQ
-M+B`D(`````<```#,(0``L&#W=3DE[<.1;?0W*%7+6:RMAZ%N.8%>]BQI1UH%@"
-M(.<6`#]2AW0?SEW<UL(ANZ,V)?\!T#F%I=3D@?9"PSW"@OK&=3D.F.P&B0C at .MC\
-MW[0`N2:BI<X%AW3<B`4$HN[!CL(%<(YQJ2O\UU\C$9 at M<JQM169`5(#:[2^=3D
-M_4+TPE at I;>';-S!S_9C;CPDA,J$B31:[S>:SU$CU>LH-!73W/9E`;A_'?\DL
-M6-N0,L:L`^Q-$K=3D&@54'`(P!``",`0```@```$4``8A2B@``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UEOG[I(O)VF45.[S1Q>GQLQ+B`D"`````@```%L(0`!4/]]
-M^S&#BT!@!*SA!^3ZDK<R9_CASW*H"H',"J!RG5Y8G+)KCCP8K5(ILCV;F=3D45
-M((O];46OE&,E\X'$V-RB8Y_.WA2*B2)&%R`(1I;<?!8RL+WP^MN=3DW+EO\+\M
-MZXA71,'!W&O)%/?\;];<4:;,8W&_)MYFSQ.:LX>7O$O&"64/)2WF?G7C-EP[
-M.[_9MRLN`^3%6K5GUH'$JZNF?87_HS[)Q"R]3`GWIO%DQP%';U.#OO.F35 at C
-MC>->!<V)!,2HSX%NLYM6DH1ZH?7J0,1HRN^[,`EJZ0/8<G\'4+$0"8R9QC^9
-MX)K;+'QLSZ:Z2'2AC_+7G0*`@GV]B&&"\&(-.A+0RQ5]Y7'Z^)NV*6),<"!V
-M:^#YN5Q,08%KV.2SY86*TDM;'TS*X/E(&^!\8[!1X:,O+4_Z50V=3DGD\4-V%A
-M:^7:YYV]G-W9;0K3$$J>31*W1 at Z+!P!<`0``7`$```(```!%``%84HL``$`1
-M``#`J`$!P*@!`@'T`?0!1`<I;Y^Z2+R=3DIE%3N\T<7I\;,2X@)"`````(```!
-M/"$``2#57--25ZD",<%4>[UIEK5CN6M\!ZT&$YA83QQU1BN]:HBU2E+>;8XE
-MN.U7-5CM&'%"!/K$+7HQ'[8%X+T=3DWLI1R$S5U?D[M^DGNTC=3DY<W>N"@9G5T]
-M2C!N7B[-4*[)3XL15X>?:MV',5]>)4V*HFI=3D&7357W&M0E+L=3D]D*U&M-!71'
-MD(9DYUR5#72M.F-_>[YUNP/MV]*[>/[#AD)F9'=3DKADK5\PD#_65JNV`('`O5
-M:,*,5 at K"2'RM47NSQNTK["`ET\PXIWD7X:M^+Z-4FQH"37&E:YM^`$E-V- at Q
-MLNV:4CV,L#=3DE."5%\=3DT87K\*=3D>VQ/>^SL.Y27P]H-\_`NX(^S8:\<[BFP7+V
-M?+?[]M\ZD+K[=3D_0.I/HNF>C^FTT2MT9:LP<`?````'P````"````10``>%*,
-M``!`$0``P*@!`<"H`0(!]`'T`&0&2;"C$:MW7D+*H\`#SK:*^9 at N("4(````
-M`````%PJ``!`Z=3DK![I'L`W31=3D%=3D76_DRT:UT\,',+0AQGDI,8C74($DOW,5P
-M-=3D^5 at S3A"F/R$A&1F1`>F#$!4FISG at C131*W1MF^!P!L````;`````(```!%
-M``!H4HT``$`1``#`J`$!P*@!`@'T`?0`5`8YL*,1JW=3D>0LJCP`/.MHKYF"X@
-M)2``````````3````#"2"`5MRN"5*L8]A\RC4D at 3FRS=3DF@/?;UI*EE7R'3,D
-MBUK0=3D/AS.B,9L`$L4$T2MT8-S@<`;````&P````"````10``:%*.``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.;"C$:MW7D+*H\`#SK:*^9 at N("4(`````0```$PJ
-M```P51AA&QW at 89:5VZ'PJES^AG5ZN?0N%#--'%:(<@TG1R/K@=3DXF,)330:J>
-MP^5-$K=3D&1-P'`&P```!L`````@```$4``&A2CP``0!$``,"H`0'`J`$"`?0!
-M]`!4!CFPHQ&K=3DUY"RJ/``\ZVBOF8+B`E(`````$```!,````,(`'3FD63;/:
-MJ#HA?(Z[;UVD)<FF&N(Y;'ET84G;3TPJ:#G"?'@.KR/,8C9 at 31*W1H/8"`"8
-M`0``F`$```(```!%``&44I```$`1``#`J`$!P*@!`@'T`?0!@`=3DE!F)4]&=3D/
-M`3(``````````"$@(@@````````!>"('`'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``KDG"CB"P8PE``1/76\1/JL<?@232ZY)F6-AC)-/'
-M*D/.W#?T at U^<J3"KAXK at N2"D1%W`'[AV`-9%B?C@&:33H*:`L&-ATG/^7L!F
-M0NN5,\WF%LL\*7(EL,CH?K2TRLF%%]%#B%B&PM-:*`58PIG*7]);!_Y<)7K*
-MIA0O.U<T:*XI```D/TMTXUI"&BU2&B4@:6#2.[0:=3DP2 at N)ACI-O>(%+X1$`I
-M```<``!`!+'GZ"/Y7',2F4DWQ>WZQ>+T&@<U````'```0`45F_+FE-%F1K?B
-M]PAET&A\XNSSJ4T2MT;`YP@`7````%P````"````10``6%*1``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*09B5/1G3P$R```````````I("(@`````````#P````@
-M``!`!@````%!';M($2*)32KW,J25`/DB=3D4#\64T2MT;R]P@`N`$``+@!```"
-M````10`!M%*2``!`$0``P*@!`<"H`0(!]`'T`:`'A09B5/1G3P$R````````
-M```I("((`````````9 at A```@``!`!@````%!';M($2*)32KW,J25`/DB=3D4#\
-M62(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``KDG"CB"P
-M8PE``1/76\1/JL<?@232ZY)F6-AC)-/'*D/.W#?T at U^<J3"KAXK at N2"D1%W`
-M'[AV`-9%B?C@&:33H*:`L&-ATG/^7L!F0NN5,\WF%LL\*7(EL,CH?K2TRLF%
-M%]%#B%B&PM-:*`58PIG*7]);!_Y<)7K*IA0O.U<T:*XI```D/TMTXUI"&BU2
-M&B4@:6#2.[0:=3DP2 at N)ACI-O>(%+X1$`I```<``!`!+'GZ"/Y7',2F4DWQ>WZ
-MQ>+T&@<U````'```0`45F_+FE-%F1K?B]PAET&A\XNSSJ4T2MT9M'`D`4`$`
-M`%`!```"````10`!3%*3``!`$0``P*@!`<"H`0(!]`'T`3@''09B5/1G3P$R
-MST;,&WK?D.`A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``%I,'B?&YA/J&Z&T6;_#
-MT<@,,>IG-`U`9O?]<2`39=3D!;><3D2=3D.7#X_.LCBE>;YRB):0PN`4$,2ES2Z.
-MG,A>"R*E^@C7Z*LT`:*CXBS:#+Z\0'D+!$TF'VT*H&J0CI:M9?Q`F=3D^L\^&N
-M#Q.V?H8--C'6+/U:)J8TJC$Y5P^"\O88*0``)*B8MJ_9T$%LH?"R7.<+L:P,
-MP=3D)I_2O[Y$(]`)/3%!3V*0``'```0`0"8I+(7#ZH^2;0_6%S#31YHTU!T@``
-M`!P``$`%4RT?Q,1`I5'RYF]*RB$7-9G`76U-$K=3D&HTH)``P!```,`0```@``
-M`$4``0A2E```0!$``,"H`0'`J`$"`?0!]`#T!]D&8E3T9T\!,L]&S!MZWY#@
-M+B`C"`````$```#L(P``T,;>ZT,0HADGK'PK92M(9,;97TVAGY0S_#6J86"Z
-M^_O_".WA.SXE at K&`D,=3D:U_EN"2XE=3D`V;.:@_+X@&I=3DLIEAG8WTFN:XFJ[:GQ
-M-I+8J!NIIEKH"@<"].MX6!;_B'46&Z'MHP&7]';`(IT'F'9?ZJ,/L'-+J5=3D2
-M\8M5P-TM<J*"KWL4M@&@P+>X!&L65MIQ:4@;<D4<MZ,V-*95#URP?V7%AI.]
-MQSFOQ)9R_ES?:N!'0:)2SC`;=3D0:[IB0WP=3D+F3;U^#'G%-:H1:`-`N$T2MT9N
-M8PD`O````+P````"````10``N%*5``!`$0``P*@!`<"H`0(!]`'T`*0&B09B
-M5/1G3P$RST;,&WK?D.`N(",@`````0```)PD``"`56O<%^8BNO[5<&FFK2F9
-M8KI)Q;[C)^%Y*D`6$7.Q$R`A4"]V+7&;`^H7C(MY<Z5A^NJ,;O92X2R^*C&#
-M_H3]`RGE at G9&3D_(.^?:(+BFJI;K@,KZ,V/4O0V3$V'GM*J(%.9C8\CS at N;7
-M?B+N at EL6&%OKT",__(K$;?#P=3D$T2MT81 at PD`'`$``!P!```"````10`!&%*6
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z09B5/1G3P$RST;,&WK?D.`N("0(````
-M`@```/PA``#@\Q1,.CP_>PI;0]2UI,459LE'ZI-P[H[C5G,%EDJD<\9JC9N@
-M//!A at .8@=3D'1R@(`^WS3<^EWBH3^BU64-N.5;[-N$]U_RH`=3D>],Q<=3D/W7#**F
-M,`21,S4SA]*D97HT9E7W^ERKA+G?>*Y1IC7&ZH5=3D(7FR)_I!:\'3UH);Y1U_
-MM3UY8H:\G+=3D at AT_&>;>GAR`%B0OE>,D!+'^FQM6&\SK>8-#4NB&'QFSO)6!R
-M(#?!##/NX[<$%$<EAM3B9W/TMJ1"PO4+8.")X1F++_TW1,H6TOO[K/%^0'4M
-MB?G at 44T2MT;$C at D`_````/P````"````10``^%*7``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R09B5/1G3P$RST;,&WK?D.`N("0(`````P```-PA``#`E;*2]'C-
-M^C"DZ<6)T3SDIY,8\M8NE-?D!%D]&UW4Y0_#H?_680;`*Y37J!E:#EL.2A7E
-MU.+I'W_\EVY></5*>DI98JX[7K<H%E3IYP9@>B>8><\`0^>4BS8Y9#-IA#N'
-M8OR7V>WSU)&"^Z6 at .>@X,6F?#-/M?R)0"#L<C2N*T!\!EP$DI4<V!RH$&R6)
-MC&#5THY at -,BNG;&HBVPN]D7.T[-6?L9D8(U$(Q6'LU+S)E'A()^K$"?/VEJY
-M.0%-$K=3D&@IH)`&P```!L`````@```$4``&A2F@``0!$``,"H`0'`J`$"`?0!
-M]`!4!CD&8E3T9T\!,L]&S!MZWY#@+B`D(`````(```!,*0``,+`X>:UNPQK]
-MTWQ#^KJO#9^. at G=3D%UPG=3DOK`2.ZE/*D<VY75B5[\_?/6Z2#ZL31*W1F.W"0!L
-M````;`````(```!%``!H4IL``$`1``#`J`$!P*@!`@'T`?0`5`8Y!F)4]&=3D/
-M`3+/1LP;>M^0X"X@)"`````#````3"D``##>*J^-/K+&.7$GD`4K#N7`F>%J
-MUQ,^9I6Q+4VU0F=3D_\G4=3D3<=3D$(=3D#B[IG^5DT2MT;LT at D`/`$``#P!```"````
-M10`!.%*<``!`$0``P*@!`<"H`0(!]`'T`20'"09B5/1G3P$RST;,&WK?D.`N
-M("0(````!````1PA``$`*"O+J81>#K[IZ*JB.?:YM4/;GQW/JY8L]"Y^>Q=3D"
-MMV6U8JI#=3DT^KF:24IZY&1P^L+J2,M"X7_^0 at 770V1_A03SN?#`EN`@(9+'D;
-M[1GP-8!HD8''VYS=3DE]("/U+&VJ\VXDYGFU8LK."-2KR;O!`.[<SP?U508[ZV
-MP#M&!R&3&QZ^*7.Q#".\A/L%D0 at 4MZ7[IW*?EU:2U-*Q_&D6R]44)]P"-8`0
-M?6E8^H<QAE)_TIRZVY15CB69(:U5[23?O^@H&S_._6R"R=3D.6<Z4`PL;F=3DTVZ
-MT)H8GNGQGNE49WAG__CDW0'ZKB1 at RC:VK*-ZCP7DS+HNT1Z]*Z:HOOYP31*W
-M1G;?"0`<`0``'`$```(```!%``$84IT``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M!F)4]&=3D/`3+/1LP;>M^0X"X@)`@````%````_"$``.#>B[ATQ0[RA`,O1[N%
-M^!Q'-:N3(%02]#")3SE(\C2=3DY!PJ&+#Y'D5Q<L!JX8,PUBK'1"KJ_7DXHX'V
-M<7UNDL;$!FTZ=3D89+=3DTX`[BD/E"$+L.1[EJ[OG+`=3DTURV+E;@F.:&RO#GZ=3D/B
-M:3,*DEKZC96*5Z<NLYD^B#,28/)+$LK\_1\FVV9$7]]_]!Z^\)[Z]P^L1J\X
-M:1`*8TWEH16N571Z'F'Z3-G9/.^(/>,''MTT02-&3Y'61"&ZJN*=3DZW]I[5O4
-MVZM?U5HVW<4YP+X/;8SG;(- at F'!]7JN80W0,31*W1JSN"0#L````[`````(`
-M``!%``#H4IX``$`1``#`J`$!P*@!`@'T`?0`U`:Y!F)4]&=3D/`3+/1LP;>M^0
-MX"X@)"`````$````S"$``+!#=3DZWV:F?Y;:9YB_MI"#\MOFM2T[V/('M5@"U^
-M"L\^7YMVV#0F;-DJ14:W`X$/(V,&Q-%"-2,'^,`KR:MOUNCL!..V+GW2-0L+
-M^NL"#XT?'S!%PU)[H7@]5%<TDHI"UIE2QQ(/$K\LKT49,[\E;61<*:;HKB!/
-M_QGJN4)%S-W4L;U0[`HP1QDBOHATD6O-M0CPPR@;,_'LF;5_W<_<AF at S)WI;
-M[4,OR);$Q@`G31*W1E81"@#L````[`````(```!%``#H4I\``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y!F)4]&=3D/`3+/1LP;>M^0X"X@)"`````%````S"$``+"P
-M<%_30.P0_6"A]UJ1Q_0B37\A%*?S&-N]?>F8JA"OG6MS.L8V7%\XLUFH4:-]
-M"72A$`-%N#MK*/2';R8$J..V.'WHSJ%QN::QMZ^8/W.)`R,G?UI&3^Z?<S1:
-M[^D0I at .U0TKLA(*K)M\S81[#$!L0?]=3D&!W:^/?)H$6<,UA6F9CD&[M".X=3D3(
-M])S7^'QZSDV5%J$>LN8]@L8&_.,<5E9Y-8#G1[SN(DK!U%KK31*W1F,P"@`\
-M`0``/`$```(```!%``$X4J```$`1``#`J`$!P*@!`@'T`?0!)`<)!F)4]&=3D/
-M`3+/1LP;>M^0X"X@)`@````&```!'"$``0`(,\'?GUNU'QZ"XD2B17B19MIQ
-MK1:!"'G4KTG@,:0ZSE.TT at 9G%.D_^D$M&&"B>[RTW2$*OQN[!$AV?&E1H#9Z
-MSJ84*,?:#DI+CZXXYDJ2D;E at T(F?=3D:JJ'2%RFVRODZLLNU"6%J1G9]S'6UU+
-MXYA!I8IOFW5,SJ2ELTQZ0S$F:9&]R'IX^+<<_IU-D2SVU/A at .D_[YA:;VAV+
-M^"'[DE&@MZTL*Y8+TIK[)6,-80JSA+L"DLTFZ[F47 at 9NDQM<$0+67C%>%L;`
-M7U]WGR/KR.\YG\-QW=3D"6*:T^D45%$:UAO;L_XB]3._O],;1Q1O`*KX&9-V3]
-MD)88_(VP7[A-$K=3D&8#P*`!P!```<`0```@```$4``1A2H0``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^D&8E3T9T\!,L]&S!MZWY#@+B`D"`````<```#\(0``X$&Z
-MT[11UXM/A]*$W;O+ at KMP:8D>CV,Y\M%#EF\2N1`]/`3@!+ at PA3FYSPZC&PC9
-M5U8A.#K/JOM-EMJ#.BP.KA?;%U_*UX>C._A%3:*2;9.BRW*_AJB,;L3PKWS1
-M_]\1D;)GH.!;QR&4+_3M^41#-F,D\]'(I81^6/(34*]@GN\!8&5P5P++FOA+
-M/7-Q.3+7(I[QC'`(J,_T9-P!;G6=3DT&*)6=3DZ9>,[email protected]/"8'I5GY1BC9S;6
-MC4NDT(Y3QGVF0WPKL.GST?F1 at 8L([X%-O1M+"U`OC)KCPL\+1"E-$K=3D&CTP*
-M`.P```#L`````@```$4``.A2H@``0!$``,"H`0'`J`$"`?0!]`#4!KD&8E3T
-M9T\!,L]&S!MZWY#@+B`D(`````8```#,(0``L`A%:)()"Z]`6O1SGQ4<3TD,
-M`*'MZ>JYQ*1=3DW`]?LA34/L=3D?;WC:3HP6^`E:4\6((P`R.<NI at F)CT%[C(V/R
-M`;1%,QY]9]UFVS%P]^*[+TG[#*"DKTZ+;]4FYJZ&=3D`(V(NI/&6*Z2[`JW[]9
-MJS?P1O;72`Z604HT7M[WA96,B\7^E>ZX<?V)9+K7/SC$T^G,H#;#R"KY%^B!
-MF40"(5_&LQGT/DJ&V1ZF`!'B_+Y-$K=3D&4V\*`.P```#L`````@```$4``.A2
-MHP``0!$``,"H`0'`J`$"`?0!]`#4!KD&8E3T9T\!,L]&S!MZWY#@+B`D(```
-M``<```#,(0``L#4>[/M5FS'XILU<SM#QW]=3DCHKM_^!=3D8W5]4T&HR*^I1HB4[
-MA]]P0+3!!E!)ZGPA!9#'=3DS6SQ=3D!47':)DQD?=3D9+]>*7OP">M at XYBHG:02[;\
-MZ"ME9(?,=3D"J\C]Q>ZAOY<N)?QDP3+,8-_08AW];;UD9(U5!"I\)5=3D\L65)DL
-ML=3DRJ0M)"A3EM59#4%#H=3D:9I'- at 7_4_70@$[PY\&V&(CKYDFXAK)Q['W9EE'1
-MQO!-$K=3D&:I8*`(P!``",`0```@```$4``8A2I```0!$``,"H`0'`J`$"`?0!
-M]`%T!UD&8E3T9T\!,L]&S!MZWY#@+B`D"`````@```%L(0`!4!Q%HN<\T#VP
-M0IB, at -S`0V96[D-SW=3DC-I at 6W7=3D_T"NRV3E1*3>.P4X9._J:_%MD%"#>9$B$A
-M.[MV6NZ$Z>!]WKFO'G5U3:=3DPQRD`J6P[1LY[C]A.TU-$R)&W\7*`DY$ORX;]
-M"J:V*4J-1O)IOU*M#Y`9U?E^+DWO!_F,KZ,72ZF`$,2B%!A:)DLQ_(0M<]7+
-ME4F7PC>SVNG8Z'P.<8^R+:]7VX>AN<ZFFZB)+7<>75_<PR:.9 at _TS5\.X0P#
-M`]]W*)<?X%S<HO,]<4I0_GF^`R0E1D'N/WTK=3DQ(L7H$)GH71*;.*EK8"A)-W
-M1I.?S9Q7*-"6AQ?L7$0;0>#KXSJ4C(!73ES9:GWL#`T?VL;W%MIG[>B*W?Z.
-MF+,[ED*>#B^!0T*J&ZC`CF36#2Q6V6%E'GQV>&X$>AJC#V!J9-MY5V3RO3'L
-M79+C,P=3D7?BI431*W1H;*"@!<`0``7`$```(```!%``%84J4``$`1``#`J`$!
-MP*@!`@'T`?0!1`<I!F)4]&=3D/`3+/1LP;>M^0X"X@)"`````(```!/"$``2#$
-M`RP0,%PQ;'W:[Q'(+P?HJZ6#R@[N,AH.N)M4RH<E(FTI.R[%%1AT/8<7+B8H
-M)23O3,A\S>WFF2+O.^X<V'VL)#O+Z(].(,:;G,6#]Y<R?KAE]NI/?=3D-9KV;.
-M"BZ0T]M&](2[`7DLF\A7\3=3D+)@99FX9GCYQ_EGJI[YF<;_8;+]TX/@2?W^"3
-M4TOO'H4:K'I]255J4LHLFD:[-]/!NGQWM*1Y?V>)%U%BJ(67_WK*;/<I`2`'
-M]C4*JTPMW\P?'&&N$90+L4$T>0C_M2W#^]M]\\LU-G4$`SA]X-GYAD=3DD'\WX
-MW5I6F!_/L"A_F08_HJU++-K:5%TH0HN at 6"+[(^.FR?`'O@'$.$A'8=3D;;6:$O
-M#&JL\)'Z\>M^]UXQS4T2MT8*\@H`?````'P````"````10``>%*F``!`$0``
-MP*@!`<"H`0(!]`'T`&0&21`?"3IJ(9;]J(K4GC=3DF at B8N("4(`````````%PJ
-M``!`8`2%>.[('1GB+%%CS[*9SJ;)!A?Q0>@>XRD6K5MYJF`H5:N`*I39)7HI
-M/RNF;.H(+H^)5+$XKGPB2PO831*W1GO]"@!L````;`````(```!%``!H4J<`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y$!\).FHAEOVHBM2>-V:")BX@)2``````
-M````3````#".9_JE8/QQ^60%6+[1J75B$*CUF)E29[G>S\T*4081^&7M"9]?
-MY2S@`.4>K4T2MT;6#0L`;````&P````"````10``:%*H``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.1`?"3IJ(9;]J(K4GC=3DF at B8N("4(`````0```$PJ```P9F6T
-M\,O"^S#`(P30C+M/$K]$#1M`@Z=3D8EL879*@(S%#O+D\I-!\NOWOB34]-$K=3D&
-M;QL+`&P```!L`````@```$4``&A2J0``0!$``,"H`0'`J`$"`?0!]`!4!CD0
-M'PDZ:B&6_:B*U)XW9H(F+B`E(`````$```!,````,#W.ZA^<:@4TBE1^UUD)
-MO!6#R-"Y8&SK2V"DG8[K-<16J3,,LU\]M,]M-?[O31*W1H46#`"8`0``F`$`
-M``(```!%``&44JH``$`1``#`J`$!P*@!`@'T`?0!@`=3DE9ZG8I]&S"^4`````
-M`````"$@(@@````````!>"((`'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``E$LTHT1FOA(';0(6+`%A[$^,/V%#H!NUC3DH)NA_J<69G0:E
-M"LEJ[AP;@<5W!$^U-+;XX9A^`SG8V:)M]57)^_$"9WCD/BHMNEW!9UQ`$8?M
-M<$50"Q5-GOB%L!AT*,OZ4LI*GC=3DBT3]A`H)CKB\`6C at YH#+'P8MUS78@?#V$
-M;N4I```D0MP5-'[UU;49CC<2\??>4;4&N[;M\7D'7*_W4-'5S.PI```<``!`
-M!%%9ED>`^=3DRJ#$AYD`RF]3.=3D[N*E````'```0`5L--/0`W@:(4H/\,;`2*Y]
-M,&IP:$T2MT97)@P`7````%P````"````10``6%*K``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*6>IV*?1LPOE```````````I("(@`````````#P````@``!`!@``
-M``%N?J7&'(V_#-67B,PO$]!U%JF-EDT2MT:S- at P`N`$``+@!```"````10`!
-MM%*L``!`$0``P*@!`<"H`0(!]`'T`:`'A6>IV*?1LPOE```````````I("((
-M`````````9 at A```@``!`!@````%N?J7&'(V_#-67B,PO$]!U%JF-EB(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``E$LTHT1FOA(';0(6
-M+`%A[$^,/V%#H!NUC3DH)NA_J<69G0:E"LEJ[AP;@<5W!$^U-+;XX9A^`SG8
-MV:)M]57)^_$"9WCD/BHMNEW!9UQ`$8?M<$50"Q5-GOB%L!AT*,OZ4LI*GC=3DB
-MT3]A`H)CKB\`6C at YH#+'P8MUS78@?#V$;N4I```D0MP5-'[UU;49CC<2\??>
-M4;4&N[;M\7D'7*_W4-'5S.PI```<``!`!%%9ED>`^=3DRJ#$AYD`RF]3.=3D[N*E
-M````'```0`5L--/0`W@:(4H/\,;`2*Y],&IP:$T2MT:Z6 at P`4`$``%`!```"
-M````10`!3%*M``!`$0``P*@!`<"H`0(!]`'T`3@''6>IV*?1LPOE+:8JH($T
-M#=3DHA("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``!WC8X<+5V(\-J6"&LAH2-;"A.MX
-M%S%;!AGNJ"2 at T%1\QU_J3XH:*5'(U-GC(.@@PKWQ[YC;^-9Y76'65$YC`XLL
-M16\.`-N);@`7\DT(9J:'WC]>!\K9(S68`WH[. at DLC"KJ*."B^`7QB:UP"Q@^
-MJH3KK#(Y5<^M at 8F=3D;AO=3D0D$"*0``)#Y3!QV4KGG+F*)DB%1@:X4N-"D:SX-(
-M[CLA at RX,:M[/*0``'```0`2/^I9=3DYS:''30K47&7[/W!LY<A\@```!P``$`%
-MO<ZT[A$G/F?HOW#-2=3D;WA/J2>^%-$K=3D&18D,``P!```,`0```@```$4``0A2
-MK@``0!$``,"H`0'`J`$"`?0!]`#T!]EGJ=3DBGT;,+Y2VF*J"!-`W:+B`C"```
-M``$```#L(P``T(7$HFXICM,:EE;X-9O?FY*U<QHEAOTA:*^F-KA#*Z0U"TG6
-MN0#@N0CCE+,B$U8L_PZM_=3D6IB]Y0`9!,1KI.@:>\.!IS1_,$X+A9\G/$#1-(
-MY[ZY6QYDLK!,T(4RLF%@@D]-62TFV/WR/,1,B9%L$NUHS6N]9(:(XGE*OLG3
-M`"AH[^XO06>8&=3DLE=3D?'M\!`/$[%PHO^*'IC!=3DO`]PF29G6!^UUU._B<T_YL9
-M%'$G3CK[4M9Y':9+\3$V#&;G7O6M:K\%IUV0N>KW42XL($T2MT;FH0P`O```
-M`+P````"````10``N%*O``!`$0``P*@!`<"H`0(!]`'T`*0&B6>IV*?1LPOE
-M+:8JH($T#=3DHN(",@`````0```)PD``"`LBZ#SA[92Z(]ZY^7:LP)LN?QC#!(
-M-&OS#I8%<*I at TF9,!<UQ">74PN8'B!6@&Y5Z631QI03TI6!AKQWJQ`"NNYU"
-MCM!RS?BOE+%G`KF`2$^><FS/OQ:L?IGF9*;S5""1(QRT#WG*L<@IT\SVD\YK
-MYF<B_Q9T>//J[6 at M!DT2MT;9P`P`'`$``!P!```"````10`!&%*P``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z6>IV*?1LPOE+:8JH($T#=3DHN("0(`````@```/PA
-M``#@ED@,.4(W0&<IV4/C#58%R\?D)<=3D7VS"U9-:U#&NY*@9JR6!P`.]0GZM3
-ME'+$$7-VK6%J;XCA(S%A[J)O5V/`I;_F\GAGHH""[M1MCM3#5/2HHC<D(=3D at I
-M2:\R:W7Y`6]<6\@IWG"4ZAZ9ZA\E-"0_)I5+9H$!ZH1\Y4(G1.&5OTCCD-;K
-MBZ\;HN<13^6F2)7",N2-((S;QHY.HUHJIA)ZSI+5VL>HLS`Y=3D7B7*UP^-RV1
-MZIE;,O"`],\&X`':UJV]SLJ\6P_RY=3D^T[Y)GI\.,BW6$ZK#4M']21`K-STT2
-MMT;-R0P`_````/P````"````10``^%*Q``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR6>IV*?1LPOE+:8JH($T#=3DHN("0(`````P```-PA``#`(?A/QCEW`+<0$2;H
-MIF->56`=3D1'.NH*6-8X.BGZ:Q#PY4.($P>N$3.5T_"R"I\#^:)TG!O3#UI*1(
-MTF-&,QC;%MOQ`2[_2EIN[-7WMP=3DD5X7MR*)Q#C205<4H;VK->'V*VL&T4/7O
-MA!8Q9?N8N?1(I[V4V(J]+B1BZG2DWCU+1=3D#,T+H8%"K15R$V>1Y,E;!1/>W2
-MID>SO*T,QK[;>Z<G<,#.*DEA@/.0]1G.B0O,9CKM^R:N@)$%%<;XY+!-$K=3D&
-MZM<,`&P```!L`````@```$4``&A2L@``0!$``,"H`0'`J`$"`?0!]`!4!CEG
-MJ=3DBGT;,+Y2VF*J"!-`W:+B`D(`````(```!,*0``,(.\D&0)&Z*XZ2'-S`-+
-MK_G&`0T9T$`_)0,UTJ5'LK5!:QK/MN18M^:'T*?931*W1H/T#`!L````;```
-M``(```!%``!H4K,``$`1``#`J`$!P*@!`@'T`?0`5`8Y9ZG8I]&S"^4MIBJ@
-M at 30-VBX@)"`````#````3"D``#"N_3VAR=3DET6:[#%'6UCX"_T]K%)#WT*F4_
-MDCO#_)0:R5UE<GK9!94PAT59#$T2MT9X$`T`/`$``#P!```"````10`!.%*T
-M``!`$0``P*@!`<"H`0(!]`'T`20'"6>IV*?1LPOE+:8JH($T#=3DHN("0(````
-M!````1PA``$`GY?O7;Q7Y$HZ^S'XG>`BR>>E;ZEKDFB_I;[(]D,MU0['5^GG
-M0T/*:)EI:302XC5$SW?E#;2JD at V%_K9 at 7K@79W_'!?BI&B2-,A[NUSM])((]
-M][I%N&%U at _57#+0K!KINX1R)L9`3UYR<65B]'E\3LE!4>`E/<EVC'WC,EBZT
-M2FGTW;RYP2Z)M#_)?'(!<G3&D]O,G,SWVO2+<N8.CP@^]R#?C]IEN;-GMN4[
-MR9:8-##RP':AIQ9`N*]%T-:;J-GACMD9]3'LM]C=3D"AGFB&YL-/@S4*%3\F3'
-MZ?D&G('*P'!U'T(;S*5U'7U72E68TY4(\+WI]J=3D]SU(1+#X;31*W1D0=3D#0`<
-M`0``'`$```(```!%``$84K4``$`1``#`J`$!P*@!`@'T`?0!!`?I9ZG8I]&S
-M"^4MIBJ@@30-VBX@)`@````%````_"$``.!)#(;T7-A\^(R/$5"]8-JI'NL,
-M-29*-ZG7B"-/6O%DB6ZOP\T^NR7)]0ART#CJXG][D?F\'I6GJD#+"C=3D<*J:Q
-M.C"P<]NZ/47P/`]"O4-Z16/N_4/#H*M//=3D/JMY[7HJ5!^5S6L>!W*1,93[)O
-M^_9^S$N4<&KN<K9A^^#X2U^3A5>(?CV'32$K'FK2V1C)DT.YDL$0+U3'QH%7
-M`8T@/L%2XKB]V5+3L@(4EUH.=3D,`O/DORW?[Z9=3D$0OM#?\\E2HD32,(SA>Q(#
-M-6[#QOE)V]<0`7GI\^AK_39`IV7Q31*W1GPL#0#L````[`````(```!%``#H
-M4K8``$`1``#`J`$!P*@!`@'T`?0`U`:Y9ZG8I]&S"^4MIBJ@@30-VBX@)"``
-M```$````S"$``+!#?@[3%&N<7KHE4T at 0C&T./[;R3[Z[1B3?JI`7E]$]=3DWKR
-M6["<D*Q:&=3D=3DY5<8\H9E_*/IQI<9GAIX"HE1OU3Z4NJHB=3DI7/*'=3D*A9!/U>(W
-M,\Y18'Q06.WT-UR at E`O6T$62ZU'])[HR(C`U[:'G/Q:L>AF9+31E)A[6*:1&
-MGJ2Y#7;K#O\B"-NXL!'F-:!!N_:`C+4(%+(WV&D,-4YK"JD"638"T3L1\7);
-MRF#F31*W1C=3D/#0#L````[`````(```!%``#H4K<``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y9ZG8I]&S"^4MIBJ@@30-VBX@)"`````%````S"$``+"K730T%6_<
-M4E<L`[YNAY0"YNY0F4%"'K8<D.(SAELU9D2\$G7L7T9._?);A;'].?O#'(O3
-MA/HDOZ*+9Z7$%8%)\^7>W,%[>?/)[`4K[P-^D"^;UOK)[]*S;K>"1!RFQ7Q/
-M#S)@E9Z"';P'L."J\"D;)+DIG]3:0.BB5XC(WT$YTHSOQ*<2_8(D,C\O at P[6
-MGJK):5E_CZ_)'UQLLP.HRXU43D?1H*<4GOT,!DLY31*W1G!L#0`\`0``/`$`
-M``(```!%``$X4K@``$`1``#`J`$!P*@!`@'T`?0!)`<)9ZG8I]&S"^4MIBJ@
-M at 30-VBX@)`@````&```!'"$``0#YZ^IR>Z7??]GX&&PAH=3DK,H8+NO8)NBE^B
-M:F:TX<'D'##R_5`%1!TBK%55:V=3D]("PO1[9`@%^F(<=3D"S5[2YOA5\76PBS1Q
-M"!5)2+4P(-/F1GK$Z;3H(Z;B'?I-L+K_N+=3DJPK)BJI8)_?F(DFWMK>*[GFPG
-M'X)JVL@\S7E[L#BM-,1"PO8("8)O8C^5JU!0)<T_'14EA6C`FPP?6WE,9,?O
-MM/C+1D#7<)H_2F-QK<>&+]4K\3UNP at WM&WR"\FQXQJQA8/T1&)&KI(Z:Y9\(
-M/Q.O"GA:`8]+BA*Y.7HRP>_84 at 8;N'/@G/@&:R7TLC+H2D0<OWBSEVS*`<`2
-MU\5-$K=3D&6W at -`!P!```<`0```@```$4``1A2N0``0!$``,"H`0'`J`$"`?0!
-M]`$$!^EGJ=3DBGT;,+Y2VF*J"!-`W:+B`D"`````<```#\(0``X/:B;4#4W`E*
-MS9.<_8)GX):AM-.C02XZ;,5"QSS[U at 5A;YK_'[!;:[D[^524'8DO^:66JI,`
-M$'7OATL5R*@+X+^#3?_:DW/R at C#D=3D5+"HA-%WP<>@<*A'\$=3DDN`&%N#9$F at 5
-MX87_H4J(47-CZKW9!PS2?"E:LLZI$_PI$&IZ3TYJ9?^?>$/.!DA+T5TKO][-
-MIB5WWO"/0]LW4,2[H_PDQ/8A%\BMK]F"7"Z`KX?<>@W+"EA%RN?$XA0N^+P5
-M$*PB^M5W)""W#Y?.VM5??%[KC+@[RVE`=3DH_X:EXU*9M-$K=3D&FH<-`.P```#L
-M`````@```$4``.A2N@``0!$``,"H`0'`J`$"`?0!]`#4!KEGJ=3DBGT;,+Y2VF
-M*J"!-`W:+B`D(`````8```#,(0``L`Y/95LU4^*9#[=3D[D-T.2H>39@,:,X@]
-MVNV"<+T[H]_=3D_&.?PPTR9#AI at 5`&EZF$LOR%V>?JK6ZP\%L7^"16O<R!E1CL
-M-LM\^TFB8T%ZK<@+`7!G(TN`9$(_/0`_V]5]/ZU$%0XR7XSWE;&\Z6D]]AE#
-M>7DR\>=3DN-JK:<VNCY0:G(=3D>$"JUZKHH:-0DRS+Y*ZPR1CNK3AMX7<H:O>QX)
-MX7*O.8J#)VN2P;:I!3%-$K=3D&G*L-`.P```#L`````@```$4``.A2NP``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KEGJ=3DBGT;,+Y2VF*J"!-`W:+B`D(`````<```#,
-M(0``L!DBMDFG3#T$"I!R)VR?[D40[$8\2(Y5LOQ>NLX2(WH3\/I6Q<F8O=3D52
-M5$JKS&/4G'"+.#'!NIQ.M!956G(+HA4#5E?=3D&?UR$%&>GX6NQ8=3DF+>+*QA>V
-MK-#>5A at IIRZ)A0_<]!3)'\*#;"*&O/:S<8=3D[@'GDQV(GG%[D8)]HOZ](JA9S
-M<E+RV0XORO"^P(5RMP83T835,BFEG[&(X;1,1&5>.(E\4Z"43[5G/*Y-$K=3D&
-MGM(-`(P!``",`0```@```$4``8A2O```0!$``,"H`0'`J`$"`?0!]`%T!UEG
-MJ=3DBGT;,+Y2VF*J"!-`W:+B`D"`````@```%L(0`!4(D$R4+*.W0DPE.]^4#\
-M%.W[=3DR[>MCWXD6O!`^_,B;<V!J$I2R+`#KLG=3D^$@O>UB7,&1IQU#!CC+][O%
-M>0V8T_,)*2E3C\T!(D`OD3/K=3D+-BW?>2).`]2,+YDS\,1R14)N-;2\V`5I3;
-MU"^!(%)&MMUIT&GT`]J?;S<2%\=3D">;4XR-4OADF&775BD*:D[4O1A9,Q;<@O
-M at D%PX"@*!M(R'<DJ"UHI;@(Z[#+EA$-J]AP8U>UK*[:TI[*:*J5W+):YR96G
-MG^D0:\LVR$R@$IP!#^NCW<+EZ>OUGIR8W`<NA+#./NE#8WRH^^7YE`C@#Y3A
-M-MFU+HNB at Y=3DFHL*_K46K6*'D#BO,X.["*U5]\YZ\GG/;+S#3YLRP57_F'E+D
-M5R_M)V3H(+@]O3+&X4!GYMGR)TXV!_/[OQ*BC58K0\">-5"`%1A;*,W5A%3N
-MMO0831*W1D\'#@!<`0``7`$```(```!%``%84KT``$`1``#`J`$!P*@!`@'T
-M`?0!1`<I9ZG8I]&S"^4MIBJ@@30-VBX@)"`````(```!/"$``2"V^V^O4A@[
-M!Y!JHN5#%E?7XEI525EQY?F]=3D?>3]I<``N+X!VBI]O1(9,+[E9%'3S.?@UG8
-M`QS"_3IWE>*C<1E(,-OL'`,X&RBRLI8-BI=3D=3D#0%+7Z\YD'B6DLQJXL"IZ=3D*[
-M5E"^@AX;)YXVDC5[P=3D3X>GJPW8IK!$'83!EX#B\OO2:O38C5R[O]DK)-M]Y?
-M659++"&R7OW'ZBFK50%=3D9M=3D at G#"G(,ZH,A$EH$*,^*TKB1M`>)\](`FI`F:7
-M;.`'2LB&:S!I)83L9<*[$[^AX[%H)B7(B7-FL=3D-^L_VG!$`_KG%6(GYM`+FV
-M1*Y(S\QWS&P0??!<S>?U;/Y.W!MG at VD<RKP"QG]"!\\+N<V$Y[>=3DY3I`\#%9
-MR<&L;::=3D&DT2MT86+PX`?````'P````"````10``>%*^``!`$0``P*@!`<"H
-M`0(!]`'T`&0&264*_2PBK]-*DU3A+.YB3B4N("4(`````````%PJ``!`#+`)
-M-V)8DY&(?2&.OY&!A64?AP;QQB\O?&5^K%V>SJ*!,B)Y`;1^P"$QGBQX]XMR
-MAUBLNCCN>A$%"ZZQ31*W1M$Z#@!L````;`````(```!%``!H4K\``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y90K]+"*OTTJ35.$L[F).)2X@)2``````````3```
-M`#":]>JZL-3Y-I;D=3D;KX*+:$DE'N'K5:E'.JQ>&EDGH^,!<Y`K!5(]TWHQ'U
-MY4T2MT:)20X`;````&P````"````10``:%+```!`$0``P*@!`<"H`0(!]`'T
-M`%0&.64*_2PBK]-*DU3A+.YB3B4N("4(`````0```$PJ```PMUXO4S&\Q"8=3D
-MT0ZK`(G:>!EA0LID6^`'/<N('GR4V64Z[<9=3D8QBLZ>1VG8%-$K=3D&XU8.`&P`
-M``!L`````@```$4``&A2P0``0!$``,"H`0'`J`$"`?0!]`!4!CEE"OTL(J_3
-M2I-4X2SN8DXE+B`E(`````$```!,````,"WR4V)$;.D*D$9:9&\.G:'&4[V>
-M$R<C`X!E75ST29W$CA9P+S:G8J1L4U\+3A*W1A at 2``"8`0``F`$```(```!%
-M``&44L(``$`1``#`J`$!P*@!`@'T`?0!@`=3DET9%*M*:YS10``````````"$@
-M(@@````````!>"()`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``_?'>:;6P2)$S]9,?792$7`XMBOIV+H`8XV&5UT-HQ/J/ZTT$%8SJYJRI
-M44?JN6J!_&R!FGT&AZ at 67QPV^.&`]ELG-!*FNQ<>0ITYD?(07S(_CW&F57"+
-M\SV`XJ/P7(@#[8[=3D)W%J/\H]Z.5DUWT@#SDT7S3)M_D&I>[^)V:**WDI```D
-M6]$LS#M^F"=3D5)'KVD6 at _A>^AN*WE_1KF%[=3DHHN>W]Y(I```<``!`!(>/+=3D0J
-M&T<W^-"C9WD#W;9&ZKK%````'```0`4Q46^+P\A+>1]$LM[-4]=3D1^DZN]4X2
-MMT9H(0``7````%P````"````10``6%+#``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*=3D&12K2FN<T4```````````I("(@`````````#P````@``!`!@````&7#M0:
-M6>,\\7#.NRT&`QX)PW+CY4X2MT9A,0``N`$``+@!```"````10`!M%+$``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A=3D&12K2FN<T4```````````I("((````````
-M`9 at A```@``!`!@````&7#M0:6>,\\7#.NRT&`QX)PW+CY2(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``_?'>:;6P2)$S]9,?792$7`XM
-MBOIV+H`8XV&5UT-HQ/J/ZTT$%8SJYJRI44?JN6J!_&R!FGT&AZ at 67QPV^.&`
-M]ELG-!*FNQ<>0ITYD?(07S(_CW&F57"+\SV`XJ/P7(@#[8[=3D)W%J/\H]Z.5D
-MUWT@#SDT7S3)M_D&I>[^)V:**WDI```D6]$LS#M^F"=3D5)'KVD6 at _A>^AN*WE
-M_1KF%[=3DHHN>W]Y(I```<``!`!(>/+=3D0J&T<W^-"C9WD#W;9&ZKK%````'```
-M0`4Q46^+P\A+>1]$LM[-4]=3D1^DZN]4X2MT;T5@``4`$``%`!```"````10`!
-M3%+%``!`$0``P*@!`<"H`0(!]`'T`3@''=3D&12K2FN<T4&2Q1M at R64P(A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``#IWVS7.$"2>G;:J4FP4<ZI$"E670- at N%G23
-MV>=3D($,5::P=3DXS#T)58A>VF")@I)P'"5MW8C%3&>ICPR?>TY0>'B96C/X9=3D<C
-MSX]#NERX1M`F1GP/5S7`D()G'.9$#%F+HP![V8NJ<09Z[2(H4[U44'A82LI%
-MB\DG%P'?F-+_M;M^*0``)/R;$#G1&S?M)=3DO(_Z_/G2N;0&?C-NQ1LAY!4MA4
-MVO0N*0``'```0`1*.$M\+6<ZI\`'C_N.S8D+/#LA0````!P``$`%-S)B&N'C
-MRM<C>(&T)2S4+".WJ^%.$K=3D&7(0```P!```,`0```@```$4``0A2Q@``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]G1D4JTIKG-%!DL4;8,EE,"+B`C"`````$```#L
-M(P``T`@:$VI)5+0*@G/MQNJJIYF^W?#7+\NUR<L at +"3]C3;)'Q9-X[%@FI06
-MYK5!+]5G_ at 8KI9:`X*,"B[>IKI)NP&S\HW<:O'P\4*J6G*2^[H1/1W:ORO[K
-M$&%!\[`ZSX/#B\7`\S'R8R1JDK+_C/XDS!O8Y*K36X/P)[?4NK#)V5W+#3BB
-MKD at FIS1"Z)D0MVH/)_E!V00HN.8_,;+POLN4LV+(^WT-`]<`%40=3D;DDN.IF?
-M=3D7.C0=3DV-QQS5PE1=3DB1;-M.J9;SGN.1^4VO+-34X2MT:[G0``O````+P````"
-M````10``N%+'``!`$0``P*@!`<"H`0(!]`'T`*0&B=3D&12K2FN<T4&2Q1M at R6
-M4P(N(",@`````0```)PD``"`<C:<)/(NW>D8UJ<NMY+[;@O/(Y(`.SHYX-54
-M)2IJ:P]. at +S#3HOWS54:4BJLYYW1NME&,8O`[/7;I1J%I!0K,:E6QT9C^,!B
-M,./R)\DBX508'R:B;+$4WJ=3D719W;M?47L,[:F at -@+<*=3DP-%E69C0WU;'QO%$
-MOK5,XB([%$X2MT8_O0``'`$``!P!```"````10`!&%+(``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z=3D&12K2FN<T4&2Q1M at R64P(N("0(`````@```/PA``#@G_&<
-M2TF_"(B%/<[2F&'26JH\$$V&AEY1%;,?-V@/`D4EGA'],:+-M]W$KKR at 6">]
-MM=3DI^I]_R),:Z=3D&50QBQ@=3DS=3D12T2(I#;EY!L!RHW9#J60>/Z,>[MUF]@C'VF^
-MT4J/$]:'2>1$FJ9:=3DW^LV5&8C`8_)@A=3DF;,[=3D54OZ7VX^XA*6XJEY#SB2F8`
-ML at .@7M^PX?>)-501M[#]TW=3D6_AXV:Q2?J0W:FJ/`2M,I9:SOI!/8!\>^(CK/
-M,5H0LUS%-WO76%^7#;P?[.?2IA?G`$U,-DG.R])L2P.$5K@>G$X2MT:3R0``
-M_````/P````"````10``^%+)``!`$0``P*@!`<"H`0(!]`'T`.0&R=3D&12K2F
-MN<T4&2Q1M at R64P(N("0(`````P```-PA``#`O2N<![+"4QYZ?O29[II\-+JE
-MZYC,[;-+,`8198FN3!>`,FGKHXD%,42AX*6C6G(ZGRMM1#0PJ-%1VN9#+U2D
-M9BI/XCHI7*^X"&0`M.6"YS8"`L7M,_P*GQI\S%P?:J&^@&2>CT at DJ(D?7/N`
-M\T`,+AHP$_(H3THW'5QBY\BR*&?C)%'E(JRND%+K&'HBK><0EWJ1)(YS-1WH
-MY+DG6&!QPVA^O9W-QD&H5CIV7LSTIIZJM"4Q&+L0Y1;(_HQ.$K=3D&]-,``&P`
-M``!L`````@```$4``&A2R@``0!$``,"H`0'`J`$"`?0!]`!4!CG1D4JTIKG-
-M%!DL4;8,EE,"+B`D(`````(```!,*0``,%PJ^K.HON at V+F=3DM*[]M+18!S)6>
-ML,CQOE\9-G*](]5BQ*^CHEN4T4#IE?3Y3A*W1EGO``!L````;`````(```!%
-M``!H4LL``$`1``#`J`$!P*@!`@'T`?0`5`8YT9%*M*:YS109+%&V#)93`BX@
-M)"`````#````3"D``#`1_UT1%#^1&SC8V(!SN+;?=3D2`\I#I=3DS/=3D,90/9;;&T
-MJ;Y;BHJSCT7Y7&,"VDX2MT:6"@$`/`$``#P!```"````10`!.%+,``!`$0``
-MP*@!`<"H`0(!]`'T`20'"=3D&12K2FN<T4&2Q1M at R64P(N("0(````!````1PA
-M``$`Y'ZRI3MU=3DG9^UO`7NI+MKU($PN/)))E6%5]$Q.8S#1,V6[#18STE[L1/
-M#X7<ML5O;*Q([V`J$T4KVM5LARO7/J`M>5X$=3DA:CL@"Y7]6\"CV$*Y;=3DQK=3D$
-MB;\G*XNG6R]+MX'4=3DP>!0SHD(=3DQN_>/E.Q/]Q#_-]3-%BA<-)8L#JIDBG?^9
-MA0L0[;@^/70Z#-M.L"S>,H>P*]KHKLEN@&X]^;\#5"=3D-'/`I)&B*-7+K-P%N
-MU`"28HN:L,+QI9J$Y1RF7J3""S:(@2,)6LA]5TBMP0WY`!E1&U,49KH1XU3F
-MEI_/VW?/Z(]105U`KT at XE&1&F82*P[*OG8%31&M$3A*W1GP6`0`<`0``'`$`
-M``(```!%``$84LT``$`1``#`J`$!P*@!`@'T`?0!!`?IT9%*M*:YS109+%&V
-M#)93`BX@)`@````%````_"$``.#B+%KU.4?MO%H+HI?ALMK8;3QER^Y&XN5!
-MJG3`[GR)L[6;8;EN2&+(/.SJVW0/:>M+*!B`QW3$ROQP%/[,\&OU::O0"*@E
-MG)8M$1Z8=3D&?'=3DCNZNE>88A8*YW8JG\=3DBC<%8<V!-*]YZQ.HIK_M[$PLI#G'@
-M?)2OU7,F<GL7?O;O,L"F$MKA[-P1RO0]EE$A*&'HH!J!^_&''2"B,:A[![P*
-M>Y+\O8*D'0$/MD9-=3DU$'%,3+E\O-7'.H(=3D/WN'#>I_H\AV"3D(_'1"WUA<G9
-M,%A>:,LP_KJS4]?EE[:?3A*W1LDF`0#L````[`````(```!%``#H4LX``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YT9%*M*:YS109+%&V#)93`BX@)"`````$````
-MS"$``+!:`?8_>/]KYJTHP(VO>!F0W$/=3D(L@!,<!V+WV!LZ]@^_%;/=3D6OV[7"
-M+TC-"SXD^$V.D+]BEW%.KR"*FMF1JE]`1U(=3D-RZ/PZ+]*Y*>MBR>/-%\^.K$
-M6QMOF;[\H?\O$.W?W_VFTLW[8I]W=3D$GI.L"P9.MKEB*PD<GJ+0]E[DE0%<R4
-MBTYL7;')D&^D^8E08;*X$@X1>@J$F83+T,Q(]?R<ZJ#$XU']_Z=3D$H0E_3A*W
-M1O1)`0#L````[`````(```!%``#H4L\``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MT9%*M*:YS109+%&V#)93`BX@)"`````%````S"$``+`V`G;["[MWLGI[(@V`
-MS/G!:#>>0%YY091)/D!P8GG;Y=3D+5(1N@)6<^UB[LXI(S$P\<<G^`VN8V7>H&
-M/1!6?WG.'!L!T<4;15P4U[D.J[@T1H4M[`J$L?+X at Q'<U2U at 5R]M5I13??US
-M/TB.YJ+&Y\_J.!+`ZKXR=3D8JX at F&UW4I032#(6O9"2"P8W#CV':/:^CD5[-]9
-M.],7R:GDFUJ"EX!7KZ+RP%YLJ(.6!4WT3A*W1@=3DH`0`\`0``/`$```(```!%
-M``$X4M```$`1``#`J`$!P*@!`@'T`?0!)`<)T9%*M*:YS109+%&V#)93`BX@
-M)`@````&```!'"$``0`T]]1NNBZ\]RA_L1^I+*_Q7P97MK68-4*:**36WJ?4
-M=3D.,3>!_0<C31P&(U'%^;"@J0K3D2^PJ+VIS at 6.7'$;D4()=3DUZ>KCWYR^KD at 8
-M;K*HPY=3D`(A%Z5I,-OQ at H5LP=3D+X##JQ-SV7$09:@(>4BN1)GL5W7\*NL]9(!,
-MZO#>48VU6\,RLGSYM!Y?HJ`RZBLWQ'$J.#_8T(\:3!E6&M_5J`3US>3U[:.+
-MF?A_=3D/U<C`1L=3D^IGU2C7`Q1:.FNLAT!T)6=3D/``,<:*#($KV<=3D@#8IV.YY8PZ
-MF:0]/;=3D_#0"-/>-R=3D'K0SW.%JD7X_Z&X>KN57!#UH4]?UG#1AMDFS7!.$K=3D&
-M"70!`!P!```<`0```@```$4``1A2T0``0!$``,"H`0'`J`$"`?0!]`$$!^G1
-MD4JTIKG-%!DL4;8,EE,"+B`D"`````<```#\(0``X'GE#GY7UZU("%%AW&1+
-M2Z+QO/+Z_'F87L)*0!!!T,+8X2J#GWL/@]<0.(ZON]`^$H=3D7!,#A(I57BYG.
-M-[M2.C93^!3'6 at PVK(/*49V@=3DH&$FH0:\?D0!#]XVYM?A-)[WN:(WR[E3C8L
-MZM'5`!26M78L+])VIV[%S]EF08V-QWAFQ7DO!!9<.$VO`#;Z]7:&LX13=3DX(_
-MU]7R6Y6IM(Q%T12S;B7GF$B9Y^7%AXIL at NP?Q,B4]^7R4"30O+%)-2>W[<L5
-MKQIHM!(9-+KXWCE-237Q<C3\H%MERZ"GF3A.$K=3D&J8,!`.P```#L`````@``
-M`$4``.A2T@``0!$``,"H`0'`J`$"`?0!]`#4!KG1D4JTIKG-%!DL4;8,EE,"
-M+B`D(`````8```#,(0``L,H'ZV'YXIT,X!479BOTB&#.JS?:^).\#P<&0,^1
-MB^HQ*_2_@>RR`B\&:)"+Y4GT`0:[I!PV!1((U0S;Y at 0.E?(/'T>'(>^(6%%%
-M,]-QBX]L*B!^14NX$ZO#?!MI=3D65TC2S\]>6J2DBV;M71D58#0GE6W/[\!"FO
-M6AN`_%Z";5:3%;=3D$^T].O@#F7(?EZ_DA\*$\>CN:XC,-<ULSC<B_Q0C`'V,5
-M$O]K<4S5RRA.$K=3D&\:4!`.P```#L`````@```$4``.A2TP``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KG1D4JTIKG-%!DL4;8,EE,"+B`D(`````<```#,(0``L+PG
-M?PM"F*, at VH?R3(X,3;DI&CC27%$.0;18.+H-$+`:NU#P2G=3D3>M'JCVYNE6XK
-MP0(L5./A=3D+!$_]H<6=3DI<5?DFJ,Z`&O<])-!'<=3DZ'XBI9I0K``0[["R11J0<$
-M_M1+T['38G0 at Z7GOA>&8&O(1$Z`+';YT\\CF7-17_$T_27%:#RO_CFYF#G.(
-MN7C6\V!3H92F/-?TPH7T<<?ZT@`7VR4Q@;R\]9`.10/[]Y%.$K=3D&M,L!`(P!
-M``",`0```@```$4``8A2U```0!$``,"H`0'`J`$"`?0!]`%T!UG1D4JTIKG-
-M%!DL4;8,EE,"+B`D"`````@```%L(0`!4)_FSZH\E5TPG`23PZC>\3H721)P
-M#/H"%@^3T]).Y79:*XF)P%$"J"CA.'L[4_G,1 at 929%=3DV[)D]+T]DL+TT>^&^
-M/L.:=3D=3DC*#/]P_6$%D[XOF?.A\X5/8(*@@S#R>5QP4"DOI;(T6A;^HM,;GGPY
-M&:DPSDAC'INECW*_;\'"YQS,CCGR`&52!NKT.WDP#*+R%YN]&-D%-LA4J7`?
-MKA]**;*+,.&$"8;L+XM+L:L^FOH":I76GJM(I at +#E7[#S`#Y,0H1C6Z#DJU'
-M(;)MF&`Z`+ at 7C&MY],R(V'C)CJ!.['3K(UD);MQ!"O\5I`[\%,$^2:%`.'+$
-M'*!BE5KHWP1;^<)\*?[>&?19/K1Z=3D_TGSKH;]RESA'<>8M:%#<T=3D[Y!I2T?Y
-M'WZT"NQUU8"6QTPJ_ at C[BWZW;@]P!E$Q at 59/4S>I#_$P;H8E:[DL3BH"3A*W
-M1 at 4!`@!<`0``7`$```(```!%``%84M4``$`1``#`J`$!P*@!`@'T`?0!1`<I
-MT9%*M*:YS109+%&V#)93`BX@)"`````(```!/"$``2"%TJVE.-XOD/IX at Q*\
-M77;<[^153Y'9H7NY79.-L'L`P3A,K!N;#BU.7UH)?SD#WN?5A(7G`80.%X_K
-M3)*'2<6+#;IOL73YB;'KQ:?]9#Y9V=3DPU\_/#'"^J]9Z,JXQ at A;''[G9!5(AV
-MWTE?(J+?H_U\!(`Z39.\.RMRC^[UP96F=3D:3DD#H`LB:6=3DE%IQ'-/T-=3D![L+%
-MLT7QM[2O_AK`0=3D!3S[J&>@DI7T:Y%N1M2"!W'O.^O$NI!#-VNQ<LQ-[^DZD+
-MD&^3?E$@JH7YR4RZ<;+F0JIG!+.NY&&P4F`<5,WTK#5TS\Y^*N&2H7;1O@/5
-M/X835W#7SNM#Z70OS8R&[%*]E at AP\K\T/0HS^R[[>6:2C;BC:H'C]"]:S;VJ
-M!TX2MT98*0(`?````'P````"````10``>%+6``!`$0``P*@!`<"H`0(!]`'T
-M`&0&20(+W\]\E\181:\9QS.;"KDN("4(`````````%PJ``!`W`1MB4.*.CVA
-M`TP<F6:BR9L_C/HIUXICD?NL_NJG_ZM\Y#D\<;6.XXY11339,U-K/7`N`DOB
-M59H at HX^33A*W1M8T`@!L````;`````(```!%``!H4M<``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y`@O?SWR7Q%A%KQG',YL*N2X@)2``````````3````#!"1'S.
-M2&8-[>0N$;C=3DDH6,:15M*@^:]NXYZV-]G,0,E)KOY#(HLGB#<[)D\TX2MT:Q
-M0P(`;````&P````"````10``:%+8``!`$0``P*@!`<"H`0(!]`'T`%0&.0(+
-MW\]\E\181:\9QS.;"KDN("4(`````0```$PJ```P*QD00_*QH8(#V0_'L%.#
-MMLLO/`]&5CCXKSF_=3DW9(PFAMG90/:6;?B3K/Z)-.$K=3D&!%$"`&P```!L````
-M`@```$4``&A2V0``0!$``,"H`0'`J`$"`?0!]`!4!CD""]_/?)?$6$6O&<<S
-MFPJY+B`E(`````$```!,````,)=3D+-,EA1,:<Z:&0$VP[QF/[IXD"6N_*M8%.
-MVWPO3Y?9S2B%/''O97#9,=3D"G3A*W1E!+`P"8`0``F`$```(```!%``&44MH`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE+W3+?>Z'F!0``````````"$@(@@`````
-M```!>"+_`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``08)#
-M at W,<(:9Z at 1+S.;^&!H?'8;^,,0,Z["/VO)4BWVJJ+'L<%9$BIL:C/OV at C9M\
-M2_U:IS80!UJX("_59^JF'=3DA/AZAN,+?!K0K;X at 28"A/^VJ":2?105THVS5<>
-MF/&SC`F00I6]Z:8:G.>2'#[&_+)H^N_8"!*:J:L5`V:<0F,I```D4(-WDDUC
-M1,R504V:)7#5%+K283O-.D9S]?I<..7OFW at I```<``!`!"6+LC:L[B:#!X<&
-MF=3DRL3P4+^Y,:````'```0`65`/2DH1)4,W[J(1$7I25#EIT)\TX2MT:K60,`
-M7````%P````"````10``6%+;``!`$0``P*@!`<"H`0(!]`'T`$0&*2]TRWWN
-MAY at 4```````````I("(@`````````#P````@``!`!@````'9-#MEL-"-+#_!
-M,Q?C7-&H at +6A24X2MT:W:0,`N`$``+@!```"````10`!M%+<``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A2]TRWWNAY at 4```````````I("((`````````9 at A```@
-M``!`!@````'9-#MEL-"-+#_!,Q?C7-&H at +6A22(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``08)#@W,<(:9Z at 1+S.;^&!H?'8;^,,0,Z
-M["/VO)4BWVJJ+'L<%9$BIL:C/OV at C9M\2_U:IS80!UJX("_59^JF'=3DA/AZAN
-M,+?!K0K;X at 28"A/^VJ":2?105THVS5<>F/&SC`F00I6]Z:8:G.>2'#[&_+)H
-M^N_8"!*:J:L5`V:<0F,I```D4(-WDDUC1,R504V:)7#5%+K283O-.D9S]?I<
-M..7OFW at I```<``!`!"6+LC:L[B:#!X<&F=3DRL3P4+^Y,:````'```0`65`/2D
-MH1)4,W[J(1$7I25#EIT)\TX2MT9XC0,`4`$``%`!```"````10`!3%+=3D``!`
-M$0``P*@!`<"H`0(!]`'T`3@''2]TRWWNAY at 4-U;5GL8>7$8A("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``'-06H673!]M5S?/VH*UN=3D.=3DTM[;FE8ZN$O'`VM1<4'H
-M]KZ3OFTO&$\19"9+EU at 2.N1!F_+VVJ17M,:I.YJ)G[=3D;(PW7'[K7GL?5D%%U
-M>!"'2U&;C'6';U!P<F!(;^D^^SG'TF6<15.2$HGU-2B_9C1C/'F']RN>A4$J
-M8UV7Q<N?*0``)$:G)B%SLM3*U'*ZOP&528/-9R&>4Q=3D('C+2G%DY4IYQ*0``
-M'```0`0%D+-0%8M=3D1GR:0V5I(0U/;WC*80```!P``$`%X9X^Z3>:!;!M/<J9
-M\Z>0KA`_V;Y.$K=3D&H[P#``P!```,`0```@```$4``0A2W@``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]DO=3D,M][H>8%#=3D6U9[&'EQ&+B`C"`````$```#L(P``T'@Q
-MOB_ZC+-8+.^V;Z?-47X3FT@[Q(C%4R(V;":OZBG`9[$POU]`O<T_N'+BXSEN
-M%Y<\;OJHVHP?.-*3A@[MDY0L`SD*ABW8LK!1'_2MEN!`?,1"2;7&SD1]V.,*
-M?"#WE`#6BDR*^ZN*#6")@G6=3D at MSN$3GTS!,J(@>`_F#9.K"87-F./9)O!0F)
-M1.+MQO;.UVO,_Y(AH4EJ:!+&#%,8=3DD$@HE]Z]-EXR(H3?GP89^S`U1A43`GU
-M_=3DE3\_!TP.ET^/"MM;,GUQ.DZ`\KLDX2MT9WU0,`O````+P````"````10``
-MN%+?``!`$0``P*@!`<"H`0(!]`'T`*0&B2]TRWWNAY at 4-U;5GL8>7$8N(",@
-M`````0```)PD``"`6&Y!ME*>GC&CGH)XOUG@:_(@`G15BC%ONL"%AV;-:O=3D%
-M9D?8YHACNHI0;:;_!G1(G\"]).VG>8=3D6N'V(6<1]V`!3DG?O$K+ at 9UYZ6)`%
-MTG?/6D^MZ!2T9/S"_I9OV^C)-H<(JIX1A?GA=3DT*<1`\.8CM?4&"0+&:J%H?X
-M)DX2MT9J]`,`'`$``!P!```"````10`!&%+@``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z2]TRWWNAY at 4-U;5GL8>7$8N("0(`````@```/PA``#@C-3#<7OOK at .L
-MVPA#[G.CCI=3DY'*I=3DKK#<_QPT+T4R;T[OS:$:J(=3DI=3D;IEWM*35K\.$&@E'-&)
-MXO)OL;[R"2GK,:=3DPPP*I at KE?M%K_%,P8Z/K7_18[C+(-.+2UJ[-'-&A/Y`X[
-MY9-(IFSP)%=3D;1V?A36].B94NZ5X/5D)!PH4RPVYHIKF^C:HKI`AO2G)71,V3
-MM;QA?(A- at 8\_%%U/VW@,LAX51#^>F6?<-^+T)[\#44FQ>/+D6F4A\[+*Q-FM
-M^#VLWL'.PEB1\L*5%MSBKL=3DZGZ<L8+E at I-%VE$@[&4X2MT:#_P,`_````/P`
-M```"````10``^%+A``!`$0``P*@!`<"H`0(!]`'T`.0&R2]TRWWNAY at 4-U;5
-MGL8>7$8N("0(`````P```-PA``#`5W^4])D4<A>0YFD)E:L'9*.R at IHQFOWF
-M(D3XQ@[3[$HGY"2/`X>.NL+L^38=3D/CFKT7+BC:U*=3DZ9[2%FM,ML@;"1U=3D4S\
-M at WLW<"8AH,O[TZE=3D[`R^4SE?O08S>*/X4"A1]TUNZF'XP%'\.0QIGT'H!K9E
-MGBC5ZJVF,?ZU)9_L*_A%3<)/"Y.^"A9;6O]9T`CS0]:(5P_GK$2'7V"Z')88
-M"F!L7XG2"Z%4,21[7.I)]#N'5L;I?ZEO56B$8;-.$K=3D&60H$`&P```!L````
-M`@```$4``&A2X@``0!$``,"H`0'`J`$"`?0!]`!4!CDO=3D,M][H>8%#=3D6U9[&
-M'EQ&+B`D(`````(```!,*0``,!!2W!A&XI\<Y'S`S2-<942^<ZYFNA!S!G`C
-MMA?:'U^`(X"H%S]L6+K;\SCF3A*W1CXE!`!L````;`````(```!%``!H4N,`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y+W3+?>Z'F!0W5M6>QAY<1BX@)"`````#
-M````3"D``#!#J&[<I at 5(:7$A!@FX3O;U31M";\CGEA=3DDC19*#MR-4)2&6<D4
-M\TG*P^(PXTX2MT8&000`/`$``#P!```"````10`!.%+D``!`$0``P*@!`<"H
-M`0(!]`'T`20'"2]TRWWNAY at 4-U;5GL8>7$8N("0(````!````1PA``$`KR>2
-M_M)=3D"[VNZG_N!7O:QZU;@Y*!6QA[6L)3"HJ^"(LWNJ+AX+5(BC3+YBK8&4!\
-MY[7*V$%OW8`R!52M=3D%($2SBA+C_D(H.DD3RWFT(RMP2B.^,1 at F!<A(L&B`.Q
-MM?W!S3$!6)2`\9AB:9"?TL*[4!UR2\VM"@(W9W0R[<X)E[S1O[<ATW'-R&DX
-M+2\-:&M>K53 at +NUKJ>+7<34Q3>D+S`/53C2QRG)UY]-!+8'.]<QPB7Q@"L"P
-M/6[A.LO46%OB5S2>4^PUH'7=3DOW",MGG\'POF>WTSN,:!WL$YIT3B)V\J1L_M
-M<@]:,?,=3D$=3D.L*S6M0I`!V(P&`>)!(G0D3A*W1BI-!``<`0``'`$```(```!%
-M``$84N4``$`1``#`J`$!P*@!`@'T`?0!!`?I+W3+?>Z'F!0W5M6>QAY<1BX@
-M)`@````%````_"$``.#R5I7;I,A7G>;/L#+UE"*+./A*CGCU*D4FH%O+NL/T
-M@)L)N(S-/;#G1?V%"TQX>>+T!OP.LFYQ#<!U.[1--(]43K24[_6J`?-+S^T#
-M)ZAL"#*71$C[TG[U8'?VE2X;UW("URW;E%D6KY@(:#7S+7QG/PQ:.X83.ZJ&
-MI at BKMABI_K`^:]Z+N&W)^7B-Z,;C9B_:A;\"&MYY\*YHBX!>)[RC;,<&(F<^
-MR_H3[.M;4OR!97R)E+\>,V\-N;8X%&$S7'C6K!.8FE$=3D;)I,STFTT"&6=3DF*,
-MD(WW6U_W_J at M3A*W1EU<!`#L````[`````(```!%``#H4N8``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y+W3+?>Z'F!0W5M6>QAY<1BX@)"`````$````S"$``+"M
-MB#&:RKH3=3D\Y[VCVGM*??X*%@FN1[`G:@@!75`IX at W&WL+=3D=3DX4%=3D92`69<[J2
-MV\V+/`YW+8"O1IHSN.J&#'9E97ZK6*;++H^/`P?R)PKI]Q:_.+)TS26;4- at W
-M?8#RKE2*NWT>;:ANCX/7O"I4`0&F#A.(@_F;`AHG_[74MM%:\>EG54\H9IG0
-MR;XN at 7Y^N/1B][F*!PK)#940^DZKZSJ6XH2`$-;2'SDAWGG&3A*W1BU_!`#L
-M````[`````(```!%``#H4N<``$`1``#`J`$!P*@!`@'T`?0`U`:Y+W3+?>Z'
-MF!0W5M6>QAY<1BX@)"`````%````S"$``+!CES,#OD+7P[1E6`IU>DM/Z7<P
-M-<I6F"0=3D!$ET71((S9;<0'_$(EAGN/&(BVJOZFG:L2?SP'YHFVT.Z]]:JK.$
-M=3D[_VQ/8<<_```,L6"N+N36R/7WY!D2G(R;L*?,(L97)-*Y)]@1[!CBO'`38_
-M(-V$JZQEH:]9=3D>'I(&7VY_[&SS_V]>53F$1&)TZWBSO_B&[?J4TW)(A%QR1+
-MI60FEO9$">9E2$D`-!D"8FM$3A*W1K2<!``\`0``/`$```(```!%``$X4N@`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)+W3+?>Z'F!0W5M6>QAY<1BX@)`@````&
-M```!'"$``0#QZB[>WJ,J`2G-5MN_[X\3,?720208(!.&CIR"VP<`U69F_V!4
-M"_)<&9Y>5J1"#U/\RG>:T71R/,2&,Z4\Z?D+IR[I(=3DWO[7TIT3FE/CNB$?'L
-M-'&*K!$FN&$MF*4^`K%T!NN>U:F-TV^(TI><9H1>E+G]@6AH2RACEA:'2GYU
-M:Y++[6RE44=3D!$YU:[DISODO<-?%'+Q.]&K\O at U1B_;-<O.MFHC?6S(+&8A(>
-M60%(!$/*J=3D=3DFJ!-B/.P,T)B0P)%H!S73-`EZ3H]L:NMY=3D:=3D6^6^&@%2#O):+
-M#AJZ`7M.(R#-T*!RUD,63\O##S"!3CGQK&!6J1ZY-3(OQQQ.$K=3D&X:@$`!P!
-M```<`0```@```$4``1A2Z0``0!$``,"H`0'`J`$"`?0!]`$$!^DO=3D,M][H>8
-M%#=3D6U9[&'EQ&+B`D"`````<```#\(0``X(/CQ[IQFPOA*JWZL0F<>%=3D:@`%<
-M8(F1:5IJR6R"<UX*NZ!80_$($X_-]MWH!AT/I"FZD`P;*=3D6\J7UUB(PGM%('
-MA>6$F=3D!=3DK at YO+/]]*R98DYI"II]LB]4FU^)@_\`UK'^SH&70CDKGFIL8+64!
-M9%6P%J46;2P`\'S*]/Q[A at 7QO8=3D2H0#1#TX-+'7;=3DSC)XY>%9?]["'%*ZQS0
-M^5`-)`.T58.H;!M63N)A at H7ZK1V<^I%(FRF,5CEH7 at KRD&Q<MD`&+I-MW0PH
-M93E4 at 3H$F2XVO2Y$RLL+ at O]Z_!-.$K=3D&;+@$`.P```#L`````@```$4``.A2
-MZ@``0!$``,"H`0'`J`$"`?0!]`#4!KDO=3D,M][H>8%#=3D6U9[&'EQ&+B`D(```
-M``8```#,(0``L-;$NTVUC;;>P2!0!@)+VC#?;S*3OSM9Z5BJ2X[)&>ZB5)?7
-MKE3$35OJ!ZX+R'ZDDC]L6AD!P>SAY?Y8F8>(U6J:P^*=3DE'[-4!F_HP#W(YAQ
-M]85'+P`&(7!`+-!$/0V#, at MH[DRB at VC*(6JY;@)&GMGYMB"4`'NW/,+-VMU_
-M'<,^M`\VLC$48OS=3DLF?M'02KD`GRQ94*S*+FH)>(ED;@I(/F?^3&I+I;1;ML
-M!X).$K=3D&I-H$`.P```#L`````@```$4``.A2ZP``0!$``,"H`0'`J`$"`?0!
-M]`#4!KDO=3D,M][H>8%#=3D6U9[&'EQ&+B`D(`````<```#,(0``L#TEHY529W!1
-M][]\HS.$:@$&7`OJ]0#IL4YNG<;WUI+/\9%[)S(@\*Q-%XM]6)A\\W1F:W`.
-M%S\L#.OYY;O7><I/.*J?(+4QCQ7_5K7DC[DU78?B;(ME at N[L3]\8M,+:MY7V
-M34/HTT$CDRM7FO'?SGT1(A=3D_5S3,BF73*CZ1P:0B)L'6RCU&+&@6'I@'[I0T
-M&Z<=3D?5*J5W*[`5#!9F=3DMAR6Y,_/9`>MIR71C#05.$K=3D&K0$%`(P!``",`0``
-M`@```$4``8A2[```0!$``,"H`0'`J`$"`?0!]`%T!UDO=3D,M][H>8%#=3D6U9[&
-M'EQ&+B`D"`````@```%L(0`!4%X-\?O1!Z/X=3D+^V.3DLU!);>W[:;B=3DV[FIM
-M07R6()K;'VW-:[2`+A(?@3Y\3B94N#F\&.\LB1G$))OJQ*1T):0:MGE1_=3DRZ
-M:VR]-V2C!E2`!X-SK]R?[9<2BRE4LY>$).!K:U>`Q/N_UA'?:!I.ZO5+N2=3DH
-MG&;2_JPFF.E8%*5'RDB:_/1@';:578(""FTUOHF%I-C1L;`WSFY^/<PF7_Z3
-M=3D+E_&`_L_PU?P4B$%(<-$T1!7(OWP%9;[H!FL&<1C[AIP<6Z'^<K%D/-6:6U
-MF:L#U9-_&1::RJPF]C)#-+__?&@<L<?&X/)VZ!5V.F3414!YSW7HJ].*@[64
-MUXR$N-PJKVZI<*[%&SQ/V#'?`X,`7.N;G'8C?Y^MR^##`Y<EJTO*UB>_UUOQ
-MWQ at Y9K)V-(AF9DIZ!T&I_6.VDJ\P#G"I"Z=3DK?XN2WH_^L7T/3A*W1I at V!0!<
-M`0``7`$```(```!%``%84NT``$`1``#`J`$!P*@!`@'T`?0!1`<I+W3+?>Z'
-MF!0W5M6>QAY<1BX@)"`````(```!/"$``2"]8#P](!B9L=3D'E>)TK:W+L!6.5
-MP#0$D&KY*1S.]C(Y"XCN2BT9L-:XW`WCJ at BWE!9V-5OHB$W/?6FSF?)C3C.`
-M'NDBM)\Q!R.M#V]4<W+N&0+5Q9&]T8XZU\S'0:)@516P_R:Y5UGL49YG>)';
-M2_:.N-T0^PJK[()<+VH_=3D:>^@;=3DZ.`4/<,$J=3D,*URC-"FQ%S^O at DJ)=3DPS%;1
-M4^T&6RB_&]/!.R(=3D..C92[9S(A,4U^UM@:NK0Q&H'XU7W#YA'Y@/=3DL6YHJ.%
-MW:&,5U_^QOR<LPF39J"-V9$.Y!K$?+ZUF&X^RXJF<&NR328 at 91<B8?4L<<^9
-M=3DH3W@<0`RE45G#=3D<4`IK%^#3 at .M9FM]1IW/E\+FK&W9?N_;(E9`41DX2MT:2
-M704`?````'P````"````10``>%+N``!`$0``P*@!`<"H`0(!]`'T`&0&2=3D(1
-M-^!C<@R0F[IM1/=3D5.=3D,N("4(`````````%PJ``!`WF1L/FT"P9RSO)&N)(Q:
-M33*>3GG2+R1>CTWV:F[E_R:1,=3D5*J#JT=3D,:]0+-?Z at A--9/G5)>HHF!CV-RE
-M3A*W1OYH!0!L````;`````(```!%``!H4N\``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YTA$WX&-R#)";NFU$]U4YTRX@)2``````````3````#"8+)J[HD?MXP;O
-MQ(M]JQW+ICCD\AM+^9YNYIW6_H<>W1PQE&4QL-9=3D+--_HDX2MT;O=3DP4`;```
-M`&P````"````10``:%+P``!`$0``P*@!`<"H`0(!]`'T`%0&.=3D(1-^!C<@R0
-MF[IM1/=3D5.=3D,N("4(`````0```$PJ```P5CM,$.V8N_ at D;^$<4=3D(Z12MA\`-4
-M1/TKHU?_6!95EZ!ZFIP-#-V`0DQ,EZ].$K=3D&3(4%`&P```!L`````@```$4`
-M`&A2\0``0!$``,"H`0'`J`$"`?0!]`!4!CG2$3?@8W(,D)NZ;43W53G3+B`E
-M(`````$```!,````,$#L$Z#)Y3OCB+GE+A)2"$01Y#^2G<81ZV".L>T.DTS2
-M3A-*'0W1NSC>)1<Z3A*W1CI_!@"8`0``F`$```(```!%``&44O(``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DEHO@\IUAN'A0``````````"$@(@@````````!>"*`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``4<- at VXT+;$,%
-M3Q,3//MD+:.:B&>2W*GOFTE6AI9GQ4^$5PY?P6,3\Y9,`($61"A,\QU*0!LV
-M&KV_KRZ1RW*QWP[SO0=3D"P(B!G`>:8VR,`6#&L?N-!]Y`\$?AP(%32;\T at SO*
-MI]2W7JT&F5<<IA'=3D5V)XSUU?'-M=3D@@A.<QGE;\0I```D3;B(D;R\@\;BW_$Y
-MHQN%./YHA#E,C"0,$QELHJ?//A$I```<``!`!%`9))&MU,U(S3/.]G(PG*:_
-MPVMZ````'```0`4_LQ`2?3 at OU(`&($Y?W5-12R at YY4X2MT9#C at 8`7````%P`
-M```"````10``6%+S``!`$0``P*@!`<"H`0(!]`'T`$0&*:+X/*=3D8;AX4````
-M```````I("(@`````````#P````@``!`!@````&W^F,C>NN%L=3DF2I12T:E2[
-MAH9MP$X2MT8GG at 8`N`$``+@!```"````10`!M%+T``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A:+X/*=3D8;AX4```````````I("((`````````9 at A```@``!`!@``
-M``&W^F,C>NN%L=3DF2I12T:E2[AH9MP"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``4<- at VXT+;$,%3Q,3//MD+:.:B&>2W*GOFTE6AI9G
-MQ4^$5PY?P6,3\Y9,`($61"A,\QU*0!LV&KV_KRZ1RW*QWP[SO0=3D"P(B!G`>:
-M8VR,`6#&L?N-!]Y`\$?AP(%32;\T at SO*I]2W7JT&F5<<IA'=3D5V)XSUU?'-M=3D
-M@@A.<QGE;\0I```D3;B(D;R\@\;BW_$YHQN%./YHA#E,C"0,$QELHJ?//A$I
-M```<``!`!%`9))&MU,U(S3/.]G(PG*:_PVMZ````'```0`4_LQ`2?3 at OU(`&
-M($Y?W5-12R at YY4X2MT;AP08`4`$``%`!```"````10`!3%+U``!`$0``P*@!
-M`<"H`0(!]`'T`3@'':+X/*=3D8;AX4/KFQ:KK?(BHA("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``!()HB$R8X[B6)`%AH/*6VYG4(A1(,R9HV]:N%;XD+>4K'#[G at NA
-MY3Z"_+TH>'(AFX#EW`2L%C$[T:;7]1*=3DBSU]2S^2/"1D20@\4<F_P+R(9-R4
-M.^9!G38Y)/;!'MWW*-?L3]?;&O at H2D6A[VCQI$FH30P$F<B'[0VLJ!B37M[6
-M*0``)'7.0'AT,:N3+?F:UWZW0IG^7W]QC5GBO!(MG#(4>LJ7*0``'```0`3L
-M9'[-<G"AH.BRIS#X>ZP8YQ7K[0```!P``$`%V3JU(8,&6 at I<8D=3D-PI&_^BN7
-MRE].$K=3D&M>T&``P!```,`0```@```$4``0A2]@``0!$``,"H`0'`J`$"`?0!
-M]`#T!]FB^#RG6&X>%#ZYL6JZWR(J+B`C"`````$```#L(P``T.::EJP9H"CE
-M<%R+ON,O>@Y1#[E:4#>V!!_9ZIMN"5N=3D2D=3DE=3D**;J[SVUI<)N/!1]0KWTCL/
-M6:H/B&U2^-[;XF):;L0TGKN!D-OTT<_K:J.&+DC2.21`P4F6%XZ&C[9(&.PS
-M)ZWP\*T4<^!D8<"JHGRIZ@@NF#G'L(N9E``/ZE,@'&VLK(7>`S/?VNORUX(G
-M[XTITDL`"I_M_QDC6[,XO<;&C+N&?6_/L](;%[`V4],A)?,M/,3;E9?)HH-V
-M-`6J5*7`N?APP*V;)4NU*TX2MT8#!P<`O````+P````"````10``N%+W``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B:+X/*=3D8;AX4/KFQ:KK?(BHN(",@`````0``
-M`)PD``"`,-5<FL#OFMB58*A>YXEYM\:!:S+<Q=3D!OK`<[/0<+APXVKEU%+#)-
-MQAH]"V2O=3D]UPDVMB[F)(LS:0K+IWJ!X?5QG at O-#Y"X>*\X]UIA,T%6_M=3D+'1
-MU<9*VS-P)LHRV,<@.R6/VS(F\"U(7,=3DVGSB1`W<&#N&6'BVVZ"]TRDX2MT;L
-M)P<`'`$``!P!```"````10`!&%+X``!`$0``P*@!`<"H`0(!]`'T`00'Z:+X
-M/*=3D8;AX4/KFQ:KK?(BHN("0(`````@```/PA``#@/T576HWE\GZN).9I$"_#
-M_(U],,)A6VF3[\T8\:4 at ZV`Q*R'VHQ;M`+)GR0^+;7+3*VG=3D[9H at 3P/W#0E.
-M^%'-C[K4%$9DF5UBG+E:"-%;I/?_EB=3DP,^/OFAH0WT&VIP<6\M2YUH^9;F#2
-M(I^.;-[6%BV8@%=3DXF2&PTF[S)5;9['?GR*/+5=3D*_@%RO/J4U(6GM>(M.F8]<
-MG,LA]HPA0V2,WD&5^&NZ0)J2;/=3D1]Q>#>:#"B0%):Y:KL<V(_B9Q at N4]'HM<
-MJ`S];PP]V9^L6(=3DF3X'WS4TN>4L*YA"E9$X2MT:),P<`_````/P````"````
-M10``^%+Y``!`$0``P*@!`<"H`0(!]`'T`.0&R:+X/*=3D8;AX4/KFQ:KK?(BHN
-M("0(`````P```-PA``#`[D].Q#JM1%S'\<>HR/UV`[_J-?0Y`O%QJ=3DG:;:<Q
-M=3D at MAQ>Q12-H/$>"0WGDX(7=3D)I-FE+<N)^.08H18'$N(K=3D7O^U]`JE<S_P$V6
-M.RB_FF]@^(>EN&S$EB><$Q$FO2U)"&EYM3.,-_F[5EBT!V<1/7Q?VA[?O-1Q
-M-8K`XLDIU-Q7-P-3NZ$5:>:_97"X"GN;@:XGZ1.2D`J-JY6@%.[\RA:,'BR5
-MN]S)^4[T_Z:EM+N!MGC[H1RO!1CR?`9.$K=3D&(SX'`&P```!L`````@```$4`
-M`&A2^@``0!$``,"H`0'`J`$"`?0!]`!4!CFB^#RG6&X>%#ZYL6JZWR(J+B`D
-M(`````(```!,*0``,(K>(GP=3D^\;9^P=3DR%Z"L3.,DN)O>*:^8*NZOG2Q0:?NU
-MY4<J!\+=3D/_^F9[>M3A*W1LY:!P!L````;`````(```!%``!H4OL``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8YHO@\IUAN'A0^N;%JNM\B*BX@)"`````#````3"D`
-M`##]!AN5RFM:?MK at F%/D!V*DPQF#-MUP3UJ:Q[KTB2\<\*:$LZN.=3DQET(M]A
-M_$X2MT8G=3D@<`/`$``#P!```"````10`!.%+\``!`$0``P*@!`<"H`0(!]`'T
-M`20'":+X/*=3D8;AX4/KFQ:KK?(BHN("0(````!````1PA``$`)F6LDAWLNN>U
-M^5YETYB2<>5D%BD/P(@L@&1X[`\3Q!9E>`5'B1-)!&2B/9]*ZWTG\EI$,LJ,
-M,AUY82"ARVV2:;QP#:QUV&[OLYS^I/]12D=3D[++FV:1<OFFIJ%_/_^!@!:2CJ
-M.$V'`)4_JQY at V3K*MG<8Q"CF+^.%(GZB(*:EY\S=3D+N%^:1NGG`>L].ZHN`*>
-M1`1&FJ-B'A9]2`R?`(,Y[RTK([!@N:"?9(XR-6IP]:T8 at V'6-8U^S_!@HO"1
-M"S55FYN`<,%+"@CZGJDZ+$ZR(@HA'O0YW?1%[^`.*;"."6&RN1FH=3D2L&?=3DYY
-M;;O-FEK'ZZEURRM)6IZ8'///3A*W1K2!!P`<`0``'`$```(```!%``$84OT`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?IHO@\IUAN'A0^N;%JNM\B*BX@)`@````%
-M````_"$``.#ZIDU\/?XB?#)B2FAW4(CKATAI=3D'&+=3DKK);\H:!/[M(UDKQH*(
-M+*+:<6/@7H+5'&D:#EF%5)R4"4Y03;3?/WBV=3DV at 09]+FR[5#VJM%,DJZT`9U
-MH!$0TGQU:I<I9%!^I:^4DWJEA2-(ANI^K]G':EZE0/G at 1&WIF''-S!_^[T.P
-MDC8`N(5<N$45-EOR*ZG5]+<@A/3+#'_C?*UT!@2803.(%>5L+K-&;L=3DSD>Z!
-M-R7C9!?OZ9.J&4(=3D at AO9)%K,L&QXZR*D]/U\B$W&'V2)ZW/JLGZYFJ*1;!5V
-M(TA\3A*W1B21!P#L````[`````(```!%``#H4OX``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YHO@\IUAN'A0^N;%JNM\B*BX@)"`````$````S"$``+"&&;F)\@D1
-M4+0G0A02'3#?W3\%^"LV4'XB[@3J.3_0 at P?#/9N48F'LPR*']D)4K]I?3T0&
-MS2K#A2"><6^=3DT2,^MC:PN^ZX_94;F!?:A,1;U4!)3PVAQ^>ZJ-:4%X[KU`N;
-MV8%UL0Z8`JTE`E8I2NP%8N^PL,U;J5@?P0"SHH>=3D4OV+/-;]J]<.NJNEJMXG
-M%)'.(#]M-,>D/;5?JR?A8E=3DD22<?H*_P8JDC!BL:3A*W1BBT!P#L````[```
-M``(```!%``#H4O\``$`1``#`J`$!P*@!`@'T`?0`U`:YHO@\IUAN'A0^N;%J
-MNM\B*BX@)"`````%````S"$``+#]KI"W6E]HXL)"F_+J'#\Q8_!YI*\:]8U$
-MM"W4]MI8A"-3G'B']\$A`NVC]=3DEE?2DAY_?[S2J:"UHL)88O\2*$@V/EE,#,
-M&/'7'P=3DML89W43_M4G)FF)^RHY!D:8B"@L)BTE#<_=3D"_FR at 542V)0_B@%6/S
-M.&+_!:&#:E_\)=3DT_0./,T4:U@"V.1[)Z(8!&$H^.\BU;!!K,+#(S4<^T8J5&
-MAY%L-[*3]+AT&=3D8X3A*W1 at O2!P`\`0``/`$```(```!%``$X4P```$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)HO@\IUAN'A0^N;%JNM\B*BX@)`@````&```!'"$`
-M`0`RV-&M&904:$DVI:N"!-X46#%JV#X2B0U%IG*0M+,!-7M'70*`5U10IU'8
-M,WQBZPIM!%E('4]=3DS-;MT-_.'$@9PZC?X]=3D>CV194<!EJ[+#O=3D#A[YJF.>,9
-M6<(3/]1+#ER-A_U4.'6M8X%W$534`(<TZ<(5R"&*2WA'82QYZ&B=3DP[TF>NFZ
-M@=3D+&GVL#8X- at FD=3D]J*W1AK^'$P at T!/Y.DA)MEZ%T]5[.D;E5UYM9",IOBCO7
-M!J<38>YJU_>P+ at 2CG!A#.%H-T`.PP\%3AB&,K-QE<?WZ2"_0STB at 6""U"X0H
-M@>:LN[<&A3E$OH-F$R5$FW2'\3Y:ZPQYG(K,`&!.$K=3D&?-T'`!P!```<`0``
-M`@```$4``1A3`0``0!$``,"H`0'`J`$"`?0!]`$$!^FB^#RG6&X>%#ZYL6JZ
-MWR(J+B`D"`````<```#\(0``X+ZK\R<@D93.UK6$27"1!)U-#Q!$QQIU4U"A
-M1]BFAP8(.S7P3/'S%[_9]HW#CDD8`-?6PH8F*4J)+P[R\[Y+_>:U at _GH]O>$
-MDL$R1^V)GR'\W@%\%!NP7SL51NL2]LR9$8*XNI6'!&?QBT1SK3KPX>Z<I`GT
-M?+^%P^"JO+PB>@N3##G0Z(:!]91,[$>;&Y-$YM1#\V#F<0!AC+QY9$W3`=3D&-
-M=3D(?SOH.!QF$!JN2\K"#)_$X2PE9EGP5/3&26J-E9W7[K("FCFRS+F3 at F!@ZF
-MJ2X2%?]2!L6+;:-/^D-.$K=3D&YNP'`.P```#L`````@```$4``.A3`@``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KFB^#RG6&X>%#ZYL6JZWR(J+B`D(`````8```#,
-M(0``L,*OM_J\I"S],["&U at SDVB=3D@]784=3DAH,7B.V at _?Z/;,AOQVML:K.FFQK
-M%CAS;Q-_(A'SR-XJQ0XICO_F83];OM*=3D]ZS%DX\\CAI2AB85%Q:$"1Y>M]WB
-M,;3K$N&!0)NLR/=3D4L"MX1^!W\^'.P3JOY#^_S4^OZ%"ZU.[8V>R'R$KDR6#%
-MCRV5"2/AV'H,8GQ)L/>Y\UG.QVNZ>"'A.^@P!/`?:]B-!0\-*`H>,8).$K=3D&
-MY at X(`.P```#L`````@```$4``.A3`P``0!$``,"H`0'`J`$"`?0!]`#4!KFB
-M^#RG6&X>%#ZYL6JZWR(J+B`D(`````<```#,(0``L%K4:@]!_18+%AIK/V9Q
-MZRDKW>]!1I\7$:,,L:*,4-\FC7>PT47O7)#PNK'#_*IA6LM<@W2AFZJ9<ZR8
-MP/E#=3D8M-AMW05AK%N8,1>F`'EM:2C62SOE3C3L at IT)>0]*-[4%I>"DHWG@:H
-MIY!UUB<>M@"Q%!:6B:6=3D=3DQA)6#09.6EF*/<O+_OR\_D4#UN>6QCA&V$C0G:2
-M']-A^,G=3DCAZC,2?V7:YC>\C'M=3D_\<H).$K=3D&&S4(`(P!``",`0```@```$4`
-M`8A3!```0!$``,"H`0'`J`$"`?0!]`%T!UFB^#RG6&X>%#ZYL6JZWR(J+B`D
-M"`````@```%L(0`!4`S?</$<TKT8#^9G\:XJ at YE4SI:/:X1_AB?:^W"W&]*(
-M>'%?9S8>=3D\GZ33*/11SE;C"6HX1T\Y]NU>&NE6AN:PA!6R(&"J)%"9WLYVU?
-M*.C^V$$G,FFZ%\0TM@;=3D,(*M!:]ZM/ZW6R./EIJ,<(-`I#6E5Q&P;E27>I1@
-MD77 at J_"&(HD1.(1P-P"+*8&FOM*P&].PY2`2C<.O.4#+*:<ZR,Q?7I0A>!2(
-M2,]3^=3D!;1+UYEJ"26>T(96%\0$,>D`ZD_/U%2.$+UM$].V5=3D_D]<O3)>?S_P
-M_=3D,54K8-2/?3VQ-U^E\XQU;U3'Z'20K#Y6MLW(T%V,7-QFNS:3?7NV;^DOR;
-M>O`H><(:8(FCNP_9-B#Q;LT[0M5R=3D6W+,D>^V at 1UVY+X*8`?W?T*9#_S)5H?
-M,WM,N at 0[Z23/TED8&T_!W'8J30?&/H)5`5OD[X\R3A*W1N1H"`!<`0``7`$`
-M``(```!%``%84P4``$`1``#`J`$!P*@!`@'T`?0!1`<IHO@\IUAN'A0^N;%J
-MNM\B*BX@)"`````(```!/"$``2!+?T<_28I^9S':<;M7K5J at OXY&'P\N(MJE
-MS=3D!0'4VTF0D0RN6W9/WI8KU2>C@;G4,+DB9P1N%VQ2,O5E"PC[;F_\M\HTN$
-M34 at FADW+>.\\2ADAZET<YM,VIIXS__'I3U<$E<QNWJTW,I80W'?78M5D\K05
-MGC<$?W1`2RH[?5/YK!7DUA1H&;*E`'VAOX*C_D!KP5Z!:XPZ-553X_VU^E!P
-M`L?Z-P3WLQ;?7KG4@:L1SN1_)`OE2>91!?ZT+T![6P>4X[%1ZQ*VZ&H=3D0AR@
-MFP+5,VQ<5+>@]`0KK?'`U1D#:L38PII$'*3XTR.?TBV9H6ZWO**M!E=3DQI)[T
-M0N4NFUE\3']UO7*D\<_FWD-,&Y0N^6F7CM at UEG"K6M\N=3D4X2MT;8D`@`?```
-M`'P````"````10``>%,&``!`$0``P*@!`<"H`0(!]`'T`&0&29KM=3D,[=3D6>9M
-MK(\$M][`-9,N("4(`````````%PJ``!`[. at Z*8U59&E2NI(.\BYWRZ/WU/.3
-M>HB)9H28V.SU3Y_("D*5EUTX=3D0N`:=3D)YPN7:RC>DUBLYV8Y`:]K-3A*W1AR<
-M"`!L````;`````(```!%``!H4P<``$`1``#`J`$!P*@!`@'T`?0`5`8YFNUT
-MSMU9YFVLCP2WWL`UDRX@)2``````````3````##J#Y<I&CR68G(8R7?-67/1
-M<N+W()O%LG@!0LZ_F;%P]:I7Y]H8E4D'SZ;]/TX2MT8;JP@`;````&P````"
-M````10``:%,(``!`$0``P*@!`<"H`0(!]`'T`%0&.9KM=3D,[=3D6>9MK(\$M][`
-M-9,N("4(`````0```$PJ```PYZE-E^PFUF-F;`#OZ,*8:\=3D/E,-_=3D]XRP4"?
-MXB(?GQ\'+$,`6JBF'4IM)^-.$K=3D&_[@(`&P```!L`````@```$4``&A3"0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CF:[73.W5GF;:R/!+?>P#63+B`E(`````$`
-M``!,````,%,+_HB2<<&1#>)CO+X[99I\["TMT2FU997!60TB]A^>+!XHRW!(
-MDO%_7)Y>3A*W1NJU"0"8`0``F`$```(```!%``&44PH``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEZM%.%+/C+V(``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``Y!;=3DZX-ZWO'2ZE48F+R[
-M2V\6$X%0;TB>`GB72N_R58E7N45-,4Z!QF at 6LKNQ)"8F6-5%+^UZ7 at R-H`*(
-M/>BV$'2A40G,W$5XKW$U>Z\V&X=3D^CG)MBP>R?V6V0FWX088)(!@>\@+)T>K0
-MH#-*5\2,2HT at CZG\*$,A>TC3?`_UDU\I```D0L$6?#1TV_BNHM`D2QI$#:']
-MN[`F>@,YIB_QY.JE=3D_,I```<``!`!'=3D\1L/NI30!H6*_3_:X'I-V+:5O````
-M'```0`7ES%,0N'B.^>V\#1$ED_WH+T76$TX2MT:ZQ`D`7````%P````"````
-M10``6%,+``!`$0``P*@!`<"H`0(!]`'T`$0&*>K13A2SXR]B```````````I
-M("(@`````````#P````@``!`!@````%'W?:X.PKT&[53[_(.OKUK8RX.ODX2
-MMT8&U`D`N`$``+@!```"````10`!M%,,``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA>K13A2SXR]B```````````I("((`````````9 at A```@``!`!@````%'W?:X
-M.PKT&[53[_(.OKUK8RX.OB(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``Y!;=3DZX-ZWO'2ZE48F+R[2V\6$X%0;TB>`GB72N_R58E7N45-
-M,4Z!QF at 6LKNQ)"8F6-5%+^UZ7 at R-H`*(/>BV$'2A40G,W$5XKW$U>Z\V&X=3D^
-MCG)MBP>R?V6V0FWX088)(!@>\@+)T>K0H#-*5\2,2HT at CZG\*$,A>TC3?`_U
-MDU\I```D0L$6?#1TV_BNHM`D2QI$#:']N[`F>@,YIB_QY.JE=3D_,I```<``!`
-M!'=3D\1L/NI30!H6*_3_:X'I-V+:5O````'```0`7ES%,0N'B.^>V\#1$ED_WH
-M+T76$TX2MT87^`D`4`$``%`!```"````10`!3%,-``!`$0``P*@!`<"H`0(!
-M]`'T`3@''>K13A2SXR]B)H?`#],Y20(A("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`)N at G=3D]FONC&>\B52Q"XAZ9?!I)]*QN&W+D7<<_J/\41S:+Y,<IB^TS!O1'.
-ME5[MH(O*HYG.$-O][IEXU*\&R".D)(XF8+:IB+4Y!;QEW[V`/O($MF:J"5=3DJ
-MNJ8>;6.7:!&]7?*Q7LZ%AW?V''/VQ;J5:BX[%Z,18C83EWZ.L<KS*0``)-NV
-M"O!YA8QPR#AV_JMZ/SADX`#R\^J_LCIX:[M5$V90*0``'```0`2N(5@'*%!7
-MY"QUG*@&_MV?<N*+$P```!P``$`%8M4BL=3DX_3PFVM!G$-D,[>A?PEJY.$K=3D&
-M-B8*``P!```,`0```@```$4``0A3#@``0!$``,"H`0'`J`$"`?0!]`#T!]GJ
-MT4X4L^,O8B:'P`_3.4D"+B`C"`````$```#L(P``T&%N&NN*H,VO'W6I?,>N
-M_S!]7$X>(/YQEC,LH]3*>HN\W(9HXT<S9CFGC!Q-N-DG:]^VDA&#!680Z<QU
-M9QAI"F'HNQ`EON1`;&(V1+82I8[P_EZB`2`>#'SGYL`52]5-#8\+U0$GBN8C
-M\#:=3D!G3G@<=3D88T1^$`LRL0KTZ7(88TSB%SAP7?'5:@>*I7K=3DMM8V+>/>W=3D4V
-M%PRJ1U!P:WR&G=3D,.-^.'H6DMI$%\XX#/1,$+1*J)U#6$P)QI!J.9+V1Y+\P)
-MR(0LT8]OQMX\'TX2MT89/PH`O````+P````"````10``N%,/``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B>K13A2SXR]B)H?`#],Y20(N(",@`````0```)PD``"`
-MZP"G[K1+F,3Z'7V;A@`N:871ZD<Y6&"^JXN'_9.2M(7_LFAFHA.#N-DJ9GQ/
-M%EG^059W,TLX(D/&X3)\5[1(N\#=3D52ZU,1UK?L(J'9NB_E0?!4<EHG=3DQC#]Q
-M00-VOQAD5EE'J_;#$O`F;$T`;V1%?-Y8-1'8REJC20Q5ODX2MT8U70H`'`$`
-M`!P!```"````10`!&%,0``!`$0``P*@!`<"H`0(!]`'T`00'Z>K13A2SXR]B
-M)H?`#],Y20(N("0(`````@```/PA``#@R2_!NA?>F6+J3]Y-+\1&C_1G1??P
-M2\KA9+GFUA#P(79.PG[E=3D[GR)-_%6\$_LE8,=3D2A]H_`?O4UNM-5L0PJ*+UN>
-MSB361([QH2L6'FE[C"9-1/29!>F3)YH3/K.7?I<3X6+ORT1WZP$;NXSMOLD7
-ME(BE)1TQF*OM`*G:&CGT2VFTT]'1?7QE?UO1N[6P3U':9_1VVAD5L<]=3DQA3\
-MH9Z<$ZB^.[M!*VW)GF:GP at 8F5N`S<I8=3D1M-T$6,+;?EBA&$0Q324B5I/B21+
-M\`I/>:O]>]:[D\B8A>5.Y1W3MDX2MT;3:`H`_````/P````"````10``^%,1
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R>K13A2SXR]B)H?`#],Y20(N("0(````
-M`P```-PA``#`);AG*Z[5&R]YN"Z-N&XZVIALUOUHY6OG^@HR&K:#%]]AYR7F
-MJ#ZG9::P8X,>DE8>JO>N),=3D>T9]\%0'8-WC*OA;#*-^?G&J])P,,3!52?9^^
-MHEQC9F%DRVJ[9OW/12"=3D!61U#;9,"HX,`)TN38(/*1BP^NP at MI_BN=3D]M+6,B
-MD1*!O$;?8U>WO6*/U;\,#-&_#/F]&I at A"L1&`W,74TN,WJQ;(XQG7;!3:V()
-MA#XL[E]+*E_L-BTEY4K4R[Y.$K=3D&PW,*`&P```!L`````@```$4``&A3$@``
-M0!$``,"H`0'`J`$"`?0!]`!4!CGJT4X4L^,O8B:'P`_3.4D"+B`D(`````(`
-M``!,*0``,!E[0C#3$%:9*EG\ORPG9N0#U4%6)ZJ;(>=3D;-Z6;O!Q;]I)\F9=3DL
-MM=3DM"ZHR)3A*W1AV/"@!L````;`````(```!%``!H4Q,``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YZM%.%+/C+V(FA\`/TSE)`BX@)"`````#````3"D``#"?5]EY
-M2)[;@_1,DA9S+@=3DSDSJM=3D'(GJE+27ZSP8<%EB at H?5!<.Q2T652E,`TX2MT:4
-MJ at H`/`$``#P!```"````10`!.%,4``!`$0``P*@!`<"H`0(!]`'T`20'">K1
-M3A2SXR]B)H?`#],Y20(N("0(````!````1PA``$`O&35U4\V6[M&4?.B&50/
-M>BRB_*>Q03DE<U39JD5>/VNH_C:=3DCH#>I`5ML1TY05RU00.9K]KT)!_F'-RV
-MO!TN'2W at R$0_YS^ED9!%Z;?(>YTK)("-YCT"?^.]'N'-DNM:TPP)6C:Y<#O_
-M_=3DO##1D9_<C3&7,=3D+<V- at -<LM2QNIO]),`OLFL>=3DGWXN))N%B)4++Q,)G!O!
-MWP!$PG#(AY.%N"[7GAOP$]2?+#\9Q at ZF+/$(4]]]K4ZGX''M)8EW)]#H#J,-
-M>+2EE-ZYD%V\"G<?G:?@\Z"+.\.*$"T<NG*%B$O6FE"0!]=3DJ'\G\WNF5X`KJ
-MD'V@=3D##Q>TXQW)9#3A*W1IRV"@`<`0``'`$```(```!%``$84Q4``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?IZM%.%+/C+V(FA\`/TSE)`BX@)`@````%````_"$`
-M`."H>7>P"MG\`H25,;&F7MUY3?>D!/$8Z9<D8?X)$D#>+!^+]74,"KT_%`EH
-MH:##WZAEK(K35(UEH[N.GK?-/.+:6)%7)&*#4V^X,C&4*V2F!_P,0TI:FQXJ
-M^&?3,7!%`WE^.M*3PQ'W,76)^X!FX8Y++2:T9US8A[ZS\7*SR7_PD`RY"B9O
-M at C?H%K:3Q5=3D@!:?I=3D+3IS`4!R5-%9]E0PR#@<G4K^95EXGIXE<RY2R4]7><K
-M[X1A/3HW%]7!(VWCN_%[,264D$!#VK,"GB4I+Z:7T@<P1Q?M0*PF)T'F3A*W
-M1B_&"@#L````[`````(```!%``#H4Q8``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MZM%.%+/C+V(FA\`/TSE)`BX@)"`````$````S"$``+"X7R`P[E2[$(@MQWI#
-M:FZ$(E@%5":MV,E+>^'T[&X17V!.HBQVOFQ7(N2THB2URD>/D at T>2O-Q!]EL
-MG,S_'`CKN>C&L^5/6F]"PBF/,:Z_C3',97F18)\R4M[I*Y^<1,Q'_EK)RM:/
-MFL[JBC>.6>6..P#6HS$UW-4D$!PH1:^^+1<M[;SYK)$7E)$`H2"XVDL3;^J2
-M=3DKH-<!'A+O50!<@7BHTNLJ6`A%(XB'\]3A*W1H;H"@#L````[`````(```!%
-M``#H4Q<``$`1``#`J`$!P*@!`@'T`?0`U`:YZM%.%+/C+V(FA\`/TSE)`BX@
-M)"`````%````S"$``+`A=3DU,`JT@?/R)5(=3D9H2$@6<RT/8M*$$<HH$(5CJ*O)
-M.'@%%B)`GP8Q[*L*X->*/]:$68X'M17/9)_Y=3DD0`3X3BG?-PG&W"Y-_%S(^"
-M_WFAM5QGC%UD^(N,)<V/SG#Z(Q;67IV2Z]'PV3M,&8;NQX>S)XP1017N698V
-M,G`RRH^U%03Z"NTT*9A[GGR+X_5V?,_E.H4Z,N^)BC`)G`#>`>,BX04 at 7]4?
-M?!_75W_Q3A*W1EX%"P`\`0``/`$```(```!%``$X4Q@``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)ZM%.%+/C+V(FA\`/TSE)`BX@)`@````&```!'"$``0``LLV:
-M9Y"F^2(1?W]/3]#3%2#[1\@%TVJ,ZC)6R^XN1*QJB['/YO!)(-;MH`U/$DR*
-M)ZY#NL8<FR55X*B0!DO0MCO&V_&#R20T:`;MI9+KD`E):V/V*A-OD2TV+EK"
-M_-[9QHUQ(X(7/]?36`&3%;$?D1%&A6$X",&Z3"D.8RZ)VD^0W`R at E1UF(MA1
-MB05'8296#$9YW7.WT at GXC34?QQ7^8$8R33_4-$2*DH!&W?M!EC<1,^'?87'Z
-M":!E\@8HNMISA>.N+QHG\5TP)&UX.('5YN=3D9 at Z\OD,SM]J*F=3D10;M,48L'!I
-MGUU?7[6,:^^7:XDU.ER"(9[T>+B(6Z-.$K=3D&*A$+`!P!```<`0```@```$4`
-M`1A3&0``0!$``,"H`0'`J`$"`?0!]`$$!^GJT4X4L^,O8B:'P`_3.4D"+B`D
-M"`````<```#\(0``X+%BQC7#U8%>+C)NTQP at 4C0#^F_0_UQ\*DPVK61S!N$^
-M]<Z$^)S``X:])[NK65'T*[`C5%7#86W/Y_T&-</969Z#VK1+2WM_9EF?A;G*
-M=3D(_T`>\R1]['(_?GK%_.A,EUD$&_>#'8!&_JA">S\:-[&6+I?E%!S/K]<KN*
-MNUP>W"'(/<N2Z`J*.`2KXM3I&CS6ZS@#?M at 3M&-F<2F>SVD1#$)+28B-W0-`
-M1+<,M;^RZ/!4V,3\N'T)*7J$1H7:MUD+3BF!RZ3?1&[II;@C!GD$B[7DLI!I
-M[-#L at 1`E:*I.$K=3D&B"$+`.P```#L`````@```$4``.A3&@``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KGJT4X4L^,O8B:'P`_3.4D"+B`D(`````8```#,(0``L#^O
-MX[MQ=3D$^5C.0G1*NO\G!4H/B9,#ON0(U-W^:!>EPR,/,=3D)+>PF`$UN)6WO^(\
-M0^>1=3DY&G@=3D]"],4^-*/([Y$D\\OL%`Q69Q>E!2YHGF+?%[9;R_H)VF-V[930
-MW"0_(KIY!J;FW6B9^_>;[1YSY36C"YP6PH2SXUC;IG;C9_0J%2;O&-2!8^#F
-ML7J(S_M-+NQCZXA8SJY:@I68_I5L<I!&H(DR#;T?_NXL2]9.$K=3D&YD0+`.P`
-M``#L`````@```$4``.A3&P``0!$``,"H`0'`J`$"`?0!]`#4!KGJT4X4L^,O
-M8B:'P`_3.4D"+B`D(`````<```#,(0``L$E8*&21Y:3P_-3I1&R!WV`A5]T[
-MFP!.&$.2L=3D54#NG2,<D%K??MMQ\5OK^=3D%7PY7&`L62 at 0ZOA#(&/,/`\SQ&BU
-M"&]Y*IX2Z]XKB7+:LIHLG9%-R\1(X2RHUHW=3DY"*8E6+**N/BOH.";\G""29[
-MK>G&CT68ZOH9G;^;I[H]_YCGG7"OL$)IK;H6^KZB:#2/@_D):BK`-/D\E/`.
-M(BO<5'?#1JBDAE,1WEG:U\Y.$K=3D&(&H+`(P!``",`0```@```$4``8A3'```
-M0!$``,"H`0'`J`$"`?0!]`%T!UGJT4X4L^,O8B:'P`_3.4D"+B`D"`````@`
-M``%L(0`!4-[!$>%6)R=3DP(`^([1=3D)V]^]`F!,!/M^PS/=3DLHUXN?$!)]4<OI_+
-M3GH7;*@,(E)E;NIJY6L$2C/NA0<B&^;C+ZS(Z^E2+&TIL%+033D97LXHF>#/
-M$GHXQZNCY>&YI&3YY)9V:X4SVDYX2>#V*O:H[U-ZAV`9VB5[C%W&#%,:?9PO
-MPZB6`FMPG>$ZX.R1/#"BCNRH`Q>K=3DJ%`&()T8W`)01W5,U=3D(@D*<]D!X0)Y*
-M.]73C5H8%)2_SN%9',K=3D<GS_`=3DH:9T;3\KDG#]B#9S[M!+?Q4Y#=3D@#$'1/SK
-M6)F?@/G^LFDC]CYTZ]6RWJ50&/3X>O9?L_]X!V-F0Y4CODO9K]=3D%IG#QH[0(
-M*Y6Y[^.U%)@D1M%B>G)P848PF!B;WF]#.H"FI2[F'=3D`4^.EBH;HIAXY!K$J]
-MQ[SIA[7M(_2"AU6;OC+$Z;&PJ?W<U.\T3A*W1IB>"P!<`0``7`$```(```!%
-M``%84QT``$`1``#`J`$!P*@!`@'T`?0!1`<IZM%.%+/C+V(FA\`/TSE)`BX@
-M)"`````(```!/"$``2#*]*KOW2(S]AZK69#V"AZFV!`4T,<3O]UZ/FD"2B)A
-M2^XOB5-U#SF,S6OKTE^"%5O79U/00Q<:8D--;8EUTI=3DAP1;L6IA>7$?@S29.
-M$@G'QYP8ZUKL+>9BU.J?18W:EW-ATMN at 2EY"FWXH[WH3/1'"A1D=3DRC.,66*[
-M^:$TVY[?$B/^4?SJMX`UQ,18$W"`?/^<CB#(IC!O9\$7+%>FS).GJGXU3Y3/
-M`L'X&&3K3'`-[UV9;U)W#Z!M4G`AC!F:8$EH"R7@=3D*U at 9I[W_2BXC;V1#=3DAI
-MXK%]$]7CAT)5Q<FAC]9RF2.?%5NQD5G%W*KT3L$<8+[HY<64?)`&BTI5L:Z:
-M4GT8)MSE=3DDESH-[JA<_7,&DO^<8\QBYF4")7QTX2MT9UQ`L`?````'P````"
-M````10``>%,>``!`$0``P*@!`<"H`0(!]`'T`&0&2<Z>X24\7P*S;/6 at 8V(3
-M(JDN("4(`````````%PJ``!`;DS%>,8P9EC$CN&A]:9K]"#<\O6)U&K#>F8M
-ML at H1$Q]WQ'`A&3%!^RKZQQ.K!`<L-N&?W%-9N;XJ"M$N3A*W1O'/"P!L````
-M;`````(```!%``!H4Q\``$`1``#`J`$!P*@!`@'T`?0`5`8YSI[A)3Q?`K-L
-M]:!C8A,BJ2X@)2``````````3````##"2:W1O98\#J_$6G?^X`X8*(6B#,UT
-MQL+I!\C\1)LV:U+!O9O"_2;QRDVF:DX2MT:/W at L`;````&P````"````10``
-M:%,@``!`$0``P*@!`<"H`0(!]`'T`%0&.<Z>X24\7P*S;/6 at 8V(3(JDN("4(
-M`````0```$PJ```PY4<SYIR:_^(&&9*#'HK0].TI-S_L:'YPK&YQZ=3D^[(6U&
-M.U1FSOXB:Y:'"M%.$K=3D&H^L+`&P```!L`````@```$4``&A3(0``0!$``,"H
-M`0'`J`$"`?0!]`!4!CG.GN$E/%\"LVSUH&-B$R*I+B`E(`````$```!,````
-M,!N`R4+00HM=3D_C%69^8*E<>HIB%8\FA'U9`WKY!?["%AUTPT>U?8ENP:-BO0
-M3A*W1H_F#`"8`0``F`$```(```!%``&44R(``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEY(9(ON%:1<D``````````"$@(@@````````!>"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``,$]1:Y\\Z7SV%L.*0\A at Y^(ZO*#T
-M'3YEXBA2 at -`VLA,1P/)G$8?9J at 9B2.Q;N1;'E`YC,\!/>D&-*(A"/*:[9"]1
-M)X<+*M@@PE'OJ9A%TU?)(S>R*"DBZ4$S)-Y<F\H3#7H#-D!2?=3D7V)`K(EG6K
-M6+,DFAY&4"YAI82?<Q#L[A\I```DO2 at 6\*EMCF>9'9'1L0Z`-M(^XXB8L\(A
-M;^S+X5]#N2$I```<``!`!-H(JC_T-*CFL+GCZ>ES^LWQM?,M````'```0`6;
-M2O$K_-3N19.J2V7 at M+C@AERU:4X2MT8E]@P`7````%P````"````10``6%,C
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*>2&2+[A6D7)```````````I("(@````
-M`````#P````@``!`!@````'[D44*5S&\.X#PE(;`;#GXTBIZ14X2MT:]!0T`
-MN`$``+@!```"````10`!M%,D``!`$0``P*@!`<"H`0(!]`'T`:`'A>2&2+[A
-M6D7)```````````I("((`````````9 at A```@``!`!@````'[D44*5S&\.X#P
-ME(;`;#GXTBIZ12(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``,$]1:Y\\Z7SV%L.*0\A at Y^(ZO*#T'3YEXBA2 at -`VLA,1P/)G$8?9J at 9B
-M2.Q;N1;'E`YC,\!/>D&-*(A"/*:[9"]1)X<+*M@@PE'OJ9A%TU?)(S>R*"DB
-MZ4$S)-Y<F\H3#7H#-D!2?=3D7V)`K(EG6K6+,DFAY&4"YAI82?<Q#L[A\I```D
-MO2 at 6\*EMCF>9'9'1L0Z`-M(^XXB8L\(A;^S+X5]#N2$I```<``!`!-H(JC_T
-M-*CFL+GCZ>ES^LWQM?,M````'```0`6;2O$K_-3N19.J2V7 at M+C@AERU:4X2
-MMT9;,0T`4`$``%`!```"````10`!3%,E``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'>2&2+[A6D7)AQ\)OMQHUZ<A("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``..:0\IN
-M]':/K8#2S;IV73$?X;I9+L7ATN3HHYZ..!:G4P5(;$D^ZIV\4A[ZGP-$E5JF
-MC0ER+-V%B[SOA$?2V4BIR;3C+!99%L>\'"!ROH+B[VCG2;.NG4]5L&@"P4=3DS
-M[UX'.5);X."A at QYPS":V!L4DG59&0O\-O89XV')+2))`*0``)+&%O2'&D@%@
-MQ#'%U&>-PUHN:P?F;3_N>)6A>[%9+G0^*0``'```0`2^MA)`E.&X<%!#0:[]
-MF-XP1TQWSP```!P``$`%WL^AT)F0P=3DCXGGU-",HR3HWW(NU.$K=3D&Y%T-``P!
-M```,`0```@```$4``0A3)@``0!$``,"H`0'`J`$"`?0!]`#T!]GDADB^X5I%
-MR8<?";[<:->G+B`C"`````$```#L(P``T&3L_M.B9Q_H7PMI87ZI%!.Q(&&!
-MHM\$`#WM"&Q\1^]^X8W.'<2JT=3D^WR6^052L?*XT>"G2RMKPGJE5'O^%<(8`9
-M$?AG83RPY3JJ>J1ED=3D78OCY<]5ID+=3D2RE!$-\;G<&&68M[R?Z*T?I0-^!)9;
-ML$@/KQO\2^=3D27C;I<6C=3D>GG!8M!G7S8UP^K/61>R!>I/NYQ$0*,K31U$,F6&
-M=3DTSX2];3%%DZ9IHX^6:J,Z^'<LK(L7-QRG1[O0K"/%'?T>:XE;BDG#8=3D]#J4
-MV-B9YTX2MT:C=3D at T`O````+P````"````10``N%,G``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B>2&2+[A6D7)AQ\)OMQHUZ<N(",@`````0```)PD``"`&0*2EOOO
-MMN>T_.^C,^K2/++Q6!,3"YWZ?H(I<^=3D?`Q).U(E!7Y^I^(2F?K@^`;ADO5BK
-MM!YP]0T>P&[<&0_FP]L*Y<5=3DRTJV-/;E:%,T_;FK69WP!T5-B.]'ACC4FD3U
-MY=3DM=3D>6P<_<G,]$W=3DOF&<3-I=3D2&N[/-Z0AB']MDX2MT9/E0T`'`$``!P!```"
-M````10`!&%,H``!`$0``P*@!`<"H`0(!]`'T`00'Z>2&2+[A6D7)AQ\)OMQH
-MUZ<N("0(`````@```/PA``#@;6DX>+_D4NI;=3D1S;>[KJY5[,%FZ\921*?]*;
-M])F?^_*!RH:\!R/6Q`X9V0ZR66V at Z@F^(BHA'BQ. at W;Y2^(B+Y$QJ1SC?P!3
-M at M5&.X)^#/QIA.#-?#XRP8;N\+%!06./;]1-^N7:V$E`B4'$47)JUH2Z4%<H
-MZ96!')39)'O5YFV\,VY[GZ6N28946%BW^GR<SW'`2Q3Z%FBF>U0F6HUEPYJ*
-ME^IN/C0MZ at Z2-M7@ZN!;U&MOW8PD+>NUTMU0+V';:)P<6TN7O,=3D`F\&7R]$:
-M^9U`_P.FH]5C7EJFUTX2MT8\I0T`;````&P````"````10``:%,I``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.>2&2+[A6D7)AQ\)OMQHUZ<N("0@`````@```$PI
-M```P\PC(U[%5;]#/FC:S.$ID'T5>;4&E;V`7-5HQ\7K](@B-IJDF?AT3*8%E
-M4=3DI.$K=3D&8*L-`/P```#\`````@```$4``/A3*@``0!$``,"H`0'`J`$"`?0!
-M]`#D!LGDADB^X5I%R8<?";[<:->G+B`D"`````,```#<(0``P##I0=3D!-;EME
-M.#IW_+,3QW4,.4X^:)22:X%6Z6ZPSSQJ4!7MX#M/XRZX7JV$7C4=3DF];*BDB3
-M%W7O\L\#CGZPBBLF>OU?0>O5>4,T(4YX/JVI."!3!@4XN at Q"*ERS:[2)UC%.
-M&&=3D'!LKM'X3QKBLU<=3D@@T?>?:OC2:7+[5KO_3:V^`<@9;Y\ZI6/:NBF\UX\=3D
-MGA.,96K\LBP'JWQPO&!I_#:@>N.:5OXI(E<P%/7#\+H?=3D=3DB'K#Q,^NB]IRWD
-M3A*W1E_'#0!L````;`````(```!%``!H4RL``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YY(9(ON%:1<F''PF^W&C7IRX@)"`````#````3"D``#"'U7WOC#5J(@Z)
-MK]KM.^+*5K(&`W=3DD7#8!LH^%(+BRR"5]E$?^49 at N!G1:)DX2MT;UX0T`/`$`
-M`#P!```"````10`!.%,L``!`$0``P*@!`<"H`0(!]`'T`20'">2&2+[A6D7)
-MAQ\)OMQHUZ<N("0(````!````1PA``$`1-(^OA'@(D`KV]8RN5)8$X^P>"6]
-M^:B&(&/[?%D7%4\7BC<1,(],1$<32SAA!B"[MWION5]=3D?K2?M)[84LSKH&=3D8
-M`EO_T9^KNP-O!>H[Y6UQ6#_QID@%F*EC`)7FEEOBV.WPI/0S2/CW\`UJZ/@!
-M*^CE:Z5>:.L;H?6JP3T5`@-9"90QGR"/A(!:8<=3D9_T233[H&GY0S<N?=3D!1UV
-MKG\$T5)1LJ%`R<WVNRHL[$-:[4%HFHV(YLXGX@'>:-AR)JA:I)IE\[]ABM)F
-M_V":+HR<:F at Y9+WRL0R5GYT1@>!@J\"-[;F.FJ2$#T>:!0W>O][I'#E;T>@]
-MF/S(+&'R3A*W1H7M#0`<`0``'`$```(```!%``$84RT``$`1``#`J`$!P*@!
-M`@'T`?0!!`?IY(9(ON%:1<F''PF^W&C7IRX@)`@````%````_"$``."U'N"5
-M`&%("B-!@P(^Y5$CBO/J%?7"1!Z6BXB1/U>*AL=3D7J>#-K:VK?4^Y)Z&=3DHW_$
-MP8^4$_4;:[U/$V!Z32P/'BQ#`3^.<418NQR)U^T.DB-2",FIHX5Q95J8D([\
-MY at 8W3"P6QG+1$T\AW'+>@:NT&-=3D3!$.VIJJ!Q4Z).C8'X>6)M^)P60<]SH(,
-M!R7T<6JFQNZ[0I at 5Y/"K,M.U,YD3=3D7$,$X^F#]4:IE<&E%2XU!4->(IK)J^X
-M:H^_TRHOL1Z`OG..T>)+W4?&>-\\00UK>PE%W0FH1:C.VP!+3A*W1O+\#0#L
-M````[`````(```!%``#H4RX``$`1``#`J`$!P*@!`@'T`?0`U`:YY(9(ON%:
-M1<F''PF^W&C7IRX@)"`````$````S"$``+"-A5=3D*]`U";<D(G80C"*SR)J)I
-M?N[ST[</-&LC[MV.3SL%-/R\:1@%-!R<LEK%4`WG.'7O+1W``=3D>^M,1B<2&@
-MKT/%)L@/$9S_T(E;XI/V=3DK>]OWT3R4Q_0V'C)V;*PD##"T3@!#,M3TQ_IO]K
-ML&&95`?.L:W`O@);V]96R]IPH)&=3DLTRS+E$<IBC)DA;$YKS*E`.CG>-.L20"
-MT7X#DJMX]RTO1UXQS(1XV+=3DN3A*W1O@?#@#L````[`````(```!%``#H4R\`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YY(9(ON%:1<F''PF^W&C7IRX@)"`````%
-M````S"$``+")<?-#A7C32-#]\_IWOR9-$+U+`PX.$J#DM=3D+$\ML'\EXT=3DWY*
-M6.EA)`0%?6MGUC=3D8)G%4R3,HJ0B?X`G<>*6V'BLN5G2Z&??)P[]__,[9:??!
-ME=3DM(NJ7$4$7P4T:C`$`5B0_AR'XPR3"4ZVHG"JQ!4B9TGTK(%#$:OI1A&(E(
-M+Y#AV&0@;.X/!2JRGKQ;+P@"&MVNC,(*#_)TG[=3D66'7$/!B^UV1FGR]%L4--
-M3A*W1H4\#@`\`0``/`$```(```!%``$X4S```$`1``#`J`$!P*@!`@'T`?0!
-M)`<)Y(9(ON%:1<F''PF^W&C7IRX@)`@````&```!'"$``0`,*I>KHRY@!O95
-M2@\X>BD29UL>B5!6USUNQ%E49#6J4;EUI9T5`35IADNI-8<4DHS(L2\.CBHV
-MMNT']$8N(=3D'UI7`O-?S[F-<[=3DD`:FW:IW,5>04`#RSM?WU**NU>'BT%9EP6T
-M%*@B][N,>D_$6.=3D<V[.883WVZYO.YNT4]TCBGO[U$>S\-&9R&N8.7W/";_GQ
-M$29RB0XJN=3DB')D$W6^E[)5UJP6QF6KFP&B`(B"G&P621A>6U%H3*.J3OI2.`
-M;PW8/L*^E0+<[=3D9P]4^=3D5C'QU\K>DG-L=3D?\7%JZQG*#*"7R^D:P0(OG[*8&Y
-M!XJ1#(YSLR(6JX*6`Y?(9AQ.$K=3D&AD(.`!P!```<`0```@```$4``1A3,0``
-M0!$``,"H`0'`J`$"`?0!]`$$!^GDADB^X5I%R8<?";[<:->G+B`D"`````<`
-M``#\(0``X%-<#`,N'N4VTMQG@?@^)Q*>LJVF_0#TAC+YY<\&ZGJ^A?LEXEYA
-M%A61J8MG?Z0K9P;&QUS_.8H4RW3O/?WS($K!SX_3^DO;$G<':K:I/3&::'WG
-M_"3$!=3D<VB-BD9FXF_J.2',M"O)1/#=3DFP5#56I9,Q*'`J;*QIL:^[L),;N4YD
-M\I[I9R=3D_(]<P08:D-`*8JB)<]?+JN+Z\(JCXDT*61*R'4,L[Z0YC=3D8U%&F`A
-M)$2_PU`!6:ZY-^-W);#K!\>/W,^4:0E2C/^!5>Q.J#GVCO+/6#L"";DK,6$'
-M%X%.$K=3D&'U at .`.P```#L`````@```$4``.A3,@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KGDADB^X5I%R8<?";[<:->G+B`D(`````8```#,(0``L#U)BB0/C)*#
-MK>.^Q2W\+I[$^?4TUPR^"B2ML?JSX$/#2XEG'-7EQAY%75T26Z`L at H;JRI]'
-M:WA>1U/2$!U#:3/[)8'UM4VH8!'EK>QAN$3]DR61_0T2YVE1'0VX\W9)M.\*
-M;?4-79BEM[21J$PTC9LY'Q]AE4A`A[56T'UE%FX2E/>0Y^+CUS at U\*(O`(VX
-M_\?`P:S*OR;R`*Z=3D6ORPM@:QVSO>72EZ##W?<?9.$K=3D&!WL.`.P```#L````
-M`@```$4``.A3-```0!$``,"H`0'`J`$"`?0!]`#4!KGDADB^X5I%R8<?";[<
-M:->G+B`D(`````<```#,(0``L.C(,W",/H)L05_KC'*$DT,HUNL?HE"'9WFK
-M[2'%AN?!Y[:MFQR@*5?"0D*-XHX)3%+;R.5[VF\9XAF;IZ"`.S%1"C`M0&BY
-MB#2=3D3SNDS7LT?]<7N0\9JH-C<.+29,4=3D?*`1 at DM]_VG'"AR0GK3,T$#Y*^"D
-MK![DH*FFW=3D`I#?H3NK7_XVL7&NMV<5),B:7H1;\RK[8O'XX;VZ?AVQO*;S1'
-M(]0AA,"Z=3DA$3:<9.$K=3D&U*`.`(P!``",`0```@```$4``8A3-0``0!$``,"H
-M`0'`J`$"`?0!]`%T!UGDADB^X5I%R8<?";[<:->G+B`D"`````@```%L(0`!
-M4'>?0?VFPO%+:O2.B[DEUF(N8;AS.3AMPD:TC4RC31#=3D@@&,O=3D&"-?">:[X0
-MQ3&GM(J<:M,]5:/+A=3DT at ORJ8=3D*'6^P],2[:DJ6B9OY,Z?G9*0>]OSX"$=3D at -[
-MDQ0$82CEFM2THXV($D\_.\!BY$]I(0W/N4)MZM5JR?\N7[-!#=3D801#[8JL2R
-M)-I-XN<S2ZT/M$8ER32EW-.B%O*59+ZCD?=3D=3D6-NT\6C-'<:7&\>R8..C!1][
-MZJ2F]&:]`2KZ0:WK9>[-W0?.\ZCH!QM(M2`LRHL2R<WOXB/'C5C;"--I4V'/
-MR%[B$#V:.7TG3%^>89/FM]OGO%,5;BF:<JS]UX&$'X3CL?K^=3D,V=3DU#C:5A'3
-M6C[X>\L6,3Y,"):!9ZG2@!>;++N6<2\#^[.5!:OT*>1?@\&;!KP#9_.M4Z6,
-ML$V,3J6QZS/4+:[S[L,;#ZI]3A*W1H74#@!<`0``7`$```(```!%``%84S8`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<IY(9(ON%:1<F''PF^W&C7IRX@)"`````(
-M```!/"$``2!29P+ at VS6T3">=3DEJX>Z5)=3D3G-&Z($%O_3EMK*NSP(WJ*KS!G;M
-M4#-EBE12+UXS7TJMZ*O!:R7CS.EZ(4%++)4JD&W8*BF4EACP5?V`F:^L>EX,
-MN+O"`-VJP[UUMO'D4C+GS,5`9)P+20$'NBR3%Q<//N#8P0VG728:H:]JWVSU
-M>A$'RSWP=3D@\PV+*=3D6^2&+?;?BVA^-LR5\HC7BL:F=3D=3DP7*B_Z9!D0AWLFXJ[[
-MWG**Z$X4>&\LS-(G0IGI)IV$\#$8[-CFL'>S7C4:U@"W<+R!>,T]+XJ>M&N2
-MKIK:*PN4Q>@.M5DIY7BM0U7`'B&[;Y.X+F=3DEDN2"B@[6[D]JLSRIK=3D(/:5\"
-MO!.E83<9_*((W6V__.[H!!W*OP'NCTX2MT;J^PX`?````'P````"````10``
-M>%,W``!`$0``P*@!`<"H`0(!]`'T`&0&26<]FG:VX%,AH!I&O2;H6>XN("4(
-M`````````%PJ``!`]"U/'R+/:>\+XXU1,-&-`$7Q9*"M"&;@WAQ>)E<[Q=3DJ'
-MH%'%_JGI^[(GC%V8Q*8;U;3>/+!34#&4=3DEW/3A*W1F('#P!L````;`````(`
-M``!%``!H4S@``$`1``#`J`$!P*@!`@'T`?0`5`8Y9SV:=3DK;@4R&@&D:])NA9
-M[BX@)2``````````3````##/\E##K$(1&?11R]<460**OWO*%#KAX*>5:!9L
-MKEF*D*6#>];U%_NDVC.>;4X2MT;(%0\`;````&P````"````10``:%,Y``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.6<]FG:VX%,AH!I&O2;H6>XN("4(`````0``
-M`$PJ```P2&.'#U8W;,DV'2NK>)8V>K[O&[X`VW`>#/.%A[RN+5E%E0 at P)S`8
-M'`]=3D4S5.$K=3D&!2,/`&P```!L`````@```$4``&A3.@``0!$``,"H`0'`J`$"
-M`?0!]`!4!CEG/9IVMN!3(:`:1KTFZ%GN+B`E(`````$```!,````,/5S(0*@
-M$>I=3D5@#=3D]4Z\,+ at WGD%PF7YF6\:OG`&0K55&=3D!&D9D$_?2 at PYLJ53Q*W1F3;
-M``"8`0``F`$```(```!%``&44SL``$`1``#`J`$!P*@!`@'T`?0!@`=3DEHGE%
-M9*FT2IL``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``%V#W!XSS]#/K)=3D*9Q9"I<BD99L<VL>D*[@D7
-M)WZJHP+3'EVS:R;E&E:FMHF6F]3)(QASL#'+%^@*E;Z+6'`D=3DNCV+3*3"\?9
-MC":+<=3DPUETIJ<6(^^)Z#[<M9:*(\YA0!O]1=3D,H9["^A'7RXA0"@2E^LWJ%GZ
-MM^]N\+%,<VHG[,4I```DE3C#1T0112U-:'G>.F!6JWP!NZ_-Q>N_;5M`VDKU
-MI<8I```<``!`!.'GG,$W$YKYD>'LT,P at 55OQ@8OF````'```0`63CF0SS1%.
-M"&;F22YQ#P/C'\#DHD\2MT8)Z@``7````%P````"````10``6%,\``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*:)Y162IM$J;```````````I("(@`````````#P`
-M```@``!`!@````&X[.P:[H)KS>!^9QGC`G07C?6\\T\2MT8O^@``N`$``+@!
-M```"````10`!M%,]``!`$0``P*@!`<"H`0(!]`'T`:`'A:)Y162IM$J;````
-M```````I("((`````````9 at A```@``!`!@````&X[.P:[H)KS>!^9QGC`G07
-MC?6\\R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``%V#W
-M!XSS]#/K)=3D*9Q9"I<BD99L<VL>D*[@D7)WZJHP+3'EVS:R;E&E:FMHF6F]3)
-M(QASL#'+%^@*E;Z+6'`D=3DNCV+3*3"\?9C":+<=3DPUETIJ<6(^^)Z#[<M9:*(\
-MYA0!O]1=3D,H9["^A'7RXA0"@2E^LWJ%GZM^]N\+%,<VHG[,4I```DE3C#1T01
-M12U-:'G>.F!6JWP!NZ_-Q>N_;5M`VDKUI<8I```<``!`!.'GG,$W$YKYD>'L
-MT,P at 55OQ@8OF````'```0`63CF0SS1%."&;F22YQ#P/C'\#DHD\2MT98'P$`
-M4`$``%`!```"````10`!3%,^``!`$0``P*@!`<"H`0(!]`'T`3@'':)Y162I
-MM$J;AZ[)A<ND[^4A("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``"#EP.843<ID!O`%
-MFJ$0(=3D&'R;MUK(R=3D-Y6+</>Z<'TM<$DN8W.<9U(#>\M6+<>T,E;ED@=3DQ7RZA
-MXLTV\^MRU;)-ZWIFU::GDB-+OGWY8?GV)]&;Y.'<KW`*K9WA@[H'2JM03>@$
-MJ!00[P"HIC;J.=3DY6L6GF>VL1)3+CXR(X:U$E*0``)%^>Z%DZ-&ITYJ[]-";R
-MNXT6_[NO40&<G1KJON?*F;FE*0``'```0`2PME<%AK%=3D8DDKY*^TZ>&Q62CS
-M@````!P``$`%L>=3DDD>KF;QL'N%)QM?@85UJV<H-/$K=3D&S4L!``P!```,`0``
-M`@```$4``0A3/P``0!$``,"H`0'`J`$"`?0!]`#T!]FB>45DJ;1*FX>NR87+
-MI._E+B`C"`````$```#L(P``T!,BIXO?0%3+4`9G.O''S](H\/^UR/19/WDC
-MI]B-<`TC>"*&94T*/'@HS!T?R4;]HKMG58]T2!64-/P7$1)A_PY#2#YQ4CG;
-M"2Q,TOTZ?K\48<!/?;;,AY)"UL2A90NGI+C.8 at LP*0Q8K at +7`L?40M66[A9?
-M_D4-CF>!+W7*8T$S::I\@^;=3D-3N&8SNG:;(2?S#J"@*':>L[)">N=3DT1-(,@`
-M at .SF1,7Q<IZI$OIS;0Z#'X2XNE_703Q98)!_?-MI*#,@%')$D,R(HTYQ&$\2
-MMT;19`$`O````+P````"````10``N%-```!`$0``P*@!`<"H`0(!]`'T`*0&
-MB:)Y162IM$J;AZ[)A<ND[^4N(",@`````0```)PD``"`>L\_O5WE&Q;50NK0
-MC-&VY5I3$BZ3K2V3Q-,D=3D;(.)\$LF*YV/3R'D(=3D"/&V>AC\(.K%]2K.X?O(T
-MG#[@H^V!J4UA1(S<N5C$IMTZE'-D,WG[W3BRB-H$CUYT=3DVWGFI*VU$N^,E\E
-M&QS0]TB+:F.*5D44]USTW`4PAQ)#@T\2MT8RF0$`'`$``!P!```"````10`!
-M&%-!``!`$0``P*@!`<"H`0(!]`'T`00'Z:)Y162IM$J;AZ[)A<ND[^4N("0(
-M`````@```/PA``#@'5O"MC[1-6-7,#A]BAR9FT]M4/8_-54N+*LEGZ#2G&66
-M_U*?\*S&9$^"RHJCZ6`F"1M(9JIY+%.85_+BB6D.`JY/V3^H];<+Q]D?U9.K
-MH9=3D622^N%KR[:VS$9NI8&4?*S9*1S(<;%VQ&K[[X,VU+CMIVWM+J.#Y=3DH)TC
-M9H9.&94T\L at 6&WAEF.36<FLZ]C6W':]FO52:,1EP3BQ0E5<?6D=3D7E?SY3\>T
-MB_+,V3(GIDW6['L=3DCM,.YKE4$'BUY4=3D*N1NXG#_ at U0\"Z?\KJZ.QPVEW%'`,
-M:WI`T00=3D/4\2MT:WI`$`_````/P````"````10``^%-"``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R:)Y162IM$J;AZ[)A<ND[^4N("0(`````P```-PA``#`/'RA
-M].*Y%2__=3D:IR<P/86?2\\^3XI$6O!6R]C9YC$MM'.$)-EXV`C\I\ICP`\KBJ
-M!S\>'<LY?(VY)`SC=3D$A9N^;DH("4IB'RI!AII$]?ZG><POE;.8H$-MK1I9UP
-M+QAZ_^)6PV&M#_-;,&!@C-<^''#>12-:K3[E],$<):R>!B>[]N.V"^K6HLYI
-MAT-4IWX!J5JK1,XFCQ,-5N>WM.:%1I4<M9AB#W+)U;T?:8OU'/KG)6L.0F,-
-MSN@\G;=3D/$K=3D&<J\!`&P```!L`````@```$4``&A30P``0!$``,"H`0'`J`$"
-M`?0!]`!4!CFB>45DJ;1*FX>NR87+I._E+B`D(`````(```!,*0``,/\T`>RP
-M?<DVG'B&0^BT67%$U_<YTL]"6L%M5>[_"&N8'':5TH9S\3'OU2'13Q*W1L7*
-M`0!L````;`````(```!%``!H4T0``$`1``#`J`$!P*@!`@'T`?0`5`8YHGE%
-M9*FT2IN'KLF%RZ3OY2X@)"`````#````3"D``#`MY+K"G^=3DQ%A&^:&'](0'/
-MT0*_*,BC2_*H;:0Q<IPN<ZCX/[S0FRB9Q9&U\$\2MT8?Y@$`/`$``#P!```"
-M````10`!.%-%``!`$0``P*@!`<"H`0(!]`'T`20'":)Y162IM$J;AZ[)A<ND
-M[^4N("0(````!````1PA``$`O?'ZUU&^K&"5Q!B3"Y5TZ.R,34QE+NUC)\<M
-MZ3EG!-)&D1E5V`35N_RS!S0N1!^H7)_[*LZ=3D0R[Q9FT0HT8D?_1U at M;F+SI3
-MZ+AA$@Z(H*JR%Y-IH>1B;&22GE#S?HWF\YXXQ^C2F8I at 46O1+:L_!UH)`[Q7
-M..B.H"X]R at O]&`^,<?/_6UJ=3DS'R[[]K6F<[N:=3DJ+`Q:%EIP&./#TK8(@JE/8
-M8R"3F`WG0]GA&>$`M4\,ULRV%(M7X;SBTU7MWFWPW1OTM<>(@F"FT*>8!HBE
-MX$C+2VX3"'].X-'ET(P`&0=3D30"9D:072$!UI+>PR),RK(JB'-^`4"`C>#-^0
-M3Q*W1C3U`0`<`0``'`$```(```!%``$84T8``$`1``#`J`$!P*@!`@'T`?0!
-M!`?IHGE%9*FT2IN'KLF%RZ3OY2X@)`@````%````_"$``.#FO at XKF429OP]`
-M5;$N9FL6[&O\8&V9\2E!QM,&7OW,SX at Z&+G2YZ&U>?(:.9/TP\9V1#ZM at CD@
-M1;7/;[;>>,U4Q\FW5G'X:;2TC&`4-5EVF5:R#E$^)41O[C$%V$ZV9=3D%9&J!G
-M5'-+E63?1-I!'NGCY,X1I<7A^\AG2E/RI6RU?2(F at 5?<8RR@$6:SS3I:4;<T
-M%K.OU\.1DJ6\B561 at T:(L`A:("FHW+5\@?CV5I^(1PRM3!/K^LN-PW?@Q'74
-MZ%E-XSFV6LY'.`G,.%VQTILK40[P&IP^HV=3DLIE1;3Q*W1D("`@#L````[```
-M``(```!%``#H4T<``$`1``#`J`$!P*@!`@'T`?0`U`:YHGE%9*FT2IN'KLF%
-MRZ3OY2X@)"`````$````S"$``+!/)(MV:<!0 at M&N1D1F@/;&6AZ&[6N8,3^9
-M)\(+\UNIGKW9#;\A at H"81J]S,X*38TU0/\V5N%(YRDX=3D&7(7D%',N0-[5E12
-MO:'PP$^#61$`R;^!K.#]N+M-3[EZV)#,/I at 3/$%D3O"^]L=3D).BL`'+3-%GFH
-M$#(%[.3;'!^F-57#/O<T"S,)<BN=3D+U&@@#[<SM;27;+)#A74"K7=3DV&C^2[O[
-MEY"_1 at M5?:J<F7X*3Q*W1I4D`@#L````[`````(```!%``#H4TH``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YHGE%9*FT2IN'KLF%RZ3OY2X@)"`````%````S"$`
-M`+#^$#MO=3DZA.T-E?V7\)LI?VO'_7R;,<3>^$7N3_9HY7)3^'2`5SWST4)*`V
-M=3D?>P0=3DS^)`?(WV,3RZWLQ^XZ?.3*5U?-3.:.C^'`8LRR%U"#JA/#T=3D+^YD8+
-M at LEV>E=3D\6;>L*M9/;44RLX'&4Y<7M-1((TO\0FC<;+$-7[P>GB2/Q^#+QBV/
-MYC69"/?N;7#^TX\J.J38B!/[VF[J)H,*CCP&';W_LZE&#K+\-[L\3Q*W1BE!
-M`@`\`0``/`$```(```!%``$X4TL``$`1``#`J`$!P*@!`@'T`?0!)`<)HGE%
-M9*FT2IN'KLF%RZ3OY2X@)`@````&```!'"$``0`*B.`^__H:Y8/EM at M^CV;I
-M7,+O3U&!*^?L!\L;'(DD-JH'VC4NHL'L<'4OA>T._ZR<86V+P:,^/\-./;8L
-MO)Q1]2+[1:)-LC^]P\S_I/:^\L=3DIE4N)^5GMP=3DB;30$+;T<MLC`8A`@6P\'7
-MXQ?M"=3D at PR!-D9^I`P$S_%*E>6V=3D=3D/X8/QX`QMA%[NE3:Z@*)IO5,5%&;PJ`9
-MM++&>7B<_)\=3D!O2H-3O*^+_S^ZZET`-IH,<`$/#9=3D7*.WL/+I>15G6:14)+(
-MP+OS02W*YR,YM>9JB:4S0"D1;E_A8BU$KM!!/OMIS(!F!4=3D\Y"N]Y$JT[%B9
-M!SN[^$:(XH;;F3Y/$K=3D&%TX"`!P!```<`0```@```$4``1A33```0!$``,"H
-M`0'`J`$"`?0!]`$$!^FB>45DJ;1*FX>NR87+I._E+B`D"`````<```#\(0``
-MX'VI7:S>FBF4.;[A?-*#67-Z\E#(&.X+NP5B>:;@%Q<!!L&WHTK<\VFW,256
-M3H6_I3B73W`)SS-X"[F#1MW2P^I?RH;+/]M1RPSZY-(,@%/S&43Z;"?\O$K;
-MOLU)U>*7L6;99CX(1-OK90G7F7H=3D+[^=3DY/__N<82UK_34L3G.21*1G57MTB@
-MNW>U:O_?G]8O;"#7;-GF@)92DK2"1BJ;O?%4V4G.#VQ>1BV*F/6^R%B>9R5<
-M\J7LP)47[T8J#Q8!AGTJ_N4:^4PF$-=3D'=3DSO[UY!5M4.^\?_<5[2INMQ/$K=3D&
-M9%T"`.P```#L`````@```$4``.A330``0!$``,"H`0'`J`$"`?0!]`#4!KFB
-M>45DJ;1*FX>NR87+I._E+B`D(`````8```#,(0``L)P#<Q.9>#@6UU at S8DL1
-MB at QX-UR(!8<V+4B+^IQ!V>%I(LR#7*IP^Z/H+I&VJV32?PL(9.,9$[*EB1Z8
-M2%0#E\R^PT#3<UH*$Z#H]GEC1*H(N!K/Y(9ALAFC=3DT6+=3DU6D.$)@AV)CSI>J
-MTN<<=3D1^.JXJ!)Q(LT/\KR(*OPW.%\SD?$[Z#3:C2J`X;.!N2(1"0M^YE![1@
-MG;WOYCO^DW8+^_UP9GIDS7EH7[EDW:E/$K=3D&Y'X"`.P```#L`````@```$4`
-M`.A33@``0!$``,"H`0'`J`$"`?0!]`#4!KFB>45DJ;1*FX>NR87+I._E+B`D
-M(`````<```#,(0``L.`L:[*CH,7._+L&DB\A?NTET+,G..D3W3BG4:CN@>.V
-M=3DV?.,J+KZ$&M8%24;OEBGGMO\BZ[:W^$+U^*?#N.Y9W1V at VVOZ\LEU60`_[_
-MT,UR::L\8CK>E;6$D.\=3DCEI&H&U`F1T>`>A)VIQ.`L'C3+QR0C*SS^&;\#.`
-M],QF,+25.K1F0,(BR/5VUVXG0._EC+7\D*Z6KL26LB4TUM-4`BN*`<0VAQ=3D[
-MFG9[*VQ/$K=3D&?Z0"`(P!``",`0```@```$4``8A33P``0!$``,"H`0'`J`$"
-M`?0!]`%T!UFB>45DJ;1*FX>NR87+I._E+B`D"`````@```%L(0`!4%P!+.TD
-M[PEB!M6T/!V6.3]OU4=3D'$FS@(C7U=3D+[G]$PX17<(4_[2W"*!Q'>?Q,%;X35#
-MS0#%0;6N(F`(O]B5G2>J+QRP)WLZYJ':!;.?GP].2\0V(+)=3DR%7<[Q*WYOI;
-M'[@-(RWL9-20RFL;/9$<78?N$(J^Z(H'YA?S)$C=3D&+Z^%;KZK%\&5]'H8TAB
-M at B..>.\80`<>2-.I'T9KY2P[DMDC]OQR`';D&3N;-DB[HFVZ:"&O=3D_B!3"HN
-M<CQ%@_.,G$P>A>HT`:01U>$O^0-T8U)DC2&S5U`>S^,-XQU#LO+$462C*_"C
-M]^4A>>]%Q0I6CSS@[)`2MFI$_JOLH"C;3WFA[SN4?'T3S%V]0RS3AM5(]77\
-MK+JSID._82*%.Z+'\[)M[8JR3>P`Y+AM+R$K>#X'+7FB;O'P,3-&VV9N(#W%
-M%7`%!8)BJ@/4__HV3Q*W1C+9`@!<`0``7`$```(```!%``%84U```$`1``#`
-MJ`$!P*@!`@'T`?0!1`<IHGE%9*FT2IN'KLF%RZ3OY2X@)"`````(```!/"$`
-M`2`^9-*P5.B*."T8)P;60_WQNI5\3XJ)Y][7DWSPRP<,KM[A^/U3=3D6\[?*@L
-M24 at 45N;WF0<6,I"U<)(?;OP)[9+T6C06Y6!UPL=3D")9]!E_E)#6Z at U%ZAN*+J
-MVN'.$?MT4H,T6ZH5(CCN2D;@^]^!."9_9OO'LBRBGQKO,%VPQP>G>I@:9J=3D=3D
-MLJ91FX8^])X>`^M]"_M7*/6J)"PD4C/;7R1-V_\>DD+"&LU>]W?WKF4>)D9?
-M@=3D98'(%=3DK+A:EQ"8DSRB_N#'9P..`^.UCD^Y'E&EE>QG at UT\8\5K0U'EP#QP
-M'I904. at YSXNZ,KSDTDB"C8^,@\X4C\.\G``;F1P*JO:;[%O$G7ES'\-T<_)8
-M<.0-)65\RSZ6E'$,3[RB\$\2MT;\_P(`?````'P````"````10``>%-1``!`
-M$0``P*@!`<"H`0(!]`'T`&0&225U']IC]1Q%#U(+4J7!ZS`N("4(````````
-M`%PJ``!`D%E/_%I(O_S3'R)9U-Y*9REV06UE1E4)W$8T5J6O!]0UI&!2R^+,
-MC44LZJ>1?#\&"T8\B!VTL^\R!G>T3Q*W1M`+`P!L````;`````(```!%``!H
-M4U(``$`1``#`J`$!P*@!`@'T`?0`5`8Y)74?VF/U'$4/4 at M2I<'K,"X@)2``
-M````````3````#`?<HA^WPUV^VHM9WF[+0@['41BD]W8JK8N;)<)Y`Y+PK8E
-MBP<D"F$E7<:O9$\2MT;L&@,`;````&P````"````10``:%-3``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.25U']IC]1Q%#U(+4J7!ZS`N("4(`````0```$PJ```P
-MX"V0[C,84W94>PC'@/J8%G%)9H1XO-::LQ^+4N@%1Y*T<0/ON!:/@(V+AVQ/
-M$K=3D&AR@#`&P```!L`````@```$4``&A35```0!$``,"H`0'`J`$"`?0!]`!4
-M!CDE=3D1_:8_4<10]2"U*EP>LP+B`E(`````$```!,````,)MGXQ$P\[^>X?69
-M`B?;;#&ORO+[%+8,(RMAWE*O>2WO69=3D'C;O^FXLU/;6F3Q*W1OP@!`"8`0``
-MF`$```(```!%``&44U4``$`1``#`J`$!P*@!`@'T`?0!@`=3DET(ZUJ"QUH4$`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``B9E'1?Y']:&%:']6Y4XHED&.^APW6!3=3DW5TV1E81GB79
-M;/5Z*.1FHA,0JA#&+S8L`__@$83I@%T)2JWM0:`&[OF*.RLP.W)+!KK:]$G?
-M`;%0LN&@>PXD<5+OD%/,Q43<RTE#$;;>K6]A;Q/QV.U/.#(#[89P^!\%4,(L
-M^BA7>.4I```DBQ6A(&2[%7V@?9BR-IXV?J5"33\_-7 at I'#J9C+8=3D*3XI```<
-M``!`!,&RN5-1Y[V2&I\E$%M4X'HH/Q`;````'```0`4'161DGOWB]V)6@=3DTC
-M<FZZ+-BGOT\2MT;E+P0`7````%P````"````10``6%-6``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*=3D".M:@L=3D:%!```````````I("(@`````````#P````@``!`
-M!@````$Z2&KR(2/VTMK$U!$&J\V62_I8.$\2MT:)/P0`N`$``+@!```"````
-M10`!M%-7``!`$0``P*@!`<"H`0(!]`'T`:`'A=3D".M:@L=3D:%!```````````I
-M("((`````````9 at A```@``!`!@````$Z2&KR(2/VTMK$U!$&J\V62_I8."(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``B9E'1?Y']:&%
-M:']6Y4XHED&.^APW6!3=3DW5TV1E81GB79;/5Z*.1FHA,0JA#&+S8L`__@$83I
-M@%T)2JWM0:`&[OF*.RLP.W)+!KK:]$G?`;%0LN&@>PXD<5+OD%/,Q43<RTE#
-M$;;>K6]A;Q/QV.U/.#(#[89P^!\%4,(L^BA7>.4I```DBQ6A(&2[%7V@?9BR
-M-IXV?J5"33\_-7 at I'#J9C+8=3D*3XI```<``!`!,&RN5-1Y[V2&I\E$%M4X'HH
-M/Q`;````'```0`4'161DGOWB]V)6@=3DTC<FZZ+-BGOT\2MT;$8P0`4`$``%`!
-M```"````10`!3%-8``!`$0``P*@!`<"H`0(!]`'T`3@''=3D".M:@L=3D:%!\($$
-MT4[+D70A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``&,47(=3D4_YYSQ?OP&A-;Q[_Z
-M"12[0:C6QSMNS9W-'7UZ*HP17&K"O*4XI/68*KP"D`VD/D*%I:T4Q([N=3D_'^
-M4F*LRWB[LFZ;=3D;G/T2B_,"#BL.[6M=3D!`4O$`8.R8Y/'7!^`OE*NB0,AD;Z76
-M';4@>+8]E1_3Y5X'+>4P%5.JD_()*0``)&Z17>7J=3D'JFMX:N,&BP>NKL(U71
-M=3D;A#G[H*ZW9V6"4B*0``'```0`0ZP4OX6;;F"(&J5Z;;*`^L)W#Q8@```!P`
-M`$`%H!:M=3D\29Y'\^T3B<=3DR;B(CGN/N-/$K=3D&7Y`$``P!```,`0```@```$4`
-M`0A360``0!$``,"H`0'`J`$"`?0!]`#T!]G0CK6H+'6A0?"!!-%.RY%T+B`C
-M"`````$```#L(P``T.@%9)D^V50[.IXM>S647F3GT,N%K5PL]C8M=3D0KYPWC&
-MWA:$6/PL<>DA"X:".K at KRA,W2;)!Q#@BT'D50>CR#9,)CP),@#(%_Q:RFE;C
-M!L,UM/?=3D(4(*L38_IM[LDORKK1.+E4=3DFP,F`+%_B?T=3D:61K@&,9I6+*2S!<<
-MG4%N$*!J%OJXLM*;50!%C'96 at L%2 at E!,P')K_XOK`;@&7/D--W_'+"L:FBRF
-MDV-A8+&6G+[Q4-N;#&]&=3D)8D#M9U;Y2JOR5]D-Q4V?VRA_`<#D\2MT9BJ00`
-MO````+P````"````10``N%-:``!`$0``P*@!`<"H`0(!]`'T`*0&B=3D".M:@L
-M=3D:%!\($$T4[+D70N(",@`````0```)PD``"`;?EU`R9K8._!^@9?G>C)P=3D(U
-MGRWV at O^-00M/HLDPN%<]S]+,PZ8^DAH:8=3D/)(/+MT at F^??P9G9)YT7TK4X/5
-MD>N_>/"`Y,>P9/ZZCZ&0SP+%@N3BX5$$'AED+SJ<B;W at C1.IP%G/)2>!LWX=3D
-M'K3$/#GN)AQ$X3"%AM>X3D\2MT;?R00`'`$``!P!```"````10`!&%-=3D``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z=3D".M:@L=3D:%!\($$T4[+D70N("0(`````@``
-M`/PA``#@Z&@7K`S?1W`UV,5`346,H<N7%9E-!X2]!&N:(08C5`L*`D9;V1W!
-MCYH=3DRB;4=3D'*WPT`=3DD?,E6&$LQ;NGG`'C[?&%=3DJKS$LMEW#D!EK*.#$D*'W&T
-M_- at K`-!>X[_4)6)\7!5["Y?`<IS,>:!4UXM/<4C)V0/X3P(_J?J^)[$JO0(W
-MX3N_1_/D*&T%.`$\;SGX+EB6ZS0\F8QIMP1^I*F\-XI1N'*L#@\"$Q\A(?>=3D
-MR[CI\=3D<V;(?!\^*LH[`L,GXBS-*[SA=3D;0U2MQO"0H]0T7+Q\:DJMQP"Y-$3+
-M.$\2MT84U00`_````/P````"````10``^%->``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R=3D".M:@L=3D:%!\($$T4[+D70N("0(`````P```-PA``#`%P6J$2;6ZPN?
-MW8^0P9/Y;5&F9%0,V;#<M=3D0_K`W!?L5T,/B#R^3CJ&!3>V=3D&9)EV:(J+6N)U
-MS)Y2WP>Q!5B^C0$U-=3D$C=3DJ_X\SB&K&^V4?NIV'/2![^7L>;V;;L;UE#89?&)
-M&9Q"S"`,--1%U@!%"?^MDJ5[7X(PE.(,N8DE7OWH;Y_5P69?Q'2PO]P+538[
-M+X*^3V`#$X^>9[#5Q%F(Q^O at NELR8NT#=3DR^GGY;1;+8*P8.T8-3RY0Z9$!!/
-M$K=3D&Y]\$`&P```!L`````@```$4``&A37P``0!$``,"H`0'`J`$"`?0!]`!4
-M!CG0CK6H+'6A0?"!!-%.RY%T+B`D(`````(```!,*0``,."%W`%5-5[:<N+Z
-MVDTZZ'`9CI]D--SO2BW'H`Q$LP+R(1[E]NW:7`,1.;8N3Q*W1F7[!`!L````
-M;`````(```!%``!H4V```$`1``#`J`$!P*@!`@'T`?0`5`8YT(ZUJ"QUH4'P
-M at 0313LN1=3D"X@)"`````#````3"D``#!PL%WP0U\X@^6.'OD:<X=3D#2>:90!(U
-M$@T'+?\V[_DC,\XTEP5II$*\<Z(6QD\2MT9S%@4`/`$``#P!```"````10`!
-M.%-A``!`$0``P*@!`<"H`0(!]`'T`20'"=3D".M:@L=3D:%!\($$T4[+D70N("0(
-M````!````1PA``$`,1DU%'*:G\(4>O_`G#RO,3Q at K%<@$\)8?[[;)(=3DPCD3C
-M*^X]U(L5>E at .V]LHU3?V/8 at 8FR29*8M`D11O^V+D_+MN.40J\T/$)KCJ6,:?
-MZ;T14-S[>KPUV2=3D<_21/(V3A85J4E7TY#,R9D=3DVQDFZFU<.T9(YCX?]OG'7R
-M6W'30&*"BG9^>0OO3BS\O$\B[(;!3QA1#:*4F-Z2[*84("7\*.54&!7*L`%^
-M46<9O'EQ<9*NC.E'KU'8;(=3D):-!.10()"V/P2*0A]@X2\78SK<O5&:1XM,SB
-MGZ1FDY:+2E4"KFT^D6)ODZ>]=3D9?@P[BB`R0K"FL!:MM_53W:#!(B3Q*W1HH<
-M!0`<`0``'`$```(```!%``$84V(``$`1``#`J`$!P*@!`@'T`?0!!`?IT(ZU
-MJ"QUH4'P at 0313LN1=3D"X@)`@````%````_"$``.!5<NP1VM>`MHP1;Y7JZ>ZK
-M%BA\23M,-"*UZXGP`@(!H`>*`R8L\"D'Q=3D4UWX,RCT!0.-:9A-;Y8%CT;K&T
-MEE_L"3`#G]6]B(%WP.L-H'!T(27C])1B\PF?MDKTL"DH?K%Z.C)YA]U-[V-.
-M)TXQ)HE$00FFP`2]9VB;B:(/RM+7B at D_]9_2 at HVO"MO;(?&ROL*V4BNZ\$[Z
-M!5XP(B-Y'6?+]X?<W-PJ+98W1#A2-Y9S,P;&JD>[[CX&QM7QV";&-3Y.>@C/
-MH%<*FPIV7[AS;ACK+R1ZWD[OD+>.M^H)3Q*W1I`S!0#L````[`````(```!%
-M``#H4V0``$`1``#`J`$!P*@!`@'T`?0`U`:YT(ZUJ"QUH4'P at 0313LN1=3D"X@
-M)"`````$````S"$``+![Y"+>M[MZ7T'G;=3DAC5G[J@=3DH?1A\7)KQ,C2@&*/.#
-M0`\*/PA[VW#?*5%XO7_1TYO/S_TL'5E:$L*ET^ZP7RU\2M=3D\*%`,;)I(]0C,
-M6?76+/`^_E+JWMZNR-Q?4KV5S3OC,XA.917X/.L!:-U5(DLP'@S)R/24`3>6
-M][-L71!3.L=3D"!Z?8XM_.P)/:$P,2J]H"&;(]8<0)FIB^E895C1JDN-SW0X_+
-MJ>:[*T/C3Q*W1J96!0#L````[`````(```!%``#H4V4``$`1``#`J`$!P*@!
-M`@'T`?0`U`:YT(ZUJ"QUH4'P at 0313LN1=3D"X@)"`````%````S"$``+"X,^]@
-M1U2C&&J[NO.9V6^'EG9M?Q&-H99+<;/T at KP0Z+9Z;L0?H4L+#\OW31V7A4ZI
-M at X8G9]XG#;Y`P<"5+P%CU:#+)C#@>-BR?UF9?I$-O>,LNFY#X+RJ]]("J-]P
-M+<WXLW976Y**(:).CBI5$`3O/0 at C0%S3-];.+A"--_228*9$TT/<<LZW$+!N
-MF7`/]35)BT@[2P?^7#8O7!Z&!8]KH02EBQ3=3D0S;_J<DD3Q*W1BAT!0`\`0``
-M/`$```(```!%``$X4V8``$`1``#`J`$!P*@!`@'T`?0!)`<)T(ZUJ"QUH4'P
-M at 0313LN1=3D"X@)`@````&```!'"$``0`?ZK8%5L]2?U*\Q,`MLX(^%N[X.!VY
-MV_T%;>APM;>(R8I;&:0HT)^`=3DLNQC2V8)L8QPTO4>'@(_Y<Q,HSVO$6&=3D"\Q
-M;`'`1:X?%0O)BNT#+::J1]I%NTG^!OZWE4)VR$A^,$R6N$'3:;>W_QR/JS-=3D
-M!THJSX[(+"6>E)'&`1*IY]HE)OS7_L9:=3DDH]72G%`12M0[&H0,*+#1Z/>W>T
-M5-'\[G*&J%IJORWJ8C[;&?8\;W'UE#LV]KD"^([F974S%.D:IL&AZ*MU6Y)&
-MO\AV9`N?Q+J1H!`#"^N`2_$]T4$Z(95$;O1_BOSFI=3D#/.6<&1XNFV5LOOCZ8
-M=3DGI8._)/$K=3D&[G\%`!P!```<`0```@```$4``1A39P``0!$``,"H`0'`J`$"
-M`?0!]`$$!^G0CK6H+'6A0?"!!-%.RY%T+B`D"`````<```#\(0``X,PYS4E/
-MUCJXN!(@2QET&KK$;1\`I'!^TA=3D,VO>Q-G;?#;+BV!/X`%E at 9@(6&?H7'(!U
-M9U]4<'WIY!B9WV.;<B"KKCZZ0%2Y&`,SX17G\?,;"EY>^^*BQ#K07(WF"(8[
-M:S at 1'((_J]2EI\HH\RCN`H1=3D6G,G+_TLC-P]'F[SD'_@`+"4%F!P5 at MQ#?6@
-M`@3CN036:8($^)C@@)GSBWV*@,PI&1A,9 at L\&V4,\R+=3D;3J0[)"Q7\Z\?51"
-MVO$XS<8`TO<JV1:&(!HO'QT0:LYZ85L\4`)D'1!]:C?$$X%/$K=3D&L(\%`.P`
-M``#L`````@```$4``.A3:```0!$``,"H`0'`J`$"`?0!]`#4!KG0CK6H+'6A
-M0?"!!-%.RY%T+B`D(`````8```#,(0``L"IC-I)QV[D6IEMSWA(!P=3DH(03G1
-M03Z,U6P?$01],YUPIY]NI%GSK)^2'^0SCGQL(53=3D5=3DNS'A0&TQ*'^^OV at FE_
-M9_SS&`V:GQ.4,8J!NQK^YT)<6PR&7#AW1&:EZ3V'5;O@?PBS+X\Q76$JA]R.
-M8!`H<(P.26Q3H411NN9SY:RA"'KV^YX/_GW(M2'$[2`8#N#%P[M+)@0QFFB3
-M5TBE^H,FXC?,S^I()2^G9`E/$K=3D&OK8%`.P```#L`````@```$4``.A3:0``
-M0!$``,"H`0'`J`$"`?0!]`#4!KG0CK6H+'6A0?"!!-%.RY%T+B`D(`````<`
-M``#,(0``L%@ZX at VK^>+.$X`ZK)%BE-M'T7>$2Q-?%/58DO]4NCO+G)-_%VJ<
-M^S]6^UVG<4,KO-ZX<#"MA9S;Q%O9G)G[>>"S]U`JNO8!)^KM6@'Y%(6\P'Y;
-MW&C9Q,K>?(PWU at BOQ-'O]ZH/J6U*0>!""914GH0?)R_^&Q_>V+VV`XGE at F&2
-M'7*34'('=3DP]G"&HQ])BE/%;4G!<7V(V]&_E,OI]<\!DN)S&S6=3DD71X'R`QQ/
-M$K=3D&O=3DT%`(P!``",`0```@```$4``8A3:@``0!$``,"H`0'`J`$"`?0!]`%T
-M!UG0CK6H+'6A0?"!!-%.RY%T+B`D"`````@```%L(0`!4+1]WU.(C3HO4?C(
-MB3Q4..\6,GEPA[BYT?J60VB>VOW51:.W94:#2<&`R;<@I"9^<;>LBEU!TV.$
-M&PJ!#1\7V:M5A*4**RVARG%^/V@'YI,I#,#72`%(5ZCH1U:M>.F)5?.Y)$6J
-M[CWAPG<6=3D2>(M,P^)SOV#UQ>E=3DW:`+5GU,T"S$SK?*QE,E`@G@@;4^\4>GJ"
-MEZ-]?F=3D<Q^A at KP[\IX(BVJ?R.!,5^X'^'TKC[P"BE9[8F25UG:B$6JJN+XUU
-MB9R;M?M1^;6!X(=3DSM58?:TJ at MFI3BBOHP^3Q8>RT%U`SVB#`1/4%[(&I0,3/
-M at FRMP;:]"]FE\#R.D5>Q'M=3D4(+'AQ3H2<B"'YV?#.FOXAWV>ECU>(G3RB:*>
-MDH)64 at STA&.$1Z,":3!>/7'!SRQL_%I1^_L7BUU+UCQ9@$K*T=3D[`#'2!.3]3
-M*Q3H]@W>3Q*W1@@2!@!<`0``7`$```(```!%``%84VL``$`1``#`J`$!P*@!
-M`@'T`?0!1`<IT(ZUJ"QUH4'P at 0313LN1=3D"X@)"`````(```!/"$``2`("QA?
-M+*.5Z&7C9'7Q30%<VG"2)I9'=3DYBG*1M\;2\'A)O)TKYFNYU,"Q>8R(I:8\8S
-M'^OYNQD%_#%_!O^<)?`:"3R5:XDS?ZJ\A<OIE1^-8G4F,R"'=3DA+T/GN:+:,.
-MX<7I.YYZX+;X:WN+#.+!5++'^Y97/3G<.3O=3DS.A9:T*>H#`*T-U>=3DD<'+[N5
-M at OQ)2V9BH$MEX/V`-V;147*IO1IHO,4GD.(O^B-.P/J"9<\&_=3DEDKI45_41Y
-M4X$]^E"Z083N--#QJ*#R]`6%T`,<]R_!$MQB8DX'V#WO#3V#_)>.8&5-C'8L
-M>-/U_8- at BR#=3D/,!(G88R!U0RM/[\A(34%7=3D at GN*YX2)%]KS7_P-E\=3D_<MG3/
-M\P)7%AHE$2H'?$\2MT:?.`8`?````'P````"````10``>%-L``!`$0``P*@!
-M`<"H`0(!]`'T`&0&26 at Y)B7W?V7T\C7X9IPBR_DN("4(`````````%PJ``!`
-MXJ?->+Q:C$;*QO7VE;*8YF.$F'UGBS*/6'I3'09=3DR.`XM$20"O=3D74:"2(G^;
-MY<".,E`TE6(E#+HS(VFM3Q*W1DU$!@!L````;`````(```!%``!H4VT``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y:#DF)?=3D_9?3R-?AFG"++^2X@)2``````````
-M3````##H3M=3DG`5X0^KM;2VN(&=3D3-0BU7>.UP109<\A=3D[Q&XHEH#+D"P2ER)(
-MVN^$=3DD\2MT;A4 at 8`;````&P````"````10``:%-N``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.6 at Y)B7W?V7T\C7X9IPBR_DN("4(`````0```$PJ```P,,H-/"H!
-M5)WLK.[C"[3E*I7YK5.Q$ENY>@6!57P82 at Z#N`!>P?%RS.0SX0Q/$K=3D&(6`&
-M`&P```!L`````@```$4``&A3;P``0!$``,"H`0'`J`$"`?0!]`!4!CEH.28E
-M]W]E]/(U^&:<(LOY+B`E(`````$```!,````,$_N<4SBDFQ[:3IZ#%%9Z/IR
-M=3D2P,<(XIN11T'IQ"(X?=3D,I\JO!D[2$9<\_ at 43Q*W1M9<!P"8`0``F`$```(`
-M``!%``&44W(``$`1``#`J`$!P*@!`@'T`?0!@`=3DE<1Z`T]$DX+,`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``VGORFA<#-`SCNT\]A$&MZL%]'*0_@\0%>67*(33U*Z=3DFPQ!TR$RW
-MW/,;P'XP7X8NR'X0VR/6B01M4F$UL[/D2[N>.G"OO]S_2AJG7HJ#9RF--5D^
-MG)/?&3-ZRB'.)M5P1<_K-2P=3DIPU?/['/RJ;0AK.7*EYATVK\5\8 at O3=3D\12XI
-M```DDJ%>Y'!1TL%/JHDE/U"4>1-DC#&Z?Z/ED7(.??HL:L(I```<``!`!$JF
-MD['*(8Y.=3D7TLFZ83(SR%;);L````'```0`5_AKCSF-%+NN!UOZ"Y)DWE31JE
-M`4\2MT:^:P<`7````%P````"````10``6%-S``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*7$>@-/1)."S```````````I("(@`````````#P````@``!`!@````&\
-M'Q7.MRI633P-=3D!B)Z>&TS1_ZHD\2MT8E?`<`N`$``+@!```"````10`!M%-T
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A7$>@-/1)."S```````````I("((````
-M`````9 at A```@``!`!@````&\'Q7.MRI633P-=3D!B)Z>&TS1_ZHB(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``VGORFA<#-`SCNT\]A$&M
-MZL%]'*0_@\0%>67*(33U*Z=3DFPQ!TR$RWW/,;P'XP7X8NR'X0VR/6B01M4F$U
-ML[/D2[N>.G"OO]S_2AJG7HJ#9RF--5D^G)/?&3-ZRB'.)M5P1<_K-2P=3DIPU?
-M/['/RJ;0AK.7*EYATVK\5\8 at O3=3D\12XI```DDJ%>Y'!1TL%/JHDE/U"4>1-D
-MC#&Z?Z/ED7(.??HL:L(I```<``!`!$JFD['*(8Y.=3D7TLFZ83(SR%;);L````
-M'```0`5_AKCSF-%+NN!UOZ"Y)DWE31JE`4\2MT8<H`<`4`$``%`!```"````
-M10`!3%-U``!`$0``P*@!`<"H`0(!]`'T`3@''7$>@-/1)."SI'TCFFL(S\$A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``-<-?LB^]*034@$4(;I3V-QPS;:=3D<;:V
-M39P`A-'5N-7A<F$;QS\%)1`HSL+3U#W5%?4C2^27K$\5S-KA0!6S4PFR.*VB
-M:-"U_O\$?UJ-*H@:[U%2.C/JMF2%#$;;X((XR`'$D5/U\Q-;SA%;S,[HG'9S
-MGO%)PO?DTOPL%ZC<,2WT*0``)%DB"L;^DC_62Y*!8HIOX\FST)!ZLEKP8UK\
-MOST09P\:*0``'```0`2MLV53%16EG'Y-E$R7)9L2W at E4T0```!P``$`%^MN-
-MQ5C&PMI!J=3D;&=3DT9L$L0:&!1/$K=3D&6,X'``P!```,`0```@```$4``0A3=3DP``
-M0!$``,"H`0'`J`$"`?0!]`#T!]EQ'H#3T23 at LZ1](YIK",_!+B`C"`````$`
-M``#L(P``T->+L^.3Z0!O>K%X&3G?CRQ?BHAX'H4D0$*]K*!.Y>&M+7H,."'+
-M7NOIM_BE7M:=3D_2SK7/"_/G?#1(,AJVD?:.(Y*#MJL-^<OH0(!!!/I_/"'(E$
-ME&ZW8^UTY]Y2Z"97'MW66IYM8 at .%">#!.:?X%0A7B[)OG%Q/]^=3D4G$L,;KXN
-M(KW"I&>XB(*`U[93K;-S0Y#.+=3DL)N>FNS!\A at A$&M:SYGDK5&^<"MSOPM2I+
-M['#$3<"F>=3D*4L>GB/7>MH##=3D:_W,D1P<2DQ=3D]\9KGT\2MT:;YP<`O````+P`
-M```"````10``N%-X``!`$0``P*@!`<"H`0(!]`'T`*0&B7$>@-/1)."SI'TC
-MFFL(S\$N(",@`````0```)PD``"`S>J!'F%1'D0`]DM&YHV'1G*\*HK08;FM
-MFXSAW[8UJ%!)@-^)&,];+:J9R_B1CJ+XV;0%D-!!ODX[/MYWH%!"92PUBI1%
-M47&[W.WFCT"E',HRJG0WWK,AVHEB9<;3WG9HUX";V/I:HVYX?+=3DWM at KX\BMC
-M/ARHC.UW=3D)G3+4\2MT;:!0@`'`$``!P!```"````10`!&%-Y``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z7$>@-/1)."SI'TCFFL(S\$N("0(`````@```/PA``#@
-M.E+7ZD&!^_\MZ^?;GG"Q:G3GE#'8VV1F^VQJR3\4S3-XQGYR+X'9V=3D_?%EDV
-M9/S;_F:V#"CM)/UDE;1Q0N'DG8`':,3OH"%QH\O?K"H@=3D/RMTC:'+,=3D=3DX/3#
-M*@@P9X-FKRW<832][(4B&M5Y`:)O]T;3MU*E,2G,\/:!K/Y5(H.?^*[HV-V0
-MX#5["47$_)[W=3DMI,P]"G\YO9F at .ITZ6/1PU&9.>2ASA;#)'5KPPN4(R%M7#O
-M3:&Y+\A@[RKY*9*^=3DF;P!:0BJ(G#]AT62YWVGX"9K(/L[*]@ACN6^D\2MT:A
-M$0@`_````/P````"````10``^%-Z``!`$0``P*@!`<"H`0(!]`'T`.0&R7$>
-M at -/1)."SI'TCFFL(S\$N("0(`````P```-PA``#`BT\T<+:GB*/<.FXNQV<P
-MJCNCLP.H+5P<[*:W.K';"Z[PW1#_YXVZU`5Y3[[*NX1Z&GP>7*VXZJ$/L51B
-MI`#4)R4VH&3RKQPW7".FM_3ZE4I1?I>"#^];*8LP8V-%V>D!ZD8W(5 at 3Z@E>
-M,[[NB1?7YXMFD$EK'40&%>Y@%[PT5"\]DY/\4<R^88X"_\"CS4E=3D2,UI^*-P
-MG9EEQWHQR6_E!(B?)10N6:^C9]V55.\^T.#KULE6G1`-?A,,D7!/$K=3D&#!P(
-M`&P```!L`````@```$4``&A3>P``0!$``,"H`0'`J`$"`?0!]`!4!CEQ'H#3
-MT23 at LZ1](YIK",_!+B`D(`````(```!,*0``,.A29%LQ,$WF)9\OZ:`C/FUD
-M1T2SKM!\9X*H%4F!^76</"$/Y#^TWOR<KGF;3Q*W1K,X"`!L````;`````(`
-M``!%``!H4WP``$`1``#`J`$!P*@!`@'T`?0`5`8Y<1Z`T]$DX+.D?2.::PC/
-MP2X@)"`````#````3"D``#`T7;>[Q[^.E5UB[$5:7/W8ZWHU at .2N7O,Y#!(!
-M3%V%>M1 at 1^4S1TO&TGX6TT\2MT824P@`/`$``#P!```"````10`!.%-]``!`
-M$0``P*@!`<"H`0(!]`'T`20'"7$>@-/1)."SI'TCFFL(S\$N("0(````!```
-M`1PA``$`[1=3D=3D"0Y<,T\5Y/`/[&_U<B=3D7-,5W.R,*=3DKZ-XK2(DR,AMG_W\AO+
-MU0#LLW[:.K;&:&G)D*6AD#<C*,`!&=3D-X_.)GI[$.`51-!DZ;QM3RX.T&!JX2
-M2:IDK,[4Z*@Q2E__?/2PI/$#%O?4TP.TNX`\X0N!`BRR>:_H:_K at CR;1LQ(+
-MKKP3O]-[^2()E?U6;'S"<#W^0HZ/*ALH`_SI_ at QW;T#PFA$#BW4 at Y3;6>J$%
-MNN$@YZ^-9_&,$>@S(\2I6FUJ*G;#04QY73^KDBOMO93I;&J7=3DH<'<SWWJ>A&
-M=3DE<\N^AO!K^&3;3FX1JGRCD%%9%Y^$[\(KV_S\-0O_KI3Q*W1L=3D>"``<`0``
-M'`$```(```!%``$84WX``$`1``#`J`$!P*@!`@'T`?0!!`?I<1Z`T]$DX+.D
-M?2.::PC/P2X@)`@````%````_"$``.!;C6M#3C%TIFCMR at 5]OC;M:BM=3D2FYY
-MGJQ)EA4MJV#>Y9E)4*\"4Z:1B+L=3D_TY3TDS?K;P?*0W7];L?2[/()*>GTA]W
-MW8$4O5+XJ?7$:"W)6SE&O',PQJ(<HN/VO2JKLBMJWPXCE\MQ7I3^;)EFEA.X
-M?VJ)U*,_%[:G8V(`P7+8X3J"2$BWAO`4#/O?T,L`^@VT+%__']KBC^F><%(C
-MGJ=3DJH*AN_E(FL?VU!"A*7(\F3EC4KM28/=3DX65?C27,K!*KE'_S8\:B0J>,E2
-MD73\%".RQOVOH6WK!,UQDC2`3Q*W1BEN"`#L````[`````(```!%``#H4W\`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y<1Z`T]$DX+.D?2.::PC/P2X@)"`````$
-M````S"$``+"[BD*'*"14.I0^Z;F^HA[<;GK\Q"W7F%^=3D$6M.5+5I$*,5_QKM
-M]_2^P'X5B&-5JEWQ9[^<`\2)F at +^*[88[R^_H[`XI?(6^?ZC<[/8SF^%6^4O
-MG/=3DGH6WVIT:H;ZY4&@T/@RLX9TI@`BK!S?3M58,(<H008"\?(VJ"T\'W)T=3D)
-MQ'^O!;XJ]2W<0=3D6G!H\WS3HVN")%&ZUCS+J<D-'<S[]J>)\!GL49D4HP\TX)
-M3Q*W1 at Z1"`#L````[`````(```!%``#H4X```$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y<1Z`T]$DX+.D?2.::PC/P2X@)"`````%````S"$``+""&]$W*E"F#2,C
-MX+")("V]^R02/XCR:)"G$>1>0FYL at E=3D6VO'9)'.=3DIPBCDH(TKBJSO"US<C8A
-M9%JICVA;%B&E:%-P(C?NK8#H#!I;+WP\H"[3^]0(YTD0/-=3DK#T@=3DHWJ&`KRD
-MR""P__I\>.3&#'?8"K;%;)FYR"UY*/ZQT:,<Q8NLU&%<]H5EYT]6NL!THH)B
-M>T7YIB/=3D*^+NN]Q34#C5(0R14J&%:?=3D(7FBO3Q*W1ERN"``\`0``/`$```(`
-M``!%``$X4X$``$`1``#`J`$!P*@!`@'T`?0!)`<)<1Z`T]$DX+.D?2.::PC/
-MP2X@)`@````&```!'"$``0"\$U<[J!ZW8;EG^-:EC_PE_;.J>VRY?R(3:,;#
-MYVM/ER[,^7S1\M?9$#4:=3DS!)LJ/K]*O$#80Y2]?HJ2CC6-*C!P'"V$B, at +B_
-M5,X=3DN\E(Z-<BZA$Y-$R.NB0IW@$@<\VBQ6W$QT<B00]4]%>EO3K0VN`!,Q*V
-M)(7G[MF?PU at P'^W=3D#CP%*^_%FA8S=3DU;D7;WJ!/OTGY_"=3D?!V4<F'UBN5F'AD
-MD5TY'&C95OV&;OC<+#"O.%9/%@(=3D%P%>BL;>Q01\#N/_;&VK;0['R[UZX"7Y
-MM4,<?VY(*5H;HZP1(O+(8NCG#$8&D4C]6_\1OKP5"?XS.I?%Z>UW!!</N"=3D/
-M$K=3D&([H(`!P!```<`0```@```$4``1A3@@``0!$``,"H`0'`J`$"`?0!]`$$
-M!^EQ'H#3T23 at LZ1](YIK",_!+B`D"`````<```#\(0``X-=3D-NY-OKS?([/8.
-M=3D>K)'F5 at 3S754=3D1;?Q050O;309I=3DX_Z.19,D/9':=3D$-'EP#2&+QP(UKZM6H8
-MH^EHMS3=3D:W4:J)].5<GP'?+>YQ33(L#XI)$-G'F?[P at X;3_NW%;G)%@UUXE4
-MQW7%N7!6)NA'G=3D9F/`J"=3D`\:<Q)WYR88GXS-X?O+/VD3C6KBY!XU%?$?W6]%
-M1ENO2UB@@HLIH.$SK)U;(@'L6K5=3D at Y]ZT.V/V;T,/%"(=3DIR(<7XZ?&`7K3B'
-M$*ZU+NI7QM:,HSKW9Y&`K";,;HYY-#>]#J0CH1-/$K=3D&[\D(`.P```#L````
-M`@```$4``.A3 at P``0!$``,"H`0'`J`$"`?0!]`#4!KEQ'H#3T23 at LZ1](YIK
-M",_!+B`D(`````8```#,(0``L!,G^2RRAFQ\/UOB2.2#JZ+W0?W<^%2"WJOW
-MK?KV`5CHF3*)0%>!0:L^Z<)5\3T-S[KLO(M7?\Z(0%JT\PRC1C:X8ZC3@=3D_0
-MZR_`+2QGH\H.)UB\PY6,]&L`$\[[3P%5&/BQ,5#,9GXLA":;L!!,:M;U0 at 0?
-MDKEX8EN80UX%1`@-D,*&<]T(39URC7$)8)S.1G^KHDUL``2WH*PE,K'WU>WQ
-M\.R at D9RBC@O%4EE/$K=3D&U.P(`.P```#L`````@```$4``.A3A```0!$``,"H
-M`0'`J`$"`?0!]`#4!KEQ'H#3T23 at LZ1](YIK",_!+B`D(`````<```#,(0``
-ML#$W at 0BB[38C3F*%-/Z>H8)`-A](G`2=3DO)2B]-E(8H(@TF<6Q>5C6H69B/G\
-M_3]3NM>7H[[&`O/^5XKDNW?RU at CCSH&81NDR"&60.!`2#M+U9CX_6-=3D3W5&H
-M%BXZ?7&60;^#=3DV0LU_9QM+GF3)X\.`5<].'*`:BK(Q/GQA)*R2BW')'QFA44
-M2YI'>TJY=3DR:WBKW=3D-$X*1*'?HA06>%M;7O<U?H/W%&+&B6O[0O9/$K=3D&=3D!()
-M`(P!``",`0```@```$4``8A3A0``0!$``,"H`0'`J`$"`?0!]`%T!UEQ'H#3
-MT23 at LZ1](YIK",_!+B`D"`````@```%L(0`!4'Q`&*"4+""*\-^"!;R4;&T.
-M7(3H#KUZP-1:.DO.::(T^)C"`1!$?7V`CTAK%/^^%^/F-;M8G1W_`XY<+(8Q
-MBT;&9T'7\C0ZS0/"OI<NLQ6E8C9BTEI at G`J09*"B^A"IC3>UB&_BU2HJEO"1
-MU2%)<_[YE0%T+>R85MX=3D`W[^F_G"4T08YRWA1`*7UP(PDPL>N!5_;EZ17A5V
-MF:/%O>&GI_N]"P.%#(RRW_RTU\GFNF<L:?*(_MYF:IZ?*-H8^[ML1JF@!$J.
-M4X=3D^^Y(?L^?;?G/BQ,9C.<CC4*VR:&ARD#;@7IA8Y&:<TS2:C#>KI=3D.HF5)Z
-M$20<T#MX=3D at J?7Z!ST&@G5WO0#387S,;DB]+(;H7S0G$)2*U7Q,I$]FW%WHN-
-M_."!@KM[)7&LFRW/2"R'*2O;Z^/`G"(!Q'-E;.'(+VT9@"0R>6_!CF=3D4);T<
-M3Q*W1FI&"0!<`0``7`$```(```!%``%84X8``$`1``#`J`$!P*@!`@'T`?0!
-M1`<I<1Z`T]$DX+.D?2.::PC/P2X@)"`````(```!/"$``2"3*9A9 at AAO^)>B
-M\)T);S)@3_Y&?4?.&`.TR$!W;`1IZ#6'1:DOYV(W;;']&:F+[\X at F=3D>$TSRO
-MJ0^S%@#*JS5$].FR9_1^)9NC9"2D,/K9C=3DW7*GZW0DZ32=3DA%S%7VEY/<+)VC
-M39S.K2G_8[O at YS11:LV&J@%B[JG[$&1E)%I:\RR9<86%C0MUCAOS+>X(X'M:
-M0,L0>\*_(O&F'E(9[?R>+SXM9QK`_`"--?\#3AG*-,\DYB[P>YAG*OD36*GA
-M"H;WO_[*VWV>TK+BXVZLR?E1EH+TAD#GZ"A0<]KR<,*B8A11QWC!X?@8TCHL
-MH9$"QC-:9.QRQ?_ZK>Z_*4_A)H0$2F10*+AQ2)*L'R368T]I"S/>.-?J91>8
-M&\$)\$\2MT;Z;`D`?````'P````"````10``>%.'``!`$0``P*@!`<"H`0(!
-M]`'T`&0&2;T^R.???CWIAP[K26465=3D<N("4(`````````%PJ``!`JN$(WLYP
-MT0I+($1WD?/=3D+=3D?RB4.42\:):Q>']%D;FXAD,5?@HS@*^`D7/GQZ4GS"_^&F
-M)[1V,1*L1<SR3Q*W1D1Y"0!L````;`````(```!%``!H4X@``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YO3[(Y]]^/>F'#NM)9195URX@)2``````````3````##9
-MVY^1;M0),2AF"N2D;X=3D,7J_G//4K*J<40B[:Q&0FKB#B`!H%#1K$ZDZN<$\2
-MMT9VB`D`;````&P````"````10``:%.)``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.;T^R.???CWIAP[K26465=3D<N("4(`````0```$PJ```P#P11:3]SR(R!E]"9
-M&::2`5*>JTZ-<TT4"KH$P&3[@XQ&QJ+K at GMS0=3D:X<$M/$K=3D&SY4)`&P```!L
-M`````@```$4``&A3B@``0!$``,"H`0'`J`$"`?0!]`!4!CF]/LCGWWX]Z8<.
-MZTEE%E77+B`E(`````$```!,````,$S;Q#E;G"8SV'Q<$)EZ(7]TU%LTULLK
-MG"9Y,=3DE+C6?RH$_39VNDR&^9ER413Q*W1DB2"@"8`0``F`$```(```!%``&4
-M4XX``$`1``#`J`$!P*@!`@'T`?0!@`=3DEYI=3D4150^DW```````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M5,.DH^QQT^'T<%T8O/#NXHH2#V8RC`OUSS_,7FI\#!S*K5&5[IG+"!O7D`5.
-M)D,*-X&>[`O8D^*%%\F)*/.']38./*PI+<R;FEULJK/$2/8'S$V2)EEC[_GK
-MQC0^NG%)A2\:YOCD#N8KK<I0X+E`";ON?]DJS34HT?WM5)\S,ZLI```D%Q;<
-M/<2LWDRX\L!4B,.)UM4T+_IYFL<[1%`S9;!E![\I```<``!`!,:-J2,_>OG;
-M*%0^9C[BMU0\&<'O````'```0`6S;+I:<P,,[MO\!#EYJ6FHJ_M^C4\2MT8T
-MH0H`7````%P````"````10``6%./``!`$0``P*@!`<"H`0(!]`'T`$0&*>:7
-M5$54/I-P```````````I("(@`````````#P````@``!`!@````%>'@52##WM
-M=3D\ZU*S.M2QRZ%,3*\$\2MT:,L`H`N`$``+@!```"````10`!M%.0``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A>:75$54/I-P```````````I("((`````````9 at A
-M```@``!`!@````%>'@52##WM=3D\ZU*S.M2QRZ%,3*\"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``5,.DH^QQT^'T<%T8O/#NXHH2#V8R
-MC`OUSS_,7FI\#!S*K5&5[IG+"!O7D`5.)D,*-X&>[`O8D^*%%\F)*/.']38.
-M/*PI+<R;FEULJK/$2/8'S$V2)EEC[_GKQC0^NG%)A2\:YOCD#N8KK<I0X+E`
-M";ON?]DJS34HT?WM5)\S,ZLI```D%Q;</<2LWDRX\L!4B,.)UM4T+_IYFL<[
-M1%`S9;!E![\I```<``!`!,:-J2,_>OG;*%0^9C[BMU0\&<'O````'```0`6S
-M;+I:<P,,[MO\!#EYJ6FHJ_M^C4\2MT;:U`H`4`$``%`!```"````10`!3%.1
-M``!`$0``P*@!`<"H`0(!]`'T`3@''>:75$54/I-PVRS@/U-7JZTA("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``$84=3D(H>9"X#/0'SK6_G7$$Y'R<?);6GK/,6=3DN[C
-MV+IRI%?Y6>#%\(I%84+R%Y>P3N`4&RVT(9"S>8&&8.=3D,[U4@/&M>R,_]S'I#
-MUI4P<>+A+QUZ,G.[;"J"LKF;?-!O[I0 at 81Z67M06C.L$G<J#'?<6YP!3)E&1
-MM6I\E/@C&LJ0*0``)+T"@2#X:2$=3DN5L9E4];7K/J<ZQV0DP>+V>7<(6T;+Q<
-M*0``'```0`3 at 4".<U0JBEPO5Y'YW-Q5][/]M:P```!P``$`%:[7;W)[!C$Y2
-ME:O at 0MNM++[?@_5/$K=3D&?0(+``P!```,`0```@```$4``0A3D@``0!$``,"H
-M`0'`J`$"`?0!]`#T!]GFEU1%5#Z3<-LLX#]35ZNM+B`C"`````$```#L(P``
-MT'=3D%YQ,[WEAKK9=3D5$Y\OKM8K8,!3F8A at Z"3E)Y?4MVV>[57FN:U\-MZ\9]0#
-M)KX5GW#\[>7;^E;#>N/"01/C3MKGH061,H:_&2KA)/[@@SO0H4$3H!5 at V#K/
-MNH at -`BJ(L_'6R[1Z0=3D]L?K/U%Q2.<5R#9`SD`?S1F,+8=3D$SR"JL"[FN`')]?
-M-K5L#R&%KJEF4N>(\%AJTH4<]$'H?X`IX5/ECO,!W]9(F5T"LR<&X30(\P*V
-M/R_GWM#E0#G+YW\?V,'O:4NNZ%Z(5**2%4\2MT8/'`L`O````+P````"````
-M10``N%.3``!`$0``P*@!`<"H`0(!]`'T`*0&B>:75$54/I-PVRS@/U-7JZTN
-M(",@`````0```)PD``"`.K^KXP6AZKP8>D6@^?9.H;I:P1)9Q-""/\'0R$F9
-M>^FC%K[1$2L"@W^`67&S```!ZJ&%<^F_X/GJ9R<\!$0E;&Q6AP>LKQ&]V%%1
-MY`7#B+H?BDJ92QJ\HL4-N\'8$"WR2>'02I$:](1(-\#Z\X)".F%X:J2JJFF_
-MJ$[/?T\2MT99. at L`'`$``!P!```"````10`!&%.4``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z>:75$54/I-PVRS@/U-7JZTN("0(`````@```/PA``#@0/.H'<`?
-MCY1G,)V*(H($B3HR)X\01:=3D&B)`/F,JNQG,PKAZ8L>MP3",O/SPWT2J<0:O$
-MDO=3D\"N?M4IB\/47)AWH$=3D'8A#UBG#F(C,&Y`<L"=3DG:0%D]-1K=3D-R`*&3[<Q[
-MTE2\^&ZW)`M]ZHR9<2.U'LVB3V98S'=3D07I?E#GY:N$3UR-OXTB&YRFH/17+N
-M3I%\M!;O]X,;],]IE_:S5?@XRW;\^5&VM7K:G.6E;.MEX%L/9_2ZV!M2\PU'
-ME%LJD2=3D4[1:]4#E,G6.\Q4R(S875"&R%H%3'YK"2_^U*(T\2MT:,3 at L`;```
-M`&P````"````10``:%.5``!`$0``P*@!`<"H`0(!]`'T`%0&.>:75$54/I-P
-MVRS@/U-7JZTN("0@`````@```$PI```P7H;N\BF>(9>N1<=3D?IERD>@G11G`W
-M/#%:BZ_SI4^R?LH;4"EG at Z9FH_4CC^U/$K=3D&VE`+`/P```#\`````@```$4`
-M`/A3E@``0!$``,"H`0'`J`$"`?0!]`#D!LGFEU1%5#Z3<-LLX#]35ZNM+B`D
-M"`````,```#<(0``P.6*QE@(M1*Z=3DD)V(:*/8A$1C]CK<9C3GE?I?H9;ZQZ&
-MUJ_/B'F)"=3DD'*]7MR/]IA3)?PB]'-GY56UCF6ZD26\*;^/8L0T69Y]BX31#F
-MD;2N+:AVEJ?:@AM1GW at R!ZXNQ/;^C@'SB?\RZ,M;F8W+]Q"T=3D\)[),#D!Z&Z
-MPS]E2T2?,27!WG&/Q5F6V*UF(-9/BL+M73D9O;?4\R70<[%8&\L,\\-KB,5P
-M,C,2A,*TX^)^$+3##ZA7(@J'"[PI3Q*W1H9L"P!L````;`````(```!%``!H
-M4Y<``$`1``#`J`$!P*@!`@'T`?0`5`8YYI=3D4150^DW#;+.`_4U>KK2X@)"``
-M```#````3"D``##_ZX6,6T,!NQYEN at C+*;_WTL'7J%1(EX9AYCZ&:P\(JMBL
-MUF)O_&Z`#R)R9$\2MT;GA at L`/`$``#P!```"````10`!.%.8``!`$0``P*@!
-M`<"H`0(!]`'T`20'">:75$54/I-PVRS@/U-7JZTN("0(````!````1PA``$`
-M6V(![]C+3;,L!57M8Q`R8R<>!]@'*+8!C_<-VX,ZW&-__X^F;,B!\Q080^DF
-M8551<<V3-9X,)[VASYNZ=3D6^AH]-"F:]#8C&LN?N*Z-;'SE7'`J>'?^?,6KJ?
-M$XV1ZJ>33G`"+A*R\+)$H&&U>^?X50"8X(`LBW;\>S:*IDB6\:N'(+3>#.?(
-M<BML&O)1]P5;YKWH56W-V:((2O+Q+O+[>!X$!U3K]G(^@>*ONM?K]Q^=3DKESA
-M<>$_"?->(T',G`$KE^^#F!2^")$[E,)+D^T.:I(HP"GLW/0:MAZ%$S20#B(8
-M5PM=3DIE'<3FJ>3^4<63LT2LZ]%NUQ"_E<521I3Q*W1I^3"P`<`0``'`$```(`
-M``!%``$84YD``$`1``#`J`$!P*@!`@'T`?0!!`?IYI=3D4150^DW#;+.`_4U>K
-MK2X@)`@````%````_"$``.#?N_Z2$4(B/XQN](XK%8`FR6NP]]:3/IWHJ+.(
-MDW?WB1E"E+`*?[L"K8''\$7W\`U#3`,"EIV#J:U=3DY[F56\B[^XI["`ER71)Z
-MR,P(^*%OV0FEZFU8H8HE$GVO$*2C3XE5=3D,N8?YFRS?+XK&S989Z6O<TU_N`=3D
-M3G:/6T(^51]/GY,;'-KV%UW-*"%*5)A>#DR7M7"?@-#,V_&D4LA!]^%/G at 7-
-MC41Y^K\^;3IF@[1K+I:D#"$P/T,3Z?=3D at 7-5A^ELA60 at O@=3D)4SHU$\AU(PUEU
-M34+;+029>M;"GMLL3Q*W1B^C"P#L````[`````(```!%``#H4YH``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YYI=3D4150^DW#;+.`_4U>KK2X@)"`````$````S"$`
-M`+`U&Y,BFPCE^RAR'^'-"HF5]-:A>D-V6__U$7TRM::<'>VJF-^PFF0'-`[_
-MRL&MA*\BJ$^26NO*X*_0"6T44H7X6KCR8KY\DDR+MRI732U`;6KK3W2V!D#K
-MZTY,W@`<,`>8+&9UE=3D)G/Z\/]9'/PLB?X^&X_7?$.EOA_-L<C]M\"B+:]K]6
-M,`5;^^(&@8-O<F"YR8ES?]GA+;W]2X]0Z9K@<'%UX?5&'DC4(;_`3Q*W1F'%
-M"P#L````[`````(```!%``#H4YL``$`1``#`J`$!P*@!`@'T`?0`U`:YYI=3D4
-M150^DW#;+.`_4U>KK2X@)"`````%````S"$``+!X$R+M(\D;T:#,D\2YX8)L
-MI)'I4"R:C)XEB.YS]37"1[#6A<X.CH^J8;Y@,6U/#[`&(9;B`_T]U[^<]/X;
-M)3*T^&H)%`B"]KOY#_=3D:>9HE>^`"H]FQY\)YPS;\*J?J9F#E*#_J3T\783ON
-M??,[Q)AM2487OE6\>RYF;*H.NK;;P+>.A7);*)SM=3D<?L->HVC[34:Z(XP`GW
-MZ/4N4<:@?1,")D!,;/B7+WO2+F+ at 3Q*W1N+A"P`\`0``/`$```(```!%``$X
-M4YP``$`1``#`J`$!P*@!`@'T`?0!)`<)YI=3D4150^DW#;+.`_4U>KK2X@)`@`
-M```&```!'"$``0`WF$'Z:@%P5RPZ/4K)8ASJD6FSEZT3R^$B#X9KMHL+Q!.`
-M]KS^N#K4D-X>A,/7-]JU)JH#'!WX9$'[+O#A?U\N&0CK at 4(4%!+)9HLR"^-?
-M#D2^_9D!68-3GFZ>J2>B\7I&_:[?*Y+-4EBRC>@DTY;0XYUF%"\*B7J/)OH@
-M3!++;/X8?QKL8L7HS>GN8(!_+P#I)B2(CG+BF[DED;W(I&*UC>2M4%'4D!@N
-MU=3D=3D5N_;[E'OKHW"2%W.)^L9-2.+\[B"P&)3SZU72[$9,/\O5SNAQ&S.T#9%R
-MP8.V'L)JYV&9I+3ZWJX2YM[8Y#@O2]D?9%R>FW>2&8`QNV\Q\L1/$K=3D&Z^<+
-M`!P!```<`0```@```$4``1A3G0``0!$``,"H`0'`J`$"`?0!]`$$!^GFEU1%
-M5#Z3<-LLX#]35ZNM+B`D"`````<```#\(0``X-'[Y=3D4>6WS-9072DF6!/"QY
-M<L,#L`$N,R%:*;XZLHTVL(:N.*J6;.\J"91[)!_-+E4WQ*3$ACX3V`9<PDA0
-M6Q+`RWQGHG)'H7EO[IK/RA[COH96U5R^;B]9:["-\\J@]D0!B-A:-G4YJ at L(
-ML:424H,".CF!U5`]X\Y=3DS+1T$4/)!4(Q\3A2KF*#;U at FQ@ZE5XICR`!1T2>!
-M^4?(!U,2RCJ=3D25?@R/S?KMF9*[`.B at P.@&XX\RY874)^S[E_?7#;:D"/(NSO
-M2PW$%=3DD#OF.9VM7'#Z?'#D at IW?""P%5/$K=3D&=3D/X+`.P```#L`````@```$4`
-M`.A3G@``0!$``,"H`0'`J`$"`?0!]`#4!KGFEU1%5#Z3<-LLX#]35ZNM+B`D
-M(`````8```#,(0``L+-=3D:-<0*MF6PI-H,C-C`")F.&^U7/8!A\"1Z/4$3Z.P
-MX;(>C/UDG4&B at TAQ:EF(C%3+&UY"\+]\-&NU)T9*3'!6MVTL+A8OM,%S[+<>
-MS)JBOR7%*G4-%W1?85)9>((@WC/1I!N3K1K_BQC_ at MKZE7=3DE[:=3D^E[JO;*7:
-M^MXN.?,B'*GX83J8L<ZC>_\]A0U/5DG_CXCK67QG4O!J(X+QZ'.`+(Y(XUC*
-MH2Q6XH]/$K=3D&/"`,`.P```#L`````@```$4``.A3H0``0!$``,"H`0'`J`$"
-M`?0!]`#4!KGFEU1%5#Z3<-LLX#]35ZNM+B`D(`````<```#,(0``L,=3D'?WY9
-MBQK*Y*C>-.6$G/M;9%A_<!O4N0G%,E\00!'AX3N?^+"8@=3D3+Z[:0#LS>%EH2
-M;>K^W<U9<.2DC]0@?+3M\*!T:9R-";%=3DGWM2(!Q49IF<:KE5 at AY#1Q:#QR<\
-M at 6*7[O`;T:=3D\$,"3XX+?8=3D&\XJUB:L`'`M[KD-/WC?,5V:6[9!8S._R\OU/G
-M)_%K&)I#@9'D:0E5C@@)E8_G;^8V^+T_=3D7J/P.LRQ']/$K=3D&@D8,`(P!``",
-M`0```@```$4``8A3H@``0!$``,"H`0'`J`$"`?0!]`%T!UGFEU1%5#Z3<-LL
-MX#]35ZNM+B`D"`````@```%L(0`!4/0I:F`&Q?XM2I-%.)N:5%5(Z2.6!\FB
-MX"79S)</?9N!PX at 72>^I5TL>89'(]X^@%-050RW<_^)W]XJ,-<6[[.2*-]1J
-MTLRM-79E!ABYO=3D$(_BG>\^/5HI_*LKJ(%XU7J(X?#!^OQ8@, at X3J1.TIU=3D><
-MU>^^`9<G#>$?.3%M8A`&(%B3,2T"L>:GAXIAXAN!"O6B4K,0#BE_*/A\_JT_
-M26=3D*?ZEI=3D4S-<BTY\_RH.$.B>,782L"`-LD4&1@$"[BJ;"5A1'*T:$>2%QX^
-MT@\N#O*PK)$,:!H"C:Z)U3^M7$)KXO^%!8\_`^`0ZJK=3D?<ND=3D,LLA-3,^"O6
-M>W.D?0X0E29VJF83/!IEU04W8MJB41?T3.RHO6=3D/0S7GY]-U^U%:095O[,I8
-M`O"@'.(H8KCA/`)6.<G<D6)B!?'C at K;]&]BJFQR_663XS/W#Y=3D[U3Q*W1LYZ
-M#`!<`0``7`$```(```!%``%84Z,``$`1``#`J`$!P*@!`@'T`?0!1`<IYI=3D4
-M150^DW#;+.`_4U>KK2X@)"`````(```!/"$``2#IOY+,2E\=3DU9Z-BW]6OWYY
-MF6/`?PU=3DS;5(82R^),-:)(!6_`7[_)>8)SG3@]^O]"NDE6>&KBL6WXTZ>_*>
-M-=3D.)EIV@[74"!JS;HSGR*Z[_C!+O?CHR:-!+ZA)P,#AW!(RIY9>,Z?8*-4VH
-MPQEC:\VKV7)LR0:IGZ?*<O3QXO3;V8S-,)7Q$!JG7O/H?`I_^O:`=3DKH7LJ`;
-MFJN]H-<D_IT.:M!3:S/O69`74$::VG=3DX-9[4Y-@$Z"2'N8B`-2=3D%UY$IC`2$
-MYZAC'#8]*E9A=3D%7I22/<^S,3Y68C9WRFAMP*VGD8<!AB!F.7T4T#E2O22M+!
-MN=3D(I4>SX`A8;4;G+VP]*\=3DIE<A_%A6%X9YB))Q?5Y45@;>M2[]'5%O2,[4\2
-MMT;[H at P`?````'P````"````10``>%.E``!`$0``P*@!`<"H`0(!]`'T`&0&
-M24I/(Q;6AST44=3DU!Y4FZ]G at N("4(`````````%PJ``!`YPS%X8PFF*].=3DXCX
-M58H#4XTRPH;PJW'$J(SPP<7;_NWF`<>/VJH-"'=3D=3D$?WLBW[SG7S8[A8DL_<$
-MMYKC3Q*W1I&N#`!L````;`````(```!%``!H4Z8``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y2D\C%M:'/111W4'E2;KV>"X@)2``````````3````###(@U,4/G_
-M6:C6 at 4_#;@L=3D%WB17T_SL$@X<E&.XZ=3D)O\5!42X,H7\G[^CYXT\2MT8WO0P`
-M;````&P````"````10``:%.G``!`$0``P*@!`<"H`0(!]`'T`%0&.4I/(Q;6
-MAST44=3DU!Y4FZ]G at N("4(`````0```$PJ```PSWUG%G^`4IW.63[+5+TY at E5W
-MB<C_:8SJ9+RM#;H5R=3D1.4"?\PW`PVP+8?/M/$K=3D&+LL,`&P```!L`````@``
-M`$4``&A3J```0!$``,"H`0'`J`$"`?0!]`!4!CE*3R,6UH<]%%'=3D0>5)NO9X
-M+B`E(`````$```!,````,$M`-0LBXVTR2Z>O6^66 at E^D(Y6/Z82"@9I at Q>`A
-M;3F\'$VDJ<Q]$F?:O#H'3Q*W1CW'#0"8`0``F`$```(```!%``&44ZD``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEE20*8*9GX+\``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``Y.K8H_VY
-MNY088BM+EPW;HBU$7`U&"+#F%*$*<&^CEGU,"U2MMOOG#6+]1%<J",)HB7M-
-M'X$6ET-`%>%@$7I.`(9S?F`W@^Y<*GL]QQ<9B3[FRT?1OSJ^4:-.46NW(K<#
-M-4;40%KRT0J=3D=3DSE"MY+(O)=3D+>GQJMZ^'=3DB=3D*_':AL at XI```D'$,[S)=3D63F`?
-M?R'-@$*.M>"\VBAV6WYEGE,6B'R0>O`I```<``!`!#]SE*Z<<64(\EIU<!"X
-MQ_OB'^*3````'```0`5AU^$I,!?)D$'^%9^1BR&3B8/GVT\2MT81U at T`7```
-M`%P````"````10``6%.J``!`$0``P*@!`<"H`0(!]`'T`$0&*94D"F"F9^"_
-M```````````I("(@`````````#P````@``!`!@````$3H&6"RZ7+904RMC'Y
-MRNS$LEZI_D\2MT;:Y0T`N`$``+@!```"````10`!M%.K``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A94D"F"F9^"_```````````I("((`````````9 at A```@``!`
-M!@````$3H&6"RZ7+904RMC'YRNS$LEZI_B(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``Y.K8H_VYNY088BM+EPW;HBU$7`U&"+#F%*$*
-M<&^CEGU,"U2MMOOG#6+]1%<J",)HB7M-'X$6ET-`%>%@$7I.`(9S?F`W@^Y<
-M*GL]QQ<9B3[FRT?1OSJ^4:-.46NW(K<#-4;40%KRT0J=3D=3DSE"MY+(O)=3D+>GQJ
-MMZ^'=3DB=3D*_':AL at XI```D'$,[S)=3D63F`??R'-@$*.M>"\VBAV6WYEGE,6B'R0
-M>O`I```<``!`!#]SE*Z<<64(\EIU<!"XQ_OB'^*3````'```0`5AU^$I,!?)
-MD$'^%9^1BR&3B8/GVT\2MT:J"@X`4`$``%`!```"````10`!3%.L``!`$0``
-MP*@!`<"H`0(!]`'T`3@''94D"F"F9^"_J]BN(1S_L=3DHA("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``%Z"3F3-J2].28^<*G7H]9;.)WUQJAEAY%I$C+/Z;U4TJ=3DFK
-MSBB3%!W*39!?)<1F78NFIL+"]1M&*03_Z`I&T,%1P?GFD<>JM_BB7>VH!`'E
-M:\D.MIZ=3D50]GO\DG!;(XSD%0+;',&%LF(,3"%!Z*%+;]7^!JBKI[5\#8A&5Y
-M.:]B*0``))8'$**#@B`S^*KH_TE=3D^/$\CP?):^J_Y3(V54Z1=3DC%B*0``'```
-M0`283#B%\PW.5F&::6,AYS%MS0OW8````!P``$`%\]89%;=3DK2H,=3D#)SH_#H8
-M:"4L4^M/$K=3D&OC<.``P!```,`0```@```$4``0A3K0``0!$``,"H`0'`J`$"
-M`?0!]`#T!]F5)`I at IF?@OZO8KB$<_[':+B`C"`````$```#L(P``T*56Q(L6
-M/E[ZFAF5)3R*R@;^EM3OJ2I`LOGV^!!(&:BOOH#9.S4+)G`=3D:%?0Z\\R_7_;
-ML0+Y7B-C52]@3.:RTC<0J&2(0',"]*#M%>GO@\D33(5^T!'E=3DO#5K^_@*T%N
-M$*L7HA'T23%;/'4?#]?*&P)?&$NY\@K%'O/#P8P1B`<Q&K,\G+B,/Y)Q\F,,
-MM?V!,&9*M``6Y..<*.:1HJ?TG2,!X5-!GB]J,R at IYL\5)CV!6EHA>>"A%DNF
-MIMH<"NT"YH/IZ;X\L(7>TT_?3D\2MT:L4`X`O````+P````"````10``N%.N
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B94D"F"F9^"_J]BN(1S_L=3DHN(",@````
-M`0```)PD``"`D0%`RR=3D5&-P9JP%@9;F[_Q*2HG=3DX%=3D('Y`9)DN$8"\O3_\GQ
-M+4\]5`7#@ZI.(P,%!W.8LH];02;_Q<TDN&GBU\.4J3$D-;)F<\HY&I^6K9$Q
-MPVC93,_;<V>6!*%7/LI<PB@#G]1!YP2U<X\5 at 08NF+*2/D$.1K/6`$I!;$\2
-MMT;?;@X`'`$``!P!```"````10`!&%.O``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ94D"F"F9^"_J]BN(1S_L=3DHN("0(`````@```/PA``#@=3D8R8U4IOA`_(@KG>
-M;>.L^V`\\/&H[(LKG:ACI$4EH;:WY2F/!O70/D+_/VVMVEB&=3D)'OD)WZ05G%
-M5*$5B\9\"^[F`Q9YBN<"/KF2>;KZI*%XC=3DC=3DA\?4\[]W59GED!$W%$20`(DY
-MH7G6:_#OHP&3\5DPET0HH\D[QFDM.PO0&OUU^\F(M:D8RJC[>:*5M_4VXX;L
-M'3HACL^OS"H!8OD13C]369I<F[^9:27%],BM[Z=3D9$C?AV;0)O6>J^'A#9:4Q
-MA!R7;L*7WTA'K$$@A2KJ%OV at K6N'A'5+!/._E4\2MT;$@@X`;````&P````"
-M````10``:%.P``!`$0``P*@!`<"H`0(!]`'T`%0&.94D"F"F9^"_J]BN(1S_
-ML=3DHN("0@`````@```$PI```P2*!;S\W":*7U(3UWTP9&AJE;71C`$_=3DDZOIA
-MSP?:=3DQ]3K$@5BL5&>;?&JTU/$K=3D&(88.`/P```#\`````@```$4``/A3L0``
-M0!$``,"H`0'`J`$"`?0!]`#D!LF5)`I at IF?@OZO8KB$<_[':+B`D"`````,`
-M``#<(0``P$$S3!XE'>*V(@:7.`<521TCW673M#Z`MOTS$OH>*W!X^$SI[4(6
-M?;8E3QG&1O(SKA3;:LM,<"Z]NE^!2&OPE-R1)!XHR(/OW`$H,7"@=3DC-GM/?.
-ME[CV]U;SRH"(-L,,X+874!>#F`"D5+J_E(:6HG0T&OTCR=3D28O&Z-(#5(*;ZT
-MQ6<4WF*9;#]/G!QE?79^5W-JIL*H6N:*3<C]C6$U'H/IMT67>)51*R[%CS,*
-M[(&41_=3DZM[L>Y-DP?U$[3Q*W1O>@#@!L````;`````(```!%``!H4[(``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YE20*8*9GX+^KV*XA'/^QVBX@)"`````#````
-M3"D``#`J40=3DPAZ`_<C/1,\%(??,G7(6`0B>5B($7'XMF']'(VZ3P at G_FU1K<
-M!:E4KD\2MT:^OPX`/`$``#P!```"````10`!.%.S``!`$0``P*@!`<"H`0(!
-M]`'T`20'"94D"F"F9^"_J]BN(1S_L=3DHN("0(````!````1PA``$`V&'6?[;L
-MNB,;07:O`,7<HGNF81RZA9^/)BO/-_4'NNBQ"7QT9"?N^\!18BK_`5Z0-:OO
-M0J`PDB\K`W]^2]PP88GW=3D=3DJO,57H"*PE"""_, at PR\"J\'FC>CEAH*D'`/X%N
-M(TM.+$BXOF7+RV$A\L*N0=3D[\NBZ%;$>4D<*7&]*Z?DXND]>4PIGD9^67I!IC
-MZ3./1.]#P-&&HB.;3:?](*I-F+\^VC`0'5FZQUMF$BO2GL8?G'CVN9?<M,7T
-M#X'DWONML_NF\?/. at M<2A'^_T/YLHKQ8/_VP8#N:,CRX$VL+%15T>%?"ZIDU
-M%,=3DP.\.C8#9HJ%.ODTIVU;LMFB\E3Q*W1M++#@`<`0``'`$```(```!%``$8
-M4[0``$`1``#`J`$!P*@!`@'T`?0!!`?IE20*8*9GX+^KV*XA'/^QVBX@)`@`
-M```%````_"$``."CV>5Z8Z?YT035W-MWG;'IFGG""\;LVLW;H\5_'-EX\[,^
-MB7&:46O'T>8"]T7+*X2,33F6%O-'@EQC+LU#_]<%\"\DZ/:NE'+M;R(:VP"9
-M1D(:GO9^KE]DZ6+>2ZUSG,\#U>-<IJY at 4#UI/=3DFES:M9:0M]`5""NR!0L&NQ
-M9)K(QIOF^#!J45/AG(_AQ8GA@!9RDX?$6F6JBU\!83@!R6@^W27#_!%3PIM,
-MO4F:DJ4"N>/W+9Z&OA?R$D6<7>Z4N3U:79LU[+*@*_RSF1L\%U>:4:1IG<<.
-M4'I7^)K+3Q*W1 at G;#@#L````[`````(```!%``#H4[4``$`1``#`J`$!P*@!
-M`@'T`?0`U`:YE20*8*9GX+^KV*XA'/^QVBX@)"`````$````S"$``+!%'V%R
-M,X;^E_MO at J+CJZ!QBR`\LN*"PC3JG<$U at 2X,8?OPXW01J\3B]^=3DX($(O(4&X
-M`:U33A0);Y1'1KN*1 at H)ZRJ.B072G_O&N_:(H@"R!DE.I#7LH"7]2N<(PU7T
-MW1&/HZGNJSQ[RPU!!I*3E20H&$_FD&!K55%AM&B=3DNE^#O;/12'R_?DI?9]*?
-M#UDXPUEG\2PP0HE`DME\ECI5H- at .*%@GD?7#D6- at G0SE3Q*W1M7\#@#L````
-M[`````(```!%``#H4[8``$`1``#`J`$!P*@!`@'T`?0`U`:YE20*8*9GX+^K
-MV*XA'/^QVBX@)"`````%````S"$``+!(+32U:YCQ at OO/+W3IE542`_Q,G2:<
-MN&G at IRR49TMWFH0_+0032?=3D@(]?V3;T6MI at S)+GV?ZL28]/0L=3D4%&B1(3^J\
-M)M^`*@2>@9]-B3#1%,[3:H'>^/L-I%"KCF,-:,,(\NF%Z7Y(/%#L)YHY\]`>
-M+SJ,SMAQX",ZQ)L^_H!C*+"NE<.?IY:*56])D%FV"!\)7LNVU]S3=3DMEVO\O8
-M^\Q6=3D_T%A&L/);[J>^K13Q*W1CP:#P`\`0``/`$```(```!%``$X4[<``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)E20*8*9GX+^KV*XA'/^QVBX@)`@````&```!
-M'"$``0"\QH;2[H">_[=3D+5NA0R%./IG):(U[ZZ1A*2EPMA@^48R#PI-=3D+>K.>
-MU'"^(U_ZP8'J_*D"V&R!`N=3D7?72,(Q*?I.I?F3@%^Y(P%JXI77]RHRYPH3DC
-M^KC)6DFXZ>3UM>3WOA>2,/(HUS\0D.Z at 1#D:7)6H>"E1?5^7>A=3D>Q!EI"%-(
-M'N?,\2N0'O"N*6^*&A;PLM3HOV[QMCFG56?UB+ZV`[RBA_/2!K00S at G+-$7D
-M#@E98NZ,.V.#>UX?-GX:?O18^U/2E9=3D%?UD/0T*[3KGJ/'MVY1[_SCA%(E^'
-M7[2HL3B8%C2+TGB5,08,-HXRR,2?2E]M`&I%<.5>U;]/$K=3D&328/`!P!```<
-M`0```@```$4``1A3N```0!$``,"H`0'`J`$"`?0!]`$$!^F5)`I at IF?@OZO8
-MKB$<_[':+B`D"`````<```#\(0``X"=3DTRNR:@ALO1B2\>V(V:H.;:'90EH'\
-M+G?&/:*P!&5G at WS6]<I2G.299`HL%F7L]"%80$4+KX>F?8%U#Q:J4HB^G at IC
-M;EMM.'`-'O/CSI&8U3'A2BT/3Z?KMN#"$(J)-LC`V`+;[6^7_?+"=3D![@MB9P
-M^S`(E\"6G4:"SCSZU`3;`.$=3DG3QE4%\_C!/I=3DP["*B5O@)+*7Y6?PQR6H<Z_
-MX29XAT[0KDQ-V5G:27?^5&QH6T#&1P*ZCF0!8DZN]LG[=3D9[FWB+:^^QSCY-I
-M.!OL85/P+K5:!!!N.WJ:]_E/$K=3D&8#</`.P```#L`````@```$4``.A3N0``
-M0!$``,"H`0'`J`$"`?0!]`#4!KF5)`I at IF?@OZO8KB$<_[':+B`D(`````8`
-M``#,(0``L$4GN,I. at US0G1]/2*HJ/'+D?+!]U2N3K4J6[G5TSPYTTR;:R$F*
-M=3D4NX<^F"<\]/:<N1ISSNN)*&:'%`1IW3/*7Y'(`S+M\:/<&E:4]]C>SA&),$
-M#53J3(,79GD6;DBRL+3;^\1\B9JR[[+([.0M"#-OC@(\AHZ\%E"33V!CJZK<
-M8T at P4;(4^`R?6:#@#&1BX at U4:!!!PT>$Q7)TJ=3D7T9EE2+;SK0W?JQZ`2*/90
-M$K=3D&E1<``.P```#L`````@```$4``.A3N@``0!$``,"H`0'`J`$"`?0!]`#4
-M!KF5)`I at IF?@OZO8KB$<_[':+B`D(`````<```#,(0``L&K71#6/=3D$,VP3"R
-MNL"D.UM60"XSR.G93U(J+`%D^:TVJU'*PLR2Z6W=3D-]D.@[#8)`QL`W\-VD00
-M]Y)N=3D`6F49#/KN^(\Z%U565-GFVV,9T at K6:16H?7=3D2;7 at V[#6V$/0$[R@"-6
-M<AJ^TPA9P,K^6[WVR;\9Q8QQA93%N[:'"I50>(5D&A""T_0XKBH$A;]=3DCGMT
-M"\"LO^MWSC.4$6BC(K[1,VWB2JV'A?P>,<Q0$K=3D&LSP``(P!``",`0```@``
-M`$4``8A3NP``0!$``,"H`0'`J`$"`?0!]`%T!UF5)`I at IF?@OZO8KB$<_[':
-M+B`D"`````@```%L(0`!4,BC/I\-`U+*9@$-6RH\_GIH_.:,J.-&8*-VW)IJ
-M_8]!O0B4VZ;H,10P_I98`,J":4>(G0[BRPI]?ZSSW*!M'N1US%)]=3D)<XPZ;>
-M^VHCT+28TD-%<!'6-Y%NNN:WZR9++'UE[KZ^MTVT0M:]`]H+&P+\3F>O_&?]
-MDDQ8O47.U5VH/7`+&!LH at V^C<X@(]DIW<NMRK7JD]X@]039E+%6NLS<'K_ at N
-M\1I(B"B"Q)<7Q&J>L#4>FS$J`_!>!%@5H(_2!)[O85)F-!J9*LUY,=3D7OQ%#X
-ML)6:#A7$SH=3DVJ53[-P9 at J5(&VM at Y4,?P"C-$.C7`"D>24A0,R!UM)\6B**!*
-MY]3O0-?QHY6=3DU9U1=3D_N(E7N-UJR%&!R,&9U]RV\RQ0$6T'\@=3DG?<(07%(K+#
-MX_PCV48?-[8H-I*=3DF,B8!`B.:X-#G]/X"1['"V""QCB!4!*W1J5Q``!<`0``
-M7`$```(```!%``%84[X``$`1``#`J`$!P*@!`@'T`?0!1`<IE20*8*9GX+^K
-MV*XA'/^QVBX@)"`````(```!/"$``2"+]O2H#X9'?32 at LL<91N$A,!&1W;US
-M:_;E]\*R<2FEZ2F%+"8E6\(YH"$4O7O']DC"Q+<%Q:IFQK<%2AL=3D+M;^@6O6
-MV;Q-O"<VMYFX62YLLG"?6"W"((9E\Y+JZ:DRR9I8L5O)FG$-.,IK+6/PIE\(
-M2=3DQ'2P.V[V[+,\+.\!T)$+,Q^K!2?3V=3D0"V)#6@]Y,7B!HKL_<$7]V[IS+ND
-M,_EYTGNX1?B7U7:L+RP=3DZ`WV]I;]9ZA=3D()$(K\L)UT)2\ZJZ19"S`?'W5_]-
-MW-I^*AL_"QN,ZY=3D.+R"`V?\=3D8EH>T#S[S6G&.Z7>5;-_S:D?,1EA^*S^9/'&
-MU0U)2TPP8`,!/SA0S/09X>+-T8`D/M<Z)Q`-[;N>G]&NO32K$U`2MT;,F```
-M?````'P````"````10``>%._``!`$0``P*@!`<"H`0(!]`'T`&0&2:YWDJI(
-MS$J<6*,:0S=3DN1`8N("4(`````````%PJ``!`<N\[4EF'_U`(XT=3D^/G-L-J^0
-M18PQ^?H5"."P:X#2,+6YPL$!CPJ<J]3R'.F]-Q'8C8D.TX)61B]L^[F#4!*W
-M1E:D``!L````;`````(```!%``!H4\```$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MKG>2JDC,2IQ8HQI#-VY$!BX@)2``````````3````#!?OZ,QLX<Y_/F<#M%5
-MEY_WUNO%XP%PV]DTTNSL5%,EB4_IF29+SQ5(W9C/W5`2MT:RL@``;````&P`
-M```"````10``:%/!``!`$0``P*@!`<"H`0(!]`'T`%0&.:YWDJI(S$J<6*,:
-M0S=3DN1`8N("4(`````0```$PJ```P!&`@*;#)HT+HDT]O>-BS=3D$K`@"P^N;\C
-M<^]1&E9*<36MU,ORVX[9A+&,8-%0$K=3D&3,```&P```!L`````@```$4``&A3
-MP@``0!$``,"H`0'`J`$"`?0!]`!4!CFN=3DY*J2,Q*G%BC&D,W;D0&+B`E(```
-M``$```!,````,,'674R:#S0+T5>O+)5._ARF!&6EN8,2\/.3,N%P>T<53%PN
-M`E)+C5K\=3DREQ4!*W1LN[`0"8`0``F`$```(```!%``&44\,``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE8@`KP'BG%P<``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``A13.HJSO_E+@<C3L
-MS_B#[QDM'=3D;P=3D(!XD..^]BJ=3D9-`T=3D>LX,XQ."HMG.>RA->50;R1F2\<X)V16
-M5<<#]S=3DO%U.RC6H;]-/-(4F07`M'>"BBL;8[Y$W7;TM33*>%NV$).E5]5$M@
-M?Z-9,JJ\ARD<UD*E[49>*CYDM!U8;J_QM2,I```D%)]9358-;)"S:K+((#D^
-MP5VHD<E[CH`/G)H#'E52NV4I```<``!`!"?+JOM5XPR2&M&;>]]&6H!I&&JW
-M````'```0`4_-JG7,.:G.#6#^><B+5QI#>%13%`2MT:LRP$`7````%P````"
-M````10``6%/$``!`$0``P*@!`<"H`0(!]`'T`$0&*6(`*\!XIQ<'````````
-M```I("(@`````````#P````@``!`!@````%"#O'+\.TK"KX0KBT9P5[9LO`"
-MSE`2MT8ZVP$`N`$``+@!```"````10`!M%/%``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A6(`*\!XIQ<'```````````I("((`````````9 at A```@``!`!@````%"
-M#O'+\.TK"KX0KBT9P5[9LO`"SB(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``A13.HJSO_E+@<C3LS_B#[QDM'=3D;P=3D(!XD..^]BJ=3D9-`T
-M=3D>LX,XQ."HMG.>RA->50;R1F2\<X)V165<<#]S=3DO%U.RC6H;]-/-(4F07`M'
-M>"BBL;8[Y$W7;TM33*>%NV$).E5]5$M@?Z-9,JJ\ARD<UD*E[49>*CYDM!U8
-M;J_QM2,I```D%)]9358-;)"S:K+((#D^P5VHD<E[CH`/G)H#'E52NV4I```<
-M``!`!"?+JOM5XPR2&M&;>]]&6H!I&&JW````'```0`4_-JG7,.:G.#6#^><B
-M+5QI#>%13%`2MT:4_P$`4`$``%`!```"````10`!3%/&``!`$0``P*@!`<"H
-M`0(!]`'T`3@''6(`*\!XIQ<';>&Y?P*E"J`A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``)H5<^UR+8B_$UF"2;S+6D^A`/0OC7I7JJW99.8DO.#;>QHN9R.*<%&2
-ME)Z-I..H4I(20YY7,J(PJDRB[^ZG`Q\LRA_K19H"X[Z5;1%=3DL4\(A#]3#Z1G
-M`NZ'Y8VUT,W#FV`0IQ;,[_P*]G;,DH-X,`KD<K<YWQ1"L&$`5H'B\2*\*0``
-M)(:[JD5\/O:A at JMM&ZJ5!5DI[D)X/SEX`1,A_"'T'[I<*0``'```0`0W\6S5
-MGNP[A585H[;C at 342NG1I]@```!P``$`%^8Y1+'LWS4O$/,D!K1G'3^F!$%M0
-M$K=3D&N"P"``P!```,`0```@```$4``0A3QP``0!$``,"H`0'`J`$"`?0!]`#T
-M!]EB`"O`>*<7!VWAN7\"I0J at +B`C"`````$```#L(P``T*;F!S3^L.$&2X&/
-MI0Y5S3<3)O/BI2!"`:\8)$8V9QT4N<`?`#LI`L]KG/0TH=3D/"\];8KL at 2*-R8
-MY!55)LQURU=3D!?$G+&4YU0MX<E(G8UQ])P$RN9'C\]<=3DZ&T!!0^FWBS)O!;%@
-MD7WQ_L>J9[`C&'-NJYO,.T at N*^!YE*,)DX$&4+7GA#=3D)@FS$UH'7`]\'?<$^
-M`A`<'9`*O69,U4FB!8OI8Y3>Q]E&;JO%6Z<E^5N6^/;,!/?8GSD=3D]1AX[OJ#
-MZ9?U`#Q.[N:'T9&I4U`2MT:310(`O````+P````"````10``N%/(``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B6(`*\!XIQ<';>&Y?P*E"J`N(",@`````0```)PD
-M``"`239[_;-(&DA\FKPN6SF9E^T_L>?E?ALX0-D%R:1H'N*>O@)+'-(M'?V;
-MW(7'B8)N"F=3DPT@>%^'@O]UC.)@SYPE]WI=3D;*A4;^S<0Q5+NW"\[<4:=3D?"_?%
-M`L8I;8]+2F0A.&5Y"#561_`8<`!C;W\[9_9.WC)]SWI!;)7 at Y5`2MT;%8P(`
-M'`$``!P!```"````10`!&%/)``!`$0``P*@!`<"H`0(!]`'T`00'Z6(`*\!X
-MIQ<';>&Y?P*E"J`N("0(`````@```/PA``#@HX,`>/Y&<,`XQ\WJOH3[^E-3
-MU,)T*G1QNCWJE\*Q=3D(=3DC(I*W`8>;?E"J-!YP at _IPA:[$OA()C6BV:'&DU[],
-MD8J8VPH^[0>-@?L?3 at X_IH^93!9&U7!WM8F=3DV96YV7;I%"-B41^Y_.5N)Y)M
-MZDWBD+`QA8O/W9!:AQE7X4&JJ0KP_I#[?O3VC#\Q8BN^E9//@CD,L,N8+^3/
-MLL@)DWBN.]IH+_9Y,H0$>G at -`-[]VO1I43-A=3D$DD-%IU8=3D*"+*F/M(*(0T31
-MOXM$%1^H.6?#$P@:H"D3ZX2P9]<@B%`2MT;W;@(`_````/P````"````10``
-M^%/*``!`$0``P*@!`<"H`0(!]`'T`.0&R6(`*\!XIQ<';>&Y?P*E"J`N("0(
-M`````P```-PA``#`)N/EF_O(";E.X[<KXPQJ at 4QCX.7/4DMK""`JF],G1/_X
-M2G`>K2/7<+L/`>'C`-/OD0U)J at Y=3DM^Q^';YU-YKK9!`[VZ?H-]<C=3D)0\.N7W
-MR.[5'#>5VD:U1=3D&>;"I*A"9-&S#NV;Z at ._T([T>F3CQ0(8-W0;67^SEB8J?,
-MH/I!EWLSOMN8EQ6@>2SX,8?+]J;:J&;UR/`WC>J4,Q_=3DAE,9A@*OG]1^HVM_
-M<'0N83CS%DSGC8IY28L42"#;6%Q0$K=3D&S'D"`&P```!L`````@```$4``&A3
-MRP``0!$``,"H`0'`J`$"`?0!]`!4!CEB`"O`>*<7!VWAN7\"I0J at +B`D(```
-M``(```!,*0``,"([%@]']X9R-B-*CO0_HZ._&*[9Q1"U:3<8!$>C.>35=3D'P_
-MP#197T0C5?XT4!*W1@^6`@!L````;`````(```!%``!H4\P``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y8@`KP'BG%P=3DMX;E_`J4*H"X@)"`````#````3"D``#!C
-M$BJF.,]>"W2J)0R=3D!:SHFUYD2::$@O]BPUKBW<MFV'ZEKN3:U#&?>-3)+U`2
-MMT8JL0(`/`$``#P!```"````10`!.%/-``!`$0``P*@!`<"H`0(!]`'T`20'
-M"6(`*\!XIQ<';>&Y?P*E"J`N("0(````!````1PA``$`>Y',-OY#*7<%:YER
-M<WR*HFIW8%VW at Q&F=3D_ at A<&7:@Y_QV'9SQXDN!SQ5`*/(+XTB`'DF.D>HI35=3D
-M8)Y4+GMGP5%4,T;3413P7)<N[X>D)M"E_7W8H\+>"J-PVF3"5Y0C%7U),#PT
-M!9AN(0_Y"7UXTIA=3D%YM5E]8*`O.>$D8Y:NJG1E30]S-Q%N)Z!AZK,<$)PXZ_
-MI^=3D(8Y%S at X/SP.XHX at SBFM-O'04T65H(=3D(RC;B<^)Y\P=3D$>F=3DL6W at KE*&IA"
-MO:\P-0S2W7'CE6<Q44R:R/.@><X9QF$Z6WBE-"D=3D8`V4,B5%'QD/J8C<:VQ8
-MUXDKA+E2AHQJK2Z5+H/-4!*W1O6\`@`<`0``'`$```(```!%``$84\X``$`1
-M``#`J`$!P*@!`@'T`?0!!`?I8@`KP'BG%P=3DMX;E_`J4*H"X@)`@````%````
-M_"$``.#J$4]$(Q!][=3D,0S>>JC6K\8@>YERD>IX(V>)XF"K6W$WPENBE`(?X+
-ME]VX-!M7:9E5^L0'T"QQN`%?U+DSD<%D-AJ3P]+_'??SF8X+2\-Y84F[3)A0
-MQAB=3D<N;N=3D_C%+ at 9SYV5].NQ\=3D?-\:(ZV*DCRMA%/UF>I@=3D].=3D@#2RWCW*,`P
-M`)O$K7WN%R]9#]@A-]@IP$<SK!?0?)R]IQ*GS2_[UTS2VGR&>W)"7E-0*'XX
-MR'VSK1HI41/TOJ$IQFY^C5M;]9>!H)G>LP?/R3<"?&OOK$7)L',3VV%(;%XE
-M4!*W1HW,`@#L````[`````(```!%``#H4\\``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y8@`KP'BG%P=3DMX;E_`J4*H"X@)"`````$````S"$``+#15=3D8&E\3X&T_B
-M`3"],T^P;BW=3DQK!86+!)DQ:?Z&2MOO6+A:EUWX1N0J1SBTO;Y(^B-R""65QO
-M,,G<OS&8(W5V?G$`!WUJ9$E*BIW*^*!0=3D=3D43`+X0Z%"#K"KAZ]F=3DJ4P at 7$VS
-M5ZG96N6Q`3WYW#9!^K"Q[C@#QY4"(4(^/4\6WE6T9!M60/D5GZF'^5(1=3DFOT
-MQ0#L'ITC?318B0Z^T[C@((1Y!MJJ:K@"&#&R4!*W1E[O`@#L````[`````(`
-M``!%``#H4]```$`1``#`J`$!P*@!`@'T`?0`U`:Y8@`KP'BG%P=3DMX;E_`J4*
-MH"X@)"`````%````S"$``+"W(49Y&`*E&6LXI*UQ0+^/*?7G91[@&WYM1#5-
-MBTHH!FE.V!(.)&8`*=3D\B&08M<BD%2!J.R:86$SE^?0NE(A/ME+.\>!4$*Q9;
-MV:Y0,D?THT2>*5+TZU29S2I2E[F#N,SZR<;P*'S_E^W[,4?D+IZ[(&IJ`/?7
-M/S/=3D;@ZRY>4A6>._.P92.2QTQWU3'",T=3D8P?87AI5WZ\?3WUU7K_=3D[VCPK#C
-MT\ML4=3D(S'WN>4!*W1OD+`P`\`0``/`$```(```!%``$X4]$``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)8@`KP'BG%P=3DMX;E_`J4*H"X@)`@````&```!'"$``0"*
-M_D2JD]#%1@>.!\X"6/@X#C)(>>HZ]C5O?C2#$;]E)2--N]KHL>,(VG0\B]K0
-MRIP__T+N@:1$8L1[8!3S/J.H$6CA2-ZT$$JN'##<5]U%RVC<+HDISA7M"4HN
-M^Q`FQ^U_4*-6+.YS;5-,<K](*TN'(@'9:VNFP1\59Y[2NB5'"04_-$+Q->:C
-M0(QK_9S]A[+O&!QG5.<CN_0=3DBLBFPVQVQK)N<A'A;H%SYO<WU=3D7[*%?GVR+Z
-M\K12":U4P- at K*2?@>:3L4]]G.AAN]B3]+<4HH*[,`R6#I0SNU3=3D8LRCO2#ED
-MOZIN>361[=3D^H79TI+8BFQNB?`ZJNU&,I,?U0$K=3D&#A@#`!P!```<`0```@``
-M`$4``1A3T@``0!$``,"H`0'`J`$"`?0!]`$$!^EB`"O`>*<7!VWAN7\"I0J@
-M+B`D"`````<```#\(0``X.')IBU_4F9&4J0K>[(AX+GBOS9O!T)$'\80#F1_
-M8>Y>(H#=3D at G\R1?XAA9<&U%VS*\2LHMI'AY44NU%>F`>R<G/G'`OM:#R:L>N4
-MKY*`25.668C>GQ]HG8R*=3DBM*3MW=3DJVU>?>U at K/^)*$(`NR[X9I-6@@\5:V5_
-MUXON7[!,>[U>@\ST>=3D`^BH9-UGK\(31G,('BNBF8;)_A^-)V(49K3M-.93\*
-M).A[(&V6^0ZVX5$8I+*,M/BND_-:9M&2JFO--DC%*[E$QU?D21]$-V%C7_#.
-MZ4:=3D!2P.2DFF?VA0$K=3D&<R<#`.P```#L`````@```$4``.A3TP``0!$``,"H
-M`0'`J`$"`?0!]`#4!KEB`"O`>*<7!VWAN7\"I0J at +B`D(`````8```#,(0``
-ML)/IT$F+.J?&;+G<5:%M,K1_"P at M\,3\/M$K8X>.RIP:G18=3DH!*<>.N)42`R
-MFA,I]:#Z^H3K./]L;I_:\+395W'F%&^7FT2&ST!-2Q>\HBX_IB?4D)@H$LW3
-M*E<$EC^2+>@OLH:-R#<;+Z)@++QY6,H)V22:;JGP/V'!L[@?SH%.XK42SIEC
-MA0<B=3DC&C<:A8W7!?<?"':H6;LEC.J16PNNM5)H<$2V-%L=3DB\"6A0$K=3D&OTD#
-M`.P```#L`````@```$4``.A3U```0!$``,"H`0'`J`$"`?0!]`#4!KEB`"O`
-M>*<7!VWAN7\"I0J at +B`D(`````<```#,(0``L#6R\[#:HS\YC,1]^>+#+36`
-MY"K#;G'5)5WZ(,XE1T1<@T*C4S92%\TE%/=3D\48GF?=3DH-5\DL*8$BGYQKI at 5[
-M)M@=3DHY*//O1MZD5LY(7#B;,448JC]3(--%1`$>+R>9F[`>T#OC8O))HHLNW(
-M`6[XOI%!]^%OMI[Y%ZEP^Y;VIRN"%QL[O<Y7G(#*5$V*8<:%(DA^O],`8TL0
-MAG<R&3"*""TZ).=3DS.U@$E4R^>D=3D0$K=3D&&G`#`(P!``",`0```@```$4``8A3
-MU0``0!$``,"H`0'`J`$"`?0!]`%T!UEB`"O`>*<7!VWAN7\"I0J at +B`D"```
-M``@```%L(0`!4(H:T-\W-C8^,/)!6!.?_Z4%Z%P*W88I7GHQ"J!AZ$F*LXG]
-MKO,WEOYK^?;UR\,9&+/1?6V24.'$WQYFV"['!_N8V;D"TY=3D4-P>!0`UY6C,2
-MVA]#LD@%8[P%R6JXXR<EA'"=3DG=3DIC(C\#KP&QK>,^=3D/H\NS.3#LA(`J]H*11U
-MXC(4%W!X;MH98K[4Y2E?$202WDN at F<4]8'3(0D?3_T?SE+E4,>!.L1PA(0K9
-M,A&?X at 5#WN<,$A`'A4/BJ5Y)3?.=3D1/M;>,1=3D.I')Y289@&]%_0V7:DQG0F at Z
-M4K(CWXKWLW.T"'/BBP"_U,90+H:.4:6C*8$/UZX_Q^=3D:AAJHYFBFMIWS[YM'
-M4\Y_`.\U'F\&X>0[E>9U.NVS?$M#"(@.$%M6Q-[9O6Z[G;AV,,7FEM:5XKQ?
-M79[N/I2D<$N-5$ADL."ADQ&0`4!9$'_!F8PQ4!*W1C2D`P!<`0``7`$```(`
-M``!%``%84]8``$`1``#`J`$!P*@!`@'T`?0!1`<I8@`KP'BG%P=3DMX;E_`J4*
-MH"X@)"`````(```!/"$``2"()/.:WQU/P.1,1K[-9"[E8R[MYW"V06'8CQA=3D
-M!2Z*A!Z/8K,;PDG^1BII(AE9QBW<RMX&DA61.#EZO&F0A0V<VAFNK`:[&@X$
-M6`A&"K<T";%R,!&&#QN&DXMN]<'_X##[QXYON5_]!!4J$-9DWW&B((I.B=3D"\
-MS4$ZL9^KWIS<68$+K($TO8G)&FJ)7LL3"W,Z,?!ZR/9DN<,24\.*3(2LL??%
-MWI[E!^.J9-YR8E^T+(B.^8?D at 2]4F5AEJ]IT at _CW`,WEQ'!S"U4J834Y/:ZL
-M%"%@0ETY_<"(IT?+%\4,-\+J))4&G-/FNO>YA?KWQM>CZU4TWX67N`YG7E=3D5
-M;@"ZLY1,XQ<OX[9776KD.7<.\/[M+*9Y]W/[>&1W15`2MT8#RP,`?````'P`
-M```"````10``>%/7``!`$0``P*@!`<"H`0(!]`'T`&0&26/"@BU\FIO'\6,%
-M66];MI0N("4(`````````%PJ``!`I#A#40P9S[\"[`?>=3D0MI7\9B1"N-@=3DQ%
-M;6=3D",I9'HQ/JU,UX:9#I[^H8[\O&E9!]O-?]OE2+>RW8XZ'O4!*W1G#6`P!L
-M````;`````(```!%``!H4]@``$`1``#`J`$!P*@!`@'T`?0`5`8Y8\*"+7R:
-MF\?Q8P59;UNVE"X@)2``````````3````#`:&=3D]9</K<%W`',J at C\R.L%JK>
-MNO`%$3$1.5'-,25, at EG![^2PW<=3D^?TB>J%`2MT8LY@,`;````&P````"````
-M10``:%/;``!`$0``P*@!`<"H`0(!]`'T`%0&.6/"@BU\FIO'\6,%66];MI0N
-M("4(`````0```$PJ```P>7"$30I%WE=3DE#HC#"F%.=3D%B;#&&@HA$/!AW2"SIK
-M!7'EJXJXP.K at S)J?D"M0$K=3D&1_,#`&P```!L`````@```$4``&A3W```0!$`
-M`,"H`0'`J`$"`?0!]`!4!CECPH(M?)J;Q_%C!5EO6[:4+B`E(`````$```!,
-M````,.6'.7W=3DX2`@,PALYKT[(FU<_I?IQ(LF`[FH'X0\XC$ANMGV*$^>0X"?
-M/?U$4!*W1IKO!`"8`0``F`$```(```!%``&44]X``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE8KMZF;L4_/,``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``D6H<!8TY)H["4B/8CLRCT-+<
-M&=3DAH.T+$Z6UM&VU)=3D_S>^(?'2G0$%YK_3TC\?M$);E'-S]*_RR'GQ*I3FJ7F
-M>F0<MB50(-S3DR=3DB_6C13=3DYL.PF(?S^:8I+(343>>D:R^.L>`U/`D%!*ILT*
-M0&OSCBDEWEZ>/N7,A+83ZQ%,Q_(I```DL8YY",80]RX)3I2*=3DX)2!Q=3DG",FP
-M9I$K]-0XNH"4*3,I```<``!`!/Y<M[_F+46'4TP_B`Y\U%KSZ$*9````'```
-M0`49R55[(K4A\XH?DI(\!?.!;^*NH%`2MT:I_ at 0`7````%P````"````10``
-M6%/?``!`$0``P*@!`<"H`0(!]`'T`$0&*6*[>IF[%/SS```````````I("(@
-M`````````#P````@``!`!@````&BT/3$2.$Y,T5=3D4S<*ONB#SC<^\U`2MT9#
-M#@4`N`$``+@!```"````10`!M%/@``!`$0``P*@!`<"H`0(!]`'T`:`'A6*[
-M>IF[%/SS```````````I("((`````````9 at A```@``!`!@````&BT/3$2.$Y
-M,T5=3D4S<*ONB#SC<^\R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``D6H<!8TY)H["4B/8CLRCT-+<&=3DAH.T+$Z6UM&VU)=3D_S>^(?'2G0$
-M%YK_3TC\?M$);E'-S]*_RR'GQ*I3FJ7F>F0<MB50(-S3DR=3DB_6C13=3DYL.PF(
-M?S^:8I+(343>>D:R^.L>`U/`D%!*ILT*0&OSCBDEWEZ>/N7,A+83ZQ%,Q_(I
-M```DL8YY",80]RX)3I2*=3DX)2!Q=3DG",FP9I$K]-0XNH"4*3,I```<``!`!/Y<
-MM[_F+46'4TP_B`Y\U%KSZ$*9````'```0`49R55[(K4A\XH?DI(\!?.!;^*N
-MH%`2MT8\,P4`4`$``%`!```"````10`!3%/A``!`$0``P*@!`<"H`0(!]`'T
-M`3@''6*[>IF[%/SSW$O,Q`FAGYPA("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``+'?
-M2JO@#;V(KB;7()AFHOL/%2'8FEH[@@3USR=3DF_E5_P(8)C0$RFC)YFTQSXMY)
-MD4`,H_)=3D_E,]ZP)%HUNU>. at 4#JQO([43YD]032+]P/W!D49].L7CH/=3DY_FYH
-MUZ[G8O1)UK2C'6V[B"%J.X-X-E8AUV3R=3DGA8[X4G!RI68$'=3D*0``)#KG*]E.
-M+\@CJ-MX7Y>)F24KE<"%;HM[AB`"V5).GH!^*0``'```0`36>W7OE'72C!K4
-M+E$26T1NE552&````!P``$`%3<>[Q2Y',N*>C%*CY8Q+V2\W=3D[!0$K=3D&`V(%
-M``P!```,`0```@```$4``0A3X@``0!$``,"H`0'`J`$"`?0!]`#T!]EBNWJ9
-MNQ3\\]Q+S,0)H9^<+B`C"`````$```#L(P``T(.+G5#TH$[MPIQGLW,MU7S/
-M5\@>1+=3D9CD/5>8R35T7K'>^&B'YC&W.!W\7@@`&PGK\/71H'(%%*2@`_F<6W
-M'1#\HG^_V3<L>RZBXC5Y9=3DN;>$:)3$<K?PRM)QYY4-WV+>P!QF[?S]O36D[<
-MC6UG'A5E(CWFM#0'FO2%'E,34R<9(M_CQD^\5>-(IL$LT,"5DS*I>57Z5D3E
-M(KQ/ZU9T0&%RV2RO\(GAZ.V.+M>TCAE[+5TU856MO2[P?I'E10I`??DV#*F_
-M3E at EI(0BW%`2MT;(>@4`O````+P````"````10``N%/C``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B6*[>IF[%/SSW$O,Q`FAGYPN(",@`````0```)PD``"`J22*
-M.V=3D%#`5=3DL_XFXZ at C=3D8_N at 0W65CZY]_)HVM,'5-I_LI;C&Z+Q'I4MXM%!X0_?
-M.M!(D$D;X$KQFR/T]=3DH9QY/Q$I:EP(:A%#L([\0IS&+_U2U!CM"O%'0:O._]
-MG9VO&_PI!H'@./G\!LW1]#91[5NI%56-,'>?5C0/&U`2MT:=3DF04`'`$``!P!
-M```"````10`!&%/D``!`$0``P*@!`<"H`0(!]`'T`00'Z6*[>IF[%/SSW$O,
-MQ`FAGYPN("0(`````@```/PA``#@X:#-N:0GR(DV<]:"7ISFM$@EZ(YIR7>G
-MU6%PK"!3,96GS?VL<&4X]IP.3*-HIZ#NL^IY\?(BZZP"0"9NL8]GQZ.T*LUC
-M89.B!57.HE[/(0=3D6'_ZSRE->;3N%6M!=3DE at W#,=3DUCW*"JQ"I?%H7<$C*ELVWX
-M3)OH]D.3%?[LESX<4(,K<SX+RQY!*&ZQ35"IT2 at 9!_JGD=3DBGQ,TUBBW[)=3D;_
-M>[FO]Z%=3DV90"2$#<QM6?AR5M=3DAX46#.:0'SA3,ZZ]32]C)EZH:P!(`R23>EQ
-M">QHW>.T-NT.',8'SX;RJE`2MT;+I`4`_````/P````"````10``^%/E``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R6*[>IF[%/SSW$O,Q`FAGYPN("0(`````P``
-M`-PA``#`LU at 86LO#<XA0<C'XACZ=3DI/.UH0"MF0GW/8#&70CHV!JA*8+CID3W
-M23COM%F'.*$JFIJ1\@C8BBZ]G!&,`0A!-I:4RN"^R3-5[F"J,KH[Z*)UGV=3D2
-M^4)GJ!FTKG%3>XK6_-]#ZEZ/E<8E8?..ENOZCW#]5#HN-%`P`SX\W*R8T<X6
-M>%Y8O76-&<@RL029U1.QW2T&=3DJ;(P$G9VQ]8FM#)U-FT-#2ZVR+=3D'@89)1\@
-M!\CV??K"4C+P;10P"Q%0$K=3D&>Z\%`&P```!L`````@```$4``&A3Y@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CEBNWJ9NQ3\\]Q+S,0)H9^<+B`D(`````(```!,
-M*0``,+#L"PO837R+.O=3D/4,4XSL['_<[4V8#78U-LR"`A;HU"^"R6=3D/\`CV+"
-M=3DQ,U4!*W1O_)!0!L````;`````(```!%``!H4^<``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y8KMZF;L4_//<2\S$":&?G"X@)"`````#````3"D``#`"Y+G]"157
-M_?$7[=3D5%_D[FZ`H`[V_;T4&UD1+&A^VZ72I?)5QK1>];22R$A5`2MT9#Y`4`
-M/`$``#P!```"````10`!.%/H``!`$0``P*@!`<"H`0(!]`'T`20'"6*[>IF[
-M%/SSW$O,Q`FAGYPN("0(````!````1PA``$`1B=3DG\P1RB:DA[GH""$_ZSZ@\
-MT<;''(A"O\H[T/5\71N(EB]$G+3C\-KO*P!!1$I![%_?6?$C<;1XVQJLU>6$
-M0P'TL^@-0\UF[=3D#'7BB8`UL4F&+)BC`X]N\.)RY]32&=3DH9=3DP:.5S9B%UUZ>S
-M:LW-,JW?7ZINCT/.=3D]J[<8=3D5V5;7 at LS!S'#@UL[X84P)KYU(P+9ZK0SI3#=3D/
-M7ULMTCW at JLEFO'B_KZV4T9!<PPX6,^)UTV4QF(,3A]+A1/W.^$E!UY$/8MZ'
-M+?R95&F%\KD0M^[(-2X*'_CIGMV@$X4VM$^.F>@J8U5;#UWQF)`[-B![(;S&
-M$Y0HS\D;0F3_4!*W1M;O!0`<`0``'`$```(```!%``$84^D``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I8KMZF;L4_//<2\S$":&?G"X@)`@````%````_"$``.!1
-M]*Q"LF45O`L>:Q7",9'GM<80ODEWW*I63%S`__G5B\-[H$:&XCMD_O\8<C(W
-M0D_5J^S9 at 8B7OALC4@)._L=3DRFN]ER16!UQI%2RQGU+P1C`6-1PZIR.%3P%:L
-M#G2I=3D.:U-,;)6)&P=3D5CA=3DOVNN5T9A3=3D)A)EKFU)YS>S6OL-@#L<J;>%`W>Y1
-ML*\%WDB6#88<)5JNCK#3!;`!'3BR5*\_AX\ROK)08`;AV^&EOP!HBM"*95>8
-MPP52'K1+%75>':U=3D^)<&V0X#+'G#(8^+?$H5N=3DK^$GQ4\.&'L-"74!*W1G<`
-M!@#L````[`````(```!%``#H4^H``$`1``#`J`$!P*@!`@'T`?0`U`:Y8KMZ
-MF;L4_//<2\S$":&?G"X@)"`````$````S"$``+#D;[JY3>8(*H!68Y$)6P:1
-ME);[YS'=3D>FB)L,_1MO9R%`3N8ZG;FD,5Q0!\6EV33 at 0G&=3DV+X%1Y[@,^;6^J
-M at QR8[;.!W?K+-*,R[#3GBI4A,I4C<IRAPU21+5!_")#GO[!%YT<C(.1;(8=3DJ
-M/(PF5$LCQ/*=3D?AF[(?(>/&(3ZPA"]?Q]J#Q95F$N%/>O?I(`LEGD+LL!!@TP
-M/GR at R+]HX4W250F0")N;5L#OTFYV4!*W1ETC!@#L````[`````(```!%``#H
-M4^L``$`1``#`J`$!P*@!`@'T`?0`U`:Y8KMZF;L4_//<2\S$":&?G"X@)"``
-M```%````S"$``+"?%`#6T?54&OT%GS,M9GDM*??%:/U2+V"B%JY!)DRF.=3D_X
-M/O'ZA<[,1[K'U?9--I/P:JMZ4/N*ABM"_C"F5-0%#WOM`;/*4-F9#`3_4`T]
-MF$MR,1JW?H-9&HW"/K>T`RDPR,[)G+[FX*N_1H#;.KPHM$PB$P)XM-CIEOM6
-M1;WAW3P)OB9CQ=3D?Z?;_S:^VI:&BI''\[=3D7I<WG2!U(;M5P(E^J))D>1E5]Z6
-M!NC#4!*W1KE`!@`\`0``/`$```(```!%``$X4^P``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)8KMZF;L4_//<2\S$":&?G"X@)`@````&```!'"$``0!M^D`<6`3O
-MP-_;*JW">YV`4W\??E0Y,IZ@[6VJ7CP9+#=3D`79IP\!T0\OH-\HZS$'[6X<];
-M.%5K6[VXUW4=3D'\14E9=3DTFSJ!8.2L5XFA1G"D$%&)5ID1EJ9J\MXIA"\(V!EV
-MVW`%P"$Y[I6N^G&#7#Q-<!;F=3DGT"C643;()X&I=3D%D5@:67D2Z?5HH.C*V[$E
-MA##)IPJ3^B';MLS1T`H9:L273^`$R5U_:**T,I>5&(.+TGV&PH".AP#!^9_2
-M3'A&+V^H'*1HG\M'0`=3DM4#.6KA):A:&V#JO?@(@;N9<2HZ3UHI>>JD/C;AG-
-MFLV)8WY16WS56!R^QX9?]MX&P450$K=3D&3TP&`!P!```<`0```@```$4``1A3
-M[0``0!$``,"H`0'`J`$"`?0!]`$$!^EBNWJ9NQ3\\]Q+S,0)H9^<+B`D"```
-M``<```#\(0``X#I%ZE_>E!Y1:*-_/2,!5$[VY;=3D@)'@F3#$=3D-W9O.<36F5HO
-MI^(\RB5*?/SUN=3DXK'L=3D[MACG"X9;[FWQ'2S$P4E2%7?K5HIJ`2;;4NV^2-+Y
-M"&E"7+QBACNDPZH/<"6>]_TWZQ(T(=3D#=3DI7',*F).!6?-:#%J_MJ&Q(RW'*^@
-MZWF1(R+1J4QPSX\AB)"IF2^'BI!WA@@QXI32$XC*?P_RB&;;M5$2"LK3MBHE
-M13=3D=3DHE'Z#XU5<'PG)$\AA@@%+ at _5F<(1+&^A(P1!H,^Q^.=3D8)ZDVZ?C?V:4M
-M068"!>=3D0$K=3D&ZUL&`.P```#L`````@```$4``.A3[@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KEBNWJ9NQ3\\]Q+S,0)H9^<+B`D(`````8```#,(0``L,&-'Y[T
-M9$5D$1?^DBL1'%N at Z/CA)\)-Q8N00A?`*^,?P*I#;]0WJ[/0 at 53_S+<RT1=3D]
-M8L at GM2D(M0'XD at MO$SJ at G$1=3D*@*E3\*WEN-43J^^0:2WVB2C'5G\E<20P0%8
-MT/<MX80<TPDH1F=3D5.>0KQ1856 at OW>A*=3DYNF?_FYS%5=3D5G7B_F>*&2]#Z4^$/
-MM_KZ:V`+&`_`Z<=3D+[?KXI241VAMM at 03JWSS*C4WHI&!0$K=3D&Q7\&`.P```#L
-M`````@```$4``.A3\0``0!$``,"H`0'`J`$"`?0!]`#4!KEBNWJ9NQ3\\]Q+
-MS,0)H9^<+B`D(`````<```#,(0``L)GEG0!,4.K1G?6:'7Z&VZ141%U3C:WF
-M`SR>;Y_FSM&XRLR'J91E2*2^']\^+2^0=3D\N4(X(K,0-E5OMOV(1!AT(80/:)
-M[E5+4W&$-J5V)Q9;:O_S*(%!76G<P8G(+<^]D)\<1$Z(O?:R<R%"/'4[B-S@
-M#4/O7CW("R$^X'H8=3D,"HT+U%5#^0I*`+MY?Q&AK:`"=3D)[T]P;49K at 7S:)./:
-MVV(BZP+5U?&?H+%ZE!M0$K=3D&!*4&`(P!``",`0```@```$4``8A3\@``0!$`
-M`,"H`0'`J`$"`?0!]`%T!UEBNWJ9NQ3\\]Q+S,0)H9^<+B`D"`````@```%L
-M(0`!4",4\M.K=3DE3"1+=3DI.R,2>(YKI'UR?N1@=3DRK<-`Q6/3#!?$0$E,XO%.-4
-MI!+NBAA&!F,32Q)P>XX0;AX0)4K%=3D=3D#['?50:HR@<G0;KQ]C&J#E$CSX$#:D
-M,P2.)5-*S!L)+'0B,]W5#3`?!C<AKI;[;S_[UX^P0'6-)WR[0C"A at D59DG#6
-M/EX[R;`EA#OF>D?(?N2P1U^\B`?O76QZ(Q-MII->/:1S.9^E3\RTX!,F'1/Y
-MV`H85BO_4)+Y,*M,L#&R%UG$Y(L[A;`E!6Y$[Y3`#G8+!V\AH"^^W"S*U+WI
-MBHPJ(J!&5VP^N_8GH\.H%N7L;*1S>OL$_?*,[R6$;8'Y=3D!9+/X/6CMOAF"O:
-M4K3:9D2TB?[&C[BWF\80]8!3URR*-GFB?-N[//;8$@7(XGQR2"!T5HXODH9R
-ML8JJ#F5%[:0I@@_NP)@;L"TUYBY.4!*W1O/:!@!<`0``7`$```(```!%``%8
-M4_,``$`1``#`J`$!P*@!`@'T`?0!1`<I8KMZF;L4_//<2\S$":&?G"X@)"``
-M```(```!/"$``2#2,"Z0:6A+#,DW/UEH$E_TCZQH4E#:>\5'<M;B.1"IW;#9
-MG%THOWX%8\S_*(J=3DDG_;<*C$H8]N\IUB#'YG0(92>#7Z:)/4B5C%":P51GF(
-M]2]GBS2&<I(**S/N%I&6R#(_^$ZP8?([_.0'11-T8QPBXWDMR_)1HL"9O at +9
-MJ6-H>1]`$;0&2Z3E0;V!2T(_0FA>WEQ^[A`"G&'MC$-]I??SB`Y+7PF+%\"#
-MD98=3DIJMR7G/0B;UZ2-)`;:3"QA+5E;NB*0-'2.L7S)CY@:UE]9+&.CZF9@&?
-M]2Y=3D,?UX8H&(/$CCUH9*`LK\ST1-K)R0/P##&UIY0J.?NJ^E@<>8G"`JKA"E
-M(QS[BT$?6P))4C9PI*36%+PZKQ_+D,I+\E`2MT8)`@<`?````'P````"````
-M10``>%/T``!`$0``P*@!`<"H`0(!]`'T`&0&28L^TP5&DB4R/M$5RW5.0#(N
-M("4(`````````%PJ``!`<0Q8QR?>TP=3DB/IFP1EU8GI)I$!#5\(&5=3DIT%9+=3D1
-M2&[22M2WXP\Q/TP>*-#ZVWK8"[^.0GL>P+X)RTQ<4!*W1I`-!P!L````;```
-M``(```!%``!H4_4``$`1``#`J`$!P*@!`@'T`?0`5`8YBS[3!4:2)3(^T17+
-M=3D4Y`,BX@)2``````````3````#`=3D=3DH^TUIIR:BVK<!R;:WP&!>TNTG!%.YFZ
-MD+=3DK3]=3DM\IR'TL85VZQ5'H:*.E`2MT8P'`<`;````&P````"````10``:%/V
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.8L^TP5&DB4R/M$5RW5.0#(N("4(````
-M`0```$PJ```P70?/F!E3-ZR"PCAD9+NI`%[ZIT_2>F$5&:8)MH`H0R8Q/!O-
-MFZK!@U*`G*Q0$K=3D&ERH'`&P```!L`````@```$4``&A3]P``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CF+/M,%1I(E,C[1%<MU3D`R+B`E(`````$```!,````,-=3D#
-M8WK,9!04YFDVA2S!\_Z)I78?Q>H`B`AX#&1>EMK&AQ<\/KBJ"7>QXK2*4!*W
-M1 at PJ"`"8`0``F`$```(```!%``&44_@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M$&-H5E1L&S<``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``O90,"6HELEMK_HVL9_GX)F;IH^>/8B98
-MN6&3*1\W&0Q9>?U6B]%G=3D8/"#>"X>I5Y&OG0D7`ILDV@\)7_I-L.R9)1Y9`+
-M*AJ'S8 at 93DIO`2H6#O']S&U&G&5T>\(?H6<@T$26NV(5V>TE8DF7I7C/K2%+
-MY47P?3S/"9 at VA3E,(H(I```D&F+*.XS/=3DWR"3 at F:/50;KGBRDJ&/3Z]"7V7J
-MC,_PI)XI```<``!`!&1!?X8RLNXE,S-G8K].MM4,,4_<````'```0`4-UAK2
-MUVBH at 7%DB\?7FRUVN/<%K5`2MT;H.`@`7````%P````"````10``6%/Y``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*1!C:%94;!LW```````````I("(@````````
-M`#P````@``!`!@````$+D$@ZLS?7:P68*?SWR?]_%O,^5%`2MT9)2`@`N`$`
-M`+@!```"````10`!M%/Z``!`$0``P*@!`<"H`0(!]`'T`:`'A1!C:%94;!LW
-M```````````I("((`````````9 at A```@``!`!@````$+D$@ZLS?7:P68*?SW
-MR?]_%O,^5"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MO90,"6HELEMK_HVL9_GX)F;IH^>/8B98N6&3*1\W&0Q9>?U6B]%G=3D8/"#>"X
-M>I5Y&OG0D7`ILDV@\)7_I-L.R9)1Y9`+*AJ'S8 at 93DIO`2H6#O']S&U&G&5T
-M>\(?H6<@T$26NV(5V>TE8DF7I7C/K2%+Y47P?3S/"9 at VA3E,(H(I```D&F+*
-M.XS/=3DWR"3 at F:/50;KGBRDJ&/3Z]"7V7JC,_PI)XI```<``!`!&1!?X8RLNXE
-M,S-G8K].MM4,,4_<````'```0`4-UAK2UVBH at 7%DB\?7FRUVN/<%K5`2MT9Z
-M;`@`4`$``%`!```"````10`!3%/[``!`$0``P*@!`<"H`0(!]`'T`3@''1!C
-M:%94;!LW!<S3$QTRS0(A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``&]W?\@SQX8\
-M[)P*B`C04#V2H"2S_^/F83NZG,4>U583"=3D(Q:@(#)Z"])W<%!DIO"^.$KXAV
-M:Y60ZU!,[&_CD at XZ\PQ]_7=3D\&;6FX\1!PS-E;W*4"Y/ZFM?N,LP1E6+JF(ZC
-M at VI%I:PJ'"I)%RG1XV:$YR6V1+S']@SPV8DD3-[%*0``),83U=3DKY'1[A5-F'
-M73!J"-96K3RR$E7O]I7,_NY/7,$_*0``'```0`0V/EPR%+^+?DWL*UGFE0AL
-MTLI#TP```!P``$`%2)\[VO=3D.$P+P_C4+V.TN,,"&LKU0$K=3D&P)D(``P!```,
-M`0```@```$4``0A3_```0!$``,"H`0'`J`$"`?0!]`#T!]D08VA65&P;-P7,
-MTQ,=3D,LT"+B`C"`````$```#L(P``T`X,9NUOY85[;Z/<G1Z8((KC7$N;J(C7
-MX2W1;)Q(1#OB%2&$M8(EXY\O'2<(8&2\F3IJ^FGJ!@;'&>"<EV-UTSX!:2-T
-M at OKUA7BP(AY&#_?`R+*UV"]=3D=3DEW@*]+1R#8H<O\"B<1,,QIT9`V[%7[=3DZ]P:
-M:J0C6#E=3DZ:%-E<\B^S2L(PYY7OB0-0Q3-.NK,"/$!V\?:&&+G4N-N7A(Y1*]
-M'I:JL&=3DHVT8+Y"K(U(@I"P92=3DL%/6.O1+*MCG02;:H$1-<`*#"'[:Q?&'=3DZ%
-M+%`2MT:!LP@`O````+P````"````10``N%/]``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B1!C:%94;!LW!<S3$QTRS0(N(",@`````0```)PD``"`\.'4AV_K.N#:
-M8'V-'41&99?()=3DY*5MEJAD%=3D'US1CD][OUTUT"0:UK,ZVG*/(D<=3DGG/PN%]*
-M>\/O=3D"Y\/[NNFDH6(-P,_YT*1-G0 at NN185#,\"-CESW_BU:=3DO$#%ZZ%IKM;]
-M at E=3DHX-9"(]3::Z';$[YM/#*U>?*=3D;=3D`AOE`2MT9=3DT@@`'`$``!P!```"````
-M10`!&%/^``!`$0``P*@!`<"H`0(!]`'T`00'Z1!C:%94;!LW!<S3$QTRS0(N
-M("0(`````@```/PA``#@D_8-U;/N%[7;";M!J(Q4C-B'O);&IX!$D..^>_$@
-M<5O%F7F$D<5VIKEKOT5N;#6-_@?WD%V$UQ<^^?X;C6RY;#_ST<6T_"82#4A_
-M*RLU&+M2$Y>)BIK.E;0P(I+>0`+(TN?.L#DB#1Y&IB:_4GL%:,3.E!L$S"E-
-MV\SI*&57'%SH5;F<<E$J2 at 7!Q[QZ;Q/@41SV*)H(_J?F%N&>@'L()5Y+%P0?
-M7\%Y+?S!&]N!7V[>QM+HOAH at 44PR"6'D#W<%-%SQ2N;"0H)EAUVA'9ZJ]37V
-MA*[V(?B_,%((;E`2MT8YV`@`_````/P````"````10``^%/_``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R1!C:%94;!LW!<S3$QTRS0(N("0(`````P```-PA``#`
-M%F8Y\AL0<]K]S^R#1]D(/?BA7!\"_:9_POY2O9&/0H49%F"K`1/NH)#;E/7*
-M['VM&C+W,KW1K3I<5 at 7IIR=3D'F-"WKP,B\FNIE+5Y69PM?]U/_..&(X2SPE2'
-MY*PD69UP:Y'-R,,W]R%3`2W0^*%:];X#C&JDLTV\GUU,+ZA/;4\MOZ`"F1^S
-MDE19-W6>NZY"U1__"0AZ7Q+FFN4?[$MQF!\"3YNE\M:NRIEKB/PH^=3D\,+K=3DN
-MR)@C<0^>'$)0$K=3D&9N@(`&P```!L`````@```$4``&A4````0!$``,"H`0'`
-MJ`$"`?0!]`!4!CD08VA65&P;-P7,TQ,=3D,LT"+B`D(`````(```!,*0``,*-O
-M[_/^IXKXPDF+"+M$W@?JON51B]W`M%F7?G"D@@0OKW*4V_:QPM#>``VZ4!*W
-M1M($"0!L````;`````(```!%``!H5`$``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M$&-H5E1L&S<%S-,3'3+-`BX@)"`````#````3"D``##F88*XR>K-F33^"LFY
-M^QD(#"0#P*T"<'_'VC-J5Z\;T-2=3D3U.0C1:<?Y`][E`2MT9[(`D`/`$``#P!
-M```"````10`!.%0"``!`$0``P*@!`<"H`0(!]`'T`20'"1!C:%94;!LW!<S3
-M$QTRS0(N("0(````!````1PA``$`<P``.W7MM8Z6M?IX)7[#OP)Q.$V)&0O4
-M4B\^F_?]$',UT7U'.)\>><=3D`JR_V_NV=3DOWKKE2QG&(DCZ<\2B3SRJW:H3D"P
-M&1B=3DF%?LQ_MR'PV?>2Y&!W^KA0:[8.J`_TK&:0N7UR?V--9_)>5+H[G\_16B
-MMM[[<K((=3D'OUQ=3DOY'EOW*N_!<`<6A]2>7#=3DP0-R/5;3R<_J6;(P41NK9H9CG
-M$6I at +\!8Z7^RHX<JL:U*^U?MGX at 95)S0M33D[.,::30,RJ,_:985)>(E]FN`
-M^%"1A9YY3]3CED'-NN#F68K=3D^5:3V'-X#'@B at 2KGXP*JW)*ZFZ4RKBVRE$Y/
-M2?[!4!*W1G\L"0`<`0``'`$```(```!%``$85`,``$`1``#`J`$!P*@!`@'T
-M`?0!!`?I$&-H5E1L&S<%S-,3'3+-`BX@)`@````%````_"$``."VHP944<(8
-M%VI08$=3D]AZ+ZA1^,,>QC/X9&SF8_X%WO,I?;6]-M0@)3U<$A=3D"`N787/8. at V
-M`$ZC$*Y>X;94C+48%03^=3DX7-NX]$69[<<N(:-O\SP$];1F)R$(\W9T`=3D4;&^
-MA)1;O3CY-0YVL83I5^\YR3JD5!1:W]G'E$)LDFQ#6AO#R]M+GNY(EGQ6/BMZ
-M^AB)&=3DS]P3LJ,6(1X:X+/\:#(F;R)C0MXJ&-OH'@[@/J(F1I31+JPW1 at UZA3
-M<Y&_&S,5F\74\O_[1;7L#?(KF_76=3D77M.W\!0NBYBPOE4!*W1DL\"0#L````
-M[`````(```!%``#H5`0``$`1``#`J`$!P*@!`@'T`?0`U`:Y$&-H5E1L&S<%
-MS-,3'3+-`BX@)"`````$````S"$``+#;VP0\]DJMQ:K5:*I)2=3D'D6A`.N4I:
-MK$`AM#0,0A#<2TAC-?MU"$K&%RX3K?@T51H:"-8.5)>W+#')H0'0&'B&"RE-
-M2@;L5R)#_(E2NI+;N$Y+S92M5QZP(8WAWO(/%<<'NWXD!6"A`1%I.KKX2T%A
-MGYK2]-5P/2^0+.UKAMI>[Y(!X[7+\4DD09`?B*JJ_ELQZD2L.L#[QA:419N5
-M\J1HA7EUMCHZA3IF\1/!4!*W1 at 1@"0#L````[`````(```!%``#H5`4``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y$&-H5E1L&S<%S-,3'3+-`BX@)"`````%````
-MS"$``+#>/JH.^0&]5:BW3O_U),^-AQU0/BH:%(E/^[9!KRJ6D9I9-=3DF(PC'.
-M]%P*M5J,)A5/I$83<ZHMMR891;GB[5;,VA!;8XWAR=3D+7SN'GE%S7H=3DG;\\0M
-MJ.LQE.!P59EGW^:[_UIT(0_8O8',6=3D0FXL at UQ#Z2O*5242[R@]OLL4&UJS#J
-MX-'Z?/^?!?:8\@[3!KMK6UH_87A992K3/K at 5]$C-`9*:2"R9$#M6_VWM4!*W
-M1E9]"0`\`0``/`$```(```!%``$X5`<``$`1``#`J`$!P*@!`@'T`?0!)`<)
-M$&-H5E1L&S<%S-,3'3+-`BX@)`@````&```!'"$``0`7OKL:E`'"S(A1/^^Q
-M]XSOSY.4O[V^T-T3,,(<K^&8`V.C/@B?;_`J=3DJQ+ECLF]<H3_4.$=3D;)G/K*R
-MT8\V?1[W^FW-#]Q193`%?AH>B4^V[8F-_<3DOP-I^"[email protected]"T$?=3DE?=3D.>I
-MWCH?H[VIYDA7:!QITLDNUF[/ABEY%LD1H[HY%%QNR+5)@2GUR36E.'D[$>BF
-M(K3%F[N-A_J'E3'VN]KL(^*"RC$YA9!JE'AS]2!Z[1YA^K9K[9C/FS\>R`16
-M%KN;%/07=3D+1$M4R),8W:A"?B@(;4W396K+["V#X7<G]L$JZ6GZL\HV*.=3D@&W
-M2';P9H]LN.4P;FUZ_=3DA0$K=3D&2HD)`!P!```<`0```@```$4``1A4"```0!$`
-M`,"H`0'`J`$"`?0!]`$$!^D08VA65&P;-P7,TQ,=3D,LT"+B`D"`````<```#\
-M(0``X)4YIV.P)$7&M<]Z+2C:5 at 0%<_Y"*?4&80SS8V#?O\;AD>=3DDVSS;[Q``
-M.$$<>9EV=3DX9B/EGJHZ"1?*G3BQ3D;M_Q;,K\2I(<KK"ZLVH=3DV8T#V#<\&Z_%
-M\J!&&YG1N88A at K,!>@4J,_-.DF8.FSLST&7#3HL%IF8!N5K63_9F[1H\:8,2
-MDI-V5*1WHA]8\V:5TD"G9=3D=3DTFG[(9S.>D*5$$2N>7XI at LXR'NVK;1E=3D,10TZ
-M#EE$9R0D;><Z0(^HAJ)]-CS23^NY$M]7ZH/HCC'/]T:)R:SQ+<8+,%KQP310
-M$K=3D&>)H)`.P```#L`````@```$4``.A4"@``0!$``,"H`0'`J`$"`?0!]`#4
-M!KD08VA65&P;-P7,TQ,=3D,LT"+B`D(`````8```#,(0``L'"=3DGF^QV*T at L#H\
-M<L!@@QK25^M"'J-U#I_3C?@*=3DP8E)SFUVF33::&2\ZK0).6P6RH&0)L"V85X
-M'SI:GT8EL]*60.*#PT%DA(DB0=3D=3D:<,]PNC\>RLSZ3H6QSCOT8;>:LH?ZP.H(
-M:]QZ781/ZII#WWQ^E3#T5M2D>\WR_BPUC',Y@<I]N`,`QS=3DQKAF-9-W^0#>3
-M$^\7NI]:A$9#A2\`E\LL&D]2#4S$0N^RH(-0$K=3D&N+T)`.P```#L`````@``
-M`$4``.A4"P``0!$``,"H`0'`J`$"`?0!]`#4!KD08VA65&P;-P7,TQ,=3D,LT"
-M+B`D(`````<```#,(0``L,R-#XKN,7A9OE3`I.0-%MOH07"7 at PL&"?P3&^/`
-M\%+J at 67\:KYFY6;V"L#3EV,A:J*-,=3D3FCJFO9CQT'*,P;"$;IHO?5]^E9,.C
-MOMQV=3DL3T!9JCRJ\(7LS-8SI<PX.6KG(Q=3D'=3DNF(K+V9SV-+%FG?$Q-0?R3/>C
-MH_!H-4[6:TDJ)5PA6BXZZF=3DUZ>/OBV5GDQD72W"[34A^2G"4N20[K0I<!6#G
-M%]I2XFP3W)I0$K=3D&R^,)`(P!``",`0```@```$4``8A4#0``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UD08VA65&P;-P7,TQ,=3D,LT"+B`D"`````@```%L(0`!4$9[
-MY0-7WIEG*M:6,NA;2?DLV>B+#&!*^N(@&>=3DA\;;S?O'15=3DL3S'RC5AR+'1['
-MC?=3D97NU%!JEY[[(4[L%\\D'E+GAA96(D!#]M0`NM;UM^9<<O,Z%R<@Z`K-W!
-M,SZ`>A6KZ!TMG6^V^J@[5>AFW0:-ETU*DL/.#PB]?[N92`=3D!,GA_#0Y29>/"
-MMT"NIJ#&$AC7U^=3D!>;1J%7QH9N at V:@Q=3D\-L.;KX<3_GEYDAD^VS79=3DA:PEPK
-M[4O86-J9F*A#IG-SNY?/NB<0SF>_=3DN6@(#V(1=3DUIL$$\9A+!5P#0PTG6X3A;
-M_M6,<R?_4)7C;2#X01,9PC78A/&)HG.6G=3D1%^[(?%1]*P,[VV\V/"_AW>YD[
-M$=3DN"+?+B at S=3D,61++>AT("]4E;:+F\"73TE)9,4BQBW$:HSC05]2$=3D#<0,Y<3
-M,$D&)H;2KHH>E(7^0^7N4!*W1I48"@!<`0``7`$```(```!%``%85`X``$`1
-M``#`J`$!P*@!`@'T`?0!1`<I$&-H5E1L&S<%S-,3'3+-`BX@)"`````(```!
-M/"$``2"Q>"+T'EGV-RC(0F)S.=3DLX4PDS/SSRG67)OE:,#P%]Q4Y<8I*[9TLL
-MU=3D:7,\=3D>;G6V0+NZ]CI:](C6=3DX@;"HT&V5X)F+[0=3DS(,,PR.Z96<1F__VC$=3D
-M)<]65)G#,B;`[VJ(]B^Y)-1 at UV/-,J^;(=3D$0ZE;Z0;$*`)Z]-43Y+]3-9C7`
-MZ][]N&&9[K7F;CY8D+&A@<M<:'UTOBCM`-ONQ)A%.Z$A)+7+DCZHB"'_AV+E
-MV_TR2G^MP"V<QIQ9;+E?K0+)[RJC0O?53`/H^#^S_"2=3DIE12<3D>B]ZE at -O?
-M_+[$(K#1\&[(/7K1X]X^2/DF'-W(:LX1N][_XET<`I)LBV-=3D=3DG^&W4),,G\5
-M%ZDO:YB- at P16(FKWB[W;@_V2T%`2MT9*/PH`?````'P````"````10``>%0/
-M``!`$0``P*@!`<"H`0(!]`'T`&0&2;H%WZ#\P:LD&S!+J)5!*;\N("4(````
-M`````%PJ``!`1&_Q5,F6#\4,05(PQ at Q/8,0+3=3DAT["5QIM^S#KMA7R!/N%[A
-MK3X]ZSFZBSU:Y:D:S;N[W.Q&N(B9K$J(4!*W1H=3D*"@!L````;`````(```!%
-M``!H5!```$`1``#`J`$!P*@!`@'T`?0`5`8YN at 7?H/S!JR0;,$NHE4$IORX@
-M)2``````````3````##::O#YZA:YZ-Y*9=3D>(Z<_2'9$*UHZ518KF#F2SP#(%
-M9U at 7"2[>;4OKF_BKKE`2MT9]60H`;````&P````"````10``:%01``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.;H%WZ#\P:LD&S!+J)5!*;\N("4(`````0```$PJ
-M```P7A/%F"@G,<E],!(3/-KML34-2'0$@`S5091R<3Z[?<Z\&`_#D*1>!8JC
-MO*I0$K=3D&!F@*`&P```!L`````@```$4``&A4$P``0!$``,"H`0'`J`$"`?0!
-M]`!4!CFZ!=3D^@_,&K)!LP2ZB502F_+B`E(`````$```!,````,"QT9_&8`,3^
-MNG^[2EZNT#.#/MANL_ at -J;:W$>MHY/C&;L3WA]ZM=3DDK-IKCS4!*W1@=3DF"P"8
-M`0``F`$```(```!%``&45!<``$`1``#`J`$!P*@!`@'T`?0!@`=3DEA at 9Y2+,X
-M+D0``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``OR'&J+SZ]XT#@J=3D>S^9$.>%R!G_PM,R42!1=3D_*,'
-MI9=3DJR&\CO9BWYPOQP`HG\17ZL46T30S:?7\KP6/H@:KST2$#(D&*"`-8PJ3_
-M;'",21*LYX9%W`6G<4#/<Z)5X>^,[NO`32"H_LW5H"Z0*$3C\>"U!#T.A![4
-MJ;V[WRF at P#TI```D]!JKFV,C+`BAU,TKV=3D1=3D9+DR6AC6C;$\"-@*"X&K at GXI
-M```<``!`!!7?H()W01BQTE]+'[ILY at 4/!!@F````'```0`6K'Q`I]40=3DF"CG
-M4171`-"3([^N5E`2MT8U=3D0L`7````%P````"````10``6%08``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*88&>4BS."Y$```````````I("(@`````````#P````@
-M``!`!@````$?>([)S0,7[2`'EH&LU at O<A^\@Y5`2MT;RA`L`N`$``+@!```"
-M````10`!M%09``!`$0``P*@!`<"H`0(!]`'T`:`'A88&>4BS."Y$````````
-M```I("((`````````9 at A```@``!`!@````$?>([)S0,7[2`'EH&LU at O<A^\@
-MY2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``OR'&J+SZ
-M]XT#@J=3D>S^9$.>%R!G_PM,R42!1=3D_*,'I9=3DJR&\CO9BWYPOQP`HG\17ZL46T
-M30S:?7\KP6/H@:KST2$#(D&*"`-8PJ3_;'",21*LYX9%W`6G<4#/<Z)5X>^,
-M[NO`32"H_LW5H"Z0*$3C\>"U!#T.A![4J;V[WRF at P#TI```D]!JKFV,C+`BA
-MU,TKV=3D1=3D9+DR6AC6C;$\"-@*"X&K at GXI```<``!`!!7?H()W01BQTE]+'[IL
-MY at 4/!!@F````'```0`6K'Q`I]40=3DF"CG4171`-"3([^N5E`2MT8_J0L`4`$`
-M`%`!```"````10`!3%0:``!`$0``P*@!`<"H`0(!]`'T`3@''88&>4BS."Y$
-M`L:;L#G:8:PA("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``#*C=3D$AR#^ZZFDQJFUY:
-MEU>U4E.'HJ0>C at I>$I+C[YEV/&\B0K_X<BY?`,%8#O(^H'9YBEIM(8B;)D84
-MM&AN`TF./#[$/1*I8Z[DRS]3X3]/8]6;J*Y4+&DR%GU)K>6HJH4]/C$^0N(4
-MW!H6S"*?7#E+UO86X.B=3DPKS<\R:*N$P5*0``)-X^-XUA>/\J9<:J$1#-E at ZP
-MP@:,KZQLN2O%E/P%,ZG?*0``'```0`2Q-E]<S4ZV;^__E%-63RI_1I-_%```
-M`!P``$`%KPL"6I8(%">N3>]-#&2*T4O]2RI0$K=3D&)]8+``P!```,`0```@``
-M`$4``0A4&P``0!$``,"H`0'`J`$"`?0!]`#T!]F&!GE(LS at N1`+&F[`YVF&L
-M+B`C"`````$```#L(P``T/_R9R+3?435`HA(UIA=3D_R1\V at 8<EK(LT_JGSYB0
-MDV%<*K)JD[_^+OI"27#+\)*\G$#E,I`!CZZ*J_8QW=3DW#UYF_U-9QCY'\W%D%
-MI"O;X<IVUO at MKI4J1ZQDH\EYZN at 2?WM(L`G);^/9F>'%47!"DID)9Y*5ZZ0(
-M4!:#738)!BEQL<5H\K>([36B05T$1YPU935DV<X`6!;"4U*$R<C_N%"75=3DPF
-M at 0[^JLTP:P[X%%ZZ@";`+I(0N+1LA-M+(7A>I7PGR/%MY%!OV'B165`2MT;2
-M[PL`O````+P````"````10``N%0<``!`$0``P*@!`<"H`0(!]`'T`*0&B88&
-M>4BS."Y$`L:;L#G:8:PN(",@`````0```)PD``"`M4*E;P(0<F[/:JNL#1;O
-M0/3Z,^1Z2>0@=3DAL at 7W)S]X&K[!0?&TB'K;A1UES&88:%GP[_5,TC7_W%E];/
-M_>Y98*'77:XM1-,.)E@;K//#V]-I"F>LY::K at 4?$4<K at XKQXV:C5SL%Q"35(
-M%K(XJJ;&:?^],@'T_&6.ALO?/5`2MT8W#PP`'`$``!P!```"````10`!&%0=3D
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z88&>4BS."Y$`L:;L#G:8:PN("0(````
-M`@```/PA``#@EA%I^\:!`?&1JFAL/@"<3`I`U700!SYK*H457&<AT6CAY#I*
-M9,#C1V$16PX>0H*%%4@:CQYQ"V@/H(SUMG?C<,Z'P;Q at 1\GXE_-6#,I&$YDN
-M?+:(,"1.N]"'IV$N-%25-`>JTC3$\V^Q_1AJ.]ZXTEL0^_"60-O=3D'"!$7IY"
-MGT:;+V5H2)3`J>8K#"1S"'Q)0QP=3DU9)B;^)*.BS/B'=3D-Y5#1L:H.K92QYOUR
-M8[)SZR,(CD<E$TZYG!J at MK0K(PF"07AHC&22DVL$A=3DWL@$)+.K*G.+KB*07\
-M^,G/85`2MT:O&@P`_````/P````"````10``^%0>``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R88&>4BS."Y$`L:;L#G:8:PN("0(`````P```-PA``#`\"V<12S@
-M`E`F(!0+G+ at 7;62%*OUNAP3-</(T$1*9\;DN!UXV5F)4#"=3DY&J5+M0:[;D9>
-M'S[HAL.\L^^Z(A":[!F?1"UX>>V&NQP>X\YRQO(26XU=3D[W-#\IPWRV^KKW%C
-MDSE02J,3K.OU)3EA+?W2-'<,EOD]4L63S=3D.#&JXA.RXH85!02UCPP7S9)P8]
-M(,E(MN4JXK#<[_L/5J`(Z[-H]."!HUA:C1O3XR$X#3*03?]>H>LZQKQ!A=3D=3D@
-M\G=3D0$K=3D&9B4,`&P```!L`````@```$4``&A4'P``0!$``,"H`0'`J`$"`?0!
-M]`!4!CF&!GE(LS at N1`+&F[`YVF&L+B`D(`````(```!,*0``,&<WJ,X$))?W
-M5><Y0-J.`BZ34JG)X)T0:H,KW3O?&HP+FU&E-"Q.D28B5KG at 4!*W1H=3D`#`!L
-M````;`````(```!%``!H5"```$`1``#`J`$!P*@!`@'T`?0`5`8YA at 9Y2+,X
-M+D0"QINP.=3DIAK"X@)"`````#````3"D``#"`36G#*J-W#SR*SN5UHA6TU><^
-M%C9[A6F*($-GP']^H0,E;,!JH;;/A2%F3E`2MT9X6PP`/`$``#P!```"````
-M10`!.%0A``!`$0``P*@!`<"H`0(!]`'T`20'"88&>4BS."Y$`L:;L#G:8:PN
-M("0(````!````1PA``$``6&MP1'V]817B3>`"&M"'-E(!*"V.8&!W(O8F_R>
-M"6KJOTB42X!I$')Z<!AX!@>6_P!07(`1X?]1)`Z:/6`8\`8MW(:K:_3RW1,O
-M$2P+E^40:<5]UGVX/]IYZ#HZ+:)$Y(CHRXW at B9"S.2]@)Z'+,AN/OWJB\"M+
-MBKL*LZO#U=3DXMUK%T*>5K%P<WD,O5O:!^!)N#BM#;\MGTU1(>IO%J0#AO5Y$#
-M("-"MI2_&SI<^L2'M-5-/K"0!3,)\E@&PM(.7N6M*6GH[$,DTDE8[ZTFYV&)
-M/@!>_Y at 6;8&&%SMQJW%$[I,*IS4_<_ZD,+\EJNM1V&`LK!P&[;Q$VS\D4!*W
-M1J=3DG#``<`0``'`$```(```!%``$85"(``$`1``#`J`$!P*@!`@'T`?0!!`?I
-MA at 9Y2+,X+D0"QINP.=3DIAK"X@)`@````%````_"$``.`^LT`?8($;_Z^\+<WP
-M#2,>82[O`$,$1T3^8A;H/TH`\Z,PLJJ#%5[D+1$VMP^NZJQWH.R0O9PAQB^^
-M<""KQG-,=3DJ`8&U)-V- at J76X'"_Y/<S^R`@7/5,RK+N.OQ2CZ2.?<YD^10KH<
-M5AB51]#6:,K.AE@[-EY[U&[?7]-H3U)%EBDR?L:RR`@PYW4NZ?'U,D!;IDW:
-M3$\(S^TE*";K[W^IDMQA;J!B(M<<[*4YW\"9=3DG'E8-\41!3:1'_)U5CNRB*>
-M.9=3DH+S*@Q!8L.0'&`8ZC)2\FW/+,CDQ`Q]P&4!*W1CEW#`#L````[`````(`
-M``!%``#H5",``$`1``#`J`$!P*@!`@'T`?0`U`:YA at 9Y2+,X+D0"QINP.=3DIA
-MK"X@)"`````$````S"$``+"TK\I<^^&H+A1K@$`++W//>RU]ZIR9]NO[IZWR
-M1/1>QISG at 20C70BMRWV\2>.V1/^!>JUYG"3IF\&S>_2(,^94?R&'?-*$M`SS
-MQ<*`VCH-T;\=3D+$#U-XKS:#':H.:T%*6<&;`9&M[M30N"II](3YBU"6KFP(JW
-M<\6*M]8+F+/(=3D)AHLC`=3DGA-T!,]3W at 8,U\W=3D[=3DNR,8X"5015\Z80RUME4?\3
-M:R4$/3#I?-X_4!*W1L6:#`#L````[`````(```!%``#H5"0``$`1``#`J`$!
-MP*@!`@'T`?0`U`:YA at 9Y2+,X+D0"QINP.=3DIAK"X@)"`````%````S"$``+"#
-ME*"B\DM94O$DHOZ)&24B(68X)ZDK8;UQ(WR,B*+EH>1QC/:3MAS)N_N*%]=3DT
-M4JU---FKAZO_DY:^ER*,ULJ>+8X.YB-#`YE$=3D!3_%:U4,'-6L[JTTP*C(JXN
-M&)_2L`GKONG/.X<R;J1-L,`1ZZ`T at .<?L"E1S'OQ#A4Q5YKRJB4E?"S%5VN2
-MUGU'6_H].:G#]\8J%G0=3DGFR%,5PS`,EUOF,:7#O.J<J(*"BI4!*W1NFW#``\
-M`0``/`$```(```!%``$X5"4``$`1``#`J`$!P*@!`@'T`?0!)`<)A at 9Y2+,X
-M+D0"QINP.=3DIAK"X@)`@````&```!'"$``0"7P*$`S&>[]C/_G6/"<2JTMZS7
-M^SEE*?O at _4502T>&%V'@+#Y[. at AT:@*YL+UK]6FK<#7ZXT>^C,_IYL(+K03Q
-MTSR/?V1H?W*Y&2<6+J[OY']6N+2\273B,L'!JGSYT0>+Y$@^2?7V+?3E3`"L
-MFGM*JB#HM)!W-<N\<L?0&*W5>@W&G\0H/88_["$G)=3DVK+O#<>P:%A9I^5]\]
-M?X\3:I.QQFAZB6R/7I6DA-QM%9QA7YJ82(<`LG+\]2E2;3X,1O>C(QKC4DQ*
-M.B:-XT+P7\*A+LH&]Y.I75O&(JB^>W6`I&=3D%8IK&J#I$L<-O/W6J.]U:X&S;
-M:EF*DKV)O0M0$K=3D&4,,,`!P!```<`0```@```$4``1A4)@``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^F&!GE(LS at N1`+&F[`YVF&L+B`D"`````<```#\(0``X!/M
-M`%/BI]YR3D,2TNW6Y(>W`EYO(./&2"?S4!!L`%Z,=3D,_&0.1,4WQ';[UU%A+V
-M$V>^8EQTP_9RZ/4I_<<N7E'SDW!AYS!A'82K`1VI`U57,>N6_P/?F`LKO2JI
-M<O%&O1A?9+3=3D"^,B;H6D9#TN*$8SQ:%-"B2R_NR>)'=3DU1>L6V3O%!3VZ8%(#
-M!UU;<<R3<U+6$)\A_ZT)(42ZN)X>GVX4^V=3D',0 at SB/A^;`0 at UU^=3D7=3D($GO*+
-M]:+QWWYE!QYT"#NS_5IH'O/]3B[<4-'0ZB,O at 5YM"@YP,-B-7790$K=3D&'M,,
-M`.P```#L`````@```$4``.A4)P``0!$``,"H`0'`J`$"`?0!]`#4!KF&!GE(
-MLS at N1`+&F[`YVF&L+B`D(`````8```#,(0``L!N&$20Z6[<GGGMN?]K^;61N
-ML$)7$].BD/B[Q+X416',,.D>_M04DRR8@]#=3D/"JH#'!JM%L)Y9[B=3DTK2%9-J
-M`JH?:W0+"\Q9W#GR=3DW;WX?HW%J5*%QD]B9+SFYBOVY30"D=3D#B:AM4+%\74\W
-M.$,.,"D4[D`@)E5CV*.?+H*,<6G:)P`U;EX!@&GO%K3^2,;HO33/(/SOVC:Q
-MC%N&W8F#7SD`:I_/2L-]D/98ND90$K=3D&I/4,`.P```#L`````@```$4``.A4
-M*```0!$``,"H`0'`J`$"`?0!]`#4!KF&!GE(LS at N1`+&F[`YVF&L+B`D(```
-M``<```#,(0``L(*^#/D6=3DART:[(TZTW764!(OY)%?^S/T4ZL!TB(9H3K5HZX
-M&ETN8.'Y9]/<&Y3[$V?-:E""=3D,O#/-QSN31!GHSDZ_6920F//])C;3 at AEJX,
-M]!IW9#M;LN@]Y=3DCT,RM*^=3DN`?KQ8!)-2N\,E\>M at R1AYKKGZ`"?%4R<ULHNK
-M!=3D_WH6[&1&!O;YG>AT`M_M\[L3#RPK%XAIPD#;GM\(/RA'Z'^P*.ZS_LUJKE
-MZ3E0$K=3D&CAL-`(P!``",`0```@```$4``8A4*0``0!$``,"H`0'`J`$"`?0!
-M]`%T!UF&!GE(LS at N1`+&F[`YVF&L+B`D"`````@```%L(0`!4+_`)B_+SGW9
-MV^!ZG%M5<;&#U@@>:@?E9D''*AU':,HQ!G,D-##$/=3D,57[`[^KO2WJ'/]/_/
-M.02"RF'QT-(4?+64T$[B+`WM(+.W9]$G^7S]BWT-*?]`E[P%<'IM.IH$7A!"
-M!@(!ZVA.H3$M7`0$-$Y\KP"11STX:8V]V7\VPW&ABZ#E2532;=3D_B__"ZK(]?
-MH]TI&J!Z>X39KX:"G+6U8=3DN1@)SKS'*0IR_,BP#0S"FV'58U?\#_:YN0/-?#
-M$XAD+]&0*.E+^+=3D#3ONC/-O at L^W6W9D*KU&5%0>H%9_SB`E_9YJP&71\-\2>
-M[E`M#0SNV$-ZQ8<X*\1(-H(#%M1':L8D,:`"'`/3V,*025/K^WB]X3O'$0?%
-M\0)1E5]?"ZO at .`;A0*^^&=3DOIHDSK1F)7]'IXWU9;W(0!!8SS at CRBU>55<29[
-MH!TVRJHX`1 at Y4!*W1BE0#0!<`0``7`$```(```!%``%85"H``$`1``#`J`$!
-MP*@!`@'T`?0!1`<IA at 9Y2+,X+D0"QINP.=3DIAK"X@)"`````(```!/"$``2!@
-M/.4BNH5`V1]GYCAK4BF8]XH6>TUEKHF^MLHK[IK7OU]=3DJTWOMR1J]7]%I-7,
-MR>XL--B:T=3DC!@IS?2:2T'XP=3DAN!2CJN-GYE,)75AV?SKC_Z-SU]S8!@R$]:_
-M:X<!C]>!)T4)G7PHR#8J.72$E,O!D&B*(;YO!Y'Q6+\+8"F!<AX$62'(48DV
-MT/K8?4QT:7QM[9,$QS7T at 6N9%HFEZN;O+6.41- at YN7^@9J`</NK_:6[$72%-
-M-KD')KUX3ULO>50?T7>;7#RBKW=3D*FW0?WN^D83F;6HHYQRDY2`V%2[RQ>ZVG
-M(HT\NLI2NL4RRC%,?D2*(35)A at I=3D7DC^,'ES<V,KEO8QWIJ].)YJ%P2N=3D0A,
-M@")H=3D6<GMC8F0AETI5`2MT8>>`T`?````'P````"````10``>%0K``!`$0``
-MP*@!`<"H`0(!]`'T`&0&2>V7H`\JPLZC(B13I*PNOQ4N("4(`````````%PJ
-M``!`U)Q;!P]F&SO+LS>].[S at X2I_J1I3?4?Z]C>T'M=3DM6[C&+84FVG1XMY at U
-MA14.8B)D(_:2]YSL7_V_[`3L4!*W1G^##0!L````;`````(```!%``!H5"P`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y[9>@#RK"SJ,B)%.DK"Z_%2X@)2``````
-M````3````#`&,$UP[G)T*4/AY=3D)MQ4+:J)"H^%<UBEOD+<W4.2]7U&I@,T5%
-M\<4AI($\SE`2MT8%D at T`;````&P````"````10``:%0M``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.>V7H`\JPLZC(B13I*PNOQ4N("4(`````0```$PJ```P$-%S
-M>+-7<Z(C.!M:L./'K$SG3,+U at K78!H6HO"ZJ(-1>7(M)$O51DS)P\O%0$K=3D&
-M\)\-`&P```!L`````@```$4``&A4+@``0!$``,"H`0'`J`$"`?0!]`!4!CGM
-MEZ`/*L+.HR(D4Z2L+K\5+B`E(`````$```!,````,,E!;A:'WN&9O+,/+T?D
-ME<2YB8K>Z$)]B3ID=3DU9,`>=3D<CATN>-`N-K^D;L(94!*W1IZ?#@"8`0``F`$`
-M``(```!%``&45#4``$`1``#`J`$!P*@!`@'T`?0!@`=3DE&[#;@&5GW7,`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``0`4VBPKZ8Q=3DHW%?VQ:7]H:5C1&K9-B18'-LE5ZMU-;?W\=3D at U
-M!I(YIXT5W3"XO8$F+.Y"#0T3+;2\GQ,_:?=3D6H]@[(_UW>+KV7S3*_."^GXX<
-M02IL1&GUWJ`TA'QENY,N?G:*_I1FHG#B)$!739\XBPQI^@.4QA6`3=3DD`90[;
-M*Q`I```D2J`]R(:2PU8=3D6P]:KL[L24K7.?2U,=3D;WP"KT>R)[N5LI```<``!`
-M!,+.D at 39#1BN7RX*]8R1:EU972Q5````'```0`6'@/*^7T%M3RYS;%':K7#'
-MB-Q2B%`2MT:)K at X`7````%P````"````10``6%0V``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*1NPVX!E9]US```````````I("(@`````````#P````@``!`!@``
-M``%\Q;:]&@A"!P)$]LSI0*O6'`U+^5`2MT;-O at X`N`$``+@!```"````10`!
-MM%0W``!`$0``P*@!`<"H`0(!]`'T`:`'A1NPVX!E9]US```````````I("((
-M`````````9 at A```@``!`!@````%\Q;:]&@A"!P)$]LSI0*O6'`U+^2(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``0`4VBPKZ8Q=3DHW%?V
-MQ:7]H:5C1&K9-B18'-LE5ZMU-;?W\=3D at U!I(YIXT5W3"XO8$F+.Y"#0T3+;2\
-MGQ,_:?=3D6H]@[(_UW>+KV7S3*_."^GXX<02IL1&GUWJ`TA'QENY,N?G:*_I1F
-MHG#B)$!739\XBPQI^@.4QA6`3=3DD`90[;*Q`I```D2J`]R(:2PU8=3D6P]:KL[L
-M24K7.?2U,=3D;WP"KT>R)[N5LI```<``!`!,+.D at 39#1BN7RX*]8R1:EU972Q5
-M````'```0`6'@/*^7T%M3RYS;%':K7#'B-Q2B%`2MT:1X at X`4`$``%`!```"
-M````10`!3%0X``!`$0``P*@!`<"H`0(!]`'T`3@''1NPVX!E9]USJNU^+ON)
-MZI8A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``.<J([?SU"Z#3/'6LQDKWD5PQCXP
-MS`"YKA'HQ82#_C%9=3DV:P]*#>;'^B!U+0P3?, at A/P2KJC:WB\7<N\)"1'S%;.
-MLUP.77'+:!1M[ITA.J+6]$Y#K#;>%!50=3DC3Y!K,XW<)6M'J5]X>$-3M"MM9M
-M;4\^*#0A"&^AU">KV$2S:TL:*0``),MQA/8U/+JVQ[3']<>J.<=3DY at 6\3A\0[
-M"WF?$C7<D,)'*0``'```0`01E-ZQJV%:];F"SULDV3>/](C5_@```!P``$`%
-MQZ;>,?V$[0LW)XJV+Q+\EBC9:V10$K=3D&'Q$/``P!```,`0```@```$4``0A4
-M.0``0!$``,"H`0'`J`$"`?0!]`#T!]D;L-N`96?=3D<ZKM?B[[B>J6+B`C"```
-M``$```#L(P``T`9:'6$47W$?;P1^7$T2?*=3DBA6''^5X"$1[GD\?S8;C_7^;[
-M+FI>E3OP0Y162;>WJPGY(U8 at Y=3DMT.!D@?RPO6$DD)(P(V]<#OY5MK0SU#H<Y
-MQ`M37?O*\X6#*,RXAID.%MM^:T[M-LC!&PPBK;9(4-]<^TK3X9KBH4P4KPFW
-M8HWO:$F3H%X#1ETC?$C2]5;90PMZ4(R"LZ+37.$[TQSR4O&?>N`\?(H4!S7T
-M?9I?7X)(92U=3DHQ4K^G&WJI^LO0D$V&L+`(1(, at 0DK)XY>E`2MT;[*0\`O```
-M`+P````"````10``N%0Z``!`$0``P*@!`<"H`0(!]`'T`*0&B1NPVX!E9]US
-MJNU^+ON)ZI8N(",@`````0```)PD``"`W95@:]$!.090(#OLU/LNC?,WMK`_
-M<7;WX+I<N-,"J"\\WWB=3D.*2PT+CS9#0?M@$MH;G;6.T1Q;R,#`N5V"E at 3>![
-M*C\73YKN:]VG.(IE^LV,L23%7MUB/F#&%:9Q@>1CBR8GCS_TIB"H%XG%ZY[B
-M$YCNCFSL$.2K1^YS!E$2MT97!P``'`$``!P!```"````10`!&%0[``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z1NPVX!E9]USJNU^+ON)ZI8N("0(`````@```/PA
-M``#@MZ`[';)R?J=3D<*/R+KCX5P*V7?1S.JG9>5(L&G at C6H'EE6[=3DGU'"N'&CC
-MP&FT1\ZZ77>0,[6%!`:95W:/39FTLY;;DPO6.S8:_H*+;S/7)]&E#8&I">N$
-M\9/-]N7N+PDK$\[$0=3D(,7F@@\[(7#^W7D=3DQK7$V'PRW4'E%*7I\J1(DX at W-_
-MQPERL()[/[D)Z0''8#:AR=3DF1@@C0^CM$W+Y,G"3JC9G`^JX2*Z!%%]Q8EEX9
-M#>MEU"I]KD2]@?09I7_CT'/_N&W*OY0W7=3D@\$`1Q^41`<;O;DP8J)Z9+,E$2
-MMT:2$@``_````/P````"````10``^%0\``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR1NPVX!E9]USJNU^+ON)ZI8N("0(`````P```-PA``#`K/$FG%)!K^0+(7NJ
-MV4[W]W=3D&W`8>(D+0_'.]IL!V21B1P^25U1*QHR=3D=3DD3HY=3D6E!0Q<G?P]:DA.K
-MNF>*OCF?'#H:&3<81,WB;$!K?323*F+ZPU**&0Y^EY0D`>C&7;`6*CIK0PIS
-MU01%[L%;U'9?_3;^(^F_NQMIIR2^?UO4X'Y6Z"UBO)V+U#=3D0V((&`<^&J45U
-M1E`C(J/S"UQ\"RA3QT+0!\76\["W=3D+#ACG0#4CHY$$+=3D['G.[#9.9K]1$K=3D&
-M41X``&P```!L`````@```$4``&A4/0``0!$``,"H`0'`J`$"`?0!]`!4!CD;
-ML-N`96?=3D<ZKM?B[[B>J6+B`D(`````(```!,*0``,,MIC7S4G5V8XM3!SIAW
-MBH=3DK1X:D!Z*WE4D4Q.,<1DTPV7PY?Q9M>NO\[:NV41*W1I<Y``!L````;```
-M``(```!%``!H5#X``$`1``#`J`$!P*@!`@'T`?0`5`8Y&[#;@&5GW7.J[7XN
-M^XGJEBX@)"`````#````3"D``##3)--V;(G%]G5R=3D$<*TMJFK17>+TU,ZFDL
-M=3D^!G0H<;SHD6UB at T_G511U*\JE$2MT8;50``/`$``#P!```"````10`!.%0_
-M``!`$0``P*@!`<"H`0(!]`'T`20'"1NPVX!E9]USJNU^+ON)ZI8N("0(````
-M!````1PA``$`"M*Y`!TM$L1<ZX)OT]T-E%9.1V`:ZBCB=3D)+@%S:J70Y,5YO`
-M2*'W`P':KS3P6%#/RR;<!-!+4!,CNR+5[O05\'IV9C#&1`O3U8-1`061O(,C
-MJ2UI[\[S(&9C.2%^(51TU'W7>!NU"IFX'!SHUYFHY[>74W>$1(:VY`)Y1726
-M^EJ,D^+HP(7+[L^LJU+2&GKOIC`7NMA1?E>UR[T=3D:$=3D(W.$_ET5+$/N]5Z;M
-M>0TX-I@*"?[[X)/B1JK0F''N],ER^LR7P;TIM%[^OS:5&906%XM#J8"-0>5>
-M]^MI'W:A)1]:VFWDUDRK<>(MI'QOO\QT$#+&V"=3DRUSL7CD>O41*W1K!@```<
-M`0``'`$```(```!%``$85$```$`1``#`J`$!P*@!`@'T`?0!!`?I&[#;@&5G
-MW7.J[7XN^XGJEBX@)`@````%````_"$``.!LG`*90+6NXA]+GM@(_BDGU,81
-M+V,"H2=3D6J5)*T*3H#.)NK*!23#:70MA/^V.E18KA#)?DN'M#EG"+4C!(@Q,-
-M<RF0P;]C9SYIQ^CSJ0Z;WQ!^+I1)@Q`J-'J>P9#,"9]48'"/3`::7*BBTEES
-MC')WI1=3D.J'6;4*UP,U9:61VD$YT,+7QI("D5\"\S;- at X?EY.F%U&O9XOC+[!
-M&4YH;EO7;JPQ at WT`YJ3Z`0`%G(<2R%(/8_[_YK<K3,8?B1/@0>YT<0Y"2K_<
-M0O(D,CY>B^<<"3Q1V'N5]]P)]+7S41*W1GMP``#L````[`````(```!%``#H
-M5$$``$`1``#`J`$!P*@!`@'T`?0`U`:Y&[#;@&5GW7.J[7XN^XGJEBX@)"``
-M```$````S"$``+#HGX?O9`8FY,5(0\&0:J9</8\ZNNAC?8L[!!;>!J;F/Q at _
-M<IN<R3X at R;[-9R%H.6182+!;((RCA,FU:X2=3D%VU!IED*<9#%C6Y*U)&6JF.;
-MA5_DWI#/RU0?$B?\Q2$8_3R51:E/IH-WK\FI\'OMP$!%.\$SS^PCU$C!4KTV
-MFZS at JSDWP!SX^V]AC^IU0R`EIN@^=3D5]PW"-9IV&4*;A5]$1D+1?GRL]Y-G7]
-M"IX<41*W1A>3``#L````[`````(```!%``#H5$(``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y&[#;@&5GW7.J[7XN^XGJEBX@)"`````%````S"$``+"U!:;E\JQ"
-MQJ6PPPM6D+R!XR]1?>$VG/V*6/*-)`EP%Z1#)>1(DK<0NA<FBY?=3DQAH!;N*P
-MTA/"#:=3DD3.6^_XU$R<5WVM,<2L$Q at H1_ELT=3D:_ at R9$EI=3DA4%.B/%=3D at 2#2"P=3D
-M&H-?81JSXS$D&C^6[;'5RU9QC22^MA\1$6GW7&E)SO at 5>CQ'3ZW/<6%EM$"U
-M40DN-8!O6.,4(7O]\G6M*_84YL55-"V=3D)3/>X"V;41*W1N&O```\`0``/`$`
-M``(```!%``$X5$,``$`1``#`J`$!P*@!`@'T`?0!)`<)&[#;@&5GW7.J[7XN
-M^XGJEBX@)`@````&```!'"$``0#N>"8U`_B=3DPP[?U['S?X:?,06-!DOOA-R"
-M>$=3D9UPM$9L_$K>&^P<=3D;P[MV#=3D+1 at S"Z]L]C at J-P1U&##DUL4M)KZ/O['I&D
-MYTR])8:[(*Z5R8F;AL@&@A$KGP6ZR*K&Q21500T at P/8^2]+Z at IDQ`H6(#6DA
-MQ3"U&[?HASN3WLE<%X%U;/Z(AZ7=3DK at A#5IT?G^"^\5L^J)*K_3'!'A&%J&RX
-M)#Z,9L@&K*S4?R=3DTJPW/I+JJ5O\SB<"TY3&\160X"I;>;5?]X_MI"BP9R]LK
-MN%[76>FUU''QK7&&4!8]<:>_??P447`:CY.Y[A at OE]<AY#U'@R>Z"1=3D79YF]
-MB/Y1$K=3D&3;P``!P!```<`0```@```$4``1A41```0!$``,"H`0'`J`$"`?0!
-M]`$$!^D;L-N`96?=3D<ZKM?B[[B>J6+B`D"`````<```#\(0``X,[DMY^?4+$D
-M-_]3)7PND]8I12Y0F'``Z4L]RC)]9=3DK%'[''3*KX^LEG\7-4]8&3YQ1^U+]7
-M=3DQM#;TBTE?GVV*MZ,$K"&Z\IU4)KBLO"$>Q+CW$1P&O=3D3F&;WQ-XY4!(^N(8
-M!IZ^*2%DPI3(*A37>]+;99-_)GK^32OK$P`/<=3D=3D;<"^L<?$Z5W*CKF1,66"[
-MFJXO[QSP>]X,CK9(27AH:N/$*C\R4.$3[8L8LM'L43]BZRJ\XW#U at GF20LD8
-M_TKE3]Z35=3DC6:-"N-X%QR8C;NM*#1#H1'Z:VAL4O<A%1$K=3D&D\P``.P```#L
-M`````@```$4``.A410``0!$``,"H`0'`J`$"`?0!]`#4!KD;L-N`96?=3D<ZKM
-M?B[[B>J6+B`D(`````8```#,(0``L'\U5AN&J[N%G;0 at YK<BVO'"'6G5.HWB
-MF3F59LN2)P)%,FXHX0"O%%'GL<$&F/JG<,%?N3L-%^9$5-TU?5!N)Z=3D'_EK?
-M<]V::RI'@1E=3D=3DZ at OPF2D@EVY]KGVLTJ`KW&3*?Q[<`>H0('[N2SM78P=3D51]4
-M]087!O+#.XUC:P(-R&F(!3'W/[:WUIC7-SA%W(\7[(3T;Y%^1P,3B^DL5:LW
-M-.HDZL`^)"@HRV&S;Z=3D1$K=3D&/>X``.P```#L`````@```$4``.A41@``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KD;L-N`96?=3D<ZKM?B[[B>J6+B`D(`````<```#,
-M(0``L$@\33.#M=3D$]%>_H8F-4E_ at JIJN"%VM"R1E'EUYI3UM(M&MLAXL.WU=3DU
-MBI$@JZ[[LVA59IH]8F*%S;42;0EX,!:W;GKZGV0QP)R-N']Z'34,,UN/UB;A
-M=3DR$UC!G(W3F2-Y1\GT6UHC_R.F6`ZAQEBV at 29,Z&)$=3D&,Z3@$4ZEYHK<&!U[
-M#, at SU:[-^`RP/K7.2@[46FXR0IC6_>Z5A4>D:@O^>5L`L_]D%31%A%E1$K=3D&
-M^Q@!`(P!``",`0```@```$4``8A41P``0!$``,"H`0'`J`$"`?0!]`%T!UD;
-ML-N`96?=3D<ZKM?B[[B>J6+B`D"`````@```%L(0`!4#"Z`<1<5Y]C)"N5R5MS
-M71(M]DW<"?F%']K]B?1F%A,F2ICY`[K&.^L;140:H.`9PV[YWV1!YMP"Q.^,
-M#SA=3DF@)[$JZ[;R#P2*!#0L+<`R44[O.>EW$*SL<DPTZ8)-+)L#.+32B<H9/Q
-MZ5N\*C]`VM?M_LRU5,8'9R'+%D:I'I%9T<.=3DGV%?%8[;?'4K+0#/I'NH8X*/
-M#B^1G%RP^U($X%#X)^0OOXP]5 at 71&=3DV\9[,9S;Y+Q#`[)*`#:+4R)H.3T2J#
-M\?*1F.$R[@T=3DFWJ+1F)PC2],RY%I9*:Q1^Q3Z+%0P6,E]+(>C at 90S?-9*`D'
-MCN*%&&39^=3D;_B_([JZZ+W>C6[A<E:C[^-VT97S at TA=3DBWF:F\K(X0D<$ZEIRY
-MR at 2IHI-!BF)N\/AB+3P_3(/XF-VY+ at FOI9VIC4>$`/=3D547:0'6F%:.`,4DFX
-M+'@`41*W1L)-`0!<`0``7`$```(```!%``%85$@``$`1``#`J`$!P*@!`@'T
-M`?0!1`<I&[#;@&5GW7.J[7XN^XGJEBX@)"`````(```!/"$``2!G"EY?_\7S
-ML8L]\:XJ4J6X`?B$A9Q#)Y10D^82?%WB<V`E)U6Q\]7$C;^($<-!\YQ'7<7/
-M1[M!%>5<M\41]_O_%\0R:GG3=3D%32S1F(`<AOI4'*FO,61C?O<RK4ZECQATBE
-M84I)[L#5M':C\$VAQ0<J%9]F^DO=3DJE(1!V%*W``@L9/NG!%)\Q<'=3DV87"%!K
-MFW18<\FZ,GG`UV!<\D8>CNWI\0Y'N>([MKUNLI6I*/'DD;7)F%M5W#6G^ZPI
-M"VRD&.S()8M!E/"`*1,Z7QM at 1DGSE4(:<YI?5I-`:4E8C*-J]$2`W-+3;JT8
-M,'9!O<X-_E\C<\I at PAH3G]C+S?:-?+EJ]5.S)GUBL8QFWO;LA=3D%T)=3D9L`PO*
-M<8OFELA^K%$2MT:?=3D`$`?````'P````"````10``>%1)``!`$0``P*@!`<"H
-M`0(!]`'T`&0&216GBU<-DJDN!J*I26BI*MDN("4(`````````%PJ``!`1G:'
-MIE=3D81P_KD[JP&*,7`DIBF>RQ)Z)WB>&#M!P:5T%,V1\'I[I(F\<-H<''FV1>
-MTC=3D-(L[#N":XO\I-41*W1D6``0!L````;`````(```!%``!H5$H``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y%:>+5PV2J2X&HJE):*DJV2X@)2``````````3```
-M`#`T`W^L[XUE6/:#DWH+QKV`(&"D!'Z!W13Q:=3DU-]6O_L$/YW4(&DD(7BI%Y
-M/E$2MT;8C@$`;````&P````"````10``:%1+``!`$0``P*@!`<"H`0(!]`'T
-M`%0&.16GBU<-DJDN!J*I26BI*MDN("4(`````0```$PJ```P#%1EN7^GO!(P
-MWFJI^P+?I2$F[N\T_$7`'`Z]Y;"D.]<A]EJ;Z-66+"$)FF51$K=3D&"YP!`&P`
-M``!L`````@```$4``&A43```0!$``,"H`0'`J`$"`?0!]`!4!CD5IXM7#9*I
-M+@:BJ4EHJ2K9+B`E(`````$```!,````,%;T('/EBU*=3D`JM,(>P>24&$H`UC
-MA!*6;`:\6SH5U2R2H>D4&C-GNBU?1Y=3DK41*W1J&9`@"8`0``F`$```(```!%
-M``&45%```$`1``#`J`$!P*@!`@'T`?0!@`=3DEQLJ^>&O""8(``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``,X3^AA+(*DP_K7Q(:W]+^'AN at 8/)LYE3%)C5B3%=3DR/X\[=3DJ13!(A3#[2
-ML#2/"-3QZS[.+ at 5(KHGC('_2HIW+G:/]&Q)OU,M4J=3DN, at Y_[KQTWRQ/7ASRD
-M#\:3CBRS5'S-HKJ\@K0%0\#KT0N7-MLFT&1T&-WY28L1]QRN1)DQ5[,I```D
-M^L33F!D]/L2T.L8`B197R!4/&;_IZRQS/4\T_1F+4\,I```<``!`!'6?[R2Z
-MC!Z.[@*L=3D85!ZO494$NH````'```0`5`I"*:3R+=3D at .E6YLPPUZZ@+"57IE$2
-MMT8MJ0(`7````%P````"````10``6%11``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*<;*OGAKP at F"```````````I("(@`````````#P````@``!`!@````%;DMQ@
-MJ?XT@##\*:9*X<X]`*$I$E$2MT:FN0(`N`$``+@!```"````10`!M%12``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A<;*OGAKP at F"```````````I("((````````
-M`9 at A```@``!`!@````%;DMQ at J?XT@##\*:9*X<X]`*$I$B(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``,X3^AA+(*DP_K7Q(:W]+^'AN
-M at 8/)LYE3%)C5B3%=3DR/X\[=3DJ13!(A3#[2L#2/"-3QZS[.+ at 5(KHGC('_2HIW+
-MG:/]&Q)OU,M4J=3DN, at Y_[KQTWRQ/7ASRD#\:3CBRS5'S-HKJ\@K0%0\#KT0N7
-M-MLFT&1T&-WY28L1]QRN1)DQ5[,I```D^L33F!D]/L2T.L8`B197R!4/&;_I
-MZRQS/4\T_1F+4\,I```<``!`!'6?[R2ZC!Z.[@*L=3D85!ZO494$NH````'```
-M0`5`I"*:3R+=3D at .E6YLPPUZZ@+"57IE$2MT;ZW0(`4`$``%`!```"````10`!
-M3%13``!`$0``P*@!`<"H`0(!]`'T`3@''<;*OGAKP at F"_>Q)=3DVD*, at PA("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``$`]F`R:4!NJ/>)'.->FNW;7)ZQCXWKEW:S_
-M0FSY?[!E%0ZX7,]>C6\_77#MI]L9,8"44Z?`ON!7&L;LO^YJ!;X at S+:)*1'Y
-M#"?E.]YR8]957\#J+]-$MPV3$@(/:G4T^,9I&!@\E-HHWQ97_>*%BLW$JF.$
-M20.#,S$4_7LPOSA$*0``)`V!F!WY]Y9K at .&3=3DJNY"?0=3DQ^8Y8^MQZ-8PU*VX
-M]TVJ*0``'```0`2"L(+):VUE\?=3D=3D23;%!Y,NNAL71P```!P``$`%.,47<KSQ
-MX1+:Q:ZJQF+03Y;A%2Q1$K=3D&]PH#``P!```,`0```@```$4``0A45```0!$`
-M`,"H`0'`J`$"`?0!]`#T!]G&RKYX:\()@OWL27=3DI"C(,+B`C"`````$```#L
-M(P``T)5O-ED'NB=3D*2:C'.S)N*#>5:Y/]HD[U#(:<53;T%H?-,6]D."023IM?
-M5N>OC7P]->7Y36"T5X',_D&S2L,E)D&;HRB1N\<I^-+L+;'*_X8`/0.AG*/$
-MNP>DA;KQRHRFNH;>Y__`GH1Z.V$:9SIXX^Q^0Z]Z<&?L^A"/3)<CNF[*?%]G
-M>?:]G"NVN:(2=3D8?]K=3D]A_V]OX'=3D/X_3`4 at 6I^+/"1)Z[Q+*89->/HB-M$*"L
-M.VD\/;<?98&ETWIXG#WT=3D6[L-QBQ^[#:J at DZVE$2MT:$(P,`O````+P````"
-M````10``N%15``!`$0``P*@!`<"H`0(!]`'T`*0&B<;*OGAKP at F"_>Q)=3DVD*
-M, at PN(",@`````0```)PD``"`E$<545SW])16F6L]U$RQW4$1^07\87ZV@\(,
-M_(H5FPQ?N_#N(Y-A,E7_OY\[O8`Y(IOHWCP^N5^UJ0$X;,7F'2+Q3)@.Q\OD
-M&"\HV(R[<TH8F,$5EA-5*^\PYNS.;0"7W[."`Y6K7<Q3RP'@)\V1P3R&4Q;D
-MZ5S>R+#M35$2MT;E0@,`'`$``!P!```"````10`!&%16``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z<;*OGAKP at F"_>Q)=3DVD*, at PN("0(`````@```/PA``#@,D>?
-M#JBI6K0X[)*,N[PR=3D:JK=3D6BK#42L(/UL$%\BDG1HJF@:YQ*-;FOD;[3Z(FPT
-MY?LZ_UT=3DSU*9YG2I&A&/W=3DBK#ZH!I,[`Q=3D<C;"?ZVSB!LL)JW&@J)5;*U40F
-M?`?9B,V!5,"AB'/AQ^CMU)VM&&1U[UL3Y213>DRH`(,1T4D-:111F5W238G(
-M9B.E)B1HN1<W484GXANTM]>NH)HA3.H'SOOMR@$/;87"U$=3D.7+*8D at M_L+/*
-MC.OMW=3D"OV&5R-ZB?/("\P:E?@OUI)'KD`6V"(JP!AHVOJK6,AE$2MT;L30,`
-M_````/P````"````10``^%17``!`$0``P*@!`<"H`0(!]`'T`.0&R<;*OGAK
-MP at F"_>Q)=3DVD*, at PN("0(`````P```-PA``#`"4N0"_Q&R7W+E2P#?^[!=3D2RI
-M%.$@9>#GG>_JJ1J'.1]1-''ZG13V6&2:O?!>XFS6]>-X;3J.5<ABSQMS0#M@
-MC,\CV)=3DMRT(Z<:Z4];9-?9\N=3D#%E]$B-ELD*X?$A?#<BU>G#HL";/6[VOU05
-MZI`6<_>X5Z()EZ].%R4C;3YX%V(YZR2XF._X.(9;?Q=3DJ#9`?N5N218.R5>C+
-M`0#2.OON6AZ;O_WUZPT.0.H[C7(=3D(&R0I'D)]/YP(EFKT8U1$K=3D&XE@#`&P`
-M``!L`````@```$4``&A46```0!$``,"H`0'`J`$"`?0!]`!4!CG&RKYX:\()
-M at OWL27=3DI"C(,+B`D(`````(```!,*0``,$?'V$;!7;EJ.ZQ5M)Y+*7/E1;XU
-MEW?HZ)K0JCU.JKJA:JX"=3DLJ)*35_P]B&41*W1 at AU`P!L````;`````(```!%
-M``!H5%D``$`1``#`J`$!P*@!`@'T`?0`5`8YQLJ^>&O""8+][$EW:0HR#"X@
-M)"`````#````3"D``#!RKPT%G.*O@`49DD?6"`MFNZ^],V7Y>)_NT1H:DL=3D+
-MT""!IA7D8D3R@'FN$5$2MT;;CP,`/`$``#P!```"````10`!.%1:``!`$0``
-MP*@!`<"H`0(!]`'T`20'"<;*OGAKP at F"_>Q)=3DVD*, at PN("0(````!````1PA
-M``$`_B)Q6^-=3D1/,Y7ZPG+>F>0TK0)N;W(`\G:#$@D)_&#$9`88$\=3D2IAA^/8
-M@;-\,]5R8/0V=3DZ%+2U)K;LJ($5ORW*H5 at CWP$#4\=3DI!HFY/S%RP"S$B+UC/!
-M+9YV&0Q&<#V9EJ[6!BH*,68K)RF$0=3DYW7V4HT'Z]S.`@<Y6VVTOU<>$:J%`F
-M!:)%#JU3@<G at H-3RG4P%=3D],T7F:N$NH<PL90H-OIO'G41.X^9V9+NYJ@?C-!
-MBLF84VDN$"J+6V,'/_8S4FUUG^7>-)+Z1N;T at _5:2 at _A8JB*H!LF0`K#T/1N
-MK6O';<OZY`*+C!88*%6C1^7^3/WD[9F&B]FW854D41*W1G.;`P`<`0``'`$`
-M``(```!%``$85%L``$`1``#`J`$!P*@!`@'T`?0!!`?IQLJ^>&O""8+][$EW
-M:0HR#"X@)`@````%````_"$``.`%TQP*I,*N62'5)G[Z;/*U,&8;GV;<B1`Y
-MORPZ#=3D8MKK[N*:^MVRT93D__:_8R%L at 3ON-X8+LRD70*[R9!E:+7A_!B<7OJ
-MW$H<HUM77F76?'V7FK4__&:K'H\?[.1LJ3 at 6A`.`PK`,Y:&)-<Q`@M%$X:*_
-MXQ$N,]J!YB'Y#TC4"B8*HIL\DJO=3D0CRYZZ%@%^$K+=3D7.Q6RVT)6^X?*>;'@&
-M_*%^3.OHRW1X+<1?IPA+6YK:Q.4I"(T6D>/;OC>?#5L`J\8N_JM2.$#/)L*'
-M=3D5OE<#B\Z"-$22ITR3],41*W1O"J`P#L````[`````(```!%``#H5%P``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YQLJ^>&O""8+][$EW:0HR#"X@)"`````$````
-MS"$``+"&[E@'V%V-Z4Q'Q\>,&H9OT%9A;SS*WL2U#\,^@Y5`)DZYVE!#'36=3D
-M9IS`#EZXRRV7=3DB<6>@S;#DRD"FY0UN00ZV6J$+[<46#D>H&'G"?OPQ8QJ(Y-
-M-KI>;Q0Y-97(LV@!\4M-YULLH!;XLO^I:.>3I[<$B[=3D@;U(!JQJ)Q+1PY6P.
-M-H@[WN)%P!D%.#"ZQO(7>6?O>9@;73G*RT4)K8AY_I%Q9.U$W,A'X/,O41*W
-M1OC.`P#L````[`````(```!%``#H5&```$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MQLJ^>&O""8+][$EW:0HR#"X@)"`````%````S"$``+#[3[P4TFW3P3^;.;)E
-MYP6(G5!3/6P"_$*`/">)>.#'F!\W-U6SBF>UZ1_V:-1JGP3L*S"GXG0(RN"E
-M(-B5.Q0&E["M6E&O\29SH=3D+QR(PA*&S!$EXJ9UH0B]#56AY+T<'\MGIA/>SY
-MZF?>29M.'5'_:B&NCPP[WR[@/QO4N+]N`7II"/(2/':F_SSN3LN'<H<):<'1
-M5NSEK-DL":N$^4[]'=3D'7EK<\W;Q9>#ZI41*W1E#L`P`\`0``/`$```(```!%
-M``$X5&$``$`1``#`J`$!P*@!`@'T`?0!)`<)QLJ^>&O""8+][$EW:0HR#"X@
-M)`@````&```!'"$``0#K6B/ISAPY3F?E<R\%%^".:`+];LO\I+XK`]609SI,
-MB;O\!_">F.'W#K=3D*D2XECCB2Z&472R'L`M9YB`X-?.6"OWB_`R#E$6Q+K.#:
-M^-)2I*;IR7/SEGA[+KRW\6`<Y71P4$+@`&JPQG-#/C^^`\Y-T?)])LG(W%J5
-MWK'`K8]2U,-.HTW=3DRG:&TSB]N-=3DD5('CEH^J/?P>^0!#+M`-$MOF?[V^%0]8
-M>W^5^)0`&EA-P^1L,E&ZOMVP\/7:N*K^@TN"&4U4;*[T.#'<]?0,5:H/6Z]?
-M,"J-`@FG/`QPZLSNDR(J4I*PG6L1$)/`N%T6R=3D7_,8=3DS'#,!"]R(N\!1$K=3D&
-M?O@#`!P!```<`0```@```$4``1A48@``0!$``,"H`0'`J`$"`?0!]`$$!^G&
-MRKYX:\()@OWL27=3DI"C(,+B`D"`````<```#\(0``X!H1&D9*S<N$B).A7^G\
-M`T%%E/^!3W$?O16$6735\)BHBM^H49V=3D=3D61*3<PG]5Z_[:1OQZ4U:P_LUIF[
-MA#Y+CUHNU9IV9`@7<N945UP3N4Z5,>8:$X#N[TL*2Q6C19H&BK4U7CQU4@(5
-M,:TB8T4"CS]'[`IS?.BA#+FI=3D$H=3DG"!@P!UO[%8YHCDK]`(LG?@=3D'*$WFHZ@
-M"]D(D((R?W2(!X9=3D*S/<Z5&V at R#"20UA0&*/CZH>V=3DAHS:UD4Q_0[)85BU"1
-M*P!::@.^9<R`S';^`PZC%JW@`#WK7=3DVADZA1$K=3D&Z`<$`.P```#L`````@``
-M`$4``.A48P``0!$``,"H`0'`J`$"`?0!]`#4!KG&RKYX:\()@OWL27=3DI"C(,
-M+B`D(`````8```#,(0``L/^D4'\L>:L3790UNBRLQ_+5EN:D].X2ME"0;(O/
-M.N1WV8HL<4;CG=3D%\I]RJ:(<=3D6&SLF8..FZ^/OY^S`#6FKL83B6&\N)'3 at F!Z
-MQOE\M(R;ZX#:7#*.A!(&$+I'$K+W_,^+?7!\?"!!HAZ![HJ1[MS"-ZH^4J<Z
-MBN8.%6Y\Z.X0EN#82(\("3`\(O:9&_WMLH2)(=3D9,>@F;C=3DV@(7#MQO[`XT/]
-M/7K\(@D_*M-1$K=3D&*"L$`.P```#L`````@```$4``.A49```0!$``,"H`0'`
-MJ`$"`?0!]`#4!KG&RKYX:\()@OWL27=3DI"C(,+B`D(`````<```#,(0``L/M8
-M^EEWBC5D\+K&[4$GAR=3DU$TYL0R]PNJ74,EL^3:SJ9"\]]X0V3A*DYEGG:GAG
-M<\N55G;8DG]CF^$$9_L-P)B]D6'0*V-6O;$U"H<,$.`.X;2Z/AM*YC%+/[I#
-M#GU%#<HG/I_Z>Q+'L,[3>+`Y]+X$S6O"2Z5LDDU)#JN3VPI!_5S"9S>BA8MM
-M.;A#+'8R=3D$]C_6K=3D>8X&V?C=3D#Q]?J*![U'B!*06])-("[OQ1$K=3D&AE,$`(P!
-M``",`0```@```$4``8A4:```0!$``,"H`0'`J`$"`?0!]`%T!UG&RKYX:\()
-M at OWL27=3DI"C(,+B`D"`````@```%L(0`!4,2\>^?.8BZ_D"WA_L<_Q0YIFP+S
-M*Q#Y%T\'1Q".. at I/57PS/WH7,6=3DAVW3SM56MZ[XTL&H?"*7*EAC-:)M.HX$=3D
-MN/&TXZMT\@$AX^T4Y*1;YO],(!R)+I+]$>\)6`.MX77D at O(Q?HBHZ;>,)(X,
-M[0#G=3DC>)DC;7VA`1``2[\I">[2S/T2J2:_1!X"`=3D7HW at OG1M$"`0E(]_=3D-D?
-MV*:JDUL7B"FT$9HW-J]:?_(8,[O)HNNEG^JUA76)!9,JW0L=3D_B!;)W#2B2T`
-MM6PL2>0"_>Z]FOO1H8".Y]`?X2-])H@$%7T3]>0RK"=3DLSA$DM>8PW#I,'BE;
-MTXI!B@]=3DM32WO/4=3D.PB'$6=3DG\^,!$P]2E:@0;5'S>AR6'2SJA'N$J3B*AFR+
-MN<=3D,,34=3DO_"DU9A`:^6$P5[`23.4ZF>6[=3D.X)M+R,AV+3C:(09P%[Q>+41*W
-M1L>'!`!<`0``7`$```(```!%``%85&D``$`1``#`J`$!P*@!`@'T`?0!1`<I
-MQLJ^>&O""8+][$EW:0HR#"X@)"`````(```!/"$``2`108JRBF$W&/.1?IM-
-MP`Y9^A;VJ7MAZ^/<HU39-6S_L%IT$<[KBK1P'H_&+AI,MGXK+]H'$OTY**"K
-M;;SNI+2>)0DT&H6L<`'BE#DJF1-UJ2B1^YP=3D!$A`)APXB]:CEVIJ\`>S?D_R
-M'-1&2(E at G3$>C%1%UQ>SYQ_38L at RJX?V!*'H?H#3E5 at .KZAKWQAIEK!!N]S2
-M@$Q at FR+P&^CA.&!59,&MTO*16T%<?Y8]U]R,2>P5MF]B.'#U4YAL>'2W11%5
-M,:SD9'F4S,D;!O.(:J:4)$5).A,P%QF1&X$LSZ*56V6B)!&4O_75HZ[]1%$G
-M=3D+<?"LC[W>$,[#(22]8NU_ZFB9M$<*1Q$G*DW67UWP!7QW"LX)9D3E*A7 at QK
-M_%$2MT9.K at 0`?````'P````"````10``>%1J``!`$0``P*@!`<"H`0(!]`'T
-M`&0&27UPCC>):,.;R%A2W?7Z+W,N("4(`````````%PJ``!`&:;IH2\\?_-B
-MPX]:VG.,%#S23]'-Z%B-ERIMTYA)]<V8FP9^:_$9,,<87S]F.Y&`2%QC\.OT
-M'<RT-J2T41*W1ABZ!`!L````;`````(```!%``!H5&L``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y?7".-XEHPYO(6%+=3D]?HO<RX@)2``````````3````##/],6N
-MI"M%@37?"*/7/UOM%L$K'DK at 2>P*1L_074:PG0T\/:9SE*;K&N8U%E$2MT;9
-MR`0`;````&P````"````10``:%1L``!`$0``P*@!`<"H`0(!]`'T`%0&.7UP
-MCC>):,.;R%A2W?7Z+W,N("4(`````0```$PJ```PY45Y;'5*-[[NDI*KR]HS
-ME[L\"-P;D\-92SS+9:])MVN2V;NJ#7TF#ED4+'!1$K=3D&[M4$`&P```!L````
-M`@```$4``&A4;0``0!$``,"H`0'`J`$"`?0!]`!4!CE]<(XWB6C#F\A84MWU
-M^B]S+B`E(`````$```!,````,#-8 at G#9N-W!OF/S$'-EQ3_Y>IXN8'20@(UV
-M'^R3XJG<G'6CY9"MD$YW$:\>41*W1L;4!0"8`0``F`$```(```!%``&45&X`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DEH7]B)B<Q+;8``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``V]",
-M0X9Q34G$-B>>VY3"9UNA9C:>WI7T5YZ)45+5D)\7TI\[J$G%I$PE90 at Y/,!&
-M'K>R\?HYE,2--&L\BXA:<G(Q;0RQ1<LY4%UX^Q*>%=3DDQ#A(;8:,BG$W9?OL!
-MP#IFCL/\W0H,SKKRSIF1F17D=3DP7D.-DS)S.8=3DAD3,I?UO8PI```D\32:!!F6
-M#9G(D!S[F/CH@[VHCY^L/D=3DMX^;;)`01!Z at I```<``!`!%!/VXR@:I4.O+<J
-MB:A30M9H3N2!````'```0`4WEIC_2`L_XV7=3D/7)?2VFU:V,W$U$2MT:]XP4`
-M7````%P````"````10``6%1O``!`$0``P*@!`<"H`0(!]`'T`$0&*:%_8B8G
-M,2VV```````````I("(@`````````#P````@``!`!@````$4NM+X98`PO5TH
-M:0WH at JZN`Z`UCE$2MT8;]`4`N`$``+@!```"````10`!M%1P``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A:%_8B8G,2VV```````````I("((`````````9 at A```@
-M``!`!@````$4NM+X98`PO5TH:0WH at JZN`Z`UCB(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``V]",0X9Q34G$-B>>VY3"9UNA9C:>WI7T
-M5YZ)45+5D)\7TI\[J$G%I$PE90 at Y/,!&'K>R\?HYE,2--&L\BXA:<G(Q;0RQ
-M1<LY4%UX^Q*>%=3DDQ#A(;8:,BG$W9?OL!P#IFCL/\W0H,SKKRSIF1F17D=3DP7D
-M.-DS)S.8=3DAD3,I?UO8PI```D\32:!!F6#9G(D!S[F/CH@[VHCY^L/D=3DMX^;;
-M)`01!Z at I```<``!`!%!/VXR@:I4.O+<JB:A30M9H3N2!````'```0`4WEIC_
-M2`L_XV7=3D/7)?2VFU:V,W$U$2MT8%&P8`4`$``%`!```"````10`!3%1T``!`
-M$0``P*@!`<"H`0(!]`'T`3@'':%_8B8G,2VVR1/1H+D[FAXA("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``*%Q0\-&`,EQXZ6*`ZO\A#T`/=3DQHC!37&S#6O5"9:(,0
-MLZ[[9\V<\WG*.`H3.9[9$IP%*RX3G!8!7?Q2.8*(H.RU!"4LY2$5"Q2A?7#A
-M\^>]8R!GH=3DTWY,9O)SBH]I"^8MR8'>$*!4'7-N#B at F*=3D,8RP_!9M[.67Y[^\
-M;TESW?OI*0``)!0P\ZK-M`DT.KPAN$@Z(B<WP*@F?6ZS<79 at .RK9BI'/*0``
-M'```0`1L=3D*-`Z40AHD>72+'&1K]JK:P8-@```!P``$`%1&G-/EZ/'@^L]EG*
-M>Q?G0I:JO-I1$K=3D&T4<&``P!```,`0```@```$4``0A4=3D0``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]FA?V(F)S$MMLD3T:"Y.YH>+B`C"`````$```#L(P``T('I
-MC:DVAO%\VZGT`]1"EAK(GBH;92\]*#6)+0@>$1`%I\- at GRP*R\YD`QC-)WGA
-MCC^1XQ=3D"GMV2XW7 at S@IB'H"!?V0R7,.X-/[)1D8Q6!2MQT!4T>%LI].RE5O;
-MW(1=3D at 7X_`MK>=3DU[2(2<H)59;.7[R`GCU6X<>/%L;VQ50:IGZ?X'V"9!$6EG_
-MY0UMP:*?79D/:V6N=3DTU^2SXP^"XA*+MHS0+!`URZ at 8C71J>[@J'8MLE&EFO5
-M(<OT:C!%!H\6G3(H'@:FD,5)F1VZ7U$2MT;/8`8`O````+P````"````10``
-MN%1V``!`$0``P*@!`<"H`0(!]`'T`*0&B:%_8B8G,2VVR1/1H+D[FAXN(",@
-M`````0```)PD``"`_UAN"O5,:E71L9<OA'9Y>\LN\8J-[@U\T(A!31#`D@;Y
-M0V=3DL/.P<5V<P=3DKWWQS"*XNYYVSA!V,KT=3D0U9DK)PD_)K7>$=3DR./N$CQU+"Y&
-MAC9)(+HSR9)RWU8&N"`B!8XL!!A(MP1QY_$&&W2.>Z:$);Z;07;+4RNM'\B@
-MWE$2MT9]?P8`'`$``!P!```"````10`!&%1W``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z:%_8B8G,2VVR1/1H+D[FAXN("0(`````@```/PA``#@8TN+S#@$@(PC
-M)D3OCU83N.;KREB385"4K"=3D>319%A9F&>O&$,1KI5M._7B=3D^ACF&#Y?N;B':
-M_*2:30&17C1Y;8D=3D9G6CY<F"'+KR`3I4%5-GHXM"0PV;RV":U>?'H_9VP238
-MCLQ2@=3D!"S.NW#$M%)O%H at W<U^73(L.8H>Q1K9:0D_U\R"7NS;R.<)+_NLDF,
-M0-5V#RZQ:2[N;C^X,V>/SU$U]0[K8]9N&41?74;0X;'M$WY;3P$,*JRY1/@<
-MD=3DT'=3D;1]_%"Y`1:7P2$3`B23;/LU'@N[AF^Z4M;U6U$2MT;DB at 8`_````/P`
-M```"````10``^%1X``!`$0``P*@!`<"H`0(!]`'T`.0&R:%_8B8G,2VVR1/1
-MH+D[FAXN("0(`````P```-PA``#`]T&&Y>O[KL;]ZS><CEM\DH9TT-O]3$;&
-MG@=3D=3DEXCAR/2W5,[J%*FEU%)8.-W(F!](F?$JR<.#9^J:.WF3G"X",PGR^7P4
-MS+I1$,[?\C]I56[\F5?>9OOHHG>;E>?\RC7#73^,I/<FT'-/4PUNT2=3D<ZAJ=3D
-M.XW4*"G4U3F.,((Y_Q9&+^7+R.>-O<9(,HYXG+7070CO19`O2B=3DN=3D0V/G"(7
-M8`Y].-)@9=3D4JE^&*@US8K,UKSS\#TPILP,F_",!1$K=3D&T)4&`&P```!L````
-M`@```$4``&A4>0``0!$``,"H`0'`J`$"`?0!]`!4!CFA?V(F)S$MMLD3T:"Y
-M.YH>+B`D(`````(```!,*0``,,R&*2I('28PL8*.B907>>7)U6%2HG*,Y`:3
-MV,?9#!!,ZQE%14>8*]QC!<V241*W1GRQ!@!L````;`````(```!%``!H5'H`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8YH7]B)B<Q+;;)$]&@N3N:'BX@)"`````#
-M````3"D``#`AHG>UL'L0=3D?C$S+\!#%OI>@L(C!H5/MIA`L.WC.-\FA`(0E^,
-MY1NIM[O+;%$2MT:LS`8`/`$``#P!```"````10`!.%1[``!`$0``P*@!`<"H
-M`0(!]`'T`20'":%_8B8G,2VVR1/1H+D[FAXN("0(````!````1PA``$`UE7`
-MD<`B*5;E=3DZ*$=3D4.1SQ7A:#B%\*D/P$!UCH&/V"G%['%'0@)6H'@3]Q@[RM@(
-MLV%SN-/9^ZOY=3DEXO[J/9@\>^!8/UDU4AY$/NNNLG@:QN:6 at RG-G&)G0<FA(V
-M6M^0Q:_T-:=3D[FHQ?A;@C=3D-]2`?_[%',B7,-KK2S<G;G\ON+P\2P+0>:+?/G!
-M_2I]BF'.TSA_A2$VP5M`M,C]2MD.PL(B]$!+0;$<(0,']=3D9[D-O.'*4`*[.B
-M_R>B\(3=3D\W.)LFMG"=3DG$GU\YA%%^4U%VK$M$6:$3/=3DDWN/`21E[,M8H/:C,I
-MGH.>^80?GE'>^SJ:DK1D1^/D?>8IY)&P41*W1AO9!@`<`0``'`$```(```!%
-M``$85'P``$`1``#`J`$!P*@!`@'T`?0!!`?IH7]B)B<Q+;;)$]&@N3N:'BX@
-M)`@````%````_"$``.`PAFXKOWU_"JMG1G3K+T`.TUOY!Q0@/Z8@?D.Q=3D\Q;
-M"WMM(-/'QN_W/\":CGUU>G$G[HWS`+8V(U^[_L_[JY&Y97=3DL?_&02N[B28HU
-M7^&7>!#EV at Z06R^VP*%Y,>T;?<49.%0 at X$.>V/.`8^E`%U!!"J_UXP<%F2EB
-M',R$I6XD1/JE1\A/QGZ3JB*!($@WCR$BJ(T%&(,HR:8K[_Y[35GV2Z-7SP!\
-MMP_ZAK029M-^J?E*P_"\F/@8+]SJLB0^A\0_WM>JX)M&E9^?+6ZOP7BL1I6F
-M$@G((+YGE#MV41*W1O#H!@#L````[`````(```!%``#H5'T``$`1``#`J`$!
-MP*@!`@'T`?0`U`:YH7]B)B<Q+;;)$]&@N3N:'BX@)"`````$````S"$``+`F
-M:- at MP"H2ZF9NPP^S<8 at F5`<.?<J;Y`;F$&(JXM\.]%V_G"E/`^;5[73\2(G1
-MD,^2SEQ2 at M?>X4\HI^9^9P%ZKO,U@/;ICC<PT,0?D$-;<##N8BE%7ZZ7?D3]
-M?/+PEP_?7";PTJU`ZU0?[,;K`'5U(V^"?:'%[B$_SF4Q/*R;D:YF-=3DT+((??
-MA,9<GP*V4IU)3E^R at H%X2>/B=3D9(/O at 8WSM)H3@$W[D6P-MMT41*W1O<,!P#L
-M````[`````(```!%``#H5($``$`1``#`J`$!P*@!`@'T`?0`U`:YH7]B)B<Q
-M+;;)$]&@N3N:'BX@)"`````%````S"$``+!K&<_5?8W=3D9;M(>X<CJ#8&JX\"
-M^`?T[#LULA-QAHDVWV55OPLF.&)`A%XB.1QGE9<4">!=3DSI<S'C"U%$.IL-N[
-M;--]F/872#1F$`2+PCN_X.C]?>U1!PES#9*#!<8K]_G5<6!`:7C:[!S/=3DNO[
-M%JT&AM7K=3D&#HP=3D/Q0),!5%T[O4/J?TBNJ at _2X/EFGDOGK9-<3`-YPZ[*.]N$
-MT2F(.^DLT7RC?GC/XFI=3D'V;$41*W1A,L!P`\`0``/`$```(```!%``$X5((`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)H7]B)B<Q+;;)$]&@N3N:'BX@)`@````&
-M```!'"$``0#DE/3N<$W'*,MW@$=3D+'%@2#,I_PN0O/$DD(,8/\CG^*AF(S[%W
-M-U6X5Z:D*VF/^V[\`;,=3DH&,G-ILAUE,8_*WF]0<.8/E^WY6(Y\!-F!8ZFJ)9
-M`-L(`-QF)CJ*R$9[R+)DP0VN>39%B"-&\V$&&OJW0!10+I,&%%LHT'3?QT!`
-M?\6[6YC[[@#\9?\KT;E_KX9`GLQRACUKN/'XE+6=3D7!C(([8K707TX26'XPQJ
-MVV7JRC2K5Y%I'(TM\@5141A]?$I9_LE%#E623+$]&"8*Q`IZ5=3DDQ>X7VT2#<
-M-2>0,Z&^*K0RARK1'&=3DSY7;Y\V=3D9AW95H);?^DU0L$=3D^BXE1$K=3D&*#@'`!P!
-M```<`0```@```$4``1A4 at P``0!$``,"H`0'`J`$"`?0!]`$$!^FA?V(F)S$M
-MMLD3T:"Y.YH>+B`D"`````<```#\(0``X!RRI]Z!8>CWW93F[/ZYWFL-]7#(
-M).3!_ZY38@>72AKK&"GH`EZ9AZA!MD;^@-K/?-NRPZV-^Z.8I,'8*3<?M[ZT
-MNTL?6#FBMIE6G<._;$71Z9Z,G:Z=3DP&O-<#/(`L at J;RT=3DS[/)1I?5B3=3D&>=3DG]
-MKJ`-$*?;OJ/X,)G[_P;[/#+%2B"V[KS51K*-(3MLZ1^S]R8<U!Y8S$,-+E<.
-M4%.=3D\ZQ9-'.<6A\2^:Y8JY0*3DZ*W6Z^['YRE)6+EQDX3]R;Z.A7DDLA'0IQ
-M]"?[G$^D&(8SYWO5%MG[\>N,DU)1$K=3D&)D@'`.P```#L`````@```$4``.A4
-MA```0!$``,"H`0'`J`$"`?0!]`#4!KFA?V(F)S$MMLD3T:"Y.YH>+B`D(```
-M``8```#,(0``L!P1E4F';12+5''4?"U@`&8D#AO'#YQF$`Q.1DF(#?XJ1W$?
-MLD$._C,")>:Y`K"W]`T`TR86%LCO%16/:C>T&W3_6^P"JU"_T;Y.NZ at ./L2$
-M%%PPKNIU*7IEUE(.G9Z3B"`QOJKRH,FMC9^,*%:<P]XME6E#H\CTBJGUDLC[
-M#[<8/763)G7(0.^@`%>N"IDA3TJ:V%?H64H^/CU,T<(YY;7'`JR,5Y"N\M74
-M)`A1$K=3D&WFH'`.P```#L`````@```$4``.A4A0``0!$``,"H`0'`J`$"`?0!
-M]`#4!KFA?V(F)S$MMLD3T:"Y.YH>+B`D(`````<```#,(0``L&RC@[B9`,3=3D
-M&PB]-F.9)CQ5O87AS,:45C,&_`_&LAM&51\G<P#<78;92KZP<S#B1*GN''J:
-M8[MHI?C90"V2+V;5!W*+3=3DQ7O2[3/SKN at A0`4Z/E<0U=3D\O@:K<98H94?@UEA
-MR6Z>.JM`]C.PS^![;Z\1.JM:78Q,-:8*PI/[>U([N*,+*^V`XN9;,IJI#-%:
-MO8Z`I3K=3DNTY]?Z<"Y-BO",N$GKGWID at N`"-7Y8M1$K=3D&/I`'`(P!``",`0``
-M`@```$4``8A4A@``0!$``,"H`0'`J`$"`?0!]`%T!UFA?V(F)S$MMLD3T:"Y
-M.YH>+B`D"`````@```%L(0`!4(Y;JMC+G6JP2!&9/S-R?U\+0;/A-GM(VV<@
-MVY/1[&OQ/DQ1M;\/N>*3FA!?*$?]M3K=3DC0\8VUH\=3D()L_`(L[6:G%?4I$-Q9
-M%HO=3D80T7)96%@Y-V>%TWP+7/^E$G$FZ at 0SV!9EPET51V%),#8F^3B]D:"I[V
-M,"2\[""MM')HOXI7+PV:S&L)Y<\9Q%WXW+A\HT at I[UZ+&Q/B=3D'!H?B2+I%$5
-M!<IUZ$Q)8!,FASKQB"`V6X32N"(-'4KES']76)>4.Q?R'W(V+<AKU%BEUE._
-MWFK\'_$]=3D1P"M6JCPS^*2C14I.W at OOY580,KK_K3L<C6?.'2[93-YCZS7]!2
-M6^D]F5LG>86.D@)[:XTF>K6*"*`-9Q;"(KC*2*0V/=3D3"BQ60=3DKFRMO`%L2"[
-M;$$B_`/DXRAYE(;!&P039NG9:4IW4"WXN]L&D$[YD"<KM';-41*W1IG&!P!<
-M`0``7`$```(```!%``%85(<``$`1``#`J`$!P*@!`@'T`?0!1`<IH7]B)B<Q
-M+;;)$]&@N3N:'BX@)"`````(```!/"$``2!ZDJVB,Z(Y?X`MHN&S[$00]DI.
-M1X!P!Q>N@#MGHDFBE0\#\QQF/(K+I'GV=3DK^HS(Y$PI&L?O5G"]#:HWHPP9L)
-MKN8!T=3D_T&_?K8IRMFT_9YMKSQ_H[8;"2]_83@`W)L%(5)/Y&H\,-.8]GI[T.
-MNB]>E<3X8",]Q#Y5L,`Y<,IV_IA;WQ&Z#9NN(W.)REWJ[2!9DQ*H:3GR2&=3D#
-M`=3DVQY<A1DYI8H868\SN('!J[X!B6M9S`)(0)[-I03R&4O[K`<PU>.#O<,3`Z
-M#HYR'P89HG+\1I. at S@7)$+1PS,P/:/5:U6GG at I\(LI$L%]+Q$!+&;;T<@U'4
-MH5F"A4Q0*8]I85+91E`:V1[5#8&=3DY-?F%]M at .\ZYO1+LQ+>H<^&<O%$2MT;@
-M[@<`?````'P````"````10``>%2+``!`$0``P*@!`<"H`0(!]`'T`&0&27^G
-MBN'B442 at G&%0YFP\G at DN("4(`````````%PJ``!`/@V;Y/ZEX)OMX1-U+81J
-MN>3L'+P?HX.`BF45<4<O%$Y8NY=3D->C'!'4'[#IIYQ/'S_FS@)XY.9F+"5]_F
-M41*W1C_Z!P!L````;`````(```!%``!H5(P``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y?Z>*X>)11*"<85#F;#R>"2X@)2``````````3````#`PE((3NK#/F*SY
-M-K[^+-"_A`'Z^PRW!)[5XF,].6A:]F@[69S'E%G5IKA#W5$2MT9V"0@`;```
-M`&P````"````10``:%2-``!`$0``P*@!`<"H`0(!]`'T`%0&.7^GBN'B442@
-MG&%0YFP\G at DN("4(`````0```$PJ```P_P'O&M#^79"&IC]T,X^L3O`_D;F`
-M_`_O+CO!!-P&78&R#9GGGA@;UR#17H51$K=3D&41<(`&P```!L`````@```$4`
-M`&A4C@``0!$``,"H`0'`J`$"`?0!]`!4!CE_IXKAXE%$H)QA4.9L/)X)+B`E
-M(`````$```!,````,&+72ZB52?8Q at 2BS-YS"D$5C1>""O"*B"=3DH-9S7E2I87
-M_^'4+U`,3A*&N,7)41*W1A03"0"8`0``F`$```(```!%``&45(\``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DEZUR"OJ at K*@```````````"$@(@@````````!>"(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``CG&L8G#,+L*;
-MJZ4,,''$2#9Q=3D5E(UK/WV9_664/9J-RKOSB=3D<SU/5!WBHS`E847BL6VJ)(N7
-M\\K4!C;`"3ZJ=3D9,8L(%\#7TQ;AF^+WCR8/_8GQ$8[BD!\W_2W6+CUU\65LUU
-M$TZ1D)-G4R(<!Y',B8A'BR3X.:2W9E^U<V at K49<I```D1ES5*6"%Z*[S/]1V
-MUJ%Q\=3DB=3DC4K.-[Z'JW2_]L6[HQPI```<``!`!"P.QG?>2WGX$D^L!>J-9L4_
-MR>V_````'```0`5"ICC(!R%($77LB,=3DP06VSR3;[!E$2MT;I(0D`7````%P`
-M```"````10``6%20``!`$0``P*@!`<"H`0(!]`'T`$0&*>M<@KZH*RH`````
-M```````I("(@`````````#P````@``!`!@````%,"OZ&36$=3DY^F<[J2&K4K)
-MF2OD'5$2MT:X,0D`N`$``+@!```"````10`!M%21``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A>M<@KZH*RH````````````I("((`````````9 at A```@``!`!@``
-M``%,"OZ&36$=3DY^F<[J2&K4K)F2OD'2(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``CG&L8G#,+L*;JZ4,,''$2#9Q=3D5E(UK/WV9_664/9
-MJ-RKOSB=3D<SU/5!WBHS`E847BL6VJ)(N7\\K4!C;`"3ZJ=3D9,8L(%\#7TQ;AF^
-M+WCR8/_8GQ$8[BD!\W_2W6+CUU\65LUU$TZ1D)-G4R(<!Y',B8A'BR3X.:2W
-M9E^U<V at K49<I```D1ES5*6"%Z*[S/]1VUJ%Q\=3DB=3DC4K.-[Z'JW2_]L6[HQPI
-M```<``!`!"P.QG?>2WGX$D^L!>J-9L4_R>V_````'```0`5"ICC(!R%($77L
-MB,=3DP06VSR3;[!E$2MT9+5 at D`4`$``%`!```"````10`!3%22``!`$0``P*@!
-M`<"H`0(!]`'T`3@''>M<@KZH*RH`D-AJ#!2,2_<A("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``#UX4<.*WRBQ/)2B'.3C*5,A_X2>RY`-7E"L-<7UJHVM5-$W at DX&
-M/PB%/CHK77/L&2!I6U)L:QAO,$:K=3D["*"[*/]&A-OM[/)K$I#W%JN_XQ(]A^
-MW[+'`'P`&.V6$&V;`N[7B+?W<_)U8N?3+CM)>L_UP at 9NZC>8^]@T;W]N,(^Z
-M*0``)"82=3D']<)T!DK%F)52(TVQ^?1,NI&:P:^#[MH(-`<\;"*0``'```0`33
-M\U=3D/>PUSANR>2LX/GQ*R-Z6;UP```!P``$`%[D#I35[J=3DN-6L&K+XZ`=3D(YNW
-MN#Y1$K=3D&I84)``P!```,`0```@```$4``0A4E@``0!$``,"H`0'`J`$"`?0!
-M]`#T!]GK7(*^J"LJ`)#8:@P4C$OW+B`C"`````$```#L(P``T#J^\5E\'4D@
-MS0DJ(WQ@:<IF\!8>:O^43-(B'T+NO<=3DR&XF4W4,SI*98NJ\@V](W1;!<J3,I
-MA&EPK+1L8<@Q-=3DX3"\KN7^80+1'F+S\^AZU/V\H`%;8>Y88L4BD2L(,F08S2
-M*NK&Q\\.27L3N)I:-9E+H#J%KX7#/DSH-CIE,75I?YJ['Z`(Z6&&9MI:DSAC
-MNO0482;M"'_]0B#67B/+2O:4#CR0UF(,U)R5A4)>A.$;S8.+.+IBC2PJWRI<
-M7W/7<.#4<3>TGG]^**'F=3DU$2MT:#G at D`O````+P````"````10``N%27``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B>M<@KZH*RH`D-AJ#!2,2_<N(",@`````0``
-M`)PD``"``>,W];AYE=3D\+31T&TS\YCO%X]6[JF=3D>#'.SB3F?F<4^;#P_;C!U*
-M'HJ'`0#-2A4D2XYU!B`I*5N_'7$R]!4OM3=3D%4V/B&"V*-;%QMJZ_7Q+9=3D!>3
-ML7$T>Y\2!MK+Q5&.%TT,(]EB$WWO#7*?IMW-(!QIUUM;F.A8%W0.#E$2MT;9
-MO`D`'`$``!P!```"````10`!&%28``!`$0``P*@!`<"H`0(!]`'T`00'Z>M<
-M at KZH*RH`D-AJ#!2,2_<N("0(`````@```/PA``#@)+7[+I3^=3D$<N#[-C?XJ,
-MVB(VFU#[I,H\X?WG2&B?^-&.!UB%QVA!;I]4\BA=3DX$!3KU0R`!8E]^NI,["V
-M[P*LX8Y^;FW(ZX_WL;)8C,-\[165G)#\9B\K6QZ)\#0VC\4(GY=3D*1;,3P8U6
-MYERX,FEK6GYZ$,6*?<1I\NY$WZJB<:5<@1%`YV+ZMO\?7UW(5DLA&NCX*_#V
-M5'X;8Q>?!"%LIL:!P1?UA\B4I8A"V\I;3"0JB\7PS3'U3>^]_DZP&W>GGN18
-MRT,(:.!LW1>X-KS`"V/P?Q>)R%UP:FX]>E$2MT;=3DQPD`_````/P````"````
-M10``^%29``!`$0``P*@!`<"H`0(!]`'T`.0&R>M<@KZH*RH`D-AJ#!2,2_<N
-M("0(`````P```-PA``#`W$'A>>DD.EW)35=3DM,^2!U82V5C?,^8C!A-C6D%N%
-M]EHXKL at 7;+&^M+589U91-G^BEB(#25AIKRZH]EPIDDD[&I>+9HA0Y72<GT4O
-M2"8'BFI5^&FU6_\$[*WK%<'POV"M>Z2/J<+=3D5-Y-[3FQ?ZSCCS]A&UPI`)H7
-MS1.S5&@M<MMU490&/M`33;DGM!=3D at TD":9Q9$Y2@<5_[@0'0>O-SA9TI)LTNS
-M#:][1'R"6^8-"4D_]RYK[F:"%ST2+`M1$K=3D&L=3D()`&P```!L`````@```$4`
-M`&A4F@``0!$``,"H`0'`J`$"`?0!]`!4!CGK7(*^J"LJ`)#8:@P4C$OW+B`D
-M(`````(```!,*0``,&56RD8+C"E)_T'W$>A)!:Y<=3DU^FSXVT+^QWO.!WP$@H
-MG&R\/\BOT),LL$++41*W1JGM"0!L````;`````(```!%``!H5)L``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8YZUR"OJ at K*@"0V&H,%(Q+]RX@)"`````#````3"D`
-M`##BPMZ.[KC!Z<&,T,"`59<^P!:Z%JM18>W_*Z1NP%QKH#^LW_84=3D#'\E5E*
-M-U$2MT8B"`H`/`$``#P!```"````10`!.%2<``!`$0``P*@!`<"H`0(!]`'T
-M`20'">M<@KZH*RH`D-AJ#!2,2_<N("0(````!````1PA``$`9\NY#TJ%<\7B
-MZ9Y*C at FI*/H[K^$)=3D-V"M(M_PR)J4]"PZU,E4Q&7M*$1O("*D]3H%#U(@&AF
-MF4&0`>:G@^52P.O$54C.BMS#BC[TKBPG-F0=3DFCFXZ@:N%^[F57)YS0*9!7Z*
-M at QQ#7EJ-[P at ZD8T=3D2Y<5P+_ at KVMV"KF0.)<%G]G1]SJ#UH6^I<#T0DMJ&?V%
-M:$P!#H"B$2%TD*?<LZ8_BQ.F;A%55**;L8!E_!I\I\Z93H]#^#7$.OK2FLJW
-M1.F]9V%X`4GAA22H*X4[,A8W,*L[1X?-PLG;*;G_Q,!9`'4W,T[@*KN/P?X/
-MZ6BA3T at 1.\FY(1'?+\FNVPG241*W1G04"@`<`0``'`$```(```!%``$85)T`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?IZUR"OJ at K*@"0V&H,%(Q+]RX@)`@````%
-M````_"$``.!BY*H_7#SZJI2:Z:D]@N'`TF19E;7;@;['<8.,IJ`);0Z=3D-&+1
-M)!WD0V5ET>NQ,\0YU+Z>[%E[%VS/0 at 8#5CS&+=3DX64F)+9^,/Y4BTINX2<XW>
-M?=3D[2'(42,*OJ3$BNRW=3D1XQ#.>^F#XSSE'][ZUOWI\96T0[([MX^Q%7FF?ZI7
-MM_^);ZMJS6F2D#!4]![:/1%'#&^1/$;W/FC1_\;MA\?#:^WWE)9\:N]+G#O0
-MN6[0.0B5E$1CJJ6L=3D+V4D`,B9-RER]?W!0\S#=3D!/7IR8E:UG]QF_ML6;>[%W
-M3"?741*W1C$J"@#L````[`````(```!%``#H5)X``$`1``#`J`$!P*@!`@'T
-M`?0`U`:YZUR"OJ at K*@"0V&H,%(Q+]RX@)"`````$````S"$``+#I[LUBP$X.
-MD&]*'\LV1O"0[7^%7I3I!9U.L,IVC/RX>_C>=3DYEEN+"<BX&2^BT)S+0CRMY!
-M2.H>`I]!$U$+ZE7YI_M!Y%'$=3DB$I-E_OO8!?!-B^G`Z[B+4IA]P4C"B_LVXI
-M%_]R_#DKU at .@':!".SN;*GB8`9_R%8FFL)T%+87?U:8D9F$YU7W.[34L!V,H
-MBQA/#R\_81&!T?W<>3K3S0A:(74QH!`/>P$'TF3841*W1B1."@#L````[```
-M``(```!%``#H5*(``$`1``#`J`$!P*@!`@'T`?0`U`:YZUR"OJ at K*@"0V&H,
-M%(Q+]RX@)"`````%````S"$``+"BWF2ULHL6D45,^`"Q070!4N at 2"KR%F,^N
-MUK at TFFQS45.8?LTDH=3D/`I]',Y3]%!4E\'>8#L,+:GFB'X8CNNRH"8QL375LR
-MHVB%'IZE7C([-D9$?T1\=3DQ>F\CY9-PTXY,.7[_5JAR&R(.Y?WWP"8/+$0HO-
-M22%#]:6XXBA&#\K#;,]>CJ at Q;GY4"?8<GI#!GT22 at 93'ZPVT=3DQ"U at L*$-CC6
-M:N?8%HF>81*UAMMV41*W1LMJ"@`\`0``/`$```(```!%``$X5*,``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)ZUR"OJ at K*@"0V&H,%(Q+]RX@)`@````&```!'"$`
-M`0`"L>$PQ+),.,(X'NY$'O<;TV2SECWI3M0O'0H[P-([9>-07(XO>+&Q(D at A
-MK+STZQS];J"I;]@80U!>.T$=3D>$T"^3RWH`R[+,[)6%ORBG/Q%;+3*B)Q%T_#
-MUA+=3D+$7-=3D)/7UO^@16WU?Y-Q3>PD8H?\YEBJB:I8,CJB7%`IJ*;EQHHB^9YI
-MRS_$O*[D>+2_LN=3D;ZTIX4:1&E9T0>".$#)PE/)!9I/-/#JG:T:"N&\Z%I[]4
-MH26-!7I_A0RN0`$>37[B?^UWA8B8&LF^??&%=3D<IT7:B2Q1P!X3:@6PHV!G_L
-MC/*C4&=3D>$QA%0JU^PI"#OPW`V06]+"KO$YL>)[E1$K=3D&U7`*`!P!```<`0``
-M`@```$4``1A4I```0!$``,"H`0'`J`$"`?0!]`$$!^GK7(*^J"LJ`)#8:@P4
-MC$OW+B`D"`````<```#\(0``X*!SKOF7=3DEIS#3ZG^:&\A%XR'I$1K`]]83E=3D
-M9IM"($4K5'+F"1,FDT,22?697^&8K&N;TL"!_K\"_Y6;;[!SE+ER]*?-JVB_
-M*<;2BY"=3D#'!RG<"2[RH_2=3D]#3OG,^V^S[;6KLD6)T`5OS:27-$B67FX*3J7\
-MD6SMNT2EA&K2*!#L4KIQ!&1:.%T_EO7T_Y\%[V!`K&#*K_KOX,#&<J7K9*!*
-M$YV1A)5!P)47C0*WQGBZE09FLWE`/CPF(F:9XO_??*'F/=3DQ<BX,/^)]8DGJ\
-MZH`O*JW`74L[MB?>C&=3D1$K=3D&*X8*`.P```#L`````@```$4``.A4I0``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KGK7(*^J"LJ`)#8:@P4C$OW+B`D(`````8```#,
-M(0``L)7N=3D!6$1B&KP'G6(0WL@%4:W'.$`YP*EM(+*4/"CXC5K<>DE-1N\0UB
-M('!*`(]1E[U:':!*R#-6$U6O2!NDE3MS_9,"9Q.%)WV5CM--?SPZH@"+\,"-
-MZ?JPM[75Z=3DV]R*?)4Q?>$P607N`5@#9<Q7UU#K];8_DI,4N3JHX3=3DHEH/;Z-
-MLT*>LRN&.US4M3XQ4+EY[:)AO<8F9"Q0#:WCEWAJ<KA8B8X%PLX%M_%1$K=3D&
-M/*@*`.P```#L`````@```$4``.A4I@``0!$``,"H`0'`J`$"`?0!]`#4!KGK
-M7(*^J"LJ`)#8:@P4C$OW+B`D(`````<```#,(0``L#F3]-47<9 at 3(+[DYRDV
-M@&?\QCIB^CNCQ63H%,5#DM5H'(1$<B=3DU%/V/.QP6P/F]N-T_TDC,1\&EIKZ\
-MMHC-<VP%*?%GO]K%=3DI[V9;S=3D)SWK[E1BXE=3D at Q^43T>G:=3D/SJ%S;W&S_/=3D[DK
-MA`9S at ZA/>PYI:0=3D27R4?A%Y%SZ9R2@"%TN`4QY7+'G;LO<^/WQC'5I)":/7F
-MTZEC:%31-<U8M3(4 at O9;HLPH.VZ+)TU1$K=3D&W\X*`(P!``",`0```@```$4`
-M`8A4IP``0!$``,"H`0'`J`$"`?0!]`%T!UGK7(*^J"LJ`)#8:@P4C$OW+B`D
-M"`````@```%L(0`!4)_CNF2],1=3DI(0?DM/GZY_SK)_31#V,*=3D5R/)UL\??=3D$
-M'H)'EVP*B:Q791=3D`VZUGW.$J!<6&:LCK0#PZ*1:O;0/5<VF($3>0&^B[E[4E
-MQT;J at X>9[W:K8[D)JXYCF)NE_GE5+5QZAIH!@%E\94Y[Z]#QZ9_ZZDJK.0TR
-MYG2B38B,)$8.=3DSS+594>T$;V-Z:BT9TI4O)H4[UCF?A+S\F8Y[&%ZT4CV#*)
-MEJ^82.23^A?:=3D&U!J&2,SFJ00N)>;VG7I.#E61`E^T#GW16X:"+-+*PYH<T,
-M6P/-"`*L7'LN[Z[%AA[Q:@A&31BI<_G2NE!2'8',IZ,TA+X-EVR5+<7P!"82
-MBI2B55PIGH#+@:&=3D1W8U,9S%-WON[];M)A/D3#IV_<2*ZD.'@,W_B?\1P(^'
-M>`V>\A--!JJ:/>AW at YX&.!'>TR;,1MDHWG=3D(M>,941*W1FD$"P!<`0``7`$`
-M``(```!%``%85*@``$`1``#`J`$!P*@!`@'T`?0!1`<IZUR"OJ at K*@"0V&H,
-M%(Q+]RX@)"`````(```!/"$``2#-?.+B"[6_GYVR]0Y@^9S9)'0VMQ(U*HW1
-M*01T85F$-A[3I(PPK0Y3(I?8:M;GC>`4%?]ZZMWDSBS7I80X4.]Y`[.K+=3D2P
-M0F%(X"Q?>M9*[E;#0P?CXM+%GIZ3AU`P[.[V/<!QUO=3D42C?(38TM[N`FK$X*
-M2K8]7%ON\&*9L]TUU4:'OV8N at PEVE9+U^:P)MO>:HD.K8%<G"0^Z2B&S=3D*\6
-M:3S6R0XQ*/DG;O<1YC<'=3D?(#=3DY\DWRWS'H"7_0TF^>8TX1VL_+>]WK/:W^_W
-M](A2<QC/"S_K2L@"+17(]Z#?P)MA"<($36_M<&*BE%3B'*6H"5%?-5]9:72.
-M;=3D+THH#1.]LOH2`,)_PJ#I]CD`"?!D*2%0>7RWQYH.<W/5$2MT8?*PL`?```
-M`'P````"````10``>%2I``!`$0``P*@!`<"H`0(!]`'T`&0&26\":1;X0FW'
-MX$%GJB`Q=3DO0N("4(`````````%PJ``!`\_2*GPLS`AW^DDV!MW1M3ZH*L//J
-M9#P0-/=3D^8*ANW<.K@$C\`%B<J?HIYIQP'&..3_71LQ#,9ONT+"C141*W1G$V
-M"P!L````;`````(```!%``!H5*H``$`1``#`J`$!P*@!`@'T`?0`5`8Y;P)I
-M%OA";<?@06>J(#%V]"X@)2``````````3````##U`/>GR"#301U=3DNQ(@B0</
-M6`K*T:P6J1#:V#1]M98+=3DL\^B;36OP7-VQ$0!U$2MT9>10L`;````&P````"
-M````10``:%2K``!`$0``P*@!`<"H`0(!]`'T`%0&.6\":1;X0FW'X$%GJB`Q
-M=3DO0N("4(`````0```$PJ```P.;B(O056IMP+*!.9?CPNT,<W&N'D?ZC9?.TK
-M!73W7PD6T4/6XZF/8(A^-TI1$K=3D&SE(+`&P```!L`````@```$4``&A4K```
-M0!$``,"H`0'`J`$"`?0!]`!4!CEO`FD6^$)MQ^!!9ZH@,7;T+B`E(`````$`
-M``!,````,-,N%NZ:K'[(4IQ09-[KNB7P)>M>.7B4,/DHM=3DF]G29X6_FDR#H8
-M#1C'AAB"41*W1E5.#`"8`0``F`$```(```!%``&45*T``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE'6+<8?"WKJ(``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``F'+"+H.B\<CD3E>O\45D
-M;,`\,S[IU.NTV`N)??JA/X13J@("LVJC92]Q]5F^G;#/=3D_],M,9"'NEJ]<P_
-M;B\B0YK2)!<-ZK?8L/(&_&X>RJMQ;/GP@$64:!3%G!5-SZ&_!(<;U0W)HX0F
-M66J\L7"E8+8DKH/0[VD':0XQ5/<[SZ0I```DI[N&KX>6X.&S2W"15BW^':32
-MH.PECYE\(!MFT'2%?RPI```<``!`!'BCM%8. at B>6<5F[`'%ZB.9UM:,V````
-M'```0`7).UL/H?5O4^U@:RT,+8N4YB2X=3DE$2MT9I70P`7````%P````"````
-M10``6%2N``!`$0``P*@!`<"H`0(!]`'T`$0&*1UBW&'PMZZB```````````I
-M("(@`````````#P````@``!`!@````$163D8L;P@[#\WC.C)=3D&_ at 27JT@U$2
-MMT8(;0P`N`$``+@!```"````10`!M%2O``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA1UBW&'PMZZB```````````I("((`````````9 at A```@``!`!@````$163D8
-ML;P@[#\WC.C)=3D&_ at 27JT@R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``F'+"+H.B\<CD3E>O\45D;,`\,S[IU.NTV`N)??JA/X13J@("
-MLVJC92]Q]5F^G;#/=3D_],M,9"'NEJ]<P_;B\B0YK2)!<-ZK?8L/(&_&X>RJMQ
-M;/GP@$64:!3%G!5-SZ&_!(<;U0W)HX0F66J\L7"E8+8DKH/0[VD':0XQ5/<[
-MSZ0I```DI[N&KX>6X.&S2W"15BW^':32H.PECYE\(!MFT'2%?RPI```<``!`
-M!'BCM%8. at B>6<5F[`'%ZB.9UM:,V````'```0`7).UL/H?5O4^U@:RT,+8N4
-MYB2X=3DE$2MT9-D0P`4`$``%`!```"````10`!3%2P``!`$0``P*@!`<"H`0(!
-M]`'T`3@''1UBW&'PMZZBH5%O`JLEU1HA("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`,;V0 at 06RNL1:H8R&D+_9U\Z-[-'6PXTKFE\;,,T)AU_TG.#-"YM(NQIP73[
-MVFPFU:E]\;Z at O[XW?SQ1!`%1>_YXZ0;7X(P*\<:S*OAO)=3DH$!*0'*LC&_RE"
-M?6GVDNZ<:R3MVPV.=3DLWU5_TL][\0"0N\WRRV):F-G`N?)_5(<BN\*0``)&\,
-M/AQQV at D4EZL*Z:C[,;<5`MJ_'M7X`$P>5!5?*>AV*0``'```0`2(K2XDR/("
-MF$+`UW5<T<>#&"XY\@```!P``$`%Z#3R05*A>!J>[)2.7NG$3+GK^4I1$K=3D&
-M)[X,``P!```,`0```@```$4``0A4L0``0!$``,"H`0'`J`$"`?0!]`#T!]D=3D
-M8MQA\+>NHJ%1;P*K)=3D4:+B`C"`````$```#L(P``T%.MLL'U09PR^I,2?-*>
-MES\"K:]ED6EK>C=3D:.X*BV'\P<WJD)394ZXQLTOI?`MFYA:&`U)U,W'RK`D4^
-MP]&K>28:RH>Q at 08>KSYFI+_5/>([]4P1%^H%0+2PQ/F@<$R1A0C^%LD!]W7Z
-M5GSOG6`T[\B0(?_M,Q3FEPOMY*I_Q9Q`=3D^RZQW/,U_P5K at P(6FVXQ%#`#G@`
-M#VWX"EHH#/Q&%6',_JR70D)&KF\S`<OH[!_C;QJQ#)-4OT17Q$""R!2B5S*D
-MHXO5$4.BK(O`V%$2MT:`UPP`O````+P````"````10``N%2R``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B1UBW&'PMZZBH5%O`JLEU1HN(",@`````0```)PD``"`
-MS$](MP%3#'^E2R+TP-C?=3D?4[^$B[2.P2;9*.H_$2*>D^#F+A&I9Z>52")(Q[
-M^],VWTH^^G;^$XP6))-(U`=3DS07?.G,6%_.F`D8;C(^GCV__8A6?L6!.X+7AL
-M<9[#<\E at _-DC%WX&BZZZ.LCO(\!M at D&]&24GCQ7OQ&R`#5$2MT80]@P`'`$`
-M`!P!```"````10`!&%2S``!`$0``P*@!`<"H`0(!]`'T`00'Z1UBW&'PMZZB
-MH5%O`JLEU1HN("0(`````@```/PA``#@=3D),)4J,ZG4 at 3S^94O<8=3DFJE$SLH^
-MU)G+J(V)7L1SHJ6L.<;NX'D4Z/?V@^]2B.*C"8!+ at 5M)-*8H$[J#'LEV\Y*T
-MV2'RV?@L0I=3D#4.>JBF=3D?BL%7#B]G4P0ZVS4`%DECTRU#!"1W)=3D#NXX$1U3L_
-M!$CRP.T55GGKT909@"6%O3NM;<<F\F8N1\3(S+!L6B$:T%TUI*A*2=3D!=3D%B]R
-M"9Z=3DQ[;,46(/)(K9USJ`U$(C(_C&H2/XNNEDAB/LIZE?Y#X?DL3Z_5\M:(K>
-M;41]XUR(:QS;^UMS:K0/FL9R2E$2MT9V`@T`_````/P````"````10``^%2T
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R1UBW&'PMZZBH5%O`JLEU1HN("0(````
-M`P```-PA``#`_FV\'@?1D5.;-6QD1:\BM=3D at Q2GBTWP*@:_0*EN[HIHXL;2;*
-M!-+L_;%']4<FMK4B=3D@^C*BNZMU=3D40X&09O.A:<2<M$?D+HL^9:C>O<^U`OW0
-M8"*D9?->&"SI&^UDUKA[?LO&V>YH\5!9)^L.^FBA97\4`R./EUI0CE@`FA_(
-MG00"%F9;'6414UJ3*;`.*H,EC=3DAD%&.>WP*8D,-`8\2KZL5?L%('!M+#&`7H
-M]&M'VK64R%^4PI$!,+_!'TA1$K=3D&20T-`&P```!L`````@```$4``&A4M0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CD=3D8MQA\+>NHJ%1;P*K)=3D4:+B`D(`````(`
-M``!,*0``,`#(%HGT[3F at JA$$.U6X)Y0>\7`Z/'>#\O`!OWZ26O,'H)!WF4GC
-M/E>KWX[Q41*W1NPH#0!L````;`````(```!%``!H5+8``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y'6+<8?"WKJ*A46\"JR75&BX@)"`````#````3"D``#"KB0Z/
-MR\$ERV_>9X0Z:C7[HL(FZ$5KT;2N8IR%>=3D-4G&VC06Y%H%AW;""IQE$2MT9]
-M1`T`/`$``#P!```"````10`!.%2Y``!`$0``P*@!`<"H`0(!]`'T`20'"1UB
-MW&'PMZZBH5%O`JLEU1HN("0(````!````1PA``$`GCV9\/2K-09+EKR=3D7,?;
-M+8=3DK_]-1RI`DCG43#)W/C<KNQ_/V%MQKIORXWA*P,M=3DI.X1S>G%)YJ%%A>CJ
-M[=3D>'@&F&A9,7>G2<+J9NS5&@N)WY8V]\M0=3DR(V-E(TX??$\B*_>/B%![QAVC
-M;$?Z+]^C>JAFSEQ!.00:M>!)*$BW at 8;0'=3D"BM!B7KV@@E9\QD6N!]%+\4V;P
-MU'N0K2B+3NL!\[:VUQUB8SR*L(Q[*8;BJ92K`<7FI)KPV(AP!<M(RN94?E-%
-M0K at V<MHM1C,ACH)O)D%P!]0 at ZRM].2]OY^>V)F7,.]09D;L(FD.T5_TV'+A8
-MCS*[2EX00Q[[\22$41*W1F!0#0`<`0``'`$```(```!%``$85+H``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I'6+<8?"WKJ*A46\"JR75&BX@)`@````%````_"$`
-M`.`$L)3ARW:^MIM[](4!?98^[2&I(7XJBP9RD)@,6R(;\M^_\FDL at A<7Y$5C
-M9=3DB"^*[QC0"$#]WLOS[QQAZ6,O at K21003O2<"$%&\%&Z=3D1$SP>H3U_5 at E8"*
-M'P%^RYEKH'9,[`/,:\+*K08M^+8'\&#JUP;RP/3=3DJ5)1A!=3D!W%<)K$ZW&R2A
-MR4"5?V?8].)6]N;/>)=3DG<:4[X%OS80-&9WWMTDC;H%W"6D9;5!-+5)>98H4?
-MHXX6C$\19).5WF.A6ERZ/8-';#R3?CLRY_K]-AR*@YY68C4L`BR at CR7F41*W
-M1NI?#0#L````[`````(```!%``#H5+L``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M'6+<8?"WKJ*A46\"JR75&BX@)"`````$````S"$``+#&ZP<M&Z?Z%1N7E[*$
-M[%XL`%7TH`,?Y]);$M!]\N5$4]RHTQ'^Y0,KPN`V(R+0_?+*W/ZESU:./+UH
-M;>>R94A`3_6RSCS^("WUJ6X#D"3_^`^(U]2<6,84"5U[(G!Z`V/IUON4#<*&
-M4,<[&7AYY*=3DS3;XXW`Z.*TDI;Y>U`&;?\]AM&#SHAL%6\!0,]LJ4:$)9G[)*
-ML`_S\1(#+P+*Z>P8=3D!0)=3D)K=3D3H*_745K41*W1C:##0#L````[`````(```!%
-M``#H5+P``$`1``#`J`$!P*@!`@'T`?0`U`:Y'6+<8?"WKJ*A46\"JR75&BX@
-M)"`````%````S"$``+"TN at H0Y<J*0Z.LQ#7ZM?#M!6C]PQ'@_8SHA>,8%JX[
-MIM;56<QT;)30<^]OS>`+Y&'H]A-_A5C+#?M%;11Z,$/8E6+J@*N!5N*Z(?7`
-M+9"&/S>6.7_^1L.[_6:^.!;W6?$""C>5N<4\&:N64KB\98\:<MH[BE/+5T at 5
-MKLU8=3DS_Y`M89:V/J([EYV':!$C'TZ]S^1!S`TN+#+;[G#M<, at 5NS4!EDDGS!
-M4J&HU8ZE41*W1K^@#0`\`0``/`$```(```!%``$X5+T``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)'6+<8?"WKJ*A46\"JR75&BX@)`@````&```!'"$``0"AUE?8
-M!+KYAZA.5/-6M<(PWTM<F_/Q&]<*<0:!?5`Q.MFZ//GAR2ZPQ<[Z0A6<[4 at V
-M3WI07KI28%N7&Y>OP9<7`B;`=3D4R*K^L8Z/O<'ZS_K)1L.A>]J".G:0]D4*OA
-M(K)3S'`I$B>$Y*5GPEH!8H<WA9P#O(23JRNP<I1F8V:H3TT500CQI9.+4BKF
-M>;"E=3D3848'R%*TG4..YHU64"+[-:&833=3D$V9/4[N4O;ZF/&2Z6UW&>^(9`<2
-M=3DTN\\0*N!4W'OBZC-K>7\,99>G3;Q@%1Z"K0-', at LXVOK85,YQX#.:,<&QOX
-M@/]&HJC5D\[>\$73;^G(V?EE\E9UP/M1$K=3D&GZP-`!P!```<`0```@```$4`
-M`1A4O@``0!$``,"H`0'`J`$"`?0!]`$$!^D=3D8MQA\+>NHJ%1;P*K)=3D4:+B`D
-M"`````<```#\(0``X.<H$/S^2X5=3D&[*.5=3D.>@D&=3D#67<YPJ/Z<5YN=3D]2\I)1
-M)M#>J"-ZM`K4VT]>8AR8-GUHLJ7V:RSIWBK\C2-)WUOU4;J^GD'2CSH&J*"C
-MQT]\N.2^X!3:NWU7]*KG9[4"'$@H_717RBF>PUS`<//%[3L\D7Q`P+7ZG/.\
-MK%$X5L%VD:-?;X.YGG>[?*'2>PQCI/CD`0Y[/#RN&;F6$*<9_C at -JKG=3D1FA2
-M(1RQ,"KM7S1G7. at I!!`TLXK at .O$;=3D.$Z:LW8:U,"LNLO*+, at 2X'3=3D+1AA.=3DR
-M/H8XN),"X=3D!1$K=3D&'[X-`.P```#L`````@```$4``.A4P@``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KD=3D8MQA\+>NHJ%1;P*K)=3D4:+B`D(`````8```#,(0``L(NJ
-MH/F";8\V[$,'",\Y]=3D=3D14[45C4[*6T^WPY7T=3D7WC:0Q'79#YEIB3D82RBR6M
-M!>$EWI3XOQY=3D,-)NU[OY:-2C!3 at SDJ9:8HXB)AD6%AO6C-)X-IQ"!A`_!`UI
-MAX1UGL0`2V2%4AW*S_O6:&;[$@8\]TBB2[LB^X7=3D"BI,G[&1?BTM=3D7\K/5K#
-M\E#T*WAT\KM*O)DO?]8E,S)\^E!XE_<8PQ4&>"NC4FOJ(G11$K=3D&@.$-`.P`
-M``#L`````@```$4``.A4PP``0!$``,"H`0'`J`$"`?0!]`#4!KD=3D8MQA\+>N
-MHJ%1;P*K)=3D4:+B`D(`````<```#,(0``L&]TD')@;_F)+(F_KJZ%0E_,/YS@
-MY>SDJ,,U>U<6=3D-:$ND!6V%\GX_K/9A_X,8S/'8-//@K5G9%T\_X0S4D"MC^G
-MLT1+Q,-,I*7@<Z*+;M;3@/CD#+?7$_OU=3D\XDGE+4'5,4C7Q)49M8<2OFS_K$
-M&ZM>CV4DT?=3DQ=3D>N,4(LBC>_C&.<,H4!ICC*%V%5N+CW(A/6;GOZ!]!TW,K-B
-M[*!;RL^$(H'5&-'N:\(X0K91$K=3D&^P8.`(P!``",`0```@```$4``8A4Q```
-M0!$``,"H`0'`J`$"`?0!]`%T!UD=3D8MQA\+>NHJ%1;P*K)=3D4:+B`D"`````@`
-M``%L(0`!4/%1KJ5!:)2^P_X4\1/VDH]SHL$_B[^Y!+>:I1-5%45CZ&,SSIN>
-MS\BCIC=3D2X08NX";H:C466\N"\+<Q#,#8<(27VJ93<7!?):J7IYCLM6GG03H-
-M4^Z,/3^S&HK^%`*%:,"V#!TKLUU9?Y$=3DJX!M!6#G(E+U3P$/(/$_,73B1/5'
-MF?$4N(,*<\M&:=3DB](:&&-.,2WH8WJ;VU=3D6`ALP(5DF-Z(;,2%$=3DU:I\C16O9
-M5I[=3DNW]*-XCGEY3\O3N<-W;%*$/#1["HSN_:[&WUH63M4#?1=3D)T[@0^V0Q1'
-M!S?"SGRY[A\_\K2WPDI[ELGC0S`L^@J))>+GC4G0;T/C60PFZRY[.J-(0>@_
-MJ]?-FT*<OO2D4P2[Z?]<HX+U4]G"CRV>>OQVE_R"'9%JZ\W`9"K_F<VVO3;!
-M12B.)US[JUD)'BE;\XH at L8BLXZ4'FU9^41*W1 at D[#@!<`0``7`$```(```!%
-M``%85,4``$`1``#`J`$!P*@!`@'T`?0!1`<I'6+<8?"WKJ*A46\"JR75&BX@
-M)"`````(```!/"$``2"^FD+AC?8FB8OP*;[;S$U_,48$=3D5HX'%IC2WNHF4L>
-M,R"G at _;,LI]LHT)3M-+-6M([^=3DT>!BR:^:)J$--1CK04DS)+4V)2\USLZ'PK
-M*4=3DA#WOH`^^QP`D)(`$:O?G]`@("X6O@&J&6HS.M_;A9%0OMGC^/F25AAFYD
-MX6\B3F3;C:]R![+/IMH1.;A`*`X]AE/P`Q]>S=3DH at RMB0W_N_020'>)2B`3D-
-MPLK057"&\3=3D+CK]A)-!W%Y(//URYW5,81)19"-6]^!PP-U<3P"6/_L9N3S&I
-M:_%)TT*!OL)?1\"$_'2T9$N/O.7:V6G6HC3,J[$K\7X&&.L7[,CU-%?3&4I4
-M^>RK9("RVH*K-$<5V&OZ9/>DYL;V at U'\'V/B_5$2MT:,8 at X`?````'P````"
-M````10``>%3&``!`$0``P*@!`<"H`0(!]`'T`&0&24#25E%JNL2TH58#`,U+
-M7T8N("4(`````````%PJ``!``E9W5`\XR64PHHRQFDYRPLOV[?TUNX(4/W2>
-M3C\406N%6BKF(18NF'6O\S*RVIS\?!_:XO-Q.R6?&CQO41*W1N=3DN#@!L````
-M;`````(```!%``!H5,<``$`1``#`J`$!P*@!`@'T`?0`5`8Y0-)646JZQ+2A
-M5@,`S4M?1BX@)2``````````3````#!524`,Y4DSN',YG09+3<E%QH9!$PY$
-MB4B']8Y&2-`\?,$,^[G4H%.!.$0IA%$2MT95?0X`;````&P````"````10``
-M:%3(``!`$0``P*@!`<"H`0(!]`'T`%0&.4#25E%JNL2TH58#`,U+7T8N("4(
-M`````0```$PJ```PS.DU^5Q&/F5'ZN.L!N8\_L$Z4I>+#N-HV?86M2UV_W-W
-MO'GCY!W=3DG&/)Y=3DA1$K=3D&:XH.`&P```!L`````@```$4``&A4R0``0!$``,"H
-M`0'`J`$"`?0!]`!4!CE`TE91:KK$M*%6`P#-2U]&+B`E(`````$```!,````
-M,..H\`-8-\0C8OE3L4W/G*U(A_T6.?$E'Y0UJ%E+PH984OHP\A8<)4:4'/$E
-M4A*W1KI'``"8`0``F`$```(```!%``&45,T``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE9=3D+>Z5P$3!<``````````"$@(@@````````!>"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``J+X*0K*N<CQT6EZWEA$I$?=3D6?I#*
-MT)W"0?:0.7(@',#789<QT at P5)KK$>AS<JX/$9<JQE^>2>ZTO[^@%_88"";E"
-M1ZYMWCP3,I#[J$F8$$VZ:HP at U%,ISB*[LF!;/'3&Z&5/D/TZF-R.U$->PMI3
-M_<RRG.EE7N9':S"X(E=3DM7_0I```D:AX.--=3D+&X*L=3D:X!CM7(4N\6^M)ZK67`
-MH=3D7.),A4^DTI```<``!`!*7S^_Z:/N?W'"C$98I-)3O-[\G"````'```0`4)
-MRQ^JCY]:3>-C2TW%1)+O;I6_-5(2MT:(5@``7````%P````"````10``6%3.
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*672WNE<!$P7```````````I("(@````
-M`````#P````@``!`!@````%B4G=3DQG/,D6H+ at J,3+,N30\(6^5U(2MT8=3D9@``
-MN`$``+@!```"````10`!M%3/``!`$0``P*@!`<"H`0(!]`'T`:`'A672WNE<
-M!$P7```````````I("((`````````9 at A```@``!`!@````%B4G=3DQG/,D6H+@
-MJ,3+,N30\(6^5R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``J+X*0K*N<CQT6EZWEA$I$?=3D6?I#*T)W"0?:0.7(@',#789<QT at P5)KK$
-M>AS<JX/$9<JQE^>2>ZTO[^@%_88"";E"1ZYMWCP3,I#[J$F8$$VZ:HP at U%,I
-MSB*[LF!;/'3&Z&5/D/TZF-R.U$->PMI3_<RRG.EE7N9':S"X(E=3DM7_0I```D
-M:AX.--=3D+&X*L=3D:X!CM7(4N\6^M)ZK67`H=3D7.),A4^DTI```<``!`!*7S^_Z:
-M/N?W'"C$98I-)3O-[\G"````'```0`4)RQ^JCY]:3>-C2TW%1)+O;I6_-5(2
-MMT8<B@``4`$``%`!```"````10`!3%30``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'672WNE<!$P7U!]-.\.A:B4A("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``!*`=3D^!&
-M8F;!P:55;IH&(@^<)]S/$+&KC<2F%A3\Y_[D,?USK'OFN,A^%RJ+_1/UAH1\
-M.9.&6R%IPYD&5X?7:(\?PSJYBWW_976TAB*JA7+,%NW-<W>&T0XP3*<'R?@`
-M<<]E`<0X>[FRHWLG/ZWP8)\I&!YWP'"6P&WX%UU]2\!^*0``)-\HO3;Z3C"B
-MP5,H9&LX,L02@)P3J--+BQ33U%JO_&O8*0``'```0`2ZR71",5EPT/U6-YK<
-MVB,8H+IL+P```!P``$`%F!.LL3[40U*#%;R#78<=3D)5OG6(A2$K=3D&V+H```P!
-M```,`0```@```$4``0A4T0``0!$``,"H`0'`J`$"`?0!]`#T!]EETM[I7`1,
-M%]0?33O#H6HE+B`C"`````$```#L(P``T*WQ]:"**O-VL&PS>0+R-DFG3YV^
-M\#5?$I:;5\YK)IK*=3DY=3DC)@*T\$*`2<=3D%T-J#EWBIRE57Y<R*//Q/*FW*'4`Y
-MK'VLS.PLGF2=3D5#(,Y0WN4IOZB&IB)^TN$9*SX#D8GI5Q:@'ZY-("#Y%#C+SY
-M-@;)!`87(&28Z82A/?`N1ZN4>(8QN(-KJ[AU\IY5Q$T.H4=3D^!^OADZ:Y)R\2
-MH`&5<K@^L2RMS@!,WJWK\2K.E at Q@%+\C/ZT%2F`$1%FN&!XJ)UL1JM^3L?N?
-MZB_[K5(2MT:,TP``O````+P````"````10``N%32``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B672WNE<!$P7U!]-.\.A:B4N(",@`````0```)PD``"`+=3D\!_4")
-M7`\KCTH-/`79"1H:NKOT0KFU:NP/!GH<^D(3 at 6T@6SLMGE3,ZY!L28::SD-@
-MK-UC2CL(*X]0'[X/#E"=3DA.5T\0YI8VEW`7V:3%\#CVPDA!<C]RYAXEV(?E+M
-M(?F<*(^#E<;J%@%IM9J+*E=3DJ[1R'YGMK_MWOYE(2MT;)\0``'`$``!P!```"
-M````10`!&%33``!`$0``P*@!`<"H`0(!]`'T`00'Z672WNE<!$P7U!]-.\.A
-M:B4N("0(`````@```/PA``#@$VB,%?2M-`B(F(>+P:&B/8F-!V1_7GBQIGN&
-MD7S(A%29KWP!*(GE5W<*`&]?_(T2\*/)<+E`]W!-C9@]DGY084_5`OA.&;T"
-M>K)0P=3DTXW7O%V]MJ=3D_6J,7)C(+9\<;I]TK+0OW,G(2-Y77(&:_/URAQ_TRW6
-M]54_1]=3D0,?%S(31'>])EV2+Z<F*W_@!>+4(0:<CH6`,C<3,W*C)6CRM3WQEU
-M&J4R;Y]+N_"P]9-1Q$(?/20R+IW9:LR6MJ5CB$245IU at 8=3DQ]@T?\H>3(@`@/
-M!9]%8GXJIL](P<',N%(2MT8U_@``_````/P````"````10``^%34``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R672WNE<!$P7U!]-.\.A:B4N("0(`````P```-PA
-M``#`0-UM@]4KK(?Y)$]6=3D"#5I at 7Z#(.=3DK>+Q7_O^R!],+3WS#K7U!,/XA*P*
-ML`*LQ+AXTI,$&?6S,AL7'1.(S^U.'2^UK;8>T6O\.BP9EJRL<(9U"'8[7Q59
-M>9Q#I/U7!+&6EQ$\"1"Y$C]K#^1OY'VF/*0N-5K7N\>TVN'H1Z+,3B+'D%OL
-MO:48:J9B!G_?32F&&/=3DK35*8?ZC+7$QNQ2%:"\VUJK^(#M*8%7,A&=3D:I3:*A
-M6A7%8F(P-MBA6`!2$K=3D&UPH!`&P```!L`````@```$4``&A4U@``0!$``,"H
-M`0'`J`$"`?0!]`!4!CEETM[I7`1,%]0?33O#H6HE+B`D(`````(```!,*0``
-M,#$[/UE.I9J4KXQ,P!&>IL!:*NDDKZ6#4Y)L`-0*54$5PM?\.8,A"/BX^`3A
-M4A*W1C`H`0!L````;`````(```!%``!H5-D``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y9=3D+>Z5P$3!?4'TT[PZ%J)2X@)"`````#````3"D``#"\JSKM=3D<VO0$:L
-M3AS8JQX4SL0K=3D`8H*9[.`P<8SO!)4N[-?#W7S,E*L]0;?5(2MT;40P$`/`$`
-M`#P!```"````10`!.%3:``!`$0``P*@!`<"H`0(!]`'T`20'"672WNE<!$P7
-MU!]-.\.A:B4N("0(````!````1PA``$``QD9<XOZ`6G_#V13RBV<IFC&58*G
-M0"U\$=3DMJ+A&L=3D3<<$&1:8#D:M`!CJISG&\-$M3Q?3OI`"WP+N"&]-`!M[]XN
-M!"K$"7]KD(Z1C?KGW+%JX5KS,*>J&1L12Y%$\RWP:6&'YV7;*96UQGK7QDI/
-M,O9)B')+_H$F6D`)XS>#&^B0+WRC^[=3D<8['7/)MC7NM5HQ=3D0;4!(S&(;YRK$
-M54H]=3D=3DO5?XKUG49+[FS12M'3X]7.<_F;[-D>YO1ZCQ:')@'RTI%[9_F+2%J4
-M`:?H_:FLF]&(MO.GFGM5<I,`ERL$!U%D6J)6 at G])/6J=3DB`K6>3PA6E.=3D<S:2
-M6\W;Z-KA4A*W1H-/`0`<`0``'`$```(```!%``$85-L``$`1``#`J`$!P*@!
-M`@'T`?0!!`?I9=3D+>Z5P$3!?4'TT[PZ%J)2X@)`@````%````_"$``.`CD,/)
-MW`R-2XB??HNBQ-FSD+<45E,P)AS-)EQF`/A,'G:&"R68.V[W^4=3D8PSN%BU<9
-M-:#6U"\[G(=3D)91GD^H-]1>B)0M0#=3DY8#!!OIXVHW7C#B&:(*Z76\+0.\;<NN
-M!D>4V-3U^[O%$+5H*X\7`^+5"!$"GM-3+@"%HO^(KS)CB%Y))<>EFB6>C%=3D&
-MVC#GBS#/"ZK-]]@"-:X9!;)*, at 26A*'#=3D&UUFJ6`7,;G'6^YEM<#8FI,@#P+
-ML`QX2^G>SXRQWN)92/_NZ\;4M^V!W\OF4_J55[]2#+WEH]^H4A*W1H9?`0#L
-M````[`````(```!%``#H5-P``$`1``#`J`$!P*@!`@'T`?0`U`:Y9=3D+>Z5P$
-M3!?4'TT[PZ%J)2X@)"`````$````S"$``+!`KJX,)=3D$(3O"VT#@*@M<=3DDR;1
-MSF6<9L8^/K\T^0U2"+]U(@5[!>0HN^'M5.J3C![@>C9I$A6_0V.DA/3(L^B&
-M`UHFQ0&,%]MV)3?E4T:6=3DE38NIXRR(=3D#A[)2+HJJ;&FVDTQ>B6;R@\WW+BC5
-M)H=3D:=3DWMA:.ZH9)_?%MP*1R"W_;5>]52?AH0`+]0>`Z.);/&!"LF[02_Q<V53
-M,D-\H5:BYV.]B+^D!B1W-M774A*W1KR!`0#L````[`````(```!%``#H5-T`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y9=3D+>Z5P$3!?4'TT[PZ%J)2X@)"`````%
-M````S"$``+#4HDUJW/'Y6(I)=3D`6\[_ZRX!/U&Z&KB)$"F5DP6;`[)DP<\V6E
-M;Q7Z+6%JPAL43\#[$H5VDN3FS+8I6NQIO%/)[K/!+F`-'Y&0&R=3DVC at KV;_X9
-MN;FB!M4ZIB5^2Y6RGL(LE(%6-V/3D^O:^:JI[ZY@]WRLW?1;7XR1Z/T=3DR^T.
-MC"H4O=3D9V+`&;8H:5%LSF`QDZ3ZG)0<B>><YQ1S/!@%P("-X<5S<KPA3X,CI3
-M4A*W1BJ>`0`\`0``/`$```(```!%``$X5-X``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)9=3D+>Z5P$3!?4'TT[PZ%J)2X@)`@````&```!'"$``0`^OU20SEM7?'5C
-MG%\YO?T%Y!S3G[EFX>=3D,":-@"V#+5.)<8R(?R<[)Y<2;4^YUE^?RM)09'^UD
-M_W5>2#@@S]08)/Z,%%9+1'(0L,8/*"GV^P,RH()-D$ICKRSN%C;>]%.Q+=3D3Y
-M>!IR5615[7CR_BF&L2^-`D)1/.K#+BXJ$.JN$!Y=3D at _2BJVGOG'XR6?DCYLTW
-MP0+)/&8R^M3'/,*JW[IL(NB*YH9T(0)^V5AMR[QU[KJ*X&@KG*2DB#D?!-%%
-M.!2I4.:'?`+W"`H-`OJE['YX/&`C/<D[2YOTU6M8H**;9^BG;_TP"*2$F]+L
-M.`%G#;=3DX]/8&\X$R2M[X[^!2$K=3D&5JH!`!P!```<`0```@```$4``1A4WP``
-M0!$``,"H`0'`J`$"`?0!]`$$!^EETM[I7`1,%]0?33O#H6HE+B`D"`````<`
-M``#\(0``X`9'?><#R5T[><*Y^PD-PD)9^'6,]+8"+<G;/;$N%9]OC14>CKQY
-M`Z98!UO[/._G9:91A>"R5IX>]+"I4ZK at 1UZY[%)TK![(N at MWT'O[81Y,-9*E
-M5]8"/F,;(AB3.\`*\,G:LM8ZN?\AUDA+I/G[T6>[XQQQ1C[O[-DH5D*W^F=3D3
-MO'S>:#I76=3D8H`%.P9>1!^<4;TT$SD(5X)*/B^.658FU0-B#ADVWIHA*[4K'B
-M#NF0=3DXS@=3D!C1:#[N201`-_9;B2"RY.FI9DT*8NKC)($2(/;&L;)]I*^;GF?A
-MVE]2$K=3D&6;L!`.P```#L`````@```$4``.A4X```0!$``,"H`0'`J`$"`?0!
-M]`#4!KEETM[I7`1,%]0?33O#H6HE+B`D(`````8```#,(0``L+\4Q6,N4W%<
-M'B^%KGAF:D9PUK!)ZQMV>180Y'I,;@E5U@(Y^P^7D=3DR^I7@#%Y>CF?KM\_%J
-M`CW[37N_YY4"[8G/,(5FY1;1WL5H#[WW&!DEJ>&;8"ZEH+J`@,JR"")3B.:(
-M#?*+*?$08Z/>R;;6'.5]N<IH&MUM:)_@<EA^V!:J\7<5HMW'1-11P'R52NA=3D
-M4%`9 at .::@E)2XML\7:OJ!/'Q0UY0W?EU4CGN;)M2$K=3D&X]X!`.P```#L````
-M`@```$4``.A4X@``0!$``,"H`0'`J`$"`?0!]`#4!KEETM[I7`1,%]0?33O#
-MH6HE+B`D(`````<```#,(0``L,6Q\%-!XG4%P*6E-I3W#GZADZ0^I5D<W^^[
-MEXB50DN<?R[(;;Y\HFJ-"<34-QTL5/*Q!6F?I$RZRPSD at O+^PL?/I<<H"0%M
-M5MI+F?`V!Z2N#0%2$S$X<G/@!9(K&UD;EQW&$UPJT?/R71S3K(+>4Z5K[<`]
-M&\KMQ2<1'1EQP*>Q62>JA'VV!?O9E_3M;CFI1*-*BB^J_C=3DO`S-,\E4M1@*]
-M%65OW?GQHD@$LJU2$K=3D&&@4"`(P!``",`0```@```$4``8A4XP``0!$``,"H
-M`0'`J`$"`?0!]`%T!UEETM[I7`1,%]0?33O#H6HE+B`D"`````@```%L(0`!
-M4.FZ1!^?;_;5\I#M6*ZN:\L,A!W[RT+G`P_3P32:C$@U^E+3,C\*FZ)Z\/RF
-M:ZAE!\^BUYZ93DO;FV9?\M>XFEZ*AV?09SOG<9VO\0R[J]+?:+%UDFM0MXOY
-M;D^AJ$?C98-8;D;F4GG:M=3DT*''UY,`I<<,1C_,D at T)=3D2M1K#J]#Z`D;N^YL2
-M,IC4`XT(8*)X*L8,TO,AJJG,AB2X7*U"Z;5?6N#CG%.;14&1B)&'/KLV6TC&
-MO;(D+U6<E/#OU"DW"\9E=3D5,R.KG,2U(`M9%4^IQGP>4J[&$&[!?-2.*B)[[1
-MU[QQ'ADHE7VW/N6@/7XX<E#@\,RJ\TS#,H2DF"*D:H,>F]J!_J7AU1$ILX.R
-M\#OGJ'=3DT;N]H>[D`DC*&JV2+AE\O8WA(8<1)/3.HV_Z(&4E*/H1((RCQ.-]V
-MQX&L2KIUW$6V7U=3DMWLEQ6LY-4A*W1H\Z`@!<`0``7`$```(```!%``%85.0`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<I9=3D+>Z5P$3!?4'TT[PZ%J)2X@)"`````(
-M```!/"$``2!5X0\<HM475JT\/+4F764?W`[]*W26].-?NZ&X9'L1O3B88U-9
-M/%Z.(L!)[K0G<JYY8&J#/ODM:?)S,%)6#8E at IM&HR8&-"S2P[JM:DE/=3D87RA
-M at VA(IB]4*H'EXUWFR@<[@(93Z`_L+#?.]LZ"9&8OD\@L,?SJ]_JBDJ/9"(H<
-MGM7<:>HGSQXBS#+Z\:=3D`N;V(4GUC_1(#4TDU)$(OYE>-;"O)L`F#<99;-SA?
-M\[.M^^*5"CAMH[E=3D,<SG=3DY"?_Z>7'6%]'UFW:%$'I3P at 2?+8AL'0EDN1Z_3N
-M]!Y80A/]Q8N at -"HDSG029WY<QB:T%+1T+B=3D1M/D&A<+%V*@W\.;B at 3!E1L/5
-MF%A&30?/_;XL*OF:'JZV9?BICG=3D77U(2MT:J8@(`?````'P````"````10``
-M>%3G``!`$0``P*@!`<"H`0(!]`'T`&0&2:;149(-,<SB.G>9?X]5 at HLN("4(
-M`````````%PJ``!`0CV!-UA':8YQLY4,:_(Y at _,DO0P(A]TV;YOW^<_*+IOW
-MO92%V[*0I"#3F at P#1 at L9LVGB*?_]+V?TA6>"4A*W1FUN`@!L````;`````(`
-M``!%``!H5.@``$`1``#`J`$!P*@!`@'T`?0`5`8YIM%1D at TQS.(Z=3DYE_CU6"
-MBRX@)2``````````3````#`CHYV7%;CX71.M&5ISR7`I at UUM@$+V-(E0]"4"
-M=3D"R,L=3DGK]6J98M&'OD,R$U(2MT84?0(`;````&P````"````10``:%3I``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.:;149(-,<SB.G>9?X]5 at HLN("4(`````0``
-M`$PJ```P!:"FO9(6]OK=3DF#8JDS.O[OSW/:4.5^Y\L>J2'80)IG-)`9F2#.[[
-M'SC_7P]2$K=3D&(XL"`&P```!L`````@```$4``&A4Z@``0!$``,"H`0'`J`$"
-M`?0!]`!4!CFFT5&2#3',XCIWF7^/58*++B`E(`````$```!,````,),5=3DY*-
-M.P^RD#4FW$`'92N&&R$3_&.&;O5837.'_?1/;2)@RAWGA-D;!J^Q4A*W1EV%
-M`P"8`0``F`$```(```!%``&45.P``$`1``#`J`$!P*@!`@'T`?0!@`=3DED<%A
-MK+F*0XL``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``_2:JZF3ZZ^WS at 2"T[Y%^Y(66RA`CX!L4>L1S
-M'#H;89">!1!N:J$HF]0<'XYBW`$N=3DN?*-GV<=3DI"BO`4K+,/>?"X?`IA;@-0]
-M""#?CMPX6^6A)NU4+>\-"^T%[.FA5U[L((SZQ144L:5Z$N;#Z7^1AZAO3PO;
-MWZT/KW-G381H'T`I```DR6T]V[WP"54WK8\593@^3UZ\]7MI3/-4B:(R.+SP
-MG'\I```<``!`!+5\H6UG958.(N62JBFAPPO;V%*:````'```0`4'&XV>R6RR
-MQOF46PL0<Z.ED3`<DE(2MT8+E`,`7````%P````"````10``6%3M``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*9'!8:RYBD.+```````````I("(@`````````#P`
-M```@``!`!@````'A?%X;2J9OZ6YF%;;J')S-Q&<3\E(2MT;8HP,`N`$``+@!
-M```"````10`!M%3N``!`$0``P*@!`<"H`0(!]`'T`:`'A9'!8:RYBD.+````
-M```````I("((`````````9 at A```@``!`!@````'A?%X;2J9OZ6YF%;;J')S-
-MQ&<3\B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``_2:J
-MZF3ZZ^WS at 2"T[Y%^Y(66RA`CX!L4>L1S'#H;89">!1!N:J$HF]0<'XYBW`$N
-M=3DN?*-GV<=3DI"BO`4K+,/>?"X?`IA;@-0]""#?CMPX6^6A)NU4+>\-"^T%[.FA
-M5U[L((SZQ144L:5Z$N;#Z7^1AZAO3PO;WZT/KW-G381H'T`I```DR6T]V[WP
-M"54WK8\593@^3UZ\]7MI3/-4B:(R.+SPG'\I```<``!`!+5\H6UG958.(N62
-MJBFAPPO;V%*:````'```0`4'&XV>R6RRQOF46PL0<Z.ED3`<DE(2MT;6RP,`
-M4`$``%`!```"````10`!3%3O``!`$0``P*@!`<"H`0(!]`'T`3@''9'!8:RY
-MBD.+95]24XL0A%<A("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``*L%Y&&?C`)-BHHH
-M:VEX)8O9(B\U3_AGCY""G8OSTDR?F at 6^[,N#Q]\25/TZNF^>*YQ5"MF^T,::
-M51'\O:>HO29%/66R1LHG'Z%_%.KULA[MOKH`'F?"1&:PHSW+<,X<FL*R-UEQ
-M>;%?5+>8D->'O,6OJMRKTVU*U*1>L@!F\0EH*0``)%,P`HP4L1M5Z8H8/:'?
-MP)@V/IDS)<(JZ#:LS#3RQ4<X*0``'```0`1](BPW&6O#G=3D/)@L[ITI("HYK)
-M<````!P``$`%KP)SO'U9_]5*0.+;*K52!YI08'Y2$K=3D&5_D#``P!```,`0``
-M`@```$4``0A4\```0!$``,"H`0'`J`$"`?0!]`#T!]F1P6&LN8I#BV5?4E.+
-M$(17+B`C"`````$```#L(P``T.<V[Q>"1@(FF^]_H$I>85(N6/QO<D>U9ON`
-M]&H!X0R^X[VW6O)9$,_`4H<8J6K=3DI\`18K_(=3DR>Z"Z&I)2!YNRBX$Y]2R0@&
-MP,O(/JK>TP]Z'<O_!*)/[U>_NQB9X>LX:1>3F7P6[,%)NYS2R9T#GM?/G,!,
-MY`1*/=3D#Z7QP`2;WKEN(`NQ;43<IX;G^I:*8'WWYQP$MBW.T1.6+H<;(G%"W^
-M[_C$AWWFBFG8K+(^-6NP]D@"9KW;#KP+JZ!1[1P#UD\O`W/V#^Q&,_#V;5(2
-MMT:'$@0`O````+P````"````10``N%3Q``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB9'!8:RYBD.+95]24XL0A%<N(",@`````0```)PD``"`VA=3D\$K]>HL"?ZMJ8
-M$XE.+`'><GONM+F1BGP%H1F)T?N:YTS%[^4H67)VZNVP<S!C5E7WZD"'EXDP
-M6:Y.`SYK*/EZE.E7,OMKN`P'8X<&5R.<S[?LZU:FV-U\IP4G*ZI=3DW!'-H1YD
-M^U4^%*E(TJ,8DM(1U=3D at IA^QA9`\2FU(2MT:=3D,00`'`$``!P!```"````10`!
-M&%3R``!`$0``P*@!`<"H`0(!]`'T`00'Z9'!8:RYBD.+95]24XL0A%<N("0(
-M`````@```/PA``#@%)43[YT.*>11$WOK4U'L7 at C-?!RD4,7BK>%G8R>]%\6Q
-M+I4R8K#O*<S$2/AOHEAT4T%.4I$^-JLO>@>'RP4E?Q,R`9E](]<5]Z0)LPM7
-MY\:CIRE7=3D:*@B=3DX!2^(5_"GUDINC93>C`;E,"7>G_CZ0BO_VIC1`(+_?+VK-
-M7HC08[VAIED4M/GCPC87D#J1]&;PISU=3DSN,>F1E`#SE9Z3)=3D45P*!]^, at YL^
-M(+\"/L0]9*@8$0'+M2._1>`%P23ZD``EI,=3D;&W)DG!`N\H][RX5'+K`LJY6M
-M:TBH*FI[(%(2MT:6/`0`_````/P````"````10``^%3S``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R9'!8:RYBD.+95]24XL0A%<N("0(`````P```-PA``#`CMY(
-M.7[O:>;O(@F;:QU%7#8M7Y32E:=3D%TN!-558AWZQ./;X1`;\-BK.=3DGPQ*[,9,
-MBV_W.+D28F9:BH at 7L-AE)+A2?B#OWZQZ3RB\EV]@XF>VR/D+4!51,H:"LEAK
-MB+>?=3DYJ?G\AF[[M@?^$S;<(0CR7%/MLMM442`?KK](%6N)P)+P9'UYS;ES&<
-MQ-!_W`K+(U1UF:"O1>062><,03``R)$J0VFUR4%-;5@["`=3D08CW\'+2$0\RQ
-M_T%BWZE2$K=3D&)$@$`&P```!L`````@```$4``&A4]```0!$``,"H`0'`J`$"
-M`?0!]`!4!CF1P6&LN8I#BV5?4E.+$(17+B`D(`````(```!,*0``,$=3DQGJ#B
-M8\^$\UNBHPN82KO"\9P`7,4]W^*(3^M8<&&#6:4-.OM+G#5HC<^F4A*W1H5C
-M!`!L````;`````(```!%``!H5/4``$`1``#`J`$!P*@!`@'T`?0`5`8YD<%A
-MK+F*0XME7U)3BQ"$5RX@)"`````#````3"D``#"_#H3L*Q+Z,8Z1D-MD_^.2
-M'OT/RS:R=3D&^->[$$NS#/BA=3D^UH8Z7@/YR%^KEU(2MT;=3D?00`/`$``#P!```"
-M````10`!.%3V``!`$0``P*@!`<"H`0(!]`'T`20'"9'!8:RYBD.+95]24XL0
-MA%<N("0(````!````1PA``$`HJI6\AB9.?\ZXUF=3D`V."RF/+^OQK4/]`26IU
-M#49D,'(,QZ\@0X*A7:8W5(_*CJ3<]Z5_]J-W15PU[DA]4^QESFC]$FK-LD0\
-M$O^ET]]MPZ??E7+?DW&1.DQ64*J!O\GX]AP_5KM1/-I#3YD"!-N]YY=3D]GVVE
-M""(!58/6;[AE2I4NRX1DF/PL9<+;?5M)_F(5_/FGV!X,=3D!=3D"8[A at R>"<FEA3
-MYVN>Z(S]UUCX5\2O<.[5J4TE.LJ1I<4"R0T'?!_$BB@!+^=3D_<!*HUN0=3DQKPE
-M8$/7Q6X!.AYHM]*,T[$!];JUYA]:<"Z/7![Y\JO1J9&=3D3@'U0LYA(N"=3DJ/P$
-M4A*W1L"(!``<`0``'`$```(```!%``$85/<``$`1``#`J`$!P*@!`@'T`?0!
-M!`?ID<%AK+F*0XME7U)3BQ"$5RX@)`@````%````_"$``."C7EFY;*``M8^#
-M8S04@)M+[6$-RO at E:2P4[DXG`H<1VYN./6%6#8,XZYGN"<HNON.W*I^,#Q*=3D
-MKOS-UX7V13)Q at OM)YX']DA,TM<+N6^C-/",FR#)[J"JTKA$VLR%F:-=3D3.^@U
-M5#'NS3T;HF:*12Y1_5.^PGA]&4)7YMJ?/'PLHY/]`0%DL>9&CCML];7(V4GV
-MNTY/$Y&C?]R\Z75".,!<$Q9%EM\K[!&KDP:37P=3D1X7#/2>FNO2N*`;[6O6S@
-M];'''U at F,A\HP$QG]76B&&C&0S[F,]U9IW<CZDM64A*W1FB8!`#L````[```
-M``(```!%``#H5/@``$`1``#`J`$!P*@!`@'T`?0`U`:YD<%AK+F*0XME7U)3
-MBQ"$5RX@)"`````$````S"$``+!%BMPTZ$514*6?A%U)73-5>\GZ&>?I'IUB
-MOQ8NYQCB4$>Q=3DU/Q_J:,X>`H<2B+M09LF'?]4ZQFIP=3DLV05%VDE=3DJ3-ZW?9F
-M7N-CNY^!9Q!@7>);/(6!L=3D=3D-&SP\\=3D,6;/VYI`.D8E7\</RC'\L?^O7GZ``A
-M48=3DE\/=3D`/(Y[EKOCM>#-&&YC^+J7=3D!LF9H6G^:(7GJQW8+7V#3X`!.]93A#5
-M/OIJY6>'W`4H!"XY4A*W1I*Z!`#L````[`````(```!%``#H5/D``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YD<%AK+F*0XME7U)3BQ"$5RX@)"`````%````S"$`
-M`+`4QZC5C/<ER5,YI[O*]![HU7PR"2_E`4X^=3D29>?N/>?,<(C6KYI<H^>JA+
-M.9G!AK"UA3\PDSMPY!<."JMLUW\5/[#5<CL-7;MYK%5;K3D::BJ1.&2_!946
-M-,<FW05YUC:?O6_RUZ!*-XR8E^31&8V<,GY,HC/]])NT3FT2I3=3DSU:WR#(RF
-MWAD=3D^3Z&MQ7J.=3DD%L9I[98,YM>;QZ*_*<<5=3D?I@!OJRF"$K^6X?94A*W1LG7
-M!``\`0``/`$```(```!%``$X5/H``$`1``#`J`$!P*@!`@'T`?0!)`<)D<%A
-MK+F*0XME7U)3BQ"$5RX@)`@````&```!'"$``0",J7=3DQZ8(D*U9(92H2.5."
-M74QPR491H4Q+DP!21UE%83PJ,=3D`VI2NE_Q%7B\0 at U37]1$'K+ at EL$!8[XM5P
-MB#V%/`)(O!::KSU>:.(F6C&W<VG=3DV2=3DUNF@#6%T/BISS,;*XD3"2TY&K6I=3DR
-M":?H#;KX%Z at XH/Z9H$BUXQ)^-QF+KR0K'=3D4YEQI@[L.42?HX0 at S$*0`-XVON
-M?:V+K.U`V+[HZ>(P>7'L0?0U1I&4.!/08HVM@%`4__C'HC at DP2JE!>Q*)KN(
-M\).%ZO\WW2SG^=3DC8 at M0@%;,'%;^$KUQ4P?.AA3ML%[>Y]LT12KU\ZZ/4R9B$
-MKZA*8"M:<BH``Q92$K=3D&Y.,$`!P!```<`0```@```$4``1A4^P``0!$``,"H
-M`0'`J`$"`?0!]`$$!^F1P6&LN8I#BV5?4E.+$(17+B`D"`````<```#\(0``
-MX(DTEYG'^S+_J?V\]*]&?F;I<&1#"2]J at -1L,%7H$]C*;]E3N*=3DXA$G&H0$V
-MF6''JNQ`$ER`/[@:OKI;P\*P2D%EK'C-89)"PV634JYMO!);,%;`>CE-3\A@
-M!F1`0!7%2XJNG&XO,5B8;R4_TQ"TK7K*8LF>-:TS+'M(VL]:8^16$]\-P>JC
-M-#I9N^:CC]\:`S*S0M. at 6ZU?SK2.V(T4LB<DL^/D`T$P@$=3D`BH\YAZ/1[M7$
-M,0CZXC/H[_6"CQJFGQ42)IZIR$\2U^LB$G99#.?HX8T2]KZ6;MO\<\92$K=3D&
-M%O,$`.P```#L`````@```$4``.A4_```0!$``,"H`0'`J`$"`?0!]`#4!KF1
-MP6&LN8I#BV5?4E.+$(17+B`D(`````8```#,(0``L#?-X?2&0;()>G4\AES_
-M34JM_)$.&2EL]'O',T.\FZ,JB0+*^U_8ST'/]TD+++W%^<3)@I<@SWYXWTTP
-ML$Z'GWN7D<=3DOO%*;*"%UDSN-.@#9^$/%=3DMGGV6BS$D**^1"*@27&7'C&:]YP
-M'2ANW9*4'.M3B642IO^(F!AT^2-'-I-`9 at 5K-7E5'3[!?^*.TIT:6#0*_DBF
-M"2W/EW:&0">5Y#N7+;@E@&S6L2PBMLE2$K=3D&'A8%`.P```#L`````@```$4`
-M`.A4_0``0!$``,"H`0'`J`$"`?0!]`#4!KF1P6&LN8I#BV5?4E.+$(17+B`D
-M(`````<```#,(0``L#;][YZ623I1$/&V%O(H]FVS-$N^/U6^/=3DLJ.?O]S at X/
-M:5/N3>:`4>U6&*%VZ5IUG?VN)3<;BV92_L^"AW>O%)T3MB>$K4KV+2&ID')8
-M3L36E[/Z(&YD3$_#'F\'8]E#+OW2$LHXGFMA>M]]+12!?PE2CW<>+YK at 0,(@
-M>05,#FG\2;\U2J8X<'0O57F,U\'LLR<OFFO:TD'$RW. at G82`Q581LYO^J<X8
-M`S>Y=3D/12$K=3D&%SP%`(P!``",`0```@```$4``8A4_@``0!$``,"H`0'`J`$"
-M`?0!]`%T!UF1P6&LN8I#BV5?4E.+$(17+B`D"`````@```%L(0`!4'P=3D(<=3DM
-M&HT#CZH<D2"]D[+73\8AF$L_^0 at UAY[E`T,KCX2%;$9F@%N%JJ>.0<-:C!=3D?
-MVE,XN`:7@")4M'G0U:UQ#,6#;.BXZK0[`)4:1<0 at JJ/6 at +G8F0<K:)T'F9+$
-M*@W)]C`$$^,7C%_:-2X3#J$C%'V]_N.\!^^`:ZB91?YMO&1*=3D%=3D!;KO(Y'DD
-M#S.>O\+-`>>8`HPOPH.*A[N()-[GT(^>FWE8DJTP()%$`979;GGR.71(>Z69
-MRJP&J(K/6-FIH#!=3D_:R;_^A>]*_5X;'!)-],:HU_)?A!=3D=3DO9?C&?D2_HA(O,
-MU'19SS-OI[8+OV$I"]OKQJ629LA3D##G([6<R'H<B8M^,V1K-ZCO`640<?X&
-MC7Q=3D(1X;/!WA"WXCM*'&+,SBO7S(DKKG6E%F;FP_^'Q>NG)$R*L^US=3D"DG7<
-M6=3D*7[>5(?P_[8GWK4A*W1D!P!0!<`0``7`$```(```!%``%85/\``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<ID<%AK+F*0XME7U)3BQ"$5RX@)"`````(```!/"$`
-M`2!%X.X"LJ%%PFCD_!*EPMZ5$-]W(IDD'/R-PDDR<\A"&C&J3T6(@N$PY3>L
-MSVD6Q#GI"<AO'X%GOTH3.$3>[+H`K/.22IXIM=3D at W9]U27$9PK"S%W>W:6Z'3
-MQ0],OH at -BP9)L[0=3D*4ULZB"^/N&NJ7=3DR?^2G]NCE#MH6$[7H$-UT5M.EVRR*
-M;&S*CLDZ-,AGCSRC*H%\U?I?/J8RP,(I]*#*A*\+>"_JBX+$GDQRJL6B3N5'
-MGM9V"NBX)&IIV/;##AID_;QRB&-%5#F=3D/TZ/!475BT_2<BP!)D<#,$\.\4@>
-MQK=3D8,PG[\462T^:(9"F^C6C3]H%35U]^*($,"G@'?-C?-YE3*9)JB14VCQ>E
-MPDR8&@GB>:#1F**$[2X$M5(2MT;>EP4`?````'P````"````10``>%4```!`
-M$0``P*@!`<"H`0(!]`'T`&0&26=3DN$)U(-KG1#->*2GY75WTN("4(````````
-M`%PJ``!`C:V$AE&H(F(JSI0ACF`.C^`#+8X<B]+M$+T8O^PRDNM>A+LF4JX^
-M4Z91WV^F;(NO1E%8`Y?E>@&ND%4C4A*W1E*C!0!L````;`````(```!%``!H
-M50$``$`1``#`J`$!P*@!`@'T`?0`5`8Y9VX0G4 at VN=3D$,UXI*?E=3D7?2X@)2``
-M````````3````#`(^9PH%Z77#>RM4]65V#"R3<GDRO;PDC4,?$S3.`\1FI1V
-M3*/GWLI^WPR&@5(2MT;GL04`;````&P````"````10``:%4"``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.6=3DN$)U(-KG1#->*2GY75WTN("4(`````0```$PJ```P
-M+WH7F]-<),0YN0HB";8_/^LGI<IZ,]Z+,!A^BO+UMW*!69IL`DY%]#07,(52
-M$K=3D&6+\%`&P```!L`````@```$4``&A5`P``0!$``,"H`0'`J`$"`?0!]`!4
-M!CEG;A"=3D2#:YT0S7BDI^5U=3D]+B`E(`````$```!,````,-L?M"CQ;R6*Y+W"
-M[7-P!:;.>EOG^J8+8&-,J8Y3JZQZ;A-<CM7NBI=3D*G\O74A*W1J"]!@"8`0``
-MF`$```(```!%``&4508``$`1``#`J`$!P*@!`@'T`?0!@`=3DE%!X>M:PA!]8`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``F?5$9Z>)`@K1]%W#*DX?X0<?-51Z]M;/-35BC5L>@31L
-M,.9J#/#B-U;$IE,1G@^LU.SZ1H*6@?8-D/YM#]?G>G]6#F*UQ#=3D0G\*E;@!.
-MX;2[[YT/$O#!?-<A<OJ?S95MTK-I1"*M*;`HEPU=3DJ;3Q8KN>3X'27_3-U%Q3
-MLT2-S/(I```DR?X]<I,!=3DMXLC,-.,%46KB;DD<(FQ#GD88\NG%IX_/8I```<
-M``!`!'.Y(V$@+V#Q">Y9P;`?*!$W]+*P````'```0`6^5(W<;^"VH8YO\JU9
-MKA,%-6NEA%(2MT8'S at 8`7````%P````"````10``6%4(``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*10>'K6L(0?6```````````I("(@`````````#P````@``!`
-M!@````%]L>YG2ZS9C55OFU]"Z83,5,1`"U(2MT9<W at 8`N`$``+@!```"````
-M10`!M%4)``!`$0``P*@!`<"H`0(!]`'T`:`'A10>'K6L(0?6```````````I
-M("((`````````9 at A```@``!`!@````%]L>YG2ZS9C55OFU]"Z83,5,1`"R(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``F?5$9Z>)`@K1
-M]%W#*DX?X0<?-51Z]M;/-35BC5L>@31L,.9J#/#B-U;$IE,1G@^LU.SZ1H*6
-M@?8-D/YM#]?G>G]6#F*UQ#=3D0G\*E;@!.X;2[[YT/$O#!?-<A<OJ?S95MTK-I
-M1"*M*;`HEPU=3DJ;3Q8KN>3X'27_3-U%Q3LT2-S/(I```DR?X]<I,!=3DMXLC,-.
-M,%46KB;DD<(FQ#GD88\NG%IX_/8I```<``!`!'.Y(V$@+V#Q">Y9P;`?*!$W
-M]+*P````'```0`6^5(W<;^"VH8YO\JU9KA,%-6NEA%(2MT9P`@<`4`$``%`!
-M```"````10`!3%4*``!`$0``P*@!`<"H`0(!]`'T`3@''10>'K6L(0?6:49S
-M<7^2OC`A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``-<OD+VG$.Q9]738C#W\G]-Y
-M.F`**_YP`E^%C9M=3DR;^NP*#<=3DK:BX4=3DF-667OTUU4UE=3D)HV[F?N&FJI*Z:W9
-M8U)^&>B85T)WHDW$._]ZA-R=3D"Z)Q5R).QS0\3C]H at 7J&IG9NCWCJRD[(M,HE
-MY_*HOW38BUG=3D<EY>9.EN)7YXTV!_*0``)'RN5ZV#X>+/-.3(91:]VE=3D:4SB(
-MO//S,6]TRI$()VTC*0``'```0`3K0WDL54 at EGB\_VC842/(YD6;,J````!P`
-M`$`%W\<[',DB`_-*I*G?*"!+$Z"QW at 12$K=3D&5C$'``P!```,`0```@```$4`
-M`0A5"P``0!$``,"H`0'`J`$"`?0!]`#T!]D4'AZUK"$'UFE&<W%_DKXP+B`C
-M"`````$```#L(P``T*LJ.J=3D)SC8KHPQY2+X(:6_Q[RGGT7&]4OJPWB[0!]BU
-M?\],(6"K'N#A5:35%A7=3DDU78A6+HV)_OK)15KLIG":CHX5/;3K/)\>5P313`
-MZ4RY9S)7S]^JR.;R9&&>S/I/O^TS+W#E'!?=3D2PF5CL79^_N.5C`*=3DFVX\-$=3D
-MWJ2CR)"ZW!UX+3+[/GF?;TZB9X\'HP("XV8/P02A#*3C[!@JN`82O\3>,B2>
-MS,G$E.@$);&ZX$RA[N]FMZZD[J]:FQLD4"+E=3D>N,GU_?>\`LA5(2MT8A2@<`
-MO````+P````"````10``N%4,``!`$0``P*@!`<"H`0(!]`'T`*0&B10>'K6L
-M(0?6:49S<7^2OC`N(",@`````0```)PD``"`YM?'G3UR9$,%BKT-1?E[0`.(
-MPO=3D<G(^!FNYB1EFLL42AG29'YOZEV^=3D8,^,(OAZU,]>G4@*(L-ERF<W!#9.*
-MM)")H$7`?*Z;-)/9JK+'8])C%TZ- at VEN44_3@*.<>_H>H982Y7WE@[RQH=3DE"
-M_F_>TR"]<]'__+-1W[O7\U(2MT;9:`<`'`$``!P!```"````10`!&%4-``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z10>'K6L(0?6:49S<7^2OC`N("0(`````@``
-M`/PA``#@7AH2>4PQY%`41B%5V=3D!,N!9\,01_!8#^Z2RD>LX<"?FZ at 1LU'3.P
-M"WP_K40S9OR^^](M=3D"BJ84JPF>2>]W^NUBG".10_8^%]$YP\A&4L`=3D$47X!*
-MPNG&#*R@!TK[3<!Y=3D/Q)#0RFV&Q@:Y]HM*>O5.()/X'IL!_;M73N)/24JM%8
-MTPO)KO:I%S>_(HH:K:_H-69]E*8OTF?5.T+6EOI'>K%QC<X!+LK]"%^^9$]`
-M6I^T'+.\@\4;W&5:,_.DR4S#/M>+SM;+?.]UU:_"NU&'-252IM=3D2EP2L6 at J(
-M0E(2MT9=3D=3D`<`_````/P````"````10``^%4.``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R10>'K6L(0?6:49S<7^2OC`N("0(`````P```-PA``#`IOI=3DQ#9()Z`2
-ME*EKX.=3D_MF(H3+'A_R.2SMY%A8FO8#&=3DR<V,K\982PD.JN]_.Z5$E09%9B>?
-M_"\;0J+C0AI\I=3DGW=3DFFLR#.D.0;AGZ8`L7S'2`J"=3D$Y!NL"A:SVIGUMF)LV5
-M,5K#`7-V(LDLM0,L",3C*Q<GNF8A;6<A4!:V2D#$L+%O=3DP>Q!:JM.SCYI=3DX\
-M_L`+TG$5U^94I6/9LA%%LT=3DC:C at XGHUB8R_@`^J3,JY_6$L]2B:)N`:JY$!2
-M$K=3D&#G\'`&P```!L`````@```$4``&A5#P``0!$``,"H`0'`J`$"`?0!]`!4
-M!CD4'AZUK"$'UFE&<W%_DKXP+B`D(`````(```!,*0``,+D[\!"7HHKXR7XF
-M16+3FU?(#EL4.S,I&=3D=3D>*KY#BTU\1RJTV3"#I;X4]R2>4A*W1N2:!P!L````
-M;`````(```!%``!H51```$`1``#`J`$!P*@!`@'T`?0`5`8Y%!X>M:PA!]9I
-M1G-Q?Y*^,"X@)"`````#````3"D``#"B&:[Y3VD#-DA'4V$A!HXYAO&R@`@L
-MVD(K"Z;]5D0A!R<K4`O32F^YO(R:,E(2MT9IM@<`/`$``#P!```"````10`!
-M.%41``!`$0``P*@!`<"H`0(!]`'T`20'"10>'K6L(0?6:49S<7^2OC`N("0(
-M````!````1PA``$`ZBTB;2;W-UMR<87&^CZ#??H$_3KWCGUH28VARS,HU;NW
-MC8'&VI=3D**=3D1%>%$;UQ#!7T at YM(H$$&"3S:1Y5&6K<:KBD92QC:O$CT"@(N.3
-M]1A87X-\5[Y'8)%*J><-Q at F%'AS;H&P8M!AC6O!8`Q<RQ&EV4 at F^\RNH at F>S
-M[DC[_KI"N1NI=3DCTQ`T^+)!'7Z%^HV5U/V3M"@`2R3+AWR``TT903US]2%+OZ
-M95O1@'%'M(MM=3D"D32<INL:#CWE'PX<6T;$Z8T%F7T,\Q;G!T.""$/_?EMO#U
-MS;_.HO%SYL2^#T4>C4D(",3/&\1F0]2^U.D*7Z%>3$)XFKS$`_\#4A*W1DC"
-M!P`<`0``'`$```(```!%``$851(``$`1``#`J`$!P*@!`@'T`?0!!`?I%!X>
-MM:PA!]9I1G-Q?Y*^,"X@)`@````%````_"$``.#4W:@7?0'&$WT3'#>SU:>E
-ME$GLEDBO=3D]V)#$H+-ZGH"C<ITMW4SO)I4+\%N%E7[F?+<"](&3G27.CDV$V7
-M5<6N$:'NKE=3D(8^&&%GXE]@FW\.2^<.\!^>VLWKH^9QW9I\BN?O^")Z055:)Q
-MX0%_J)!"Q_X03I].8.UE#:JG=3DE:O;6E<+\HM7QL</R'^B8C:5MS1Z8=3DBJ^0Z
-MV at ST<41=3DL^Q?601^@B7/*ZNLU;U',M,QMW`FIK$VHQ[YD5G"QPNP:M]XT`PG
-MS=3D2<DP:-)5]ZU*/<97\2Q%6NA at O"<PQ84A*W1M+1!P#L````[`````(```!%
-M``#H51,``$`1``#`J`$!P*@!`@'T`?0`U`:Y%!X>M:PA!]9I1G-Q?Y*^,"X@
-M)"`````$````S"$``+#^L,8,OK099>L4TQ;![0E\UCFR'N1ST8=3D8K[,O0KSJ
-M[KM%.+TX at QD81+UD>3UNC_(P@^8<Z"^**1*9R+F*`J*:!1%Z=3D>HA2D_>D at 79
-MF0]P-=3D-2-[X&D>?N%5KI3]SDB`9*AAH*QRO'51.OQ0,2,AJ_^Y at G?=3D2)^?=3D%
-MFHYZJ*6@,'#)?!JF[:\+SH8%P<*MZA?#&/\P,2<WTV.,=3D!Y`QO4(,CRDS!+;
-M/NEBF*/>4A*W1F[T!P#L````[`````(```!%``#H510``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y%!X>M:PA!]9I1G-Q?Y*^,"X@)"`````%````S"$``+#<;,A7
-M]"\JU:<-6`'3OJUAT]X'/%`I'Q$=3D.*KS/9L8<10)5-Y:V'GZM06[D at U8O]^@
-MSW%#Q7I>>3-/[C][EC$VEO_-'^<GMXN;+/69&U@&J"9\#0YAXZU\,RQPJ*>G
-M#2'$/Z!\MA^!"'E_?@;XM,JN<TN)E?;\JH3&FX6KP8DK?>)=3DVP&SN8K9Y&9"
-M]8/])RID&4%66A_-_)FZ;1>IF-\WS$ANVSJ)4\$#JUA(4A*W1I<1"``\`0``
-M/`$```(```!%``$X514``$`1``#`J`$!P*@!`@'T`?0!)`<)%!X>M:PA!]9I
-M1G-Q?Y*^,"X@)`@````&```!'"$``0"VK;5]_8DPNH9 at 1)8"?((Q3CFZ-*9I
-MZ-R2PM[?W?F^]CP.JS8&NYT'8YIZH at K;?V3E4?:2*@<#8^AB;O#EO3J:@?YB
-MN`7N^LZ383D#`Y-DG7C9?EP9L[?WFS\08^)GNYC=3D<65,/M*K,.@\/S)9W\.K
-M(P/]Z4B at 0J7=3D[@V<!LI*Y/Z`U^"NQ%'>*U)U7K`V:(HO25I\/BR8_K?/5^T3
-MO-Q+;IN##O87QAE'%$P.5JPKGU<,?UX9ZJ,(EPZ;[\X_]/A>7=3D]XFCW?OU#^
-MU8RT$99/"S/S'AG<%5E])N3?-.1X^B05$E at W:1!W-(/SS()S(?&ES1)KMJXF
-M#=3D.[\8%2$K=3D&7QT(`!P!```<`0```@```$4``1A5%@``0!$``,"H`0'`J`$"
-M`?0!]`$$!^D4'AZUK"$'UFE&<W%_DKXP+B`D"`````<```#\(0``X/HV.IT'
-M798,>F`\Q2+KS_>9>Q$:RA(\\GO!_VD%HSG^BTC/3P&-93P>0!)RJZ2R?7DS
-MU'R'S)`7X7%#^8%897[%=3DHJ6'3W(&L]EO8F4""#^63*2)UB]CAB,P9I*_.8@
-MZH-V=3D*O-K#DXJ$LQ*7H#L8Z)]*+3+.\,QV9=3D36_(5MC*NKB)-(:\>X]<XI#]
-MYUH^3X;,1"FM+4^I%)A+H*1KS!C[6K*_^XKX'<68-JY?6'"/`X*7F:4 at T\+B
-M6Z]B,-#LHA2\Y+_&LE00^99C<,M`N)D at KY(XVJ at Z-[,7`!Q2$K=3D&URP(`.P`
-M``#L`````@```$4``.A5%P``0!$``,"H`0'`J`$"`?0!]`#4!KD4'AZUK"$'
-MUFE&<W%_DKXP+B`D(`````8```#,(0``L,U5-MA<JJ>,CM`\D&>9X/Q_38:;
-MH]AL]S1CVBHD93(-ZIK/P^#&GG,(G2B;DH-M$\YD_R^O,9^C0+NU$OA\%6ZG
-M"97X3=3DGP`GLUPR_"29X?%+?$7O#;+O0*83KD;'2#U$#/65:N"01`FX-#B.WB
-MY,<`;W.7.Z%+1:%5BW.>03<#9O)OD[P+L>/)8+RN%RC0]=3DA(KB%[::+2+Z1Z
-M6LKL,7K7LG at CF#=3D93PLU\`]2$K=3D&S4\(`.P```#L`````@```$4``.A5&```
-M0!$``,"H`0'`J`$"`?0!]`#4!KD4'AZUK"$'UFE&<W%_DKXP+B`D(`````<`
-M``#,(0``L*V_Q)SQ at V>VC)I5T>`)%9HZQ>-%S`.8U%F%LF!RNE,XVS0B+6CI
-M2?];-51\?^"J)2[$"GZF^EK$8%2&,<L'=3DDHE$`F*/Q36$,2BX*]*O]J(37@:
-M9A6*6/`PT7UBS9*EA6/SS2J5@'"XN__PP8E+,)`(/48`,&#79*BAU;]BC0[T
-M31-KX7:24W^:H,)'+9EG"O;X3-'NI!5_'VI)<H(J>1QE!C)1.J)#?YV;&9U2
-M$K=3D&H7<(`(P!``",`0```@```$4``8A5&P``0!$``,"H`0'`J`$"`?0!]`%T
-M!UD4'AZUK"$'UFE&<W%_DKXP+B`D"`````@```%L(0`!4-W,,T0W>=3D462R:1
-M4R&__;\-0`[]Y34[]?O(XO8Y$(N$$R?A;:XZ3?0&DRS3)=3DE,X/_-1XV[J4#J
-M-%C)],P97R9;B@>+H/C,14B>=3D8;V(DP.I at ZPVH)0-?7@#$OO9@*']1]$-(UR
-M"J=3DJ#]G,YSL+PF8#UCK?S=3D!H(89=3DNRZPDGF@$7H0:A:VO-[U)5\"6\U2,V\6
-MK*CYRENK+-EP,QT$N9<0E54[)6*U(VN0)8 at OC$*?3S6.Z5N3+TX/HR%CSJ;Z
-MY(,Q&(RU/GK>66C/6['"@H5S.5H4'%R)3E\?DY07U=3D]"5%7H2$]OOC*/YLVI
-MW7(0J:^66V5OV=3DWLH\_M6,`?<(.<15G]>R<D6<3UVFKN6$.F?+4$8&*6UYE$
-M5#I(E[.^HY*=3DQN$'0Z_V)8$2'K2.UP^BI\, at N!*5%PZ[HM0#=3D'HW;7-X7\OI
-M]J>X%Y5'4A*W1B2L"`!<`0``7`$```(```!%``%851P``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I%!X>M:PA!]9I1G-Q?Y*^,"X@)"`````(```!/"$``2"8 at +&9
-MUJ0O\CS]I1_;-P[IM[Z_-5 at -G<GLE2UGK?P!X()2%LS!]Z0'D0/BWU*(C^+P
-M![U,N+X&['K+;- at A2]N>R'?D:=3D,W-D"JR1:IW&]2$)D00:B).6=3DZ^I/B=3DIP5
-M*\L3\0`F:H-YX"E%JOR#3#&DPC8!FR`/K!RH+&,1>>4IA;D<@/>H9$;<1DN>
-M[V+,XK18S92"%*7^XF-<7[MR62&'M:EUS-8Q`>;.`/_Q;7]HA$(K@`J%RQ8=3D
-MYJ:81?U at P'.M.1-E`$*ZNWH5LLE');NQ2>*>%QB)6,C@:4[(;?-1G6T0(_U8
-M`5+7'":H/FS at CNM6T<IX(+&78]0.#XV_0XW>Z/<91_\Z!'SH9?T'.U6\,5,>
-M-Z<K'ION&I=3D/6U(2MT;PT@@`?````'P````"````10``>%4=3D``!`$0``P*@!
-M`<"H`0(!]`'T`&0&219RO'(VM!&!?^.6AJM-$+ at N("4(`````````%PJ``!`
-M\6-$/8:CWHZ#=3D^6PLKX4_>VA0:-`+UM!>%.P7 at OLD]C(#84+%BQ%RY4^8+49
-M,;7G%SU[WV("//YGH#A%4A*W1CK?"`!L````;`````(```!%``!H51\``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y%G*\<C:T$8%_XY:&JTT0N"X@)2``````````
-M3````##71$4PPBS\Q^43O#RP"I3&Q>@'DL#-,E;HU*L(FM=3D`BO&S)Y9QV/R(
-ML:=3DX25(2MT85[@@`;````&P````"````10``:%4@``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.19RO'(VM!&!?^.6AJM-$+ at N("4(`````0```$PJ```P=3DX8SB\>9
-M>1>=3DN]9=3D8Q-[9<RMVANI?XI"TPN6\I:)F&`=3DHC[KAH&5 at B";,"I2$K=3D&>OL(
-M`&P```!L`````@```$4``&A5(0``0!$``,"H`0'`J`$"`?0!]`!4!CD6<KQR
-M-K01 at 7_CEH:K31"X+B`E(`````$```!,````,+]>_<5&U_VT*04AA>I5ZV!B
-MECS_$=3DC(3!V]4UUT=3DR1Y.-TL#(R2H2])@OIW4A*W1DSZ"0"8`0``F`$```(`
-M``!%``&452<``$`1``#`J`$!P*@!`@'T`?0!@`=3DEE$NB@)'*VP\`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``HU$]Z>>JU#U0F<343HGB+%&:,%>#_U7Z3F[8\T5P"7)-BYO%_I^&
-M1->:;M at 1>D[`UK:/8GY&2D/U5RUD.LS/R)+/"R\NS)*1,<EN;K/K-F'3V3)$
-M5NQQ4GH,>KP-Y^FZ>ZZ0Y2'0XSJP8;URI9*N6ZZ2V2%E+^0X;I0>:Z6LA[DI
-M```DO32/P%G<6Q0*;Q%SXHIAUJ5$#W:8FHI]-=3D/`'[IT*:@I```<``!`!%QP
-MA<%ZZ#F'1U5OUE;.DG'/&@SP````'```0`7D%RTQ&@Q/%7+?-)M[QY2H;93X
-M"%(2MT9Q"0H`7````%P````"````10``6%4H``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*91+HH"1RML/```````````I("(@`````````#P````@``!`!@````$5
-M<+0 at I13=3D[T&*3WS.^FO1NV[T-%(2MT;J&`H`N`$``+@!```"````10`!M%4I
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A91+HH"1RML/```````````I("((````
-M`````9 at A```@``!`!@````$5<+0 at I13=3D[T&*3WS.^FO1NV[T-"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``HU$]Z>>JU#U0F<343HGB
-M+%&:,%>#_U7Z3F[8\T5P"7)-BYO%_I^&1->:;M at 1>D[`UK:/8GY&2D/U5RUD
-M.LS/R)+/"R\NS)*1,<EN;K/K-F'3V3)$5NQQ4GH,>KP-Y^FZ>ZZ0Y2'0XSJP
-M8;URI9*N6ZZ2V2%E+^0X;I0>:Z6LA[DI```DO32/P%G<6Q0*;Q%SXHIAUJ5$
-M#W:8FHI]-=3D/`'[IT*:@I```<``!`!%QPA<%ZZ#F'1U5OUE;.DG'/&@SP````
-M'```0`7D%RTQ&@Q/%7+?-)M[QY2H;93X"%(2MT:O/0H`4`$``%`!```"````
-M10`!3%4J``!`$0``P*@!`<"H`0(!]`'T`3@''91+HH"1RML/-#"<LK/A#[$A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``)<_$(O6G9]5PALL7I>3Z-_7JE#Z^L6<
-M)9_K!N):Q&Y""0@?\.M-&E2FK^IJS&LY9R;44C6$<*#?H1Z'2B.QZZ,M&5R"
-MJGC-LRH#',=3D2^,]4=3D&1P)#F/,&=3D:05XL<3B3IDQT\1RZ#F/^0'+!VQ,`K>QK
-M;4!,^,/]=3DJR6(S"L-/CU*0``)$A[A\*803%RCH"^L"-AG`Z?$=3D-TRME_HC^%
-MF-PK!/;$*0``'```0`3DF[D8X890#31S%(5"3CA9F*AHF````!P``$`%#XS"
-MY>9Q2BDDA]^LR=3DPT#BQ]9MI2$K=3D&4&P*``P!```,`0```@```$4``0A5+```
-M0!$``,"H`0'`J`$"`?0!]`#T!]F42Z*`D<K;#S0PG+*SX0^Q+B`C"`````$`
-M``#L(P``T/I$;[,6QB0I12S):.*4XE+':)B`.<%%OS%D[%+4-#*;BR/S3`)W
-MCEPP1EDH+FWIZCYQL<-]&&$?>NP1G`VL,E[<V6/2_R1CF^B=3D5]$N&R<%S at J4
-MW-VZ!,#*H%&&^-.R8%/1"AXE]`NN[-,0C/XSD;.`,6=3D4`5%I`L&5XN4/VLJT
-M>%_(-9,^K6BH.D)F8,P2-L3!7_'J+R[%X!-!!ZPQY/9/.H]IAL7=3D)RS9.B]K
-M,8PZ:XW.T36H7'$_G/Z-L2X<2J#PH1&I(QYE/G`0?E(2MT94A0H`O````+P`
-M```"````10``N%4M``!`$0``P*@!`<"H`0(!]`'T`*0&B91+HH"1RML/-#"<
-MLK/A#[$N(",@`````0```)PD``"`X4&=3D;#1SX0IM;+S[5C<5S8C:Z6YD1;H5
-M9160FD+&CX.>)>\?"O$PF<N9Q1SCXO at AA4IUE5S\0*S:,.A6ON&KPW+`$+[>
-M^5!<\$Q&D9&CTKV#=3D3SQ&B%9U*$A+8;VR>I[>)G@>,4516K?TAJ!!BF[E($G
-M]H$O9)'OW_857U(2MT9ZI`H`'`$``!P!```"````10`!&%4N``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z91+HH"1RML/-#"<LK/A#[$N("0(`````@```/PA``#@
-M^BSP5KW4%'*X:BM8(9;ZF02 at QSY(:EA9:4"A_@*BC59I1&Z_PHW/DCU$09Q?
-M'<.8@$2_I=3D!??M"1 at VK#/$\DJOU`?/Y2%V795)Y0T>S$I.*&4B1[G+[A_,5F
-M#+F-M_2[B[[T[$+&;3$N$3)+:Q at B1X!`7S`C,S@^HV at 2N/X/IPPB1-<X+(\H
-MZ;]B]?,J[-Y>3!F#_E>-ZD-*5W9\!//>27QHY`EAP/WF_2'C"^_W>>RH<K/*
-M*8DG/%_I]1!KJ%XCFJB-&]_]<Y=3D3JP_?+2HYC2G70\+=3DYZA=3D5^7L;U(2MT;2
-MKPH`_````/P````"````10``^%4O``!`$0``P*@!`<"H`0(!]`'T`.0&R91+
-MHH"1RML/-#"<LK/A#[$N("0(`````P```-PA``#`\J$8JB+SS6I*'^-<9'5]
-MQ1\IH$HNMVX?<*EE"-4\&:60WZ4-:-$N,Q66O9W>D1D*ELI\2_C4'F+_-!NU
-M6"P9HCTL7_C:].=3DB!H.O:S&5<#!IL)0]^^D8?;IC8Z^0Z0UEI,*O.;.OF[U>
-M3#%WIMW8B!)G5U([SFB1]5:!T\(]PO2WE\));T^VCJ,,:T<0D$P.!(+Q]0%:
-MB-7^CZ6H<DG,$5,;:-?6<QT^`,I59=3D%N4'-:H+W&+8/NQC*NPF=3D2$K=3D&C[H*
-M`&P```!L`````@```$4``&A5,```0!$``,"H`0'`J`$"`?0!]`!4!CF42Z*`
-MD<K;#S0PG+*SX0^Q+B`D(`````(```!,*0``,)Q7R\GGS42MF.TX+1WW%E?'
-MCJ\,Z-U[DIB3MTWEMYAO7GHP`%@H-!Q7QFL54A*W1K?6"@!L````;`````(`
-M``!%``!H53$``$`1``#`J`$!P*@!`@'T`?0`5`8YE$NB@)'*VP\T,)RRL^$/
-ML2X@)"`````#````3"D``#"0T%DL^!B\=3D\7`997[T#:<!>:75D/CBK('>=3DR>
-M=3DOYZ:&.;DYVU-S=3D_"I;!05(2MT9Y\0H`/`$``#P!```"````10`!.%4R``!`
-M$0``P*@!`<"H`0(!]`'T`20'"91+HH"1RML/-#"<LK/A#[$N("0(````!```
-M`1PA``$`X([:/-=3D.506`K#VKMY;'@YP^2&->Z+U6^;TWV&O+'.1ZI#9'OS4B
-MB9,LJNC/%4+$'FC<1"&>0%(;N$?.S+!F1Z[4T>O:C/%0^;>(<\P87(!X-#7W
-MYB4,)`<PG<[W7)S,L7?*1S!+/:-&E]2UX5M=3DKCJUP!=3D,DZ>3>379 at EHPGQS)
-MOAEV`T[-!&^><G0ZCL;->;F/JN!QK!5!6]Y]U>&Q11B<O0Y]#;3T\!BGEXEW
-MP@<D\BE"U;>:HI\O<:4`#<G0?[&D\Q at DZT:L0EDM\]!2P2/:$:%&=3DJ*4,C0)
-M\M`''K\%'JX9?#?K9M at 9LDXN8>A)XVB>V9_?SF)$]59^4A*W1GC]"@`<`0``
-M'`$```(```!%``$853,``$`1``#`J`$!P*@!`@'T`?0!!`?IE$NB@)'*VP\T
-M,)RRL^$/L2X@)`@````%````_"$``.!1/O`@=3D5^EV+A9_>"B*57]XS6)&?SI
-M6R6X311I&>':15V21`1X at WDT,J(IOX]DL]%\H1!B\ZYVI']XB;.=3D310"H84?
-M&CAP5#T(=3DM&9L8T_OWBT4V+K7'W;,0BZPP_OGS$/W0Y"!<.:]]R92`_`YZ\T
-M&!52O^.@!Q>;[)8.B82_92'^4P/0 at 1<:6TZ_U\$3H&QR)]WU;5:;@_HT6'0D
-MJW'JNZI-IN`C\GKP`1)B)0<[D\^QCF7/^6D=3D0*X,'2`<(-ZR at AED]RF$;)#/
-M3RV"^K<".8C<Q6/J0;3"IF$N4A*W1IX-"P#L````[`````(```!%``#H530`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YE$NB@)'*VP\T,)RRL^$/L2X@)"`````$
-M````S"$``+`GVF:SC_KVR.N826J2[F.8CO;Q11CD0%O?\MM!+/`K<@5'*!.\
-M(<?/_2(4*VL+$3F'_B]'O7W9ER^#,V?JEW*VI\6F6>B4)`N#$+J*XC4<^F4`
-MZU2PV"?J]Z]\$EH7GX/=3D.J?_3;%DM?+OS&8\G[*;#%`ZU&`SX)8Z@?>DO-TY
-MG6U3U=3D at 2V([O2\EBP;N\/9&=3D.#Y at 9-O*5;^_#5=3D?Z>LC71@*PE1WA'-O;HU3
-M4A*W1J8P"P#L````[`````(```!%``#H534``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YE$NB@)'*VP\T,)RRL^$/L2X@)"`````%````S"$``+"A<YM5^!!N\O:_
-M*_Q)O^"E>7;?E[3#L8(4A+8_=3D+*;:A.::D+ML71UR,%J.>KX**@`6L033IF!
-M%W2X6XGLG/!I2BY[FPD-T1*=3D-B at F<=3D96*:JPS.[$1851GG&KAER%:H'^,HK-
-MBN9>?[8A>R"!&C9]JN<;]SK.A*RI*C+>3D#D>?D*SRNX#AMJ7*M#F-?GC:.Q
-MN-\K^N:61D$\S7,<`PWJR[[$!#%@/>O-N]F>4A*W1D9."P`\`0``/`$```(`
-M``!%``$X538``$`1``#`J`$!P*@!`@'T`?0!)`<)E$NB@)'*VP\T,)RRL^$/
-ML2X@)`@````&```!'"$``0`_UP'$_WAHI%&*N>.YX;OK1])B_N9EIS">+"W]
-MO]S!M:#!3CL<)2VA/,`.E;@G)'^LV4ND/M85=3DS at NO.E;7'MP9+R?!4M0(%BF
-M02J%*5QP^B>4"=3D:KDX;_ERT3EXI`-*)?>IBYHAF,P,I=3D=3DV71'%#KF#>$-'3Y
-MJL?^>>GH%MT':)1D10!.A#]5(!9DHR125<UZ\!9_Q at 6=3D::E[>U7<^66Y>!.#
-M8.=3DX11!FW]Z at ALK=3D6N<F09RA[1!]2<(5`19EG-7@@%6MQ<6,4!$SWN?Q0M%G
-M#U$$%MI9QT)^9$>8?%L[78WN:J^BGL]]_5^L*@KW3QCZ*B2:HTDBXZ3`Z?12
-M$K=3D&,%H+`!P!```<`0```@```$4``1A5-P``0!$``,"H`0'`J`$"`?0!]`$$
-M!^F42Z*`D<K;#S0PG+*SX0^Q+B`D"`````<```#\(0``X'P:1L;O2A&,;-S9
-MV_X0`6A8);76Y"Y4]E[WXXQ>JVI`20F,6P89V\E:+8/"H;:G5X>]M`]H)^_$
-M/FZMY!*%H^A4#_<2J[[U_/!V5JK*B5=3D"*XLV.,7;>;*7T8O)%Q,AXP7%\W\S
-M5$W=3D@][M#1:X'M22#[M(GDT!,4DE7%D!'*!BAU9=3D,!'\(_2J])K*X*7^!%HG
-MT5O4Z//B at M\B33YKYH.:TW1Z0]:_<64,-#L?OCJV?V&"%Q%35'CCZ at +;=3D*>I
-MLTWZ(#=3D-QWH*,4TDKB6]S>LC64OQ@&3-H9[5!UI2$K=3D&N6D+`.P```#L````
-M`@```$4``.A5.```0!$``,"H`0'`J`$"`?0!]`#4!KF42Z*`D<K;#S0PG+*S
-MX0^Q+B`D(`````8```#,(0``L#S_#?Y)H_Q1PQT\HM\4+D8NE0#_[;%J\AY!
-MAZ.(`7"Q:)F]B2>R6<\*W+2X>BVGYF&1Z+CD%(SUC.F]L%P9(*_36`BEF>T'
-M3A4HF-X9?%/Q+4T*"FFH(:9_TJ2BVY4<LD&]JLN0H`7Q#H=3DUIIYCS1M3X18O
-M]+GBHL8?>T0&9?!3VY][=3D6H7OY#.E9"I0F"?LH^`KP>G3"*?ZU,ZK^:YS3^)
-M4J`$@&T]/!-*N=3DM2$K=3D&XY`+`.P```#L`````@```$4``.A5.0``0!$``,"H
-M`0'`J`$"`?0!]`#4!KF42Z*`D<K;#S0PG+*SX0^Q+B`D(`````<```#,(0``
-ML%5;"@["1%X*RB0'LSFJ@"\%5+9%D'DS[WOW*NM at Z@)&"!8%"OS"_TI`3F)D
-M?3.3)O"X&"5,S6RKD2IX;DO3A>.<;`)#8IPO3O5M<24W[J5:]/L`#,&H4CF4
-M:_,)=3DBMG*R-1ZSF`LZ]RJ9[L0:E!5@=3DH8?$0S36#%_([L$LHO9*ZIE=3D\AQ,T
-M)L&2%-7FZ?D5D1!VS!-=3D:G^L`QIZ!@H6\Y\HF=3D&XZ?5$=3D+#/Z5]2$K=3D&++<+
-M`(P!``",`0```@```$4``8A5.@``0!$``,"H`0'`J`$"`?0!]`%T!UF42Z*`
-MD<K;#S0PG+*SX0^Q+B`D"`````@```%L(0`!4*[DN$-"\_T8T]X4,'GYZ/QE
-MR=3DD^S<13K]"P_=3DPDZ)'&WA*-/6(WFTYC$.;_F8A-VZ0#>/`[9R99<>]9EH[5
-M;RS@>]5"Z+PX\<8]0H_0!O,'RRTD>CQ!I`OG#`LHS]5.E5O^DD."*7;5W)OH
-M*!6S0@(I&XL\!3)G&"BFPDHV84<E;C#YU@'KF?P&:`MELL,;\BU[W'V3C%78
-M8?A=3DZ6-&7A)6&3JARU%Y\T5Z+R$4MF9U0`]'%S&JZ)X at 9QB>IBFB#^UY(OMR
-M2L%7%KCU]R9'PF!U[CRE`-K6&I?-(/P=3DB8^G<_]+)9RISK1ZD$L#4QX-2#R9
-MPS).1)#ES0'/J.M%@'4)(:M<HYUV6!&;%V():VS*U+_$0R8&"B-4>0;AW9P-
-M8M5'B*>"0"YR$H[B*E`H9MV9)\$)B54JJ*IPRPA^8NLCP=3D<S(FD-?V)!2;+#
-M4A*W1A;M"P!<`0``7`$```(```!%``%853L``$`1``#`J`$!P*@!`@'T`?0!
-M1`<IE$NB@)'*VP\T,)RRL^$/L2X@)"`````(```!/"$``2`V"U3LF/X#O3_2
-M:,HK*`9<)I+D`YG:"&ZC"",SCC05L?.<"(4]O8E!UN"8DNA74J00<8-W$U,P
-M_,K]=3D)U]EPB'1/4L-<9-&D*!548(3WF[,TH<)^\#$[A\V*D]OMS!'LP%9N5K
-M%W43E/$9(:-_F*158#OG"[0#=3DJ?HIF2HA7TMP<KK^NP9E9!=3D44F!)O)'%E7+
-M4WAIV*'DGW9V]3"P8>%O56]6^KMH)M4K]099P(V`4(G4^8\&8B[0#&3DX\$G
-MY0!-K:@Q/&QM.!$S=3D)(=3DZ$!9-788\EP(9\/3-4`/>A`]X"VZ15H\';F[>>_@
-M,.-P'XOBO2PP9"??AP>UNN,TLD!5DJO3'?EEP-XJ/I1L0\T:-ZFY1+Z-C;SQ
-M3NR795(2MT:@%`P`?````'P````"````10``>%4\``!`$0``P*@!`<"H`0(!
-M]`'T`&0&24TF9!V-E;!^&?9^@!6FA%<N("4(`````````%PJ``!`%[[#9:6Q
-MC.UO^)P(Z0*52$WG`(VD1P`BJB$2*AR&BW(EXZ/'TLL[&H+EZ1M&7T_VM?Q3
-M!7:&28#-*!PZ4A*W1D`@#`!L````;`````(```!%``!H53T``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y329D'8V5L'X9]GZ`%::$5RX@)2``````````3````#!)
-MX'R`(3I7"!UC#SC6"*)N;$:"U!X:TR53B7"X*0%F;7B):RP'R!'U;7HBV5(2
-MMT8++PP`;````&P````"````10``:%4^``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.4TF9!V-E;!^&?9^@!6FA%<N("4(`````0```$PJ```PS:YXJP,\\-O:XW?C
-MTQF at N`DZL6(K=3DC"#?Z\8ZU1/*TTXTS'MD(?@/7YJR&Y2$K=3D&23P,`&P```!L
-M`````@```$4``&A5/P``0!$``,"H`0'`J`$"`?0!]`!4!CE-)F0=3DC96P?AGV
-M?H`5IH17+B`E(`````$```!,````,,556$-7=3D39RCHGW-;I\1TI^XW8P2=3D`,
-M/JV#JQ,S64"/MW_.U[*.+^K.N6V,4A*W1H<Z#0"8`0``F`$```(```!%``&4
-M54(``$`1``#`J`$!P*@!`@'T`?0!@`=3DETC4QDKYQDA$``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MY9D1BTRN-JO`3(O%RAT(N at ZHWJV;0W+&$>P:HWCGH<G-N)[J>+;LJ.DH%1B5
-MJ01LGBYI?U"`6T4=3D2?:_O2M2I9HN9RK\G/Y[_S#.O:.8<G?)HS`8K=3D]%S!1,
-MYI#,Y],'\^D(314;YF=3D3)F/GO`SCJS2H2>;G$EW#P&XY?:A8+5HI```DX5X)
-M7A:<H7Z!^463]>CU3G'L70##SD"[KZ^66PFR%N`I```<``!`!+0?Z:6*L&=3D`
-M=3D^B;S3C[X20S!!CT````'```0`6FKK9P\#4]NTV<CP=3DZ:7KJ)2+[65(2MT:#
-M20T`7````%P````"````10``6%5#``!`$0``P*@!`<"H`0(!]`'T`$0&*=3D(U
-M,9*^<9(1```````````I("(@`````````#P````@``!`!@````'%>D"<B[Z*
-MV!GRMX#AWKZ0LG`VF%(2MT;S60T`N`$``+@!```"````10`!M%5$``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A=3D(U,9*^<9(1```````````I("((`````````9 at A
-M```@``!`!@````'%>D"<B[Z*V!GRMX#AWKZ0LG`VF"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``Y9D1BTRN-JO`3(O%RAT(N at ZHWJV;
-M0W+&$>P:HWCGH<G-N)[J>+;LJ.DH%1B5J01LGBYI?U"`6T4=3D2?:_O2M2I9HN
-M9RK\G/Y[_S#.O:.8<G?)HS`8K=3D]%S!1,YI#,Y],'\^D(314;YF=3D3)F/GO`SC
-MJS2H2>;G$EW#P&XY?:A8+5HI```DX5X)7A:<H7Z!^463]>CU3G'L70##SD"[
-MKZ^66PFR%N`I```<``!`!+0?Z:6*L&=3D`=3D^B;S3C[X20S!!CT````'```0`6F
-MKK9P\#4]NTV<CP=3DZ:7KJ)2+[65(2MT9Z?@T`4`$``%`!```"````10`!3%5%
-M``!`$0``P*@!`<"H`0(!]`'T`3@''=3D(U,9*^<9(1!(=3D_8")ELA<A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``(R=3DG<A7,S-\RXY!U9V?T5SW'Z)8^\NZ[V\,F\@Z
-M#)$PS)_;)1(A3_E)K"Q1V\`1([P2(/`>3N_ at U@2$AI;BR/,TSA at +=3D/QCI"8)
-MRR/N39/./`?9C(GXN1$DG?5#Y(BS>ZZ!8RBERC["Z;>?\/O]+XK7UEYI at E2Y
-M at +S:$<LJBZKP*0``),E/6<I,IJME&`5 at O^L#I;B7`58%U2`[/]*#3,0*%XUB
-M*0``'```0`20$UA at 24DNK/WR8[GOEF-XV5)S!@```!P``$`%I](4X">[Q?.1
-MC1)V0B?L3AM>]\M2$K=3D&AJP-``P!```,`0```@```$4``0A51P``0!$``,"H
-M`0'`J`$"`?0!]`#T!]G2-3&2OG&2$02'?V`B9;(7+B`C"`````$```#L(P``
-MT..=3D=3D8G. at RM(\LC4]^(SY?&:)UD[F%_$UR[KL$M,.(3$],]N&45H*?O0[M-5
-MDL-,B5!.:USBB39`X%J9X`>8.`<RNO>`(OY>:?Y+-?$ZR2;[W+[-Q&YM>&.M
-M_FLD!D&BW!F(=3DXH*V^PB`T=3DZ_:9CU:3TB.\_)9;ZJG"Z?>%\`=3D570*[/BW;N
-M(`-U!N%-#9*IE)UU!YM9[''*;F?T34>59!!&]RL7 at B=3D_4P713"B#4%Y3#/?!
-M']H#`>-SC(:/J=3DE=3DN(V1[IG^'(H7G\R(?%(2MT;WQ0T`O````+P````"````
-M10``N%5(``!`$0``P*@!`<"H`0(!]`'T`*0&B=3D(U,9*^<9(1!(=3D_8")ELA<N
-M(",@`````0```)PD``"`QN?.M%5W_,I9Y-N=3D6O2?;4)9Y>/BO5^F!EV)QNU6
-M?0`[$2L2,E;H0.-9 at J=3D3(2*Y^B&N(P0%,3+)NZFNG"A:'N-S,W=3D`'89:G=3D%0
-MBVY$X<]'W$%7, at SWPH^38MJ^QF7B-_I]OM;-");"%-J(^!HC4(TV<1SV=3D]2/
-MJ^*58%(2MT9[Y`T`'`$``!P!```"````10`!&%5)``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z=3D(U,9*^<9(1!(=3D_8")ELA<N("0(`````@```/PA``#@'])I#@Z:
-MB*3J!*8A/"O%U%H at FE?41YLO%392'IC;(=3D>O9CP%%>"KWN13_O<B3;%NYA,B
-M3,9Z,L0Q+P(PZAA-2?HU_1 at XZDPQUS.6#J]9'0'3W0:63;.S_=3D<)25QMIUVU
-MY36=3D>G.?*9V8V)"U`N#9WM-DGX+&`F0+;=3DPPF\1]UWY69#7=3D?>E;3^D^&K$Y
-M'X+K7Q;;9:&>]\:)]M[[CH5#JE*ZD?_=3DM]8_[*T^`]S4!E5 at GID]!/4I5E`"
-ME[+*SDQ13ED'W\^"IP)CW/A/W7F2J-9,C#\/*B.+-=3D at B9U(2MT;C[PT`_```
-M`/P````"````10``^%5*``!`$0``P*@!`<"H`0(!]`'T`.0&R=3D(U,9*^<9(1
-M!(=3D_8")ELA<N("0(`````P```-PA``#`/+"0A6:<'+J+D[1LO7XR+M#0$W.$
-MN^O)O[)K8@\EQ[LP*);[UV?"[XRL#&>:V,FP,J,A`3W#:BY`13!!!2%3Q<V`
-M"^B4&V*XKL=3DO0KHS7RB!#+X.#OSZ'.,WR*.8(5II/ELO`B*0E0NK(SB10?0K
-M`Y3=3DIIA#BKZY<T_M7D#M=3D+N##/7E%;[:B/&VB28]VVFPL81!:@Z;(HJD('M6
-M'`OUHMS7HB0T.I/_3T=3D^9JS>+#1B=3D%$7?0`YR[04MAU2$K=3D&R/H-`&P```!L
-M`````@```$4``&A52P``0!$``,"H`0'`J`$"`?0!]`!4!CG2-3&2OG&2$02'
-M?V`B9;(7+B`D(`````(```!,*0``,'W?)7"QQ'J24H%0I;T*_OG1)NDR[-<K
-MTZ^XDWNMWY2%;]U at B7%)!!=3D&H*^Y4A*W1N,5#@!L````;`````(```!%``!H
-M54P``$`1``#`J`$!P*@!`@'T`?0`5`8YTC4QDKYQDA$$AW]@(F6R%RX@)"``
-M```#````3"D``#";3OQ`NL01T73&6AT6-/ZC);[3`0%+ZKD^)ZJ=3D`S:6S:S.
-M^X2FQ(LJ_F`%&%(2MT:C,0X`/`$``#P!```"````10`!.%5-``!`$0``P*@!
-M`<"H`0(!]`'T`20'"=3D(U,9*^<9(1!(=3D_8")ELA<N("0(````!````1PA``$`
-M'BU.VN\]!?2WKYK(:#;Y7^&49OD'>"ENA$W2%R[V$)ZAM=3DL$%W.2&V$)S%=3D<
-MU;>EVT^$>V)4GR</:\5W1H4'">2)\<PG7E&#;/\3S=3D]1ISBW2YKKG0B57K&5
-M\6L-#_L&^"LK3P>7W=3D9]559VF*6NB?(8JLO!>93M"60IHM3[1Y>`V0IT>Z]4
-MVDC08O,(@'EK2E2.?;;/3L%2 at L)SO`D:+J&,IP0%KP?V,X1)ZG%JX)FJ[>C<
-M at 6/K:((CG77RK;%Q1C/K5LV_UT;]%\@DJ?4_M%0!-T!A4AS=3DQ\=3DBU1`+9!^D
-MY(5_-KBV)6TW0F]ZC]MH15%O^XRGTAK-'>-B4A*W1FL]#@`<`0``'`$```(`
-M``!%``$854X``$`1``#`J`$!P*@!`@'T`?0!!`?ITC4QDKYQDA$$AW]@(F6R
-M%RX@)`@````%````_"$``."@0,Y at VR9#CXR8E3_TWA:Y0J9)[!TV=3D-!BW85B
-MYI,XL,C!PSZ2&R;'(IG'X/-D6F2>O.,#?(VK at 7^P?WS+=3D_A%7X%J!W#(;7$R
-M2^3.F=3D:RZP8_0''?5QKF%_2K*B%">8F?_?NM_=3DH<;8^):#?`@%X3=3DRH4N.A/
-MN$.:EM5I]71E@%>VO9CD1N)MQA4C3M3O2%9J\7H=3D*`P+%@BH;I$FC0&-B.CC
-MS/A`13YY=3D at WG[.[I;"*#Q5<<TJ%-34?Q9[M\K_,-G^?:!!)H%"V10"+8M at WN
-M?/`MT*!P"66Q:^"J4A*W1N9,#@#L````[`````(```!%``#H54\``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YTC4QDKYQDA$$AW]@(F6R%RX@)"`````$````S"$`
-M`+`?=3D8?AX$#;>YTM1Q$`C_;1-E`E<X2/_GB8T2 at D?EV>'[5SY?Y?I:J4TF at J
-MIU4;O3$:CMY1?!\QCZ<,:<M0E2!`O$/\BV%[(B0/"M)NA6FC\VH&@]A&+S:*
-M+'@<?Y?!SV&G3(*<+0MZ^QO707UQ at W'*@MR"JZMZ0Y&6?N_A&X!M;VB>(/F.
-MD>D]2BV0GWXA>)ZQ8,[4V)!XZF/O9L`P$5K_!]:;$BU">P&`,@!#4A*W1JIO
-M#@#L````[`````(```!%``#H55```$`1``#`J`$!P*@!`@'T`?0`U`:YTC4Q
-MDKYQDA$$AW]@(F6R%RX@)"`````%````S"$``+"G<"_-U!3F]1K`5K2&MJ at Q
-MMWN0GN7DS!#P5MZ,0<SQX+XI4#F]_?_]F2=3DDXUV`A%6I([.6$UP-=3D%GQ:_;Q
-MR$0:/G$<BUQ\B1G%U18QA?B at C(@&@&4=3D>6F"[,AW']S;6;KN\2F&P)EY*BXV
-M)&V6;0W:M5KTQ+GP, at N5@MS9/I%7.*ADRA+65A,"C at OR7:FZA6/JKP2<(J_,
-M*C7M&;F?RUU%`YCF;R,9=3D^E<L/)B4A*W1DZ.#@`\`0``/`$```(```!%``$X
-M55,``$`1``#`J`$!P*@!`@'T`?0!)`<)TC4QDKYQDA$$AW]@(F6R%RX@)`@`
-M```&```!'"$``0`+38+12!8I0N223,381VKJCI#B%#21DG8[JD`@PCN1IZR'
-M0"(4]B7'^,YA_.4_<1PXU5PR/%D"I<1ZO5''*AV`]S16J+"/KG-J]`;A`TN`
-MVE$FHO at ZH96;7EQ*HZ(V/7/',L6CNSAE^G\XP]](-5*?)E0]+&FIQ;,)Z'O&
-M]^H at I(._^;B739<]5H\NOVOR/BB_!]RO4RTID]?,<?0278U.ZN)(DZ$2YKDR
-M[@,QE!^2C0X&=3DR](..KQ"?@,36"NGM'0X,]8*6X(KA\S(<H5;"^_L at ZR#=3DMX
-M.<Z"HG(XZ=3DIV%-Z`UP;"YP=3DG.I9?%U[$/`(-W(0Y'O<S<Y3A<A!2$K=3D&ZYD.
-M`!P!```<`0```@```$4``1A55```0!$``,"H`0'`J`$"`?0!]`$$!^G2-3&2
-MOG&2$02'?V`B9;(7+B`D"`````<```#\(0``X+NZ(!H^+X-#5D<@#H6!V'/L
-MI)?Q&_CY\"2</,$1 at Z8RD.-$=3DQCBRZ*<`QLQKFL_E[BH>8[>W!NMJD-P>`XO
-M_)Y\[^./:@IQZ?IX&08#W(K+#FS?)*/QQS5!1(6+K_1:KK'KS1\^/ZEM5FW1
-MG>K"YU#3?WF`(_J`E:FA=3D*V_[,2>%MG&ONU/<Y5<,08NF6TIH0+7$J]DQ'/:
-MDL[&UH6D<RD7)W]\>C1?=3DCCIUI"MP.&((S&Z&VZC8(4:;UP:O*P=3D@@GAX'=3DY
-MTG:X?;K>'L&)3V?<?\>SX.PN:LR-)F%2$K=3D&@*D.`.P```#L`````@```$4`
-M`.A550``0!$``,"H`0'`J`$"`?0!]`#4!KG2-3&2OG&2$02'?V`B9;(7+B`D
-M(`````8```#,(0``L*OUH>DWVW[H^)`G2 at 3X;H!8P<);Y<ZP*@'EK(F@[I;*
-MD6Q+?P!?'7+K6X"8EU*B$EEJ[C]!+BU0+\K-*^Z<5WYD4(09G/#PTK'I`J<!
-MTI^*:=3D(+X#70$ZDH`$?XS)O`FY6M<FMB1#E#",(S8RF at 9=3DYS&&=3DW at L1T.LTM
-MW?-XCWH#"`.=3DF5SRCED<X5ON."_U\N=3D3Y^K3J=3DW=3D`J[#/WDMXFDV[J$"I\AR
-M12X+`JU2$K=3D&.<P.`.P```#L`````@```$4``.A55@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KG2-3&2OG&2$02'?V`B9;(7+B`D(`````<```#,(0``L!!>Q/OD
-M`FY00*FOA<@$PB3:L.*1<4QKE5L*B')YGZ4/:I%T,QS6">8X/V7/(>(E5<ZV
-MIM"YP;M-9*M,!4#K&2=3D2X=3D/@F-RMJ]DQ.:918H^CEZ_ at 6LK(T/_^KF;.D'66
-MU3CAZ96"=3D$RN]H*>>"&@B,SQRH@\&V+&W]E=3DQ%7$C*U)U0-UPMU;G'^'-"=3D>
-M&A9=3D8A6`]1>^!0H'.[-1OVB3O"7N/UZ=3DBX(3F?*\F:I2$K=3D&(?(.`(P!``",
-M`0```@```$4``8A55P``0!$``,"H`0'`J`$"`?0!]`%T!UG2-3&2OG&2$02'
-M?V`B9;(7+B`D"`````@```%L(0`!4,>@R&0(?G+&U#@S- at +_[+RP2U-`GF$O
-M3\-5\]07-[$6K_,1;GGKU9-E[ZQ_#LTX5OU73T%F?>(A>LG*%07M!N.V^?`.
-MTBFCK'N*FV at 5W887@8OPOUN8.$*`\CY,OJM*(T7Q^'F/!2.2M`@D68;F0Z&5
-MMA=3D'3/!LX*"K7QH&$$,!)W3DU4FQ:S>YJ?-4Q1U"UA'6E$Y3C&E'<@#CZHB!
-M6_:MQK-S2+F(^HFYCNI,V&+<U^#60)J^2FP9^V*,=3D5AWT7-'4CMI),VW6?A3
-M1B.I:W03-A'#O82],_26+IT$&I=3D;10VPQV'&E!$\>M=3DN_IDV8$DU%58"W=3D#!
-M=3D]&(BI4KBS"UL80:;-$Q$$QZ%)2T0^UR2\\@Q+8<ZJB<Q\]V<N*5Z[\876%M
-M0D.88;A)`#\=3D=3D/FE#6QE*"//>>QSC\A+[61E8/FQ"XNL`ZA4'T^J4A*W1N(F
-M#P!<`0``7`$```(```!%``%855D``$`1``#`J`$!P*@!`@'T`?0!1`<ITC4Q
-MDKYQDA$$AW]@(F6R%RX@)"`````(```!/"$``2`!'F@#9YD535P._]2POVJ5
-MY(ET`__:99!-O"2Z"TE5Q at 3)S8N at HE%']GIBZ\,T,8XAY#H9[=3D-ES)PIT>#.
-M.F`U>KO$<FJ4B)V%TF55F&$L`%*'I at DXY$6Q68:7E&WS/Q8^#OP,9AKO%;,^
-M-R13M'<FNZ,0UY#!42GGV&.X"2'?3KLAL+97HY5(\HF0R^EK2]WJ9UJ$MWV@
-M:-/.24X78R`;EO_Z=3D28=3D__,>5RO at BTE@]62HM-=3D2*Z^,(($:#RUISF>/$4;Q
-M>U!<1M+7[*S>NSAO"NL#T0:\?ADI*:LC:M5O&^]EXK(CB4,&Q&\;/A/T7-M^
-MMT[8'1'%F%\R^]4,5%0/:2M.Q=3D?`@CE62O-V\JW]8LZ at F%,9+-/F#>!!+5,2
-MMT8R#0``?````'P````"````10``>%5:``!`$0``P*@!`<"H`0(!]`'T`&0&
-M2>AUH,P(N;"@N:Z'+G[8*YDN("4(`````````%PJ``!`YQ=3DL-QA\8],N$K3A
-MUP1QL&XVSXKY+HA(:0)M;GKD;$0F8#>9-%2;4V>9(TY%;9Z)S]_(YX$/4HY_
-MRED24Q*W1ID9``!L````;`````(```!%``!H55L``$`1``#`J`$!P*@!`@'T
-M`?0`5`8YZ'6 at S`BYL*"YKH<N?M at KF2X@)2``````````3````#!L8EM\@P[W
-MI$7!V%UCN]-+_#HZR?$VK[(_*#(D>XU]5 at 4YT6'9Y.PM*^LESU,2MT:)*```
-M;````&P````"````10``:%5<``!`$0``P*@!`<"H`0(!]`'T`%0&.>AUH,P(
-MN;"@N:Z'+G[8*YDN("4(`````0```$PJ```P#PZ1D'?6Z1>0I,0BMU!&@(IC
-MVB8JC,"N#GM[@ZR^A8^LZU3?NY/P_WS/$+13$K=3D&#38``&P```!L`````@``
-M`$4``&A570``0!$``,"H`0'`J`$"`?0!]`!4!CGH=3D:#,"+FPH+FNARY^V"N9
-M+B`E(`````$```!,````,&;L`T[.B9?6\AH!POESPTP0$2D at J,K<>29*_3Q&
-M"R.,;129`GTW at _$)-[:Y4Q*W1CLQ`0"8`0``F`$```(```!%``&455X``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEQM;L-[C*9+T``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``20'A@?+<
-M_(,.?,'SG0=3DTVMK.7QI"5,3)87KI,;7"8<B?PAXMZUT)+7'$$(%!5O'V=3D&D[
-ML\Y^H(Y?W2C(2YE\*111^0/7<M?LF&SO78[JR&U&Z<'FU6;J&3<N>W,`D$-,
-M$G,WR;ITL^=3DL#?+:$;/%)Y>;AS&4E+/$4B\)C*?>F](I```D<J1%NURF6;&_
-M\=3D^4\\5JG5:B(V3(XV'YNZ\0>"ZYN>@I```<``!`!.87&BF:NAZ"O4?+">H_
-MTW]"<IA:````'```0`7J1J(JI:WQ87LS.8KXA;-JI(&F@%,2MT;7/P$`7```
-M`%P````"````10``6%5?``!`$0``P*@!`<"H`0(!]`'T`$0&*<;6[#>XRF2]
-M```````````I("(@`````````#P````@``!`!@````'"0,)^T!;BXH"=3D+ at 1,
-M\O>?C29VD%,2MT:Y3P$`N`$``+@!```"````10`!M%5@``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A<;6[#>XRF2]```````````I("((`````````9 at A```@``!`
-M!@````'"0,)^T!;BXH"=3D+ at 1,\O>?C29VD"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``20'A@?+<_(,.?,'SG0=3DTVMK.7QI"5,3)87KI
-M,;7"8<B?PAXMZUT)+7'$$(%!5O'V=3D&D[L\Y^H(Y?W2C(2YE\*111^0/7<M?L
-MF&SO78[JR&U&Z<'FU6;J&3<N>W,`D$-,$G,WR;ITL^=3DL#?+:$;/%)Y>;AS&4
-ME+/$4B\)C*?>F](I```D<J1%NURF6;&_\=3D^4\\5JG5:B(V3(XV'YNZ\0>"ZY
-MN>@I```<``!`!.87&BF:NAZ"O4?+">H_TW]"<IA:````'```0`7J1J(JI:WQ
-M87LS.8KXA;-JI(&F@%,2MT9$=3D`$`4`$``%`!```"````10`!3%5A``!`$0``
-MP*@!`<"H`0(!]`'T`3@''<;6[#>XRF2];"D!O]B7^,LA("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(```?%)V-!:MT0RC,K'S*TMMZIN<!D=3D^+F8AK'-`_-DWPR&P-.
-MD[YL%36E(YR*YEZ%'^J$N.<F,?E-`C)&[OSN&[E7^J*;)G^N=3DE.@$%<V($=3D@
-M@[U>7%_C^C*S!/)Y^KDZ<ZWH[0D3#1C;*+9ZP37TV6.5-6%VRC9;-HE9`$$#
-M[50B*0``))_.WP_5F">Q`_Z3QVG5U4IM?T-<4R4A5K*0&.&6?F;S*0``'```
-M0`2#PH+:<!EJG0XH>EVH31EXU&+<M0```!P``$`%?E022?$T]QEM422G+K]B
-MRB?^JI)3$K=3D&5:,!``P!```,`0```@```$4``0A59```0!$``,"H`0'`J`$"
-M`?0!]`#T!]G&UNPWN,IDO6PI`;_8E_C++B`C"`````$```#L(P``T.%@2#E-
-M(P-I4NM7UG2CPZ+Z-3-L)I8?7&U98\,`/T(M0=3D^+?[)%MY^8L[&@.ACV at KS6
-M](_\!TF;,46R`?#"V>$]`M]^ZO+`K5*J=3DGEM%Z1(9=3D1':<C.AL7Y.[FJ/QSR
-M;1IT%S'>>P4WN5DS4+;<13/8R.NRD9N`\6M2M.6M1@#C%^[W"J3<T1<.LX+F
-MNZD<^JD%$'0[T%_YAP_"T>T<)V*CIA5/XGG*7)@HB`<SU[>=3D"2C;--B-Q'4Y
-MH(K*8@]&N9HMI&-#JVP(B8]#`5,2MT;HO`$`O````+P````"````10``N%5E
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B<;6[#>XRF2];"D!O]B7^,LN(",@````
-M`0```)PD``"`CA_/9X:<*4>(*+75),ZKKDJ*/WMPCCV9T9I1SH2X**J<FV=3DM
-ME`CF@]>)$'YB5"(0562*'_00NJWWQZUX?&/,+#Y'K3KF6L]UIF>@9Y7>P-+X
-MQ0G\XM7D"WO6U6N"]>NX=3D>?'6-0:M-OA]1=3D(`,.$"G=3DBGM-1WUS"B,MS*%,2
-MMT80W`$`'`$``!P!```"````10`!&%5F``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ<;6[#>XRF2];"D!O]B7^,LN("0(`````@```/PA``#@FJ3F$_,/)/$M`BIA
-M at 0N;I*6>?;&_EOYN;*#=3DQ.-[^^WBQVG6T!JJ-EHBM[K.)3L?>F8U\-,5'SI:
-M$(G#3;,LNDFF7N!N7`#TN>R9U(8?DDY:887LP7E?JG]/"?1&-Y5+LR]+D\K<
-M)T<%J,GN9'0[`Y?;WL0L'`]S;5X7O6'U[V"&N=3D8EPLNF1:A+C2SU]`N!9^L;
-MWY[4N,B/$PD(R9[L[%HK,N#C.)R+E"'VB2E9E_(/GZ- at 8T)D:,LK4()D-TZ$
-ML,9L^UO,_>ZOIXB,7<J!#B$*P+N3;(S$03CX!%,2MT8:YP$`_````/P````"
-M````10``^%5G``!`$0``P*@!`<"H`0(!]`'T`.0&R<;6[#>XRF2];"D!O]B7
-M^,LN("0(`````P```-PA``#`6=3D9\PG9C,T/S!`31LY#5G5![FVGS5O!E0'4!
-M=3D<F at 4;Q,^O*4KEB1%2::\T;HNL1P;I`DZB:9&4+[DN)'.0_QPK13T+1$\>$:
-MSCUNSU^/0>9 at 9Q5P=3D3BV=3D+\4C]AQ_'ZR`H[BZ<S.3+]60T at YF9Z)U:`(^1=3DH
-MSO`B3A/^R:QP!+I=3DN:4(>OL;E_?L,8TJ-P+- at O5);UK#5@].2P%<-.D=3DIW3+
-M*V,[62, at M(8%KTHW5ORS+'FH(<)S=3D/*-2IE3$K=3D&5?(!`&P```!L`````@``
-M`$4``&A5:```0!$``,"H`0'`J`$"`?0!]`!4!CG&UNPWN,IDO6PI`;_8E_C+
-M+B`D(`````(```!,*0``,+J$WA=3DW4Y>+N2/J1%S$J<9J\U)>R>[MN$O]*RV:
-M!]Y3`'UM11VAH,SXH]*Q4Q*W1G`-`@!L````;`````(```!%``!H56D``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YQM;L-[C*9+UL*0&_V)?XRRX@)"`````#````
-M3"D``##^2-&J0N^\5]Y!AOIWNK7Z_GF*=3D0"_0Z5BH?NJP at 8/[99S+"<BKS]K
-M=3D10:8U,2MT9F*0(`/`$``#P!```"````10`!.%5K``!`$0``P*@!`<"H`0(!
-M]`'T`20'"<;6[#>XRF2];"D!O]B7^,LN("0(````!````1PA``$`Z./WFU&N
-MT6DVSYW0'Y`-^CPF8"2^YHXO&M$F0BK^M^1-7BV4BS=3D!D=3D<;YL'L(J[G18FS
-M&RG#4#CTCTZZC^T4V/*NI#6'T''CUBZ4"=3D`*O:XX)J\V:A9)-&1,VSO;=3DWV]
-M^5&WA^1MEWDK;I?"38BX\C,AEK%C<#E/*0&C6>V4`G5[9^.*:Z*]H.]'\,*E
-MD]VZ:2)I)MC4LC?6?;W9B-5KZ1"`RXTLV$<H9?#3MX7RU6 at BE."#BMLEGS#'
-M4-_WN!78J#031+P^U\3OI_BB;,*DE+Y;57NVGM[6O%TK^7>0W/0H5+!L0*P'
-M33QGQ^&`3:U;V*/++"#_/`NYOQ)14Q*W1H0U`@`<`0``'`$```(```!%``$8
-M56P``$`1``#`J`$!P*@!`@'T`?0!!`?IQM;L-[C*9+UL*0&_V)?XRRX@)`@`
-M```%````_"$``.!5N;PDSSB68&X!40AM8I$CNKT^,C-]3H6D^L;ZO!4C\*X1
-MHUM:#."]:6<F=3D\/YT+/%%IUX2A!YQ4TC@:=3D+#SQ>0J,5P43`>'30#NRY'],P
-M`G*>FV1 at J^SR^6:!E(WM*"(K+(FEU%*0[>F5)HF(+SM9#.Y*T3E=3D;:$5[7<M
-M)XG)##3_CY,=3D2&^8D[*,6TWUL]X8&_P/KT=3D&;Q\SF.OT_ at _QC9!IV[W^:*AF
-MT.4<:]%=3D8'QU9=3D;-!HTG&%S(%0+IP.7.+P3^?JJ<>!O(LCM!ECK3J:0NMSEQ
-M<S>'E;YW4Q*W1F!%`@#L````[`````(```!%``#H56T``$`1``#`J`$!P*@!
-M`@'T`?0`U`:YQM;L-[C*9+UL*0&_V)?XRRX@)"`````$````S"$``+#3!+Q[
-M%&.O#_A2-2+5=3D$A37.5R27;<$9L=3DQ#D3K]U"ZSI$ET.A#"G7(H]YERIQSTVY
-MO7/K2R9`.\=3D&JB!L9NNZGF$CO at G0O5%UF6\/#XZ+)Z40(^RUKB!XYUVYD,.<
-M%-AQ at GQ[NU,U;XX@:!J_D5':](!5RC2'2EE2.5[4/DJ'V9 at EMX:02_ZG_Z1Q
-M\[3'-B<)'#U=3D6`Z/WRPYP1 at 5_,?4-JY/&@X^%HX"1A#A4Q*W1D%I`@#L````
-M[`````(```!%``#H56X``$`1``#`J`$!P*@!`@'T`?0`U`:YQM;L-[C*9+UL
-M*0&_V)?XRRX@)"`````%````S"$``+!(+U#"9B`S3H>D>B1&U9\I/+KD/*6*
-M[#B-]6O,Q6%ZF(KB'3#+'@%&>J$>H?T_ZKZO at R9(MC8 at F_1#XFT"*G8K<$Y=3D
-M75V?^Q&WEIK!TQK>3'(@*Y*A/J<3][ROII7):W9S7H\'9G0;9G2M@\"YLJP5
-M[_"ZU?&E3ZF8V=3D#PY2#TK$T)V:M5$J'$V4R;)6DN<2W_[#A.KA&<P,[\,%+\
-M2+J/V>!L2@,ME]:*""AJ4Q*W1FB&`@`\`0``/`$```(```!%``$X56\``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)QM;L-[C*9+UL*0&_V)?XRRX@)`@````&```!
-M'"$``0#O)]TQ)LY;DBF1M[9N8\E?UY0MATI_>@`:S=3D*O/*E-^4'5/Z,F_JX=3D
-M_TQ7GD1ST\:VT!5>*?(U!]#<G%XR(GLD.'P5L9&5+__T>K/<8OJXI3 at LF75&
-M^ITLWMRYILK\LO;5<.,'K>M0;CR"O+1WY]Q?H>&ZS#1(>];6'N([\[N007GG
-M&*2U@&W,$-RC,A#.LA/&8BH+)-R3U?4(JDUV?WM2E#_F>WYCK at 7<LZR1#HX@
-M9S`E:\-6F%)QEW'ML$O7Z"..:_>-QHG`EY;$_7HP,Z9X6KJ9[P1)4E5T+>67
-MLWO6-8`\`KY%#I12,C[A7ME#%WQ=3D56(@N_O@#C=3DS2)E3$K=3D&PY,"`!P!```<
-M`0```@```$4``1A5<```0!$``,"H`0'`J`$"`?0!]`$$!^G&UNPWN,IDO6PI
-M`;_8E_C++B`D"`````<```#\(0``X.I at -TB5%D;$W49)()),H1[4MS3!X3^@
-MIA8 at XU=3DHH$P9.N.;;N<NK>9%<U55;=3D\\G=3D?FDMMEU>46)+3VEL\)IDW]JZ0C
-M74HGP:\';ZR2=3D>*NH1AK$*[O3GI'J-DE('GQXK-'5'?:4L;PD>Q]-!2-!LRS
-M<YS2FY'9=3D+D457,'ZZ7JR`E%1K&4\(?'IT+EQOW,U&/0^?:[E^J2*?VU?X:]
-MT"BR at W=3D>J_Q7R_^=3DU*916+M$(>*&L at RZ":=3DNQ]W1BZ.]?8;8K\*T^"0,=3DWJR
-M1RNYVQ@!DO*7B5S4^]?TS']3$K=3D&+Z,"`.P```#L`````@```$4``.A5<0``
-M0!$``,"H`0'`J`$"`?0!]`#4!KG&UNPWN,IDO6PI`;_8E_C++B`D(`````8`
-M``#,(0``L.(?Z*I)81&;_.2_)!L_1]=3D5<"=3D:C4,!?,-V._`C+R&!$"HUKXRE
-M:6TG+YE"6H,DE9$>3`6S?M0Y-=3D;`<.#Q@^P;SG97'/A8C&8<@NCN;]C4+'Q]
-MHT\- at VB9J`JZPO]].__)'[)1*##IA4.:`RSN^_L5^TUCXI8F&P@;<+P at 5;`"
-MKJ3KQJ/IZOUG(V:*^7O_/#:G$S;#QGA""^>?3?X%9IIV5_7."@HCMQ$E'-)3
-M$K=3D&>,8"`.P```#L`````@```$4``.A5=3D```0!$``,"H`0'`J`$"`?0!]`#4
-M!KG&UNPWN,IDO6PI`;_8E_C++B`D(`````<```#,(0``L+O3Y\!)F*=3D2*CC"
-MCW7#7UM'G81P.#[^$F4)Q%:B=3D>=3D>'Y]X5BPY^TFGFS[N&J>/91AMBF0QWE1_
-M'^:K<9,JX[B(U%/G1!0PQ[`OZ+8T(?Y at 7"I$HB'COFFD;0\33B-K,Y?2_6:_
-M?ND:,[%UFBUD"[G0$2G785)I.EV,Z?"J$M&VS7V*AB`'0C0;EFH$W;O><KO2
-MBC'$DXQ:R"YB\=3D6AV,V]6U=3D.M?J&<'D!FQA3$K=3D&).T"`(P!``",`0```@``
-M`$4``8A5=3D0``0!$``,"H`0'`J`$"`?0!]`%T!UG&UNPWN,IDO6PI`;_8E_C+
-M+B`D"`````@```%L(0`!4)?E`5UM<:($KXAI0,G(/VYQ3. at DP<2<O(P![Q-_
-M:%ND#=3D7?7FT&=3D_+/`[LYH@#S[:O]TA9AYI\?T``GU:G'_203[:\L-E^8]HQJ
-M!B"K+301D9_:DJA(T"%`D<'G.4KJ_$PN90+Z-,FSY'V<)10IXO8]LD15G#W%
-M`\V\=3DO).C88X;VN7N0-Z)W]BZ*Z--/_5#5OAP,;=3D^KKXW^6._(7ON&S_;,.V
-M%/SMA at D%5J?##*%'&=3D29YC#K>DO<!I#CDYF7$1L%@'HWP7>WS3F[T\+2F;A3
-M30TV-8]R3G.S9PK at S@(1"*Z89N#'K6U660[[QR1E46LB-UH-;&4_.-+R_^=3DT
-M-9QL<&;Z0TF*V<U9J3%10V.<2`0K9:=3D=3D"[&R8H($R'PI$&E*^"G11F>G1]2[
-M)S=3DRD.I<>7)\:+HPEH at 6(V+(H*9K]H&2,SC:\&YWO?Q44Q*W1N,C`P!<`0``
-M7`$```(```!%``%857@``$`1``#`J`$!P*@!`@'T`?0!1`<IQM;L-[C*9+UL
-M*0&_V)?XRRX@)"`````(```!/"$``2"8;X7%!0/ACR+B[2JFT6Y>'3HCHL7Y
-M^<[BUUD,.^-"#A`*@GA\F5.%!M`%RB'^HPMXK]ZV+R^722*`]ZY*)VEAJ)U4
-M'&2"U1JBC&3;"820D]-AKQUF!QPE81J7L]<PF5#,0\Y->%]2\F6+[+"9W(=3DJ
-MD69Y4-9_X0J#&)]46/XU#/FT(SWU'6PQ<8UGHFHI,I%HG82H+#JF5S,X5EXM
-M/=3D["@U(EG'\KMD`([9!7Y)K/T=3DJC;O7[$=3D*YDW$9&*MX]Z=3D&)LH&#Z97HB*D
-MG3+*[WM":<A1.$LP&7^:<WAC&AM986P2LGB!HL"_?.+GC'CT""]K8Y0HC:HP
-M*HO'N^(&`"ZT)BH'T][AH2M`U!8*#?Y>W4_S.8)F[_UU8)L_MU,2MT9&3`,`
-M?````'P````"````10``>%5[``!`$0``P*@!`<"H`0(!]`'T`&0&29)U:=3D#=3D
-MT2\5J'/<:'-)C$`N("4(`````````%PJ``!`M/^`$:R1A%:MV`H&8Z!T:QXE
-MA">+1T-MKQLG?1"".V;GE/J7\$BJ&#DERQ6+6$^7]/;3ET[<B<5*(3U+4Q*W
-M1LI7`P!L````;`````(```!%``!H57P``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MDG5IT-W1+Q6H<]QH<TF,0"X@)2``````````3````##]+%.^Q&(!@;F;-?-!
-MTC-LV\L=3D3+*+!T*+&E!`T!"+MCEQPDE@[^IK,MF=3D,5,2MT;@9@,`;````&P`
-M```"````10``:%5]``!`$0``P*@!`<"H`0(!]`'T`%0&.9)U:=3D#=3DT2\5J'/<
-M:'-)C$`N("4(`````0```$PJ```PC&=3DL?:<UIN4)@J?N;;:GVD&B1RSI:(B"
-MYE"^4:P.3$*TP;9HA(JHJTDU<$I3$K=3D&%74#`&P```!L`````@```$4``&A5
-M?@``0!$``,"H`0'`J`$"`?0!]`!4!CF2=3D6G0W=3D$O%:ASW&AS28Q`+B`E(```
-M``$```!,````,(S$L8B.`C\H:#0N&B:&M9L9/'\HTCI:D+<@AC1>$BRV`K/R
-M^IQ at 1'TE]&^D4Q*W1IMQ!`"8`0``F`$```(```!%``&457\``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE]XB.:W:UPF@``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``KY+A`3[KH>UZQ*:J
-M0$7+U?6PYAV<9AX9)?`:VN*][<'BYAF%%(0PRL^HNY:%8P>@\CS00V88^L92
-M\OW(LW$9SBC7&GI7A^-K-=3DG&:/=3D&J[8*"@>)7NOWPI<"7Z-XJB=3D82C=3D"Q\+X
-M^3+K6BBWM$F13R%IG:3)XN\-V6U`6Y,$0&`I```DF_#9E*-)B6`U"3AE?GU!
-M at K2!TX\;!U]@?O3[X/2;E]`I```<``!`!`+WN^@IN>F7;8M),8?0M"0+(`U2
-M````'```0`5PK$?J1*88D6)MU0<U6%8.0W[K-E,2MT9Y@`0`7````%P````"
-M````10``6%6```!`$0``P*@!`<"H`0(!]`'T`$0&*?>(CFMVM<)H````````
-M```I("(@`````````#P````@``!`!@````'I2!BB`VF\2H[AMSJYE+DG2=3D+B
-M45,2MT:HD`0`N`$``+@!```"````10`!M%6!``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A?>(CFMVM<)H```````````I("((`````````9 at A```@``!`!@````'I
-M2!BB`VF\2H[AMSJYE+DG2=3D+B42(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``KY+A`3[KH>UZQ*:J0$7+U?6PYAV<9AX9)?`:VN*][<'B
-MYAF%%(0PRL^HNY:%8P>@\CS00V88^L92\OW(LW$9SBC7&GI7A^-K-=3DG&:/=3D&
-MJ[8*"@>)7NOWPI<"7Z-XJB=3D82C=3D"Q\+X^3+K6BBWM$F13R%IG:3)XN\-V6U`
-M6Y,$0&`I```DF_#9E*-)B6`U"3AE?GU!@K2!TX\;!U]@?O3[X/2;E]`I```<
-M``!`!`+WN^@IN>F7;8M),8?0M"0+(`U2````'```0`5PK$?J1*88D6)MU0<U
-M6%8.0W[K-E,2MT9WM`0`4`$``%`!```"````10`!3%6"``!`$0``P*@!`<"H
-M`0(!]`'T`3@''?>(CFMVM<)H.M/%29[57\$A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``(MS+_5^`?70L*C?2/X3S@["2L3<U#/1J71IR=3D,5Y/.;U;M:;1LJQS^)
-MEP5Z)3 at R=3D4Z&'6.U'KSQX:")<L%VI)F;*6,`&5#=3DFYFB,NTEHT=3D!WB>'6(SB
-MG_U)]P!8WJEJ64-TVRSU7AB.Z['0TDA.O/P4S^+,4;VZW>'>]J?EJPHE*0``
-M),0&QQ_$.*/?^[%B?/V at BSV"R9HM_'!Q-1-NGLJA.AI(*0``'```0`3S+DW0
-M=3DNB;\@3UUNAQ7$5IICBB'````!P``$`%058^]=3DF(.7,*Z-PE,4TN)R&=3D9-M3
-M$K=3D&8^$$``P!```,`0```@```$4``0A5 at P``0!$``,"H`0'`J`$"`?0!]`#T
-M!]GWB(YK=3DK7":#K3Q4F>U5_!+B`C"`````$```#L(P``T&OTWXD0CH>IVSXK
-MDL/;F!G!I_NMC51[T$RLTH.+]!AQUC^D_-FKI8R2NEL<85O1KI8R9$9]:_'!
-MM^`9]8YC[W/8$Y680JH*.$`TUOHYI,#AV2)J>P('>-HGFS^`..W6$JWMR59G
-M:.^SJ36 at RE''X3&([T;,E at IQ#F(%*$L;0$4[V0AH&);M!SPWP/`7>=3D at IFN7@
-M$*7$PVLOIV:85X*J+;A4OF0CK\=3DMZ/[#Z[8W\RP]\HFY<++$2]+^@X:8O3II
-MHI6S187Y:;Q<!NJJ#E,2MT8*^@0`O````+P````"````10``N%6$``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B?>(CFMVM<)H.M/%29[57\$N(",@`````0```)PD
-M``"`>'7/A71E->'^.5\Y(P at 2[Q][-^#Z:ENUF&C":#27O/<VQ^_R*9K\_P:H
-M+,ZL[-9>0J\TJ$)-G3)9H8^A at 3]$]6ED;96?%'/*20#BPZQK/D7V'^.D"H,+
-M0$*Q2[7-HN"1WS]"3=3DOX>AH:_3/ZP*$6:DX#ZF^YI!5,OPH[\5,2MT9?&`4`
-M'`$``!P!```"````10`!&%6%``!`$0``P*@!`<"H`0(!]`'T`00'Z?>(CFMV
-MM<)H.M/%29[57\$N("0(`````@```/PA``#@/<F/Q$TJ&`JRH0_U@*WB%9W5
-M%>/A\->)(N8:1Z]N<=3D#?.X@:#T9ZBDS%@.\3V&X(NJ%[<!=3D+/ZRM_PUSLZW,
-M6M:\0=3DU\><AIU&/3[F;F/9,7V9=3D:-X2C)D5%,I=3D'")@64:V`AR?MLAQ?PE/<
-MT#IORT'/44#:_\4UBU?#"XHK=3DT8K65J,78J:V6?Z50S at D)/GB:B6W?&(LS`*
-MKC7P\26>)H!*Q95>H%RE+.+,GB.BSRS&!^UQ$P=3DS<+-5&0-QZA62N81PPJ(<
-ME26J5,_H&&^Q3L>8RH=3DD at OCTT^5JA5,2MT8;'@4`_````/P````"````10``
-M^%6&``!`$0``P*@!`<"H`0(!]`'T`.0&R?>(CFMVM<)H.M/%29[57\$N("0(
-M`````P```-PA``#`>M-S`PK'SH>2),GGP3?HQM!R=3D-21D\=3D.AVGMA*Y3'C=3DW
-M<`L[!Y+,>XYOS$YO;)B]AR[.B;6=3DGK=3D%@[>ILI5,B`GZX42?.\QG:?T*[6B8
-MD,G>>@!L;ILU^7.LC&>8^NC@*`;GXK(WJ^"]P^,L:Y[T3N"OB"AU4K[$1255
-M[_*J`<AEP\LI?JI*P4;'YZF$7L:S?)"NUBJ:3175BTL'?'V2-+=3D.2YG*J74;
-MO,=3DX(&JD#`Z5;O`=3D":$]R4?4MYA3$K=3D&:S0%`&P```!L`````@```$4``&A5
-MAP``0!$``,"H`0'`J`$"`?0!]`!4!CGWB(YK=3DK7":#K3Q4F>U5_!+B`D(```
-M``(```!,*0``,-G&VR3>P"97_,"V2D.8]8W51&?((:[N0ME%^DZGHLL["QE"
-MDK/$%Y5B#ESA4Q*W1I-0!0!L````;`````(```!%``!H58@``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y]XB.:W:UPF at ZT\5)GM5?P2X@)"`````#````3"D``##B
-MB_II&&-:Z&$@)?34]42=3D!RI\/3]2W(V^Z#@Z\U#A?H7&>9;GI4UMB-O\<%,2
-MMT;U:@4`/`$``#P!```"````10`!.%6)``!`$0``P*@!`<"H`0(!]`'T`20'
-M"?>(CFMVM<)H.M/%29[57\$N("0(````!````1PA``$`$6N5SSN<;^U>F@)Y
-MS'P-;]A,IYVX>^7W'Q6#P_0C<D-PT7ZO)D[Z.I>S<[RHW,Q!)P%@J=3D7[_+@(
-MN10B/R%7*IX+(*J4VZU-0`D92#2]^:[.#D@;YZT`GXR(8(]_Q"&/6O[\`+Y$
-MX3$+>1],A+MWD<L[);^O%L4OR[INCET9.J5IG>*V0ZSS#E,*FAF[RBI%%@)L
-M62^`.`R:SY`XDW&,)[;8B)O9W<^GP?-IZX$"6LOT<'"4KT9R at +LP>(K$_?<3
-MO9KDCCQO*W*A5GTC&W*TUL#$(K\K!-8#"]D5LEZ1:B#A[;P%>>%UOLBB6;,=3D
-MZ_S8DL[$\@A?<W1#R at I94Q*W1A=3DW!0`<`0``'`$```(```!%``$858H``$`1
-M``#`J`$!P*@!`@'T`?0!!`?I]XB.:W:UPF at ZT\5)GM5?P2X@)`@````%````
-M_"$``."0H*3=3DO!1YQT)_\"XN_;7?E>*3!=3D2NRRVMD]_S?B96/9Z1NHIA;0]C
-M#D'#FXYLZ`!YBF24%[ZA at YZ2E_1\[H=3D-BG;9'8I2YJY7R]V'\\YQ0^J"EP9@
-M]V7'T;Q-7O-GQB5?$T24%5KBEJ/S=3DBK4%;^3^=3D=3D]=3DD^.S\'%SII^,XJC6*]-
-MAQ!0?!<7^YX=3DII9.Y93:>/1E`>2OEJ2AT$FRQ5O:!YL:]BR<HU#<&HB'&8;"
-M8JREYEVN#&5U3DS`%Y at 0=3D,'_Y$<':#M<3M&OXJ7;<DFP*'^Y;$S21N\IVQ'N
-M4Q*W1E"&!0#L````[`````(```!%``#H58L``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y]XB.:W:UPF at ZT\5)GM5?P2X@)"`````$````S"$``+`/H;&&W?3TD9LX
-M"-D\#UZF&I[-#YEGRZ)5>!SU^ZFWD<ZGJ6-E\B6['DZ?2^WS\7[#H6.%)8C,
-M:R5EKVBB)-+AZF#4HC>@\Y2H0[L#3F2>I2=3D&]U!9%Q7D25M*=3D\3PC`WF#MT[
-M4QM)RS55MLZ]G>7SBC,$N at Q2SC3^24R.H8J$J*/<J],`]H$?E9 at 5%I3([XTI
-M!L\]5EH=3D10X^3.W17)0E:M9<X)7%"]N!^Y'!4Q*W1C*H!0#L````[`````(`
-M``!%``#H58P``$`1``#`J`$!P*@!`@'T`?0`U`:Y]XB.:W:UPF at ZT\5)GM5?
-MP2X@)"`````%````S"$``+`@1Z=3D1UDDAVY8P/<^H&>0B6YA/GXSD at R-%=3D)E1
-M"U3T+.\ES!;J!K%$/:RTZYQ<-P^&FA\(98\:T6Q_KS_DTKZF-UW$T(:AKN"O
-M)N>F$U9<-V(979$TNIR0*6UM0@'3!Y9:K9AVL`-#P'QR+,+U4 at 2=3D5K%X-7-?
-M9ZH#.?4M+?GTX2$L/19`C_J'[?ND[^9KXV\RZ-*T'/6"MHYIPOMR*YXF+('8
-ME[9\#1*2J6BZ4Q*W1F'%!0`\`0``/`$```(```!%``$X58T``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)]XB.:W:UPF at ZT\5)GM5?P2X@)`@````&```!'"$``0"Y
-M`[!AZ)'KAHSDEE][J-<'@0D<?'<K`E(#2?D1?*^KRM$PMH+%F-D<#(#X0I+9
-M@]4(\0O(SK?'?9 at O.\Z]1D8['?PK.#4>>GPT]8[OS-E5_+AVMGV?+4:E*]Y"
-M6#P%@C.9$,.=3DW0=3DZ`+]U@)*X/,2@:%;[H3HLOCE#)HVSW!*F1Y[GRM\+U54/
-M_M,$"6QN&JK/3+Y=3D$'9@^`:!-&3ID"_4!+]^_K]*`Y,T?0T[\*CP&/^^(LX!
-MG%LLS at PO3B;L_:_^0M_G?OH7-R$+,0:6Q=3D#IMLE,?T7/<S299FUA,O1?E;(2
-MRS6NRX2E42C@]U+I&YJ^'A^>;LRL9ODZE(=3D3$K=3D&4=3D$%`!P!```<`0```@``
-M`$4``1A5C@``0!$``,"H`0'`J`$"`?0!]`$$!^GWB(YK=3DK7":#K3Q4F>U5_!
-M+B`D"`````<```#\(0``X.0*6?C&5](+P6+?0[ZCJZ15#0;A#/)'53\Q=3D)JU
-MQL;9)`'=3D_P=3D5H5/*5&])+0K+<T&DZNNHUUF*WSBK3C0`1-L/<3P=3D`MS"(>ZZ
-M*:+7>[4QI;,%7NUB@&!<^+7*&W,`-3KUR!BWYK4MD?J7],SZ[LLTJ]RU126-
-M^=3D:!^H^ZW.":[NV$3;DRU4):KH").`O>=3DYG[QRI<PECI'.0$L]3:RBD4"#&`
-MV"#+!5=3D9B67DL at M?>1-E@>IJ4#I:VNH:LMTS[#@XT?3R_SK&",OL@]@:+`"?
-MVLVXJ>B05Z/2G<I3$K=3D&7N$%`.P```#L`````@```$4``.A5CP``0!$``,"H
-M`0'`J`$"`?0!]`#4!KGWB(YK=3DK7":#K3Q4F>U5_!+B`D(`````8```#,(0``
-ML*,.7$D4<G=3D9<+1-,1!V$R(GG(%"IKM0A`X<+P.,=3DJK(*OLSY`Y),W0LZ._?
-M/(:C6;!AQ6K=3D9=3DE)S`5PH#7<PHK"M-V#V,=3DX75(=3D\[:/[E6FEUP):-3*G/:^
-MH`8^0DOUK_KN.*&%C6M89<(-EOOOJL%HXY!)6T/%J\)_]FO_X:Z71_`.DEH&
-M1(L0Q4RK>_"=3D.<$52(T6/B#7^)%N-`)V\Z58\_'WGP56;9T5-+Q3$K=3D&*`,&
-M`.P```#L`````@```$4``.A5D```0!$``,"H`0'`J`$"`?0!]`#4!KGWB(YK
-M=3DK7":#K3Q4F>U5_!+B`D(`````<```#,(0``L(J0!F:U[W<C;^D7.-QCW0ZH
-MVHG:<VHFDD<($7FJ^A><RC-\GBIKPGXJ/*D&^WRP_LB'EF0_V5G^\B7^QBRY
-MUOU(KC'Q#2)ZQ`;\<WSOY!'].SB,$/[T/")S5K9 at P*U0IR(7JI1YY=3D.LX:4W
-M`2RP5Q<FU+J#1:(#@JP!EKOBB6J^&8*H+TA($?,WAU%ALYBSA at EO3X/ZA%C2
-M-%MJ3`5#<6I&\7N8Q\.4"V.69)A3$K=3D&@2@&`(P!``",`0```@```$4``8A5
-MD0``0!$``,"H`0'`J`$"`?0!]`%T!UGWB(YK=3DK7":#K3Q4F>U5_!+B`D"```
-M``@```%L(0`!4.D*J'I%()1A%M^>LA+W)M%']<5J.(7V2<$%X`[S*DAW7.XC
-M\"WT!ZOB,MQ=3DZ476QP_X!;Z!M<9"TD2Q89&J4 at W"UP%CZ7N@*S4%;<LB!\\3
-MM-V:>9?NASE\=3D`T4.([5>:W<V=3D4"2QF?A_W5_[[K`W9<*T--83G*4)EVNJU?
-M)%!3W'#X.0U4M`;<`U5R"D']=3DFSYA%,B=3D\MO:'KC!:7X*5D$9IY!9KJTU47W
-M@$$!ONSSWMY&$+M&%!Y&.+`-8+XJ;XM5]@$;3JHAS)N]*C%V(`H+)U;G+,4P
-MR'N#N\M#;IEJSOF<ERS/+95/NCIMJ;-CAOGC\'\@$9N>2`+W>SBU^\7\;D5_
-MN$>M3R.AGC*^V.[,/KY/-.6ZX'%(10NX#?+^`V/6+.M.Y#K';8MQ?MNV,VD#
-MIFK@::<84[K]7'ZH/_(U/JD'GB)@Y8+[AAM74Q*W1I5<!@!<`0``7`$```(`
-M``!%``%8590``$`1``#`J`$!P*@!`@'T`?0!1`<I]XB.:W:UPF at ZT\5)GM5?
-MP2X@)"`````(```!/"$``2#Y*>G6$$LI-)YQCUF)'5UH1W\8_X#-':S9R1PV
-MMW"1+4\^DP06@/RK:5BNA+J)X7`7RV.[A#GQQV*-Z//Z?:K"(][(0^G#0C#^
-M$'FSC9K*XY,9LWW0WL.K:E.;&5369)O%!Z%]8_R2]P<GO_MCNB=3D^+>Z(`;5,
-MS/(I$CE]&&2>&.8G4Z8YPH-5F'7%BX"4-`R[RICAF\8PMS'KQFKQX^XRL+61
-MCCW*C+7K<DB-(N1B;J(26)KL3'!]M(_QR(PQ0I&WFLN;;NRBK3-SE/E(Y^QB
-M:8+"MENW%73R`"]TM*/.E':@Y6XY9O<EZVOT]OYBS'+ERF`(0QXW8R+?L3'M
-MY8%;:BUJ*B!;/=3D0;`^(173G7U.D@%T7S8'T4S8Z5'%,2MT;`@@8`?````'P`
-M```"````10``>%65``!`$0``P*@!`<"H`0(!]`'T`&0&2=3D<ER&B1MTH9&"6+
-M.N>6-KTN("4(`````````%PJ``!`MM(&H5>P:MK;=3DR[=3D`FJ%I0U@'Q]ZZ59W
-MHE.AFA!E@<<-S$VV-JB,%)EU'=3DKO*SK3P6#GBC_L7^X=3D\P:[4Q*W1E^.!@!L
-M````;`````(```!%``!H598``$`1``#`J`$!P*@!`@'T`?0`5`8YUR7(:)&W
-M2AD8)8LZYY8VO2X@)2``````````3````#`&EL]PO,X\8[PSX=3DMMH at A0)Y0G
-M3A/RYD8NK]1/`6%:)W=3D>NCD at V\$OF^4:@%,2MT:EG08`;````&P````"````
-M10``:%67``!`$0``P*@!`<"H`0(!]`'T`%0&.=3D<ER&B1MTH9&"6+.N>6-KTN
-M("4(`````0```$PJ```PEQ]'28!_6G!#S(7DS_ZA^4-;]HKNQ(4F'9H].0]6
-MWK,2<WYKX[Z5O`K/M!%3$K=3D&?JL&`&P```!L`````@```$4``&A5F0``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CG7)<AHD;=3D*&1 at EBSKGEC:]+B`E(`````$```!,
-M````,-ORC3E/2%EBG319B=3D#H:_SB?5U_:I<2-T[)^4B5>J8Q,EH\K\F?-M8"
-MR>-S4Q*W1 at ZG!P"8`0``F`$```(```!%``&459H``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE>+Q&\MFYTP$``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``X:0$Y0H\7BH+^_/#3D[HL4)W
-M>D7L5_7HV at 7Q=3D.MZ4-&;55!<ZT.P>'6J^+6!*\'!U:U6*\WI_];38EQT`T<"
-M:44U7_MR$029 at .:_W3S!"`%;`7B<8'HO;;I`-I=3D*&I@/B((,HT9'=3DJC0R_W%
-M3E.;X1!3,!\LYS<7OL:I%*)7=3D=3DHI```DM,&Z#,]-04CV)6O*9Y<1L//&*T^;
-M?+-K*2+U1/4UU;$I```<``!`!%]>%V at BN8"9K5A/"FAWR!U>I(EJ````'```
-M0`6#V+6N8M`E3"C;RQ>(E"3))]S[@%,2MT;XM@<`7````%P````"````10``
-M6%6;``!`$0``P*@!`<"H`0(!]`'T`$0&*7B\1O+9N=3D,!```````````I("(@
-M`````````#P````@``!`!@````$777:P2K&F>.SHX":'FF=3D#:O'2`5,2MT:J
-MQ@<`N`$``+@!```"````10`!M%6<``!`$0``P*@!`<"H`0(!]`'T`:`'A7B\
-M1O+9N=3D,!```````````I("((`````````9 at A```@``!`!@````$777:P2K&F
-M>.SHX":'FF=3D#:O'2`2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``X:0$Y0H\7BH+^_/#3D[HL4)W>D7L5_7HV at 7Q=3D.MZ4-&;55!<ZT.P
-M>'6J^+6!*\'!U:U6*\WI_];38EQT`T<":44U7_MR$029 at .:_W3S!"`%;`7B<
-M8'HO;;I`-I=3D*&I@/B((,HT9'=3DJC0R_W%3E.;X1!3,!\LYS<7OL:I%*)7=3D=3DHI
-M```DM,&Z#,]-04CV)6O*9Y<1L//&*T^;?+-K*2+U1/4UU;$I```<``!`!%]>
-M%V at BN8"9K5A/"FAWR!U>I(EJ````'```0`6#V+6N8M`E3"C;RQ>(E"3))]S[
-M@%,2MT9FZ@<`4`$``%`!```"````10`!3%6=3D``!`$0``P*@!`<"H`0(!]`'T
-M`3@''7B\1O+9N=3D,!2N_$VD8G&DLA("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``"<;
-MH7ZMM1R4'#/&V2YK<C/G"/(1:`''J]PP/6X5-Q>-G2')?M$&9/UWLB$XRJF<
-M9LU!JJ:3ZJ@;K<$Y"-CY>*=3D*WFY2O*)@;L7G4+DD$K(+%U=3D.E9C&OC,.CP8.
-MK7Y,B!KO;-T*K'J4PP(R]>06@>`,:=3D$FED+A"3FY0!@,ZM,4*0``)([]B@`.
-MV*K84M.IZT90 at S[3BD.$4[F"UM(>I^:KVZKC*0``'```0`2:?APXG3GO]4&G
-MH`;TK]=3D#+C?])P```!P``$`%'/Y9P,],8VY\_?<3%W\9.WC^SYA3$K=3D&M1@(
-M``P!```,`0```@```$4``0A5G@``0!$``,"H`0'`J`$"`?0!]`#T!]EXO$;R
-MV;G3`4KOQ-I&)QI++B`C"`````$```#L(P``T)52R[:II9DG"HH/)2RA at -/U
-MI<Q&AN>SE!P^P19W/PR5"1W+^R-QBRK+(QBB=3D(5U:$L:&WJ90CB.L;$"LK$%
-MX@\ME:NF#KQ\?H"H1'*;AL36MM6P%XI9JBN`$>\M9HH:LA`ESL;-?S9QXX at -
-MD3C\AC?=3D%,=3D`U;G&]E"4Z*)_`<`R9)F-L'-H4#1F,#"GJB1YU0&I+*QU at Q8`
-MF"IK'H'K0&EM%J7:!P3O44D,T'O+\'\Q<H;JH/0;$""91<'HFO^%;[M;X6>*
-M6]6F.5#23U,2MT;#,0@`O````+P````"````10``N%6?``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B7B\1O+9N=3D,!2N_$VD8G&DLN(",@`````0```)PD``"`ZHW7
-MP0/$&T\;T_Z[??)@JE2.*22;!^\2=3D&2'^$5O,9'P5N]U at O//\V>W-RA'&-8#
-MX"1K(R_<QVV_<.!6E^4CR47III`*?OE^*36SH1DO[N'?90?BM7'=3DDC+.K%>E
-M:/SB,(<43,`7MVA6B>#$YWL(Z_S,.-P=3DBCIQF@/VD5,2MT:Y4`@`'`$``!P!
-M```"````10`!&%6@``!`$0``P*@!`<"H`0(!]`'T`00'Z7B\1O+9N=3D,!2N_$
-MVD8G&DLN("0(`````@```/PA``#@(?!JP$V0^KI?'W9.M'W at ZF0@D7$Z\%9`
-M9VPY4LZPDB4JI=3DWD:3)RRE;F>\..54&<+?W3O=3DEG<-7H!J*=3D[=3DL$>Y^&+G*9
-M:#0STV20RNL at S3T5/H*<:*"?G,1;&/J$O$<FGP at UA&.P#@OBY7'=3DG/T4@#16
-M"$,?Q&._OF13KO;B=3D7`W(8)?1[/Z!4%@5&;NV+20=3D;2TO6A;IY&>6Z34<Q0?
-MQ0A[]^=3D2-7,>$#MS+A%Z)V7L^H:9<EB6S$)_\!(GR>^M&=3DK(V\^G*U06VI"M
-M4NF1-21+%W=3DIDK<`I>Y+S%,2MT;26P@`_````/P````"````10``^%6A``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R7B\1O+9N=3D,!2N_$VD8G&DLN("0(`````P``
-M`-PA``#`%DD!$",=3D at 1Y&.**3'YX_>#"$":9$NM<*JS10"KC_S-[_%S+CI8%D
-MVS<&U>#5,SG4P0%SO7<N8('W"O\=3D<&7.$-<-O^'&ML3#I6?3!]_TCFXS"5P7
-M>NV4PK(ZLBFGBR_Z@>@8N$)#%W$2MY-J6OW?[/XC!;..,7_&D>.\9`-_.5D&
-M.&JFP;TXCZ7WU1"G$F1BF'9DRUWE]8Y,$'X&(*5/8][B<8*?8_D3.>++A8XG
-MZY0?>@-NQ9EY'\1M;D)3$K=3D&AF8(`&P```!L`````@```$4``&A5H@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CEXO$;RV;G3`4KOQ-I&)QI++B`D(`````(```!,
-M*0``,`0VS,2UR`GZ$Z-;SB=3DNGT+%AW+7%(FX03:-V7^%.EVHT!T:^FQHH=3D$I
-MR&'Z4Q*W1H>""`!L````;`````(```!%``!H5:,``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y>+Q&\MFYTP%*[\3:1B<:2RX@)"`````#````3"D``#!I#]L_RR@(
-M5J"'M\G""L`5;^Z6#C2=3DE]Z>G4!G$PUL<??2Z_D!?S4[O@?!B5,2MT81G0@`
-M/`$``#P!```"````10`!.%6D``!`$0``P*@!`<"H`0(!]`'T`20'"7B\1O+9
-MN=3D,!2N_$VD8G&DLN("0(````!````1PA``$`^F_%Y?`![&?8E$6KKZX8Q,R.
-MO8:GO\]`TB9%(5.[JNDLM`197<U&D09[.G["Z-%5!UCQH+76U'S(=3DYKVEEP#
-M`S%`RUXYE#BU$;F**!TH^$_M7M360*\+`+^JXAZ\$<^%%BT69FD7(1K@'@89
-MA4_/,DD%6O!68LC4GZ#9"_H%7?%HT/=3DHX,8(*UFB!_X2P1CC,EB;&\7?O94$
-M=3D\Z]?"*LZ=3DM:);JS>2J^SO>U\PVL(Q+(2C5;Z\"4<LJ7C$9^Z6`\\4HL$K.(
-M(K[_5&_\O;B2D*FK",Y2%P$?'?7 at EI91;2\`Q-&:BXA.)D>;BE6R0)!DX3:T
-M:!3,4H(C'?:Q4Q*W1F"I"``<`0``'`$```(```!%``$85:4``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I>+Q&\MFYTP%*[\3:1B<:2RX@)`@````%````_"$``.#J
-MB.,CN9]S8X7 at D0^5S#,^=3DH_H]SM9\_:/:\M@[2$+)Y`/D*2K..!_(A(8.H^L
-MC4W2(44\9K,A]&)N1<BB-P%)^%YL[.4^C\-K=3D;WNR0X.,5C^.25?$^#*GJ(\
-M[8\E/-=3D at PD03@%<,^GF<:D[&RM)(AQ&]$GGNOJ^("WUW1H'7V2FD=3DGI=3DA`9-
-MJ_OHB%Y@&<'U<]Y5BK6`=3D<(B-VD1C$F);>12N]:Y/N]B3:VW%>:JM-<JG1_3
-MZ@`/NEP?%#6GDPZ`#(868)T/^`LH>IU.[NRYOF2X$T5#:);@TN8P4Q*W1N6X
-M"`#L````[`````(```!%``#H5:8``$`1``#`J`$!P*@!`@'T`?0`U`:Y>+Q&
-M\MFYTP%*[\3:1B<:2RX@)"`````$````S"$``+`#-)!2^</FK2:0!J^MD#+D
-M6+[D>H9DI?=3D\%<&&?,-[5!*B:]MU`P?(^9VEDA"?<.0Q2S)HI6.8C!&J'4B@
-M)/)4F%G6<:Q8/B:-,[Q@:P3 at A)R`U1`3Q1OWE0;8X8#3*X<4G7^QVRH4H0:D
-M:]NYFR=3DT_]HHV]":8#:^#)V95OD$1WBMY+0+U2?,I..<:ZHNVK#I3B$ZTOR;
-M81$<9TUB5SXWDHL&&^D"X+(C_B3^4Q*W1A;;"`#L````[`````(```!%``#H
-M5:<``$`1``#`J`$!P*@!`@'T`?0`U`:Y>+Q&\MFYTP%*[\3:1B<:2RX@)"``
-M```%````S"$``+`'EK'S5M'0-9QAY&X26]0!:Z70L4ZE$',#+]9*J8GF'%4/
-M@\R^,9!*4$8_^6=3DF5O;JJ:_L'/K\A,$#6=3D'D.MM>57J2N'F[\1_/234\,H>'
-M?F^[email protected]=3D"7+&IO]:F39=3DQZY*+;@$0[V*.R<L2J at ->J3W5L&F$<
-MNO50O=3DW,A at UTU+$KT/K6!5)#F1.4Z868+4-D at 6+_Q`3)S-\\;@R^#7YT08%]
-MD*.;4Q*W1LGW"``\`0``/`$```(```!%``$X5:@``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)>+Q&\MFYTP%*[\3:1B<:2RX@)`@````&```!'"$``0#NC2,>)D!8
-MBN$Z$ETLZO+HH\W"/*&YHJ5+Y7'.*QLL+R]#]\END%;A+#N=3D`186L<U;*DZ.
-M.5`:@MWJG37[9M;PE=3DNQOXL?"58K62(-+RE1.:>_?:YS_DT(ZJBA8CTHX"'T
-MN5;48E3IBB>L)P'R';]]8D=3D4SE.PJ6`$<7.RP/^)*E2'YH?_:;BQ4_52LGJP
-ME,77->[T\S4^DH#)#UV/3JT#\/U[/[H1*^R1SD\+F+NT![5#_"R/)C$810Z3
-MQ`$CDWTFT59US[LRX\<MCN)>EUZJ\E0!04T4*20A]J:)>>`LO0%?J9 at YQ_$D
-M.LW&2OW7M!:9OM39+(W++>`!!P]3$K=3D&;0,)`!P!```<`0```@```$4``1A5
-MJ0``0!$``,"H`0'`J`$"`?0!]`$$!^EXO$;RV;G3`4KOQ-I&)QI++B`D"```
-M``<```#\(0``X!49V'AP:RK9/+4NA[`[L&WC:JFI7Z^9,/0^BDK'>P_/NDW3
-MJ+RUCO&8"WK?HZ,K;M at 1>Q38FO[&C=3D.SOV60R.P3AC<1EY5R$=3D%-A_T69RV$
-MPJUMN.WJH3;K5%J3R-SBVM?^B]&O%/1$&UQ>('LTTD"6C/L7>.556L+7?S_X
-MQ2#+]UP9L8FQ@:\/PS7[=3DN/?@*Y4B=3D,<9NH.592?'0O67HN?9YU5W6YQ82B]
-M4A'^-6CCVLAD#G1;=3D-&H)ZF"-G,*D<Y;NF&`S:*J_F6\U?TBKLX>\6T&S_P-
-M*#U+TNU3$K=3D&ZA()`.P```#L`````@```$4``.A5J@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KEXO$;RV;G3`4KOQ-I&)QI++B`D(`````8```#,(0``L$;\/M1W
-MA_`BA4TYU8\?-TZ/T'PP-FSI$32 at PX)'IH%6)WQ0O/!.5QRK]H=3D/\>[HE@^3
-M^]1L-CI5G@[E\>*+-C#.7-\RL=3D59<[N)T9K#51&AJ0D]>2!JZYH4=3D:<BV-C/
-M8])>H.=3D6>7C5EW`+T[*UGGQ=3DBU_UWPTO<$;3;#)<2B_[C@(Z/4-3C)%=3DH$>L
-M5OB*(2:RO>.!D?G@=3DTR.@]*8<<5<6_!<?4KA#NH^IC-3$K=3D&@S4)`.P```#L
-M`````@```$4``.A5JP``0!$``,"H`0'`J`$"`?0!]`#4!KEXO$;RV;G3`4KO
-MQ-I&)QI++B`D(`````<```#,(0``L'8"QB>QX!F\958"B`:#,%4*FHX_96/-
-M&?5#1G#1KH<C(6.(6\I at L4=3DHPEWD"$*MJ1?AE:RLV>/A-/75ILVX$#TKP').
-MSBL,Z,0ID"'$79#RZEZ[R,&6!C>#)IBWOZ*4)2_[FED@!9X2GZC=3D]4$-T<T3
-MT6T8+WES(G"&$-S[LC%,!7>64$_UK[;R6V`O=3D=3DBMH?O#@M0[(Z6'C-LR38[O
-M,;]N:>-=3D at 4L9XNQL=3DJ13$K=3D&W5L)`(P!``",`0```@```$4``8A5K0``0!$`
-M`,"H`0'`J`$"`?0!]`%T!UEXO$;RV;G3`4KOQ-I&)QI++B`D"`````@```%L
-M(0`!4&D?")V9OY[R4]G)8Q"%%Q4JLE563R2Q&NNK4=3D,)6:>?421Y]*Q&Y/?.
-M)E!))=3D[UA#`9VM35D1E82I3$U)45V;3I\]0&1$'V+K&F4ZA',QIDG;_YJ>"/
-MC(14I$@&ZG<&)XA$5*$Y91IN.M49\[`X*^H$MIQHV$PLK&W7L"CF6?$_"Y<P
-M=3D:S at -/!;[&>VT8#1E%AI_D1?9C-5UC"C`#PO'ZRLT>K%#-;U/;]Z$3?Y"J&<
-M$>`&H<7*H__0'K8WF205AI10)727&YZI4$84V0)(;R1:)S2`00`O&U%OF@;B
-M0>,II;$3.V77O-ZBM01CP]M7^^*!<_62RV%\:1K,1%Q&\4+B#C/=3D5&,\<L at A
-MMG(N^B$YH_8&H7S>GD&RVN2N3!37U-V.".%6O=3DYQ1NEI[6Q<*;3QP>C%`:+A
-MJUZ2.R;LU".I(#(/@7[ZCU"[H`[;4Q*W1BZ0"0!<`0``7`$```(```!%``%8
-M5:X``$`1``#`J`$!P*@!`@'T`?0!1`<I>+Q&\MFYTP%*[\3:1B<:2RX@)"``
-M```(```!/"$``2!?9OM;Z4:%9*J/\<Q,J#=3D?O5R#YPJIL7(Z2>$LO%W)Z?!F
-M<*TX1BN:D<#E^K_P*G>BX*B6P/C?3H8)NK$$S%N>V*`]NP63GCTF#NN-Z_6N
-MEE(PER;&$/RB=3D20%R;?S5);8S#".V@]UU^U&O,YUS/`I3LC61A>2AHTNB`.N
-M/:3*AZ<A0>MF`@#IL8 at KS%/UM-O5DKT\65&$AG04%IBYJG!"H9S.7T$Y;?=3D'
-M;M1A*$V#"PJ at 8=3DWTHMSI%[L4M#[!G4_8@:A$*@5V@,I4JCWX?FP!XL)5\IL;
-MR;4886.<SD:K=3D/I5"=3D'/7CA:KYP"><QI(>%>,. at K^?-?AY/C.;P>*S:+P22\
-M?Y,M?IA_7MC1&=3D8+)30E[+*T$<)P/.3<'E,2MT:NM at D`?````'P````"````
-M10``>%6O``!`$0``P*@!`<"H`0(!]`'T`&0&25[3?=3D#I72X>/J at R6%]&F%<N
-M("4(`````````%PJ``!`)#T.&*69WX)$FQS&.F"+81L0Q$D>Y4<R)N>3=3DN*=3D
-M-B/^]8:YDKP\\8)8VF at 4Z7\[0B,#- at .#U_G?PMYK4Q*W1CG""0!L````;```
-M``(```!%``!H5;```$`1``#`J`$!P*@!`@'T`?0`5`8Y7M-]T.E=3D+AX^J#)8
-M7T:85RX@)2``````````3````#!K^/9I^B=3D%'>&]FM6I`$MIB^WWZTWU;%:'
-M<K<-#(]H^42*`";IUPU:)#"2$5,2MT;!T`D`;````&P````"````10``:%6Q
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.5[3?=3D#I72X>/J at R6%]&F%<N("4(````
-M`0```$PJ```PS$JY(0AISGW2;O^`^3.IR754YFIF@,&^+EK'T=3D+ZA at U=3DY"@F
-M.0<Z_7T4`?A3$K=3D&V]T)`&P```!L`````@```$4``&A5L@``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CE>TWW0Z5TN'CZH,EA?1IA7+B`E(`````$```!,````,.%3
-M)(^9B6RGPVX\!=3DKZ,;N%8_,EW2U9BH*R?3I9/5':5TG1GJ,C`YPN6_(44Q*W
-M1AC<"@"8`0``F`$```(```!%``&45;,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M+)%1F[&JB&P``````````"$@(@@````````!>"(``'@!``!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``XQ?;4?`0P*!KDHLOO9)I_$,U3TJ9*XSL
-M9(B5,,_7)[MS at KF0XW(#39N at Z4^@KSW5F/VV=3DI,;9\Y()T-,I]=3DW5B37Q.21
-MRAU4?KF3>MSK_H>+MEK%KC_F^8*B at M3<P0BWT7D=3D>X#E(1+T,^*._T3OJMC#
-MVQE>P+'Z*>_SJ"0Y[)8I```DP&BT^3K>S?^_3EH`W[Q->(:#IIZ7`QG49A]9
-M&(")%'@I```<``!`!&&=3DF>%1`547X6IY>]'$J=3D;6E?A7````'```0`4YV4PZ
-ML.=3D'L!JC*KDX47H5O9V4XE,2MT8W_ at T`F`$``)@!```"````10`!E%6T``!`
-M$0``P*@!`<"H`0(!]`'T`8`'92R149NQJHAL```````````A("((````````
-M`7 at B``!X`0``=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``.,7VU'P
-M$,"@:Y*++[V2:?Q#-4]*F2N,[&2(E3#/UR>[<X*YD.-R`TV;H.E/H*\]U9C]
-MMG:3&V?.2"=3D#3*?7=3DU8DU\3DD<H=3D5'ZYDWK<Z_Z'B[9:Q:X_YOF"HH+4W,$(
-MM]%Y'7N`Y2$2]#/BCO]$[ZK8P]L97L"Q^BGO\Z at D.>R6*0``),!HM/DZWLW_
-MOTY:`-^\37B&@Z:>EP,9U&8?61B`B11X*0``'```0`1AG9GA40%5%^%J>7O1
-MQ*G6UI7X5P```!P``$`%.=3DE,.K#G1[`:HRJY.%%Z%;V=3DE.)4$K=3D&M/T$`)@!
-M``"8`0```@```$4``915O@``0!$``,"H`0'`J`$"`?0!]`&`!V4LD5&;L:J(
-M;```````````(2`B"`````````%X(@``>`$``'0!`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``#C%]M1\!#`H&N2BR^]DFG\0S5/2IDKC.QDB)4PS]<G
-MNW."N9#C<@--FZ#I3Z"O/=3D68_;9VDQMGSD at G0TRGUW=3D6)-?$Y)'*'51^N9-Z
-MW.O^AXNV6L6N/^;Y at J*"U-S!"+?1>1U[@.4A$O0SXH[_1.^JV,/;&5[`L?HI
-M[_.H)#GLEBD``"3`:+3Y.M[-_[].6@#?O$UXAH.FGI<#&=3D1F'UD8@(D4>"D`
-M`!P``$`$89V9X5$!51?A:GE[T<2IUM:5^%<````<``!`!3G93#JPYT>P&J,J
-MN3A1>A6]G93B51*W1@`-`P"8`0``F`$```(```!%``&45=3DT``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE*,$P]NS/%S,``````````"$@(@@````````!>"(``'@!
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``DL>HR!Y7IBP,*- at E
-MD$$1/GM`)#VQN+F[T^F21N>:'W>C5JLN<^6RJI51,#POEL[+E!*M[2S*$#\;
-M3"#T)1R>"V&1'1"Z+.U;WA^)0O\^.IS3O?*#`F7PZV^3+KWWA0[\T_:6O6P?
-M&^I`B;FVJCWQ:^%ALFIL at K6T%B5)LCD],R,I```DQ4AV,6 at B@TU=3D\+W9CN9*
-M.E)XUVT[Q$3QT at ZH1!*]?S4I```<``!`!'VY,!_24)D1^,U[Q;?XQ+NK1695
-M````'```0`7,ZP(4(VWF*-_0DC.2^-B'^6TFVE42MT8)- at 8`F`$``)@!```"
-M````10`!E%7A``!`$0``P*@!`<"H`0(!]`'T`8`'92C!,/;LSQ<S````````
-M```A("((`````````7 at B``!X`0``=3D`$!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``)+'J,@>5Z8L#"C8)9!!$3Y[0"0]L;BYN]/IDD;GFA]WHU:K+G/E
-MLJJ543`\+Y;.RY02K>TLRA`_&TP@]"4<G at MAD1T0NBSM6]X?B4+_/CJ<T[WR
-M at P)E\.MODRZ]]X4._-/VEKUL'QOJ0(FYMJH]\6OA8;)J;(*UM!8E2;(Y/3,C
-M*0``),5(=3DC%H(H--7?"]V8[F2CI2>-=3DM.\1$\=3D(.J$02O7\U*0``'```0`1]
-MN3`?TE"9$?C->\6W^,2[JT5F50```!P``$`%S.L"%"-MYBC?T)(SDOC8A_EM
-M)MI5$K=3D&E7<,`)@!``"8`0```@```$4``9168@``0!$``,"H`0'`J`$"`?0!
-M]`&`!V4HP3#V[,\7,P``````````(2`B"`````````%X(@``>`$``'0!`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"2QZC('E>F+`PHV"6001$^>T`D
-M/;&XN;O3Z9)&YYH?=3DZ-6JRYSY;*JE5$P/"^6SLN4$JWM+,H0/QM,(/0E')X+
-M89$=3D$+HL[5O>'XE"_SXZG-.]\H,"9?#K;Y,NO?>%#OS3]I:];!\;ZD")N;:J
-M/?%KX6&R:FR"M;06)4FR.3TS(RD``"3%2'8Q:"*#35WPO=3DF.YDHZ4GC7;3O$
-M1/'2#JA$$KU_-2D``!P``$`$?;DP'])0F1'XS7O%M_C$NZM%9E4````<``!`
-M!<SK`A0C;>8HW]"2,Y+XV(?Y;2;:5A*W1E.%"@"8`0``F`$```(```!%``&4
-M5J(``$`1``#`J`$!P*@!`@'T`?0!@`=3DE?6!^U()9U;4``````````"$@(@@`
-M```````!>"(``'@"``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MDJ#1:713(^`,5-K40>[29;JFPDO03M2#C;<"U$5H6TFNUQP5$SI.IW6#J<85
-M/.KU%#JE;E@&V3RSEK,C2K8:`O)2A6R-:7 at A0"3Y7QPG6?!%)IN0YC,VQXK_
-MS%`#:/U,JG=3D],I>`OKK>[&VZU9*N4X$DTSAH*R.=3DYQ!8G$68$X\I```D9#0A
-MW!1M\,&1WV!V6K&16TPK]#R'2;J9YO7;, at Y?7!PI```<``!`!"1#Y at A+%-M:
-M7,A;@+W'<XDU-B-,````'```0`54P4&-8:GQV]4\\>B]FFW8#7B5 at U82MT94
-ME`H`7````%P````"````10``6%:C``!`$0``P*@!`<"H`0(!]`'T`$0&*7U@
-M?M2"6=3D6U```````````I("(@`````````#P````@``!`!@````(@6O$4[TU;
-MRF+SUH<D>Q(MI_%P,582MT9BI`H`N`$``+@!```"````10`!M%:D``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A7U@?M2"6=3D6U```````````I("((`````````9 at A
-M```@``!`!@````(@6O$4[TU;RF+SUH<D>Q(MI_%P,2(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``DJ#1:713(^`,5-K40>[29;JFPDO0
-M3M2#C;<"U$5H6TFNUQP5$SI.IW6#J<85/.KU%#JE;E@&V3RSEK,C2K8:`O)2
-MA6R-:7 at A0"3Y7QPG6?!%)IN0YC,VQXK_S%`#:/U,JG=3D],I>`OKK>[&VZU9*N
-M4X$DTSAH*R.=3DYQ!8G$68$X\I```D9#0AW!1M\,&1WV!V6K&16TPK]#R'2;J9
-MYO7;, at Y?7!PI```<``!`!"1#Y at A+%-M:7,A;@+W'<XDU-B-,````'```0`54
-MP4&-8:GQV]4\\>B]FFW8#7B5 at U82MT9>R`H`4`$``%`!```"````10`!3%:E
-M``!`$0``P*@!`<"H`0(!]`'T`3@''7U@?M2"6=3D6U<SK\U^+,BE`A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``&MLU*_78^.G/X7X%M2.WX&B^"3=3D0'5+AZ]Z+*R:
-M(>*ALTU^%CPR2W[F.R!:W?'!EV0*S>[J:=3D>W$SY^)?_XA&$5I4_$ZL<8$R57
-M.L=3D.*]O:0,O4NJK4%[TM4""R6Y+E')`"3>'>W2`NM%5,.Z0^Z4*>D_G^+0Y8
-M`W$]S5;G9/$/*0``)#,0:W/^$W*XWM*QG!2,5/SB?3Y<DLQC51O;^-$3+C/M
-M*0``'```0`2_M7SD5D0^LO-*\[%ATQ8%I)8L%P```!P``$`%[JOY5@(,6B.X
-MLC__OL9OHEJ6_?56$K=3D&Z_4*``P!```,`0```@```$4``0A6I@``0!$``,"H
-M`0'`J`$"`?0!]`#T!]E]8'[4 at EG5M7,Z_-?BS(I0+B`C"`````$```#L(P``
-MT+FP3?$I$Y?U(L_:WPDT4S#-%$0Z@=3DAV\A/YFZ[1@"HHTI^,NBE):[8Y8D,%
-MG3/]9&"8&ACW*J]CLZA`%G>^;-%[<*<*4>4L]VLP,`,U:9 at 6**@SVQY>.8*X
-M'EV&S;Y)=3DP=3D(\^%'I*(-.F5*F%8>_&P;\`O?=3DC+>,.*,'6TW!2S20]Q]\;.%
-M#Y@,*[]_Z8\.A3%_2?,ZP5BYZ_JO=3D'ONJ"O&^FW-Q<)JL"Y@<'R$]J at 6/'RY
-M`%&@"PO*%@9NIHX>2$*&W;#(<I&0R.O:1E82MT:+$0L`O````+P````"````
-M10``N%:H``!`$0``P*@!`<"H`0(!]`'T`*0&B7U@?M2"6=3D6U<SK\U^+,BE`N
-M(",@`````0```)PD``"`Q8Z+U<.H>@MQ,*I_8)3)"P5734;N9AB+X`!6.30)
-M+9';#-]XT=3DY>H`VMVY:7=3D.B/&2>MA-P+=3D^,L'2S)]*N at V!KLR(_X;9W*>L\^
-MO^Z>,DJ6H1[CV7*;%TF(W`@2P?`$-4[7Q2?$C?)`U]7X?0<NG0G3-[Y>("XX
-M.2%.6582MT:?,`L`'`$``!P!```"````10`!&%:I``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z7U@?M2"6=3D6U<SK\U^+,BE`N("0(`````@```/PA``#@7>\5"W#<
-M*SD'TL:([`R"J1B*6;6#X`7/:.G#6SJ^ZIH)"6HQ#!\XC#K*1?=3DC.E2`,$8P
-M+?Q5=3DJNLA@\E]RFI8!F.6X&>*7O3:UA!W<=3DXY)^>GV^($?>>P/A'L4Z]EB.L
-ME)U6)^'[>VQW at F/\[84#?$?K1-86JU$HTE;.F%1^[;;DD=3D`GE*D7_PNQ3#16
-MTR1?/=3D">OV*"O-D>.#+QDK#3]2EEJ^[2HJ+/A&WDO/TII"K/'`_59G)'ZR5'
-M%'06FF]SGC/.MK'*,J(?AXAO=3D@;,%K>L!$4?2BMKL+<(E582MT:..PL`_```
-M`/P````"````10``^%:J``!`$0``P*@!`<"H`0(!]`'T`.0&R7U@?M2"6=3D6U
-M<SK\U^+,BE`N("0(`````P```-PA``#`,H-NLA at R:#OUXR^2JN3J7[*VD*I4
-M-6A!+K_LHH+DN&R50<698]B4BI$*'Z3QX%N"5RVZL8)%"M<W\KB;$GF;7*#7
-MSL0#+P(R"5]@W%<SRDU>0LPT19,'(EKNAN0H"<8I3C,(B3(G2>SM_WUOPC.(
-M0>AL%\)F)2);%)W&':OR942M1K#+-$$'E[XR%9^\(>/.5MWD`MVHU#=3D):)_?
-M^S(3GB+P8+;2--#K+Z\]_!.DX"8K]W+AV>UUEBN!)-Q6$K=3D&.$8+`&P```!L
-M`````@```$4``&A6JP``0!$``,"H`0'`J`$"`?0!]`!4!CE]8'[4 at EG5M7,Z
-M_-?BS(I0+B`D(`````(```!,*0``,*Q-PU5PG$:'J=3D,)S)K?5KUKV1&QX'9<
-MR\5/%[0[ON[H^"W5_4FZN-.DU-(+5A*W1B-C"P!L````;`````(```!%``!H
-M5JX``$`1``#`J`$!P*@!`@'T`?0`5`8Y?6!^U()9U;5S.OS7XLR*4"X@)"``
-M```#````3"D``##4JX&=3D3IWB]/<VD4A"9@,D/FUD+2.>_U*\)0,$3;RAWH<(
-MLI!C!CV;0#*.;E82MT;&?@L`/`$``#P!```"````10`!.%:O``!`$0``P*@!
-M`<"H`0(!]`'T`20'"7U@?M2"6=3D6U<SK\U^+,BE`N("0(````!````1PA``$`
-M.>MRP_#]Z&R0ULR1C\VF,A#TA,N]Q]^`$C[\_`C&$T8:.K5/X?TABDAM[NR^
-MKD'W at 1`.%8P6KCH#1;:&[?E4[Q._W5O,EX=3DP371$N0J(.Z,5P;9W8;Z!98"Y
-M/)H,HQ+`T<^UHEBFQG_@>XFS*I:7^71]KV>\A'(")48IJOBFH)GC,!$_WQM3
-MQ2,+?DFJ%P0S,T3Q7=3DJLSDQK[+IA7]^)$`"RCO,'6IU$S#8V;U'=3D4#X3_&%<
-MY?ID!HL^A+P_5.]=3D&"$P6H&3>R2\`D!OJ&'CPR`GP%WYE2RFLLX6(3XDD?(/
-M!<ZJ?LX<1<OIY..*6CB_2C3/'0!0=3D[B!LF1T5A*W1F6*"P`<`0``'`$```(`
-M``!%``$85K```$`1``#`J`$!P*@!`@'T`?0!!`?I?6!^U()9U;5S.OS7XLR*
-M4"X@)`@````%````_"$``.!NJ//CA at Y>/H487 at G53\9XA![IEL9K79H[:[_T
-M9F'4!7L<*A"S*AWY%V7*W/C)GMM`T[Q.[,P<V?E_LLV6R at K1JYQ1.5L:C7^#
-MAHTMO>?T,%[$`YLF<&?,?I1-?FF0B<8%#1``3$Z!?]$NP\^RT%XK`PK!BRAI
-M'S7"^-9;!Q_Q0!A;(A,UBP*EQ=3D3VB$]&RY?OQ166DPA*B%[>#44[DR]3SSCU
-M"OP4H'1P$F^]E([L!N3A=3DA64#"MR@;]K!G^K at 40E?R5A_"?)S1ER+S at S.[Q^
-M.4;`@B^$'9NGW0(I5A*W1B::"P#L````[`````(```!%``#H5K$``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y?6!^U()9U;5S.OS7XLR*4"X@)"`````$````S"$`
-M`+"<T;_3L_R>&+1MM])JHU$U%9T5[:0EI](-*$2)KKDD4F_K"=3DJT[KJW`, at N
-MS5\8"]/0[G"H!2,M7<?P%L,Z0K;2 at D>0SA':"$?_K`2HMSB at BL+.UEC8R`+)
-M2L>#@W.$D7369;Z_`?MU2(;F;-N,N@\M9"A)AF95Z$Z.#B(]"JUB5\!V**[+
-M*MY:7O50OR;TK*0%)^$<LO9]^;<T4])12FWKD#R;18'&^Z8E.&I!5A*W1J*]
-M"P#L````[`````(```!%``#H5K(``$`1``#`J`$!P*@!`@'T`?0`U`:Y?6!^
-MU()9U;5S.OS7XLR*4"X@)"`````%````S"$``+`HW?"._^\,Z[BQWYX:M at H/
-MYV>\YGG;8QJFO3JX/*@\35D-"60U`TJ'=3DE.B*%R'[,JIXD>._*DO75?BWRN)
-M5I[.P)AS%JQM-%C1:N1^V`".MLE"4_-K!93?R3D;5>`Z2,HP'>)BC4OS51D3
-MKLWI#84XU66Z\N4_:SJ"<W=3DF)\D;!%6@=3D;7F1Z>/E+&?6Y5680CFNK+^!11`
-MFD6[JGFIVPB\D?_WB3;Q-4P)X[*:5A*W1I?;"P`\`0``/`$```(```!%``$X
-M5K0``$`1``#`J`$!P*@!`@'T`?0!)`<)?6!^U()9U;5S.OS7XLR*4"X@)`@`
-M```&```!'"$``0`S!PQ^M?B#S37HXP/=3D9E%-FV-ZMK$1>4;[+W_9'!3V62`8
-M"1PU9<ROTRBU'S!TA]@"_0:T6K?:1O&&9-;J&@($%`R=3DE2.MJ@"K-QPTF8+G
-M^JI"S319A5"0$4[EJ,"G.-$W"I")%6<7E)[_['&:[_8^G.O&^],4%CNY%=3DW4
-M"3?L)`S4P\`2 at .=3DG`@++:C;*X5M\%:']F(4O]9%+5$Z(RE5JBF^V<K]XLDHC
-M"-""E6&AR8WF1F#WCQI>;Y/=3DGM.G`=3DY#\NU\WVUPR!2.`YYY-9HI(*WW?U!=3D
-MI-IY9*B_>'GDZ!*.P`HBL39*_)'SG.XJ4/ZI;W#":"B<4.KQ,^Y6$K=3D&4><+
-M`!P!```<`0```@```$4``1A6M0``0!$``,"H`0'`J`$"`?0!]`$$!^E]8'[4
-M at EG5M7,Z_-?BS(I0+B`D"`````<```#\(0``X-`+9=3DP_Y0F7`.$O0Z\95S+G
-M%Y7X?A:G;@'&)=3DMN&$?WPFVCGFP]!JL9R8Q"W\82VL'5$IO*`,52(95Z at LQ"
-ML>3PLG=3DF`>EK=3DWR3]`CD`+(6>('YRQDC7I\WLOC0=3DASMR5N"F*`1KV>I(^QG
-MZS-PG'9=3DS%9J)D993Y^%_Y?U,503!BK4+@(. at A]41!FJ_V224MJ+KU6+JMMO
-MF_"3J9B?PC')L:H21T7[O&4V0I:=3D9"3GI'0AW?PR,$\%=3DBS"-/;BUAL]_D$?
-MP.O'*D)/FU,D_X(_F6N3)L3ON6 at J#!A6$K=3D&@O<+`.P```#L`````@```$4`
-M`.A6M@``0!$``,"H`0'`J`$"`?0!]`#4!KE]8'[4 at EG5M7,Z_-?BS(I0+B`D
-M(`````8```#,(0``L)-MCFD9GIZ0XB[Q*`>3P3(!$C&DIS<`P(5//W;,5X!X
-MY*U4[%YN+8!^,"]!O4W_;%BL!/7 at -_5;_S.$1"!\.U,DCBW>=3D,:?6-S3L7.H
-M(N`VK"N8+Q;?X4WNPKT8V>:POW/!)DT1J\6E\[1K)L;8Z+-^@6 at O:8#(C/N?
-M*OAY&'U\IZ'DE#]0J`YC at -EKCR/I=3D[>*N+T_#J<0,_J-LG.:6+>PW35_$KZ9
-M*9"2=3D`I6$K=3D&)QH,`.P```#L`````@```$4``.A6MP``0!$``,"H`0'`J`$"
-M`?0!]`#4!KE]8'[4 at EG5M7,Z_-?BS(I0+B`D(`````<```#,(0``L*X>9!RT
-M5^4F!6*;_A2VL0HBFF4]C"=3D_:/G!;+Z.$'[T`>CC3N3)[CK- at V5@SLOH71&C
-M?M?PD*UQ7+/1E1R'=3DTXYJ6:^C');8*?7V1J-8$$<;$8$X-ZO>H,E:G?NI#S9
-M>2<T8EVYP(2C<NQPB_DLR-OB05/S*9!04[L4Q/^8J_EE/Y;UAI;%XRM;I06N
-M5I[Y5F#TX-<]K\P?'-&HQW0NGO_`(2=3D=3DMXBL!MIHS2E6$K=3D&[C\,`(P!``",
-M`0```@```$4``8A6N```0!$``,"H`0'`J`$"`?0!]`%T!UE]8'[4 at EG5M7,Z
-M_-?BS(I0+B`D"`````@```%L(0`!4%B)Y0;I2?,HD%;V^-]?V;AKO0+*?Q/N
-M"P)@R+?,>%^!^8V=3DP5AYOY8"3^M#12VP/Q^CQ9*9-U5<Q'U`MC@\,(%`KUPJ
-M$+#F134!"](7SU!H2ZB'MO2,QE at V;Z&P=3DCJ$_NN*Z"Z!1^[<P-SI6KP;S<BV
-MRX2I0:VC/??PZJ<_+!P9715:3FK8UQ:\+EV^9H!],I#Y0J:.A`<'W&+_ at 29D
-MI("`6/KG7VH6DP2;DY]V?'H\JEV>0Y#;[SO=3D#O]\J"/SR'`@"_O*TWZ'@A7Z
-M2?<3IHVCF]Z8$F7R,JY#_<L4(5,*./]%3U at C+>XS6\<3,X9D<^&*9$1\N<8%
-M[>C)%-%$*72:U&EU(DA38,1L&9*0896+:>?)AU.N($`0&&P&+-.I(2KZ*:3U
-M0`-6=3D^.`6-H.PTEU/+QY!Y^WGU9#Y685C*P,*H1!ZSU=3D3]EDL+<C5A*W1H9]
-M#`!<`0``7`$```(```!%``%85KD``$`1``#`J`$!P*@!`@'T`?0!1`<I?6!^
-MU()9U;5S.OS7XLR*4"X@)"`````(```!/"$``2!PKEKV;;PW8^V#NNVP-$FA
-MWBVY5>#F=3D<'C);QR'OV,3LZ;+*9B6X',<\6]=3DJZ;DAP3,\09JJC at -9X63C8\
-MUZ.MGW7K.&+:O._A'P7S!62=3DE(Y-&`Z6+2;@D`]9[(-)TS`O.OL&#A6]C^CQ
-M%KST3``!K*2Z<F67^O#5W)0"EXR:_M7D@$%-IGZM4%CJ!JG,`NI%H%[JY=3D1S
-M"@>%I/<RW`<[%`PH=3DZPH^IC-H[2F%<3Y_G=3DR?@+W3`AT1O=3D.DAG;I*[HWB+X
-M^[5X;\NTS)'[J6?$3PYPMGN-SV3-I;%SE(W_&9M>4'UZ:RHQA[RBD=3DA(M=3DRB
-M=3DX^D8L&M/6O7=3DBN%K.'5`:[=3D\CXE;@_]%&MW'"@K&2(<ZV%Z$C<%$*H(VU82
-MMT85I0P`?````'P````"````10``>%:Z``!`$0``P*@!`<"H`0(!]`'T`&0&
-M26EAWC0"RW4LII*]/I]H;A at N("4(`````````%PJ``!`J09)'+ at P0R?6`N"S
-M/$+&E5V>KP`MG!,/UE]<]=3DS=3D,MH>J40;1>."DPL>[B[#1!)!6&CPZ\_ at YLIX
-ME($,5A*W1FJP#`!L````;`````(```!%``!H5KL``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y:6'>-`++=3D2RFDKT^GVAN&"X@)2``````````3````#`1>SWX#\H\
-M5B66DCO^;A!_O!#J2<+7C#B;4#&H6ZQ7@^SHYPT!X%PODV5JI582MT8YOPP`
-M;````&P````"````10``:%:\``!`$0``P*@!`<"H`0(!]`'T`%0&.6EAWC0"
-MRW4LII*]/I]H;A at N("4(`````0```$PJ```PAROHV_3YU=3D\1X)$.;0M>R_DY
-MN!'-;Q)@L%!+YW/+]LC\V]_$#NGK"9#_=3D4=3D6$K=3D&U,P,`&P```!L`````@``
-M`$4``&A6O0``0!$``,"H`0'`J`$"`?0!]`!4!CEI8=3DXT`LMU+*:2O3Z?:&X8
-M+B`E(`````$```!,````,"%,H&*`C,&A;\^6XC4<K5O at 2H_%\AVM&2/QQ]RK
-M&*<T7TGP=3DWAR,;I$@+V15A*W1F+*#0"8`0``F`$```(```!%``&45L$``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE+]19`0.A\1```````````"$@(@@````````!
-M>"(``'@#``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``%T'N'DL5
-MFOE"4(&/OV3X]513_#/:B,48;?1AK$#:-3W24];BD"V at GIR$']/Y]<ZZA6NS
-MIO]5(*UY1^P;+5QXU*](O5S:UYJ6;GKK"MVT$2#UG0:-I?J2.F);;*6A4,[8
-MKAV(L?B*1?)(C4DK32OSWN<_8G=3D7*#9JOE<MHA at 8B#PI```D&%Y?E5R$7.?Z
-M)$X>=3D/1K#%^[A\S,60**>E.S>'M98%PI```<``!`!.3REOSWX!WO,X:6[8 at X
-MC7REQIR:````'```0`7>T?;1'^^AB%:O(=3DSN"^!18\1H"%<2MT8LH@$`F`$`
-M`)@!```"````10`!E%;'``!`$0``P*@!`<"H`0(!]`'T`8`'92_460$#H?$0
-M```````````A("((`````````7 at B``!X`P``=3D`$!``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``!=3D![AY+%9KY0E"!C[]D^/544_PSVHC%&&WT8:Q`VC4]
-MTE/6XI`MH)Z<A!_3^?7.NH5KLZ;_52"M>4?L&RU<>-2O2+U<VM>:EFYZZPK=3D
-MM!$@]9T&C:7ZDCIB6VREH5#.V*X=3DB+'XBD7R2(U)*TTK\][G/V)W5R at V:KY7
-M+:(8&(@\*0``)!A>7Y5<A%SG^B1.'G3T:PQ?NX?,S%D"BGI3LWA[66!<*0``
-M'```0`3D\I;\]^`=3D[S.&ENV(.(U\I<:<F@```!P``$`%WM'VT1_OH8A6KR'<
-M[@O at 46/$:`A7$K=3D&O>,'`)@!``"8`0```@```$4``916S0``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V4OU%D!`Z'Q$```````````(2`B"`````````%X(@``>`,`
-M`'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"```70>X>2Q6:^4)0 at 8^_
-M9/CU5%/\,]J(Q1AM]&&L0-HU/=3D)3UN*0+:">G(0?T_GUSKJ%:[.F_U4 at K7E'
-M[!LM7'C4KTB]7-K7FI9N>NL*W;01(/6=3D!HVE^I(Z8EMLI:%0SMBN'8BQ^(I%
-M\DB-22M-*_/>YS]B=3DU<H-FJ^5RVB&!B(/"D``"087E^57(1<Y_HD3AYT]&L,
-M7[N'S,Q9`HIZ4[-X>UE at 7"D``!P``$`$Y/*6_/?@'>\SAI;MB#B-?*7&G)H`
-M```<``!`!=3D[1]M$?[Z&(5J\AW.X+X%%CQ&@(6!*W1BWQ!0"8`0``F`$```(`
-M``!%``&45N$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE1;`.U'S)V3D`````````
-M`"$@(@@````````!>"(``'@$``!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``FOFCDRG%RS_]A:_I''8-.=3DP6N2\HJA]<LW.Y=3D$Z,\:WV^>):LC=3D6
-M#JVI/%7G.+M_9W<=3D_NQAIB'HB=3D]Z:&3:L:82KW\@;#Y%\118+P.N".2\7M\%
-M"3B`(1AKZHX7R;\-5(!\@@`2SW]RS3)HQ5"VH[MP'`!'45M?J:ATO8=3D at Y(8I
-M```D_2]SM(UE*'Z<WC`ZD>=3D[>8^JLSP>$,$&\2`#)CC*U"0I```<``!`!+C1
-MT=3D[3`(V=3DB74VS/SU\07ZM&\4````'```0`5A$BB_I<C`G1O<FUF.'&!9=3DY"*
-MOU at 2MT8Q'`D`F`$``)@!```"````10`!E%;I``!`$0``P*@!`<"H`0(!]`'T
-M`8`'946P#M1\R=3DDY```````````A("((`````````7 at B``!X!```=3D`$!``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``)KYHY,IQ<L__86OZ1QV#3G<%KDO
-M**H?7+-SN71.C/&M]OGB6K(W5 at ZMJ3Q5YSB[?V=3DW'?[L8:8AZ(G?>FADVK&F
-M$J]_(&P^1?$46"\#K at CDO%[?!0DX@"$8:^J.%\F_#52`?((`$L]_<LTR:,50
-MMJ.[<!P`1U%;7ZFH=3D+V'8.2&*0``)/TO<[2-92A^G-XP.I'G>WF/JK,\'A#!
-M!O$@`R8XRM0D*0``'```0`2XT=3D'>TP"-G8EU-LS\]?$%^K1O%````!P``$`%
-M81(HOZ7(P)T;W)M9CAQ at 67>0BK]9$K=3D&?1L``)@!``"8`0```@```$4``916
-M]@``0!$``,"H`0'`J`$"`?0!]`&`!V5%L`[4?,G9.0``````````(2`B"```
-M``````%X(@``>`0``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``":
-M^:.3*<7+/_V%K^D<=3D at TYW!:Y+RBJ'URS<[ET3HSQK?;YXEJR-U8.K:D\5><X
-MNW]G=3DQW^[&&F(>B)WWIH9-JQIA*O?R!L/D7Q%%@O`ZX(Y+Q>WP4).(`A&&OJ
-MCA?)OPU4@'R"`!+/?W+-,FC%4+:CNW`<`$=3D16U^IJ'2]AV#DABD``"3]+W.T
-MC64H?IS>,#J1YWMYCZJS/!X0P0;Q(`,F.,K4)"D``!P``$`$N-'1WM,`C9V)
-M=3D3;,_/7Q!?JT;Q0````<``!`!6$2*+^ER,"=3D&]R;68X<8%EWD(J_61*W1NYF
-M#0"8`0``F`$```(```!%``&45Q@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE&W at L
-M#DI!)S@``````````"$@(@@````````!>"(``'@'``!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``$4/J at .WN;TE4B$D`#V:_?]BH^$6"APE8*]CO
-M;/9#I\LJ'D*L`O!ZZX-0.T7J"[E%F$PY&$',A)#HS?Z\U"5IOQS>QEIB]B.6
-M2[C2]?UN$&AT_V>8T+-[6=3D--@*4OI&=3D'#.?HE8Z8P-F<XO--&YOZMK28.X%O
-M%T$-:)7*<P(K@?8I```D-L4:%DG#S=3D<(;(M$/MS5RV?EW4!YL%["LRWU+'EU
-M/;HI```<``!`!'>B+X!Q-H17>Q80%'7;.2CO:=3DVT````'```0`5*8(>"+70`
-MV]^\L=3D!W@@8WSO`EP%H2MT;T4P$`F`$``)@!```"````10`!E%<<``!`$0``
-MP*@!`<"H`0(!]`'T`8`'91MX+`Y*02<X```````````A("((`````````7 at B
-M``!X!P``=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``!%#ZH#M[F])
-M5(A)``]FOW_8J/A%@H<)6"O8[VSV0Z?+*AY"K`+P>NN#4#M%Z at NY19A,.1A!
-MS(20Z,W^O-0E:;\<WL9:8O8CEDNXTO7];A!H=3D/]GF-"S>UG338"E+Z1G1PSG
-MZ)6.F,#9G.+S31N;^K:TF#N!;Q=3D!#6B5RG,"*X'V*0``)#;%&A9)P\W7"&R+
-M1#[<U<MGY=3DU`>;!>PK,M]2QY=3D3VZ*0``'```0`1WHB^`<3:$5WL6$!1UVSDH
-M[VG=3DM````!P``$`%2F"'@BUT`-O?O+'0=3DX(&-\[P)<!:$K=3D&AY4'`)@!``"8
-M`0```@```$4``917*0``0!$``,"H`0'`J`$"`?0!]`&`!V4;>"P.2D$G.```
-M````````(2`B"`````````%X(@``>`<``'0!`0`,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```10^J`[>YO252(20`/9K]_V*CX18*'"5 at KV.]L]D.GRRH>
-M0JP"\'KK at U`[1>H+N4683#D80<R$D.C-_KS4)6F_'-[&6F+V(Y9+N-+U_6X0
-M:'3_9YC0LWM9TTV`I2^D9T<,Y^B5CIC`V9SB\TT;F_JVM)@[@6\700UHE<IS
-M`BN!]BD``"0VQ1H62</-UPALBT0^W-7+9^7=3D0'FP7L*S+?4L>74]NBD``!P`
-M`$`$=3DZ(O@'$VA%=3D[%A`4=3D=3DLY*.]IW;0````<``!`!4I at AX(M=3D`#;W[RQT'>"
-M!C?.\"7`6Q*W1CRB!0"8`0``F`$```(```!%``&45SD``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE_!/(*-AX-7(``````````"$@(@@````````!>"(``'@(``!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``,S2A&EML7<?IW]/,3LJ1
-M`%MC#LIT`TXML-_$WCS'M6(!^,/K^<'[#B2Y4):L''.^KYZ,J7%>.)E[/;^^
-MQX5%'9<ZQERHQ->@3G_U57=3D5X at C$K;S'[7[_58\SGO.S]2X%SWHL^J.V\B)_
-M_&F/_JX3\!Q;5QV,Q[(@R<RE'Z*^(#8I```D=3D57D!B1:C,?X&)+`V.ET&IGS
-M>*A]:+ at H!W]*ZY`H88DI```<``!`!,5#H05($E<4)DJR)5^4QNH=3D(N-O````
-M'```0`7;:18A1DF+F-*_'"C1S"=3D at 1.[5(UL2MT8%S@@`F`$``)@!```"````
-M10`!E%=3D```!`$0``P*@!`<"H`0(!]`'T`8`'9?P3R"C8>#5R```````````A
-M("((`````````7 at B``!X"```=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``#,TH1I;;%W'Z=3D_3S$[*D0!;8P[*=3D`-.+;#?Q-X\Q[5B`?C#Z_G!^PXD
-MN5"6K!QSOJ^>C*EQ7CB9>SV_OL>%11V7.L9<J,37H$Y_]55W5>((Q*V\Q^U^
-M_U6/,Y[SL_4N!<]Z+/JCMO(B?_QIC_ZN$_`<6U<=3DC,>R(,G,I1^BOB`V*0``
-M)'55Y`8D6HS'^!B2P-CI=3D!J9\WBH?6BX*`=3D_2NN0*&&)*0``'```0`3%0Z$%
-M2!)7%"9*LB5?E,;J'2+C;P```!P``$`%VVD6(49)BYC2OQPHT<PG8$3NU2-;
-M$K=3D&?`\/`)@!``"8`0```@```$4``9172@``0!$``,"H`0'`J`$"`?0!]`&`
-M!V7\$\@HV'@U<@``````````(2`B"`````````%X(@``>`@``'0!`0`,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"```S-*$:6VQ=3DQ^G?T\Q.RI$`6V,.RG0#
-M3BVPW\3>/,>U8@'XP^OYP?L.)+E0EJP<<[ZOGHRI<5XXF7L]O[['A44=3DESK&
-M7*C$UZ!.?_55=3DU7B",2MO,?M?O]5CS.>\[/U+ at 7/>BSZH[;R(G_\:8_^KA/P
-M'%M7'8S'LB#)S*4?HKX at -BD``"1U5>0&)%J,Q_ at 8DL#8Z70:F?-XJ'UHN"@'
-M?TKKD"AAB2D``!P``$`$Q4.A!4 at 25Q0F2K(E7Y3&ZATBXV\````<``!`!=3DMI
-M%B%&28N8TK\<*-',)V!$[M4C7!*W1N@=3D#0"8`0``F`$```(```!%``&45V\`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE\PI"*U/]B.P``````````"$@(@@`````
-M```!>"(``'@)``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``9?+2
-M22A&RE4@,KU7BK]4\K%]CR>^5N+`P$.7KD:<[-P3V>W6NG9\)#0W$%!A84)K
-MQ31X/0`*D<L at 70`%_GBDP.H:@-NTO:RJ:[+U6*@SK/QE0RKY5D$0KLX6JPRD
-M_#?0L<`<5P@'PZ17:Z/T*/+AX6F`;KG8V,3=3D'3E[B9?=3DLA0I```DJ"-`Y.B!
-M&-O9()<`(/0/>\-S-R:WJ[LR+2HR@'5%[ETI```<``!`!,#U@?]2A<I1QC)M
-M:F&!CI(>TC5!````'```0`6)CF[_H0HNRZPY=3D)NV848)"O!Z*5T2MT:Y!0$`
-MF`$``)@!```"````10`!E%=3DW``!`$0``P*@!`<"H`0(!]`'T`8`'9?,*0BM3
-M_8CL```````````A("((`````````7 at B``!X"0``=3D`$!``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``&7RTDDH1LI5(#*]5XJ_5/*Q?8\GOE;BP,!#EZY&
-MG.S<$]GMUKIV?"0T-Q!086%":\4T>#T`"I'+(%T`!?YXI,#J&H#;M+VLJFNR
-M]5BH,ZS\94,J^59!$*[.%JL,I/PWT+'`'%<(!\.D5VNC]"CRX>%I@&ZYV-C$
-MW1TY>XF7W;(4*0``)*@C0.3H at 1C;V2"7`"#T#WO#<S<FMZN[,BTJ,H!U1>Y=3D
-M*0``'```0`3`]8'_4H7*4<8R;6IA at 8Z2'M(U00```!P``$`%B8YN_Z$*+LNL
-M.72;MF%&"0KP>BE=3D$K=3D&7T<'`)@!``"8`0```@```$4``917?@``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7S"D(K4_V([```````````(2`B"`````````%X(@``
-M>`D``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``!E\M))*$;*52`R
-MO5>*OU3RL7V/)[Y6XL#`0Y>N1ISLW!/9[=3D:Z=3DGPD-#<04&%A0FO%-'@]``J1
-MRR!=3D``7^>*3`ZAJ`V[2]K*IKLO58J#.L_&5#*OE601"NSA:K#*3\-]"QP!Q7
-M"`?#I%=3DKH_0H\N'A:8!NN=3DC8Q-T=3D.7N)E]VR%"D``"2H(T#DZ($8V]D at EP`@
-M]`][PW,W)K>KNS(M*C*`=3D47N72D``!P``$`$P/6!_U*%RE'&,FUJ88&.DA[2
-M-4$````<``!`!8F.;O^A"B[+K#ETF[9A1 at D*\'HI7A*W1NI4!0"8`0``F`$`
-M``(```!%``&45Z```$`1``#`J`$!P*@!`@'T`?0!@`=3DEI0:O#^ZBU20`````
-M`````"$@(@@````````!>"(``'CW``!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``+8RU$A8C5RN?P)@4:)L^XFW*$_8VT;V9`;MJ*MGSY at .@WJDZ
-M;WQP\MVG#I@,?<>;^$0J2N`UDRXIC_'<98<)_$4N9ZA8_-W]D8B[IH0B?Z-\
-MJ1M]@=3DDW*>?E/(9K-@*WMW-9#6&0\0]E*/#/-*3]+Q>/W>G4$$>%8:"`;UW^
-MV?`I```DW([#P)*^[_MVQ4@\YVSO'-"U>%42CB0'`M^55B9;S#LI```<``!`
-M!'9;UA_^[%&POS!_IT!VS at OQPSE5````'```0`4/Z53$;W;#'.!/$P23#RZJ
-M@@)ZF5X2MT;#?P@`F`$``)@!```"````10`!E%>D``!`$0``P*@!`<"H`0(!
-M]`'T`8`'9:4&KP_NHM4D```````````A("((`````````7 at B``!X]P``=3D`$!
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``"V,M1(6(U<KG\"8%&B;/N)M
-MRA/V-M&]F0&[:BK9\^8#H-ZI.F]\</+=3DIPZ8#'W'F_A$*DK at -9,N*8_QW&6'
-M"?Q%+F>H6/S=3D_9&(NZ:$(G^C?*D;?8'9-RGGY3R&:S8"M[=3DS60UAD/$/92CP
-MSS2D_2\7C]WIU!!'A6&@@&]=3D_MGP*0``)-R.P\"2ON_[=3DL5(/.=3DL[QS0M7A5
-M$HXD!P+?E58F6\P[*0``'```0`1V6]8?_NQ1L+\P?Z=3D`=3DLX+\<,Y50```!P`
-M`$`%#^E4Q&]VPQS at 3Q,$DP\NJH(">IE>$K=3D&/\$.`)@!``"8`0```@```$4`
-M`917LP``0!$``,"H`0'`J`$"`?0!]`&`!V6E!J\/[J+5)```````````(2`B
-M"`````````%X(@``>/<``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M```MC+42%B-7*Y_`F!1HFS[B;<H3]C;1O9D!NVHJV?/F`Z#>J3IO?'#RW:<.
-MF`Q]QYOX1"I*X#63+BF/\=3DQEAPG\12YGJ%C\W?V1B+NFA")_HWRI&WV!V3<I
-MY^4\AFLV`K>W<UD-89#Q#V4H\,\TI/TO%X_=3DZ=3D001X5AH(!O7?[9\"D``"3<
-MCL/`DK[O^W;%2#SG;.\<T+5X51*.)`<"WY56)EO,.RD``!P``$`$=3DEO6'_[L
-M4;"_,'^G0';."_'#.54````<``!`!0_I5,1O=3DL,<X$\3!),/+JJ"`GJ97Q*W
-M1F+4#`"8`0``F`$```(```!%``&46`,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MN*[K`84`E/,``````````"$@(@@````````!>"(``'CX``!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``4N^_SVHGC*OO&ALTD&YSO@`1<_ at R+DRH
-M2_PWG(Q+9I%?YX#X'M:UKRL^PS*F(B)=3DK?_6]([QNPJKQD+3]JNX<ZO3.D?;
-M..Q=3D1$JA`%5(DLJ#Y']N[R&<'3`25,,I^PD\$_'4<%`%H^,1&#R8>.=3DRN=3D-F
-M93:UI\:<P'<;VH_OFU$I```D&4"MW86_>2&&[,X2^GY'<#>A4=3D-X.N"P#L)Y
-M]%E:.&4I```<``!`!)O7#/7XX1G=3D\H]*+_>#5T)RMA(N````'```0`7DQ5;9
-MKLH8%7`$`"%JZ5)E9\I]F&`2MT:(MP``F`$``)@!```"````10`!E%@E``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9;BNZP&%`)3S```````````A("((````````
-M`7 at B``!X^```=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``%+OO\]J
-M)XRK[QH;-)!N<[X`$7/X,BY,J$O\-YR,2V:17^>`^![6M:\K/L,RIB(B7:W_
-MUO2.\;L*J\9"T_:KN'.KTSI'VSCL741*H0!52)+*@^1_;N\AG!TP$E3#*?L)
-M/!/QU'!0!:/C$1@\F'CG<KG39F4VM:?&G,!W&]J/[YM1*0``)!E`K=3DV%OWDA
-MANS.$OI^1W`WH5'3>#K at L`[">?196CAE*0``'```0`2;UPSU^.$9W?*/2B_W
-M at U=3D"<K82+@```!P``$`%Y,56V:[*&!5P!``A:NE296?*?9A@$K=3D&#_D&`)@!
-M``"8`0```@```$4``91850``0!$``,"H`0'`J`$"`?0!]`&`!V6XKNL!A0"4
-M\P``````````(2`B"`````````%X(@``>/@``'0!`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``!2[[_/:B>,J^\:&S20;G.^`!%S^#(N3*A+_#><C$MF
-MD5_G@/@>UK6O*S[#,J8B(EVM_];TCO&["JO&0M/VJ[ASJ],Z1]LX[%U$2J$`
-M54B2RH/D?V[O(9P=3D,!)4PRG["3P3\=3D1P4`6CXQ$8/)AXYW*YTV9E-K6GQIS`
-M=3DQO:C^^;42D``"090*W=3DA;]Y(8;LSA+Z?D=3DP-Z%1TW at ZX+`.PGGT65HX92D`
-M`!P``$`$F]<,]?CA&=3DWRCTHO]X-70G*V$BX````<``!`!>3%5MFNRA at 5<`0`
-M(6KI4F5GRGV881*W1C$%!0"8`0``F`$```(```!%``&46*$``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DES$9T>B$M_B8``````````"$@(@@````````!>"(``'CY
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``71DE8+_9 at V9\W7])
-M`#*@MJ9+V5ZG6U9PWQS:?1=3D<W!P3"`-9+1K_8]WG99Y". at ZJ8P;7R&G2CX'G
-MI1IL+4SW;:#NB<T4'M<:R6TZ[5T`.`JO<+.E-ENSE:^#\SVTW,0.`8&QB!:4
-MH7N8JZW5.83<$O=3D684W[JR>=3D1B7NN;M7[IXI```D!`/L?Y0'(Z]]O-G$G_/M
-MW7/)T^PYEZO\9IN7.;+*:V\I```<``!`!`W0;171?.OZJF9[[-T$F$[*D at BK
-M````'```0`7DG3]AYR?URZ"LP':B'BXP4WA96V$2MT:',0@`F`$``)@!```"
-M````10`!E%BF``!`$0``P*@!`<"H`0(!]`'T`8`'9<Q&=3D'HA+?XF````````
-M```A("((`````````7 at B``!X^0``=3D`$!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``%T9)6"_V8-F?-U_20`RH+:F2]E>IUM6<-\<VGT77-P<$P@#62T:
-M_V/=3DYV6>0CH.JF,&U\AITH^!YZ4:;"U,]VV@[HG-%![7&LEM.NU=3D`#@*KW"S
-MI39;LY6O at _,]M-S$#@&!L8 at 6E*%[F*NMU3F$W!+W5F%-^ZLGG48E[KF[5^Z>
-M*0``)`0#['^4!R.O?;S9Q)_S[=3DUSR=3D/L.9>K_&:;ESFRRFMO*0``'```0`0-
-MT&T5T7SK^JIF>^S=3D!)A.RI((JP```!P``$`%Y)T_8><G]<N at K,!VHAXN,%-X
-M65MA$K=3D&$G,.`)@!``"8`0```@```$4``918L0``0!$``,"H`0'`J`$"`?0!
-M]`&`!V7,1G1Z(2W^)@``````````(2`B"`````````%X(@``>/D``'0!`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``!=3D&25 at O]F#9GS=3D?TD`,J"VIDO9
-M7J=3D;5G#?'-I]%US<'!,(`UDM&O]CW>=3DEGD(Z#JIC!M?(:=3D*/@>>E&FPM3/=3DM
-MH.Z)S10>UQK);3KM70`X"J]PLZ4V6[.5KX/S/;3<Q`X!@;&(%I2A>YBKK=3D4Y
-MA-P2]U9A3?NK)YU&)>ZYNU?NGBD``"0$`^Q_E`<CKWV\V<2?\^W=3D<\G3[#F7
-MJ_QFFY<YLLIK;RD``!P``$`$#=3D!M%=3D%\Z_JJ9GOLW0283LJ2"*L````<``!`
-M!>2=3D/V'G)_7+H*S`=3DJ(>+C!3>%E;8A*W1FY^#`"8`0``F`$```(```!%``&4
-M6,L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE:DZL=3D(&"8X,``````````"$@(@@`
-M```````!>"(``'C\``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MZOK,]EYLGV93N?YY'H<P>[-^E=3D0$3&-K@[)7QKHGTVYO,@)F6"Z8Q6F4:8!C
-M<_"P4`X\-=3D,#WLX7Q%4,O;/_Q$$T5>I5PU^LG%&FEE]!6LMG/;-6.'"';R92
-MF[[&UE at .JIJ$@@O:<5^CRIF_<MX32;,4US'?,.`;X;/9!<[*\LHI```D/>YO
-MJ<+!M5P93UM=3DH82:-$$$`KP*>=3D(V,37%Q+I+1E at I```<``!`!.082$9[/MN]
-M/U5N,,%\L)<!%>59````'```0`5F57S]P;,F@#I6JH>A*G#:]Q?**6,2MT8K
-M:0``F`$``)@!```"````10`!E%C0``!`$0``P*@!`<"H`0(!]`'T`8`'96I.
-MK'2!@F.#```````````A("((`````````7 at B``!X_```=3D`$!``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``.KZS/9>;)]F4[G^>1Z','NS?I74!$QC:X.R
-M5\:Z)]-N;S("9E at NF,5IE&F`8W/PL%`./#73`][.%\15#+VS_\1!-%7J5<-?
-MK)Q1II9?05K+9SVS5CAPAV\F4IN^QM98#JJ:A((+VG%?H\J9OW+>$TFS%-<Q
-MWS#@&^&SV07.RO+**0``)#WN;ZG"P;5<&4];7:&$FC1!!`*\"GG2-C$UQ<2Z
-M2T98*0``'```0`3D&$A&>S[;O3]5;C#!?+"7`17E60```!P``$`%9E5\_<&S
-M)H`Z5JJ'H2IPVO<7RBEC$K=3D&S:H&`)@!``"8`0```@```$4``918W```0!$`
-M`,"H`0'`J`$"`?0!]`&`!V5J3JQT at 8)C at P``````````(2`B"`````````%X
-M(@``>/P``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#J^LSV7FR?
-M9E.Y_GD>AS![LWZ5U`1,8VN#LE?&NB?3;F\R`F98+IC%:91I@&-S\+!0#CPU
-MTP/>SA?$50R]L__$0315ZE7#7ZR<4::67T%:RV<]LU8X<(=3DO)E*;OL;66`ZJ
-MFH2""]IQ7Z/*F;]RWA-)LQ37,=3D\PX!OAL]D%SLKRRBD``"0][F^IPL&U7!E/
-M6UVAA)HT000"O`IYTC8Q-<7$NDM&6"D``!P``$`$Y!A(1GL^V[T_56XPP7RP
-MEP$5Y5D````<``!`!695?/W!LR:`.E:JAZ$J<-KW%\HI9!*W1C&W!`"8`0``
-MF`$```(```!%``&46/8``$`1``#`J`$!P*@!`@'T`?0!@`=3DEXY/3M[_L`<$`
-M`````````"$@(@@````````!>"(``'C]``!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``?\A:T^&%^5M(']R?*1S!KW48_.SG96]Q>7JS;P,F^&AG
-MDF?_R'*.P^@--7?M0CX88`_74_8&#Y$8M"!PV+!2 at Q&'+G_N!FA1FXBR\O<N
-M>NQ#\E9>4F2`)%:-@(3$E.LFG^ROKC!0N!8VU;J.B6!?:4?5H<N09[^VIO1,
-MQP2DQTPI```D7BNK>RE&GEV8*-ZM*&@S,'YI5GU)O%/$XTX4MN@\*WLI```<
-M``!`!(:-7<>ZW;8L at W4+I?=3D*L`E&Z@?W````'```0`4V@<A3J-#\'7./-AJ.
-M\>H,-.HCUF02MT90XP<`F`$``)@!```"````10`!E%C[``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9>.3T[>_[`'!```````````A("((`````````7 at B``!X_0``
-M=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``'_(6M/AA?E;2!_<GRD<
-MP:]U&/SLYV5O<7EZLV\#)OAH9Y)G_\ARCL/H#35W[4(^&&`/UU/V!@^1&+0@
-M<-BP4H,1ARY_[@9H49N(LO+W+GKL0_)67E)D@"16C8"$Q)3K)I_LKZXP4+ at 6
-M-M6ZCHE at 7VE'U:'+D&>_MJ;T3,<$I,=3D,*0``)%XKJWLI1IY=3DF"C>K2AH,S!^
-M:59]2;Q3Q.-.%+;H/"M[*0``'```0`2&C5W'NMVV+(-U"Z7W2K`)1NH']P``
-M`!P``$`%-H'(4ZC0_!USCS8:CO'J##3J(]9D$K=3D&M"0.`)@!``"8`0```@``
-M`$4``919!P``0!$``,"H`0'`J`$"`?0!]`&`!V7CD].WO^P!P0``````````
-M(2`B"`````````%X(@``>/T``'0!`0`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``!_R%K3X87Y6T@?W)\I',&O=3D1C\[.=3DE;W%Y>K-O`R;X:&>29__(<H[#
-MZ`TU=3D^U"/AA@#]=3D3]@8/D1BT('#8L%*#$8<N?^X&:%&;B++R]RYZ[$/R5EY2
-M9(`D5HV`A,24ZR:?[*^N,%"X%C;5NHZ)8%]I1]6ARY!GO[:F]$S'!*3'3"D`
-M`"1>*ZM[*4:>79 at HWJTH:#,P?FE6?4F\4\3C3A2VZ#PK>RD``!P``$`$AHU=3D
-MQ[K=3DMBR#=3D0NE]TJP"4;J!_<````<``!`!3:!R%.HT/P=3D<X\V&H[QZ at PTZB/6
-M91*W1HDO#`"8`0``F`$```(```!%``&4614``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEA[+$^DH5'WD``````````"$@(@@````````!>"(``'C^``!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``LEXO&OS)`X%\Z""_P_L<AHW$D'CK
-M\T`0\)4A`5R3:"]*E;J&R,R=3D8P=3DCM#!N/[WO:%5`K"`77'M9)-B/1`'#9C.S
-M$S\Z`+6C+1R at 0M?E]*.=3DZXWA>WSE8-=3D/;LT#,D-E0LWN$0FVSEK?[981'OHE
-M1/?*0L'B2GKJO3.^?PXJX]$I```DJ3TP-N0T#+X[Q2(=3DLLU-_S$GZ>E4N0?]
-M1#K9\>\#@^@I```<``!`!`"7EYG]7#5)\#=3DSE5:6I]*-#!;Y````'```0`40
-M";SBI#*ICGG0X>L2C]WT44D[\F82MT;O&@``F`$``)@!```"````10`!E%D6
-M``!`$0``P*@!`<"H`0(!]`'T`8`'98>RQ/I*%1]Y```````````A("((````
-M`````7 at B``!X_@``=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``+)>
-M+QK\R0.!?.@@O\/['(:-Q)!XZ_-`$/"5(0%<DV at O2I6ZALC,G6,'8[0P;C^]
-M[VA50*P@%UQ[6238CT0!PV8SLQ,_.@"UHRT<H$+7Y?2CG>N-X7M\Y6#73V[-
-M`S)#94+-[A$)MLY:W^V6$1[Z)43WRD+!XDIZZKTSOG\.*N/1*0``)*D],#;D
-M-`R^.\4B';+-3?\Q)^GI5+D'_40ZV?'O`X/H*0``'```0`0`EY>9_5PU2?`W
-M<Y56EJ?2C0P6^0```!P``$`%$`F\XJ0RJ8YYT.'K$H_=3D]%%)._)F$K=3D&GEP&
-M`)@!``"8`0```@```$4``91990``0!$``,"H`0'`J`$"`?0!]`&`!V6'LL3Z
-M2A4?>0``````````(2`B"`````````%X(@``>/X``'0!`0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``"R7B\:_,D#@7SH(+_#^QR&C<20>.OS0!#PE2$!
-M7)-H+TJ5NH;(S)UC!V.T,&X_O>]H54"L(!=3D<>UDDV(]$`<-F,[,3/SH`M:,M
-M'*!"U^7THYWKC>%[?.5 at UT]NS0,R0V5"S>X1";;.6M_MEA$>^B5$]\I"P>)*
-M>NJ],[Y_#BKCT2D``"2I/3`VY#0,OCO%(AVRS4W_,2?IZ52Y!_U$.MGQ[P.#
-MZ"D``!P``$`$`)>7F?U<-4GP-W.55I:GTHT,%OD````<``!`!1`)O.*D,JF.
-M>=3D#AZQ*/W?1123OR9Q*W1M%I!`"8`0``F`$```(```!%``&46;<``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DEA<2J%"169+L``````````"$@(@@````````!>"(`
-M`'C_``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``O;?7/_R?;YFH
-M/N\D60\TE&SY9>@](8YZ"K-\C;3IC(1NXN13J[]I=3D:M54$";-I#W:WB!DNEU
-M0$C))74D'T]KNI>>FEI>[FB])(C[FT^MA#+DK<@WA^5\<*E+8Q-73FEOJ!R-
-MQ6!7XET=3DN[2<FL*MC]UG;6ZQ:1]Z?`("[D@$7U at I```DRS_[7]'GR6960]Y<
-M0!B`\A;Q%J8%MFJD1F79G0)':8XI```<``!`!$'+]#95_I1+`\`3B!8.KV]H
-MZKP`````'```0`6\>Q+9P(4`>29WB.WMF8S-LC'LX&<2MT:)E0<`F`$``)@!
-M```"````10`!E%F]``!`$0``P*@!`<"H`0(!]`'T`8`'987$JA0D5F2[````
-M```````A("((`````````7 at B``!X_P``=3D`$!``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``+VWUS_\GV^9J#[O)%D/-)1L^67H/2&.>@JS?(VTZ8R$;N+D
-M4ZN_:76K55!`FS:0]VMX at 9+I=3D4!(R25U)!]/:[J7GII:7NYHO22(^YM/K80R
-MY*W(-X?E?'"I2V,35TYI;Z@<C<5 at 5^)=3D';NTG)K"K8_=3D9VUNL6D?>GP"`NY(
-M!%]8*0``),L_^U_1Y\EF5D/>7$`8@/(6\1:F!;9JI$9EV9T"1VF.*0``'```
-M0`1!R_0V5?Z42P/`$X at 6#J]O:.J\`````!P``$`%O'L2V<"%`'DF=3DXCM[9F,
-MS;(Q[.!G$K=3D&GM8-`)@!``"8`0```@```$4``919RP``0!$``,"H`0'`J`$"
-M`?0!]`&`!V6%Q*H4)%9DNP``````````(2`B"`````````%X(@``>/\``'0!
-M`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``"]M]<__)]OF:@^[R19#S24
-M;/EEZ#TACGH*LWR-M.F,A&[BY%.KOVEUJU500)LVD/=3DK>(&2Z75`2,DE=3D20?
-M3VNZEYZ:6E[N:+TDB/N;3ZV$,N2MR#>'Y7QPJ4MC$U=3D.:6^H'(W%8%?B71V[
-MM)R:PJV/W6=3DM;K%I'WI\`@+N2`1?6"D``"3+/_M?T>?)9E9#WEQ`&(#R%O$6
-MI at 6V:J1&9=3DF=3D`D=3DICBD``!P``$`$0<OT-E7^E$L#P!.(%@ZO;VCJO``````<
-M``!`!;Q[$MG`A0!Y)G>([>V9C,VR,>S@:!*W1N3C"P"8`0``F`$```(```!%
-M``&46?```$`1``#`J`$!P*@!`@'T`?0!@`=3DE4),)Y]#YMV0``````````"$@
-M(@@````````!>"(``'@!``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``P,%-,ZRJ"5(<$U)\+G?,DO<H2+X[Z8^^\XFP%92JWG(.*GUNS[G@?CUS
-MD3XW,1EE:S_E76K+!<G&)BLDKF%DE-C9*7?X!TNSBZ#7F#4ZJY05B<BG0QIC
-MK!?B]G?1\F./>E3!SN?2QC&"B?(DG'XK6W7@%B1'V5?A^,=3D^>!+MWLPI```D
-MW!1>=3D;N'XW.>LZK4UJJ)T/SK6)4R+C>%YK2;EEE$K;PI```<``!`!+@#9]GJ
-MC#ZC?PX6MC/_"EG*\$\C````'```0`5_DSH$.]WW(E+PPU,KZCTR;,L7`F at 2
-MMT8*#P\`F`$``)@!```"````10`!E%GW``!`$0``P*@!`<"H`0(!]`'T`8`'
-M95"3">?0^;=3DD```````````A("((`````````7 at B``!X`0``=3D`$!``P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``,#!33.LJ at E2'!-2?"YWS)+W*$B^.^F/
-MOO.)L!64JMYR#BI];L^YX'X]<Y$^-S$996L_Y5UJRP7)QB8K)*YA9)38V2EW
-M^`=3D+LXN at UY@U.JN4%8G(IT,:8ZP7XO9WT?)CCWI4P<[GTL8Q at HGR))Q^*UMU
-MX!8D1]E7X?C'?G at 2[=3D[,*0``)-P47G6[A^-SGK.JU-:JB=3D#\ZUB5,BXWA>:T
-MFY991*V\*0``'```0`2X`V?9ZHP^HW\.%K8S_PI9RO!/(P```!P``$`%?Y,Z
-M!#O=3D]R)2\,-3*^H],FS+%P)I$K=3D&8 at X&`)@!``"8`0```@```$4``91:````
-M0!$``,"H`0'`J`$"`?0!]`&`!V50DPGGT/FW9```````````(2`B"```````
-M``%X(@``>`$``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#`P4TS
-MK*H)4AP34GPN=3D\R2]RA(OCOIC[[SB;`5E*K><@XJ?6[/N>!^/7.1/C<Q&65K
-M/^5=3D:LL%R<8F*R2N8624V-DI=3D_@'2[.+H->8-3JKE!6)R*=3D#&F.L%^+V=3D]'R
-M8X]Z5,'.Y]+&,8*)\B2<?BM;=3D>`6)$?95^'XQWYX$NW>S"D``"3<%%YUNX?C
-M<YZSJM36JHG0_.M8E3(N-X7FM)N6642MO"D``!P``$`$N`-GV>J,/J-_#A:V
-M,_\*6<KP3R,````<``!`!7^3. at 0[W?<B4O##4ROJ/3)LRQ<":A*W1G(:!`"8
-M`0``F`$```(```!%``&46AH``$`1``#`J`$!P*@!`@'T`?0!@`=3DEB`JTL`FM
-MNW@``````````"$@(@@````````!>"(``'@"``!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``?PSC'%7R3D#099 at 0#DG%B0U;:\XG2*17TG at 4\5"_
-M4C48/[YS18UT"Q/4MP/S\,Z$NN#@H0`$Z`$U3GR>;$HR!T3>&ARG#WK4D:$T
-M+AK!B-2)'B1&#`DD4T1A0NW<WG0/>R9G`%W1J]#!69)I>GG#FHQ;S`0T,NKP
-M6H!^/@RP:S`I```D'RG`WA,KV(@0/KE^0;;'7&2M\[?@#K7,C&538EW?E_`I
-M```<``!`!"X*>GA(9D+&<W.9$/!J)8MLS!I'````'```0`6=3D3=3D5DU$0$^=3DPR
-M;>N#%IF"WRE]96H2MT98*00`7````%P````"````10``6%H;``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*8@*M+`)K;MX```````````I("(@`````````#P````@
-M``!`!@````3KN^T\Q:SHS7Y_V0748*Q3[<"G/&H2MT;1.`0`N`$``+@!```"
-M````10`!M%H<``!`$0``P*@!`<"H`0(!]`'T`:`'A8@*M+`)K;MX````````
-M```I("((`````````9 at A```@``!`!@````3KN^T\Q:SHS7Y_V0748*Q3[<"G
-M/"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``?PSC'%7R
-M3D#099 at 0#DG%B0U;:\XG2*17TG at 4\5"_4C48/[YS18UT"Q/4MP/S\,Z$NN#@
-MH0`$Z`$U3GR>;$HR!T3>&ARG#WK4D:$T+AK!B-2)'B1&#`DD4T1A0NW<WG0/
-M>R9G`%W1J]#!69)I>GG#FHQ;S`0T,NKP6H!^/@RP:S`I```D'RG`WA,KV(@0
-M/KE^0;;'7&2M\[?@#K7,C&538EW?E_`I```<``!`!"X*>GA(9D+&<W.9$/!J
-M)8MLS!I'````'```0`6=3D3=3D5DU$0$^=3DPR;>N#%IF"WRE]96H2MT::7`0`4`$`
-M`%`!```"````10`!3%H=3D``!`$0``P*@!`<"H`0(!]`'T`3@''8@*M+`)K;MX
-ML$42Z4<XK1(A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``"&]"GVT8M at B+`R\?N<)
-MS,FSDI0EX%>10>("!L5`-*7POAV$`J$?R.V2##/2\S,^S at YH,:;Q^623%G26
-M6$FP/E>`[:>*4BHV5A1D9H!MU%`?I!>4:[Q%3HH<V$\UZOKS5$B-TZMJ7XRM
-M8*\9:M<#,&IRO`+E(G;?R)[22#@@WXF:*0``)"B*1E?<.'/P'F560&N`&<)J
-M14`*)8GVW/UE4<';7Y82*0``'```0`32WVN1#)=3DG=3D0#(:W_=3D,!RNC5&Y)P``
-M`!P``$`%C/<OC2J3/<#OLV6N<=3D5<9/\O=3DOMJ$K=3D&FXH$``P!```,`0```@``
-M`$4``0A:'@``0!$``,"H`0'`J`$"`?0!]`#T!]F("K2P":V[>+!%$NE'.*T2
-M+B`C"`````$```#L(P``T#"+[;RGF=3DLM7>B/07MQ8#N2NL<3T3I=3D[9SHR324
-MOT`/Q:,.OORRZ\;XJZ5[M(N303TI("YF0M<$F=3D$Y^7"]7DCXKF=3DK5$\;EO*^
-M(=3D3Z#F)T$_MM:*A9)O#3 at 26]>@[&ER@[1!:#KROV6(DN$\4/#6+NN.B8BS2%
-M*SO*^1_*8Q^60BRQR^0NKB86=3DU0*UHXPD^"ON^J&3KZ?BFX8$M"!Q\5T1W-S
-M`<E#&WE\-[H`NEMH'/%MA7DSW3&JG+*Q`G$]U6B4*_R/7JB,'W<=3D@&H2MT;O
-MHP0`O````+P````"````10``N%H?``!`$0``P*@!`<"H`0(!]`'T`*0&B8@*
-MM+`)K;MXL$42Z4<XK1(N(",@`````0```)PD``"`LCSNB&K:02][:CL"LEPB
-M(.+7QM>*)7#R!>LQDVX1")>Y(G!P/B at DLIN1K=3D4&Q)T93,Y:Z7Q1J9D@!$B<
-MP)2?]I,=3D+N^B+!$'*V2DO4[_%]S(<PC(E[-DG-FQRT;O*B'YB!O#W*8"HV)&
-M/B2&&9]+.R4XQ;"58D,9PI.\)&H2MT8GP at 0`'`$``!P!```"````10`!&%H@
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z8@*M+`)K;MXL$42Z4<XK1(N("0(````
-M`@```/PA``#@>'9MMCZGTJ52)N7<NOKGY*(SJKQ1^.=3DODX^>=3D-&ZN)=3DN5S)N
-MZ9S\:ORVO7Z#?6=3DXL=3DBK;IT6N3AD]8*ZWP4IFN"O1ZCK5QAJ;,6 at N\CG^TOX
-M(36/X^21E<5:&>Q?FS,B33R\"@#"C"@H8FOQ at M@SRLW0F'MO,(R8O"_D]=3DY=3D
-MK`ZZP6$/>(2P(X6!ZD6L@'JE>V*G[O4N-#F>^A3T`+5?=3D82.[CV'K)N3,J7T
-M)@A",9EL0 at QR&P!D#K.^]-YLTEFU1B(-]F$NHJU/6H\VNTE/]KO8^TEK+4(I
-MX0I<*&H2MT;5S`0`_````/P````"````10``^%HA``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R8@*M+`)K;MXL$42Z4<XK1(N("0(`````P```-PA``#`:1O+EBN#
-MR(EZ(ST[*9Q@?VBD8?'4RYOS6[&`J*W6`ML!`;4_A$IFQ9HH2<^6<HG3^S]A
-MO3=3D9+AZE,FIYG5Q;VC2%QFXE71R90U\TV#UXNPS(@/RGC=3DU"<_=3D^&KE5F"._
-MM`"63K(FG9R"DH65L*#H<5(V8>*E&XR$4)7W(D4VK;D\TNE3JA9H5<\X=3DOC5
-M1CP&V6+D4'&21R*5'A4A$/CAR-,3;>(O2?+O[C*,*@E3XWQJO&T1[?O?&_;3
-MFT9J$K=3D&D]<$`&P```!L`````@```$4``&A:(@``0!$``,"H`0'`J`$"`?0!
-M]`!4!CF("K2P":V[>+!%$NE'.*T2+B`D(`````(```!,*0``,.7<'(*"E9LG
-MQT8"5'Q=3DIU,3R0*_QTP/D42XAOZ`5X at F^=3D,[,UFT=3DU30YJOR:A*W1H_R!`!L
-M````;`````(```!%``!H6B,``$`1``#`J`$!P*@!`@'T`?0`5`8YB`JTL`FM
-MNWBP11+I1SBM$BX@)"`````#````3"D``#"4W9(6,5GZ2/<<G,J]J`$BYY8U
-M&0#5S\_M"4T/-1>HV]'L[9BD9;024:P]_6H2MT;$#04`/`$``#P!```"````
-M10`!.%HD``!`$0``P*@!`<"H`0(!]`'T`20'"8@*M+`)K;MXL$42Z4<XK1(N
-M("0(````!````1PA``$`47K9#N\2U%TK$%8B5L!OP]XCZ2'QVQP.D@,;V+DT
-M(A,7<M`ND;7]B\Q*+JI$9(4$(2#;9YL3&S,7 at _H@YGP2.B.?HWX\&OAKX#U0
-M\G?BTENC8*KK]O'CD?5)7WL;7!FZ>.[W_F3RY3AM(AO)U)6Q*"E1UMTA,"JL
-M;N4[05*8%#_L`[*[HI<E$4)`1QVQ,[65J[MX8^&'C$!=3DCZ5>DOF/,M[X?:A3
-M6/*@&IRM"FB24]KMGL`4^:G/(1KE_H2W<=3D`*\NP!?,KJ(.A=3D-H4O`G8[,WON
-M=3D>O$]P>2`-(QF)`=3DP_:&@%!>JRJKN84?2O>Y$D^0T-6Y%&F"K1C64("$:A*W
-M1DL9!0`<`0``'`$```(```!%``$86B4``$`1``#`J`$!P*@!`@'T`?0!!`?I
-MB`JTL`FMNWBP11+I1SBM$BX@)`@````%````_"$``.`U?+2=3D*XM8A^#O`K*Y
-M7%+<&UOHF=3DD$(1&V>N0EQ$1\7^\`:MBI]/\HIY[`UR%V7V@=3DA^"<L`XHV/K&
-M<AG#CCNHD+)FWQW*<V6TW?>10*YHF"<LQ,/UF"!\]<]U??XVE+?H0Y6ZS<FM
-M5C.LR#,B'UM=3D3T0IA]GXMY-2$&NFS!34K]<*M%G=3DOS9S.\KK:39<U[E[TN2E
-M.XF:CJEQBN:6OH;;2%*;]+)?A]C6R,3$O(^#_HLOFY":OS<5G_>K-VQ4YUR.
-M2H8)5\0P-1`&-/1[.-_WV/YC'?*18M]Z\!_B:A*W1O`H!0#L````[`````(`
-M``!%``#H6B8``$`1``#`J`$!P*@!`@'T`?0`U`:YB`JTL`FMNWBP11+I1SBM
-M$BX@)"`````$````S"$``+!`8]7<4_?;G("#P]($*A^IU-(8V,7;WQ\`EW/J
-M/6-;A2"S!B?O+0T5R(T-]I=3D^7HT at 4^3:PXR7F%.EJ]J$K8UYWM&^FI)H#/<<
-M+3U\+JA0:^Y%3685G;T`2?H6O0`JJESF6L at Z2?!6XA'5A?"PFXE^_'<5IOCA
-MHX<KK8Z=3D;A5#8;3'&%N8SOK\*4=3D5B;B*&IAO8%WM;DE*05Y6[,U]`EUTDM+A
-M=3D84[>R9$N-^Q:A*W1I1+!0#L````[`````(```!%``#H6B@``$`1``#`J`$!
-MP*@!`@'T`?0`U`:YB`JTL`FMNWBP11+I1SBM$BX@)"`````%````S"$``+`%
-M0SH,?:'T+F+`S'$$891#!/<@FK\+[L[4=3D0`XIK15P7M(E5+#>7G]SRI1YSD*
-MZZ`,\,(>&72BK5_Y0)P0';YAQJ[+3.^"\Y+^L9G%/;NUOP=3D$]EN1#253H"@E
-M"45.^GT-U7R94[**%X=3DB0"AUVH.M1JM9BSDD_+#"T7C8E9>R8TEVA,?Z^>G]
-M>=3D=3D93!#8OXL at 4;I.KI$J'I:ZZ<F_(%4M,DAPFG&YEL:C4U';:A*W1MYG!0`\
-M`0``/`$```(```!%``$X6BD``$`1``#`J`$!P*@!`@'T`?0!)`<)B`JTL`FM
-MNWBP11+I1SBM$BX@)`@````&```!'"$``0"LD6]9U.'>(;45VY!'(4X6WL^K
-M\\>."V4W/">G2OU+733S`^%0QW",MZ\9]^4$NQ]!TDZB+8CX]W@^H`.#-_XK
-M,L<DILS!RM0D8^@V7`9,%#6>'1C_6M?CP6EXJYDD7>X0Q)2[MFSM('YR!PV$
-M5 at WW<:OJD'H3VBK4-HC*')Y>J-23LGL<,.!0,P[XD=3DPRK%F89);'9<B@]0TD
-M,E*@__):"44N at K4<#?%J'N+2!>F">SK.:=3D"HE,[$ZRI?KL15M(MKVT/\$_&:
-MUL>X(C86F6;"OML:G"R,[]E(KDJ*X7+.U[I._,;9ZI8H3(LH/B-_ND/?79(Y
-MYUBVG-L$=3D/AJ$K=3D&EG,%`!P!```<`0```@```$4``1A:*@``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^F("K2P":V[>+!%$NE'.*T2+B`D"`````<```#\(0``X-[5
-MG(,T<=3D@*7>'#589U;Y/VWQP1MLH+AYR00,1B=3DS-4IMH4@$1&.%ZMI^)GL^.[
-M_@`J3"^;QA*[OR2DZ.&U>H24X`:CO)XG4<CLQ at 9]QU0[_EF[P$I&?100V7^=3D
-M.8 at 3FC76\H_\:,!`)&\81<P;%*QEIR[0"W<'%ZRN\#T9W*O$^]EARK$)@BAO
-M!&2<K3S\_:'$6_'#?JLI\C?Y4(9Q34E)OAEJ\_A(<YT*1'WZW7-;Q]R$2T&5
-M;?5[Q_?N5*7#QWO<GA749/$P!A:RVD51.EOS!L27L07$`JN>*$)J$K=3D&Q8(%
-M`.P```#L`````@```$4``.A:*P``0!$``,"H`0'`J`$"`?0!]`#4!KF("K2P
-M":V[>+!%$NE'.*T2+B`D(`````8```#,(0``L+85<@2Q]?SR@@!$+IMP7K0M
-M8L(!S1TV9\@^((L10+!Y^"QS0ZNS[=3D;.GB[W8Q<1X4[C_N>ZA79V4+:.(V?<
-MP*-PJDE^5CY)Z??%`TO_+:]+/OP?],KRM+44%[323<X%B$AY2U;Y>__TRB"@
-M'@\/<A_GTGHQ6",)J*L$OAME@(#%WW]#ZL]?E%&#?Q.N_L8+M-^1RM+CD9_4
-MTSMF26H3.#/PF01IR3ZF\`%/G>UJ$K=3D&$J4%`.P```#L`````@```$4``.A:
-M+```0!$``,"H`0'`J`$"`?0!]`#4!KF("K2P":V[>+!%$NE'.*T2+B`D(```
-M``<```#,(0``L*T%`Z5(7)N$*VU*E;7O&8W!"/$0$)%!XXA9IWZDZ<W.2(#'
-MA71GV`SC_35M\EKX!=3D*TKO=3D:"H+5=3DMF\]^>*(L`K>C$[FU%AM^HSRT7^@5M3
-M*A\[VX<O)[V0]D<+-;>2308V)@%U@*X<$0\W3H-IS:MY(LO]Q-`IM1LHE'"S
-M';"(41K,X^LF$P>>HKWL5[$!Y*2J2)H(4,#Q/G^##DX"WH)U1RU\KSV8)TSE
-M(RAJ$K=3D&8\L%`(P!``",`0```@```$4``8A:+0``0!$``,"H`0'`J`$"`?0!
-M]`%T!UF("K2P":V[>+!%$NE'.*T2+B`D"`````@```%L(0`!4"M8JV0GH2,*
-M-7O:<0*QI+,,DAV9%Q>DY[>'\OECJ#26;I,QM0JYE]%"YX*UG at 8_41KXKT0.
-MY_=3DMRP67,K-SK9"E"V at JIN[GNH(T/))HO at P@]$6'=3DU$F<RJ']`Y!ACTDHNG%
-M;Q?$S)N%_:M45HCO!BK^])9*?)I3,\6-_9HR;]@0!0U-##_JV,[X at 90*'0VS
-M'0BYI,?]KIR_QNN'[$%JX!9(WQ at CFU2E[EV>JL3MDAN[X3M272FDZWQ_<8S@
-M3FRL.4FRYHUR$U'8=3D^+PJY`JSTH:>IPSL3Z4ULU"A%X8$`3;/J3BGVR4!4J]
-M+;59#D8:&9?';J_)5)A^"0";MHLE at CL`.JD&`,5*,D5WRJ-Y(9Z$=3DP?^1;/M
-M6M+U6*0"MHZ"AD/19'X&(&`-3Z[>F+MM:09&5((`:)C3:O;6^GHH'VLXS*U>
-M]?F#S!:=3D)Y.+:A*W1O__!0!<`0``7`$```(```!%``%86BX``$`1``#`J`$!
-MP*@!`@'T`?0!1`<IB`JTL`FMNWBP11+I1SBM$BX@)"`````(```!/"$``2`?
-MCSLG%1.7K'+HD!#P7R\:Z`'`A7:D.1:P)/09!:06%X"#U7](NT%4>+:])8Q_
-MO\&>,0T_L.T1&!<<GVK?A_%UJFRT/ZDY9C at 1(W>]27J90,>5R0]7U)!;&-M!
-MA\D>9=3D^-I/@THVS6+)<!&`<[:IWYA:7"&9Z(Z%''=3DUF'RNK$<B"4"<%S1=3D\K
-MP7>ZO\!O?W;CMK(.!#K3][0DD+6,+Y0US-X#L&H.+=3DT at YZ$`GGGWY_!&WT6Q
-MR`P%ZP!VONPUGV9B%#G5>O&`B#,[!$<R?W'W1S*4\+41H1?Q\G^CT:J#LPNN
-MXB3+);+FT`+WUOGE4]@PIZ**^W*-(1V22,S/]&Y7##42YV\/\GR(?CS+,YPS
-M?WM+J?"[&?.3KCQ5%6H2MT;=3D)@8`?````'P````"````10``>%HO``!`$0``
-MP*@!`<"H`0(!]`'T`&0&25\WSRZW"&8K5O`+VI`QSA<N("4(`````````%PJ
-M``!`3H."16W/W9?7L3/2X9/I?>']XP1?=3D'B6E0?*.:Q&WS>SN?S_7+*6?(N<
-M0'NJ at 6>A!;!4:ER>S)Z'4VP`:A*W1JLY!@!L````;`````(```!%``!H6C``
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y7S?/+K<(9BM6\`O:D#'.%RX@)2``````
-M````3````#"NN*9[MX3//SC$J%$>-%-"4#Z.G:3/ES:2Y;3A_=3D^^ACFFYZ;[
-MC.HV1`?8 at 6H2MT8(2`8`;````&P````"````10``:%HQ``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.5\WSRZW"&8K5O`+VI`QSA<N("4(`````0```$PJ```PKK$U
-MO`2QFO6.O]7=3D8SZX851+I(W16[>)XW[Y*:!CHGNJF^W2R'X6/6=3D^[EMJ$K=3D&
-MD54&`&P```!L`````@```$4``&A:,@``0!$``,"H`0'`J`$"`?0!]`!4!CE?
-M-\\NMPAF*U;P"]J0,<X7+B`E(`````$```!,````,%U4C'`61D((O4%N3\E9
-M>&+>P'#VDGUEDD#.\>Y]I?]E at PX(`L!JKU4BQ2_<:A*W1JI0!P"8`0``F`$`
-M``(```!%``&46C,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE;^^I=3D3";/9P`````
-M`````"$@(@@````````!>"(``'@#``!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``Y?AW^%B65_JG66HXCS)]G&Y7[*7OI-UPOJ at .K9*15N#BCB0]
-MQ0+L>K)84Z!V)H27<T*+K!>N''JO2,]-)XLK3DURQZZ!)YU=3D9J':)Q1BG1<(
-M7X^4&@'57ZM'6BQ!K3)A""$K\(>NP!XI1XLB&M0:'AE00KW"1:1J%H^8QSR%
-MQ8<I```D9(;Y4KQT?RDF1_X"P-Y1!?BMC/`*//AZ63D`+Z)_%\HI```<``!`
-M!`3`S*.$$E[+*A3.S3A&0$S*$%=3D:````'```0`5O6K3W&,P$ONJ"$/NK%UU,
-M1`_;C6H2MT8+>PH`F`$``)@!```"````10`!E%HT``!`$0``P*@!`<"H`0(!
-M]`'T`8`'96_OJ74PFSV<```````````A("((`````````7 at B``!X`P``=3D`$!
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``.7X=3D_A8EE?ZIUEJ.(\R?9QN
-M5^RE[Z3=3D<+ZH#JV2D5;@XHXD/<4"['JR6%.@=3DB:$EW-"BZP7KAQZKTC/32>+
-M*TY-<L>N at 2>=3D76:AVB<48IT7"%^/E!H!U5^K1UHL0:TR80 at A*_"'KL`>*4>+
-M(AK4&AX94$*]PD6D:A:/F,<\A<6'*0``)&2&^5*\=3D'\I)D?^`L#>407XK8SP
-M"CSX>EDY`"^B?Q?**0``'```0`0$P,RCA!)>RRH4SLTX1D!,RA!76@```!P`
-M`$`%;UJT]QC,!+[J at A#[JQ=3D=3D3$0/VXUK$K=3D&A'H!`)@!``"8`0```@```$4`
-M`91:-0``0!$``,"H`0'`J`$"`?0!]`&`!V5O[ZEU,)L]G```````````(2`B
-M"`````````%X(@``>`,``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#E^'?X6)97^J=3D9:CB/,GV<;E?LI>^DW7"^J`ZMDI%6X.*.)#W%`NQZLEA3
-MH'8FA)=3DS0HNL%ZX<>J](STTGBRM.37+'KH$GG5UFH=3DHG%&*=3D%PA?CY0:`=3D5?
-MJT=3D:+$&M,F$((2OPAZ[`'BE'BR(:U!H>&5!"O<)%I&H6CYC'/(7%ARD``"1D
-MAOE2O'1_*29'_ at +`WE$%^*V,\`H\^'I9.0`OHG\7RBD``!P``$`$!,#,HX02
-M7LLJ%,[-.$9`3,H05UH````<``!`!6]:M/<8S`2^ZH(0^ZL774Q$#]N-:Q*W
-M1MK-#@"8`0``F`$```(```!%``&46D@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M\\,H(+K\:X(``````````"$@(@@````````!>"(``'@$``!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``=3DZ!MC6D$.*;<RQW=3D_+LF4]S\^V+8%T<S
-M3HFP"<%*,+;+P`^?_"K'QQ9X6P-1<EJ,IA[*-?G9KDEJ'(<+XBGPW+9,=3D0<@
-MM0-S!>]]\\.30B%\M;%3UKE][HYF'7BF*ZKP!PD*Y259#\,7I3QPT^&7W-Y$
-M_?@>U#X2H,[(Y<%K\Q(I```D$=3D2F&=3DSG1BDOOG0*>LFXM:*@172,F4$<KWPC
-M at DGZ\3\I```<``!`!`-[Y7!]^E-5,Q(-Q`HB*Q-IX`D1````'```0`6H#8V1
-M7S#E4 at S%S&H</W$GG-;U$FP2MT;/L@(`F`$``)@!```"````10`!E%I,``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9?/#*""Z_&N"```````````A("((````````
-M`7 at B``!X!```=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``'>@;8UI
-M!#BFW,L=3DW?R[)E/<_/MBV!=3D',TZ)L`G!2C"VR\`/G_PJQ\<6>%L#47):C*8>
-MRC7YV:Y):AR'"^(I\-RV3'4'(+4#<P7O??/#DT(A?+6Q4]:Y?>Z.9AUXIBNJ
-M\`<)"N4E60_#%Z4\<-/AE]S>1/WX'M0^$J#.R.7!:_,2*0``)!'4IAG<YT8I
-M+[YT"GK)N+6BH$5TC)E!'*]\(X))^O$_*0``'```0`0#>^5P??I353,2#<0*
-M(BL3:>`)$0```!P``$`%J`V-D5\PY5(,Q<QJ'#]Q)YS6]1)L$K=3D&@?0(`)@!
-M``"8`0```@```$4``91:5@``0!$``,"H`0'`J`$"`?0!]`&`!V7SPR@@NOQK
-M@@``````````(2`B"`````````%X(@``>`0``'0!`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``!WH&V-:00XIMS+'=3DW\NR93W/S[8M at 71S-.B;`)P4HP
-MMLO`#Y_\*L?'%GA;`U%R6HRF'LHU^=3DFN26H<APOB*?#<MDQU!R"U`W,%[WWS
-MPY-"(7RUL5/6N7WNCF8=3D>*8KJO`'"0KE)5D/PQ>E/'#3X9?<WD3]^![4/A*@
-MSLCEP6OS$BD``"01U*89W.=3D&*2^^=3D`IZR;BUHJ!%=3D(R901RO?"."2?KQ/RD`
-M`!P``$`$`WOE<'WZ4U4S$@W$"B(K$VG@"1$````<``!`!:@-C9%?,.52#,7,
-M:AP_<2><UO42;1*W1AX`!P"8`0``F`$```(```!%``&46G```$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEKR!B"1X_A80``````````"$@(@@````````!>"(``'@'
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``L^YY(ZAS-B]%L(`Z
-MWEX;=3D!:]&TNS9=3DVQ)K*7B.A#%]Y9T`5YUR^=3DEE_AA7Z5R5>04G@"V=3DR>C/(G
-MB0"HF/P'0A[QN&,1(S?:W(X37M]"&CCPO1*G$[B#%AWY0#+UT#X#L1H7'T1\
-M">G8J!ON98@@G\ZO(7_*^X1Z<O,3"(6":"$I```D,9[?!Z9+[SI\88-(Z:(]
-M!0>D780&*AU%K35%4H"&@\@I```<``!`!&I&V,6GLHG%9XA66L<%L%,H*)1"
-M````'```0`6G#'UG6I+56=3D5_B;2$E?6<A at R\FVT2MT;-+`H`F`$``)@!```"
-M````10`!E%IR``!`$0``P*@!`<"H`0(!]`'T`8`'9:\@8 at D>/X6$````````
-M```A("((`````````7 at B``!X!P``=3D`$!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``+/N>2.H<S8O1;"`.MY>&W06O1M+LV7=3DL2:REXCH0Q?>6=3D`%>=3D<O
-MG99?X85^E<E7D%)X`MG<GHSR)XD`J)C\!T(>\;AC$2,WVMR.$U[?0AHX\+T2
-MIQ.X at Q8=3D^4`R]=3D`^`[$:%Q]$?`GIV*@;[F6(()_.KR%_RON$>G+S$PB%@F at A
-M*0``)#&>WP>F2^\Z?&&#2.FB/04'I%V$!BH=3D1:TU15*`AH/(*0``'```0`1J
-M1MC%I[*)Q6>(5EK'!;!3*"B40@```!P``$`%IPQ]9UJ2U5G5?XFTA)7UG(8,
-MO)MN$K=3D&>2P!`)@!``"8`0```@```$4``91:@0``0!$``,"H`0'`J`$"`?0!
-M]`&`!V6O(&()'C^%A```````````(2`B"`````````%X(@``>`<``'0!`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"S[GDCJ',V+T6P@#K>7AMT%KT;
-M2[-EW;$FLI>(Z$,7WEG0!7G7+YV67^&%?I7)5Y!2>`+9W)Z,\B>)`*B8_`=3D"
-M'O&X8Q$C-]K<CA->WT(:./"]$J<3N(,6'?E`,O70/@.Q&A<?1'P)Z=3DBH&^YE
-MB""?SJ\A?\K[A'IR\Q,(A8)H(2D``"0QGM\'IDOO.GQA at TCIHCT%!Z1=3DA`8J
-M'46M-452@(:#R"D``!P``$`$:D;8Q:>RB<5GB%9:QP6P4R at HE$(````<``!`
-M!:<,?6=3D:DM59U7^)M(25]9R&#+R;;A*W1HM]#@"8`0``F`$```(```!%``&4
-M6ID``$`1``#`J`$!P*@!`@'T`?0!@`=3DE0QJ#-MEAF*,``````````"$@(@@`
-M```````!>"(``'@(``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M(0TO=3D%L(']HZ-&SXM<B07RH`@UD2MF9VEZT/JB1PM%;=3DZ&LM_/-#33;?MES@
-M%0%77IM&Y0MKJ^#WLV](F'ZVX-3CGD#+!QV0)\#;I<#Y2DP3^<^".+2D;JIS
-M9%O8?X2%EJ-75Z)PE/JYW("IQIX`LP_-\9:)QAZ&`I8)8GVB-'PI```DFGWC
-M)!4M!P2\&TT&U3L6#Q.L!S6]PQ!K;'=3D^XM>!U>HI```<``!`!$LI^R9^>.S*
-M!CM:A>#W_:O$M-Q@````'```0`5T00T>'E#NM?N%X^>C):C`X(Z)Y&\2MT:8
-M9`(`F`$``)@!```"````10`!E%J=3D``!`$0``P*@!`<"H`0(!]`'T`8`'94,:
-M at S;989BC```````````A("((`````````7 at B``!X"```=3D`$!``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``"$-+W1;"!_:.C1L^+7(D%\J`(-9$K9F=3DI>M
-M#ZHD<+16W>AK+?SS0TTVW[9<X!4!5UZ;1N4+:ZO@][-O2)A^MN#4XYY`RP<=3D
-MD"?`VZ7`^4I,$_G/@CBTI&ZJ<V1;V'^$A9:C5U>B<)3ZN=3DR`J<:>`+,/S?&6
-MB<8>A@*6"6)]HC1\*0``))I]XR05+0<$O!M-!M4[%@\3K`<UO<,0:VQW?N+7
-M@=3D7J*0``'```0`1+*?LF?GCLR at 8[6H7@]_VKQ+3<8````!P``$`%=3D$$-'AY0
-M[K7[A>/GHR6HP.".B>1O$K=3D&+Z8(`)@!``"8`0```@```$4``91:JP``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V5#&H,VV6&8HP``````````(2`B"`````````%X
-M(@``>`@``'0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"```A#2]T6P@?
-MVCHT;/BUR)!?*@"#61*V9G:7K0^J)'"T5MWH:RW\\T---M^V7.`5`5=3D>FT;E
-M"VNKX/>S;TB8?K;@U..>0,L''9`GP-NEP/E*3!/YSX(XM*1NJG-D6]A_A(66
-MHU=3D7HG"4^KG<@*G&G@"S#\WQEHG&'H8"E at EB?:(T?"D``"2:?>,D%2T'!+P;
-M30;5.Q8/$ZP'-;W#$&ML=3DW[BUX'5ZBD``!P``$`$2RG[)GYX[,H&.UJ%X/?]
-MJ\2TW&`````<``!`!71!#1X>4.ZU^X7CYZ,EJ,#@CHGD<!*W1@*U!@"8`0``
-MF`$```(```!%``&46L4``$`1``#`J`$!P*@!`@'T`?0!@`=3DE.<IW'A9)+]T`
-M`````````"$@(@@````````!>"(``'@)``!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``6L,:&K5$UY?W4@#(G'5(VSX3!V$^<96*=3DBG+8-G;0.4(
-M60?W*3SXB[<5'AS`N/J4%U=3D"Y$("9CQP,#W at O#ZA#S9U=3DLYV:4_K&GMM$9&^
-M9.QEH,UR<:_KP!_<Y`NRJPD*KJ$-Q1SA(-=3DW5&1$S!G"[.(.;N_&@;D0[0#(
-MQ3M&=3D2TI```DX. at -X08$A6L/I;K=3D(V2%5*F at 4X@,%9C6=3DD1&[OPE7'(I```<
-M``!`!-#?4J30P+_D>_%O%E)%_D`N!R`+````'```0`7)XP+DOOJ,@)&"P#B\
-M0U;O?G+ZHG`2MT;+W at D`F`$``)@!```"````10`!E%K+``!`$0``P*@!`<"H
-M`0(!]`'T`8`'93G*=3DQX622_=3D```````````A("((`````````7 at B``!X"0``
-M=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``%K#&AJU1->7]U(`R)QU
-M2-L^$P=3DA/G&5BG8IRV#9VT#E"%D']RD\^(NW%1X<P+CZE!=3D70N1"`F8\<#`]
-MX+P^H0\V=3D7;.=3DFE/ZQI[;1&1OF3L9:#-<G&OZ\`?W.0+LJL)"JZA#<4<X2#7
-M=3DU1D1,P9PNSB#F[OQH&Y$.T`R,4[1G4M*0``).#H#>$&!(5K#Z6ZW2-DA52I
-MH%.(#!68UG9$1N[\)5QR*0``'```0`30WU*DT,"_Y'OQ;Q921?Y`+@<@"P``
-M`!P``$`%R>,"Y+[ZC("1 at L`XO$-6[WYR^J)Q$K=3D&[=3DT``)@!``"8`0```@``
-M`$4``91:U@``0!$``,"H`0'`J`$"`?0!]`&`!V4YRG<>%DDOW0``````````
-M(2`B"`````````%X(@``>`D``'0!`0`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``!:PQH:M437E_=3D2`,B<=3D4C;/A,'83YQE8IV*<M at V=3DM`Y0A9!_<I//B+
-MMQ4>',"X^I075T+D0@)F/'`P/>"\/J$/-G5VSG9I3^L:>VT1D;YD[&6 at S7)Q
-MK^O`']SD"[*K"0JNH0W%'.$@UW=3D49$3,&<+LX at YN[\:!N1#M`,C%.T9U+2D`
-M`"3 at Z`WA!@2%:P^ENMTC9(54J:!3B`P5F-9V1$;N_"5<<BD``!P``$`$T-]2
-MI-#`O^1[\6\64D7^0"X'(`L````<``!`!<GC`N2^^HR`D8+`.+Q#5N]^<OJB
-M<1*W1J at L#@"8`0``F`$```(```!%``&46WL``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE[$DRRB$7_X$``````````"$@(@@````````!>"(``'C_``!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``C^>")B8O,RM>FUM at M`0BWA*I,?VM
-MVNW;EN[OQ_3W*Q\E6#<%733M'3DRGU>WC#((K0T:KG'<!ZE/Z":.1W^0;WG*
-ME;+-(%D.WGFW2CK;L1`O(CK06.Q\Y\J+3BE9X=3D/;$>0MB<B=3D5$^<8"36^VEX
-MG(.;E?BB=3D9NDUQJX1`$`PKTI```DKUHPB[_$^'FSJWPF4;DDXVN#DG]`(R(4
-M"``7<X!M[<HI```<``!`!$\Z])+>>WE>&@`"/VI'NT at OR-H8````'```0`5C
-M.-J#V+C5<_EE$ZI8ZW?U=3DF&(Q'(2MT9K%@(`F`$``)@!```"````10`!E%N1
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9>Q),LHA%_^!```````````A("((````
-M`````7 at B``!X_P``=3D`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``(_G
-M at B8F+S,K7IM;8+0$(MX2J3']K=3DKMVY;N[\?T]RL?)5 at W!5TT[1TY,I]7MXPR
-M"*T-&JYQW`>I3^@FCD=3D_D&]YRI6RS2!9#MYYMTHZV[$0+R(ZT%CL?.?*BTXI
-M6>'3VQ'D+8G(G51/G&`DUOMI>)R#FY7XHG6;I-<:N$0!`,*]*0``)*]:,(N_
-MQ/AYLZM\)E&Y).-K at Y)_0",B%`@`%W.`;>W**0``'```0`1/.O22WGMY7AH`
-M`C]J1[M(+\C:&````!P``$`%8SC:@]BXU7/Y91.J6.MW]79AB,1R$K=3D&-%@(
-M`)@!``"8`0```@```$4``91;NP``0!$``,"H`0'`J`$"`?0!]`&`!V7L23+*
-M(1?_ at 0``````````(2`B"`````````%X(@``>/\``'0!`0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``"/YX(F)B\S*UZ;6V"T!"+>$JDQ_:W:[=3DN6[N_'
-M]/<K'R58-P5=3D-.T=3D.3*?5[>,, at BM#1JN<=3DP'J4_H)HY'?Y!O><J5LLT at 60[>
-M>;=3D*.MNQ$"\B.M!8['SGRHM.*5GAT]L1Y"V)R)U43YQ@)-;[:7B<@YN5^*)U
-MFZ37&KA$`0#"O2D``"2O6C"+O\3X>;.K?"91N23C:X.2?T`C(A0(`!=3DS@&WM
-MRBD``!P``$`$3SKTDMY[>5X:``(_:D>[2"_(VA@````<``!`!6,XVH/8N-5S
-M^643JECK=3D_5V88C$<Q*W1NYC!@"8`0``F`$```(```!%``&46]@``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE,AL&AE=3D.7AT``````````"$@(@@````````!>"(`
-M`'B```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``[LRVD at WN79F!
-MC]QDM^&,PC2%-^OAX-4G[-D,*#'E!*Y]]"YZ50;R8MDKC7*=3D?$=3DICXZOP)A6
-MV5JAM.W=3DX"S\1PA2I:5JD at U[BI$A$=3D$R:;-/U4*3"+.BD5LV.<8BCK1O:%O8
-MR:LO+]FP/\DG.ZQPD+*)]%<O2JS?$TF-+IR=3D)A(I```D=3D7SKL,F'5^$FL2C`
-M/RVSG/E<(MC2""Y50]#E"]KNP<$I```<``!`!&3@\34%5S!\W'AS71<41(+T
-M/V-]````'```0`6FL`B%6HXNM=3D_.K$0>AEWR8'>.?W,2MT:8D`D`F`$``)@!
-M```"````10`!E%O<``!`$0``P*@!`<"H`0(!]`'T`8`'93(;!H973EX=3D````
-M```````A("((`````````7 at B``!X@```=3D`$!``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``.[,MI(-[EV9 at 8_<9+?AC,(TA3?KX>#5)^S9#"@QY02N??0N
-M>E4&\F+9*XURG7Q':8^.K\"85ME:H;3MW>`L_$<(4J6E:I(->XJ1(1'1,FFS
-M3]5"DPBSHI%;-CG&(HZT;VA;V,FK+R_9L#_))SNL<)"RB?17+TJLWQ-)C2Z<
-MG282*0``)'5\Z[#)AU?A)K$HP#\MLYSY7"+8T@@N54/0Y0O:[L'!*0``'```
-M0`1DX/$U!5<P?-QX<UT7%$2"]#]C?0```!P``$`%IK`(A5J.+K7?SJQ$'H9=3D
-M\F!WCG]T$K=3D&M8\``)@!``"8`0```@```$4``91;YP``0!$``,"H`0'`J`$"
-M`?0!]`&`!V4R&P:&5TY>'0``````````(2`B"`````````%X(@``>(```'0!
-M`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``#NS+:2#>Y=3DF8&/W&2WX8S"
-M-(4WZ^'@U2?LV0PH,>4$KGWT+GI5!O)BV2N-<IU\1VF/CJ_`F%;96J&T[=3DW@
-M+/Q'"%*EI6J2#7N*D2$1T3)ILT_50I,(LZ*16S8YQB*.M&]H6]C)JR\OV;`_
-MR2<[K'"0LHGT5R]*K-\328TNG)TF$BD``"1U?.NPR8=3D7X2:Q*,`_+;.<^5PB
-MV-((+E5#T.4+VN[!P2D``!P``$`$9.#Q-057,'S<>'-=3D%Q1$@O0_8WT````<
-M``!`!::P"(5:CBZUW\ZL1!Z&7?)@=3DXY_=3D!*W1E3?#0"8`0``F`$```(```!%
-M``&46_,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE.?O=3D"O^XAI$``````````"$@
-M(@@````````!>"(``'@``0!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``9UN at C2Q'%]FZ)MV=3D8(!%V42FS._`JS at UU0&X6<W(;V`*8A`PK0-DU(FQ
-M41?@Q+TS6+4OMNJX]N,QP:71DM&-C!<>:+BB-T6C;:)FXH?M)/O8U`SZ5X#(
-MO=3D-7^HI$-WR'LL>*M44<>$63WF#"]051IMAHEQ'LI>=3DSVU,BB^B1$^`I```D
-M5J at C$%V7DHB;:(N&#Q)]:#.G0:;TB!YX`G1AHNZQCQHI```<``!`!-L:>A51
-MR>\U6\2,4G$%JUHLX@=3DC````'```0`4FM"OP[[,U+Q"QH(&[+D#Z-;EO/'02
-MMT9<[@T`7````%P````"````10``6%OT``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*3G[W0K_N(:1```````````I("(@`````````#P````@``!`!@````;;H!"2
-M9;?<$.#HUVU)[$!K[/#YX'02MT:P_0T`N`$``+@!```"````10`!M%OU``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A3G[W0K_N(:1```````````I("((````````
-M`9 at A```@``!`!@````;;H!"29;?<$.#HUVU)[$!K[/#YX"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``9UN at C2Q'%]FZ)MV=3D8(!%V42F
-MS._`JS at UU0&X6<W(;V`*8A`PK0-DU(FQ41?@Q+TS6+4OMNJX]N,QP:71DM&-
-MC!<>:+BB-T6C;:)FXH?M)/O8U`SZ5X#(O=3D-7^HI$-WR'LL>*M44<>$63WF#"
-M]051IMAHEQ'LI>=3DSVU,BB^B1$^`I```D5J at C$%V7DHB;:(N&#Q)]:#.G0:;T
-MB!YX`G1AHNZQCQHI```<``!`!-L:>A51R>\U6\2,4G$%JUHLX@=3DC````'```
-M0`4FM"OP[[,U+Q"QH(&[+D#Z-;EO/'02MT:\(0X`4`$``%`!```"````10`!
-M3%OV``!`$0``P*@!`<"H`0(!]`'T`3@''3G[W0K_N(:1M03>L5SM#>DA("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``-(-%+X$:,?2E9.^R%J58'0.*?%.P?R*"MQ2
-MBFW*@&L.R\.T$(!X\3;8;F*N75V(7X;:.*YKM%%VT?H3XP-K`-\^?!ZPU>%1
-MA=3DP#(?^%^8/KB64(5U,F0,^Z6H5$2,?*U&<T.O\1CSS^KAZG.CD<AB0O/G<]
-M[.[I29#!B#(TQF&/*0``))[BL4]R3P--P?*S6'<T:JD2R77]EW at -P($ZMBFZ
-M;U3B*0``'```0`1GQA&/$QU7$R5%]?;W['2IQ>^P\````!P``$`%2EQ:0^H`
-ME@`,*9*!/%F>?M.X5D)T$K=3D&]TX.``P!```,`0```@```$4``0A;]P``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]DY^]T*_[B&D;4$WK%<[0WI+B`C"`````$```#L
-M(P``T)G)]TVND<UC=3DL2, at A&B87W3;I'8WVRWF7SW5E=3DLQ*T-L68Y5MIYT3#X
-M\6HPX$OPU"RV'65K&\LUZW97/S#4(DU-8_>)AT^RG;N7JZQ!R7!H1^J8/BF)
-M:^M&*TV6MOMR5BCG)I&S]./TP#WFYF#%E"IV]:2(SKJ_R>'C'KL[)J+B#[6>
-M##U`EY#S?<B6YG^FM!22WEO`L\,8A/0O"L:Q4\*-4?=3DE!"2$HF\51I5NE^[X
-MTX-,R5Z=3DCP"&<YI!.BBG:GK_(2`3%-B'1SS97W02MT;U9PX`O````+P````"
-M````10``N%OX``!`$0``P*@!`<"H`0(!]`'T`*0&B3G[W0K_N(:1M03>L5SM
-M#>DN(",@`````0```)PD``"`R/).+3>;O(M, at QDV&0N80!O8[#MI at K?%0/`+
-MI8_W6=3D?":_*MMG>_33BD!$NX^V(:1J;(V$PF.&PC<_,A5+"1R?%2Y.(^;FX/
-MM%Q?MO^!VLH\:&B('&1R9FS86^<AXURB9Q9'7F*)FRAAQ)&%B/81&+VVJ*PR
-MG/_L>4,[\G02MT8XA at X`'`$``!P!```"````10`!&%OY``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z3G[W0K_N(:1M03>L5SM#>DN("0(`````@```/PA``#@R3P,
-M=3DR)[M$C6K\7V+^R:KWD-'`UD^+3L(U6C(2R[)+93#_WP.`P1 at 6Y_GP-VK+`R
-MCQ+WAS(LPC!DQ"$)@PL*%;Q2^;3Z^@F"8>&&&J"H%,X#12BH`6+\[O;ZA;#>
-M>1_.^VF-"B:+/3Z&S0@`;TQE70`6Q at 9"6;7V0+25;$7$ZPUJ%,W["\YJCJ'/
-M.PSR^I5+=3DW<^-!6]Q^YJJYQ;0K9$C9PUT_NTBH'X)]>\Q5\.,LCD(DK>%9\?
-M0JHLI1^2%&Z(P8EUX;V_SKG%/$R`N.>DV+,OGGJU](6I!V>+!702MT:.D0X`
-M_````/P````"````10``^%OZ``!`$0``P*@!`<"H`0(!]`'T`.0&R3G[W0K_
-MN(:1M03>L5SM#>DN("0(`````P```-PA``#`;?0HD,/H[+D_"OH3N=3D$TN#&:
-M"\A.&[>;4&5_V1#W-<.+HT*U)PGU,@(:65B;.9#Z8&^:74;GON8&6(SPV1*K
-M-2)/C/NF4A#BLL\;#I)`[@"#::F.L8"/%GK]/M*`T$[86<8#0D>F5O(_"0?5
-MF4CDHB_54YGB(%;%G3_&@,2F:.)S509S]SX$\%;%2/#&=3D%#'J@`H@,WW(I1+
-M-X=3D\(#J?<U.$$1=3D&>=3D.^@$EC`RGBQS'J(HQ.^>P_&_CK$@MT$K=3D&])P.`&P`
-M``!L`````@```$4``&A;^P``0!$``,"H`0'`J`$"`?0!]`!4!CDY^]T*_[B&
-MD;4$WK%<[0WI+B`D(`````(```!,*0``,`32OW=3DM&.)[S&SDJZS4T<7ZX6@>
-M?0W9>BX2\_D5);Q/6#G7M0KYO<"3&31\=3D!*W1C^X#@!L````;`````(```!%
-M``!H6_P``$`1``#`J`$!P*@!`@'T`?0`5`8Y.?O=3D"O^XAI&U!-ZQ7.T-Z2X@
-M)"`````#````3"D``#"LT&PW0+(@A@^I<, at 3$Q)TI91\V;WA?LA:DCN,]05W
-M5?<27.,MJLIYBJTNE702MT:,T at X`/`$``#P!```"````10`!.%O]``!`$0``
-MP*@!`<"H`0(!]`'T`20'"3G[W0K_N(:1M03>L5SM#>DN("0(````!````1PA
-M``$`E:99YWUA:SVW.P_D.B/F$SFAK#G%R0DS4QGR]D?*K?#FGY!2IR051"O<
-ME=3DUT(Y-H7M](TG&ZF7HX8V=3D)HA^()RX<`BOSM6=3DTN[':XSQIX.W+`R_K`J`8
-M;RR/2N?Y,2OW*POKW56B=3DFO0Z+82>$<'`OX1*IVC(Y!_4E4399/U'=3D\;E>NX
-MA:#WTMR7D,)D21^=3DJXRJ\WOUC>\>TL_I9B4;(&(_::J["##_)N-=3D=3D#"C<;`=3D
-ME8M5[:?FW]<XUXHJ6<"EH"4UK[HZEVK]$VY/&E at T:R87#3O3N)QRJG2HTL7\
-ME^YRK6L,SP=3DK!(&K2"\\`0#-U]33]"K64:]XK30+=3D!*W1BK?#@`<`0``'`$`
-M``(```!%``$86_X``$`1``#`J`$!P*@!`@'T`?0!!`?I.?O=3D"O^XAI&U!-ZQ
-M7.T-Z2X@)`@````%````_"$``."1HS`A-OU]\F-Y^L89CL+?4Y]&$I>FYOS)
-M&_,NA*G(,4>,LFFXYR[6+O&!.N5;W'\&A+]!0I:H&HGK`K;M'#S*H1J-67G;
-MI5 at NOF0&92XUP3_N$PXHI?$+6;3++NM)`]\'_&%EXN*B(F_MUF!D1$-(>8NI
-M_2E96J,5[*GN6D=3DF'ZTJZ5((-4N9KJGS@^@LSSEL*\6X];<9'/MRC-!"CR;]
-M;:L\%^`'&5BWZW%<";N:R89=3D$LEM:5.):$N&?_CP=3DX at NP^^>@PL^RWB,7*?Q
-M^G3[Q6)S=3DZX"3)@OV%#I=3D!*W1OWN#@#L````[`````(```!%``#H6_\``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y.?O=3D"O^XAI&U!-ZQ7.T-Z2X@)"`````$````
-MS"$``+`+"C?X"#0,6&%H-CK&JON^:GW06.SU_J80\@'LR??S!-S$2T@(GZ-F
-M5XN$N4C<XPX.-#AM6_C_*EGC'R$7^&%EN8#S-S>^Q]A?BU(<%A:9)O3,N:X6
-MN=3DVGJU%OS"U!9O6P$!GSU/6?YZ,9,!U6XJY<(\!`-F+]=3DW\/`1+;.U<H/5=3D\
-MK6_]0J=3D-#KS:1,BW"#IAZ.I<VRS?N&.VS)9=3D5Q2FY?,%J^S>$>9X7Y]U=3D!*W
-M1E$1#P#L````[`````(```!%``#H7````$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M.?O=3D"O^XAI&U!-ZQ7.T-Z2X@)"`````%````S"$``+#TN0YS,926)REHKJB8
-M1=3D.?3S3+[U^FMZZTXD,-LRK9M,!&5WS%Z&1>56!EVT%8EAD>77&`A<ISLEB*
-MQF9AV].&5JWC1]`JS^)L%#22A&M^++P-SF02/<Z]X=3DIH8AP.Y8W'+.T@&FS:
-M"@D35LX6=3D9LEP,_[@]#YRL[\4%X',7R7YZNNU$RY,5A*BY7KZ=3DI$XG1.U,\]
-M.J:,UM;OI$+/?4S13V=3DY6UA<6O.AD.$*=3D!*W1@<N#P`\`0``/`$```(```!%
-M``$X7`$``$`1``#`J`$!P*@!`@'T`?0!)`<).?O=3D"O^XAI&U!-ZQ7.T-Z2X@
-M)`@````&```!'"$``0"$LH,7A>Z0;\I`F-<;>U/^VL:<Q at POQ&@7>AVQ3WPZ
-M8OX<]T&$W'Q1C!1`P0$>[\6>EBO543X*`:J*%X`)MQ(I+0R?YT)O&GJ2 at TM]
-M-@]HB*>4Q4SIB>AVYW9\U!C(LQNA5`Z39$$#J^ZHK1AQM8^06GPAB@)Y=3D3=3DO
-M?/Y1L7)<SL)A1DX\DSJU4_GC%N%,\M$#M,"#JPI+TC49]QP.APF[QE'AW]@O
-M+^$\#<;M.#B!!A47%:T:%)N-`"'F"@'_XQR_ at F%&B6%I)NEZ+3?\?-N$G*>_
-MNB,ZP4$HX?DET@]NOK]8C)H_MIP:LE[KEC<9M&":RQCZ<3E-`=3DAS<ZQT$K=3D&
-M7CD/`!P!```<`0```@```$4``1A<`@``0!$``,"H`0'`J`$"`?0!]`$$!^DY
-M^]T*_[B&D;4$WK%<[0WI+B`D"`````<```#\(0``X!7*%5WQ,L0%#UI$ZRDX
-M4(YFJ?$Z#R-'?W at JGTY2CO[F'\]T>+8LOEULKL\`L*EL4S.W?NB\TA6NW.CJ
-M9"F&+M"U7F(Y1TP/@IDK?*!LWQ[\;^MZ[D#G2DL]_#E9OJH]K>+S$L'>[AC*
-M+/9$\5R2ONA6<OQZOE'6[P(@2ZSDWHV64TD-(,+[KC&")`XZGMZ56ALN6:.3
-M>RWWG%UBK2!:(>1!EO%:H`;<9YW;[+3:7%ZH10MI%9[5K9#C?JJQ8PESY\R;
-M5_G\:F6[4A+R5,8FKE777F]"AV,JI- at HF7]U$K=3D&:@<``.P```#L`````@``
-M`$4``.A<`P``0!$``,"H`0'`J`$"`?0!]`#4!KDY^]T*_[B&D;4$WK%<[0WI
-M+B`D(`````8```#,(0``L)T)[$4NJ_E4>YT_0Z&L/S:[V46O>MYRQ>31X'?_
-MF_Z3E#$1,3_7$'?3BJ/@;\GO'APA8(BE)2&7`)F"S*4,>-WI%=3DF-SVI"FVQE
-M`*JX%0)D/Y*,SH+E*5G=3DXL-MQ0WO.MBM!<N(G=3DSE\7AQ";G.BRQO=3D&\ZM<SS
-M=3D`W9DZ<V0*!$\S+A$A^WTY?:S#A7(NEKA))):"&/_?D3X6DU\]AL:?DQ\$-/
-M^G<R^3?Z"<)U$K=3D&"RH``.P```#L`````@```$4``.A<!```0!$``,"H`0'`
-MJ`$"`?0!]`#4!KDY^]T*_[B&D;4$WK%<[0WI+B`D(`````<```#,(0``L#[_
-MX?EA0:Y&/\)DV2B<-#T2DZ$>'U]>LNLR'B^,N>=3D1X2!@))SC2$4N*-3PT>ZE
-MB.4#0)(W`N9:0`&"1UFC at 7\!,$[_PRV4\@:3N2N$^19\^\L%8CPZZUFE0W11
-M=3DHYN_.WL;Z)F=3D?Y>BT2:"MCK/$X)OO1TBQ\<',79BP6Y*E8W+:6W3<$"<G82
-MQH[??G>ZDCW:_>4?5%EB.<N'4PTX-KX>*,TU)D[WX98#P$UU$K=3D&[T\``(P!
-M``",`0```@```$4``8A<!0``0!$``,"H`0'`J`$"`?0!]`%T!UDY^]T*_[B&
-MD;4$WK%<[0WI+B`D"`````@```%L(0`!4%;:/%X#2[+%YUFU*4**M#2 at Z8)<
-MU=3DXG03$NR`*(L$'"MU07?5V,U7%S2;,'N`I:<K"`3RV)K`XI/4\QT,LMU<,C
-ME\9^HNYCSCQCQL"R!8OML2Z7CI`!$TX/#HVQ*K.::)/O`DV3[?-(I6#$#)AK
-M]F<\YJC'XWX\-:-N1O^F4V`@R)3'LEKCM4$3+!B-5)_))(\GMM;>E<N(+;0%
-MH(%D:J at O8N;L8??4=3DC5,QS2W\2771VPLC08Y@?%D<^.O7""M,18!ZJ]@E%JY
-M8[6UM(BZ4,;3C=3D:"K"W!U5CMQ88WVTVF+G2D!]$;4>C;TU5Q#"KGG]]!9B&1
-MH2P?P]E:K5Y`1]75](]K'MXV:PK_%XQ+X^&SC3L3_7W;ELZTX9EYYXZ*7M*H
-M;%>_.70Q2:]A"8PAE4- at X/%GRJB<LV!&MX0-\KB"3=3D:&K9%!G`V:65W=3D=3D1*W
-M1BV$``!<`0``7`$```(```!%``%87`8``$`1``#`J`$!P*@!`@'T`?0!1`<I
-M.?O=3D"O^XAI&U!-ZQ7.T-Z2X@)"`````(```!/"$``2"$[S4*0 at .U7]B!?,V+
-MTYNC+LWA33G/6>%P15PVSLITQOZD,:A[>6\8$#D:#9O*)NT<!`C<6#_=3DK*\*
-M]@@;.@<KH`I;61B^,5-;&F[X+KULJ#L;1U'O%L'<,P\MO[7FYI:P)#"$%^4;
-M+)EEDCMQ&`N;^213G<V[K!"J_"!+13*=3D07N5%AS4&7[+X7O7D=3DG%&"-LM. at A
-M>C5B:PPW65'UD0Y(E+9ER"+P\6A?_;6&6\0+):VHFVC07ET;D=3DL=3D<']VJRX#
-MV#.GX%,=3D8#`GQC0%YN]'*[MFD3Z9AF5[/,GYP_![[2;[A./6HG0Z#,#%ZJAX
-M[IFBW]CX:LS1G?V`'OU1V,G2?PA@#:VVA7!(',Z"(:P%*A^Q[G,?NY_].[OI
-M)742MT9)JP``?````'P````"````10``>%P'``!`$0``P*@!`<"H`0(!]`'T
-M`&0&275O]QB#F/053.$%I7!STF4N("4(`````````%PJ``!`0V:-WD!%;-@\
-M.,/_MQN8A<;/$!(/_8P*((SV;U-%*K_+'75#R4=3D2G?5 at +'AF(NDYLA:B?WY]
-MOT;&F=3D/4=3D1*W1MNV``!L````;`````(```!%``!H7`@``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y=3D6_W&(.8]!5,X06E<'/292X@)2``````````3````#!=3D)FM5
-M'@$3T9M,-$1I)/HXX07B0<2T>8)2D*RWTBB`8S67U5<[email protected]^
-MQ0``;````&P````"````10``:%P)``!`$0``P*@!`<"H`0(!]`'T`%0&.75O
-M]QB#F/053.$%I7!STF4N("4(`````0```$PJ```P\#["UYSW!?!C1PTWP2;6
-MW=3DXKR;=3D#"CBQ%;.O:3RKN'CINV`-2"R^-2I)4TAU$K=3D&G-(``&P```!L````
-M`@```$4``&A<"@``0!$``,"H`0'`J`$"`?0!]`!4!CEU;_<8 at YCT%4SA!:5P
-M<])E+B`E(`````$```!,````,`\_:MS2K?^<7?(,$3](M/L"&5VMB.!LSX^/
-M=3DM5:%OT<26EAH.Q!`V1'/OE?=3D1*W1JO.`0"8`0``F`$```(```!%``&47`L`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE/.KOU[^[Q#<``````````"$@(@@`````
-M```!>"(``'@``0!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``K;KV
-MN.75LI%Z at _O7BGP@#G?XA<%&)2[AK=3D:$MQ67WCO2WY:)V!4,1Y5U.)D7I1`^
-MB1!]EVSRZPNMKY!&989U+C0[13KGT;HIA8!"RI'7UVD&]B16;?8<>S;[&,]1
-M7+/%R604U1OVZ1>T_EI&@#16D at U*.*;A<D1:`ZDD\)YGTBLI```D2\KUG'"Y
-MR)8Q_7+7OAI>O8B9=3DS+?YGX@:8?&"I=3DQ.C$I```<``!`!(S6JI7O1Y;7^_J;
-M?0Y')^,<ZWGY````'```0`5%&YU1$],G0<LE5XV:FCJ`OZ]7?W42MT8-W@$`
-M7````%P````"````10``6%P,``!`$0``P*@!`<"H`0(!]`'T`$0&*3SJ[]>_
-MN\0W```````````I("(@`````````#P````@``!`!@````9RN=3DUJLOECS"`^
-M=3D%`L(:%#W@<F#G42MT:<[0$`N`$``+@!```"````10`!M%P-``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A3SJ[]>_N\0W```````````I("((`````````9 at A```@
-M``!`!@````9RN=3DUJLOECS"`^=3D%`L(:%#W@<F#B(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``K;KVN.75LI%Z at _O7BGP@#G?XA<%&)2[A
-MK=3D:$MQ67WCO2WY:)V!4,1Y5U.)D7I1`^B1!]EVSRZPNMKY!&989U+C0[13KG
-MT;HIA8!"RI'7UVD&]B16;?8<>S;[&,]17+/%R604U1OVZ1>T_EI&@#16D at U*
-M.*;A<D1:`ZDD\)YGTBLI```D2\KUG'"YR)8Q_7+7OAI>O8B9=3DS+?YGX@:8?&
-M"I=3DQ.C$I```<``!`!(S6JI7O1Y;7^_J;?0Y')^,<ZWGY````'```0`5%&YU1
-M$],G0<LE5XV:FCJ`OZ]7?W42MT:P$0(`4`$``%`!```"````10`!3%P.``!`
-M$0``P*@!`<"H`0(!]`'T`3@''3SJ[]>_N\0W77(1RHORL"HA("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``$#;(])3TG<J3KC#'KUXY297#$W+[;6:N*&E"_\U,-FD
-M3E;B9#A at D4MO8?ROP-LQ87VOH-:O3<N at E@9#MDZ\"/E#]4:6X$I=3D:/`S*T2(
-M&8W_LF)@Q\LX?=3DJ&%LXUXC.=3D0OEZ"%C7NZY=3D1 at XGBL%V-.%Y)3D&S6/!M0R+
-M,'K6SJ(5*0``)&IYP=3DHRA.)ARW&80*),-:)T6ZL4"=3D.`./)]"](DQ!YC*0``
-M'```0`381:)S6=3DPO_=3D40J+Y`6(!SGZ]WLP```!P``$`%ZPJ4DB-XXHUR2LB'
-M at D^=3D"DM^P]=3DU$K=3D&H4`"``P!```,`0```@```$4``0A<#P``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]D\ZN_7O[O$-UUR$<J+\K`J+B`C"`````$```#L(P``T!)_
-MG!<P44=3D72P5OK9E.!?9C3H0/GH9X,)"",+F6#_>D%K5IJO9>1CU850QS5BL\
-M;-9\-#"^GN%#!(\P4XW\^<OQ7CD&@#BS.)#",W$#ZF**+]HK&(E at F@KJ,I'+
-M=3D+WDQI)CR:BPQ`B2LJJ0O9E\.#C_:_E&GHJ;V+15B6;T*O56J#UKK'T%%S+Z
-MO%A33A"E8\0?<W&!J41!8YCX24-Z#>IP3G])O>5>_.\.B:X'!%>M*,/2A\WJ
-M66KC+]M,?=3DP"()FT.TWRE:%Z[WAHCW42MT9*60(`O````+P````"````10``
-MN%P0``!`$0``P*@!`<"H`0(!]`'T`*0&B3SJ[]>_N\0W77(1RHORL"HN(",@
-M`````0```)PD``"`G"H]>P)Q-K`9/07FUW@:8N[&[X26R9<K"ODZ&G34TP9/
-MIVI9B$_*+U(WF3A3KCHDPWT<05#1")06N58"&?%/MO1- at W"1V@*PM"ER^3ZL
-M5@\--XKO$1*9FPK*:MT"^5MAY=3D]-)VT[@9MT"XS0QO at CCF:C,^R+[8X^%<C(
-M,G42MT9Q=3DP(`'`$``!P!```"````10`!&%P1``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z3SJ[]>_N\0W77(1RHORL"HN("0(`````@```/PA``#@K[5.#)R_\:TS
-M]<^CQ,7U%UN4C8^`ME.8AR2\0JWJJP`9I2$LH<#0N4FB]5J(E5#FTBTH_[+I
-M\,F:O>(.O(N?L,:+TL:@F?"A`4\<_R_D_)(0_Q4[,3Z(R%,,<IYJYR5AA/IK
-M6(/VHQYRO(CN/VQ^`+^@MX+PBX#NK2_'H"A"U=3DX?Y%+J`.,1-UG&>6SGJ8.X
-M?+JOK8=3D;185AFRG:><0-0(A:,AK7)LLV;'&-PR8SA\82HOX!<6FYOT at 32%N=3D
-MQ4=3DV^7\"(14H;IO9N at GB)*>M9/AUQ0VXG(U</H-YZ742MT;6 at P(`_````/P`
-M```"````10``^%P2``!`$0``P*@!`<"H`0(!]`'T`.0&R3SJ[]>_N\0W77(1
-MRHORL"HN("0(`````P```-PA``#`SR<#Q63XT(16(N&Q8OI;(VJ+K9>2OSA<
-M[NL?9]HY:.- at 1*1+N3L-I$;(B?0-(15<!8LQRX5Y*V5<M:GYH`"]::R/?Z2]
-M6KJB2IYY-2LMQ,I3('^J[4"SBXAJH,\1D\'T0*2#RAV)6$#<X=3D at GVKD\D0S`
-MN8>)^>&Q_#=3D!*0 at GPC<T'U'/RJ[:#_7.MJ/$'B50XIM*1?O%LOM!F0T$D5@$
-MVH[2470/-E\SS>'<UW84)T_8_K<Y\L[D89,2L&]U$K=3D&I8X"`&P```!L````
-M`@```$4``&A<$P``0!$``,"H`0'`J`$"`?0!]`!4!CD\ZN_7O[O$-UUR$<J+
-M\K`J+B`D(`````(```!,*0``,+19[)<C at .A=3D;W!?26%.SP'R;?V*3EE?W323
-M0-]9M.F`<0'[9REKAC at FY:E=3D=3D1*W1JRJ`@!L````;`````(```!%``!H7!0`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y/.KOU[^[Q#=3D=3D<A'*B_*P*BX@)"`````#
-M````3"D``#!0A`JZ?)FK%_B$5;(G97YQ$;I>/;R,W,8BN$_.A7C0)]#B&)F(
-M$>NV6QK]/W42MT98Q0(`/`$``#P!```"````10`!.%P5``!`$0``P*@!`<"H
-M`0(!]`'T`20'"3SJ[]>_N\0W77(1RHORL"HN("0(````!````1PA``$`ZGV]
-M(CH[L)UNV175GG'9[!&1??%H)X,Q+I$HO2#HJ=3D*$>^-1#7+`4;[]#!N;BNK?
-MK;)F+_NIZR6U+5BU57E$F^FK3B4R$GG5Z[X"AT(KSC2)YF3+L^.-15!1M\1+
-MPA6#J9";C#]@7$PTI:>^U=3D(\@H^!2*/N(8`\N=3DY-G*9S/+ at 1KA'ERY\&6JWD
-M'YIA2;@=3D"PTL$*9%]F[3JK:MZ4%K'TXM4C#0O at _7C>?)I2LKUU5=3D<9^52JN8
-M3CKSA!ZR0]V^)1YSC",U.J*(CJVS>^J3*T?ER'V.A;V7O,YU?341V`'(\=3D]=3D
-M>?/J at K+D9!13O-#&"NLIC^J^S?B.`H3N=3D1*W1@/1`@`<`0``'`$```(```!%
-M``$87!8``$`1``#`J`$!P*@!`@'T`?0!!`?I/.KOU[^[Q#=3D=3D<A'*B_*P*BX@
-M)`@````%````_"$``.#9R4?+;,_7N;F\D<0L[#4%QCMI*M#DG;FU.Y&X:)F_
-MEALCX??!3E0;[UFVU+/]J!F]EWDQF3;#/?BL:K)S[0+U1\M[R1^C#B=3DEZ;E^
-M.OA\+Y/5O>F0HX&^ODIB'*O(IAPNIP%=3D84'BGXWC7Z0U"JTXU/L`&OPJ1KK]
-M7)6=3D2IQ.2Q+8-S=3D\H:X\U>79P&!_%880G@$+,]-=3D71R\;[9_J;."U,89>W^O
-M]Y#_$YV at DTDX&2F\*U"AV=3DLPLGD8F?O5I2U-[>R)$Z;*P%4F]1GQP/2OZ1'L
-M^&/_85QJ`\G!=3D1*W1IW@`@#L````[`````(```!%``#H7!<``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y/.KOU[^[Q#=3D=3D<A'*B_*P*BX@)"`````$````S"$``+`/
-MC at GQZ;_.E>=3D5H_<^LCI-28/2YPEW`M/]H[-*8=3D\9L3*>QL=3D*X1O1N#7VDF&*
-ML9,6470IF@]=3D4%(0NEMK_9E[2"K-8<##?%<S(%8>,\V:O?Q+UB?)<SKUF\M)
-M*MFBMD#9VE:&+LK9)O!*"[$PPJ0F^)_*KZ:X)"Z:I]04(<V""_<_I;5 at -X<E
-M1<%Q#<RB9_,AK3B;Y(I at FNK/O6UTFV[VU^1RGN73@`4;CI?X=3D1*W1O,"`P#L
-M````[`````(```!%``#H7!@``$`1``#`J`$!P*@!`@'T`?0`U`:Y/.KOU[^[
-MQ#=3D=3D<A'*B_*P*BX@)"`````%````S"$``+!\ZK$>S1R;26-?_H5BPY&]3-NI
-M4@>7P>I!$I#]JF(89G[(C+>0"2AWWC`YW:+\9A^CZ>)T"DGG)(&<M2[V8N3Q
-MY?3;`8E`T;^O=3DW`),^/"<9-D74Z"_G28("PZ/?FN(:$K"U^^!)1C at ZNN825Z
-MG$O&-H]FKFSO7#=3D-E^Z++0!J(P;]I"60'A7O at VC0N?X]4$8BP!5BDHY=3DN,81
-M1$!A`;*3J]34TGPI*1-)H98$=3D1*W1@@@`P`\`0``/`$```(```!%``$X7!D`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)/.KOU[^[Q#=3D=3D<A'*B_*P*BX@)`@````&
-M```!'"$``0":L=3DHXJ4'9J+1=3DV8W!:-FL at FD0M7R/`<SELFMW+/2Z4^&TKY.W
-M$PT"=3D`69>P^2-:]^:$82EO$"2S,X9P%1YZ?,TM0:E905`OKAT;*R3OYMS?W4
-M7FMIY"0+>TFRIC07 at F>Z8&2EX??%568:ME)8:'/SP'+9D$6[>O$!`7HI;:6C
-M\WH.MEJD:*A9/FO=3DE5&!D#AXGN]%V,6:8_$#-JOR`PGD:@\L*7U<P#_^2L"F
-M]!--'WL'ZG[B/AW1S]H)EBES8Q*BJT2J2ZIP"0-4UP$+Y9.<G!#"/),MII+F
-M#8!HS_3OJ0W']C3I`&F8V>/ZTI.C&0X%, at L\PEAWN7X.*+QU$K=3D&E2L#`!P!
-M```<`0```@```$4``1A<&@``0!$``,"H`0'`J`$"`?0!]`$$!^D\ZN_7O[O$
-M-UUR$<J+\K`J+B`D"`````<```#\(0``X.,]:G#_2JJNYB:+ at 4+L@/&/JCVQ
-MJ7U!%#PBIS9?%3^J=3D[<+:I59V2GM2VP#KSBSB;UI.GPN]FHZ[?0*(XT!"8I'
-MK_5X:4.X[_,6(,O7I-NM=3D0R(Y0Y1B0^!`FLG<.,FXHD\W:(U.Z=3D,X-(5FH#1
-M*(,X.?]M'//8E]:XX"02G`$Z/.PU.[U'\=3DVV>6GMRIB#/'8<5G;<8^B;!F1W
-M8[(1I14IUB92;AO11?5'KWT-=3D6A^/F>I(2KW6,@(0.<\=3DQO72#U(ZQE[4&:#
-MI%M6HU_]#SYRHMG%,[0:L6:0?X!U$K=3D&&3L#`.P```#L`````@```$4``.A<
-M&P``0!$``,"H`0'`J`$"`?0!]`#4!KD\ZN_7O[O$-UUR$<J+\K`J+B`D(```
-M``8```#,(0``L!W6O[?%Z"Y:0J%B:M?+(_/E0_(01]V&![>0E;%X<U/[MB)S
-M#K"Y3C+D8JE#:-4+I'G+B.<FFXF/Q>AFZ(&+,9;:P,56H^YC9\[Y>NK4QZ%I
-M8.?RB6&J8B=3DO at ZOZJ,+Y'4.&,C&Y?PT at M=3D#M9LD+'"';?8ZD)L^?):N0FBA=3D
-MBOH5:R2M*5J\CRV?*#XY\\5X?R1,#@N17/\\AN<V/3!U/A6R/Q#0E9LE.SJC
-M#65U$K=3D&!%X#`.P```#L`````@```$4``.A<'```0!$``,"H`0'`J`$"`?0!
-M]`#4!KD\ZN_7O[O$-UUR$<J+\K`J+B`D(`````<```#,(0``L"0EJP!S];AF
-M^T86:F.2\NL*$;-H:??NW0_II1]>>T1G-$7\;PO>G]];JW)9X7.6:8A46EQS
-M6)J(3`5BO['HK!^04:OO6<H10Q&K`2JT;%UZ4(-_9OS/6./U?>14T:J"HO2=3D
-MWKRJM$TS5F.&;OD.:M3BC'_H81MSZ'[R`JGG[ZVU5!5(MY[EO^CPBD@;YQG>
-M@>/WHR-9EX!]_N:F4Q[B/*ORV#*_4;TXI!@DD))U$K=3D&<(,#`(P!``",`0``
-M`@```$4``8A<'0``0!$``,"H`0'`J`$"`?0!]`%T!UD\ZN_7O[O$-UUR$<J+
-M\K`J+B`D"`````@```%L(0`!4,CO_'OQ2Y)F<Y6(F$'+(5+\L-RX!.RT6P#`
-M*G<<R-L'H4E72"RG:Q<N.I"K$]G<:A_A+XQ,7O at SWWZF#H\OBDR#D1$53'#B
-M'G_S7A,<P(,6];E'3\EB\[[)@_6RZ9T(>(I1AX=3D6E9D!?1384[=3D,U*<&/A*[
-M(G4"$$49OUJF".1_#//\6B55?Q&NF_%:_%Q]EP1^@**JRZ71P[U82%4L]OB"
-M48FJ]_2/N44.0=3D'(\`KM:KVYB3N1POO<J8DOFY&1:P-D6EH=3DN],`.@*].1G&
-MV#-'%M&M?A<'#ZV-5"&09"5Z1?E(77.23+\ND>>%&2FB+SZ'5"QH1TH]K"72
-MQIV(Y8`1?DQA.7X]<2H079KT0\6!V+28XJ&RP%^)5\\D>!?T]U;<3FQ&44/?
-ML0"9%Z#.K/&-:!U/M1+%X8R9WRBEGR1A\624Q0=3DER9.J(>!D=3D1*W1EVX`P!<
-M`0``7`$```(```!%``%87!X``$`1``#`J`$!P*@!`@'T`?0!1`<I/.KOU[^[
-MQ#=3D=3D<A'*B_*P*BX@)"`````(```!/"$``2`V@#AI#;U]Y#9%^B520*+ERL_B
-MUS):<%$@BD-F8C]B&E<Z5H_:B_2>'V:[N!L\O'N at 93)T#"V:*4TC"Y(/`IC3
-MP"$8I/LRYGMXX`2QRNK9T<Y([P<ZXQV".?N.2.AR2R'W[FN_!FQ:P^E5$]:^
-M%WP"IXP'9#-<U`Q]5^S at W5D@_]VPJ$[K+WZ/^M<P.3D\=3DE2BW!/[<MI.KV*T
-M8S-T;,P(F>4Q4;6IU%U#JV*&I.F+5'"RNOC$#!!.;YAM"W__$EP]@]/+3*(I
-M35V*Y292N$Q\10<,\+E[2BTA1;P*QE3;^',K$"D'3.:ABW\_58AFL<]^9)N$
-M0Q-KV"T.1;:1$<GGM4"QN#YG[`GW**XF+M*H,F2<!-F[<\,?T#<-;742MT9$
-MY0,`?````'P````"````10``>%P?``!`$0``P*@!`<"H`0(!]`'T`&0&23=3DG
-MJ`.Y<IUI>*JUDC(1J4,N("4(`````````%PJ``!`F9WJ.QCQ.*JRU^0K%,)-
-MOPK$HJ\:3-_1;%QL?%O3-14S=3D];13#7Q>MH3^,!U1NI_0X@?YAI1"\CI5B/#
-M=3D1*W1 at CQ`P!L````;`````(```!%``!H7"```$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y-V>H`[ERG6EXJK62,A&I0RX@)2``````````3````#!";)@[_872BH%_
-M*<6%X9BTA$[L-2R-,]RP?:HK.,J-;,4K02IW7HR"?\;17'42MT:+_P,`;```
-M`&P````"````10``:%PA``!`$0``P*@!`<"H`0(!]`'T`%0&.3=3DGJ`.Y<IUI
-M>*JUDC(1J4,N("4(`````0```$PJ```P?81=3D5&AD8;2)`"[#E1<ZQ1X at V85"
-M,+^H(Z6IGA!'O$DWRP,NN1JP^^WPV81U$K=3D&[@P$`&P```!L`````@```$4`
-M`&A<(@``0!$``,"H`0'`J`$"`?0!]`!4!CDW9Z@#N7*=3D:7BJM9(R$:E#+B`E
-M(`````$```!,````,`8L>4WCH;Z"SVETNR8@<EP#9V.GMLO4<<3H+I-^$3I4
-M$*'3%877W6?V903Z=3D1*W1N4%!0"8`0``F`$```(```!%``&47",``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE5E7M]H0OAJ```````````"$@(@@````````!>"(`
-M`'@``@!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``\3K4+<C]B`F?
-M2><V$ET!C',M[K&F/+CG4+P^WRCECKMP]W*=3D;#0167#0X5["<XDK*.)7Y_R=3D
-M5=3D"O%T]0I2?$@0JBPI;,Q<YN6T6"L2*)$).XY6>MZHHCGD*S<E3_.8('YTEF
-M>LLX#V<EU:%J937;:$X4Z;6)O/M!/A^DN$`1=3D2TI```D2FOKVCH+"9`:1J_C
-M\-314$4-@=3DT'/$TO04T.TMGO-KXI```<``!`!&"X at NS!-CA at FN)"0=3DG5D`Y<
-M,S<`````'```0`4`K`0,H3MR'Q<"530O7\)R:9+Q1742MT:@%`4`7````%P`
-M```"````10``6%PD``!`$0``P*@!`<"H`0(!]`'T`$0&*595[?:$+X:@````
-M```````I("(@`````````#P````@``!`!@````9P<O8%'9?O+C@%%[0##`QO
-MJ)Q1Z'42MT9O)`4`N`$``+@!```"````10`!M%PE``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A595[?:$+X:@```````````I("((`````````9 at A```@``!`!@``
-M``9P<O8%'9?O+C@%%[0##`QOJ)Q1Z"(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``\3K4+<C]B`F?2><V$ET!C',M[K&F/+CG4+P^WRCE
-MCKMP]W*=3D;#0167#0X5["<XDK*.)7Y_R=3D5=3D"O%T]0I2?$@0JBPI;,Q<YN6T6"
-ML2*)$).XY6>MZHHCGD*S<E3_.8('YTEF>LLX#V<EU:%J937;:$X4Z;6)O/M!
-M/A^DN$`1=3D2TI```D2FOKVCH+"9`:1J_C\-314$4-@=3DT'/$TO04T.TMGO-KXI
-M```<``!`!&"X at NS!-CA at FN)"0=3DG5D`Y<,S<`````'```0`4`K`0,H3MR'Q<"
-M530O7\)R:9+Q1742MT;L2`4`4`$``%`!```"````10`!3%PF``!`$0``P*@!
-M`<"H`0(!]`'T`3@''595[?:$+X:@*R-1W6N4AT(A("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``#'A=3DALA?.?O`D/'*^>WCL^(F7;N"AX0^U%QNU\M5O`AEE0H&X$!
-MF`P at 01G<\B>'E:=3D0$1U,0[Z79\&_H9!UN*W#Y"GITVKXZ</B+"[K-R-0:Z0$
-M=3DTX,_;P_?F"#"U8(F<)"#.^)ADN]ZQ9%(]_!I1F,K`V*AS")JK6RIA/6WN+E
-M*0``).'23AU<&),9DPT\,/0H'-0Y2+YO1"=3D>R+P)^(!%\AJ<*0``'```0`2@
-M)YBG?H,3D"XYGDC`'UX+*G[420```!P``$`%1ZZ-;0$_<!'%?$3S._:00 at 6&
-M-WYU$K=3D&O'8%``P!```,`0```@```$4``0A<)P``0!$``,"H`0'`J`$"`?0!
-M]`#T!]E65>WVA"^&H"LC4=3DUKE(=3D"+B`C"`````$```#L(P``T'"+XWC;_7E)
-M7B2@/$Z7U<.Y0$54Z05D25B:-:`\)KG*T"T&'"%FU7'YYK[6*8,9O,?FP3[^
-M:KY)MVV0N!F6&WL,S+!QF"ED[)#U2:ZP0C\"5%UR;@,(_R"AV)3#`*L-('6+
-MM$\]<G(X2'=3DUHWMLY$N0]\WHCN-'0PKB8:U^Y<2ABK2CQS^W-^FQ;A`,(B3/
-M4J4)6\Y)QL73/-0?TV'D9H\L!^73ZAD\`K1+R+!?IJLO!Z!V]@*";2+(VQE+
-M++R&B1^MB"2[;DPXA#;.$W42MT9CCP4`O````+P````"````10``N%PH``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B595[?:$+X:@*R-1W6N4AT(N(",@`````0``
-M`)PD``"`.>#3)"!<&IUVK]WKYY-LD'+Z>NXA-G<+OY$"M!2H/M:_5%$T#B5S
-MC9[<)%_C$.0\[VB_SDHPK7+/03HY$CK%&H*@4:I8W`_6--NTL]'^U<>>'YE9
-MW5M9O^]R^6[_DEYY#H3"8OO2$.BZU\=3D9)8YK]R;;WRB]7O?[91-(;W42MT8Z
-MK at 4`'`$``!P!```"````10`!&%PI``!`$0``P*@!`<"H`0(!]`'T`00'Z595
-M[?:$+X:@*R-1W6N4AT(N("0(`````@```/PA``#@X%C&X^[WSH5<4FIK7)5W
-MLW\\T&!XG.`'T&D\Q_M<UT+F?`@@TG/L>7(L-;EJ3.#S1V0,:WV9=3DRHR$X/^
-MI$>;T5Y(Z(>%#>92D4PST4R]Z"6 at I^QCB;WOA85.B5_UOV#.'SJ37`ODYQX;
-M0R`1B?0+,O(Z]+0K;=3DV%Y+;8/]H<3S%U+^/EC?8[=3DE1QP]S[\&NU2,E84RZ0
-M](\+(@/OX[J-=3D!?&^N-/_UWP,CDRBLDZ##Y>>?/OW+CIC_\"0?7`%E%A#/P4
-M41?Q)?8FF>V&!3C\IT7',S]2J+5VQI4 at X742MT9[N04`_````/P````"````
-M10``^%PJ``!`$0``P*@!`<"H`0(!]`'T`.0&R595[?:$+X:@*R-1W6N4AT(N
-M("0(`````P```-PA``#`?CDIY^^)"&.,2WY(X$%=3DR)L>DZO%K($3./=3DGB4/J
-M3X;SDMBFO)3.(!L^I^9*_ST70/RS0%'/C'TT]P0G/NM]V-Q0Q[L:!&3%N\_]
-MGL+V/H8MZ6?Z>E%G,\\F(JLD,T`:VX5'6,"E(MG=3DNQPZQZ/_M\EE2>/>T9S+
-M6B`ZCKQ`EQELZ%$UJ[CY(7>7R37.*)FI0XOWL0EY:0^M.ZL_^+[0Y3V=3D)B0C
-M!G0"9,2PC;Q6[[>KO??(XGXP at D&]25IU$K=3D&.L0%`&P```!L`````@```$4`
-M`&A<*P``0!$``,"H`0'`J`$"`?0!]`!4!CE65>WVA"^&H"LC4=3DUKE(=3D"+B`D
-M(`````(```!,*0``,!$H\?:^`YIG\+$7=3D(V\>,,-G0$L"+D#W5=3D6 at Y9"H;)E
-M7+-/.-+(@^(-PES:=3D1*W1B/5!0!L````;`````(```!%``!H7"P``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y5E7M]H0OAJ`K(U'=3D:Y2'0BX@)"`````#````3"D`
-M`##CP>"DCW,,0LWET%@%!<MB(6O/AQ8"`"@]@BG.QS>\>2<X;6Q.I%$(>)/3
-MFG42MT:/^P4`/`$``#P!```"````10`!.%PM``!`$0``P*@!`<"H`0(!]`'T
-M`20'"595[?:$+X:@*R-1W6N4AT(N("0(````!````1PA``$`;^Y8%<R+_T9,
-M:;Q7_R=3D8=3DW:.LS)K_ at 9?B-]PRPP'T=3DLT'C!)5^!"GSY)%Y>(!K at .NLQE2^6,
-MADL=3DPNUZ^E;>@9DH(KKSVDW#*IZ4U/)I8"):NC at F.V$\+G;603I8C'5L%*3[
-M`(:P3=3D[<U_Z.!SK3\Y82WJVL&YBP9=3D:YTU=3DX+5(#:>!693DR=3D1Y[DW)Z3AG$
-M2;1??UR!-%`DN8=3D7<LH1C;6\.>B%%Q!*A#O7>L(U[GC`=3DH%*L',Z8$5M$C'^
-M0'*VPC"X1CYNKVF&7('9.MF@"4+P-M,>-HJV<=3DO83`9H(5812H%2AY=3D))@4=3D
-M^CIW'UOST9&W'4]G/&1-'M_B=3D1*W1G,+!@`<`0``'`$```(```!%``$87"X`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?I5E7M]H0OAJ`K(U'=3D:Y2'0BX@)`@````%
-M````_"$``."E$QGM;=3DG-\N-R7ROYE%)6;>7:K8=3D1Z5SCH=3DI4L'&\A[`R,K&?
-M"\Y'ZO%;XFJ%<@42R9&^^NF!;H=3DC*(?O69)F1%>^F<[^!0O=3D+C17/BJ%RFB.
-MD_,_/AA;$*<1`8!'YW*K$9'Z3=3DJ1\+,2FC:;1$CLOO:^1`>3U at -Y!14N".%A
-M/T68X*"H[6^*UR7Z()O7'P4L-Z+?@*KT0`4M_GS"=3D#/=3D!`$\"+"V[-O5P^Q(
-MAQ3KI&WE^?[SBI3\65$X:T2J$UO5TZ.UAMMC8SVF&E`P(W.^6;+N-V/\P$4]
-M`I`)=3D1*W1NX6!@#L````[`````(```!%``#H7"\``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y5E7M]H0OAJ`K(U'=3D:Y2'0BX@)"`````$````S"$``+!Y,"Z]/9HV
-M@#]"I0(!)'6@@^;?V-5*(M58 at 5'B"\SQ5BH"2?ZM<E%@^@R48JLT,@/@[,5O
-MPZ6&M*G7(I,]NF%&$$#!&=3DF4L.:9U8(0:*M/CD>C.<SZB3?J5TX-L5LA[HHZ
-M3@"RN,L9)O2':"=3D912D4UXTB<TZV!K2 at M+$)L1[^$?PP)LE9#+O,CSJ3T'4.
-MXE?'E,X"&U,/5HV!ZR\X<XY_'E-N-&MZFQO[D%IQ=3D1*W1M$X!@#L````[```
-M``(```!%``#H7#```$`1``#`J`$!P*@!`@'T`?0`U`:Y5E7M]H0OAJ`K(U'=3D
-M:Y2'0BX@)"`````%````S"$``+"%!ET^^B:WV7A3YMFJRE"PNC=3D+3_\#FTP.
-MXAW4ZRK".]L(<W<?AY).($HGU<K;@AIB1V)F6[TA-R07GR#[$'HS9"!;0:TG
-M8'P-!+ at _?E;0-G-R`W?V:<)*`02_>])Y%W6JKWI;-D[?_0YZII[HW@(0>@AV
-MW9)9#4+_.LU?0X.:[K`:MA.-\M95)%W6-1X^,2B@&\>._DD3UR_Z!?-%EL+&
-MRYA?S./_C%@_H$!%=3D1*W1JE5!@`\`0``/`$```(```!%``$X7#$``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)5E7M]H0OAJ`K(U'=3D:Y2'0BX@)`@````&```!'"$`
-M`0#T::$EAQ`+=3D-8IC]>.X+3T(>5)WDU\JK22PUY[LGFXQ`M1`3!=3D?]:=3D':-B
-ML^5<_ at +LY:Q%- at VGYINC#!D#'*-N"E*`87^43,,ZY!?BV:J!1C7*OZ5`7F0<
-MRK!0C1DT4+!J`M9VH-:?#AS/W4DD:+6+WT/_._*>=3D7=3DCI;]+1.WXFV=3DFJ'N3
-M'+%PFM*JP+MG!D']TM*G)+ at 2&Q_7F-43B<04'ZCMF'?;.=3DSI>,(,&%G%[M"M
-M5L6GMON)P8=3D#$!/$U6:6\7GU3(><C\9J;A1H^I]D^GOH6MRB&Q](WN`2]W]V
-MY=3DUMEOTT5D];N[X9B!BL+/E!2.C6%<3V0V&>HO9U$K=3D&8F(&`!P!```<`0``
-M`@```$4``1A<,@``0!$``,"H`0'`J`$"`?0!]`$$!^E65>WVA"^&H"LC4=3DUK
-ME(=3D"+B`D"`````<```#\(0``X"Y9N@!HV__<\5\SP3I)HA at A,#6K&@]SJDN#
-M1()_U5PIR_;T,D#X.>Y,VUP*S"5T1R\YE.)`W34*VGDAN"^$?>TPEIP]*QAV
-M)UNVJ=3D*,J at VCO(3C_YPL6!5!GK,6E[D6*!<BA^E$0,//.25&U&``6YWFNXC$
-M%-#.K^U9?Y5<>M$`4^1_7[^?M-A'8V&M=3DU41JZZH7R>DA8XVDJ!L,N>&]SF`
-MW-KI at 8[S=3D4H=3DZ",HPWK^LN^<^390,F!HA]EF$!(O0SV4?ANPX9,M at BXF+ERI
-MD0IV"(\WRL"P!?U!@IAU$K=3D&EW$&`.P```#L`````@```$4``.A<,P``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KE65>WVA"^&H"LC4=3DUKE(=3D"+B`D(`````8```#,
-M(0``L!R37A_B,_A76YC&,50C26'BY^R20`GA:^H^L#P'+%"Q'_?'YB\>XI&D
-MT_]H\`2P2SVKBB$A^`3;;\#)1 at T_I7@LWWQ]H5TK`'"_+^W'2$4VJWYH#?,Y
-M3N);^:1R#[H_%#RCLM^O^OO=3D0/W#R&-A2*WHY6#&[?BVD7*$,XRFQFB<7]=3DD
-M>4M#,(8,+\72K\X4I6DQX!O$TM=3D9MIU09\!\489R0SC)$H:3>S3,)[9U$K=3D&
-M490&`.P```#L`````@```$4``.A<-```0!$``,"H`0'`J`$"`?0!]`#4!KE6
-M5>WVA"^&H"LC4=3DUKE(=3D"+B`D(`````<```#,(0``L&3X!V#O*"BT]'SY3W8]
-MWT*-D'KU-8+W_N$4_-ENWD%Q"K"O5>)"71RU8UDMAO0Y_X7$<!U4*,.CCK-L
-M!BS*?FF.[SS/;,Z%N7;;9'J-25;67O671FJ:#-[JB]!'F/*Y;_;B]?,#1C at W
-M+:P82WZM1SB2RH(%#\)-H4(=3D_")T:*5GN(`"J$H(#F-NDG,VF8[SL&(PK&E,
-M8G;UB4?=3DG%-V?<"H-*DO(M'!6]F0F2=3DU$K=3D&*KL&`(P!``",`0```@```$4`
-M`8A<-0``0!$``,"H`0'`J`$"`?0!]`%T!UE65>WVA"^&H"LC4=3DUKE(=3D"+B`D
-M"`````@```%L(0`!4)F,=3D?9@$G</<3!.>0P8R0%/1DD^]>LBW.S3Q?BH'KDY
-M;R?U8#<]97I-D/[QGRVS.-;2H at 3RH^(TR'@<DOB9"SO(.=3D;Y+:]F4GDUB.,-
-M<<M1[AGQ[X%)X#J+VI.?C6`O7#O6,?_,X(9Q$3R;.DO#(,L`K%2?*!$A6B6U
-MJ$EW at Y5W1UH\.HB-O<)I?*E)'#E#-8QVH(=3DY[^E'N9I8]I55$+Z@(DE&+"I:
-M"0ERV7-)GYK2D(SQL at I+Z=3D9V40$*%>$LV<VA'B16-KTHSA+2@!#0_ at 7>.HJ$
-MD;B#`#I&M#SH:_A&J[?H#^=3DGP/I&QQ>$3P%=3DO_L&^=3D^=3D7]^'^ME[HP2[. at UH
-M&E-3'B+Q=3DR5<7Q)152EHJY)<'S<DJLC<Q0TA>\V/$!!_44M_<J:LI_LKC^SI
-MP1F?TEW";ZVK_@!'>ARG1HV(?]U)8+W?_FH&IG*O=3D1*W1@;Q!@!<`0``7`$`
-M``(```!%``%87#8``$`1``#`J`$!P*@!`@'T`?0!1`<I5E7M]H0OAJ`K(U'=3D
-M:Y2'0BX@)"`````(```!/"$``2#JD83P5#?R4[E8,OJ&F;UDZ(5]_G?WQY`'
-MK3SIQ/?6*;W0$S*]8Z$W'.F">(\4F_V-D(4K(7I)QVTVI3?`C:TC,0:).[:R
-M at FZ4^;O#0PEGUMI2(MWA<N=3D45?U*3LGKP:UKL]&+-[[.M5@*.O$]17R9R6T>
-MFI3J(H(Y0!Q6]&1800T)&919\]`D+(";8R].@)VTEOAIF*CE=3D#VTKV!=3D=3DW$D
-M4+/A^48I4V=3D+VRF6[_3%-J!Q$LD9(9K-TMJ8IEI81/@L[XM$O;ZIB#%=3D>W<X
-MT40+RI:\S%O1.6JL-G)(3SGQU5B8T'W$G2)MFC6A:,KVZVSR\HV//8>B:FRK
-M*<5/JL[L&XBK*"ZFDO):FV%?5",8!>KY,VJJ(_5-M)TUTW42MT8&&`<`?```
-M`'P````"````10``>%PW``!`$0``P*@!`<"H`0(!]`'T`&0&26LSUH at PW+T!
-MA/BD?"_$:NXN("4(`````````%PJ``!`\CNQ`))2(QH*IT)'>5@!+LVO>M9"
-M"T`^#1*NR:YPBBPE'ZUDS)0XOGV6&DD2)0O6K8Z$25`,A^[!3BV\=3D1*W1K at D
-M!P!L````;`````(```!%``!H7#@``$`1``#`J`$!P*@!`@'T`?0`5`8Y:S/6
-MB##<O0&$^*1\+\1J[BX@)2``````````3````#"H;C3*YLQ=3D,5?,,%'62I.^
-MN0E`>1*B<`=3DLU78C%%P7D^;V2HE,:E]9K8Y\9'42MT8_,P<`;````&P````"
-M````10``:%PY``!`$0``P*@!`<"H`0(!]`'T`%0&.6LSUH at PW+T!A/BD?"_$
-M:NXN("4(`````0```$PJ```P&EA>$$"F,+C2J^44TK)07;V`0%DJS2K$7L(9
-MWZ?_UU%73 at MKK&OJJQ/Q at WQU$K=3D&_T`'`&P```!L`````@```$4``&A<.@``
-M0!$``,"H`0'`J`$"`?0!]`!4!CEK,]:(,-R]`83XI'POQ&KN+B`E(`````$`
-M``!,````,-X!U<"9:ZO^B+R/&3*G\8GQIB`^:0T<LS-6\*'"4I$37;629NB'
-M at 8YQB-.\=3D1*W1CL]"`"8`0``F`$```(```!%``&47#L``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE^`,56OZA?+,``````````"$@(@@````````!>"(``'@``P!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``\_+?PSXK/;/(+;;1]+`^
-M)%T)LMS[V?(,'?`9RF@"(=3D+@&@Z^R6$'R;!U55<LO&(RH1AZX[V2892Q717U
-M28 at .'Y5:L`_RY`:##P.ZJZ[O5\\0 at AO&LL:F3RW#-V<1+#';<@2T3JKKJ'VU
-MJO3=3DWJX&.EW]XF/542CN@?R-G:$J5CLI```D:(UE:BGX$GDN>K-&C\'V?Z#8
-M<5:VL"9=3DQ[R9`8.*J_$I```<``!`!,!9M=3D`1"P$'17V[/0@!D$.!N9$5````
-M'```0`4HY*K#;N3HJ!WCJ5:XPMPB"8VQ^742MT9G3`@`7````%P````"````
-M10``6%P\``!`$0``P*@!`<"H`0(!]`'T`$0&*?@#%5K^H7RS```````````I
-M("(@`````````#P````@``!`!@````:PE5EC at B$AJ+WPN";]WB;?^+*7;'42
-MMT8H7`@`N`$``+@!```"````10`!M%P]``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA?@#%5K^H7RS```````````I("((`````````9 at A```@``!`!@````:PE5EC
-M at B$AJ+WPN";]WB;?^+*7;"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``\_+?PSXK/;/(+;;1]+`^)%T)LMS[V?(,'?`9RF@"(=3D+@&@Z^
-MR6$'R;!U55<LO&(RH1AZX[V2892Q717U28 at .'Y5:L`_RY`:##P.ZJZ[O5\\0
-M at AO&LL:F3RW#-V<1+#';<@2T3JKKJ'VUJO3=3DWJX&.EW]XF/542CN@?R-G:$J
-M5CLI```D:(UE:BGX$GDN>K-&C\'V?Z#8<5:VL"9=3DQ[R9`8.*J_$I```<``!`
-M!,!9M=3D`1"P$'17V[/0@!D$.!N9$5````'```0`4HY*K#;N3HJ!WCJ5:XPMPB
-M"8VQ^742MT;X@`@`4`$``%`!```"````10`!3%P^``!`$0``P*@!`<"H`0(!
-M]`'T`3@''?@#%5K^H7RS^?P>9ON(-#LA("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`,72W=3D.'XC8^,)(XQ*MFDLE?&[E-1`7C>1R!4<^Q at 9G"`VL4F:'<(VG@%QW.
-MP'O\%A>;.%/78KBHW#^3-&A at B676_`QOVF@=3DMXPSD[#BD>@0XC"Q_9RLM8*8
-MRL3>PITE+R\"QLLBX_%M][,D)O,:?%P<,'AY_=3DVL5S2DZ)Y/[T""*0``)-=3D^
-M]D2TA45B5)P<LO*"@5.(7J^27Q%.3>3H[;P)4:].*0``'```0`31.BRD>.VD
-M#<VBC!0Y*._KV8<)IP```!P``$`%HG9!(:)9:DT:L/*,TLP. at Y<ZJ)IU$K=3D&
-MZJT(``P!```,`0```@```$4``0A</P``0!$``,"H`0'`J`$"`?0!]`#T!]GX
-M`Q5:_J%\L_G\'F;[B#0[+B`C"`````$```#L(P``T`M*BIZV`MZZ<N*D<\^7
-MCO(0/*,.T5;Q at R(2Y:(=3D)2KZ"*UJBIQL__$CS^+0%,S4B7)(\VC1_$_P)L??
-MN>V$HO?#<\V&"A"UKA=3DW2N3H](;N*2_H??'>-WU%"X215H-+J)TWJV4/];O7
-MO--`0XEAMDSFVH(]OPQSIW-[RSD\E"U<,;`<;;'^7V[(DXF=3DRY:NEH]6'EU3
-MT6_8N:+05_*;S!93B[&Z;]R`"I:04RD\L*ZP#R=3D.E45^(G3:V'0?`T:0"1:$
-M!-;$B+Z;]3403742MT;;Q@@`O````+P````"````10``N%Q```!`$0``P*@!
-M`<"H`0(!]`'T`*0&B?@#%5K^H7RS^?P>9ON(-#LN(",@`````0```)PD``"`
-M?5BXP<2Z<(TY/_HW$:5=3DM0FN+Z^#P+[1@@:;%KHF-2S#W</1JYW'#*?1/R`6
-MJP#H5C6)(K*#WC&\I9<)+5]`:/7UV&(!D_DZ2:"7E[O61T<>0[=3D&_UN0$)%N
-M<52*Q"W$+\':;SAPM!V0N-H9NU]B-C16O_DKZ#56JC#7EW42MT9,Y@@`'`$`
-M`!P!```"````10`!&%Q!``!`$0``P*@!`<"H`0(!]`'T`00'Z?@#%5K^H7RS
-M^?P>9ON(-#LN("0(`````@```/PA``#@9KS%8GSDJ&QBN<OV?.Q!:LX,+IZ/
-M6O>YO(YATU_JDY82,'M52,O+)"`12GYDKL[-RK7,@&`R!=3DKS53R&UV6;31>>
-M46*QZ&VHJ2\V*^;,'PYRG@<<`OQ%`N82N$\(:1`")1K6)-9UB^&S1(7+Q<TM
-MFJEVVH`[AFL!/3[8P`>,5SUC:---,C/E7F/E`=3D/6NZ[;5"2<-]TE#38^0,(,
-M565%]5A`P#G at .`;%JV!K*B-I5$!&92H7S%@?SL20V\RN-0N)ONK(DQ5<*^B%
-M+<>GT4N#X3).*1B^IA-%T<F^3742MT8F\0@`_````/P````"````10``^%Q"
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R?@#%5K^H7RS^?P>9ON(-#LN("0(````
-M`P```-PA``#`<"<H at XNR(\.;\LO'<Q7K.R<E^7?43S^=3DO(,L"+]GN]_#^[KR
-M1\;$,F1KI)Q3RNL.T.)0Q=3DLY5K*2AAY^K[4@(<^3=3DS7</-?2+.5FQQ9BMX[D
-M8IZY$#``_B\/(4#"SO1&&_=3D`BS2(&//^E2B>A4ZFC456FN)8]8OYGC;U<7<8
-M,"B"%XEGIJ^@'[>\8L'2I+CSI&EX$^Q!GBTZS*X"J?9G_>]VC/U[6+ENB0D8
-M3/3M_<2]L,-EC)T?HB!_/MYU$K=3D&)/P(`&P```!L`````@```$4``&A<0P``
-M0!$``,"H`0'`J`$"`?0!]`!4!CGX`Q5:_J%\L_G\'F;[B#0[+B`D(`````(`
-M``!,*0``,!-E40'[R$Z29\.L2&'80!M6>44A$LL. at S$V\M9-5R+XC7;ZQ?O!
-MA1LQ+QV-=3D1*W1F,7"0!L````;`````(```!%``!H7$0``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y^`,56OZA?+/Y_!YF^X at T.RX@)"`````#````3"D``##2`'[<
-M:^!=3D67<;AX^=3D#I'U7_A9&N5+B(8//VF2@&.LL-+F=3D_W at K/VH:$^-*W42MT81
-M, at D`/`$``#P!```"````10`!.%Q%``!`$0``P*@!`<"H`0(!]`'T`20'"?@#
-M%5K^H7RS^?P>9ON(-#LN("0(````!````1PA``$`)KUYI3G1<G4*[HOIN_`M
-MUNN2,A2[O;RI7!+=3D2\UI<><LPJO[@R7.MK<O:FS/R*S0+(P+J<G/\KN9 at G,*
-MIH'G at 1:>L*XP?E9>V^7\\W(`V#=3D+8*&D3J9FRE].%2$$OG8`C#!PI)*7D/K?
-M(H:HP"$PZY0_*]0"90#S-<>2#\>`2K&1K$;0&N\W]ZE[350@=3DZLOYAX$C16#
-M^"KMDW1P1!J;<.+/';H`]\\->8;$J);%YO0W2R-]I=3D?-F3N!>1`%E6FJP?VA
-M.EE[;!E\X#2:@HHVRD8'].5,?X</A&H&3=3DI(@&EPC#5V?=3D_CHQ!4VF0&HHJ9
-MC@$R:PY)FGG&G$B]=3D1*W1LX]"0`<`0``'`$```(```!%``$87$8``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I^`,56OZA?+/Y_!YF^X at T.RX@)`@````%````_"$`
-M`."P#+PX:X5E'L,\E&C?ZBFO0GO>7D,H-!(@WQO#UINNCSE%/BG7>'SNDZ)-
-MH_^@N,`F+IUY\I"30=3D63K]&+&)1/&_(L/:ZUJ0[V#D7G^[V'6U5210P#[\E=3D
-M0PFQ2<J]'#!63]SV*\--6'-XI>ESC[/$ZP13UP1:QT3%8MMO:K:#J?7>-<^Y
-MI1>>R8/R"/UG%(W7'R@"4C;9]]]H)W<'JU-;`965T!7&0^A8`:`*@/&[L[TT
-MN!?*_Z]_>Q,P_W8[M4.;U^+DPOL6$S=3D9BDOK&;Z'B38U4YK7_.3M:&Y7=3D1*W
-M1EI."0#L````[`````(```!%``#H7$<``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M^`,56OZA?+/Y_!YF^X at T.RX@)"`````$````S"$``+`E'0KG%5B3P"]0YLHP
-ME[1.Z4.`CF)3/N-^E,83YG0O4.8IO<?6('B"#)Q=3DFJ^9#2VWH.2H7E!V)`#+
-M^DDZ>MWJ+-%M4^^5`9AK4(-N48(9_/>KT]E:[IUE]"+.G,AZ/7 at 8V/J,Y8WT
-MY*U,<663R*"\_]\J]BG<S<'!Z%H;64QV`"S8888'!R,0[0$!SS69HG28N*9J
-MFKJI^!TW$9P.%]BW;9?586$S92?;J$0K=3D1*W1@]Q"0#L````[`````(```!%
-M``#H7$@``$`1``#`J`$!P*@!`@'T`?0`U`:Y^`,56OZA?+/Y_!YF^X at T.RX@
-M)"`````%````S"$``+`^P>L-.`J,/M19I_+?FK])"M(:2AOQ3V+ZQ(Z>#`CS
-M+<(6>)`<4A.''M?I$4CD3#^(B(,^2;Y%/I1BWXRX7>_XZ6#,)!OK)-]*=3D^YV
-M%Q63V?_*:LF:F>G&DD&=3D,*A.K"AKP0 at TR.7E9;]5<7P)=3DAT+2_F/9'.#DGN,
-MGQQT%W(]^ZCYWO?"1&S5<S*T!AE$G-KVST%)-H=3D6X[6^F]W7)`-8B8 at Z/.'5
-M-;-:"$ID=3D1*W1G.."0`\`0``/`$```(```!%``$X7$D``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)^`,56OZA?+/Y_!YF^X at T.RX@)`@````&```!'"$``0!,O?SP
-MUDVZPE\EVO0YBOV8,Q*U>HPIP1"ZW<#$H5F68FU?C^5O%W1(J%*1 at W5FR;:3
-M:62Z^R3T+\NH!'7X6>YH3O:2SQ9%2^W.RZ4FS/!I=3DMXTM^0_N92LV,MV/WC1
-M/11DH\[JF9E$680'Q43K&/73?P$?97^?'E\ONQ\#%C^0LA;O]H`\F3QL*X?Y
-M53_BD3:]#5Q\-_2%@G<XJD/\:K0Z:#>T41PS[X%.AKU!?'RIUH3A3^)+A):,
-M&[U2HF)+^(F)N#`^-\SEZD"L2QKV_E*8(7+5VS at H^>L.>8Q0$(J@\`8):'H6
-MG.BEEWXP%M3MD"O=3D[=3D>F%9U&.."A.;QU$K=3D&6YH)`!P!```<`0```@```$4`
-M`1A<2@``0!$``,"H`0'`J`$"`?0!]`$$!^GX`Q5:_J%\L_G\'F;[B#0[+B`D
-M"`````<```#\(0``X/@(UM2`RU=3D+$Z(!WU^$9U1)-5 at G3=3DF+7_1,GI, at S/-F
-M[N1#DFVF#. at 9HWMBE'V+/W,G8>)I+5AHHT0B!A9]O45W#V at A>FG?3C!X*(K`
-M?L_W/E(G\Z2X]SY1)/[]%SV1;6L%P%AYBIWW[]W1%EHY.]Q2F154+;\0AUZ'
-M=3DN"?V)@<8+ZFNE,&G\F#P0&*X,@@U4,TXA0:&R[LF)V:DR:"K\\CKB%JU#5<
-MWER$.:Y at 4O!-=3D"Z1'HE,"YL'H$W9NWH,4KM"B,*_\ITB:U2(AJ.4?=3DP=3D>K;O
-M#@41&<,:@B=3DU$K=3D&+ZH)`.P```#L`````@```$4``.A<2P``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KGX`Q5:_J%\L_G\'F;[B#0[+B`D(`````8```#,(0``L*\A
-MHOL_Z7N+RY(/LU"\WI.30,R63=3D;\*Z.B7UH at 6-<&PYHXWTV!Y'>O%X8T.(SJ
-MX70Y_UFLGH(#[@KT=3D931BR%T)P\$`4ZOF=3D/[H0U;$^AO%'*VJNO8.[,(7-N2
-M9_<<]]&I2KJF\#GU37[(2XYQ^M(W*7DPM-1D:A9'].OMQ"HY2;X$L,Q[&J2K
-M;B[IMO%C\VH_<)#K>'LWAE?+$U[BI8_5+*)Q0<U.O@]-%ZEU$K=3D&>LP)`.P`
-M``#L`````@```$4``.A<3```0!$``,"H`0'`J`$"`?0!]`#4!KGX`Q5:_J%\
-ML_G\'F;[B#0[+B`D(`````<```#,(0``L'EKF17GF"!ZE3%)V^_'SDI:WC*N
-M](G, at 9)ZNHW3'IA;A6(I4$O+ZN)7$%?!R;6B-SRR\%60%3L?E)YG<YW#^YDF
-M_VNO at 1S<7QB4!X[%AJ'*ML+5Z_&0%&!K%JA6KC.T`=3D#*=3D!2<E1\SV1=3D?A&0Y
-MIU0DN>Z9RB,Y(3%,*YR\A_>T"B'$2M^6*80$6/XRV-9N<X#'KL).ROO&!CM3
-M6%^X)[#Q at 6RQ/P@<T;$/6[5U$K=3D&9/,)`(P!``",`0```@```$4``8A<3@``
-M0!$``,"H`0'`J`$"`?0!]`%T!UGX`Q5:_J%\L_G\'F;[B#0[+B`D"`````@`
-M``%L(0`!4*)CS\>X=3D&Z^+EYXD[B%?9&[L:NH^X\K^7P`W-;4KMK(Z/9NDR[]
-M.UV'LV-7PJYFA[M8N&R=3D9);QX9['*&)G?:&^.^IJ,8)7A^O0Q/AG]LAGR=3DP$
-MKVLVSN0X/->9;?53QJ%?TS/_:ZM"$>&]]6T at 0`W[Z;G=3D_J\6=3DI at L=3D3]-H`%K
-MV;R54?)*!"L3RY!XC'0_8ZX5\X_!L)<#;-!#(IJ\R=3D3U%SGW!TIMSC:FVN>(
-M:>ZF]QN]((%I5'UW&<JR4SW5Q].=3D<CVXO_7_+.V;R^XQ$M\U>?X\<<S"NC$^
-M+-(G]N;5N8BUORO`T_0%,*9>HM.=3DAU2KNN\:-3C-V at 3ZKG_N1T'*O?:G3%D?
-MJS8D"UL0ETQA3 at NL8[;E2E#>S06Z*K[%(4LX2>9*F;/U^_LR'JFIS&NGL]QF
-M#]=3DPFR(`Y9:T0"'GH`-RK'[=3D96_IXK,7=3D1*W1HTH"@!<`0``7`$```(```!%
-M``%87$\``$`1``#`J`$!P*@!`@'T`?0!1`<I^`,56OZA?+/Y_!YF^X at T.RX@
-M)"`````(```!/"$``2"+P:/X\G3HY!NA;"3;4E--9-C70^EPFRJ<>$TE<H#D
-M`XYXFP>"H\\=3D3T5R/L'-LH>#=3D<<D^#U.?->+Z`74$Q3W1',D+`$UT&F*O_00
-M8Z#)$ZXQ`;H]HO\,XS7WI?.AG3,)$=3DU)PIT<0<Z:LS#M=3DFX[LL]T95ZL..Q:
-M/T&0(DZ:4/O=3D%>K,S_JU2D4[.$4^0P!=3DJR*'HE4<Z20+WJ0VC7L3NQS%MZ3H
-MY;4ED(^I&3SG;3)*EF<BJ7O>DSQPU*\D+'1<K"FC/"BS,[W\&;$*/$18F%PH
-M39R#TMJTL-8G&YNNLYWQ$873Q^CA3VBLWX`]S7XTG8(O(TEM#'Q;8"0U9`E"
-M_?^P.Z\,`X`$<#S3A'(B*$4BNE4$\:^Z+A)H6742MT9=3D4`H`?````'P````"
-M````10``>%Q0``!`$0``P*@!`<"H`0(!]`'T`&0&298T]90"`@)E8<HTZVK\
-M0[\N("4(`````````%PJ``!`S[ZMQT;)YP>D:.!2>C,G>#'.+5<0+67+B;-@
-MHY at HU\#;1BD156*@5_9X>YI>/>JR'T`?JQV[4;!$V[AH=3D1*W1O];"@!L````
-M;`````(```!%``!H7%$``$`1``#`J`$!P*@!`@'T`?0`5`8YEC3UE`("`F5A
-MRC3K:OQ#ORX@)2``````````3````##UU/\2)K5JKLS4H93>&B]!T_P+YSV:
-MZ9-&;NTQTL#+8-)!S/T1>`&$+1;D]'42MT;/:@H`;````&P````"````10``
-M:%Q2``!`$0``P*@!`<"H`0(!]`'T`%0&.98T]90"`@)E8<HTZVK\0[\N("4(
-M`````0```$PJ```PYE at SMC'0V[$@>=3D+L&\B<=3DK91N`,L`S@\JI+K/)9UI98(
-M&P)X_&](OSQ>UY)U$K=3D&3G@*`&P```!L`````@```$4``&A<4P``0!$``,"H
-M`0'`J`$"`?0!]`!4!CF6-/64`@("96'*-.MJ_$._+B`E(`````$```!,````
-M,%V0$,FD=3DX:K,9<B00$A4CAK!)4^RU!W at -SN&5-^!D#-^)8KKP4UQ+C(Y?_2
-M=3D1*W1F!T"P"8`0``F`$```(```!%``&47%0``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE7MQ>F+*Z=3DH0``````````"$@(@@````````!>"(``'@`!`!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``\>W%FHU%*&'TYWTK0=3D3LF.89--$H
-M_J=3D%722MG;<-[4^$J, at 6,;(,&80M-O_:TD4T(H45K@&_0WOSH,I*]]_B"?H(
-M,]CTZ]AO$+'08!JY-S(WBI,B!Y`D!%P;/QX8/AU8D at MAC1:SC+9R/PM^\1L,
-MDD-"GN?]CLQ^H/(TS/^_30`I```D"G8E_O%-G-F6T2Z\?F>)2F&J%$:_L^YD
-M44T$"%5.\H<I```<``!`!*ETV!.FM5*).W^!^F8`>0\=3D+11-````'```0`5J
-M*>.W7!RUP=3DW)YQZP98^3`2,^[742MT9$@PL`7````%P````"````10``6%Q5
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*5[<7IBRNG:$```````````I("(@````
-M`````#P````@``!`!@````:RV_ZO,/"@06'X(IC_*9I!K=3DU3-W42MT8?DPL`
-MN`$``+@!```"````10`!M%Q6``!`$0``P*@!`<"H`0(!]`'T`:`'A5[<7IBR
-MNG:$```````````I("((`````````9 at A```@``!`!@````:RV_ZO,/"@06'X
-M(IC_*9I!K=3DU3-R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``\>W%FHU%*&'TYWTK0=3D3LF.89--$H_J=3D%722MG;<-[4^$J, at 6,;(,&80M
-M-O_:TD4T(H45K@&_0WOSH,I*]]_B"?H(,]CTZ]AO$+'08!JY-S(WBI,B!Y`D
-M!%P;/QX8/AU8D at MAC1:SC+9R/PM^\1L,DD-"GN?]CLQ^H/(TS/^_30`I```D
-M"G8E_O%-G-F6T2Z\?F>)2F&J%$:_L^YD44T$"%5.\H<I```<``!`!*ETV!.F
-MM5*).W^!^F8`>0\=3D+11-````'```0`5J*>.W7!RUP=3DW)YQZP98^3`2,^[742
-MMT9"MPL`4`$``%`!```"````10`!3%Q7``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'5[<7IBRNG:$#+()7TY,8VTA("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``&A&YBN!
-M2<1T`VN^`A=3D<$)H,*LXF<14W6:7\X0SSC(0?H";Z9\:RJ[YQ$/\+!8N9_U'Y
-M"GAY%'CS>6OUE=3D?[889YO%&*S1^/8S#@U7+1R:H:X5D.5N46-Z0DVK4PN2<F
-M>`+ at INS,\Z1*JEZ;,T8`FC+!#RV5X1.,^296#W1(@9HT*0``)%,!(^=3DEFLA*
-MO+HKFGUV7\P_:Y`.7\>8F8J\%7]KIN`U*0``'```0`3Y?Q\?#=3DXW>DVT#WX1
-MR+H:$R*<]0```!P``$`%D\=3D&3%:50=3D?&JY-(R\%^&`VS<TAU$K=3D&[N0+``P!
-M```,`0```@```$4``0A<6```0!$``,"H`0'`J`$"`?0!]`#T!]E>W%Z8LKIV
-MA`RR"5].3&-M+B`C"`````$```#L(P``T+A1,.\K'3PLZ.4H2_L4[H<^VH at I
-M^9W?@IEM!F(K_"I3;H4D<:7Z0RNA6_[U(V].EL@&9X5R4M)TU7/K1N>0);4(
-M8OAV)LV;%.?;?^)5-=3DALF(>F!@!E1F?14IP4\VD+"<.'XJ,ALB-=3D(:-_I6L5
-ML%(^'FB-M(4W)4VEQZ#[[744$&S_A5D>XQ2LEHA5ZC-2Q:>=3D]6>N7Z04.`R]
-MA%E-.]P=3D5=3DX/L8 at 0W^#V,F9*%&/AAQ=3DV6;$:DV2'R9;@QG`+U=3DWY$@PC&+SQ
-M9?J3SG42MT9^_ at L`O````+P````"````10``N%Q9``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B5[<7IBRNG:$#+()7TY,8VTN(",@`````0```)PD``"`/#:#F:R"
-M4=3D4'5\RY:XM[-P*7*B*K4K&_SGXR5L;TI$ABX$HBY@),P$D)`(]^LH&X^Z:E
-M'B%KK*=3DI#O'D;+;.CE?))#E+'W!@,H5,Y0$>ME%R1+?9U#W._WF4(%IAC77[
-M^#.WNK:1TCE]12WC&>KD`LV'DP)[YIK^5\.W6'42MT9#'0P`'`$``!P!```"
-M````10`!&%Q:``!`$0``P*@!`<"H`0(!]`'T`00'Z5[<7IBRNG:$#+()7TY,
-M8VTN("0(`````@```/PA``#@'Q,:>')^;J?W.IH8IT9>$Q`LN.3O0)5R[/J0
-MU^/4I]??Y.9#8%&]KW85IQ2#&(GQ+,Y>L9W&1E378#C"6*NT at P$K6`ZN-@`S
-MXN(=3D"4<E09'W&;J\5>)3N/$-)V->+\$*#4'$KOS_Q:)U9)=3DDOSJ,63$U$9Z5
-ME66>Q-V'$A$_ at 1-#\0NH"1L\M-ZE`]Q05ODTG]-B]$HQHIYU>KCL,#?*%H47
-MV@;F=3D#SV(DV0ZQB=3DB7S/ML^)W_[W%K9,)[A5];/3]'/4_NS4([Q;6JU+OL+)
-M at -[U7,K":P at 3G\:L@'42MT;,*`P`_````/P````"````10``^%Q;``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R5[<7IBRNG:$#+()7TY,8VTN("0(`````P```-PA
-M``#`)ZK]-EW"V7>4LU?_A+SCF?U;D^(\'A25YB=3D\KNX`36.R[A?M@:,_^)P,
-M\5F[V"A at YO=3D*PKM)G[W;<7EVC"J[[*.4!R!PE_:1V$UYY4JE9$DP6Y?96*.J
-MT3\HG&P'<C!*E<;A%2Z18&I\BF, at P[[OFZ$D`8&08UAW+9^X9)Z)PUZBIT[Q
-MA3-0:Q+$3S?T*KG^4TDD7#5I^:Y^,3M",;@[D]M4MA;I;CGTC8?E;1CBGCD5
-M*"Y-T*D90A7LG2!U$K=3D&83,,`&P```!L`````@```$4``&A<7```0!$``,"H
-M`0'`J`$"`?0!]`!4!CE>W%Z8LKIVA`RR"5].3&-M+B`D(`````(```!,*0``
-M,,0GFN#4"!V/C%?@8$/TO<D)>\PI,AFQ6_5?P4'6H6;3X5,+M-^HL;N8+"-8
-M=3D1*W1O!.#`!L````;`````(```!%``!H7%T``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y7MQ>F+*Z=3DH0,L at E?3DQC;2X@)"`````#````3"D``#!RR%)_&YTH8H+I
-M<9]<*SWH$E+.W5YZ8,V'\\UY@@=3D/):3)`]:H^#)SO[HEN742MT9@:@P`/`$`
-M`#P!```"````10`!.%Q>``!`$0``P*@!`<"H`0(!]`'T`20'"5[<7IBRNG:$
-M#+()7TY,8VTN("0(````!````1PA``$`/^%VJUBRYS-)A8G/S9*#Q,9QIB5H
-MPAX/+@$*/$4.-$D$IPU0/ZQ1F,D[#0^D<[+\UK<'EF\\Q@*LOI]=3D7 at N23[H@
-MFS^I/M<ZJ,6/NLQM*H&SEA98TK0QSBGJ/J`B7'ZI,/;R%67V)X5K;EC8X;%+
-M!#O6OGN$K9/MO]'0@\B at 1[PUN^^*N@>"L(L!7+75W\LDHSIMPD2JV0*GZ1(*
-M9_-7$5<O_[9843%EWQ#3%`/E/P>_I8SYXX]V&?P"I+M%\_7Y3^JU;XR<^2,.
-ML27^UZ0DCO8X=3D_1A''0607RCN75T\,IS at GV;PJ#1@[=3D1ST%*+H2EV"Q.0 at 96
-MWKW5GU3(=3D1*W1C5V#``<`0``'`$```(```!%``$87%\``$`1``#`J`$!P*@!
-M`@'T`?0!!`?I7MQ>F+*Z=3DH0,L at E?3DQC;2X@)`@````%````_"$``.#/R'LH
-MF>JO)U,E;C6^,3$V#+"SG,V&L/<38GPMOO&IO['`-U"Y[)-]C@><DNT\B]`+
-MJB4X7C28B*/@0,BS&V\\1`PF[PO!<5G<-80JLZTG(!M$0!`GR.GMGN"M at 1/P
-MLV/)G:%RQGR.+M#!K.CB#"N#3K61[9TC`O'^DL!;&LL,1G]E3]AM6C5?L(0.
-M2-669"[UCGT+ at U/5I`AQ=3D[,-3E/B1L9(_%S%&)IPP+3WR_5CB3JI!C"H]_I2
-ME=3DSB-<3@<A5^UOU1Q:^FX/@C[UJ-FBM#?UDR?'WODY8KW-"W=3D1*W1LV%#`#L
-M````[`````(```!%``#H7&```$`1``#`J`$!P*@!`@'T`?0`U`:Y7MQ>F+*Z
-M=3DH0,L at E?3DQC;2X@)"`````$````S"$``+!1.?@6T1BX6[IBDE#W5_A"07)I
-MQ2HRXO:%V`_!+#9]*X`K-I$)2[.>LM31SQ`,#(7RAA.3PAS6XL20B/T4*LXI
-MD'^TQVP`=3DR6AXA*%&221V1N"TY\V?!U-AX_VB8A`YO9KD]'^Z#>EI)H$#EDD
-M*0!`59/LI@(E*5?;$MV62!9YG=3D^;/4*F=3D_WO$NI)YV"LGCP[!Y+I^CN^_D3`
-M*OMQK-C!*\REP?]DHT,,QS9F=3D1*W1L&H#`#L````[`````(```!%``#H7&$`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y7MQ>F+*Z=3DH0,L at E?3DQC;2X@)"`````%
-M````S"$``+#U!HGU<>EB^O5*E7*A2>HMTOU!9]%#I"*VD"-^&I#:`HVKCY^:
-MIIX5]*$RHQZ\[$<PNEX\S(X8TA\1P98&I at 3E1\RG!NC%P-B=3DOXYX=3DZ[6T=3D3]
-M)XM[DUGRXRD.;P(VPCH\*;$;F. at NP:#$Q_STFA)T^CPCVR:D91!49UXW6$9,
-M12RE^:'JK,$>I0.B?NXE,SSS_'_YNB[V at KVF<&;T#A8,3W>\88I'@W&W[CE&
-M=3D1*W1L_%#``\`0``/`$```(```!%``$X7&(``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)7MQ>F+*Z=3DH0,L at E?3DQC;2X@)`@````&```!'"$``0`06?JW/[*IPW#]
-MHPYKSQ$O;\J!8>?Y*'@JSRN/5$C(]ZI\HM\NI<3]]V)W5>'PV at 99-01<%;`,
-M at .E2?QWH+VQ0FEWUM0FK14;<?>W9'V)*_U at H+82R-;I7?S`0W9[BC3<[<\#>
-MR'([<(JP)^W!YH>*W9;2,J0P:E^"L?$#PJ.;6VL;7GM&BQT]$#Q+1S&P#K(X
-M:]1?=3D&?UNZW*M:1+V&-\/#5'_D4QK%J`V'T0HH1?;^10^,8M5I#"W"X'FYI@
-MHY59HD6C.N-YQA$Z;!KJ*4X1^LY.45V5*Q(VZ^?-'0.VYCI<WMC'WIZ?(&<`
-M*SV#FIQ at _!#Z')Y*(3+7=3DZ%U$K=3D&X\L,`!P!```<`0```@```$4``1A<8P``
-M0!$``,"H`0'`J`$"`?0!]`$$!^E>W%Z8LKIVA`RR"5].3&-M+B`D"`````<`
-M``#\(0``X!-ZG&U&C08D6\GD/2L at DL\(KWD_2H\M5>EGEAO926^3AW3+$6V)
-M7BV3?G!:D/DN43\B at 49)M&ALXAV:#AB1F9Y:P8A*%3!P9Q8<?3P^#D&I)I#`
-M$FL?CV5$*2=3DJ/NS75>T%K0->?(KO-P$?$F>\3NPV"O=3D"6M>L%>>:7*YH,BL_
-MMU+`P/8V]\PM\$3WK9T"!6Y"VF6C?TNYRS*3CF5L?C:?P`>^$'P\2Z[V8#9"
-MUF``BKRR_KEDF$?'BV)`MC1PSYB;Y\01*_)2MGC*ZY8%GQ:`3TE4_\7_>;SR
-MHF1U$K=3D&&^<,`.P```#L`````@```$4``.A<9```0!$``,"H`0'`J`$"`?0!
-M]`#4!KE>W%Z8LKIVA`RR"5].3&-M+B`D(`````8```#,(0``L*ETY9M^M[EJ
-MOYUO^"2P-O.+ZL:7-Z_)UBT%7&<UIA6X]_I#D_4?"T>G53N^EL2$O\(MXPKG
-MCA\7C68DO<$`7+#"NHJ\,H"-RN,Z,Q;T990X49?/$5_LWV'4J8K"IQ27*#FI
-MR8=3D%5\]P?WY[:1RW@?102\4%NXLI`*??C,CM;=3D/Q0OUQ at 3!?G*$"")7,'&=3DH
-MZBM9_%9^KA_->ZE1NP3S(7%NQIB:[0Q#S6'P4Z!U$K=3D&F@@-`.P```#L````
-M`@```$4``.A<9P``0!$``,"H`0'`J`$"`?0!]`#4!KE>W%Z8LKIVA`RR"5].
-M3&-M+B`D(`````<```#,(0``L(>L3_]$]RHFU+LW+Y<0N?02>5H#+ID&A4$,
-MH1]YJS2[5AO1)@[;@;/=3DP7Z+I0>9L%?#AV^%RD>/WC6X&W at X$G2F?KU*4W)P
-M. at 8D#YD?`D#]TEM*1!&A*"KP^&Y0%+C]DH&*:U3R^*R&D].PZ8"_X<W$+!%1
-MGO'5;(&H\KJ[2)GEX*6.KUB5*3_.[S at 2E"L<ZZ0#77,`*UY9IP;3@,[PM>W_
-M5FXG]\1_.-8`@A]U$K=3D&$C`-`(P!``",`0```@```$4``8A<:```0!$``,"H
-M`0'`J`$"`?0!]`%T!UE>W%Z8LKIVA`RR"5].3&-M+B`D"`````@```%L(0`!
-M4*O::$R-9+6Y%/=3DD9%#M.;TF]3^F)G.EB8O`K&?<PNNX0Z5$N2HHJA\3<W^-
-M!3;Y]A,B#D^IT5S6>NJ1K3/F?_\;V-N&B*("8DTN=3D?(PK<OWMRP`*B_M8KQ/
-M9!(RYU"H%R76)M;T)TIA at D_QB2SI%2*'11!*5M7Z57;AJ_5#]#_7FV(5Q;/N
-M^4W<%K"\[;/(0M4:,!/UV)*>:P?+Q$?'KFI27:7K"=3D at FF4R^%2MA*6T$W9+4
-M?FTFU`=3D]E\66V?_VF'A1KV"BQZ"1E?LB)T-R=3D`9$;_",D'I at T-/>(#+YPWR%
-MA;N*U3S!PB7;C#Q^UT<;0(F`;%. at 7NUDYPC?7ST2';M$KICN+.93+<"`U;9#
-MRQTK?S0.3?]RDLC1I>QO>YYZF;&\MYT!+`:.TC,C0Y535VQ8.`(XW71D:4GD
-M+\%+,N#.]91K;*RK7=3DZ?B<?:=3D1*W1M]E#0!<`0``7`$```(```!%``%87&L`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<I7MQ>F+*Z=3DH0,L at E?3DQC;2X@)"`````(
-M```!/"$``2!ZE_L(!87L(T#NG?02XB7N0XCNX62E`=3DAXQ/IZPIY5G%"RKMI6
-M)>OQ?CL<"VOL#;80.EYX:\24X>T5"`UHK+S#]!(,P]6=3D[XDCD2%-KHC\)D+4
-MV+'_L1.#X>,HDY`8%;FZZ?%;;@XIMZF?XR9QD&T\X0>L?#_1O(*!87MN;0*S
-M/5;-6:P>!P%W=3D;5TU34KJ58-#1%V-L_-E.M<@5HILZ7 at .7?&6O-V/W:9"!*.
-M7W"YW;-']-$-[&V&>5[4M<]0H&S-,9BL?=3D7._0`,165T3?A9,G6%2]L=3D8'@"
-M5`8!M"1\JL:?I at 8`>2D^#<(T:_'=3D-SV)I^)VJ2(^Q8`&&+>&(:R5$9=3D\Y<TJ
-MEN.L\]XY@)T_/Z:T[UAW+\T:=3DUO5VG42MT8.C0T`?````'P````"````10``
-M>%QL``!`$0``P*@!`<"H`0(!]`'T`&0&2:H)3YSKCEX,[_/>R!JD1>PN("4(
-M`````````%PJ``!`7@@&-KQE>)*ETP$V_./)36H<CZ,U"=3D+HZ5C at L<7F-(WW
-M"_-_XVHNMZ_[O9JAS>L'-NG1T>:-%J"8I'1+=3D1*W1F^9#0!L````;`````(`
-M``!%``!H7&T``$`1``#`J`$!P*@!`@'T`?0`5`8YJ at E/G.N.7 at SO\][(&J1%
-M["X@)2``````````3````#"T0&HS"A#6#C:B0`EIVAX#30\"W9^R7;P+<H[*
-MSVHE9!KM<(<?T*C-X;>H6W42MT93J`T`;````&P````"````10``:%QN``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.:H)3YSKCEX,[_/>R!JD1>PN("4(`````0``
-M`$PJ```PD.VFYE4;>OO/'M>'*":A=3D48JJMD7]XCK*;]R*.):I'&2^N)`;+Y=3D
-M2(`'CW!U$K=3D&A+8-`&P```!L`````@```$4``&A<<```0!$``,"H`0'`J`$"
-M`?0!]`!4!CFJ"4^<ZXY>#._SWL@:I$7L+B`E(`````$```!,````,&(EJ[9]
-M#\(RNT8G5-R7T>$'.]>KBM.D;V)0 at G154D,,;17<?10-+460W-M'=3D1*W1BNU
-M#@"8`0``F`$```(```!%``&47',``$`1``#`J`$!P*@!`@'T`?0!@`=3DE$!J<
-M at 11ANWD``````````"$@(@@````````!>"(``'@`!P!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``6%XGDQ3>!U*R_NT4F`>HCGFY.PN,);TQ.'"W
-MJQS4]'?J4=3DTK4 at 4^:.-XL*Z*C]H;&0WWBS;S]+\?S`2CYD5I+M?K`YR=3D1VF9
-MMCKC:;UWL\W001E3F]`!$KG$`-9G(AY/5L)UJ_?(RS&*?J04<1WU%>1/A*9Y
-M!KZS2_6ALI]X>PTI```D]LU^O/(TRVD7+O7W2#>-M"P.%TE at CRTH0(/*.#DT
-M=3D4HI```<``!`!)8UIR!I4<L/`%8K!C:9[L0&1+(>````'```0`7P"8:@<.W%
-MV0+#D&(<Q4YZ[H4S&742MT:4Q`X`7````%P````"````10``6%QT``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*1`:G($48;MY```````````I("(@`````````#P`
-M```@``!`!@````9KAU]QLY0"BY:N6C0\=3DPG'MV%'GW42MT8QU`X`N`$``+@!
-M```"````10`!M%QU``!`$0``P*@!`<"H`0(!]`'T`:`'A1`:G($48;MY````
-M```````I("((`````````9 at A```@``!`!@````9KAU]QLY0"BY:N6C0\=3DPG'
-MMV%'GR(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``6%XG
-MDQ3>!U*R_NT4F`>HCGFY.PN,);TQ.'"WJQS4]'?J4=3DTK4 at 4^:.-XL*Z*C]H;
-M&0WWBS;S]+\?S`2CYD5I+M?K`YR=3D1VF9MCKC:;UWL\W001E3F]`!$KG$`-9G
-M(AY/5L)UJ_?(RS&*?J04<1WU%>1/A*9Y!KZS2_6ALI]X>PTI```D]LU^O/(T
-MRVD7+O7W2#>-M"P.%TE at CRTH0(/*.#DT=3D4HI```<``!`!)8UIR!I4<L/`%8K
-M!C:9[L0&1+(>````'```0`7P"8:@<.W%V0+#D&(<Q4YZ[H4S&742MT:E^`X`
-M4`$``%`!```"````10`!3%QV``!`$0``P*@!`<"H`0(!]`'T`3@''1`:G($4
-M8;MYOZE4+'(`9.8A("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``%;F at QMC6\+^9]-T
-MSH95XT1J]>05?JZAK1E?'>_MI_&I-UTGH^L'=3DE:9E1/WVAU"W6%!>R#Y6(@"
-M.RC+5=3DZ7(?`."W$K,X-4QWXKI4JXBJ at 6DCAFL#A]3:H9)L,M-]JUJ.Y*BVTT
-M^),,Y-E5B5CP-GRTT)>E2RM006[ZO2WW^N!"*0``)'U=3D)T8)C9)Q`HI_]:YW
-MF7(?T'@8B/JU^*88//(0P!)/*0``'```0`1CHFW0K`5(P+`X?;Z:(QWUT,S@
-M6@```!P``$`%-%O[)NPX=3DD?R"2QN;HW#7S80+TEU$K=3D&\24/``P!```,`0``
-M`@```$4``0A<=3DP``0!$``,"H`0'`J`$"`?0!]`#T!]D0&IR!%&&[>;^I5"QR
-M`&3F+B`C"`````$```#L(P``T'TF5KZARC?EJVU0 at YV9(_%O1?Z37[J;$-Z9
-MK-QR/1NNS+[#/ZPW:GOED<>LVJL/_4G/@DK?6NK>C/GI2$3-"[RQP!N,W"'(
-MV(8$GDD#-('X=3DW)Z=3D'$4&(H)>Z],7,ALNM-9FF&)!`(^A at B-6+Z"^+IW4PC`
-MVGQY+"D3C>HN'`)MJS6"\MS at NENSO3)@WF,5[F3;M&*[P#K(J=3DR*5G996#`T
-M3(=3DA0%]/^3?(L9[0R^-SMAGHKA%OKTJ\AVE>`Z2QA9BV`46<=3DB/.9Z-D#W42
-MMT8"0`\`O````+P````"````10``N%QX``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB1`:G($48;MYOZE4+'(`9.8N(",@`````0```)PD``"`\ZLKRI_]?6,`W6DI
-M570OF(G3[X++[>OEH>2 at O[@(0!L!\))!0*8.][GBMX2#O>_C$AC-6YI_LW24
-MWM8@:=3D'R']$AT=3DCH0R\%ZM/PF<<%HN6XT+,@[L,)=3D1QF=3DH69.F>'!7"0.C?'
-M>#E?%]2RDU(Z\^:@HX)9P,9=3DPI1BCG82MT8['0``'`$``!P!```"````10`!
-M&%QY``!`$0``P*@!`<"H`0(!]`'T`00'Z1`:G($48;MYOZE4+'(`9.8N("0(
-M`````@```/PA``#@C"SR=3D6GQ&1L@?-T&J\1N2DTH&``H\13X-]OZZL%D+]9^
-MF`@0'#<WUK4R\MQO.+B)7_,BJ,7;RPS at S@<%#Y[VQ#3+XADS]L'/JF2#[L,J
-MV"\S+'0%%QFVWZ,/8E9\'\]#W9=3D_[NPZJL7&SQY=3D?'<'D5NX^"#M[HUATIV^
-M*HM-M%9^-`61/1^>^)]^/?0*8@^J2]YU3PW3D8.DYKQ8.<4[P`FD5P,%R\:N
-M8T[1U?QD'$UZ3#&(RY1_%,:)#-L6&>U1$2FYH at -D&?:+WV9@))>/WTB at ZO9?
-M<J7RA?U];'82MT:N*```_````/P````"````10``^%QZ``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R1`:G($48;MYOZE4+'(`9.8N("0(`````P```-PA``#`N8I5
-M9"GI1(LTA:ACNT]332OOK5%GFT?J?]YCH[%@0P?8)3T7C$;9D3#)YN\]S:'V
-MC>_/]T]/<U<*J=3DD:9GZF"8\,DD/3FW:F%P?C^9`0+PVGLM<IPX3,0J4J"#=3D%
-M^+3[V'RX%4.Q@*3([F<EUBDRS(.- at QOKI$R6Q`X8O]8_F:BN"#XW&\S';U=3DY
-M]4G@]FD"0JMAU9Q&/LY4^WY)P/8T&9JZ#J):D+HY_P+,,8SYYKG?CUV12 at 1Y
-M!ZM36H=3DV$K=3D&.C,``&P```!L`````@```$4``&A<>P``0!$``,"H`0'`J`$"
-M`?0!]`!4!CD0&IR!%&&[>;^I5"QR`&3F+B`D(`````(```!,*0``,+*[.YT3
-MF(I(K4S2\K4G?>!Y/PP94RH&]Y98`\SW)9=3D757B&Z7NJYVTK:"])=3DA*W1EA0
-M``!L````;`````(```!%``!H7'X``$`1``#`J`$!P*@!`@'T`?0`5`8Y$!J<
-M at 11ANWF_J50L<@!DYBX@)"`````#````3"D``#`R^EDIPY$>TJ;FX0&NY_4Q
-M!(-W6#]V8M8*IZ6%-$. at Z?K5SD<C\7<'T6]Z7'82MT:":P``/`$``#P!```"
-M````10`!.%Q_``!`$0``P*@!`<"H`0(!]`'T`20'"1`:G($48;MYOZE4+'(`
-M9.8N("0(````!````1PA``$`Z$M5/!(NF]-=3D\<,N!T7ID*I(A:JL70><(CMW
-M*TZI:9L#`+E9VVWM^[9IWF,`P`F+917K3[6S+L0F(`*VUSRTN8N&?MW';57W
-MLRBU$.-8!SNK337RHPGPD_MMQ1&UUU':7^%H+P=3D654*2MND0R4P(^C5;0N.G
-ME'O,X(7AV<84*6;(:U:/D;BF2`:1D?XGJ4,X'9Z7NG_N<*><J]>R5P9I:6WE
-M]/$LK#C"WW-J<W+RHE[4)>#U(\-7'N7]DE>.Q%)UBAN8,ECE/F at HLO;FG[98
-MCD]WUE_Z3ASC\B,*K2%`"WHL&^0WTQC%Q5MG*1!WA;,J-MMR83_V&^1L/?.S
-M=3DA*W1FAW```<`0``'`$```(```!%``$87(```$`1``#`J`$!P*@!`@'T`?0!
-M!`?I$!J<@11ANWF_J50L<@!DYBX@)`@````%````_"$``.!J\HL462I`[&5R
-M4F.F7DR,:CJ[=3DLEWS?V'Z[/*RKSPT=3D7I%]7?I"UO&Z#HUIA)OL]5]9`(!7"X
-M*V*TZ&[5$\&%M&2]J+U6[V]@*JCW$&RR6C,`4B<*ZNWV_",4/XC1T+WMU2A2
-M#V7]`K.R>1UJTP1JQVU6K^)>"]M.JO,#\W!YVWXW\L&M"2?]^'-T0Q=3D]4#\$
-MV,R!KD.,`J`W^7WQDYBKSJ1R74HX--A-><L3`LW7Y<8^WC*C!AF9++L5_%"'
-MP"BF4ML8<LYYDSE0Z.^X@$J7)N2/F7)^YJ+F2CT%=3DA*W1A:'``#L````[```
-M``(```!%``#H7($``$`1``#`J`$!P*@!`@'T`?0`U`:Y$!J<@11ANWF_J50L
-M<@!DYBX@)"`````$````S"$``+#%YS3TGY;&Q`(6MV*5=3DK#U8,NLP@:%4!(S
-MH:4VTUJ<>3O^I,*9\3'U_4_5.=3D87L[Y^KL_^**Q]V-ZT"*#-XXK*68L%QKP:
-MNV)O.W.1;5LB'H::ZX"\J#:GSU^U+_YW:=3D%HYB$,IQ20,*8B-^#"U5[N"(MY
-MZGG-/L/5UG>]%KVO5[ICJ!-2OG(YD.(HP;O6)W:;NPE+>O&$IRH1_]XR*2]3
-MP2.E(S"F]_7E0HLU=3DA*W1GBG``#L````[`````(```!%``#H7((``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y$!J<@11ANWF_J50L<@!DYBX@)"`````%````S"$`
-M`+#(J"<VEPW^5\3A(;KP)XVK9B@"L$Z]G#KK+UW>K!3L_YMW1+QE"(6B&.T)
-M>NUQ at ZK17NOF#3:=3DIU%]ZGY5$/S13^!$[26]H3G@!K=3DY$X\K]&8]K:NUQO.R
-MNL*93D1;(7J9I1?MB8[=3D$@CK#5K)I0&^_BG^W45)&O(L&..X?>I#5L?UY=3D;0
-M%3]7=3DJ4614>EU?VA(NA2(^=3DZ=3DC3?']N&1],4I0AQAN)`.$A/SK/0=3DA*W1C?&
-M```\`0``/`$```(```!%``$X7(,``$`1``#`J`$!P*@!`@'T`?0!)`<)$!J<
-M at 11ANWF_J50L<@!DYBX@)`@````&```!'"$``0#5498>\14V$CP>2T"1^#52
-M#(!C[L(!?"F8TK\WMNM3G8`1`)=3DM-YZRJ<I>)Z"*I->\L1V&M'=3DFCUR3+_N"
-MN:VN>?\^2#5+AJ$+S?S&^PY"_T].0J`*QY<`/EJ-WJ18BB9F$N.KV]A at _0Y)
-MF]1IQ<RE/^K?"#&([X">8-Z6]U98HH!3>_$?)/SC.*##REZI8*D,D['B!A(=3D
-M!>`?M7$B9;A3:-Y4WDKC&^P_LL=3D4-%[)UGGJ9]03ZQ_*T2I'L]D'DLCXQEZ>
-M&E4.N]#W.I;_G8_R>5;$"JD[S/9N+S#)GX'?^7'L:)4RZAW7A9\W/5D_55UX
-MH9C+#BXT8`).:]UV$K=3D&+-(``!P!```<`0```@```$4``1A<A```0!$``,"H
-M`0'`J`$"`?0!]`$$!^D0&IR!%&&[>;^I5"QR`&3F+B`D"`````<```#\(0``
-MX*B5FD[T&AKD(#ZK3HC:F-12(Q?)WS/?E2"Y`@W6_`.A'F,>3FE7Z[NLP`_R
-M<W^J]ZE)6G!M"QF1FP01KWV-XV"(4A7,,:.^*S:XR"^'V6BC5.Y:[:%R@%B!
-MVVRN](G2MSP/(WYKB'C+/[#:)0ZE+G')]\K&`6YXWNI)23%@D<D&['JQ"%G)
-M@;76H'.<#4K%;P<M$V.&\\#!7^CAQ9DZHYL,:U+ at 6;:2(\3EN_:_`GG!D41/
-MMN, at ZJ74#+RL,D?53RZC$5&0FON7T]7CSHVZG!^@MDG,JYLAH&12+#EV$K=3D&
-MPN(``.P```#L`````@```$4``.A<A0``0!$``,"H`0'`J`$"`?0!]`#4!KD0
-M&IR!%&&[>;^I5"QR`&3F+B`D(`````8```#,(0``L%J13BQ9]5W&DAWU[7Z/
-MOSA'B.V7@];%*6EU+UC`FVQRPVSOQ9!0A1$WF\U877!!P at 0+P2]^=3D010"?I"
-M4#DN1`N+_%2("HKL^;QI#*+<3T_-A_=3D0,CDC_;`Y*G.2.UO!W[+%_=3DB4S(#5
-M-';%4KW/]AEPI>/=3D^?Q7>G]3R5(!\W`!05?;0DF<(3`>&*_;9:^-*KA**-U.
-MARH[:F^/9X@#,9=3D?W/M_)G9QE0ER:*5V$K=3D&Q at 4!`.P```#L`````@```$4`
-M`.A<A@``0!$``,"H`0'`J`$"`?0!]`#4!KD0&IR!%&&[>;^I5"QR`&3F+B`D
-M(`````<```#,(0``L'LU)Z'4*XU&/4PS>OL>6?47ZIT=3D*8SKP[D#4Y!O at BD&
-M:J@^OQ*LV%JURD&_ZCMD/.<RL\#<E]0V3^MT$V#MSL\1TZ3-A/F=3DV at .9[R*R
-MH3K<JUK;.T6S(5RP,9S#>L`N.[:R8>*8$2<LSH-8%\JJ]6A[=3D_B`95:1NRJ&
-M#X\3DHB=3DI@)DJ7AP4G*,Y[]:I?<S"F at G]".,S3!TN=3D*OY\7@:`4>?*ML'7$F
-MO$;W;7]V$K=3D&P2L!`(P!``",`0```@```$4``8A<AP``0!$``,"H`0'`J`$"
-M`?0!]`%T!UD0&IR!%&&[>;^I5"QR`&3F+B`D"`````@```%L(0`!4(*BITU[
-M"V>+/NRZ<7.^)<N/;7?T"J6D!>&GRYOM2&4*ZA046X.)7]]Y#/V-S"LQMV;D
-M<O4>:7W'^_?]9M/TZ[STH6&<?Z%*PT?"$,=3DX.S&"#H/4;_>_E@!HEG(YO`5S
-M!6^8TX;N<!L:)U#;=3D"3E>=3D&X!=3D_FN+]'I#LB`NO4QY)*O)M*G,EZV]:. at 1\8
-M(12Q-W`*#FC]2C3DO#X3?5_/.>A^&9W>;`H$F,1S^L)-,4`1A;[`]YPE.9R=3D
-MH2%:=3DR6"\>[=3DPUW\REHP at _>#K[!C]]&04%.`XC<$,7GXR at HMG3,YEIEUH318
-M=3DV6SG,\?2FD=3DXY@?=3D2(O!<I3H5OFJ;9O(6[4)>W%R6UYKZ^D"[Y/<UJ[]_QB
-M'5Z4HSV)(/VYGFK%S(),^0W3LWE'B=3D963(^<`99KX!B+:A%7%'><KR[1)A(]
-MBP-:M/(UN`((S'SZ=3DA*W1C1@`0!<`0``7`$```(```!%``%87(@``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<I$!J<@11ANWF_J50L<@!DYBX@)"`````(```!/"$`
-M`2#Q7_R2<[!W#[)S#II'(*HT<&_ at 223ETX$K@[ZS*\[>,CUUKK.LH1&*^'9M
-MN`8Q-.L6Y7ZV-P*=3D[NL&9M`;4;2Z)006[.[`BV1<.;([(]4?)U=3DY<MB<+K$1
-M6#W(5RY0M4"EJ_RZ?JGV\'OI$=3DW:<CB%VMZYD.%&21G5D^A?J<C_R#C1&-CK
-MJ<02(",1X/(?;97D?[Z28N8/46)EDG5'74%M`#HFB&FK*5$"P9I'%Y3"_;O`
-M*E.V:EA=3DSB`>F2]^HM*MPZZCV-%*;R^SF&AL`[VVIF3>JU2NK&'QLSYR::X-
-MPYE8,L)I=3D!4OKPHK76JE*!MBIS.Q7^,*]D`PQE%,'"$R>87_^<((O%MP277+
-M_;1[EGT4];2\)=3D)+Q68GP782MT8*B`$`?````'P````"````10``>%R)``!`
-M$0``P*@!`<"H`0(!]`'T`&0&26"#@(ZR`?BP6 at JDR0*3E,0N("4(````````
-M`%PJ``!`[=3DERN at +SP<IC\@.K'K.Y3*."1CB..X=3DJRAVGI59PY4R\\CMTE,84
-M>/N"F.B=3D8=3DCR1](BIU/74!C''J?_=3DA*W1H*3`0!L````;`````(```!%``!H
-M7(H``$`1``#`J`$!P*@!`@'T`?0`5`8Y8(.`CK(!^+!:"J3)`I.4Q"X@)2``
-M````````3````#!;T6@:S$:I<'YRAW!3?]"7<@-QCBX3`UEV;=3D%E5P']:_)3
-MN$QC%6M5"+?(['82MT9:H@$`;````&P````"````10``:%R+``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.6"#@(ZR`?BP6 at JDR0*3E,0N("4(`````0```$PJ```P
-MW@)/:>O`-M1_U0)U&H9)`HP*R9KZV1A>A%3/P`]@^KZEM5A4$!)=3D#35?.$EV
-M$K=3D&*;`!`&P```!L`````@```$4``&A<C```0!$``,"H`0'`J`$"`?0!]`!4
-M!CE@@X".L@'XL%H*I,D"DY3$+B`E(`````$```!,````,$]K]EUT]RJB8TG!
-M&TU-"TG&"-W]C&(M!CQVQ^9P8HK/B9^3[W96P^3%W/0%=3DA*W1G&K`@"8`0``
-MF`$```(```!%``&47(T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE3-H.&N#RVX$`
-M`````````"$@(@@````````!>"(``'@`"`!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``847NT/L"<9^U8K]R180PDU.)U;D"6+"<H9U1:UN,Y]G(
-M?1HDO[YO[P>C6^#'WK:,<<Y($[X1?XW%`:GA<\M]%H6:%.PV9Z*&.W4K$07F
-MVXO9CJ[.0JYQ.NH^`X6V@?W078CC7ZY7XQ%Q[)YU$"EQ/$+9T$)?:\;LVDF_
-M<F:F)$PI```D?:=3D4ZG2B3NB-.*#D#C,F6]8-!WT8E1W_Y*$:>;Q)QX at I```<
-M``!`!$Q0CWB.XHQ@<\P\SDUV:O^:R]6T````'```0`4;4L)"+B[0U,^M\/_,
-M0$[M, at 1(,782MT;3N0(`7````%P````"````10``6%R.``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*4S:#AK@\MN!```````````I("(@`````````#P````@``!`
-M!@````>;U*P1E8W\J*V-P0JFXW5_ER at N<G82MT9CR@(`N`$``+@!```"````
-M10`!M%R/``!`$0``P*@!`<"H`0(!]`'T`:`'A4S:#AK@\MN!```````````I
-M("((`````````9 at A```@``!`!@````>;U*P1E8W\J*V-P0JFXW5_ER at N<B(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``847NT/L"<9^U
-M8K]R180PDU.)U;D"6+"<H9U1:UN,Y]G(?1HDO[YO[P>C6^#'WK:,<<Y($[X1
-M?XW%`:GA<\M]%H6:%.PV9Z*&.W4K$07FVXO9CJ[.0JYQ.NH^`X6V@?W078CC
-M7ZY7XQ%Q[)YU$"EQ/$+9T$)?:\;LVDF_<F:F)$PI```D?:=3D4ZG2B3NB-.*#D
-M#C,F6]8-!WT8E1W_Y*$:>;Q)QX at I```<``!`!$Q0CWB.XHQ@<\P\SDUV:O^:
-MR]6T````'```0`4;4L)"+B[0U,^M\/_,0$[M, at 1(,782MT;J[@(`4`$``%`!
-M```"````10`!3%R1``!`$0``P*@!`<"H`0(!]`'T`3@''4S:#AK@\MN!M'^!
-M(A"AJ]@A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(```VI)%C*$;J>**5E48%;:^EK
-M/&+%7BK@^Y1:N<7V!V38/U:@L8PJ\L]M0SGI8;EWN1]]Z*F;0/I0SLX!<BB'
-M-GU:#P7>]8O0>;9T2&+.;:<4X#=3DTQ1#(@\:I0&C24(-V8['&2`R8;KC4O19,
-M#;",_.2H0)+S.*E;R)\H3]D\:<J$*0``)+)5Y2C@&`K94D`'.7(=3D!TJ9V]6]
-M'@2R%CD/V?,1I@=3D;*0``'```0`3YD?B#ZN+J/J<D4X+R>-Z(^6ENQ@```!P`
-M`$`%5@?>R&X>^4/;D5U@`KF^UVYL2Q)V$K=3D&Y!L#``P!```,`0```@```$4`
-M`0A<D@``0!$``,"H`0'`J`$"`?0!]`#T!]E,V at X:X/+;@;1_ at 2(0H:O8+B`C
-M"`````$```#L(P``T$L':1^+)O&[KS&"M)E6/9LCO^]Y.UH1(M@\4\[0.C[\
-M!@NR^W,/J%K6W!T.#;C9`<Y^B=3DO?1]$7FZM*S;)Y/'%+L-V%X,K%#C1MV$LL
-MG,,P<L/%Y%U(BD[O92=3DXQ:""&/ZY0)FY(.C<SQ7S\\`<=3DKF/56ABRQX]T:I*
-M=3D).!F-*SID5.=3DM5M0F]"UU!X2+U6@)4I9B5X"A^P5I at XOMB,&^'KOUT(:ESP
-M&JF6?/YJ at R=3D+SS,'#37QA;I4=3DK*CKKCMJO^#>M^NVO[ZQ,O?+'82MT;T-`,`
-MO````+P````"````10``N%R3``!`$0``P*@!`<"H`0(!]`'T`*0&B4S:#AK@
-M\MN!M'^!(A"AJ]@N(",@`````0```)PD``"`GB0(9_7.!JP?)=3DZ-KIV&$R#V
-MQIWB:$0D,&!2[\23]ZN?!0C>-!+'YV(`\1[D\.?5K*!D,(GJ&#;AS9F([[<J
-MQ*P9X]K?IS,W.$&3W#;NX!4-MU<'6.$2"#R!^IUH8*^%4P at +)8G0NBI^:[A0
-MY6V'OM;)Z6TD>*/WUHG2C782MT9B4P,`'`$``!P!```"````10`!&%R4``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z4S:#AK@\MN!M'^!(A"AJ]@N("0(`````@``
-M`/PA``#@`3DHS2VEV[VO5S\UE?&8V1 at ->R)\7`RA%+MO(#`Z/#DTO$B,<FJ#
-MXGN,]<7S<+N23%L;T<?,V.A..HJ:(@_KK[^C^6N^F#@&,^DL=3D]2*6>U&YD+!
-ME(;6-QUU6+L/%$_%0?Y5I=3D(9J<>#0G6.B*>+>]94WZ*IM>FA5%&O..39F9!9
-M;YGTF6`RCD<)D#>O/..`E2OK'L.+/\5=3D]5V`;Z2V0/\WHG%9G0YT^L\,$47<
-M-"PPZ'F*OD:'F#G&@'$98T4B2A`NG+@)?_54 at WL63C9A6ZTK5:Y7&+MY0_;F
-MX'82MT;>7@,`_````/P````"````10``^%R5``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R4S:#AK@\MN!M'^!(A"AJ]@N("0(`````P```-PA``#`,K/3&G(1D%CI
-M6XCW91JX$:9`AM:FE#'U0I1B7"RF\L=3D5/+MCTP[CO`.,J(>CK\_A=3D0[0TUCG
-M6RS.[,N80RI\\7:C.S'S;EBOKQ!\[1I8W)](`P#,B'D"Q&[+[:;`TW,22;DH
-M!G_D[&N,6KK>/BXX6JOS!$N!%5;P[@N'6HO)*S03,9`[3=3DIA=3DZ#R57)YGJJ"
-M^<$LE1:R,2!6K)$W3,G;+C<KZBSHP$/[ZZZ#J+=3DPU-E'.&R,]#46Q?]P0&AV
-M$K=3D&H&L#`&P```!L`````@```$4``&A<EP``0!$``,"H`0'`J`$"`?0!]`!4
-M!CE,V at X:X/+;@;1_ at 2(0H:O8+B`D(`````(```!,*0``,!8_!6]%;0SPNJ=3DU
-M3&[U-\`IH0%!H:_=3D0E:^8$;3%1#^\%AOP;O7G_`F<RW2=3DA*W1B:'`P!L````
-M;`````(```!%``!H7)@``$`1``#`J`$!P*@!`@'T`?0`5`8Y3-H.&N#RVX&T
-M?X$B$*&KV"X@)"`````#````3"D``#"MPCR?6 at 2X1],O?1&)K51F#SR;!36\
-MZ'M:AKDC)[KG6:"NAJ:\CU@`)V>K)782MT;1H@,`/`$``#P!```"````10`!
-M.%R9``!`$0``P*@!`<"H`0(!]`'T`20'"4S:#AK@\MN!M'^!(A"AJ]@N("0(
-M````!````1PA``$`?0_KE,!F0VD.'W49BY+*E3H5CX at K+J__V%>(>U")IN^Z
-M*TR\+!0[!*5(WQ=3DAZ51G]H=3D+V%LMZHT.?_$J-*C^G8U$H_`TK at 3RUP<?)52X
-M\!MU=3D)]45 at D3.X5OZJWQ#D"M[B!GCBPW*VOM6_!AGAIL>X136Z%CE@@3@;5-
-MVF=3DJ?-<@@D-HEFERS>DD__CFX*8+WJ;<M%S?1QZ<""W2#A^P9-=3DVV#=3D9DO,E
-MDC33)T#O8SMPIKR!*.DK7;;7VRNA]=3DJQ.-ON=3D:!I!8_Q3I>X#'V6>D1C:',?
-MFXX=3DWZ#8<Y@^Q!C"%;_%\`,40":F'&P^&Y15G$B#PS;O50D5X]51=3DA*W1LNN
-M`P`<`0``'`$```(```!%``$87)H``$`1``#`J`$!P*@!`@'T`?0!!`?I3-H.
-M&N#RVX&T?X$B$*&KV"X@)`@````%````_"$``."4T5 at IK@&1,P1H-;E%C5O$
-M=3D_BBGA66T-J?I>G2/FWSXAXZI.%")2#86W1$?0WE3R<9:/;,9YU1/EOQ$,",
-M=3DWCR?50CP>$BP(`B?567!]S'SEL52%LFC!M4*1)PC!^:UFUW6E170Y^#O@/I
-M!9,F=3DH>@__Z][>J+X,VJ^)";5Q at AH+"L=3D9K?F2R;>1;2E;X=3DCZ6`KG&_[K4Q
-M-7IEQP;PB>%W(BZ?WH;FG%!R0O(O at EQS9:=3D-?IG"R$(`_L.Z!_+-;QHO29C%
-MA=3DM.+;G1ZI%GI*GS:[WNZ]AP;ZF/)0*&=3DA*W1F*^`P#L````[`````(```!%
-M``#H7)L``$`1``#`J`$!P*@!`@'T`?0`U`:Y3-H.&N#RVX&T?X$B$*&KV"X@
-M)"`````$````S"$``+!(%?+_2U<^[V%$@T*39;L82DM!/T*Y^\D8S$S!GC?`
-M:O6@]9Z8G89S:F&K1*=3D&$*N437F8"*<46A5(1*5>9/K,^2HCD at 53WJ#0"_K@
-M-&&N-8(W-8W13]BS*%I\E=3DFHU<@)+OC*>,;9E*F\PA7`_J(H(NGXXP&C56RV
-MQ)HC=3D2;%S26EKHKO*QD*Q2+BL<%NGN[8(#9Y0HJA;"RRE(.#85%LC(XB?=3DM.
-M#528?X`I=3DA*W1K+B`P#L````[`````(```!%``#H7)X``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y3-H.&N#RVX&T?X$B$*&KV"X@)"`````%````S"$``+#;?13>
-MKD6^W2+GF)!*2 at 4#1*\-'1R,",&8S!R*=3DDYI`LPRK=3DQ]5Q4:CJ!<FJ7=3D<2_5
-M0C%%^BT464XLEXBN/!#E#J%HLY;1;R*%\_>);ME45Q6S&+-+)DVWQP``UNVY
-M*@)XO80+[PJGH4`<LX(H:HKG$<W4*YPV&[Y^#"F*$XG5&U[UV9NOU1)"*<D(
-M`']K$@;_%/85K[L[]U-!21+VQ-NL#.#F$,=3DUW[7+I))#=3DA*W1H/_`P`\`0``
-M/`$```(```!%``$X7)\``$`1``#`J`$!P*@!`@'T`?0!)`<)3-H.&N#RVX&T
-M?X$B$*&KV"X@)`@````&```!'"$``0"P2F%9#<6R.,8&*AX>#[B%SH at G!DV^
-MW(1=3D at T6)_B72JF6X0T=3D@"6[*9JH6.0GA%Q##PB8N$]Z]9MRTW;H^JUU#\Y!_
-M/QUB>L.1#Q*LD4$7["+<O at 0;-SN`.3]H[[\%>.TV7$A5#Y;FM-A[+)F>V=3DW&
-MEHG%D"",H4\E#AYE=3D'%GCM3*O0;M/W_M8Z5]66I>:J-N((@5?`84Q5369WR`
-M#,U*J`^I+J7FSJ#K;`'>QXMS8A9JP^$A1TP0%CF0NRBZ]5M_@/BCOW,$4Q>A
-M`F)I>22R+U5_8`MUIK8]D]'=3D`KT?5#D>>1_63R[PJGPN2!(*KJ+?]K61C+W[
-M/*#Z1)UV$K=3D&TPL$`!P!```<`0```@```$4``1A<H```0!$``,"H`0'`J`$"
-M`?0!]`$$!^E,V at X:X/+;@;1_ at 2(0H:O8+B`D"`````<```#\(0``X*+:V^O=3D
-MZ>"-SBED=3DUD\GMMYQ0=3D]`TWH^"IJPV,_P(0%KU7-BQ33,5"`QMA6>D1*)]WN
-MQ#(L9U?*C5TCB^^!W at Z\+P3C?NM1X9432O.5W!<.4_.O_3*.Z`?P1F'0A7[>
-M*$<)J!X5R$%;MV^[\AJ&1%T^9:OA[3=3D`%(E/M@'\'7X7D=3DP;-SL$]'ZT]EN8
-M\@6HGP41GY.VVO?4TQ%JES09JO&DO>\&E]XUZ*S-_AD_Z-5%-]%(J!4<G=3D at 4
-M%7HO*2V-LIQE=3D-8HB^\8!)[ZIFLBX<K_CN]T%;T7G:_L^&MV$K=3D&^AL$`.P`
-M``#L`````@```$4``.A<H0``0!$``,"H`0'`J`$"`?0!]`#4!KE,V at X:X/+;
-M@;1_ at 2(0H:O8+B`D(`````8```#,(0``L/]*2F03.B%.ZPO?L$2]9J$B_BJ!
-MZZY,S<'K-@"OA(`#:_1Z47-'&C6'@A=3D at 28\N>/G,<2E-HDTD6%-C;7_W=3D_Y&
-M3"^L:V(,]=3D2;;"K^)E at D>4\=3DH&A+7>IJ&'WE at 4TS*6H-,J+A3&/:QR3_5WQ1
-M!O_F,B.C[[6.>*RCV>PI@:C;D)](U0=3D6ZJ([V7PU at 5&GWW'K at 77775!7\!<,
-M9%:X,GQNA7QQ5@&9+C]@\$IV$K=3D&64`$`.P```#L`````@```$4``.A<H@``
-M0!$``,"H`0'`J`$"`?0!]`#4!KE,V at X:X/+;@;1_ at 2(0H:O8+B`D(`````<`
-M``#,(0``L/IOFC,JZ`$NOFQ\`/TF5N:/4UIA`6*L&_9T%=3DQ=3D'6WQ`_2I6'L7
-MI2MR>:7?A[AX(;6.2KN2_W54E;1(A.,>0WJ507T1,E"&@9\70OD+V]T1I&>T
-MS3VL6[QF9=3D_GOA#ED!`U3`&9SVTMT[P7\VDGK+W`(O79U-UE<#)`J;EQ4?T@
-M5^92YZZ^Q.F^XE'>%;V($XF+])S)9'T\!26C.G?^6Q+C5HT2<1LAC*J16*9V
-M$K=3D&1&8$`(P!``",`0```@```$4``8A<HP``0!$``,"H`0'`J`$"`?0!]`%T
-M!UE,V at X:X/+;@;1_ at 2(0H:O8+B`D"`````@```%L(0`!4+<4Y801&L3*%(KH
-M8.<ST!QS<O?=3DH%ZIS_#MY[;>`=3D9HR%<1,"`Z:/T5&7"]YK,6"?_$6$76S.A<
-M;$Y"A8J@,'E".JY&XU+8R^1AU,>6M&,PL]Q*A1./WJ7 at A]BLI&1X!N.QM_#A
-MURM5`Q@^F9A*.=3DR2EDJCL#-+&;LB`IYZ9``3(M(?U>>''F\D`+G[W<>G-.3'
-M.$\S;QF\VY7@&?'])#"J]P].K*0)-$(\[)Z=3DF8XH&Z._V at 9X"IY2SM')^R[*
-M</7_J&5S+]IHF3G#DY(E+V=3DT<5T\-A/F%E.78(H)%N00"RMN@,J:4,4I/P7M
-MQ*T<48UHY3^(]D%6%,`JSI*]CE228W:K*2`(X\.BU)"C03$KZ9=3DC^H>._QW@
-MMIHEU9C:CG<.*2(USA)@P\3_Z6K\E#+^7?<I?^-V=3D2 at QD&ZKB5YC":`C_7U@
-M_AL$GXVO=3DA*W1EB;!`!<`0``7`$```(```!%``%87*0``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I3-H.&N#RVX&T?X$B$*&KV"X@)"`````(```!/"$``2#]8*LQ
-MH*IPK9%+1,L<^?*GXCP[<3E=3D?,3CXOGN<\'&Y%M+R0H at GZ&)]2"&S6X]I']P
-MTW`6J]4^$$$M)7ELHT18H)D8C1)&,B)E!>!7)30O!HK5*%$O-7^Z&.YBDFJZ
-MH3O.JDDST])3 at 4\Q_A[4#,U<6IK=3D,F,N.<''TN)8REK[GNKXL'EJ'?6H)=3D#Z
-MPD/C[F<:QQ<[88`?8-L$_!^-SH<7,5!5_0^7IPW0`91+O`9)Y8>I?RR:PMC!
-M)7EAWR612'0\&IHW\!>G`^D$7_N6&"NO$6U/LEQ5$-+K8&$P#DE)T7%LQC4_
-M%RV0TG5SD0Q@]2VJH/`"]L;-&<(\')Y=3D'[KWOK5JKE,GVTD6*T%"M_;RID",
-M+(.[+/XK^_P%*G82MT;4P at 0`?````'P````"````10``>%RE``!`$0``P*@!
-M`<"H`0(!]`'T`&0&262M,P$C#T,G\4YH?./)(,$N("4(`````````%PJ``!`
-MJ-F-04]6>*T2C=3D at -RYL2'-$@]HSBAF78R2<7831<TW7I<FH!^R=3D'($#Q2B:A
-M:NZ1(7Z6ECCX&PSXYII<=3DA*W1E#.!`!L````;`````(```!%``!H7*8``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y9*TS`2,/0R?Q3FA\X\D at P2X@)2``````````
-M3````#!UC1@</#Z?LKLO(;Y,[J(,?F@=3D([^Y-^+!BXY at G5/Q]6Y@\>E*`]97
-M$Z6X(W82MT;IW`0`;````&P````"````10``:%RG``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.62M,P$C#T,G\4YH?./)(,$N("4(`````0```$PJ```PJA+[)M@`
-M_PZB,:F']\R[AB$1A'*KN.-:T$BD$'-E@;EOL?#N9_#,1)`KE0%V$K=3D&3>H$
-M`&P```!L`````@```$4``&A<J```0!$``,"H`0'`J`$"`?0!]`!4!CEDK3,!
-M(P]#)_%.:'SCR2#!+B`E(`````$```!,````,`_CPQN[5.7H(^*@$1A`A9[1
-M8'"PC6>7PL^X;029SCHX^6C_Y2&F^\/!VQY6=3DA*W1H_G!0"8`0``F`$```(`
-M``!%``&47*D``$`1``#`J`$!P*@!`@'T`?0!@`=3DEZ\;@\9-]I[8`````````
-M`"$@(@@````````!>"(``'@`"0!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``Y0>NPNK at OQP1`^RQ,`PDBXT9CH(R?I!UE+!M^D!1(H+^\2FQJ2:,
-M92<8WJ_3><5(`JQ%52L`]JW1D++,^4DZ["@\-Z<W:M>+."$F1N2.+FH5>L1F
-M\Z)#-IT#"@#):ZZ,^P5PB^^X5K+J6H"L`37M!.W(/*ZQXOV\OV:!D0H,_J(I
-M```DNRMI^<UUD7^].`F-WG6C9QTPKG at H0IK.:VR,`V[HE9XI```<``!`!"IL
-M$\27J5H[VPJB(P[9N,EH<GZ1````'```0`6+URX:HUG%X)P:TIY8Y(M=3DCOC>
-M1G82MT8%]P4`7````%P````"````10``6%RJ``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*>O&X/&3?:>V```````````I("(@`````````#P````@``!`!@````?,
-M[.15P1ANF<PC7VO>7A/U;M9N#W82MT;&!@8`N`$``+@!```"````10`!M%RK
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A>O&X/&3?:>V```````````I("((````
-M`````9 at A```@``!`!@````?,[.15P1ANF<PC7VO>7A/U;M9N#R(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``Y0>NPNK at OQP1`^RQ,`PD
-MBXT9CH(R?I!UE+!M^D!1(H+^\2FQJ2:,92<8WJ_3><5(`JQ%52L`]JW1D++,
-M^4DZ["@\-Z<W:M>+."$F1N2.+FH5>L1F\Z)#-IT#"@#):ZZ,^P5PB^^X5K+J
-M6H"L`37M!.W(/*ZQXOV\OV:!D0H,_J(I```DNRMI^<UUD7^].`F-WG6C9QTP
-MKG at H0IK.:VR,`V[HE9XI```<``!`!"IL$\27J5H[VPJB(P[9N,EH<GZ1````
-M'```0`6+URX:HUG%X)P:TIY8Y(M=3DCOC>1G82MT;J*@8`4`$``%`!```"````
-M10`!3%RL``!`$0``P*@!`<"H`0(!]`'T`3@''>O&X/&3?:>VM,2C<`7HBE0A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``$S-IW;:G`J6WTF0WG/=3DIZ74 at FJM)F;D
-M&DG\_]SOJ>0^%*HLR4REZLT\>/_+TV;)=3DKS\-(0/:>L<?@\CQ&2'9%SI0`FJ
-M`=3D98-+DX+ZN";:P:9(-E[W:1MGT'M?.-54N&[PH,!L$JO at +)D/@%N<0[`$6D
-M+9WYD at -TN,=3D\,7`021$9*0``)%L<.8+P<:WC"_8/(-C5?!K;MDO$4!1PR)GR
-M301CFXH&*0``'```0`2&.G^<M$H5S`+UK0&ZM6P4*XW8G0```!P``$`%&`!V
-MK>5?O1"'.63XY/3'*<5:=3DDYV$K=3D&VU@&``P!```,`0```@```$4``0A<K0``
-M0!$``,"H`0'`J`$"`?0!]`#T!]GKQN#QDWVGMK3$HW`%Z(I4+B`C"`````$`
-M``#L(P``T+$:TB/W69NE6[\>2C_7B%$$YFJT+U%A"$R-A566S`<W+SQE&4N.
-M@"7Y#+$^GI#`ICYB+'YZ?O;7MN6+>LSL&L6>0+RIUZRFEGYUOG@'LP"PMIKS
-MM+ at M]+:>SG^Z5G53$=3DQ5GIZUX!G;ZQH!-;BBU];J.1<I8+<VT?$H05VP=3DD'_
-MW8LTYWA0K#WTTW at G0REF"M&#-:3=3DB:<73*IC-7!3]-Z?EZ*29,Z;DYU4//*\
-M#PM"FHV!N$ZB:U\_(:E]"-Z9>5*U;.\U>24Q;J at C.G82MT9M<08`O````+P`
-M```"````10``N%RN``!`$0``P*@!`<"H`0(!]`'T`*0&B>O&X/&3?:>VM,2C
-M<`7HBE0N(",@`````0```)PD``"`^X,]=3DMD5U(X41(+`4M%A6<%GZY"KML7<
-M4!@98PMVPLE2(WB"OU[##!N;W*=3D9W6X`)\EC!]\(`D7N"_\X::HMA5.^I`+,
-MZ0:O[^8^@<\"9:Q<@AP";D-7<(,W>:/#<X#T6R7`"46"L0Z-^><S)WJ?"=3D$C
-M;PV>#UP[R#O'4W82MT9'E08`'`$``!P!```"````10`!&%RO``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z>O&X/&3?:>VM,2C<`7HBE0N("0(`````@```/PA``#@
-M-@^A<)(^RESGL?W1,6?A4FZ`P20)6T'\!6RBU]A3+8),!<F<@9#!/5,?EQB!
-M%FD$73HG:!Q>MR4\KV$565/1#XM4B/-FB?W\(]NKS"T(&17*HO($Q^\_SQA:
-MY%]63:VG,$A96.(@C>V?*4%4KZQ&@8567\7\3:,NK*K*0$M3SUSK)(`\'H6P
-M7Q4AC`B"&*>PL,`$L&M.?.1B]*WS0;%<RAOTN>#H4Z9\$5H4;/;#VQ+AKZ\6
-MMG&P7^"SL4 at 1RFZK[,H>4/;G_X&FF'!DV[5OE92C;]M',A(M`Y3F>W82MT9X
-MH`8`_````/P````"````10``^%RP``!`$0``P*@!`<"H`0(!]`'T`.0&R>O&
-MX/&3?:>VM,2C<`7HBE0N("0(`````P```-PA``#`PO2\0Q9PKX,"I<H:<E4C
-M]REV!3/$YF)D7M.6N]_M26:0?=3DK0Y"*9#WM1[C%7Q%T&/S][:^[MXR:+&NW0
-M1RQ])(%,GW<`;X!\G4"$G2D?<(R+LLULFU&FV/T+&@<3+IY0:HI$MQ<'W3*K
-M3R+?]A!3WQ+&JOY(\\D-C>Q#N=3D;W:T.E_X.RU6-66&"F$P:HX6*6R770/\)"
-M>B\QSO-F["+4Y&G5Y1.&@3Y=3DVE^&!+D/>7<E,CJP(.', at ZU>RAEV$K=3D&9JL&
-M`&P```!L`````@```$4``&A<L0``0!$``,"H`0'`J`$"`?0!]`!4!CGKQN#Q
-MDWVGMK3$HW`%Z(I4+B`D(`````(```!,*0``,#0,G,HA-+>N>J]"M^NG9$J*
-M6F[6!&:V!P?+LL+J(TL0#F#NK#[,QQK%[&X0=3DA*W1D?'!@!L````;`````(`
-M``!%``!H7+(``$`1``#`J`$!P*@!`@'T`?0`5`8YZ\;@\9-]I[:TQ*-P!>B*
-M5"X@)"`````#````3"D``#"$'S)ELN9!;GFA\']YL9)B^?<+VH/X0T3^(^U*
-MCW9Y*H&#F[]9+4_YK0P%W782MT8[X at 8`/`$``#P!```"````10`!.%RT``!`
-M$0``P*@!`<"H`0(!]`'T`20'">O&X/&3?:>VM,2C<`7HBE0N("0(````!```
-M`1PA``$`DZLB3R@@"KD=3D\^'*!5MI4$BN#[0?4'!UB\SB>\*-0L3<]`XG3#-C
-M]E_B7KTV0A<%B_>C[!)(L_Q*AJ5U+[0KC"+'8?JG[!OU]>6Z]^['0$R!D2SC
-M]4`)J.W;FZ2+#^1AK2>/J[<:!"K7N?';2P8.B^P&?1.$,T96+>QCP!2_.U$?
-MB,3C*3L"OX]X.:#F&`Z^!VIV.D?['.:/1HKZH2*6 at 24DOI"9[E4R at 7_-ON3K
-M?SE^?K9<5]6EA5B=3DSV!\*"P!*B#G8"A9>/+F)N^)$%B9SQ#7&9"!MQ1FQD46
-M,9:)$S0+$4D(G89'7IPS)_0<1$_M@`PC</0STG0QRAVL=3DA*W1 at CN!@`<`0``
-M'`$```(```!%``$87+4``$`1``#`J`$!P*@!`@'T`?0!!`?IZ\;@\9-]I[:T
-MQ*-P!>B*5"X@)`@````%````_"$``.!VLQ.>_DY)\3XL=3D[2H'FI6P"*RFF*O
-M=3DP2>+9''B^AU_=3DK<ML%_9'$](%Z6NK`R>_]`=3D%>9(=3DQIU;^D!8Q-]LC/2@]L
-MC/&@HU2[U=3D<C%@W!788Y&)U"2D3J[PO/1("CQ[4["2-:4^^]&A&Z8LXE/[5,
-MG!KKY@["#T-\U2K)<NS[$4>!>;+TG%0<L_^>I?@$^I!T2C>KL?G*U1YH"1OZ
-M;^%D*;*+._23FF61&45<Q@")-+)B4*<Q%@KLU]?4&I]+'GU8@`(\4+8&!-,D
-MTN+'ER9&2MKMG:KC-4D#[:@C=3DA*W1E[]!@#L````[`````(```!%``#H7+8`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YZ\;@\9-]I[:TQ*-P!>B*5"X@)"`````$
-M````S"$``+`64;/K/]\^_ at J>HJL775Y/(9W:$0W&K;10D)\X("H1P>NQ7.FB
-M1D2IFBPZP_5BA2--<LP!7SR82WYE-&Y>KG72G=3D4N&W0:^7!6??AE&><+^9.+
-M5MJ'VTR5'*4.[0*F]6WF[V&6 at 7IW6@E=3D&<!-U.#^T,LFT)"^_*XJ7?[-$[,/
-M19EV\$Z=3DJ`<\-SRTY"]MOE8RZ&DF\2OFX.)H1O4<L6!VZV at A>^@Z&=3DR5 at O%?
-M=3DA*W1G<A!P#L````[`````(```!%``#H7+<``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YZ\;@\9-]I[:TQ*-P!>B*5"X@)"`````%````S"$``+#,!Y*)^HX9*X)D
-M[Q9 at 4H1FN1:I!V[X+]X2?3)PBGM5*0SE!AP^TF^G>IR6IWX++9:/)@[+CC/-
-MFX&QL\^H]SIEEC4C#OA2PN7JO<<X[J.R>QB4#O]40(\KCE]]X'GG?%N&F/=3D_
-M67F*W%!"6'#`;=3DM0&N3XS+A4_3[(<.DGR2D/C<4OD-?'7136S^*SN4>R$A25
-M&4<GY%;I`*-E7%[I$P]'^&E55*3_MXQNH&A8=3DA*W1I0^!P`\`0``/`$```(`
-M``!%``$X7+@``$`1``#`J`$!P*@!`@'T`?0!)`<)Z\;@\9-]I[:TQ*-P!>B*
-M5"X@)`@````&```!'"$``0`4\QM"?=3D_=3D5">6]&:\8KJ4H=3DI>L7`1L8O=3DWVYE
-MCN:!&P:>HGK3QJ,$#SD3*.70W&J34XPERCN^G$E5"7&.I6]=3D:@OU[ZH]<^1?
-M,W^J77NNF%>-V at 0L\N,DCR072A)#8"G4EST"?$)2R;-C7?*CDNC:FGWYK8(-
-M:%5E9AG;>_1\7%MZ>[M74@%1X/N=3DF:M=3D-3;#HC\>1RKY at 75IW"#:.$4`5D8I
-MTN;"TE19]]7^A4]QUF4XA/&6UW%KS!YS]2$GF6!_/P)XNK,6OZTZ`)':OP6&
-M^EO712L?SF`]E-]#2:W<NI`#94'_FZ/PZ!V!0J_J+ at _>554/$K;$\`E,[QAV
-M$K=3D&T%H'`.P```#L`````@```$4``.A<N@``0!$``,"H`0'`J`$"`?0!]`#4
-M!KGKQN#QDWVGMK3$HW`%Z(I4+B`D(`````8```#,(0``L"1G*B^94.VY;P3=3D
-M3HN^`ZZX?WV;UX2J[1+"S'SI74OIJK.OED.S![\A:J at TC.@VF,J4_!C%/<C2
-M%^Z!,&QZWA:WQQ#_K5DX'R:T/0^*O7#5>CQ(91^7N:L_O,L?PAEF(-[YRH8?
-MJJT7)OD?=3D>ENM(>:'G>.^,+/(F&<DQ*[>^+$NZQU-#2!*#,T1CEO>1LVM at DO
-M`:C>CU=3DL=3D+433=3D8CR0/-50#)%T(-$[C.%81V$K=3D&*5L'`!P!```<`0```@``
-M`$4``1A<NP``0!$``,"H`0'`J`$"`?0!]`$$!^GKQN#QDWVGMK3$HW`%Z(I4
-M+B`D"`````<```#\(0``X)0]E?2F.%]_;%"`*+M;>M8WA)\V.#K<M^:MSP6Q
-MS,!I=3D$#7K&@V63[*!J5J!?W$'28%4`>L$OCU%$6_(H8_1E1O]J@<F>NM.I,A
-M4I&"IFYNNWP`;(T^X51!PU>8@/>F\M[W;VZ>RB&@-Z'3X<Y?/;:=3DQL)M$_?+
-M9B2BML+]W\QA:U=3DE$'P-%I"F36HR&4$3_7[1RI))QL"07G6"3M+J6V;4=3D2/Y
-MV0%!#=3DA'=3DK"5[?-3Q`:EZK76]<@=3D3G`,$W[GB-IFV(HHE2"K#:S'NM&]]2WY
-M-1=3DO.07.WC>&WO=3DV$K=3D&@GX'`.P```#L`````@```$4``.A<O```0!$``,"H
-M`0'`J`$"`?0!]`#4!KGKQN#QDWVGMK3$HW`%Z(I4+B`D(`````<```#,(0``
-ML*L]MH1^^8)Z>TDIQV)"L4N1"N9^I^?DIGJ65X"?:LZ4TD\^?+.D7](O7F2V
-M]#7'<[H\@J<D1WQ8C$-^YSGS%&BSP.[LH*O_=3D8\$OP<'NZH45KD2TWBIV:%F
-MBS=3DBI>Z_16$R&>-9F,8,,B4H6M[8THI':M'G_-VW:(F;:1+F(9M9%'%/":<G
-MI>EHE+.(;)J@\/'W<07,!:JM(OQD\/,LA<SL&YV6V9RNK-/,I_=3DV$K=3D&4*4'
-M`(P!``",`0```@```$4``8A<O0``0!$``,"H`0'`J`$"`?0!]`%T!UGKQN#Q
-MDWVGMK3$HW`%Z(I4+B`D"`````@```%L(0`!4#]*^K8$"@QUT21--=3D/[SZH[
-MU3IM55Q_#?=3D_TGP-YQ:<&W4BE4R%_,?%I4N:]:XHN>>.[R3LE,N,\Q8P8^+(
-M-NR[2B7@^#V[+SV4SH at XGAA?J*B at W/)[&1?Z_L_<"!UC^(73DTSIU0O?+4EV
-M$8$@=3D-Q*^8M/0$M?ZX5_$JK1CZ3KL9*C(E<PB0>(;`O&Q-\7<[)!'PNHS8CE
-M98S>:XU)!9X*[L"(B4U%JN<TG2G0)"*A;5^+VH>164 at 4;9E!TZ.[#)DI83/`
-M19D^PVJ0>?O3FG%?OA*@H`*/UXM?G6W^:]-1.;^>=3D=3D)G1TO8%+5!1.X$[4G>
-MIH;U&GU',M3Y7P:P84_\%C<V.+GM3Y(4=3D1)(F87Z2$C988^FSW:*K)4VL7#$
-M<"Y5^VTM>J*%N;TN)A`,=3D?%ZA/.&E6];HA.'L- at TE`_%[>-._ at 9!"9A,(\ZR
-M=3DA*W1M_9!P!<`0``7`$```(```!%``%87+X``$`1``#`J`$!P*@!`@'T`?0!
-M1`<IZ\;@\9-]I[:TQ*-P!>B*5"X@)"`````(```!/"$``2!SZZV-G5/``CX&
-M9%\["^U-X]_BVZ'D;XJ5[9E)N%KD(S+V7]>4[I]U99$P&*F.*EN1DJYDYNE"
-M]UCW`'6X<5K=3D*5+CQCXN/N\M*?W?PE3V^W=3DV2P6SI'?O44U\M_$3@\?QA^]*
-M at WM%5BBW.<O4KA;Q#>?/*_V#QI73Y-VBZCUNCLT(4"'\,S%4:YQ?V0N/K^A5
-M<3%6^_P"%&>W$2J-)]LX]!<7RTX at _%??-KP,HG8Q+5%T6<IHP,B[!ND55X\K
-M-_E_'U,!+WOX*+0[$>;LU;A$_<#P=3D;L\K'E6A+D5T6>PFEU/*3/O>'!D)H-]
-M828:'@L*@R75*104SS17.^!"#SHS6 at Y`7[L%?BR2)LD\@#W66=3D"NX4/WH`R7
-MWE08K'82MT;1``@`?````'P````"````10``>%R_``!`$0``P*@!`<"H`0(!
-M]`'T`&0&27GPSTTP":S`P]4L`]=3D]R70N("4(`````````%PJ``!`Y"(+TM?Q
-MB-Q8/:[\TSGTK48C++ at 9Y-45WE:'7N5\BGT"YTG*B$WG:GX&N?X'17MN?B'#
-M*6]<_8?[98:H=3DA*W1G\,"`!L````;`````(```!%``!H7,```$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y>?#/33`)K,##U2P#UWW)=3D"X@)2``````````3````#!`
-M^2?=3DNDIQA(S#H"5:R1%ZVX>:V/@E=3DG3>89/#'<*M;K at V*>6"R`?*R\Q_XW82
-MMT90&P@`;````&P````"````10``:%S!``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.7GPSTTP":S`P]4L`]=3D]R70N("4(`````0```$PJ```PBUMAW9;M^/S:@?1)
-MAY?*3!MD823R>HU<V&0KD0*7P4@)G*S7K?1]>@ZR2'5V$K=3D&CR@(`&P```!L
-M`````@```$4``&A<P@``0!$``,"H`0'`J`$"`?0!]`!4!CEY\,]-,`FLP,/5
-M+`/7?<ET+B`E(`````$```!,````,*R:NJ#GGFV'7R0QJ*;D]Z#QF2\286[/
-M#$UL$!&5/1+M9FAH/&)BGB:0HYLB=3DA*W1AXD"0"8`0``F`$```(```!%``&4
-M7,4``$`1``#`J`$!P*@!`@'T`?0!@`=3DEA;F8JO&+[2\``````````"$@(@@`
-M```````!>"(``'@`]P!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MOJ5_T4?/R%'2E.!)E'EI.P#G@/K<7#\7`JF87 at QCY(".ED`D1.%'H#ROVJIR
-M]3)@Q>,8[-*0;Q+XL&AR%$9?>SF;=3D)_R*\;Y?0G64%GULY]NI7E(/'./-3/R
-M[]@0Y8DJ[PI at _^JO<1]@J-^ZJ_?N;D:"[1L`(PHBDGZSC1<-MD,I```D^L;'
-M*\_TLP)"$X0C?@+I.9]'9(>?S1\5S%G17/JK$VTI```<``!`!*=3DW?WS%J/S/
-M/.TZ8H3X\W5]<$_8````'```0`5#/`Q[M>*J(.U&.+%)1QPL`G1.OW82MT8W
-M,PD`7````%P````"````10``6%S&``!`$0``P*@!`<"H`0(!]`'T`$0&*86Y
-MF*KQB^TO```````````I("(@`````````#P````@``!`!@````<CN+/%!O^4
-M0WJ\CL-3M5[99>?8B'82MT;S0PD`N`$``+@!```"````10`!M%S'``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A86YF*KQB^TO```````````I("((`````````9 at A
-M```@``!`!@````<CN+/%!O^40WJ\CL-3M5[99>?8B"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``OJ5_T4?/R%'2E.!)E'EI.P#G@/K<
-M7#\7`JF87 at QCY(".ED`D1.%'H#ROVJIR]3)@Q>,8[-*0;Q+XL&AR%$9?>SF;
-M=3D)_R*\;Y?0G64%GULY]NI7E(/'./-3/R[]@0Y8DJ[PI at _^JO<1]@J-^ZJ_?N
-M;D:"[1L`(PHBDGZSC1<-MD,I```D^L;'*\_TLP)"$X0C?@+I.9]'9(>?S1\5
-MS%G17/JK$VTI```<``!`!*=3DW?WS%J/S//.TZ8H3X\W5]<$_8````'```0`5#
-M/`Q[M>*J(.U&.+%)1QPL`G1.OW82MT:#:@D`4`$``%`!```"````10`!3%S)
-M``!`$0``P*@!`<"H`0(!]`'T`3@''86YF*KQB^TO>-U1\H]?K\TA("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``-T(CJ5P'\CYXZ#\<J2[MB`C&3`O9TW7L9^?I\A4
-MV[6D=3DF<7^#0*$6K^L,KS([CQ65[++=3D>:)*U*"NEQ3XTKFT,/D#+68&]2_^DG
-MA]\N5R"#?>T at 4)^:=3DK`</,%C"UW&A\:>22ZH;2$_V;'LH)?GZ3 at BA#LWWS=3DT
-M23Q at 2L[:ZJW,*0``)%!@-QLTJUHXDMP+IV+Y*Q9:)$418[YM$I;,!.FI*:$Z
-M*0``'```0`2F%,MH9X@%NV[WT(QDO`J6"F``0````!P``$`%<1F%K_S&W at W/
-M<?/[[<?WH'R]L^%V$K=3D&.9@)``P!```,`0```@```$4``0A<R@``0!$``,"H
-M`0'`J`$"`?0!]`#T!]F%N9BJ\8OM+WC=3D4?*/7Z_-+B`C"`````$```#L(P``
-MT`<W((9:)=3DR_M3-OYRD(+*J<:!Q1PLYC2C$A0%LI4-$5#R@;+XUTW<U:5$KO
-MG%RKDNM>W'U at U\4)0R1(W(/^J:"T=3D\.*>'Y75)(><5WK]-:5."4$M]9TN2?W
-M9HJ]G\T]_YPEK01GO8H=3D4X8_/;@"<';Y,X'"E=3DS1"=3D$UIE$0C2P;Y, at 3Y$*V
-M(;N/XRW242N?;^HF$%ZFXN/4[Y5X#]<+2=3DH<=3DL;P0(SZC`/`P_Z,O3`4/OG?
-M^L[LC,>29BRQ+V,F=3D&?!J2'@JA?W]>`+;G82MT8+L0D`O````+P````"````
-M10``N%S+``!`$0``P*@!`<"H`0(!]`'T`*0&B86YF*KQB^TO>-U1\H]?K\TN
-M(",@`````0```)PD``"`*;XB`%"&RKKU1,3_$3:R;K2!?/DU-62K%1HH2S+1
-MLI9)1:6_;+/MEX[SV)9MF"]_&8O0G+C at T7A%8<V^-9S49H`:LL3A/`:U1&;X
-M^D0+Z.(WQ#J=3D(5-^QR?!L5V_O?P8-<EB0'N7XAFCZ^RE9H8\`09+4-&7D-`B
-MQUD;-W82MT8FT`D`'`$``!P!```"````10`!&%S,``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z86YF*KQB^TO>-U1\H]?K\TN("0(`````@```/PA``#@S]>ZI"GT
-M?ZAO!3Q?`DZ8[)+UAMK)'5E-WI5_`Q'DIKX:"_E(KD^>HB5.YI67 at AI[2301
-M0?9&H>5/Z<E*RB"F>Q1F<I)&)6=3D;;B//+8:C6+-WJ_WW8:""^UST8B/(XX)O
-M_6])BOXHGX-TZ'*26ZD8U at X]3WHUS'T=3DRA1&IITDLE<0'!?1JBWKP]W#*'"P
-M<Y&%0_E*3Q*N3NL$)O_$:Q>4&O0K(,;=3D>)I&$C&,<F_%(0K0&QGK#?R/=3D$SO
-M%&UXQ8GJ$.:(Y2KN[%=3D@^I[M-/^*9"T>'S#(3[K$S2?#H782MT8$WPD`_```
-M`/P````"````10``^%S-``!`$0``P*@!`<"H`0(!]`'T`.0&R86YF*KQB^TO
-M>-U1\H]?K\TN("0(`````P```-PA``#`$RH^@@/Y0+U5>]/Y`^=3DBW0C)DUIQ
-MW(J<D$G=3DYO+7[.R<A/J?6$\UB0O8HF;*.G&)]-T#.P*EBR;,E@]L1Q+=3D9"1_
-M.V)=3DG#WOWJ,=3DM('U)?'>*K'6:9I2(E4P>.XKSW!K?%@(&YJ\Z^Y1983],\%N
-M!AJ)YNV'V)TGVOQ\J??R\R;J(@VX+R'L6I2G<4>H?,]>RFHM;`-?MOQ[WBGW
-M2E8V68D64?QO%X>][^B7COG-T>7Z<N)F<--N\Y&40HQV$K=3D&P>4)`&P```!L
-M`````@```$4``&A<S@``0!$``,"H`0'`J`$"`?0!]`!4!CF%N9BJ\8OM+WC=3D
-M4?*/7Z_-+B`D(`````(```!,*0``,&8*;0::NO]/^T8.'9VI,#U^L[<'G[R:
-M=3DG?0@>8*(H=3D3023_TOJ2=3D+OF`I#-=3DA*W1@$""@!L````;`````(```!%``!H
-M7,\``$`1``#`J`$!P*@!`@'T`?0`5`8YA;F8JO&+[2]XW5'RCU^OS2X@)"``
-M```#````3"D``#!U9DJTB[0F]8N'L0./_OQKIZ'"@*F8`6`C')F$*DRJ6?=3D]
-M\4T^)&BN=3DG*W,G82MT8Y'0H`/`$``#P!```"````10`!.%S0``!`$0``P*@!
-M`<"H`0(!]`'T`20'"86YF*KQB^TO>-U1\H]?K\TN("0(````!````1PA``$`
-MR:6&+?X8'+K/HCHZOX*R=3D52TS^,0VAQHK=3D);[)4DG5?VOU+NOI-7&<*)CH--
-MLRS)9LZ:%'1KB_0`@/9U>M/.]U#*G26G2%4QRA8D-RP(<4).\*K`[Y7&[G]$
-MO<&J)&H0Q"@CK)=3D^@]VLZCI7_1 at +><D\\RC$+!?Z([M\:1Y8&D(.(*"72F-`
-M`>[[\?GN^#CU:A6G^G&#,BVG>)"1FZ]XV"[*F.O-)LM+64^21UNX7 at H\M#=3DI
-MB+Y`:,J5?'!U^YT_%.YE0Y24PE"R_.$TQLF7*JST_:483 at 40R#O2:7*`B#0*
-M'(41AZ$GQ"FN8/Y'SENU785M%TKKHS\\?]-P=3DA*W1OTH"@`<`0``'`$```(`
-M``!%``$87-$``$`1``#`J`$!P*@!`@'T`?0!!`?IA;F8JO&+[2]XW5'RCU^O
-MS2X@)`@````%````_"$``.!BXO1L1:U8_RMC-W'\O^`8O0C`\]V`0.H69ZL6
-M8$\5;$[\%R8RUC\-IX`@([0_5VWSO!Q_&B-E<FCPUQ"]+3M&U?]/%`OH[(YR
-MBGV%U4(`3Q.RL^.:U6!E#@+Q(U8GDEPQ(]2 at VQ@+C"NS33A'^G!@J>/J\I:[
-MR?W]K^$5S#DV(E3C[H%D8WV;OQ)*VN)H<+O3QG#L`+/,C<+.RP.6X+#XGFZK
-M/?<(0TY^MYQ?;_6M[M`3N+0H%6R\1,II2Q/VI.02,&QXN'/2#7O.M492L-/2
-M4B(C1<X%>8*OKKE8=3DA*W1F$Y"@#L````[`````(```!%``#H7-(``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YA;F8JO&+[2]XW5'RCU^OS2X@)"`````$````S"$`
-M`+#J].>EN0$54 at 5P?*M,,P&,VD%#ZB`YV#][S/=3D;5(;?$)M)PC;-D9L*1)B!
-M%].X"M6EIB&(Q.L%[Y`U at -G2<P`@0]';GZRY(<RK%4*4H^A;D(+9LSZ#-+JP
-M7?-I2?9IPPO#+7_JO<XC]H=3D<'R/J-0@>X/)R%N]GS?$U\C69@"?OF#<:M7+K
-M4\7R4,)CS/L]-.FDZF9%9RIE^&+941>``N%=3DB!8O.J'^@`,L/'9_=3DA*W1G)=3D
-M"@#L````[`````(```!%``#H7-4``$`1``#`J`$!P*@!`@'T`?0`U`:YA;F8
-MJO&+[2]XW5'RCU^OS2X@)"`````%````S"$``+`%JWWS=3D-&QMJ?B)_69<F8/
-M$`3D^0W_1,#2R`$=3DR2P5(.Q`@2X;_&"]@YR<'K&I[;%=3D<>%1'$5[V)7<)@2M
-M.U>7]"+%RC=3DMWPPL9H(<ZETL2LZV+IU!K2W"*A?,M:/YP79R$0[.OOJ"_V at W
-MBF4)]GV*,T5:MW8/B-1F(>B7<0$`8$JB*C\^H*+D*J"T%AC3_?`KH#D;7:.`
-MG!ZY1L8`=3DT9NW"MO\UNKI24?&&ML=3DA*W1H1["@`\`0``/`$```(```!%``$X
-M7-8``$`1``#`J`$!P*@!`@'T`?0!)`<)A;F8JO&+[2]XW5'RCU^OS2X@)`@`
-M```&```!'"$``0!L+QXQ'$0LE05AK*L(77`8*F/=3D*5U[6_16ZV<G7T4RINHH
-MQFL*[A[.'3GS^X]4@"!9E+G01=3D,H'CMOH#;^!F&QQW3^E>'!^?BH%-"8N8_0
-MX_I3[I._MW/PD;6]>WEZA8#+O2ZS8QKO;CIE0B9/Z[,NO5(3Y!KG[:0G+M'X
-MT=3D8G</MT).+R0&TABF`4J%<HX/7G[$J7DG1GFZCZK`DKIB+=3D+;;)7Y4UG`#H
-M`UQ\=3DY/R;OPGT6.G%-<B<]F/L<-F?,0$@'W3JY>M"AB6NO!0QN1;5>7#!S?*
-M5[KN_FTB\E3_UE5!067.C_OQJC("+JN/JY.O&[&QGO4E;7^5H!AV$K=3D&KH<*
-M`!P!```<`0```@```$4``1A<UP``0!$``,"H`0'`J`$"`?0!]`$$!^F%N9BJ
-M\8OM+WC=3D4?*/7Z_-+B`D"`````<```#\(0``X',0UQ/P!7<#D"4"5F?0_\ED
-M/<!=3DY9IV''B-*:'K&F&`Q@=3D$_'U9E=3DURHQWG^(>_WU6H6(MG\,=3D81KL+3D-"
-M=3D;GWZ9S at K#2. at N/%,U*I+*D55%H'!P_+GVB:1DJOG=3D)P90UP_:/]V#R$UWFS
-MSA-]?U$D*I>)E^<RAD0/`#FG$F+`$?0*JA!O+Y&WGADNQ-_K;_P?&9,:M at FG
-M)RJG.J[I5](!]9W$K$YAX6<VR5?`@V\?>QK$<B!DX>!0CE0O=3D*>-+.8LHB!X
-M;4<X=3D$=3D,]OW!%A46Q-1`X4T2'B$7V#)V$K=3D&9)<*`.P```#L`````@```$4`
-M`.A<V```0!$``,"H`0'`J`$"`?0!]`#4!KF%N9BJ\8OM+WC=3D4?*/7Z_-+B`D
-M(`````8```#,(0``L`SIYG9>&0IY8[<]2&&JSG9%XN\AU%Y]BHN]R4W=3DWT.]
-M6:-T#,L:G7D8+DJ$FZ>.BH>'RHH:#?-Z]\;9]&;&5N95;+M/")!3)[BR)9>A
-M36EXW`K),1$8/8MT[VB7:_RE?QCK6*^?4+R;1[,U3;W>V#'09):CCJ>CZ'5*
-M2%W5A3_EL!SV9A0FEGU+K9X/1IBK)S2#A0%K3%F[:'AD:I31/X]'LHCU.KFE
-MUQ$.#4)V$K=3D&[;D*`.P```#L`````@```$4``.A<V0``0!$``,"H`0'`J`$"
-M`?0!]`#4!KF%N9BJ\8OM+WC=3D4?*/7Z_-+B`D(`````<```#,(0``L%4G1P!;
-M]%IX75]AY3P at T?%D`O?&%<NK[<CYXR$C`MJQL=3D10\<_DPK9*<IU[ON4M)N32
-M'8:B!*9\@U3MOJ.E at T19PY:'-,<JB(44"O`1_KN3\W96TB)8E)C`.M\0S*7#
-MUB]KK.P'[0#76D!AK4$D#K.20D<35IH7)D4CW%T'<$LM?YL[0)CRI_%[`I_\
-M*>D44=3D42W;57]C>49W99R+Z[%Y;7*S`-0O\7I^D>NT!V$K=3D&Y>`*`(P!``",
-M`0```@```$4``8A<VP``0!$``,"H`0'`J`$"`?0!]`%T!UF%N9BJ\8OM+WC=3D
-M4?*/7Z_-+B`D"`````@```%L(0`!4&+2)9E<Z!$WOGW)]=3DE9E)C1XAM9[;LY
-MBL7TY-BYI494WC_.Q>2[O(E;P0`U*VQ?-<I'Q'([I@>,_>@0)@9ITG%[(.F_
-MR9O&T=3D=3DVG))R(5?,J#I"S(;S"Z&D[OV[8*=3DTE67B,2..G9'(?U\SHL(!^6`4
-M3H.XK.;)RHHRJUS?XM>9"&V+UX(:(AWF.(P4"81>F7U=3DCZL!L_/VUGVC&D=3D:
-MT5-42/F>$'W:)4?@&?VH?8O6DN;F[::(AJAZL`*=3D-^06E#8!<,9)0I/9P!).
-MX<10H,FC;L5R8.%,.&X*SC3L(]R]__7>I\H^7V"FO,PN?H1>).5[;%HY<,>D
-M$ZU1N476G7JQ1L\SMJ'16]J]-]63RP2AUB_D]N0^*^Q4]3U9'J_I.-Z at A_?7
-MXIVH/R-!J[NJ"S/:!K<-%"M]K64],/AN\J=3D4*RK]SA1JJ022 at B"?=3DA*W1G`6
-M"P!<`0``7`$```(```!%``%87-P``$`1``#`J`$!P*@!`@'T`?0!1`<IA;F8
-MJO&+[2]XW5'RCU^OS2X@)"`````(```!/"$``2!X047&'^Y7IL<9<\L.6]^5
-M%3K]7$T&5>Z44.[30;,$\WE*,K(#&ZB9Y?$?[R4-Z/'RL::6KQ,X]Q:=3DU'\U
-M)YH2'$Z+_;!\YI/VVB.%=3D8S9!_Z9LW`++#[Q?^,1VRT1%/TYDP2IIYQM7%EU
-M[*,D%:I at J]G'/J_<A5G6EN>*!%`B'.PWUS1:1,O*HD4ZZ-6DI>>#TJ[&OHRT
-MO;+.-(K*\03N at CLC6SVPDMLS?"OG`42DJ"R!5+&.=3D:1RN;S64*/F?USR$CG\
-M)Y0ZRZ1&!>03'D3"`Z]V[-,82`!=3DJ^L7D at PH7#)F>-Q&Q`AH"7JU[[L*G8W7
-MW[*O[B#OL0UXEHCR0C"[EH$#L222-$N>;U$RNU%)E at Q^$K"XW>[.PO]D)782
-MMT8V/@L`?````'P````"````10``>%S=3D``!`$0``P*@!`<"H`0(!]`'T`&0&
-M26G;1+=3DL]E at A#)'VVF2M9K at N("4(`````````%PJ``!`G*:%*V*9/641/34Q
-MN#-R^X$CCP#Y<3[OM3J/$FH%2TB/+?!FIY^@(.8JI1@\`').8)@P:^4"9>^S
-M)E.[=3DA*W1M))"P!L````;`````(```!%``!H7-X``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y:=3DM$MVSV6"$,D?;:9*UFN"X@)2``````````3````#"6 at +EW+,28
-MF,;ET;^E_MOU>,F,N-%.[(26>8'0I8X$\T)OEQ@>A/E?66*-V'82MT8^60L`
-M;````&P````"````10``:%S?``!`$0``P*@!`<"H`0(!]`'T`%0&.6G;1+=3DL
-M]E at A#)'VVF2M9K at N("4(`````0```$PJ```PQL`'>[N&21114.'F6(E)P6X+
-M<,JA`DS^%[D[8I#YNDH1.+KJW:X8]-'H/&1V$K=3D&EV8+`&P```!L`````@``
-M`$4``&A<X```0!$``,"H`0'`J`$"`?0!]`!4!CEIVT2W;/98(0R1]MIDK6:X
-M+B`E(`````$```!,````,(S_JFA7<=3D at I'(+F+GWMKLEE:B\:G5?9UJ!S7/=3D<
-MW%?KD[1BT$!W$8JRZ>.$=3DA*W1A%C#`"8`0``F`$```(```!%``&47.,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE\BUZ=3DL4A;B4``````````"$@(@@````````!
-M>"(``'@`^`!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``G3ZS5?P[
-M'MV\P_@^<\L.GHDVQ^<Y6/N08D,6R/,%":S&'Z%]\6IL at E<*1<09$9S.C)N;
-M:))Y'@TXB=3DH,03?+#LKH>`8$>R;GAQSKOI7,5 at F-ZN^DT>".+',4Q?)6(AT5
-MOJOQ[(UF>9?YI?/>T4W]#'3:,VP1:)/M!NL1DP6'=3D=3D0I```D7Q=3D3A^I#N#52
-MKA'C=3DM9'G'".;5618H0*BLJ>;3 at V1I0I```<``!`!$LE24;</E1`=3D*N74#(Z
-M4I>!&T%#````'```0`7VTOGF!5>C[6TH*X/M:H[HK6(-S'82MT8(<@P`7```
-M`%P````"````10``6%SD``!`$0``P*@!`<"H`0(!]`'T`$0&*?(M>G;%(6XE
-M```````````I("(@`````````#P````@``!`!@````>L=3D_ at 0,JL]E\,4(]++
-MZVMLX7XDX'82MT8B@@P`N`$``+@!```"````10`!M%SE``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A?(M>G;%(6XE```````````I("((`````````9 at A```@``!`
-M!@````>L=3D_ at 0,JL]E\,4(]++ZVMLX7XDX"(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``G3ZS5?P['MV\P_@^<\L.GHDVQ^<Y6/N08D,6
-MR/,%":S&'Z%]\6IL at E<*1<09$9S.C)N;:))Y'@TXB=3DH,03?+#LKH>`8$>R;G
-MAQSKOI7,5 at F-ZN^DT>".+',4Q?)6(AT5OJOQ[(UF>9?YI?/>T4W]#'3:,VP1
-M:)/M!NL1DP6'=3D=3D0I```D7Q=3D3A^I#N#52KA'C=3DM9'G'".;5618H0*BLJ>;3 at V
-M1I0I```<``!`!$LE24;</E1`=3D*N74#(Z4I>!&T%#````'```0`7VTOGF!5>C
-M[6TH*X/M:H[HK6(-S'82MT9"I at P`4`$``%`!```"````10`!3%SF``!`$0``
-MP*@!`<"H`0(!]`'T`3@''?(M>G;%(6XE4YKR#=3DO,4R8A("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``%=3DK'D83[2/.JA#7D<%J5^8+&X_.9F2MFCTRJA!IH;A%;++3
-M`8A%-@&?YK%32Q#>2AEHL3?0]'6 at WA%9T at 1$3`'MF%(-%OT.)5MS.P95U&18
-MOXP\`B,DJ[;`'364SMBS17I8/5;GL[+Q;[#`RE.68Q:4+ZGKA>^6L?'^IJ8Y
-M.G-C*0``)(>87B[RT2=3D:#%GAU#@X/F]K)]]DH<JP=3DU&_'V0YT13"*0``'```
-M0`2KMZPD[*$+?TPY;K&(57)/R2Q0R0```!P``$`%5BBE\3E3CD]L`#M"$9#E
-ML07'Y39V$K=3D&OM,,``P!```,`0```@```$4``0A<YP``0!$``,"H`0'`J`$"
-M`?0!]`#T!]GR+7IVQ2%N)5.:\@W;S%,F+B`C"`````$```#L(P``T'POL_'1
-M_A&)!((G/H/F_ at C1O*$#M-HL7P,Z"R-R^G#PW):5UVDRSS>PD"I7$<@8Y<4O
-M]M4&CYO0M!2$6B!$)KN.P6*J<6GGHV7.NKA">+E7YTY;^%CZV;'_Y\2X1W*]
-MF*$C(`%L;/5L!7*=3DY;XI;@3\(N+4>(O5CQV\@IN9?$31SN+FJ!:VF!X4%T3T
-M])W9HG6/KVQ5`S(:C\U?DW2B+YJS"T5$P\<G>$M5JJ_P2F&/&A;[5T$2B&+9
-M5!Z.USJO2$&VGR9$)_T,<<:K^782MT87[PP`O````+P````"````10``N%SI
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B?(M>G;%(6XE4YKR#=3DO,4R8N(",@````
-M`0```)PD``"`A4GOZ/F#41ULVBQ\%'!<\HUVT);/VVG'BH]`FHNRT8"JY[6H
-MF_\Z6^D_'7[$8$`7GRUM*5:@\;2<ANSS'!68!&,<F.Q5D'/J@$%Z7O=3D<`K9.
-M+Z\;7GJY/%>JY<.%O*>4>22\73D7\L7E15*OR#C1&+_E*(?EFA#]-!']E782
-MMT9L#@T`'`$``!P!```"````10`!&%SJ``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ?(M>G;%(6XE4YKR#=3DO,4R8N("0(`````@```/PA``#@R^U<U:XZ33*NGYSV
-MCX`=3DB.A9=3D-[/\:SILT,KD.AS5!R5C]G at JM$.-<7U.49QXVH-BHE;FWGCKO8=3D
-MYM;"0"*<-(^LP]3-@=3DU>;SHZL*T;T;+AI^B-FN""TFFK:!XR]Y_T4 at UM^&(K
-M('9V1?`Y[E$IGG@(0Z426/KUOQ7F,OZ-33S#`#`I8JD$*7*=3D4!+Y/W%*G=3D at 6
-ML-"F)5=3D$6CY[^]=3D:%P]:<N#ZU1WI?JR(4DPTMH63G>809_RE<?RB\83H*E53
-M'_VFQZSMX!59YLB!NUT_5O'"PI$?64$BX?0KS782MT9_&0T`_````/P````"
-M````10``^%SK``!`$0``P*@!`<"H`0(!]`'T`.0&R?(M>G;%(6XE4YKR#=3DO,
-M4R8N("0(`````P```-PA``#`6Y6[&O^2$"F:[70LE'LICBK+@<<W]MJC_8JO
-MU`&K`MTD:Z'Y!\20,J-)[#L\V[(@9?A-=3DW+J$8#/[/UK%G@,^>68W/SMWTFP
-M?DZJ,'\)LST6`8)W3J=3D;^0#E)Z3R$%CSBZ/%W:FJ'.'@:BPE3GD=3D36)%K^2I
-M"`5QN90ZGRDHI-"&!X@[(22#1NU#VON1=3DZ]V)-6<(M,?0T"+1\G^N]O4IK#-
-MV17@/K7Y<^"'9/_3=3DD%'D00CS;<KK#0=3DIQEV$K=3D&.20-`&P```!L`````@``
-M`$4``&A<[```0!$``,"H`0'`J`$"`?0!]`!4!CGR+7IVQ2%N)5.:\@W;S%,F
-M+B`D(`````(```!,*0``,"R%1D1U:^B!$^Z-KD1F^6V>,YXJ(^;620P(U3XF
-M=3DKZ:#'^AZLDLH966`/7Y=3DA*W1E=3D`#0!L````;`````(```!%``!H7.T``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y\BUZ=3DL4A;B53FO(-V\Q3)BX@)"`````#````
-M3"D``#"[?<]M>[>?)]]:=3D9+MF'K,;E[IW9JV_[2\OXYNJ5[HJ'I<3"$P)G#:
-MX[D25'82MT846PT`/`$``#P!```"````10`!.%SN``!`$0``P*@!`<"H`0(!
-M]`'T`20'"?(M>G;%(6XE4YKR#=3DO,4R8N("0(````!````1PA``$`1=3D+GQ&,=3D
-MLI)DFL6?#<JE#M$FZ=3DN:H5/I1V!`5 at U"1QJTYM#A*].`G#!/?59R._S*-R<V
-M1.)4QG-K8^]O.5C!Y:^][4%+^(>&QPR9N1TUS3_[L2O0X=3DE2:\KRR,W9HVN7
-M(^]//CBBI'T<-1@<WGDQB]'H.KX_<GH[4\DP6FI:2TJ42HY$K3G3&Y'&4Y5+
-MIA8#P3G!1\9#*86LP&,R<$LS":#6ZS%4#5R8>:?+'@:7A3>8;P^_/.X;[\0`
-MV(NO#%C*5Z;%AE60PYX30I6[7D8>YE`R\Z/94:7R at GAM1Y'@IL2C)?F-!'@F
-M&UV`I%^<C-X`VL%N8XN?D*I]N6,Z=3DA*W1 at MG#0`<`0``'`$```(```!%``$8
-M7.\``$`1``#`J`$!P*@!`@'T`?0!!`?I\BUZ=3DL4A;B53FO(-V\Q3)BX@)`@`
-M```%````_"$``.#U;0OUL%M+H5+`WIO+%#U2DT#`@(#61"TVY1'6>=3DH2_F0K
-M;=3D4_?P0]F]2+LA?@@$,'O-E>+I.D"_.>S%6?::>>%[email protected]?4H7^KZ"3.JI
-MJDB0_1C7['MA$?+,XV"`%#3X+H\:F,ZM&HYV/HM)2%@4%_&:;F3F6Y3 at QB*D
-MA[_4R=3D+,GDTB+JRR\>C0A$&8(%XR5+8R9.'WZKI4O2OZ80D630J at 8V&'-9Z4
-MA+Q9`56%V$<R58`@99$[9#%8+K&F.&,+0G&2-=3D?([,290G'EI*?F_NM.=3D`;R
-M%D.5.2!K=3DA*W1M-V#0#L````[`````(```!%``#H7/```$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y\BUZ=3DL4A;B53FO(-V\Q3)BX@)"`````$````S"$``+"3*']=3D
-M8I*R at Z45&36Y;UU((B+F)YT`L6 at D]=3D:4AHGD*DLBB"U0#9;L[-8LW-9 at HX7B
-MYL"2AGB"X3I<@%NN'C"(G>GQ_M"E"NR^7)\ZF!'HF@!N-_XS3^*%BG[DH]48
-M0TZ0-3!",F*ZYM3@/I>CM0SG^J[[TJ"*G^BE#M2L=3D=3D>HF4M88RVEI/=3DJ%-J5
-MESE$T,51`5D9D2/U?&EM[/,J,Q)#&'C7-3KOQ6!0;63P=3DA*W1 at N:#0#L````
-M[`````(```!%``#H7/$``$`1``#`J`$!P*@!`@'T`?0`U`:Y\BUZ=3DL4A;B53
-MFO(-V\Q3)BX@)"`````%````S"$``+`^S/7W"91=3D'=3D#^&9/;0B[8F0Z&*EO@
-MS,:#*/BM\7T$X#^<603,=3D,_,$=3D8]%+XU!2[*:X.Y@[3-0A![\WZ59/@I,^@"
-M7*\>W);!;9\2TYZ/&*NGVQ.6*W1GSKCY=3D?0TUGJ'CZ00I5$G(R+C.TFN5A9E
-M5=3DB#GB?=3DFFWO+H9SJ75,K-Q%\ANEJ=3DHK>V"^X?G at 0/8>ERF at 6L/_$5;U<YP9
-M-#GAWS*."D=3DG-*5ILHEU=3DA*W1F2W#0`\`0``/`$```(```!%``$X7/(``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)\BUZ=3DL4A;B53FO(-V\Q3)BX@)`@````&```!
-M'"$``0"(@>D_F%54+2=3D\N8P/`CK)H>CV$^>FN)SEI:HHEUJJQ2/S^[VNT,BF
-MD:,`YX_*(2GLJ`0?"=3D3Y*=3D_->C&Y/8429U$:GVCKDF(*O!;8!*D$N3\W59`'
-M?52!?UE35NI,0QC?(WY20/.?1K\71TQB`3'7&MT,D:()/FYP7=3D)ZN*5>*^.X
-M``O%4U\'":H&1>RE?7@@B"ZWGY:PT12)(!)A*H'3EPO'4$_?K:<;[;H#"@#J
-M=3D,N06?Y(L?"$\.4:;_9CL8GE/R8HW('R-+.$1>TJ4'UR/(9L^V%](<-,#U@%
-ML8@)[V+`C#>J7+$?++:5)S('()E79"6$F%84M;6P95-V$K=3D&>\,-`!P!```<
-M`0```@```$4``1A<\P``0!$``,"H`0'`J`$"`?0!]`$$!^GR+7IVQ2%N)5.:
-M\@W;S%,F+B`D"`````<```#\(0``X%J"(D>R_WFI?YIRYVCA/&/KJ'$_KO>&
-MW)`$(%FY>(3QX]_,)<9$W+^@64A0.UQ$SNK=3D5;+8#LM(D4DC+8>#XC8[Y+ at S
-M:H7*#.5'JA^9QZO6N at 0YAP[P[F0B,I)I0.*D1[561&7"=3D*$`"0/+L[38`@H'
-MD8#N#J2QP*QP'6BX>5!NW0![*Z9V""DRHS'%<,_WW]H$J(6V?BJ)S_C-7N?:
-M;BYN-850IR:T(Q!_E!"O,M0)6I3;\",[?XWM-JC at -FG'F$3E[\];7G?8V/>/
-M@:18?:YPD'R*6(R]D[IEAWYV$K=3D&WM(-`.P```#L`````@```$4``.A<]```
-M0!$``,"H`0'`J`$"`?0!]`#4!KGR+7IVQ2%N)5.:\@W;S%,F+B`D(`````8`
-M``#,(0``L`#[_`VYXXDH%*#..2;+*Z]7K\U=3D2UNSC//^-HNJ;?5QL$3;8C8M
-M"T%-AU<^4G5D_N5#<=3D$=3D71CU at J)X0`P(6RMGUY^1NG?#F]6VS^$=3D])A.A\_=3D
-MWX-1Z?ES1E3S:Y-!L2T'FU(QU![6U[>7X!4"2.F+7G5!$PMD[4+O#.!]_?RK
-MY!W"N'O9:+#1V\QJ!<PL at 7@!RCLL%9O)B\ZI60JZUN/Q'`FKX"L_$Q>P&MUV
-M$K=3D&Z/0-`.P```#L`````@```$4``.A<]0``0!$``,"H`0'`J`$"`?0!]`#4
-M!KGR+7IVQ2%N)5.:\@W;S%,F+B`D(`````<```#,(0``L-8>&OUTD01,YDEP
-M<:_)';^OYADY6Q>@CZD=3D5EO^"A5I]*PWT7NM.FO`G'9U+-_L)FON>C(AZ^VG
-M7;)UP&6^5621V8OGG()Z=3D/GI`37=3D=3D%J/V<B:+^I!4\2-G.BO<06WSAUA?@#`
-ML=3DY7R?OD6"_HL]6EM>NOW(6/N!,,73<"):3'0OOLA^4,\;Z;>0(J3>5;+O"W
-MJMO.!>3J)OQF<X\-A"QI/$':05>>I\Y5JKAV$K=3D&IQL.`(P!``",`0```@``
-M`$4``8A<]@``0!$``,"H`0'`J`$"`?0!]`%T!UGR+7IVQ2%N)5.:\@W;S%,F
-M+B`D"`````@```%L(0`!4.A1-W13(5GTV[O3'Z1^@;9*#BZB[7Z4-_+`2 at 8C
-MNVS\+R^Z at R"$,FT_T/EGFFQ""@BER5&<O=3D?,@:R%7HOT]Y-CEMPE35O-&38J
-M8>JP@,N7W=3DAUMZ^+UL2`$2HBP4K/T!SMG'2K&;>*N`E54=3DPTY0N994*(ZQ.;
-M.)*M$/#JY4>AD1H#.M//M\8??M`&#=3D$B_Z&14J'W]'$[CW2GK$BL0\'"%/'&
-M?.+JFQ.0A0=3D0.?7QP3J2M_Y7WO at EH/9X[+VDII]R:Z=3D!)]/HU9HXL30RM&[,
-M&J$`H>_ET5(,*[;]I5P(52OXD1U?8[BQ=3DOFP`N:5C,C%<6%ET/8'@6>?\0N<
-M;:S#GL:`=3D.M9-.,V\R^N$'0IIU at Q\W0GPS]Q*MDA$!K\QH9L\VDM5%JF]H7:
-MT82CTI"@V$&S-T0"A1"@%*_1+!//*ELRZG)YL(7EHTW,=3DA*W1DM1#@!<`0``
-M7`$```(```!%``%87/<``$`1``#`J`$!P*@!`@'T`?0!1`<I\BUZ=3DL4A;B53
-MFO(-V\Q3)BX@)"`````(```!/"$``2#=3DXCQ`+ at U;Q^E6T%M[,8HR$>X"X]8V
-MVBBH1G-HF@\X&04R]M,2G$V.;/LH;>5M85>#<4MR[]VKE<Z,#.!&;OJ+T<Y)
-M\E3K'?B'IYEF0][X!4F[U]+I*=3D&C^U\#71VO+?9&$E&:Q:"PW3[1700%GPA3
-M],*/1>+[-W,)*8%=3D//_K[J]R&W4<PT);>Y;6YQRN]ERNU8PP2GCYSI_/2GXJ
-M:.4'G4R at V%31=3D]HJH,L[JWGBF2/-7+1^5G*9U6A&$TTDM^K+BU)1?N;BM;_C
-MA^A<;O)L>XJME*AER%<WV=3D'IH:#TC&XV?4:7QZHID02J at _^_K@=3DZ(/.%Q^$;
-MI_1<G;0RZ`?N\]YH/_ZTT\FCN.<4;D!X&<:M:VW9&?=3D]S$:Z('82MT9`?@X`
-M?````'P````"````10``>%SX``!`$0``P*@!`<"H`0(!]`'T`&0&2?F%'BB6
-MA?-H%M=3DN2"$&C(\N("4(`````````%PJ``!`EE*3A#V(<:J+]>R"5;KXK4DZ
-MIQ_2'^T,Y!.KI>@"7\&QKRH,6)\-1X1-)QK$DUT-K>SP!"M!FSM?8HR>=3DA*W
-M1LJ)#@!L````;`````(```!%``!H7/D``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M^84>*):%\V at 6UVY((0:,CRX@)2``````````3````#"'^ZT*K)VS$:GL:V1`
-MCBIN7<&H-=3DW^F\J300,/ZB5>L-L.+C]@3<+US2?R_G82MT:-F`X`;````&P`
-M```"````10``:%SZ``!`$0``P*@!`<"H`0(!]`'T`%0&.?F%'BB6A?-H%M=3DN
-M2"$&C(\N("4(`````0```$PJ```PO*QG=3D&/R*HD][=3DSFTE7I`##/^>,78XJ^
-M.._EK(;OT6'^-G;?U_QKN%3`WZEV$K=3D&-Z8.`&P```!L`````@```$4``&A<
-M^P``0!$``,"H`0'`J`$"`?0!]`!4!CGYA1XHEH7S:!;7;D at A!HR/+B`E(```
-M``$```!,````,(B@[OSW#2R\9&J7'@><OQV9L=3DCLB$N5J4VO.FW'(@=3D8"IE;
-MQ?,5B:JI*QC2=3DQ*W1J]@``"8`0``F`$```(```!%``&47/P``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE!'D+]1F"R7L``````````"$@(@@````````!>"(``'@`
-M^0!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``*9+[T>>[X[YN]@C/
-M)1/)\S"K%!0<F/C;Y_N3.V+PN+*_DLZ)G at AATM6U.X?H-1L4_0>K!^+*]*;#
-M3BTW!"5W]A\_WWM>)K2`"G3ZIESW>XN>O at A])$C[XIN37]T at -^^Y\:84CQXT
-M;'963R)V.D9HY.A4`HD?1>I(=3D#NB\GC\$<@I```D67FEVB6.]R)&#+'=3D_7+9
-MA%77MA4$`2]*Y[$$M..-1TLI```<``!`!/_=3DNL`(3NE=3D14\\&T*ZQ.6GT\.Z
-M````'```0`5[&3'<X8L7T0J9X<5G!I)9>WG''G<2MT9-;P``7````%P````"
-M````10``6%S]``!`$0``P*@!`<"H`0(!]`'T`$0&*01Y"_49 at LE[````````
-M```I("(@`````````#P````@``!`!@````<#,.(A_,29A':AUQ6>F&F"+-_R
-M;'<2MT;7?@``N`$``+@!```"````10`!M%S^``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A01Y"_49 at LE[```````````I("((`````````9 at A```@``!`!@````<#
-M,.(A_,29A':AUQ6>F&F"+-_R;"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``*9+[T>>[X[YN]@C/)1/)\S"K%!0<F/C;Y_N3.V+PN+*_
-MDLZ)G at AATM6U.X?H-1L4_0>K!^+*]*;#3BTW!"5W]A\_WWM>)K2`"G3ZIESW
-M>XN>O at A])$C[XIN37]T at -^^Y\:84CQXT;'963R)V.D9HY.A4`HD?1>I(=3D#NB
-M\GC\$<@I```D67FEVB6.]R)&#+'=3D_7+9A%77MA4$`2]*Y[$$M..-1TLI```<
-M``!`!/_=3DNL`(3NE=3D14\\&T*ZQ.6GT\.Z````'```0`5[&3'<X8L7T0J9X<5G
-M!I)9>WG''G<2MT;$HP``4`$``%`!```"````10`!3%T!``!`$0``P*@!`<"H
-M`0(!]`'T`3@''01Y"_49 at LE[+/KZ3]37H!@A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``&[L8YA[<U<"*ULO7NMAX%#U'\MC.9UKN(,-^6K^_.<#S]LP-.+-1\0W
-MM=3D2B'ZS2$)('+V at 5A[\W\>7:+GC^OPB"@00*(R\+W\?V?(A3OEB%!!/5KACO
-M01#Y.Y854"9%,VC/LF=3D?CT-A at 6+0#-A,$>;9"T;<?I4K6%<:45>%T/_E*0``
-M)(>^K/:C0$VT9IY"\S9L32?CTS"D2(M/^K=3DW?WF!Z'%:*0``'```0`3;LR9^
-ME>-\+I at BAJ,DF&S[-_E4[@```!P``$`%WX!9Y.$X/GHH1/!M93(-R3N*3KMW
-M$K=3D&:=3D$```P!```,`0```@```$4``0A=3D`@``0!$``,"H`0'`J`$"`?0!]`#T
-M!]D$>0OU&8+)>RSZ^D_4UZ`8+B`C"`````$```#L(P``T)W8SS@\(2#ZH^D0
-MQ at 6B[\G=3DS+!W88*MP5%W!W)OUP2HL5'Y?MTD^#84G3ZN%H#E5`%F+5/G%\A%
-M2%[)T'L61AKG#"R%V5N1$V&Y)B)%P\@YIQ5=3D.MMVA8./C`;D"53DC1ECG22E
-M,Q<]P2\?TLS'>:R)GZ^MIJ-.MT((HA8ET@/C,F5"KC1"#''/L(T31F?3935I
-MBXI_"V4L-(-TX]O(JNWW]US4?@$76/W>;.A+-9`M<D@)?G at ICW=3D01;R-^N-6
-MEV68QZOR:DL`MFU,BG<2MT:AZP``O````+P````"````10``N%T#``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B01Y"_49 at LE[+/KZ3]37H!@N(",@`````0```)PD
-M``"`#&1>7GZX<8F"SE^0)67GWMMY$'^=3DQ-37AXV-30-BHX_I.!TR&0$E(;-@
-M':)K$['G at S)G4LNK'JRW:EQS1M8 at D*:#6PT/+C(KYGE^!I%4Z/2F!^D3Z0`^
-MLY:-/<*]^L`=3D>G#DJQCAU5D6$$(B^R&'.O(-5@'#I?NHW.N4G'<2MT90"@$`
-M'`$``!P!```"````10`!&%T$``!`$0``P*@!`<"H`0(!]`'T`00'Z01Y"_49
-M at LE[+/KZ3]37H!@N("0(`````@```/PA``#@?0$O]LVF\>$$B5&\'\<]^SPK
-M@@5;=3D%N=3D/NK9"+B9NTA]:4OUN50'>3YR[<)_L7NF)_E_CS36CG:OX;Q!SP\N
-MU<''VM%O`#38C*KYP.H)B=3D1H0":&$23G_PG7"*4?2H9]T`")])VE#N!X-[_(
-M(SF=3D at 5)&_F'1>^TDG<$`<WA6!0?DWI.5-Z,H\(30K%6;;B8EO[42H=3D`(_SZF
-M,/`X-(FC?X\N)RK,IG>#Z?^KU<CACQ7 at QN,P_:E(5\3R#^!S;3UO)>^>]SN,
-M?>XJP&CXXX2QGA[YQA)]-3FGB17YY7<2MT84%@$`_````/P````"````10``
-M^%T%``!`$0``P*@!`<"H`0(!]`'T`.0&R01Y"_49 at LE[+/KZ3]37H!@N("0(
-M`````P```-PA``#`U=3DS!J^FPK>2"KZ`NBK^&[.E1^=3D'+ at QKCA5<@W@>H6CY.
-MB55OTB-%WF=3DH8_8"XDJ-T1_9OH&'9(/:Y53$JF311M+`CQYS&T`&@#C_6GEX
-M-"LM=3D+>,,-00WAGEP1\T\>10YF]A&F<1+\MMM)&;CV)4G4QJL)K>N,TF>0X/
-MKA$):V(X)$L:%(@>-_@;Z_F%$+:8=3DA%D=3D;-?;,40MCG\Q'A(^E6-6B!4CX5K
-MM0,C+SW=3D(/-\6HI:G. at 5LQ4%KO]W$K=3D&/2$!`&P```!L`````@```$4``&A=3D
-M!@``0!$``,"H`0'`J`$"`?0!]`!4!CD$>0OU&8+)>RSZ^D_4UZ`8+B`D(```
-M``(```!,*0``,/H-CQ7$4JR+(5UP2B_M1[X6I1)+I78")VJ;:A`)1KDT>@KL
-MC!"MQJ#F]^QH=3DQ*W1IX\`0!L````;`````(```!%``!H70<``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y!'D+]1F"R7LL^OI/U->@&"X@)"`````#````3"D``#"L
-MM-!X5ZFJ>]1!TZ5M1A at S?=3DSG'%_6(IE*8+=3DF9SJG:@.^YMMM`_UW'<@V-W<2
-MMT915P$`/`$``#P!```"````10`!.%T(``!`$0``P*@!`<"H`0(!]`'T`20'
-M"01Y"_49 at LE[+/KZ3]37H!@N("0(````!````1PA``$`+(X4,E?!XJ+N)4GK
-MG"FFW_!Z'K'`G^Y1%C2L+/&"=3D4A)QLP)\/'8S9\#-M\C'6JGV&H00>FR261V
-MMZ*L5I?^V;;4;38879BZ6G,X"O[^(@P#8_9R+>>NIO1[Q5L3LTUKJ]V#ASO6
-M+FHO.S-84RWJGE3`1>'X=3D,E`OAJ4"LTWV[OC)LXZNK1]-3'$UP,%@?<%D<HR
-ML#11:OV#)WT at NZ%Y(Z`Y`QU:@D at -*[<49^DP*^H80M[FM$YUY/7/$JZ81"/F
-M]I_'('^.#Y>+(MA/N)4^UM&3?XUGTD;N6\1M2=3D*Y'_:H1V>KE2WM\#W?/FQB
-M.-LAR%<!0W-UZ_'1T'@2=3DQ*W1H-C`0`<`0``'`$```(```!%``$870D``$`1
-M``#`J`$!P*@!`@'T`?0!!`?I!'D+]1F"R7LL^OI/U->@&"X@)`@````%````
-M_"$``.!TZSWDC<"DONOSNJF&+3:MQ1X$#[$=3D?!;0*:Y-QE-#!6+*LR_XW at R3
-M)5(5]JE:G[_3-?2`J<(I7^B=3D>:WCKV`O/!A,H0GNM(0H+5,P9_T4/!4O,CTL
-M5Y(L-8 at OY(4Y<@=3DFK(0]_T881I"^+HCC-[66.76KT^7(Z.;RH)UO)?/*%FI>
-M04N<LZ%E)X^NEB9U`LZ!8P$@SL)"8Q*-(+15GJTEW.X:SMR3&65):D)5A^W2
-MI=3DOG(G^JGJVB9B$`[VH)S&A)^W-.^`A$_?0(X<YEO8/X at 2(G%EZ2P-72LKF:
-M=3DQ*W1BAS`0#L````[`````(```!%``#H70H``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y!'D+]1F"R7LL^OI/U->@&"X@)"`````$````S"$``+!J2X,7ZNNC3J2G
-M/-?L]U8+M/>8,`9O-*2G2$=3D4JH%2!V3F6WAW at C-QEH/E>>[GMZ^I14\(_:I)
-MO:C7H;%SJ)36F5`02_N9<^U[%>3PK79QV(;VC"P=3D-8D^J\(<JHQAWY0#D9LC
-M]W`_,4NK!R7F/44%E2&&'\R4'"5K.;&RC0[0O,?+,`,G=3D&)]BRRFW8BL@^I$
-M'L*M2PG10`=3D2K`^J\7L/H^H2KNE/R1`1NZ/B=3DQ*W1G>5`0#L````[`````(`
-M``!%``#H70L``$`1``#`J`$!P*@!`@'T`?0`U`:Y!'D+]1F"R7LL^OI/U->@
-M&"X@)"`````%````S"$``+#^:<JX,J>1C!^68T["SW*\E+WRA8O*?Q!4TQ1D
-M+3\/]%9.Y.WI'"ZDM.%P'E,[-OT>0,.^0KK>?S,MXS2+G?*("XP\I!V(K/)_
-M6N.M.[-E]$+,X3>G(GR#[X=3D(&<)8<YT2,CVU"KH,FMWJ$<>?`518[^`4`.&Z
-ME'J^:"7]R!Q,+HGBK?2<QBX->%+U"CSQ at 3=3DV!<];875NDDJ8D>$T!$4GNXJ^
-M,8RZ=3D]1[L$\F=3DQ*W1C&S`0`\`0``/`$```(```!%``$X70P``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)!'D+]1F"R7LL^OI/U->@&"X@)`@````&```!'"$``0!1
-MRLL-+%=3D(`D_LQH<PO1EN6F>(</I*RB<5C[JA$2Y:83+"K+#B:%T-HY43N+08
-MRO72X$HAFZ\NDRD/D?%44B:5!E4TB67L\]2W962?-!4*-MO-6JJV1ZDJ%ZGP
-MG*'!1::\7A`CC5*5)$UY4^%3D;!TGL0WC*P`8?5QW,TY=3DJIR+%#@7Z+][K6$
-MW1[)9-U7-H^YQ]^9HG'<F4T/3F at D)6,SXJ!_;G$OSCE2X7^N7M[102Z-#2T2
-MU%OC at 9(NYBP#H5FJM,4'*:*4^AKC6RSG<-ZM'U6/@J:<<!*GOY@:8&*!HC\%
-M>@1MT^@>[*$<5+7L_QPV8URN]7W-X27!R at UW$K=3D&Q+X!`!P!```<`0```@``
-M`$4``1A=3D#0``0!$``,"H`0'`J`$"`?0!]`$$!^D$>0OU&8+)>RSZ^D_4UZ`8
-M+B`D"`````<```#\(0``X`2D01`'TPIKGD+H9L2:F83_QOQ#A-'QH!YC)W_D
-M/Z%P*.-F+,(6>%^?_BG27`<BQB69P();,!W!M!\)V3`-%-V\QL&*[,Z6+[AV
-MN]L/%H*N`T"0YWW]MB00@,`5I3-1"2"F-=3DYJX*R,4M[`Z001;0,$N18Q=3D\D[
-MG54WFKTC_LQZ34#!.#OW(*,-SO9X8#!YP@$6,QNPYQG:6(X, at _WIDQ?.U;NZ
-MP?X4H2KEG`*8+R2))YRMB%=3D;V"[VZ:@GZDZ*1C*0F:?-Q,^E&Z#JS4FREK9+
-M,A0(_?P?3;;B"VMW$K=3D&?\X!`.P```#L`````@```$4``.A=3D#@``0!$``,"H
-M`0'`J`$"`?0!]`#4!KD$>0OU&8+)>RSZ^D_4UZ`8+B`D(`````8```#,(0``
-ML!!IUWI-6G,9#&#(M5!OL+G6XY*EL^\1/[K7V2URV%]O_][,&!!JC2KO>G&`
-MF&/#)G\N-[.VR&.L-&E;LXRY']W%8FA[D6@\0'L=3DG^[/D-(HOL9=3DX^LIRG>K
-M,GEE`RVA0.NV^5Z\GN)HS1HI3Y@(_$;ETU%8,:YE,IL\P5U"I)\BC_&&4H&"
-M:PVQRLX:.7:AYE1#'+>N1%5QB>[X_EP4L6T!%I$]_K#=3DE'+V!69W$K=3D&%O$!
-M`.P```#L`````@```$4``.A=3D#P``0!$``,"H`0'`J`$"`?0!]`#4!KD$>0OU
-M&8+)>RSZ^D_4UZ`8+B`D(`````<```#,(0``L!D$:KM;#_T@<83'!(]']FIQ
-MM[<W9N=3D6:IR+P!R_09\<[*T;16/5B6XG9TC4ZZ%22=3DE."G**/['NNKL%.S!X
-MQ"/NX-37)T+N'RN6M&<$`D<AC1I9X<ANM$M#QB&><]7JV#9?3M^<5^C:2QA^
-M#$OGI*?<!"!?4_5E0 at VJ<^[9UJ0D=3D_W;I/_CGH8D'1V8[9#M'XRC]S700O1-
-M7!'YYK'>/ZH^(?L(7P<;;07[6,EW$K=3D&(!<"`(P!``",`0```@```$4``8A=3D
-M$```0!$``,"H`0'`J`$"`?0!]`%T!UD$>0OU&8+)>RSZ^D_4UZ`8+B`D"```
-M``@```%L(0`!4`]^'RT)D\G)/ST$GW:/8?9:*6ENK[HC-L!]H,4K:GUV*X1G
-M2FE7D#N)=3DK6)$N$/=3DP,;."%)EOJVK0;;(>*8H_+96L5$PXW*6Z.2861L<SMI
-MG(O[?OOZX;^$?0FMGCQ)1AF=3DR'/AI?BSL#8X7)]7L>;=3D6P9<KN[<;B*8(LR1
-M1>O"(>]N4\>"K$)[`=3DE-6:D6+I78W>0'AV$1<F]SV>`\21AEQSP'0KN$]F#_
-M5BDGUZH"3WINFEXZ)%&/5N7/9^1J\MNHF^6YB*F)`>C.A4%S_(W?WJ`-1R78
-MG7=3DS.7J^!2^`AO+%U[:FQ8542^W/A$,82O\%QQM-`P]C6O%+T;95HBM/6+)W
-M,O0U9'N#;5KF`^5_=3D.A45N."8W)U.Z;YWW^H\K828>?>SI9MOSF3I*N('ZV`
-M.<6%\K<J"\,9A,B,X*V$\G(IX3M]5[)@Q&\?=3DQ*W1C5+`@!<`0``7`$```(`
-M``!%``%871$``$`1``#`J`$!P*@!`@'T`?0!1`<I!'D+]1F"R7LL^OI/U->@
-M&"X@)"`````(```!/"$``2!`I1L=3D2./DXV<P<XM/)%J5H.%"-%>3!1%G/GK8
-M"$!381/QFHQ\,0;5L!S)%GLNT2_OLM4MZAP:WIW3`%Y#-WN_,&/]AC:.:]/?
-MV+W:O02^YMML),2-+Q^._/>+AEFBFKN-\BOI8IY=3DGH(F"I#>&IP\E4+'$V5L
-M$2",Z%QG::,W>]\R^2#9)"8GX][KR%JQE&5JB_3+]G2"N1*2G7V`.G+3L8S_
-M:G$.0TND7[JR!4)%A%`//ENHO4M$H\%"441A4:1E&J2V<.1Z/D?0>+."17/0
-M+U/(_UJHU.E<&_^4&E_`_$6-:L+"B\.#FX[@2_V/J#<,X#Z(TW^V*:[T'Y1'
-M;H?T.<;T,I/-*(P^N at WP9.S18(:"UF`5+K*UDVN9''<2MT9+<@(`?````'P`
-M```"````10``>%T2``!`$0``P*@!`<"H`0(!]`'T`&0&2:/:)98@#8RI]29U
-M'!(%VZ4N("4(`````````%PJ``!`]HT!GDLJP!O<D0OC at 06Q=3D]H%#NX77PMH
-M`NF&GM&-UDXA/!(>V=3D<X#G0C1>OK,*5LT#P"91G$O_I!F8G9=3DQ*W1J1]`@!L
-M````;`````(```!%``!H71,``$`1``#`J`$!P*@!`@'T`?0`5`8YH]HEEB`-
-MC*GU)G4<$@7;I2X@)2``````````3````##6\_NB`";P+BYZWAT,=3D_X!UHM7
-MHN;I(B?P5#D-F*HXMVDFHBP:.*FQ24#O4'<2MT9&C0(`;````&P````"````
-M10``:%T4``!`$0``P*@!`<"H`0(!]`'T`%0&.:/:)98@#8RI]29U'!(%VZ4N
-M("4(`````0```$PJ```PA+*<LW/+Q(YGB"T2H5"^BLJ^6*KG>_@``JA<&(I7
-M1LXIRF-+A.&2],;BOFAW$K=3D&8)L"`&P```!L`````@```$4``&A=3D%0``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CFCVB66(`V,J?4F=3D1P2!=3DNE+B`E(`````$```!,
-M````,+%A_BBL-(W7!MQA)B7LNQ1B1%$:-C3_/^U*D=3D[0R+H^HP.%.B-^^A6T
-MS0R2=3DQ*W1G^5`P"8`0``F`$```(```!%``&4718``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE.IE7L0C7^U,``````````"$@(@@````````!>"(``'@`_`!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``X&H:#Y"Q0'UT7$%<:N9_Z\2E
-MWQ58-(=3D,)87RAJ,HY'D[.UI<'ZK0%,&16W'#2$<2&WQW#<_1RNA"K\M*%Z%A
-M/!3,-]5),V_N"F'PSSS.X[J+-,8%O!"A*KYK_:[5B6B7VJ+*:E at FMF1@CMM?
-MU^^$WA_`V3J0FST.63/L7_J9U/DI```DJ$SC1:]:4*I(Z74W1=3DSXQ</6&L+5
-M'S+`7""QT$I+8B`I```<``!`!/7<-6>GUS.$Y>>'!K':2VZ<7FAR````'```
-M0`7V3Q<Y=3D1-W<%-1';:BF2SB\M[U:7<2MT:II`,`7````%P````"````10``
-M6%T7``!`$0``P*@!`<"H`0(!]`'T`$0&*3J95[$(U_M3```````````I("(@
-M`````````#P````@``!`!@````<R]L\F.5D]=3D>9]T_;BE7%76!2LY'<2MT9F
-MM`,`N`$``+@!```"````10`!M%T8``!`$0``P*@!`<"H`0(!]`'T`:`'A3J9
-M5[$(U_M3```````````I("((`````````9 at A```@``!`!@````<R]L\F.5D]
-M=3D>9]T_;BE7%76!2LY"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``X&H:#Y"Q0'UT7$%<:N9_Z\2EWQ58-(=3D,)87RAJ,HY'D[.UI<'ZK0
-M%,&16W'#2$<2&WQW#<_1RNA"K\M*%Z%A/!3,-]5),V_N"F'PSSS.X[J+-,8%
-MO!"A*KYK_:[5B6B7VJ+*:E at FMF1@CMM?U^^$WA_`V3J0FST.63/L7_J9U/DI
-M```DJ$SC1:]:4*I(Z74W1=3DSXQ</6&L+5'S+`7""QT$I+8B`I```<``!`!/7<
-M-6>GUS.$Y>>'!K':2VZ<7FAR````'```0`7V3Q<Y=3D1-W<%-1';:BF2SB\M[U
-M:7<2MT8>V0,`4`$``%`!```"````10`!3%T9``!`$0``P*@!`<"H`0(!]`'T
-M`3@''3J95[$(U_M332IKB'"KJ]PA("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``*--
-MSJ+?1>#J\`@(V/4`(XO22[0$W]GC9@")X"D"KIN66UMXQ7?6*!?4U"_$!SA=3D
-M7C:*6,./C.^>H:F:\H.XOYP,U+1(3>.ED,D5W60X?%Z3J3Y64<?1AE2]MXN1
-MM,5;_[494]ZLN5C<1+_K(%126/7 at S3'G:,O<Z7;3OD2KZS3"*0``)&;&Z#OI
-MK47J/1!_;- at V;392]KMQJFX]^3K)J7=3D!_?3M*0``'```0`2<KW;?_3]6S!"+
-MWJK39^=3D*=3D`0ED````!P``$`%M-Z'X2D>J0%8//0/Z)@&?\]`#FUW$K=3D&XP8$
-M``P!```,`0```@```$4``0A=3D&@``0!$``,"H`0'`J`$"`?0!]`#T!]DZF5>Q
-M"-?[4TTJ:XAPJZO<+B`C"`````$```#L(P``T&V[M4IW\5MZE&IKB<4CN4N?
-M6=3D!K(%F@!"O[3MWZEJ_JZ`)+Q%@;B4D`%KNZT5 at Y1^1LPIN9U'0SXJAZ9'Y?
-MS&14%O#\?ZN/G,`;YW;+AS16,STKP#JK65D_KX8^I!T0>H39M-P1Q:O0C at RM
-M8(_Q#C&-*JG-2[TXH?'7"Y\Y'L7BA#8*&NU8,2GI98F09/^1G`RZG;IF\!G2
-M]`;C!D:ZKA1E=3DW:R^9=3D<_NTQIJZW5MR09C-- at F_3BHZW$NFM%=3D6W"J$D;L^1
-M:RU!XD[.^7<2MT;5'P0`O````+P````"````10``N%T;``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B3J95[$(U_M332IKB'"KJ]PN(",@`````0```)PD``"`#^Y:
-M35#J<!88YOG*^]>[YR=3D7W<"7?%1TA.]VQNO0'.=3D[WDLH.CC.COE3`X?[;B:&
-MB=3D$BTL1W5[*Q__N@].[R0&P/WSE?D7Q!+WO#J#!/N^;_D):WZ,;1E3M>'M_)
-MC/MK1@[BI:?JXIJJ&-&[K2[>ME78/E1\$=3DY`E$8PHG<2MT:*/@0`'`$``!P!
-M```"````10`!&%T<``!`$0``P*@!`<"H`0(!]`'T`00'Z3J95[$(U_M332IK
-MB'"KJ]PN("0(`````@```/PA``#@T4E`AA&\9I;]OD0\23'=3D#1S+K4BJ:Y`=3D
-M)BU at BGCC23$*"(7SZ'NG]6 at JBQC11.!#;#D.R<K\/5]AB.J"5Q.H`!^DK1[(
-M at KBRIU')G!E*Q5>Y]L&"M[#\&!YJ4VL*J-H'.'T-VHV:G>Y`;D_1?"URZJ"\
-M^)`Q(OPZ:72=3D;RR=3DH[50<Q"_CM/H'??:?2*EK)WL:.V=3D)3=3D:G'+7Y<4[>.!:
-M*06'M"HJILK9WK$C!`*3A`2DL#2V&\4!L^,;UI\PO"LW6:014X3+3CH2M'=3D8
-MH/^^QLTRZ8B[><F9.5Q25W<2MT:]200`_````/P````"````10``^%T=3D``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R3J95[$(U_M332IKB'"KJ]PN("0(`````P``
-M`-PA``#`RH],F(1J4!2?M9SYSCRT2V6>$?&_ at SMLC?!<-*5*N-_,X&*B=3DK06
-MDSBI2NQIB48RS\?W3+KA_<LX)DV12\MDVPS6LK.BL"/@\2RB`S1SJ#AO-!9W
-M^@)]F'BTMFGWG),^"VB at J+("`J_(//#G8V'LAZRSQ()7JX at U'WT")@ZG^X_6
-M"6/V:^!-N2=3D4M)LRL at K"E<R5+U%*4%?XV**T#O at I)4@^H1(SR..J<>O/_FO2
-MRT-#9541Y)7D_P:4[TMW$K=3D&8E4$`&P```!L`````@```$4``&A=3D'@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CDZF5>Q"-?[4TTJ:XAPJZO<+B`D(`````(```!,
-M*0``,,9_-:?SH8?2CH@@D3I@)B!%A,--]S$=3D<6'K!]#DB*=3D4E4`3_\=3D&7&#K
-MVIT-=3DQ*W1B%Q!`!L````;`````(```!%``!H71\``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y.IE7L0C7^U--*FN(<*NKW"X@)"`````#````3"D``#`+*(S90KZG
-MS,TXR"UD0G1H$V`(Q_3T:4:_N%`!_6G*<!#)Y#)I68IZN<3_\7<2MT:-C`0`
-M/`$``#P!```"````10`!.%T@``!`$0``P*@!`<"H`0(!]`'T`20'"3J95[$(
-MU_M332IKB'"KJ]PN("0(````!````1PA``$`ES5:D[M3/RC?U6"H\3+),^*6
-M''+CB5!?.-1,)R3KO/E$L(10T:/@\2".ZQ&C/=3DEF-,V/.5U-WDIJZE.[/:F$
-MU3S&1!7PU&T:QL8!GI^!&3Q$0%2>E?H/O(`HV>INWY`.[27YO8G'JS<V%#_#
-MJ!Q6N^B*\WCW+,]PVERH2^,IBNKV<#274WXX3];JQ/QT@,V5N;9V=3DYWDTDTS
-M$SW_IJ'"\0>EVW+.(]JGUP/B?O/`X4VLQ^6=3D!IWO)']PD[%.>S`WA[!@,_W!
-M0U9:\&/+2E[>302M`,7^6/MN%:A8`^=3DFTI=3D1*U'F2:5N)ZZ-$I9:"4,MS-O3
-ME=3DI"6TDQY(_.=3DQ*W1M67!``<`0``'`$```(```!%``$872$``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I.IE7L0C7^U--*FN(<*NKW"X@)`@````%````_"$``.`K
-MM!$.1#;G"ZA*]P[KSJN>2>8=3D0]5&VI?I<V?(E"!&AP)R/6C=3D'&_`(YS7]`3%
-MF__8,Y/L20V,BPP>#CI/SY8!&[_)1/4^.*.R#.Q,7"6M8QM.C#@^1RC["CK8
-M?=3D2 at 0O'K_D'2W#S<TP)$%\OW(3Z;UP?:%"NM%<5$U1*B(Q:C3-`=3D!T/7Y/M'
-M>YMS25Z@:ZJA at 0$XSHX6%K^%&N at V\>_^X$)#+Q.+IL+L&TBQM]\J*().``'*
-M6/P=3DSYN'-$<,^:KJ86?QRWN?C:%X77)];80H1N5=3D;KU]/LD_?FTL=3DQ*W1HRG
-M!`#L````[`````(```!%``#H72(``$`1``#`J`$!P*@!`@'T`?0`U`:Y.IE7
-ML0C7^U--*FN(<*NKW"X@)"`````$````S"$``+#X(V(Z.#]Z:G.U0Q3S^)`'
-M3`>^\..*'_I?0R,?+&^DB4@,IP(AS-8FFW;%SANMPXZR*@*&N^NJS4%[+>T9
-M3`,O9\]OJW)0WNNNYAJ/LXJJB&P;D9F4<<P at B['(1\WZ91,^9>:8'NII;!-S
-MG"AE8Y]9GBT^0`%]XJ20H,UPM!G/V@;JX:IQEG+\4"X5S/=3DJ^[[8#271J#M\
-ML.MW6E6.DHM5I)JC<4>W8#PA at QX-=3DQ*W1I/*!`#L````[`````(```!%``#H
-M72,``$`1``#`J`$!P*@!`@'T`?0`U`:Y.IE7L0C7^U--*FN(<*NKW"X@)"``
-M```%````S"$``+!Y[P+<812()+0&`TN$2/(&)=3D``."+;NE-P$C*/-DNRFUMT
-MCK*7`*;7G&]LUAX]+&@FNBCZK*X`(W9QBM9K@),X^9ZNSL0G5*`7;VTE3"8V
-M'V4`CPR3'#NZY@(4P#_;F&N&*N.E4^F[+*/@C'E[_Q#GV>JT"F$STVE=3D7#^U
-M-38;Z:%%0*'G!M*=3DE$<C57I\1,^F[`]X>PS4GDZN)+WD](<&DN>A#VU4;_DM
-MG]X+=3DQ*W1H#G!``\`0``/`$```(```!%``$X720``$`1``#`J`$!P*@!`@'T
-M`?0!)`<).IE7L0C7^U--*FN(<*NKW"X@)`@````&```!'"$``0!8OLR2S/PG
-M+FW%=3D#Z-;WV&.)<^!5_%^);@$-EA=3D$F,\=3DQ,M*.;=3DGM#[U-\;5XY!P_NCNQ;
-MM_^$&82`S^7#UL<'"Z+_6*,J<:7.L`C8-_CNN!U96]$C,8AELY/S'2D<<'5;
-M&.JK&&0F;UW"G_/'*@(>Z^X?/M#3D3OQ4S(>98N$.0E/HUK1QCW0F7\!17O_
-M%U']DG^&]YW6A3[#CO[B)->S'G?4]!@+#?B!=3DM2$JR]P!Z&?44Q.[?UQ\0,]
-M70'K5QPTBEC`;X<,U_S&[T*O>>2^_!8$;:`NIP)AU?#A9/0GL&VT\.&ZM1#\
-M-5(GF/X-`6HA`A_57/!;S%P-DM=3DW$K=3D&WO($`!P!```<`0```@```$4``1A=3D
-M)0``0!$``,"H`0'`J`$"`?0!]`$$!^DZF5>Q"-?[4TTJ:XAPJZO<+B`D"```
-M``<```#\(0``X,T>E,,A]CT8T%3Z0\H$(F>U4FRZRHL&,4V20<5V\8;,'`])
-MFZ_EV(J42_(2<;@5O4[YJ=3DO>RH`E*:8EQDK<D8"06I@?'/5'NAZ:)_03`5:[
-MFM>]5K./+!:KW>$HKT'/<":ALEF\?A'0TOR.-V?N';$&:R;6)TCW)/J,'MTA
-M;XG4+_/YT\NT-P])3+)50S['*U1?70MIZ4<*KC4.B!1<9D^9&^KZ9SPIA5",
-MAELL?KK43LH3Q(-R*\6$"A#O\/`9/BTNWAVX$C<*8ZJ_U4?Q\@F3V;.7]]0D
-MX2XC]6)W$K=3D&K@,%`.P```#L`````@```$4``.A=3D)@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KDZF5>Q"-?[4TTJ:XAPJZO<+B`D(`````8```#,(0``L/_IZE[=3D
-M"_,^V.CKVSH/ZN<L@$2&!_Q*(0A[S<S"54,Y#`H79J*)%NSD`:_];^;I66TJ
-M66L)CW+W^(1SN;60A]]EF8#VHYL6.0;_M&FDTFPK6F%IB9WRW(=3D9J/?[8DA5
-M*1JJ9I]$!H\'1:UURZK^09IYKDLU2K(QYL.Z!AN%`-:E$4F9U2QA@'CE:'Y"
-M"C.@,=3DG+OP&"@&6-,#GR*74!0D/EU]"U8(2'ALR%DR-W$K=3D&D"8%`.P```#L
-M`````@```$4``.A=3D)P``0!$``,"H`0'`J`$"`?0!]`#4!KDZF5>Q"-?[4TTJ
-M:XAPJZO<+B`D(`````<```#,(0``L$`DNSA<J&<8W[W<MWK_ at XQX",W7MU3?
-MDR#NG.:U#S43D`<8KO9WMTPCEN?1\:</0 at CGZN):)Y>`O$UGFUMORQ9.GNSO
-M8-,P?]3>EWG`&@CCQMM6FC;E;(`'S>2-$/E[^Z8?("5)9(<1;VOHW.TNRR\'
-MU1L-^&A?6ZE%CV<\+"F_PZ!2E=3DH+8Q%9.9H7Z1\&^$.U];%)I+[S)`Y%U(3A
-M0<>7M$)>?BS'QFC6,8IW$K=3D&&$T%`(P!``",`0```@```$4``8A=3D*```0!$`
-M`,"H`0'`J`$"`?0!]`%T!UDZF5>Q"-?[4TTJ:XAPJZO<+B`D"`````@```%L
-M(0`!4&KXG5NHRS1562Z/<YBPSJ<;JM4YGYOH+_OC3OZIN=3D;=3D.V>]:8DD+'Y=3D
-MV)URD54N?Q#)"CS:O"F[S7\(P=3D0+9%A5AP?K at UD43J<6B-!I*V$NZ.-$F3TH
-MD[!"BYR9@'5[T$RO6:_%A#CAC0I5^'$4'&>HG,_ML"=3D%SNOQX[("F)#6"1:/
-MJ58G<"Z0:T1P^I</@$4%66-8\,&NS7+5ZPBMLV=3DPI()%1[SM!->.+_#/-7%(
-MR!RL9%W43N._L"EQG3GCN>PO]+0GS99K!<_]M1*&%RF,C;("Q^EK2G`DJR03
-MO9Z\WGSNK&IF/"6:A<VIJK<\NJQ;Y6)<^@1`@)O\#HU0'?'K9E<+JXEU$<3T
-MCG44S+MT0NJ1#A$9Q?V36?#IOJ?5S!OYF=3DEFS,0$R.&@:S3%QI:MCAV^::4^
-MS.QZ"7/*L8;N#H<_CS?M?"4*;(->=3DQ*W1A6!!0!<`0``7`$```(```!%``%8
-M72D``$`1``#`J`$!P*@!`@'T`?0!1`<I.IE7L0C7^U--*FN(<*NKW"X@)"``
-M```(```!/"$``2`B!2X5.7XV;5V.:%IAN!A!E6RS!/O\]MFQO<RR^C"X(J[9
-M'J9`]:OLV-`/"J^E&BKRIZ3>^D/O27E0066?-%"W_\,)E6F'Q/YC at O7MOODL
-MI4)=3DZ-8L=3DTQ$P$PG6[/?`Y1%$><5ML9!9^SA+1`>K%01TAF9E!'8I].U_XF&
-M9T%#V2A"_71L4[H&;()F^A;5&'-57[0_QKI2-89'KL:BEAQ"$:."45,DW at _4
-MV!4,(/.3XN9H9HCG!/!&>K-24)#EAK0"D2>R)C$^)]@'&#!Y^4C\2#+R0D9K
-ME\Z)M[O<8\EK,*)ZWP>OP7?Z7/W0?G3'?*?- at 1<.`1-+<'[38OEJWU/5CD8`
-MA</N=3DW+U9$>)'SN at A:/)?71`6E*#BO)4X'<2MT;.IP4`?````'P````"````
-M10``>%TJ``!`$0``P*@!`<"H`0(!]`'T`&0&22P at A_#,J%V4\X>2G,&<J7LN
-M("4(`````````%PJ``!`UNR!YF^3!37.HK!8VZ#S`B(;5]XS:9H;B6N8U1)4
-M#&C at RS9,9*N*PL)1E at 6:QA9RVZ,:I<2"]$P@$5<,=3DQ*W1C^S!0!L````;```
-M``(```!%``!H72L``$`1``#`J`$!P*@!`@'T`?0`5`8Y+""'\,RH793SAY*<
-MP9RI>RX@)2``````````3````##QONAM2(;PY/N*()7VC[:?J-5Y[`^8$*YY
-MX._=3DV&0?(<!MH,88!GV*:_[=3D at G<2MT;8P04`;````&P````"````10``:%TL
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.2P at A_#,J%V4\X>2G,&<J7LN("4(````
-M`0```$PJ```P(T[@\T*5F62/,J?Z(M:)`^:H]Y(R?\;A?MTWV@<GHKE,WA>H
-M@)V\G(:V(\IW$K=3D&]LX%`&P```!L`````@```$4``&A=3D+0``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CDL((?PS*A=3DE/.'DIS!G*E[+B`E(`````$```!,````,-M@
-M)@%<7!((VT`X7['"54-/\ZZP=3D:5N2&69<`J7<R0*2*?U6MF9"\<P,G@!=3DQ*W
-M1LK-!@"8`0``F`$```(```!%``&473$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M at R'5;`N*EU,``````````"$@(@@````````!>"(``'@`_0!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``I"(J3Y;<?4&`3PTYDD7GK-%0X5\NK#50
-M!XEA]&643,K<?[M,INR[B2+-NM[C(%U2SCH),J3D5K5&:DPE_>`,G-?B=3D--3
-M7Z9.)9E]+#7=3D;Y/2('G!SVO,%7LL=3D5,2C6+$QD/'I`-CN;6A<0Q!I01/VMWQ
-M)5H%>MDE/K*:\[TG(SPI```D_+*:F+6[7KOEO7><VNCOO?8,.+HKJ_(QF0A?
-MU$Q7-_,I```<``!`!#1(UTXHQ7KBWBNK3.0@?10A($5G````'```0`5R%15K
-M#:W=3DB=3D,#VCYSTTAV4W.*;W<2MT9DWP8`7````%P````"````10``6%TT``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*8,AU6P+BI=3D3```````````I("(@````````
-M`#P````@``!`!@````>7/&@?R-I'_6J:#3)`8_HS9RZJ3G<2MT8X[P8`N`$`
-M`+@!```"````10`!M%TU``!`$0``P*@!`<"H`0(!]`'T`:`'A8,AU6P+BI=3D3
-M```````````I("((`````````9 at A```@``!`!@````>7/&@?R-I'_6J:#3)`
-M8_HS9RZJ3B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MI"(J3Y;<?4&`3PTYDD7GK-%0X5\NK#50!XEA]&643,K<?[M,INR[B2+-NM[C
-M(%U2SCH),J3D5K5&:DPE_>`,G-?B=3D--37Z9.)9E]+#7=3D;Y/2('G!SVO,%7LL
-M=3D5,2C6+$QD/'I`-CN;6A<0Q!I01/VMWQ)5H%>MDE/K*:\[TG(SPI```D_+*:
-MF+6[7KOEO7><VNCOO?8,.+HKJ_(QF0A?U$Q7-_,I```<``!`!#1(UTXHQ7KB
-MWBNK3.0@?10A($5G````'```0`5R%15K#:W=3DB=3D,#VCYSTTAV4W.*;W<2MT;P
-M$@<`4`$``%`!```"````10`!3%TV``!`$0``P*@!`<"H`0(!]`'T`3@''8,A
-MU6P+BI=3D3$L$TB[F at QL0A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``-A at Z1(>'K;;
-M&JJ5O)82S!>Q5^RT"OV"GDJ5RL+JEK0!=3D=3DVU_F\K0?3F(Y8.S+<2W,^Y;@SS
-M"IWALI/.IE\?^:J\!A7S88;6OFY(.K1;O.<OT%Q2UAP1AGS0QE\-,'1:9[O.
-M":28`Y:9_VW#"N+J5NM4TE=3D#@AC,A/O&97[3<4(W*0``)+`&[G??ABS,D9:Z
-MBN96*/'3-X+L'*EP::+0CPZL=3DR2V*0``'```0`2GAVO3M3 at Y4\YV\V.A!JG]
-MU*4^B0```!P``$`%&%Q6EW'M(J1IBJ<2X3(09]FM,PUW$K=3D&-$$'``P!```,
-M`0```@```$4``0A=3D-P``0!$``,"H`0'`J`$"`?0!]`#T!]F#(=3D5L"XJ74Q+!
-M-(NYH,;$+B`C"`````$```#L(P``T#71FZ&6V'P1%&<%\<28NO$.M_MT_SBY
-M-\!=3D^ZM.M#G/HP]?4:+6EH``B;(P8TOU])93O8$;?,VM,(*B5`8-D2L1F^C%
-M"XJ#U5_Y"!`\I<F,V*U5]>Z]6&M[I#SKS0+6_<+-M'F24M9!W?+L=3DS at E01A9
-MB*2A<O4$[:XZ.K>!<F>!&..(H0N"/30<MEL6QJ'(GV:![YF&Z;#'OMB%%;[,
-M[KP+C`!#`%D#&#+3^H"[<X8,<9R'0MR$P,"R;&6E4)9[16HXLM3N=3DT5&\_H#
-MYG<2MT;460<`O````+P````"````10``N%TX``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B8,AU6P+BI=3D3$L$TB[F at QL0N(",@`````0```)PD``"`-H0Y'L30YQ#.
-M::16AOG/5962H%S.\QL'"[3<QRB]+5K_MF.%21N)?[<%0DU2;E6-C.]S7FU7
-MWSQ:UMB;'?XO#Y8A\SU*6LM1D1-1U8GR\6<$NO_FU\K.1<[S_Q_7?IE;QVYQ
-MXW]%R6>LJX;VD921O@(^!<\2O=3DNT016,;G<2MT8`>0<`'`$``!P!```"````
-M10`!&%TY``!`$0``P*@!`<"H`0(!]`'T`00'Z8,AU6P+BI=3D3$L$TB[F at QL0N
-M("0(`````@```/PA``#@UM)YQUH^*4]S[+]Y@/PDIDMQR+@%[PI\T<`RGPDI
-MAU_G-![M6[D<I0>T,N=3D\F1+<G-,&$$"<+<L46?5N&1Y9 at XAGB\LQ!M8]'%1@
-MYSP&,=3D..U])AQ3>\`2G.]=3D[T3^WF8\>5)_LNF!?SE?7FY^GAC,;B%O<XOHQK
-MRX#`9+YBSK/>"V;[F,OZ10=3DE`+F?ZVHA1<!*J&O*$[(=3DSZ6:&YT/A@&G3I1G
-M^.&5Z7F`KAJQ`Z62-&Q-+&O-#,)M0D\-!!(CFI>>9W1<=3D^`PPDF8(VM at 1%3@
-M24Q#.,D`2U6S5W<2MT8-A@<`_````/P````"````10``^%TZ``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R8,AU6P+BI=3D3$L$TB[F at QL0N("0(`````P```-PA``#`
-MM#N)RW1"=3DW,I>PA8;<@+F@!BE63PA,G&J>-L_$C>(\(PN[^/^,HLDK+:]&._
-M5#;70J+&=3DX3,8][-X$@MC:.OM6=3DV3TN@)X.+Y3P%"#`/!!C5T+B%OGOGLIR\
-M0K[PKM:LWNCN]*T^FC!]2LJIR]QK(%&?>F at IXK<MX#++\`_*:E6QCXV&M[Q2
-MX](YD(=3DO/5ZMY)92UK22=3DJ#1:*MGR9/D\H[H7/0K')PW)5W*Z@,4W%8CQ`>F
-MK]SLC1BG\;9W$K=3D&Y8\'`&P```!L`````@```$4``&A=3D.P``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CF#(=3D5L"XJ74Q+!-(NYH,;$+B`D(`````(```!,*0``,'&$
-M(+CO=3D:.\:`)EB"Q#`A^@+NP&GS]R<:JD`D>@S<0LX\G=3D8X.M)HD1HC]X=3DQ*W
-M1NJK!P!L````;`````(```!%``!H73P``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M at R'5;`N*EU,2P32+N:#&Q"X@)"`````#````3"D``#!0#,6[[U\E6IQ&FOP-
-M$]O[6Q1_/BV45O(Y6N^Q7^&2G@'U;/2?&4RI<;7[@G<2MT9\R`<`/`$``#P!
-M```"````10`!.%T_``!`$0``P*@!`<"H`0(!]`'T`20'"8,AU6P+BI=3D3$L$T
-MB[F at QL0N("0(````!````1PA``$`AMT[,%;ZUA^/V0%N4W_,,ZNO'7]-LP7W
-MZ(,LX\*`=3DZ>'\L2+!4:7GSX'2HITJ`TXA]CW6GQ0L,W<T+TU"6U*I;VS/"O:
-ML>LS!(_ABM(TLQ.-<*"@J,OS),AQ6QW*#+G52NH!38N$:20I58QTHA54>$E\
-M_OJAD8X!\8PD$!:[,\M7K5.G&RDT%=3DVE<6.P/&P at 8HA.K:0&^$MHHI3(F&75
-MGLHWMG.@/-4Z+Y#R!F%-)_F):].$+4?;B32O7+^!+6/>?R8+,*L\JUAEX_N%
-M5X2RA`CGN>$Q)SH8=3DAD3$G#I=3D)HT_6V9R0BNRP(7&GP-7C_'`^1SD,(C',V1
-M">1@=3DQ*W1D[4!P`<`0``'`$```(```!%``$874```$`1``#`J`$!P*@!`@'T
-M`?0!!`?I at R'5;`N*EU,2P32+N:#&Q"X@)`@````%````_"$``.#7SR=3DVB\3[
-MY%U_!J7Y@%GP6#Q7KBQ+B]"B\^L^^[<3X<F2^^T,#/JS%%U)``[XYYA=3DD7'L
-MS>RY7O:;54:71Q_9,770XA5_(4B\M`3X6%_-5'UHA[.T at P;%)^D\`B>DT#$O
-M^O=3D0"H)QD[G.;,@?(-%"W0>,LQLG6Y7N[(VN-;LI?ABYRVLZW(6H:L'!S<41
-M*TI-2X:LCE63F4]R`9$\!?$>*+V=3DFR.]VW'`'99.G`^Z,1N(MCJ]+<D5M:]W
-M.3OYWK_ at 499-M!:9W"JT3YY!HBM7RWOT;_A9JM9<4, at Q=3DQ*W1FCH!P#L````
-M[`````(```!%``#H74$``$`1``#`J`$!P*@!`@'T`?0`U`:Y at R'5;`N*EU,2
-MP32+N:#&Q"X@)"`````$````S"$``+`9D>+*H?9>'Y,RH"<6,*#_Z*<EKX9*
-MEMT7ROCE#<XAXSR(W'FRB;49AVR#R7B(I,;>2+<R%''?8>,ZJ4,WMC(E39AC
-M#O4424FJ>P"M5SK_AQ&#Z*A'*6D`/%#SA*>^S_2]YV%@X#2_$9BZ7'P=3DH)6?
-MN. at 2%-G/65<&7<;Z+<OY^(HF<T:4=3DMP.WPFB9;<\F822(LW<AYU]%5$6N`']
-M*%3Z#B;B>&C.E4HC1D./=3DQ*W1I at +"`#L````[`````(```!%``#H74(``$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y at R'5;`N*EU,2P32+N:#&Q"X@)"`````%````
-MS"$``+")?,>".#LHTGV#"Z=3D\&(')/)'FB>*]3G-NHAHF7T]>G at 6WEJW3QQF@
-MH1W8<EJF9F0QKT&Z:UHO!V[:=3D![W5!^)!4=3DLH$L2TT5)#YP5ZO9'[4;&2:ZG
-M!)WN.S6^*B?X=3D<+$&LR`Z at 8!Q)9][W`<LES:1V9QB`*L!"$?>"V=3DL9>2ZO`K
-MC[D*FCL!BCO%UKF$?8?*@U@*E;]K&G?9LM=3D4'?\4ZOUK"QIAX7 at Q?D96=3DQ*W
-M1@$I"``\`0``/`$```(```!%``$X74,``$`1``#`J`$!P*@!`@'T`?0!)`<)
-M at R'5;`N*EU,2P32+N:#&Q"X@)`@````&```!'"$``0`Y7*)]APN!QCN/TB3]
-M+J>(X.JDSC1)PL4W[!-+?+D8?QB:$+2]07^[3Z;X&G([;A0F-L)OEA>A&28V
-M?#=3D6^1EY>C*2^2+N#>AYHZ:.S<KE"%JBP+>,S+!UP9]:/VAO?;8SH?)/E%(/
-MCJTS>XTZ"O@@CA^<DW7D1$;?R at DOI7V\*YDZA\J`SZ`\`&&*>#RB'LG%$D[W
-M=3DBQI%ZDK6\=3D$XH&P>4[5/=3DT#-7AU$/8P^#-#=3D0IG86.<D0Z1B_L?W3)KPV4$
-MB0<(25_K:V9"BHQ9ZD-\+.GAM]/O&22(DY$R`2>2-D0#SWJ>[Z[L^/;N.!)J
-MHI9"73."Z'YX\WQ,"F)W$K=3D&(C,(`!P!```<`0```@```$4``1A=3D1```0!$`
-M`,"H`0'`J`$"`?0!]`$$!^F#(=3D5L"XJ74Q+!-(NYH,;$+B`D"`````<```#\
-M(0``X$ML>/0+"*I.R6%[K5M67VEAH6_I^_U#RSYIB)M-Y3$3S-AZ*Z%^%?_5
-MQB2GKO-9\M4EQZK#+(TW`Y+W"G>)MKP&_:=3DB*B_1J?/Y?B3H6`5^'8],[";)
-M/%(+-RR`;'_JX?/%X?,\48WBP&&639J4H754L\G>0L45OR<#T>90>B"O&U;N
-MV-+0I/XT_M91DS$H[$\%4>'4S_U2`W)`E]F75'(+3!Z=3DX?@NLXIDY2L$7Q^6
-M[;&W8$?R%<>R?O;V1L,A;;6IH`!CH)#K,WPB2Y3IJ at KT4#OA."SH[6-MD$!W
-M$K=3D&,40(`.P```#L`````@```$4``.A=3D10``0!$``,"H`0'`J`$"`?0!]`#4
-M!KF#(=3D5L"XJ74Q+!-(NYH,;$+B`D(`````8```#,(0``L+@%GN"IP$+/5 at AP
-M6FWMBWM-YZ(2,9P(0(,PS5TA42&<>(1F<TV7HL8V05_EA4%O-GU^]0)_:8D`
-M$Y*G(@@U/6THPD.2AN!OO+=3D92I!.;=3D8Z=3D8)IP\DYL[-2G'M[LU#/)`^H'NIM
-MR)FUFR^;@<2._FE&N'?NZFO`P.E06AA2F%%<CJWK9KK]0TK0+,.'VG\R^<HY
-M#6X.=3D(,XR)5?/C-W,V8D\/ERVW&BR+UI at I=3DW$K=3D&G&8(`.P```#L`````@``
-M`$4``.A=3D1@``0!$``,"H`0'`J`$"`?0!]`#4!KF#(=3D5L"XJ74Q+!-(NYH,;$
-M+B`D(`````<```#,(0``L!&EVGE`5T2?*)HXN#R-SL\#0I]?L+D26"O"DJQP
-M&O$J-O,E),"@<1";!>Y4D6 at J2QO_-(ML*&-Z^"J08J4*I%=3DTR)9!^B*/6X'^
-M%@B>^0*5E at 7H4-5*=3D'60.U>>WYCG4<ITJ4U:;LN!#=3DV9Y*:#Z6'[5H8_2_9_
-MA"8[_TU+*\`1YCD1+4RW_ZJ"1'0!K'J9+DYSW2;$YW1LPB\]N7#R>R"&Y7:F
-MV'P9GIM[+*!W$K=3D&Y8P(`(P!``",`0```@```$4``8A=3D1P``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UF#(=3D5L"XJ74Q+!-(NYH,;$+B`D"`````@```%L(0`!4%C(
-MZ7>%-X3\V\EEKR)-Z:6ARPQQ^W2_XQ7+GU-C'4$I%7MTNN5W]&OPU^O;0=3D;&
-MO at 1%;O2;4V$L6&LOPQ[7P--YG6X0!R?[[,_?B\"[G+?#I at MH/P at _.::5AJ\B
-M>CNP,_\I!L8$FI+)&3&7=3D95JWDT]HQ#&"Y1?6)D=3D#;]J[`41,7@,^$`FY)C*
-M1+&KS@\-3BTWE6%-DQ>XZISMCHU=3D&J+:UT.G_79.$[_2`/M*:+LB6C45+0Q=3D
-MT`5'*MYQZX\6BLZ%.W#?2)UZN%"%DYL?731#U>*YM7D7R*AC'^?/OJI0;@:C
-MR38E<7X-NYC1E^$:NT5(=3D"VYC`]YWOSY4C"S?8H?BNQNIN#]/]SKU2_:D>@U
-M6>W2M.ZR&V at G`"G3]!3OO at 6&WPNV$;G^@@NI]2*04+;(\81Y(BBU&G(M;8;]
-M#44[-I2QJ67MDNPDYQ!<=3DQ*W1@[!"`!<`0``7`$```(```!%``%874@``$`1
-M``#`J`$!P*@!`@'T`?0!1`<I at R'5;`N*EU,2P32+N:#&Q"X@)"`````(```!
-M/"$``2"CMJ2%SBXR:S^:?<\L9%_^?C\+K%-OSAYV_LE.-3),:U3U*&7#5W54
-M at 10R?)P;C)8/LK#ME71!3A=3D at D_6GHN0.=3DRUKDP6NSR:)"N9_&(CT?E.GPP#:
-M7=3D[]8H,PNBEVL_-5V?*V?KA/W9_Y2K6%8VBB7'*!@T,A`.9L?80;03;+%X"\
-MMY4.A6HFC#KEC97]AS'N;6,9<U2>711(0%SH-PLP`*B\@7.+9I at F26*/I$9\
-MI at G71#DW8Q>`)"1BL/ICN"JWF'<284"?+V_<3^HCF>WN\0LK(U>";:V?;JW3
-M<`"<Q\9<8ER`%B,7LHC%YP+G@*@:9_B4'BE1A<!<^UE"#GEBOV5<DIB</;/F
-M<-$?.924"9&4KI`\.L at YI3R.4'<2MT;&Z`@`?````'P````"````10``>%U)
-M``!`$0``P*@!`<"H`0(!]`'T`&0&29:U$1D/QPD2PQ?,*99]%%,N("4(````
-M`````%PJ``!`[ET^>0B\4+BCIZ?X!OOBN(LB'K*5Z:"5*U&)WP]^,'G,I3_*
-M:')>W[5L7=3D9+;YVR5%%L*ZDSLH'D_8J1=3DQ*W1FOT"`!L````;`````(```!%
-M``!H74H``$`1``#`J`$!P*@!`@'T`?0`5`8YEK41&0_'"1+#%\PIEGT44RX@
-M)2``````````3````##8E39[$S62B%OTJW2W+C3YDAVQG:^IEH<]^?Z(9[88
-M^Z3K=3D;\1U^05M[]Z87<2MT9!`PD`;````&P````"````10``:%U+``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.9:U$1D/QPD2PQ?,*99]%%,N("4(`````0```$PJ
-M```PZ)8.36G(IDOT^:$TQB4/7@"_[6,]-7I4.SW*Q'9FH,I35-[N47"ZIB6&
-MA*AW$K=3D&=3D!`)`&P```!L`````@```$4``&A=3D3```0!$``,"H`0'`J`$"`?0!
-M]`!4!CF6M1$9#\<)$L,7S"F6?113+B`E(`````$```!,````,*MD;0I&HN'8
-M*J^D"3#]-<W8A5[M,&DO,D2!F6Q5WT":Y_$DS,7;%!,2[;^$=3DQ*W1NH*"@"8
-M`0``F`$```(```!%``&474T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE6`>3^X2N
-M39(``````````"$@(@@````````!>"(``'@`_@!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``FFDE^C413*Y^R6[%J)+<@Q*/BD+ML.0E&E/[ENX+
-MCFR!?0$\5`*M6<AJ>+^F(L(:;&N.&YQ:&3G.@!JY>W18'U$X&W&>?22KLBFX
-M47CM?6)C:%J!_(&.\(!PG;'\S^B->/Q?2JI).NUUJH?G4E-UU7:-5(#V7V#^
-MW%#BWP%5X((I```D"G-LS7V?S1\_-DS6N9D((519;[4Q?MH03+OQ_ZUI_@@I
-M```<``!`!#!?$3R+494;IYB"Z:,IO[(5Y(YR````'```0`4)1PE0U]"GV3+P
-MY\P4#2,X_]*9J7<2MT;D&0H`7````%P````"````10``6%U.``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*5@'D_N$KDV2```````````I("(@`````````#P````@
-M``!`!@````<JVCX8F/^Q4KHE_MC9_7ZVRNM-\W<2MT:1*0H`N`$``+@!```"
-M````10`!M%U/``!`$0``P*@!`<"H`0(!]`'T`:`'A5@'D_N$KDV2````````
-M```I("((`````````9 at A```@``!`!@````<JVCX8F/^Q4KHE_MC9_7ZVRNM-
-M\R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``FFDE^C41
-M3*Y^R6[%J)+<@Q*/BD+ML.0E&E/[ENX+CFR!?0$\5`*M6<AJ>+^F(L(:;&N.
-M&YQ:&3G.@!JY>W18'U$X&W&>?22KLBFX47CM?6)C:%J!_(&.\(!PG;'\S^B-
-M>/Q?2JI).NUUJH?G4E-UU7:-5(#V7V#^W%#BWP%5X((I```D"G-LS7V?S1\_
-M-DS6N9D((519;[4Q?MH03+OQ_ZUI_@@I```<``!`!#!?$3R+494;IYB"Z:,I
-MO[(5Y(YR````'```0`4)1PE0U]"GV3+PY\P4#2,X_]*9J7<2MT8M3 at H`4`$`
-M`%`!```"````10`!3%U1``!`$0``P*@!`<"H`0(!]`'T`3@''5@'D_N$KDV2
-M(WWM2&>[D]PA("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``+J6Y%M.53D17EP=3D/:X(
-M\,Z,IR+;=3D5 at AD\LVYNOP-A?=3D=3D+B`?9&CG0EE:JT<2"<H"KPIZ'A,OGV[M7'`
-MN0CHZ=3DSL-(W$<FLD791&LO^46SA]N.46W6_E1!F"F&]=3D%`W(]0ZZ"LL6D&1[
-M'MCTVUFW_(Y"/KA>FVA#<?YS(KM*XVV**0``)!\O*G?Q93,'C+**+Q(H6LWV
-MRU?5G[B\F5KA?6"3Y#52*0``'```0`0U(N2E199;0HJISP]\R0<ZY^$;V@``
-M`!P``$`%YR>RO&<4IW>Z:<84-@@C#D``D6YW$K=3D&,'P*``P!```,`0```@``
-M`$4``0A=3D4@``0!$``,"H`0'`J`$"`?0!]`#T!]E8!Y/[A*Y-DB-][4AGNY/<
-M+B`C"`````$```#L(P``T"I4(JP)LWD"M[4)L!CX-L;*U6<!A?AVVJ8;]Z0$
-M:TQ at 42#W?,X*$$Q:CDX&-EC%,3,\+,O+*@?!5)"8X-T,,$]=3D/ZB<T:O*G!*@
-M/VS>&#>O*;ZZ39W=3DS9.%O7#OZ]05V(=3DUEQAPT3J7/NK'8H6-!>[\$H(IY*"]
-MTN:(+W;[5I"D%TQ6`/YG>*5Z;K$(`Z'KZKU'58F)!IV$"W%/-2BJ$?5=3DK)4U
-M<YO9."5E?()&7N\ZTSW^2;8J__S9[%9HJ`\J<WQD6;WP';6,AN;4/G<2MT86
-ME0H`O````+P````"````10``N%U3``!`$0``P*@!`<"H`0(!]`'T`*0&B5@'
-MD_N$KDV2(WWM2&>[D]PN(",@`````0```)PD``"`NG])(HP5YG#_K=3D[MK*9S
-M'(<P!.&I(+0E5TJ1[V1BSN[5;8)`>4T'&U"*3S,]B=3D"S(Q#5A]A[@BK5VH@=3D
-MOZ&'5`)@$CX-1Y1HT6BC2CVBL at X2G?S#,$%:`=3D,\YMD@#!4MW_5P#(?.W3>K
-ML^_!].:RZZQ=3D$O?VQI79D-_,UG<2MT;5LPH`'`$``!P!```"````10`!&%U4
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z5@'D_N$KDV2(WWM2&>[D]PN("0(````
-M`@```/PA``#@QJJ0*4#W8W_:\Y&QEU?''CZKU@!L\(C0`+_-0[YKZ`UE!S&6
-M^\(Z+``NW)PR/SW)=3D@$JOU2@<JBT/!E5//E(H at W^(%"AT at 5W()-G#)6$>\.F
-MF.@]$LUI__[C'SQ!'QR;+WN`"=3D]'.E6**`W"V4Q*-9-$\7,AM^_`T@/U^C2'
-M/6MV8^ZF^-O[(\XDD%:"%]5NMBT.B=3D%\>FM0S7!UC_9MQ6(=3D>4N)U0\7O`5K
-MQ"K`\S%ZCRQJ/5?L[_F0)VJU_^9CSU*#6.3=3D$`G*]+_2&,BY+[('N;W_K3,?
-MW)CB`W<2MT:/O at H`_````/P````"````10``^%U5``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R5@'D_N$KDV2(WWM2&>[D]PN("0(`````P```-PA``#`C-:&<1)E
-M[X<K1V?&T@\*I-*WE+T1E.*\4_;2#)&(U78\=3DM(-4+";30SCF3'$Z#N6[T at 5
-MV9Q<;CV\MF$VE.\/2[1>HO7HP6STW7'\A at -/,\BM<IVX7C+7HP@>AF7I:$W*
-MBOAV7R=3DUBBTE+.^,R.,1WDAW6G3`<_]/H2,W4*RZ+"A^P@^F at W'<7-7#QS)Z
-M[.7'/UC%V*:46G8/0K!=3D`WU,Z at J1$*P#>LZP at T;X4D7Q**7YPP%5=3D;]=3D58G6
-M=3DBEW$K=3D&.,D*`&P```!L`````@```$4``&A=3D5@``0!$``,"H`0'`J`$"`?0!
-M]`!4!CE8!Y/[A*Y-DB-][4AGNY/<+B`D(`````(```!,*0``,+S=3D')*/9[<*
-MZ)Z^B=3D&Z2`-1\7PM9XQ<RO0.`-(/3GBZ.&O?Z5/56/+O(BU5=3DQ*W1NOE"@!L
-M````;`````(```!%``!H75@``$`1``#`J`$!P*@!`@'T`?0`5`8Y6`>3^X2N
-M39(C?>U(9[N3W"X@)"`````#````3"D``##A/CK#N^5N0JL at J6#"9S<3*A9B
-MY=3D"E\5)F0`?9]#)M$TZ/?)`\[]<'NTZ at +G<2MT:"`0L`/`$``#P!```"````
-M10`!.%U9``!`$0``P*@!`<"H`0(!]`'T`20'"5@'D_N$KDV2(WWM2&>[D]PN
-M("0(````!````1PA``$`/X,%/5;79?ZRLZ=3D at OF@>[>L#-AR\Y"/6^[8FG<U%
-M/4-4]?&,WJ&,7D'&SF:![CP788X^MO_1JOL9&($*(QSBU4/2`S#E^;A,":`M
-MX;X.!P%XH72"'&S9;4$XFS8TPK/VY=3D1^/U`S$"#39W%NWF2\I\`)YC(F;.?,
-MB\I&E6`>WX,2'-W7>H<SY*^T8U%L66P_*A;]GO*;;4&/GCOA)X5W7$D1661\
-MZZ1^&QC+G!Z?XVVK>B$>A4>])?V=3D#9G1Z(1#CS;&"4$M.#6H\6-GJB_08VC_
-MLHF.:MQ3H:/I^4WH4\HG7%K(9!NQW\G2NO4\M![ME#M[=3D?G6.BR2THOH=3DQ*W
-M1E$-"P`<`0``'`$```(```!%``$875H``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M6`>3^X2N39(C?>U(9[N3W"X@)`@````%````_"$``.".,=3D\_I'+KIH,;]=3D3+
-M>".:L1M>OI)5H.-=3DA)C99!\=3D&0-UP*I*>TO84UO]"R@<YUV>QO5;`5<1O-$%
-MA3?:I(D<>'ADP(LBUGOV_3YI*+AKFEF2JZQ:,XCQ!ROXXD'>Z#?!'5\5:V0*
-MU*'X<E`TT/4I!)7CU;G7`0)M.(U'%7?CQS!@DIDIJLBOMQ"?M9QIW,'HC0Q5
-M_SE78+2,E:@HK7':#WJVA45I[!8]0,-1TW$%Z:&T2!WFJ07,4W,_(>TP5/H\
-MX?AF-/_2RI82K%R(1GWSGUQFXQ*&1D>IX8+#=3DQ*W1N(=3D"P#L````[`````(`
-M``!%``#H75L``$`1``#`J`$!P*@!`@'T`?0`U`:Y6`>3^X2N39(C?>U(9[N3
-MW"X@)"`````$````S"$``+#H;81&[5VO]!%K,*#V0Y*3OY3)^>A(WT&]DXBT
-M1?6.#FFX%V.MT*7ABM^%S)P332JN]]B9DSV=3D>=3D/:HTO;JU2SAT#%T7!>LSFR
-M;^-24+<#-I+?6?QKU%KYHCH1Y\L.5O%:M*9,+>U&]+/</7?QYN(EP<Y_)4W*
-M`K.2OJ at 5.&HEWB1G0J*R)UQ5A_'#3!8XA62.?Y\Y$,7<2G01T?"0__'45R?L
-M\/=3D[</CH#Y10=3DQ*W1LU`"P#L````[`````(```!%``#H75P``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y6`>3^X2N39(C?>U(9[N3W"X@)"`````%````S"$``+#E
-M##\!;7W-;PJWR2'`!6P6NOUC?,,=3D$YPA-7R3EAT:OV5B"0$?2*$[<C6].%L"
-MN);4U3Y$AM(A%"4,10;OPB[S?+,:S2*C>3*<O:8&O/SC\MYD,H'(:.FL"NLZ
-M5O8^`@^D#>[>/U2JV7:SGS1)M%3]J/<Q5B#2M(HAPIY,FWK[YM$$)DFV^";H
-M3QZN;T,N,QA85R!P^?`NHD49*LI!\@0A71`&&K1!_5H;L!X>=3DQ*W1 at I>"P`\
-M`0``/`$```(```!%``$X75T``$`1``#`J`$!P*@!`@'T`?0!)`<)6`>3^X2N
-M39(C?>U(9[N3W"X@)`@````&```!'"$``0#F#/K[7UPOZ,5K)[`EQT/E*>5W
-M3Y+8\A^_R=3D@!AR'N&J5(O:C&E4K!T6+6%I$X&^^UDCQ",HT<$G/1]%7T7"D`
-M>^J^6`)74S"21E^DXA8J;7HU![X?`,8ZBV1P]?:M^+AV/5$/Q1S6E.>=3D^BCL
-M-C at 2N(.C$4,GTAU@@Y+\F!JLQCL`^B8TMPL4T!2R[^52D(CM=3DR??W+`R.^F(
-MHP#A9VMV5Y,`&849=3D!XRX#0QV?3,^DIPE[*."ZU&A6/VW$`KN#L_$BG**'R6
-MXVV8+\RX5<*`R.`094>'IIY;%:'Y8CE1X3MU;K9GFOGZ?F2ZJ<,\S_H-5U*V
-MQ#BR&V\N8P%W$K=3D&UVD+`!P!```<`0```@```$4``1A=3D7@``0!$``,"H`0'`
-MJ`$"`?0!]`$$!^E8!Y/[A*Y-DB-][4AGNY/<+B`D"`````<```#\(0``X#-(
-MSV5-^E,.1F,N(LSC at 3CL32NNBP)FGS#?S(>8"/A;@BLA(6J2!S+/TIF4ZL'%
-MFA34<*Z'P<$$@O;>1`/G(]QRLB=3D'`V#0?G.*BT\981B;\J.3/F*A39]33&=3D#
-M'7\W*@$Q9:H.>0B;=3DS,!%56C4S81GE-U/6EKLE"E[]`@IKF-1#GY,5"A&WP=3D
-M.3AU-6*F1K3H`W$.,%9,TQQMNJ")VU+LT4/=3DR]QU$9N-ZYNEI4A(0<%K)E%F
-M[4X<1V^]>!["LH/L@&',I2AB3NV_ER-MOU%7GCO?[?OQR+'"'3]W$K=3D&('D+
-M`.P```#L`````@```$4``.A=3D7P``0!$``,"H`0'`J`$"`?0!]`#4!KE8!Y/[
-MA*Y-DB-][4AGNY/<+B`D(`````8```#,(0``L-U.,[A;*Q/=3D527;*\AAM4YN
-M-\"#UBBIQKGZI+6]5?L^SS;(<!*VF`*BX:S]AG(:N43-%6Y]_;/0HA"VZ//Z
-M.O$OP:\XQ1-&JZKH(I:";XD2=3DMCHEOB]KWR"XOLWS3QPYFH#1PL%D*D7\&0O
-M<,X84K,B\MD]!FOU_3I[")GQ6:5L&4/V=3D\KO;0)$5^"B\\.6.W^7I$0X2A9P
-M?T/1SYLFX8 at P6>D]2`@@447;%HQW$K=3D&2IP+`.P```#L`````@```$4``.A=3D
-M8```0!$``,"H`0'`J`$"`?0!]`#4!KE8!Y/[A*Y-DB-][4AGNY/<+B`D(```
-M``<```#,(0``L!^W6NN)%ZRCNBQ(8A[_CM>'FV/VG6V[_79L- at A@PQH!<(=3D=3D
-M!T&B4A3T'MJV`N;N9J/B?.(W._!*9\CD49;:1QY*B<9L_39KXPHMGJW?AZ3<
-M0HF:>7/,7(,$E_Q:'M?$5O$+M34 at Q4-C8O<>NXGHQZ,=3D_(>+#K\).O=3D7+JN^
-M.8B8`PNB=3D5 at N!F.1T%00$FY7+68A4PYL at U-#V6S-&D7GZ>KURO>"YS'@Z):@
-M?,5W$K=3D&@<(+`(P!``",`0```@```$4``8A=3D80``0!$``,"H`0'`J`$"`?0!
-M]`%T!UE8!Y/[A*Y-DB-][4AGNY/<+B`D"`````@```%L(0`!4#UY0AR6>IEO
-M[TZ]_J3G2:QXKRQ7BDS"GU0X">TW9`W:=3D%N$US3N;>=3DGP`1P1:Y#\9S]D51+
-M96]ETN=3DQ^,!E_Y0)VIE2)W%J\;D++VEZH(M?D9+CBX3T3I^C3M+?SIGQ6+T]
-MOO/)U]T.NSNFFS&8/A%)6:@!W\"4[EQ+)('@VTS\PX-[PM2 at GFEOK5'UWTY2
-M5V-"\+KN,_"\Z-UA5%CQ,FW1!>5+=3D['J)7]5`V at D=3D4DH4WR\$,'8J'U-JE]H
-MP;BJ<Q7C1#GW%6WONE9FM2][8<9`X7GGEX;;#VZ-TT(\#!)/:`0XH9$WVOIU
-MGE#P)CF:MA:'$_<G4)_L86@@:H8EX5:;\QQ#N+F2U4<"0S(#!2;QP"06%3C#
-M$)M:^S*4#3>.F6Y`J&8';+GX?1CA6Y7<MI#0[G6(<3T,#-1GZ%O0].">0/$F
-MG`(!QJ^<A`NY=3DQ*W1J'W"P!<`0``7`$```(```!%``%8760``$`1``#`J`$!
-MP*@!`@'T`?0!1`<I6`>3^X2N39(C?>U(9[N3W"X@)"`````(```!/"$``2"'
-M=3D/8L"9B?KA%`X*DY'"Y+F;6+:O#H[G1YF/*H2,+LS\5V+JA)CRYFJP.+%Q97
-M*RINY[%^>[D7=3DV5K8`PUK@`^9`B?$]DNWZVA7^0F&K<;HW4A]1R^7BO6*KTC
-M[)V*6D8QTH;OW&,1L`<1Q[T=3DPDXBH=3D`%I^GJCI(>'Q]38^2 at S0K4Y=3D/;&R9G
-M-5XC>E1'Z]J1<X*)-5!X;&"0_L!*'.5'7NP1A=3D'NIG%MK?SK_EN?[LV$2'8+
-M]'2";0.[9+.%U"IP)%6I*P$>$%7E"4;%`++9VSD<9)D0];PIVHS8:2\;]Z$1
-M.+?IYST,'4+8JTN-9IES/=3DO\IBY[TK^$Y$%PN,-)8G&QOG_BB<)"MR-.KN at _
-M/WIJ@]46<@@CFX$E?W<2MT9W'@P`?````'P````"````10``>%UE``!`$0``
-MP*@!`<"H`0(!]`'T`&0&21MD"/E9>T<VFW;CG>'F=3D3LN("4(`````````%PJ
-M``!`M9L,-HX)RFA\?PRAY+=3D,1<&+#]B2\DK"Q50#DGOH0=3D--2,E\*WKVH&:7
-MRSMDU5:WD$@N>'4XJR`\*4&E=3DQ*W1 at XJ#`!L````;`````(```!%``!H768`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y&V0(^5E[1S:;=3DN.=3DX>9U.RX@)2``````
-M````3````#"<D?T:A#_8^;.R'>YI&>BG[N<"J!-]C);FZ)LP;8<2!=3DH38^M9
-M+"USPXR/A7<2MT;4.`P`;````&P````"````10``:%UG``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.1MD"/E9>T<VFW;CG>'F=3D3LN("4(`````0```$PJ```PQ6=3D.
-M>=3DU"4"U?"(U5+Q^4RRA7'.@:&LYOKQI>#^M47F.2_(/1!/B&,]IH^.9W$K=3D&
-M0$8,`&P```!L`````@```$4``&A=3D:```0!$``,"H`0'`J`$"`?0!]`!4!CD;
-M9`CY67M'-IMVXYWAYG4[+B`E(`````$```!,````,.`/F$BB).2Z-Q$[L\BR
-M at UN+]C=3DE"PL*)K4A3<.^EKJ7V6>AZGO-O=3DO4NOD?=3DQ*W1F9"#0"8`0``F`$`
-M``(```!%``&476D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE%*H^'`2.)5D`````
-M`````"$@(@@````````!>"(``'@`_P!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``K?JX#8GS6QS^9F#P%\$%)7?QMAP.*/O?_Z!FK7.3N4!FN$YA
-M_!GW_5-4Q4Z<996L`(LOL<9/K4V9T_P-,E3X&#G,LDZK]2F>&0/SX$,AN"B7
-M7I$OE7_JT$9YYQ<]&Q2XWH,DT4;.?"X2/)6QZKV0QT(%]GH\PA&-_RSR`+EZ
-MUE<I```D^AY^@RE"J>9?T%CZ9-I?`O\LB;/]$&&6<HQF9%U)ENLI```<``!`
-M!+HL/M)6ZS%[B]CR?!!=3D"X&Z^]`N````'```0`4^Q!\K)A[#\PCR^&,B11)8
-MKS;W+W<2MT8R40T`7````%P````"````10``6%UJ``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*12J/AP$CB59```````````I("(@`````````#P````@``!`!@``
-M``>RX/%23O[]4/GE#4,`6YPO'68MD7<2MT8%80T`N`$``+@!```"````10`!
-MM%UK``!`$0``P*@!`<"H`0(!]`'T`:`'A12J/AP$CB59```````````I("((
-M`````````9 at A```@``!`!@````>RX/%23O[]4/GE#4,`6YPO'68MD2(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``K?JX#8GS6QS^9F#P
-M%\$%)7?QMAP.*/O?_Z!FK7.3N4!FN$YA_!GW_5-4Q4Z<996L`(LOL<9/K4V9
-MT_P-,E3X&#G,LDZK]2F>&0/SX$,AN"B77I$OE7_JT$9YYQ<]&Q2XWH,DT4;.
-M?"X2/)6QZKV0QT(%]GH\PA&-_RSR`+EZUE<I```D^AY^@RE"J>9?T%CZ9-I?
-M`O\LB;/]$&&6<HQF9%U)ENLI```<``!`!+HL/M)6ZS%[B]CR?!!=3D"X&Z^]`N
-M````'```0`4^Q!\K)A[#\PCR^&,B11)8KS;W+W<2MT;?A0T`4`$``%`!```"
-M````10`!3%UL``!`$0``P*@!`<"H`0(!]`'T`3@''12J/AP$CB59GC-'&P0J
-MG\DA("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(```M#H`E3E3G+;R18DG[]%6$B5O0H
-M^%FSIZ@$`$A0V!),G>)R*C0-J!9G\YM6PO1?&N4S$4(--N2H_,2?\[`&KX=3D_
-M"*QE_.DN_O!]78UPZ3Q260.HMV34:R':K/A8C*(IPY0C`.$XWW]%W+[[6K#<
-M8_;Y].Y](DUV]/A[HNF%&T']*0``)'Y=3DAE+F_8H)Q,:):2:DO7"!KHS?*L]-
-MR"XE2VU8&(S&*0``'```0`2!I[-"*B^>V#U@*(NW2BPVI at 6C@@```!P``$`%
-M=3D7Y$AC;8/E5_;*YVYAZ6]5&=3DMH9W$K=3D&5+,-``P!```,`0```@```$4``0A=3D
-M;0``0!$``,"H`0'`J`$"`?0!]`#T!]D4JCX<!(XE69XS1QL$*I_)+B`C"```
-M``$```#L(P``T*YCC96K&MU`[G46;+W[A]2D+@*QVFX0$QX.F7D5 at 2NWG_JT
-M%*XX,N9`)490*#+=3DE6?B)]2)(#I((PI_^RX;$2F[^"FANNY7Y/A[-A1X4L03
-M68=3DFG11>F-^0AYH>T_S[<I9T;+ at AXN+.IMW7:1X`?-T'<?(7]N/*@>#>F5.;
-MWUX[VK+$6Q at JPD"U*Y:V@$$HRP*FUB,$0HUCYX`]KLK14%[][/]<H at 0MD;W3
-M7AK)K&*J%1HUW8D,%WM)K+12RPP[V3AFTNBGM<"J"]<KR7<2MT8XS`T`O```
-M`+P````"````10``N%UN``!`$0``P*@!`<"H`0(!]`'T`*0&B12J/AP$CB59
-MGC-'&P0JG\DN(",@`````0```)PD``"`!M105F*VMC&!\+-6=3DU__OQ&Y5PU'
-M?^Q/&"AH2MZ2-2)LN3:BD-R3&TMZ_*#_V"FJ94>'`G"MKW\!3<RL[AI"?@3Y
-MF]&TF>#YOLEL:>F;M3=3DEGFI)DV1L*:;X8M2G>R+PPCFI[>3%<>=3DL=3D8FKH>>;
-M&4W7#DZ'=3D8WR$!@MEW<2MT9OZPT`'`$``!P!```"````10`!&%UO``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z12J/AP$CB59GC-'&P0JG\DN("0(`````@```/PA
-M``#@7P"&O.8[/]J;V8BU3KE"`OJK&DE%\%Q=3D[T<IG]R^T.(*"<VW9(2U:6!(
-M$)][+-A:OOS)+."`^R6J at E5SY"S401-??/_9YR[W@*(VE3.9QR5I?24X:TKP
-MVTZI)0)3P:9D66JU91\M-W(B*6X%O01L3UWO4[@OO460;QP*&\%JMQ7D>$'=3D
-M)9?4`%P(&ZS*7'$-]E4#^)0P$CBEIQ:<&Q,.+.OTZ5;RWPM"L'NR8G^F`F20
-M93)>6%&O=3D-=3D+29^#,%35M%4O.=3D1*_>:`W+GT-MU6?Z^QR0N%V#O&:.MKH'<2
-MMT:H]@T`_````/P````"````10``^%UP``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR12J/AP$CB59GC-'&P0JG\DN("0(`````P```-PA``#`DVJ9N;LH_+&W;M-C
-MI#9E@'6>._[#ZPZ8!]%NS#?K&-&1<R0=3DL=3DE]WO.*53^N34M,94CJ*HTL?%.Q
-M9GU'K6#^^>B*?5V!<5NUT`!M#K=3D^1@%_G^P89WH(8H-'GJ440IM4LQ&WX8&5
-M9&3=3D6?L>WT8ORPYJ'39(A*N-'ISA!SSEYK<7=3D2MN;"9C3<;9YQ19M_L"<GC'
-MD^86D6H&KOPFAMX$V%F@&DO_T-]D3*\<M<PKM*Q*Z/8C0.`LXC#+TQ%W$K=3D&
-ML0$.`&P```!L`````@```$4``&A=3D<0``0!$``,"H`0'`J`$"`?0!]`!4!CD4
-MJCX<!(XE69XS1QL$*I_)+B`D(`````(```!,*0``,$1V!J-WY/!=3D:P]/2O8P
-MQ7T0GH%4A37"952AI!&?\=3DL5]4O(@(,X0_-8`YD"=3DQ*W1F<=3D#@!L````;```
-M``(```!%``!H77(``$`1``#`J`$!P*@!`@'T`?0`5`8Y%*H^'`2.)5F>,T<;
-M!"J?R2X@)"`````#````3"D``#`B0_G*`'9WDJEC;":\M@&L77XA5X_RJTBO
-MJDT]?Z6,0_0XK0BZBTM7>2$R%7<2MT92.`X`/`$``#P!```"````10`!.%US
-M``!`$0``P*@!`<"H`0(!]`'T`20'"12J/AP$CB59GC-'&P0JG\DN("0(````
-M!````1PA``$`(J!L6`;<<"T-CR4^MF[UV;T0%FQ7*MU8SV^%Z.MK0$^TE!`-
-MJUK4P$A>Q^:>YA-=3DA^$(O2\YVC=3D;G-6*U=3DYEO52X+XD_,Z.G#V8*9&N,$7X!
-MKS\P1/YCL55V*^R+,8(A^>:A6,^MHDI;`VK4A'RZX%/`F?H:'+$M\:)-"9DI
-M;]'>YJ;K!CV4MGA8HOKP$4+7S6"$%&GY-\&=3D`1=3D^E5D_\CEW_5;:E'OR*X4'
-M\<'SK]QD`/C2D3B;D8>*1>X1'V+AI6G&-<:-4)<&V"+E7>77</6C2T*TZSNV
-M_B6?O$=3D50HB"G(4R`W+C$!0%*Y^_OP=3DWAQ$&]U(;39+$.A+F=3DQ*W1GI$#@`<
-M`0``'`$```(```!%``$8770``$`1``#`J`$!P*@!`@'T`?0!!`?I%*H^'`2.
-M)5F>,T<;!"J?R2X@)`@````%````_"$``.!_)KVVZ,(2X-SJ^L[FV'*=3DK[K%
-MXZW%6*OHU&1B9)L!C;6)WBZ`@`[K83HO(1M2E%&E>R,KO at L,%F.]#(%6D#O]
-M&=3D=3DW\TYN8)%7-=3DCS4L!Q/^C1[3>KKC\:%T=3DY^2R"[.?LXQYU9=3D6:%?#`X,-[
-MZJSDOJ%Y][KP(UFN0!$()[C*.(U,BHT41UCY:6=3DXG-(<VNF)![G=3D.-)1?!<\
-M?-_Q5>5^/1H1X_[YP-_K.775A\.W'E<F]A^SKA<*%&Q-<O_ULT"*??-A:;CB
-M=3D:IBI at ZD>`=3D71"$,E2"RXAOZ"4QB=3DQ*W1H%4#@#L````[`````(```!%``#H
-M774``$`1``#`J`$!P*@!`@'T`?0`U`:Y%*H^'`2.)5F>,T<;!"J?R2X@)"``
-M```$````S"$``+`)$0/9N+)H/OT>G7T7<,,A]*"5'.B<<4XI[5P_J6;<LY at 5
-M\9*&A:A+ZZ9=3D at _D2'Z!,8A_3 at DV$7&*5`Q>Q9M$N(;+*^OHP+_O=3D-4D0O[;0
-M-C!4XOYWSD+7E.)YE\'CL89/-&Y+32G2Q<KTJ_4<<=3D$8 at Z*7J%O*F$9BJM'.
-M<.F'+TC]PJK84_]BC?LL.,, at .UGG-=3D/^\N3(WXF=3D8&7P>S!1A*P at XP/QR255
-M>CO:=3DQ*W1FAW#@#L````[`````(```!%``#H778``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y%*H^'`2.)5F>,T<;!"J?R2X@)"`````%````S"$``+`1F&.:]DVB
-ML)7:A#F=3D2;FQO'^*B$"`@`;>839Y`[J1MNY&5ZL?/WL0MSC,]^&VSP]8;YB<
-MSM'MFCWC"<"T`"D*#9G9, at +C+#HRZGX][B]Y7JCX:)._#VKIRX24V3"62&WR
-MMDUA()M(XEH+:@:ZP<356Y7:<@IZR?,[N'ETJ$G<I7XZW1$D4%T:6$6`AHY&
-MT:9=3DR=3D)L1I_C4BI2]'X>;BW<RT#,%BC#QD"]<%^+=3DQ*W1@:5#@`\`0``/`$`
-M``(```!%``$X77<``$`1``#`J`$!P*@!`@'T`?0!)`<)%*H^'`2.)5F>,T<;
-M!"J?R2X@)`@````&```!'"$``0!SJ(YY7KAJ at B#EF#;V*EY,RG36:Z8C"0:8
-MUZ4 at YU?]=3D?53.E5!PR!ZH?;.H6KQV64;<"25 at VC^%W]0[\3<3T4.MA7G'Q`[
-M[JY%;]GOYY/%#".6^5Q75VNW%/<9SPY2QM6,B/,YD]8\-$U13/#W:<UAE(C*
-MC-<_Y37\=3DFC+*\L&I7=3D*W'(0^,]#L(':*/T7/L$E)R-T`K\[7O5D#D"BZ-&J
-M'EM3:,IS]$?`-'=3D?4M2T/UX6$NL)1ZO-?B$V>'`TSS^7]+#(N=3D*>[E5UL*33
-M=3DX@?=3DM6GF*\V+)G.Z+Q**%@5HA'/LVM3\-/"5DE"662P1."*1V]IR8]30X'*
-MF"-W$K=3D&LJ`.`!P!```<`0```@```$4``1A=3D>```0!$``,"H`0'`J`$"`?0!
-M]`$$!^D4JCX<!(XE69XS1QL$*I_)+B`D"`````<```#\(0``X'</DR/E'NW^
-M).]1Z'@8D<5G>YM`YZ2"9D=3D&J=3D0&R6EY'XV64@`LI8C@;IW=3D=3DC$!W?OYS?`E
-M-D at KR_Z8[[U%B>&A at C;+BH*'OWA/H(/1#;51OZ,.0Z9]<`"2R*+H:I#E]%UD
-M^FZC_/K?(/&_C6O.[YJR[O\:L<K)VN/`))5G_<.F1BADU#!S+8J,AQI:(&S2
-M9GZ@>J>.$P^R8.?W8FJBD[7?%C&6\NOW,S=3D-\+B<(6>S,HPB at -_$7IPGI2$S
-MZ<B$(Q>MT#\8C(2#FLA3S^XG6 at BY0S8&Y-/8LV"L.0MW$K=3D&F[$.`.P```#L
-M`````@```$4``.A=3D>@``0!$``,"H`0'`J`$"`?0!]`#4!KD4JCX<!(XE69XS
-M1QL$*I_)+B`D(`````8```#,(0``L``CB/*ZKV:2K.&;9`=3D(I=3DA&U"VJ:&G$
-MUMH9I1&X:3D]\PRKZ0[A00-*?*A5;0LS=3D1FEF\?LHE&0E^XK=3D5F;S(8KMXW_
-MD+#"_I""ZN9]S1HY!$81_L(ES1:`25C2LU<+M$&3"1EF.O9D`>3]3`R]6A)V
-MYW-35P^#I"<F"WKJP,PJH[(/C7U&``IS3K#[ZI)L<$C>=3DM'?OKJV0+6&%P`3
-MD[Y\+)AO4JYTF(V97O5W$K=3D&&-4.`.P```#L`````@```$4``.A=3D>P``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KD4JCX<!(XE69XS1QL$*I_)+B`D(`````<```#,
-M(0``L(,9E0!]7_57,47^54S>(H[:4N)T=3D=3DF/"F;]\._4Q?(&E,?T,U\AM*Y[
-M0"B(KP+Y at 3<%JDHG9!).SPSMD/@MX6=3DDY>AS=3DI4.:NU'J["1#JJQA)R^$7+A
-M`@3CX3D3.S6%EJ:'&IYA.9$IM1C2PUW3E>UJIG#6Q$-S0/V7N2[@Q^KAP:T*
-MEO%7W1[!/QC(AJ-K`_ at M*1#J7LD&M];"[/&(6QQDFVG9&`\.LDZWL<5W$K=3D&
-M"?L.`(P!``",`0```@```$4``8A=3D?```0!$``,"H`0'`J`$"`?0!]`%T!UD4
-MJCX<!(XE69XS1QL$*I_)+B`D"`````@```%L(0`!4.D8`;M^O5?D()^ES\J_
-MX>ECCT("^<*A2=3DT^7'%?MJP62<N]TT@#4-]6^N0K[TA;IYB*P7@@K%G\-\\T
-M/^H>A871K^&DET])_#=3DA-8[02`V>]?^)-8'K>3V=3DL-PVX`1HH\[Y4X&M=3DH,C
-M3L,ELZ*B6''2C6J_<,!U!(XR5<!.D2!A0-!VV*!3W<<8P&9:`H":#<>>?]>T
-M.O%`P:<$&"KLT\GG]Q*\]Y>;6A[W.4DZZ-Z3;Z26M2J7`41%++6)3E0S..P\
-M9F#)ZW;:&S02+;7KXNVC7/T2H(HMN#>`@3OFY!7302R6)4*2=3DM)A>L$JL)3G
-M-8_A1.G;9=3DX"*;[ON\27_D($@N8HX)-40H]U*\,&(7QI=3D:6,Z41Y$G0C;74I
-M?LLH@#]+WPO66`=3DT.[^W[]\MW'2ZWQ7XYMJG<*FJT2E%C#9)$=3D[!ZA*%R^%6
-M5VDW=3DQ*W1F4P#P!<`0``7`$```(```!%``%877T``$`1``#`J`$!P*@!`@'T
-M`?0!1`<I%*H^'`2.)5F>,T<;!"J?R2X@)"`````(```!/"$``2`;]$3^.&*%
-M#E\4Q5R0TYN3MP&XUG7 at Y&!8?&N""Z8A>[#0=3D?/OU''W^&#L"/-P0M]J*(3>
-MB"ZC1,0NV[@T>^F=3D&>93*7?P^FS57#T-,`3'2)9I1(G#GKR_%45BR;*.("A)
-M$?RWNUY\4GB4.N0U\:_(MW>$G/&1*PO?!$XF=3DD0_1617"]6F3#*GK7HS*`H0
-ML\V7I.<@6[?Z3*;7-88WH%&@E=3DG-R`(HY+-;,E/,TO at Y5\*C=3D<5#KFZG37?]
-M1,;&W.*/E07QIK[%=3D40,`S at 0C$^-LU9$$2=3D%%B>1?;YC,Z*C_T/VZ1@=3DQ:48
-MY1C6EGP)C.K./YE[[SS+R?/0RYG+?]CZ.2@!3\[U'8>94*0*R?W][)VOQ!`X
-M+@]+L?]V?G at 2MT;7%@``?````'P````"````10``>%U^``!`$0``P*@!`<"H
-M`0(!]`'T`&0&28%<>U;`+Z(H:6Z"J\;!'>PN("4(`````````%PJ``!`5B[X
-M5%LB5??!H4!*,`4.5,/!:AGRG`DEO]MWJKHL4]SYOS<<31$2#B1WQ$GMPX$E
-M0YPWXIZA_B2,F6>:>!*W1G,B``!L````;`````(```!%``!H77\``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y at 5Q[5L`OHBAI;H*KQL$=3D["X@)2``````````3```
-M`#!AYJD>6+?K253_0]*AZ2OO!,3F%V7WV1A`N/N?Z':=3DY-U4920)IPG9$SLK
-MCW at 2MT94,0``;````&P````"````10``:%V```!`$0``P*@!`<"H`0(!]`'T
-M`%0&.8%<>U;`+Z(H:6Z"J\;!'>PN("4(`````0```$PJ```PB>:F]XKR*EO'
-M at 529/W^6M'(^7Z'D#6'@Y4_(^3TNX-4C8@'##$KF?^F#SX=3DX$K=3D&M#X``&P`
-M``!L`````@```$4``&A=3D at 0``0!$``,"H`0'`J`$"`?0!]`!4!CF!7'M6P"^B
-M*&EN at JO&P1WL+B`E(`````$```!,````,!M)SNHE<%"ZKL0./(E at LH,-553U
-M%-G"@AK/S1%_Q[-U`W;MG`U^9K(#L:<Y>!*W1FXX`0"8`0``F`$```(```!%
-M``&478(``$`1``#`J`$!P*@!`@'T`?0!@`=3DEI,=3D_S at QR+IP``````````"$@
-M(@@````````!>"(``'@``0!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``G]TED7@,P7#RX`1,^GZY!J`!YO?W=3D^:AW5G(<V#RGULJK"!"'UPOJV?D
-M?!B/X*KJ;B-6(0GG`RA_T3!3/T-A+/.PB)&:V.P?`3ZTNY[S\84&"99Y%?[9
-M$?70!N*PHMJX]C#+3OP/9Y59 at 45Q5\!Y:MW^85'_`$_`P@*-.81<[9(I```D
-M]KZ]EP]V6?%7$0("4>@OT-)!/IG]L`D(Z[98BFJ'+_XI```<``!`!#)%$4RL
-M,`A:3Q,MY\+HO&_Z8*4`````'```0`6UL.XHUL%<IGWN:V:V7IOT!-V:HG at 2
-MMT;/2P$`7````%P````"````10``6%V#``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*:3'?\X,<BZ<```````````I("(@`````````#P````@``!`!@````<*"D_)
-M)A]D/^"\VG>BON$@6%(.J7 at 2MT9H7`$`N`$``+@!```"````10`!M%V$``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A:3'?\X,<BZ<```````````I("((````````
-M`9 at A```@``!`!@````<*"D_))A]D/^"\VG>BON$@6%(.J2(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``G]TED7@,P7#RX`1,^GZY!J`!
-MYO?W=3D^:AW5G(<V#RGULJK"!"'UPOJV?D?!B/X*KJ;B-6(0GG`RA_T3!3/T-A
-M+/.PB)&:V.P?`3ZTNY[S\84&"99Y%?[9$?70!N*PHMJX]C#+3OP/9Y59 at 45Q
-M5\!Y:MW^85'_`$_`P@*-.81<[9(I```D]KZ]EP]V6?%7$0("4>@OT-)!/IG]
-ML`D(Z[98BFJ'+_XI```<``!`!#)%$4RL,`A:3Q,MY\+HO&_Z8*4`````'```
-M0`6UL.XHUL%<IGWN:V:V7IOT!-V:HG at 2MT:U@`$`4`$``%`!```"````10`!
-M3%V%``!`$0``P*@!`<"H`0(!]`'T`3@'':3'?\X,<BZ</W<)1_IS?],A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``#E8]>.6FQ)8`,=3DF]()=3D8(UD=3D#:_C:RC08\3
-M#+,P):5H0*/[8[^`[V;W?_T@&XBEE-"BJQ%RV-])(-O%C/!C!R'N`]%&J9=3DA
-MO3C>V-<;!^=3D,UZ$*W6YRU!71(P+:";TS1"-*&E#T+-#K;^I;8N!>"F#D4,X3
-M^SRC5#WHGZB6>B3R*0``)!HB8V>B+^;EO-$Y[B4A8JHK*N#QVQC4J"1P@(LD
-M>H/W*0``'```0`2UK0,4A':_=3DTHP&$V;7KM[AT/H#P```!P``$`%I9S(%:['
-M!G]G+/K[!:D&0(W#U?!X$K=3D&TJT!``P!```,`0```@```$4``0A=3DA@``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]FDQW_.#'(NG#]W"4?Z<W_3+B`C"`````$```#L
-M(P``T%$`.Y!AL@,$5)>"E>^*Z,DF.Q&</:M5H;SH4(QDG[NF&YNE7PFT*V3Y
-M8=3DGHVR>R^?"Z6;4O[EUSU6P5/0^4[2$Y%ATDP:TSB\-95\KZAPJ08=3D9_HCH1
-M/VHX4=3D,W-0`,?QO_)*#>C(B4>+>L6(%,VSX`'D8NE6&%-Q(L;LV;\Y!]YM&B
-MQE]7MVR;1A>"'GH+/=3D*3\""`\YK9?^GBJE&T/@?=3D?B56'7ES6<'8X1P(&-*]
-MJ=3DR3!@X>]F at W85W(075SC"C.;,C7QAS5.;W@$7 at 2MT89QP$`O````+P````"
-M````10``N%V'``!`$0``P*@!`<"H`0(!]`'T`*0&B:3'?\X,<BZ</W<)1_IS
-M?],N(",@`````0```)PD``"`=3DLZN)^GUXCVS`;<7PZ['AARV`\DJZHI):AAV
-M&K/8ON1,]E at -:ABB#7&QL_L*C"\9$@;<0<RV3AWQEZAB`=3D*V!S82 at T.KWRO\
-M_UK4Z:XO/GR5JF*[&GI:W(,+:;B!4._O-?%$=3DEX=3D*AMBV0<S@%4E16GQ3%G?
-M_*3?4[??,'@2MT:1Y0$`'`$``!P!```"````10`!&%V(``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z:3'?\X,<BZ</W<)1_IS?],N("0(`````@```/PA``#@4 at ."
-M=3D#-P`W at URK[ZL8B2J`B#LGVXG!T]BEB=3D!"U-'57>)C"UL=3DMDL'K)YW0]\":U
-M%^/]$B*Q5>,9I&"%4B8W#*$^KA,'.;&Z/B%D<<7OB<9VT[U0J"-%%M$O'9"M
-MJB6R<2E"H8$]CSNMPWGH:)_%[4CL<R!Z]=3D6>[]E1YRDK]-0X>')0+O74X['-
-M%[[8H\1RH9`IW'1,G)93Q3#>>NQ>64>;Q/VU:]W.R&]QUP3JK`41E8[RYHBM
-MQ(Y7*P?%3;SUZ4>!F>U$BPKR'/UYVOT;]_9*Y3*<BY6A?1"PU'@2MT8G\0$`
-M_````/P````"````10``^%V)``!`$0``P*@!`<"H`0(!]`'T`.0&R:3'?\X,
-M<BZ</W<)1_IS?],N("0(`````P```-PA``#`>YF;EON+2YNQN<_6\[.58RU7
-M@!&5%7P7:$$2*HD<DT;NW^SY]C9Y[1Z[J?6D0UR`C;Y'M1WSTU7`0%9BCSQ0
-MK<Y2HCLA(5+%0>O.!288C/S1?@4<Q<T<ZW!:`<Y?Z*=3D&UHY%)"V7R.B<ZP(Q
-M[9\,;$!*G-5N;@(^VRI\H1JHY6>T(N/IC#XA"VG5KA86I!35JC`*(HM!"&PI
-M(U;/3RD*8VJ(D*3%Y6(0U)":"RS,:C'&O8QZ;&2L-M5%7T-X$K=3D&]?L!`&P`
-M``!L`````@```$4``&A=3DB@``0!$``,"H`0'`J`$"`?0!]`!4!CFDQW_.#'(N
-MG#]W"4?Z<W_3+B`D(`````(```!,*0``,)5UHF?W8B$3I-OAQ%#'?^Y023K8
-MA"R76_ at JN`C#+>S*M+_D',].`+H68K%Y>!*W1G%R`@!L````;`````(```!%
-M``!H78\``$`1``#`J`$!P*@!`@'T`?0`5`8YI,=3D_S at QR+IP_=3DPE'^G-_TRX@
-M)"`````#````3"D``#"GKXC13.%I"_/?M"MS'8-`I/4!'F6M:35!U'W95E)4
-M at IE+;_YG:776/O&4VW at 2MT9:C@(`/`$``#P!```"````10`!.%V0``!`$0``
-MP*@!`<"H`0(!]`'T`20'":3'?\X,<BZ</W<)1_IS?],N("0(````!````1PA
-M``$`]D:V1DF%JQNF3/39\Q/%#8=3DF[,/-/>8.6PA-Y628),:_\)["RW(\W..R
-MH4UG3^_JZ0!%:0P!K1ZI*!MU_J11K*A8!G'E6A:R+IWOQF'FE3&I[!D+R`K\
-M[_N)G2RU3Q-L(7:#2D,5,V;8P;8MY*?U:F65>6;\Y8DE-T:_ at -9\]I*8!7N6
-MWC;PCLC*G:N?YA;DHVF2J\DZMW'[2"6(\5=3D_HI:W*'Q10AL&ZZ')/&YATY?'
-MAHJ^&_1:K`>!QR4E*G3 at V-=3D8-P`=3DQ<E]NRJ:+%O%_[A^=3DO0N&)U</@KF3&8/
-MX2\6/CNV_7%H]:TN$YGF-0!X:KNPPD<R/!'SQ2F5>!*W1M29`@`<`0``'`$`
-M``(```!%``$879$``$`1``#`J`$!P*@!`@'T`?0!!`?II,=3D_S at QR+IP_=3DPE'
-M^G-_TRX@)`@````%````_"$``.!JE'QE%6]W82M)NGBT"J(S)AT+;$Y"`U_\
-M`$_\Z[@Z$N("[G-4R0R0\.2><WH\A>66V_8/SY`%B%>+4!?XPZ*![>Z3D2A-
-M&P^0YTY-[>VPHOC&WXVDGPF^I)-OLKR.T&PS`>!]?;DC^7+["H('0<]T.2X%
-M*WJ,ELVA4*LO`%R'_#HU3<#J4R##<=3DK%O:N.K=3D'S[@)%V#.&N%D.&<@E*4#R
-M7,]?`E\.#2G2TX,L>;H)4(.EH>^2/X6S5'>-20+"&$`W?&"^)8^N)=3DZUG$EP
-M2K3`[Q/86)V'RLN.TH&;>!*W1DZI`@#L````[`````(```!%``#H79(``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YI,=3D_S at QR+IP_=3DPE'^G-_TRX@)"`````$````
-MS"$``+#")YE9UO9F+:L'&8*;I^\)Q"ZM5:3+V12P<'EUJL0*)$WG%JW376D]
-MDY,.5H^"M>W]%AX.KOJ]9E>L=3DN8XF:#"4.<)PPEV`$7PN>./:5)O&)#\Y^:&
-M_U`09:]^>N.]2RUAH<$2%5\>?X$2'3/!/MJR:C&U&(U_\0*OR=3D#ZX\YE)#@E
-M&(U*.WHE''AW)I3,+U%'\FM2`')V-2KSFHP;O7;9U)Y:!5/D3_1.)SLI>!*W
-M1ES,`@#L````[`````(```!%``#H79,``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-MI,=3D_S at QR+IP_=3DPE'^G-_TRX@)"`````%````S"$``+`F55NR_$4?T&W_&9N]
-M^VOIJ`PYANIVM*FQ(\5O2A"9U$+H\R^_&-$O3'KSSQUQZBCL49\"=3D$]X8^^G
-M.6#YR7*`[ZB-SJ[LKO+IK]2_Y<2PIKQ5YE2)S_+SOM(_ at TY;`]N78B^M_WAF
-M0N-*YD/TS"1C\9#)P]N[[_U3+_4Z\-#(JOF2FIA/_4(SM(J`H;-^Y;YYQUDY
-M(N1R/5^25EF:5IN@':?)F9G at N$%PWN-(>!*W1I?J`@`\`0``/`$```(```!%
-M``$X794``$`1``#`J`$!P*@!`@'T`?0!)`<)I,=3D_S at QR+IP_=3DPE'^G-_TRX@
-M)`@````&```!'"$``0"Q.AZ(ND4406KU3F#N=3D5SZ5JK+NA)/'*3'7T+!CR%)
-M!E-,E>)[6*+&E.R]W$Z:CXJ[@LN`<:D2OV7=3D8O\2ZR:I(,IO6\ZF+NR$?AS+
-M:6<SZX+Z30'GJ3+(SBDW&5^&G"ATG10^\L:(*S1$ST6<YEY6S?UXF5(N#T3<
-MPP9KN3)>%WQ]C4 at 5/R`6\)P#A`)U["FKK9B/KV'!U22=3D@$K/S+`TY+P)6!?K
-MJ244:H>C>)`LVZB+"S4UNS[5KG<S]5P`0L9#L,J35RJH2[RL*J6NO$"/D0`(
-M8V)M*`7Z/PU7/Z<PB)FNC=3D:]'`6.3 at 1H`CU6[KMF$GG[T1[?=3DH7`J&UX$K=3D&
-ME_8"`!P!```<`0```@```$4``1A=3DE@``0!$``,"H`0'`J`$"`?0!]`$$!^FD
-MQW_.#'(NG#]W"4?Z<W_3+B`D"`````<```#\(0``X#8%88PYKF&`9H=3DPU0>.
-M\V<*6_J*JWM!V9M`+]_GH,),<^\4PU^,"/@1)MQI/(19$`1(LYYQM=3D]Q!GDX
-M?;FSG^5AM"7*J;#8D_\,X"*YZ9M_M at Z1!2OKZ$$!F-5@]8CPCHN32B$1SK'4
-MG\V>")_4%<$S$'/`%0ZD+(S&_'SQ7DMXS7V*PQ_EBY1&L3\*G1+2CVA7?;8$
-MKM&+72ZB9Q!6)%7QS\8!B@=3D]?CV\Q)MN32&S:3#9\H(OL*S6&+>4IQI)32*2
-MWHD0YSJP:#9)5S/M&HZO15Z(AM;"BYDOR15X$K=3D&,P8#`.P```#L`````@``
-M`$4``.A=3DEP``0!$``,"H`0'`J`$"`?0!]`#4!KFDQW_.#'(NG#]W"4?Z<W_3
-M+B`D(`````8```#,(0``L"3_^&R7E9"%F$EP!$I(U=3DH>K,WB\WN5/LAQ+QJ:
-M!#J$1>B_/PL1V1XFJ]=3DO+5Y_RO>^"QXCU2442CM$]TN*=3D#6LPV).<OL89.5@
-MAT/)]*\3[%U^?BUQU7E/U2CF#6R>"!+&EK42Y_LW"]&0*@<.1DE61(OJ!LRJ
-MFN3Q58.`7)(B9,ATPSAI%^:TF8A0MWN0%^9;-E3)=3D`.O'LL2=3D3AZ,\_.>!B_
-M#NZU>/\_ZR]X$K=3D&]BD#`.P```#L`````@```$4``.A=3DF```0!$``,"H`0'`
-MJ`$"`?0!]`#4!KFDQW_.#'(NG#]W"4?Z<W_3+B`D(`````<```#,(0``L.46
-MK.6/V_/2O6\JE5_$BKS`"&X0;B,B9*@H&!MS>0"I8PGP4\*6Z<RQ0*AF3?'L
-MYOP;GPO$VME-M+9\5$1Z#%Z6;1;PAY#:+*ZJ4^^B=3DK at I2MB_90VUL-%![/0E
-M:'\7Z41\KJR=3DHQOS!F$Y&BW,TC3*W*T?__I`;-B#&H^*A4XG;UJ\'3.;A]Y)
-M4:JW0=3DX;)A9W:<+=3D)E*>2"3WU/)&[CJ3W=3D7)J/&M=3D`I-.;AX$K=3D&ST\#`(P!
-M``",`0```@```$4``8A=3DF0``0!$``,"H`0'`J`$"`?0!]`%T!UFDQW_.#'(N
-MG#]W"4?Z<W_3+B`D"`````@```%L(0`!4(OIA2E_0Q%+?9C#])-U_AGDPZUL
-MBE?SZJ0!;`1\*UV3B.,`X]"?KA"P(D\#*RF+TT7(:+J7Q>1*>3E["VKR78M<
-M8C_BH:TGIBOM1'SN9=3DTQY3FN<4[\]?2&Q=3D,>Y]2D`9W'7:!]4Z/AP4VO[L`8
-MUN!X'6-QE(DK50&#033P?8E&1`#WJ*E<&<#.=3D`%<W\.?0<EO._%=3D(7M8.@@K
-MVPI>2C]1;3*FX1@/G`]*7H:=3D>]N.S_52#UC1T$9V.BH00_%Q\[!E[W/W]Q$\
-M#DN38#./0S!0[V^UO9!*1*1;XWJ_4!X!P!H'M##O,']R$?U<97BG3PB/L\_$
-M-D^7ML-U7939'PXS>;3*JPK9G5--C-@`X&:+ at Q&&=3D=3DRM$=3D>M]8BBA3J:O"[Q
-M`<_--GQC=3DPR,BMX:OW5323Y(-BG1^%(&0@/DBR#N+89"B?HY80U+$9D3>!*W
-M1CJ$`P!<`0``7`$```(```!%``%879H``$`1``#`J`$!P*@!`@'T`?0!1`<I
-MI,=3D_S at QR+IP_=3DPE'^G-_TRX@)"`````(```!/"$``2"LP1Z]W/'ZIC1^2<(0
-M9- at MLFBHB4'9=3DP/MV[Y%C4.5N@(M%4LGX>[VA8`N7VZ)D&=3D.?;+I\"@]J4-Q
-MGG)J[R0VAG'+R=3D!>V!V;40#NVO'?E.,?4>9N@'X0+OTZ>^$(J)V[7%!X3K7&
-MT*8_M.KMY"3?%@6'F"3YR1E$!'K#F*G28\MJ[6H65%*U,S[W]NYW,FNXPXT)
-M4*0,NMP-__9`(F"6M-!3YH4HKDFQ0_>!N>3\I4AJ!$G82;5P3E!,"TVWJ\8/
-M4/[M75NW]+&AC_""'DD=3D2IM64PWW?_RRF3.8_B:<$]DZ<X^6%DZN7IQ"LVS+
-MMW/;2_HY0SF1F\*<O)K\=3DU&"P'U8YA649T`%HD7]2G$R$5;LP?0&7^J-&?9B
-MO7 at 2MT81JP,`?````'P````"````10``>%V;``!`$0``P*@!`<"H`0(!]`'T
-M`&0&2=3DF%8)Q&9+'/;<'E. at IF"64N("4(`````````%PJ``!`@*:XD\`R^+-4
-M<@??Q!<)NS+<I^)W*-D[S/SN"XXGO/^`8I0_&019S88)KMLTBQ;H at _$80$`=3D
-MA78G..#)>!*W1 at 6W`P!L````;`````(```!%``!H79P``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YV85 at G$9DL<]MP>4Z"F8)92X@)2``````````3````#`M6NFW
-M:PR3GV[^=3D%G,;X:3S8"^"HRF=3D2SW4=3D:E[^*BM6P9>4(D,(S&N2QPE'@2MT;?
-MQ0,`;````&P````"````10``:%V=3D``!`$0``P*@!`<"H`0(!]`'T`%0&.=3DF%
-M8)Q&9+'/;<'E. at IF"64N("4(`````0```$PJ```PQJCR:/3*5B@)><9L;:;G
-M_K`ALZL&%D]<B%Y"&83DZ*.D5A4]T=3DE!D[R;>>)X$K=3D&^-(#`&P```!L````
-M`@```$4``&A=3DG@``0!$``,"H`0'`J`$"`?0!]`!4!CG9A6"<1F2QSVW!Y3H*
-M9 at EE+B`E(`````$```!,````,`"ZD=3D,ECCBD`-GA,\$H4X``7I]9,Z/[@7GJ
-MWT??/"/:S:\$#>%GHF%$E#_S>!*W1G/2!`"8`0``F`$```(```!%``&47:$`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE/K[]*.1V-(P``````````"$@(@@`````
-M```!>"(``'@``@!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``C0X(
-M>C.P>9CKRKG`95?JQ<5%F at LT[\,P<U_`R50*E%R'8_#+!?H/"2;6;0>9(T";
-M";;(2=3D,\YEL<:5EJ1OIT"<1*O&=3D&B\I5SE:;"(/_]M03J"KR/AN2T5TZ%&@E
-M(>$L at O\R@'/64F6M6HM2.[K4[VI#>YW at VO>M"'Z[`:9&KLXI```D/T%2HE*\
-MEB6_&#O$2'X`XOT8%Q??I.?;_)6C at DK5"D4I```<``!`!/J4-$'%M2?30/'G
-MC?3PD@\4\6`+````'```0`6U';.1NY,)0CQXO>O/,G>T0!/?+G at 2MT:-X00`
-M7````%P````"````10``6%VB``!`$0``P*@!`<"H`0(!]`'T`$0&*3Z^_2CD
-M=3DC2,```````````I("(@`````````#P````@``!`!@````<@UI-A?Y9%\HHQ
-M%3F<6HO/Y#<T7W at 2MT96\00`N`$``+@!```"````10`!M%VC``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A3Z^_2CD=3DC2,```````````I("((`````````9 at A```@
-M``!`!@````<@UI-A?Y9%\HHQ%3F<6HO/Y#<T7R(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``C0X(>C.P>9CKRKG`95?JQ<5%F at LT[\,P
-M<U_`R50*E%R'8_#+!?H/"2;6;0>9(T";";;(2=3D,\YEL<:5EJ1OIT"<1*O&=3D&
-MB\I5SE:;"(/_]M03J"KR/AN2T5TZ%&@E(>$L at O\R@'/64F6M6HM2.[K4[VI#
-M>YW at VO>M"'Z[`:9&KLXI```D/T%2HE*\EB6_&#O$2'X`XOT8%Q??I.?;_)6C
-M at DK5"D4I```<``!`!/J4-$'%M2?30/'GC?3PD@\4\6`+````'```0`6U';.1
-MNY,)0CQXO>O/,G>T0!/?+G at 2MT;N%04`4`$``%`!```"````10`!3%VD``!`
-M$0``P*@!`<"H`0(!]`'T`3@''3Z^_2CD=3DC2,UU7.AER7#PXA("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``*4N/,1IQQKAN"&%)0$2]E4@&;[3O,('A)''YJZ"FZXM
-MOBU#FW>_G7U^TG`C"\[892E!F@%Y$CL;$A>MS:6(27ND(T++NB28]),"V)/*
-M89S3VKF[$KO-%$A2)VFG9NA'U."T7-_5M*2.>`DC0^8N5%_SXT,)]7HOW[30
-M$G.&83#A*0``)"BT\@0+(J4VSSU-D\>7962/)('AN\1&UNG+`CWFRX7%*0``
-M'```0`0TZ9`%:4ABO5I^EVLOU'UDY#5J90```!P``$`%;,A!91^L^X:Y+483
-M=3DPXK*^6+!WYX$K=3D&0$H%``P!```,`0```@```$4``0A=3DI@``0!$``,"H`0'`
-MJ`$"`?0!]`#T!]D^OOTHY'8TC-=3D5SH9<EP\.+B`C"`````$```#L(P``T!NE
-M>MFW@/*=3D,)Q^A_9JBM)^JSOH<3!CGKZ1^OW[\#`AO+NN)*I^%2H-S?,QHXK+
-MMCL(9$OTK9"BE*+7U92F4#:U:!2:E"GHQ]B&/"UK'HQQ`627(J]4(?TM+$^!
-MQ\4=3D-ZR7TQ53D<%JGOX57=3D#9PL"=3D^X370^I\'J83AG at .0M#NJ[Q\*`PZZM_J
-M%\Q*MIDRB[?\7-?:X;VU1RYOS4>6C%#`Z:5QZ/4+BINX7C)NN`!$H2999WD7
-M>6/N`@XN&8:9+]@'2&1'P;_QS^FB4G at 2MT;N8 at 4`O````+P````"````10``
-MN%VG``!`$0``P*@!`<"H`0(!]`'T`*0&B3Z^_2CD=3DC2,UU7.AER7#PXN(",@
-M`````0```)PD``"`MOC>*C-,F+ESV%N!CK(HH>WJ[0H0/G at S6]%UDFO]EQ]W
-MZHHP.$0VS>3*JJT\&NSIX)XQI<F@*4@'_6-;?3\A\KSP:D%#O%:N9E)@+?'M
-M[W:NF5J'*NE\(37G))$C"ZQQ)N;P_AT8IZ7GIGUDB)ZK(>E<'6G"B]NDWQ65
-MVG at 2MT90@@4`'`$``!P!```"````10`!&%VH``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z3Z^_2CD=3DC2,UU7.AER7#PXN("0(`````@```/PA``#@".NF)-9[G,$V
-M_950_ADT^2XMD2MGW7W&<$X4V24IV*\M$6"8VH=3D!*RXC"A80).V]<A_B+TVH
-M_+P4K5I07*O6>)Z!7"SGEJ321E*VNBS`LBP-0[YL3.]-:90VZ7O\RC0ZE0S8
-MA822>)O'1T&R<%0Q[+_<J0>V"Q"@ARB9998A4^1X9<13VN/#FMBFN*':&2@>
-MEU>/?UQ#8MA8N!<(1O!&I77).8;,0!5]^Z:0OK*TD)J+<'OC<7RC[`(*"?NY
-M]#W,RM_R(P,K&=3D4NI5"8U(@:AE2'5%C7R%2/*6^VL'@2MT8JC at 4`_````/P`
-M```"````10``^%VI``!`$0``P*@!`<"H`0(!]`'T`.0&R3Z^_2CD=3DC2,UU7.
-MAER7#PXN("0(`````P```-PA``#`I')"HX+^3>4E?#.]>B;=3D:A^;.N^9,Y2>
-M[1BJK&ZJK::`M2DSFITE=3DEZ(:O<1I*5>-(\?/0)GF"?%&N$)*'YIK?/ROL49
-M/D+MH\&HKZ#)N5#,H!&D8$!C:8?;H%YP'X6Z"2*:0_"X%L'7ZB at YJ)+:V7O1
-M\*JQ/VO4)5ZKP13X\NQMD3_6D0W)_"00OJA"T8UT[*QVWC.)/(2B4$SVGI!"
-M&,5R1OG1=3DD]A$-6 at L3TD\@+DI#]L",-W+E/SQC!X$K=3D&.9D%`&P```!L````
-M`@```$4``&A=3DJ@``0!$``,"H`0'`J`$"`?0!]`!4!CD^OOTHY'8TC-=3D5SH9<
-MEP\.+B`D(`````(```!,*0``,.0!,VEL*D-.39\%BP'.:=3DR2-X$O;;[@!X`Y
-M!NV!#H9U.(F3I"^06EHY[_GD>!*W1E^T!0!L````;`````(```!%``!H7:L`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8Y/K[]*.1V-(S75<Z&7)</#BX@)"`````#
-M````3"D``##8=3D9VC!^/#R(IK*:K_#^SJU0#9'Q']?#3!+ at TCF:X#O!:;`UCJ
-MPPD$N!V02G at 2MT;!SP4`/`$``#P!```"````10`!.%VL``!`$0``P*@!`<"H
-M`0(!]`'T`20'"3Z^_2CD=3DC2,UU7.AER7#PXN("0(````!````1PA``$`APK1
-M95]]%\#[H.I4B\WSTS0=3DA>/U(QN4<571$@UR88Y!BS0=3D/^[`]=3D:^]5LJ5+X6
-MZO^I7MS_>C<%48.9H_]$)'F\+5QB<A.8=3D`&BP'".65?J+)G$5[#(,NI'F*LX
-MNN1U1WA!P#;,G"(\NQ9N/+=3D294HF491+?"ZOC_E,?#(,E at DH'EZL#XZ`44,L
-MR=3D64I4)=3D#/W\]`OI^G%J50T!9I6Y0HH0HFA_A(]FW3A0WFU_\<NB`(Q`^%],
-M^6]CVMK3<TJ<")M]D>9%CQ.:TI%[UB9P(W`O7;K"5-SD0KB\>];S2/DIGF8[
-M;GKIPS8BR0L"$LZM11_\3:X6P4YT.R!P>!*W1E;=3D!0`<`0``'`$```(```!%
-M``$87:X``$`1``#`J`$!P*@!`@'T`?0!!`?I/K[]*.1V-(S75<Z&7)</#BX@
-M)`@````%````_"$``.!G4:%&#3E$C"B)?/VP]#[;Q2[!*E\PTES-HM$BO]UD
-MC2BV\^.H6W.=3D[4QA'?$/:$--N.`&5XKQ@@D[$P-F8*^$X-!_!=3D```A\&&^;H
-MO3X=3DD"JPX_/OES7)X"#^)Q,M7YRNGB/L;'FH+BSF5SR!=3DK-,RXE?4(JS``O4
-MO*^N(8>1I^=3D?0TQD*8I//^4Z.7/,3G$N?/C\PD.,%_>&6#U8#YE?O626.^.4
-MB?%XU/'H9Q'J34:49B'7B6:&$'WF,"#X4+440JJWA?F(4_%[ELOWL(-[;#^P
-M^WRDM_BM5F^!>!*W1HSL!0#L````[`````(```!%``#H7:\``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y/K[]*.1V-(S75<Z&7)</#BX@)"`````$````S"$``+`H
-MT5?9M)()B=3D&;",I\]*$V6L.9SHS;69%U at +94<EUY39^R;5?R.LE`Y=3D^%,$3M
-M<V<%*DK=3DI&IL]AGPWDF6 at F;%8$C'J_2N!4T:L>;]=3D6Y8B**&H+(D^<-6L951
-MA+LX:B<0C=3D"O,,I(#W%74G8SBV-?&G3 at 7+4;SDQA(N94B8\UMHF9VEI.K&TT
-MV3I>,L>L8KX'A-J6H0A73FV4N%2A8N6P.)?#F]IZ)%,U+*Q+>!*W1E\/!@#L
-M````[`````(```!%``#H7;```$`1``#`J`$!P*@!`@'T`?0`U`:Y/K[]*.1V
-M-(S75<Z&7)</#BX@)"`````%````S"$``+#_3GM)B'3-SDK2J81JD4F\4,LT
-M25<A&QN"W&U]*'')X,+NABD1T/D+.)!Z>\H7_P`:WR]CA#[UWW9#M#`LL]ZU
-MPC;96SV'AC-[]J;D)H93,NIJ;1EJ?%D&[N"&G>,<47+5/$;112/6*&6H?RS,
-M@(KO(20-SY90^+\Y\</;T!8(%#5.?Q013.JW'4:86([)/)KE>?'BC4@`4D1Q
-M\L,2:]^LWR7Y``DZ`,);)>/&>!*W1D<M!@`\`0``/`$```(```!%``$X7;$`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)/K[]*.1V-(S75<Z&7)</#BX@)`@````&
-M```!'"$``0!3X_GF^/)TJ3>`SRQ*U;`;`WDE2(BS=3DZ&YRS0@[O2I&*\!/;?.
-M/9&U6[H.Y$8SE/CZR);$L6<$F<U>TTB#(_,4:N6E`48N>=3DU:R^B*2X;0MD>(
-M4E];9L42#H\)T-)GK?1=3D^Y`%"ML;WL\):O]"5*-K%;M/=3DFKLQX at UHA=3D?D5"J
-M+ET<5Z95"5SM[A?8!>DTG"83#E_0<CGX7"AC;K`,I3=3D21XJP8R*+Z\"IK!8,
-M_;^T(P483C4\-,I]=3D.\Q>Y*M$`EM>OT2[:9'5GD\S^/]D+JS//MY3)1IV=3DG?
-M.@(W\_`+PT1]_S(FI5#^J/>FE*>V%5SK_82$<L-2#]'>D^%X$K=3D&ISD&`!P!
-M```<`0```@```$4``1A=3DL@``0!$``,"H`0'`J`$"`?0!]`$$!^D^OOTHY'8T
-MC-=3D5SH9<EP\.+B`D"`````<```#\(0``X`U/2LDNTZYZ;7I",VCH>_)31R+O
-M4P7,S:98UTZ8ZYC3 at T";MMQJR"SLL:'+LS42F;$7SPN^6,X.^K1 at 48HXUZ#8
-M:N4\KC#DPB7--$V9#0SXN3=3D=3D1'2(.3C4"M;/`X39$Y66,EMUC)F8Y#F2?E$!
-MJ=3D'.K:<812ZW1%[R1.0YC2.)43S<;*X:%.Z?YCKBE2^;(XV:Q71[4:=3D9*E?_
-MW>G9-\-=3D/U0`#^Y!)]4O<N)O=3DGDF<(E+^758M:162_/=3D0PX0/_-KQ?#W>;EX
-M>4JIEF)@C!<QX[GQN9C6Y>3N1SEX$K=3D&_TD&`.P```#L`````@```$4``.A=3D
-MLP``0!$``,"H`0'`J`$"`?0!]`#4!KD^OOTHY'8TC-=3D5SH9<EP\.+B`D(```
-M``8```#,(0``L#P^TS>I[(9KC4^Z:.OL[7T"6\HR2BJG%4,X`"[K1$#^\JS`
-M+&.H-A`L!T!=3DRVK&%'[(>0/BABE5D1=3DVQF/<@BS!7QZ_(?2%R5;H0S*.S@]W
-M+F9"FY`:*8:*#I'-MF:.%X++?$Z:@UF%N2FN9DU\_;L?T_1C;)7&'0XP:(.I
-M&*D]`*!<#+G`C173UOF=3D&Z/JRC[A3_=3D0<=3D#VHS%WW8GYO=3D?XGR'Y$"!.(B0%
-M%"QX$K=3D&66P&`.P```#L`````@```$4``.A=3DM```0!$``,"H`0'`J`$"`?0!
-M]`#4!KD^OOTHY'8TC-=3D5SH9<EP\.+B`D(`````<```#,(0``L#FF;;?412.6
-MS`-G&5#:[X_[3Y145 at XKDBM?U,;&?.<X*T#N'>P3R4IO)D7*@J`)PWPG at CL;
-M;2LPE5'L5]Q*(JE`-P^`>\JTOX>W*P'(TD?*#X0_@,S^P9+9U?L(+=3D-``@HW
-M&(TWAAD8W7KVTQL8PD&WC9/;##R"3+7W at M%F%LY!<TO6IZ.PJN@(-%)+U'1!
-M^QCP)G.>;!RY'Q4%P3%-^N[U.0M&,O at S."+'=3DG!X$K=3D&*Y,&`(P!``",`0``
-M`@```$4``8A=3DM@``0!$``,"H`0'`J`$"`?0!]`%T!UD^OOTHY'8TC-=3D5SH9<
-MEP\.+B`D"`````@```%L(0`!4!RI6%]27OB&`V"XD!UW[-;Y/=3D0Z=3DCE1S8Z:
-M252%4W](\Z]%D@)/9;#`?M!ULWWSC#8AM^+XI:(J_?N4$T+Y.L&%W,*AT!7?
-M5D8.?<9E]&^[]?E\=3D!+]HAL1#'G;)>4&1$+)'^2!ZT3EX=3D$FPZW>;WVPC21)
-M'RK7K*>4\:L%>SH%K'"\<NQ\',3LGC9_?G8S"@!:K%3B+9Y=3D,!X9(O8;&GDH
-MXTF_)GM4<;AERYT3YF%#E\3U%<2&Y':R!(P)#H61?J_(B$U"1&Q'J/\9JSW9
-M9)->%S!ZP(S)R]3/8&>U<^0SP,,C94(9;1P,565#GR&4?P#$91&$T*N>_0S3
-ME9M:HR00_>B>;Z"K]1\A]!)38R?IBFVV^Z=3D`_=3DE&1\K$\+4!R>DWTG;3H.@=3D
-MT36GO#=3D=3D77G/#!V0$1.DO=3D3XFT!U!8BWSH18YO//N/`I+943>!*W1K;'!@!<
-M`0``7`$```(```!%``%87;<``$`1``#`J`$!P*@!`@'T`?0!1`<I/K[]*.1V
-M-(S75<Z&7)</#BX@)"`````(```!/"$``2`E=3DL6M@!R3QALO!A8=3D3LKVT?G2
-MS&9FAFC_)P35(85L9>H3,<.)LK*PN.U\<\B_E%.D95MKWKX*KZ*9C?TY=3D_8-
-M34M"9P7V!X``$&8'\S!/^9-/Q-RAN'O5ZSP*?V:>K$V4.,_(V!>U1_PF'?$R
-MIVQVEDT5I\>6A4T at _'B5,6U&7V=3DI87W>N8A0=3DIR(E\67NIG]&NSVO'#)!OKE
-M5!7JB`M^/TB at .32$DVK"]&#>*?3Q(IY2-;3 at M?3,F.]LE#_DZ6M,2.7(;$A^
-MZ1Z<\P7X>GW/_/Q^S+OD$5`)!D)01*M at _82JS/XKEAG at UX6N)#C%F^\V<. at 3
-M,U0!(-M`EQH'R=3D%P'VH&5NX.-/K(2)4_^J(+3_=3DZ7!`*59G83B=3DUF'@2MT9Z
-M\`8`?````'P````"````10``>%VX``!`$0``P*@!`<"H`0(!]`'T`&0&2:)(
-MJTO?1T#?S)59&,Q8W%0N("4(`````````%PJ``!`39^XZ9)H7W\J1M>&N)['
-MEPP(4^%UX)7GJZ^I.,-.=3DZYT)Y94+*J8@*#:I2C3]7`^`=3DE'40C/%,?'LI+O
-M>!*W1CW\!@!L````;`````(```!%``!H7;D``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YHDBK2]]'0-_,E5D8S%C<5"X@)2``````````3````#!0-L^[G<YAT*'3
-M_D7BJ"G!2+BH.J at WX80%C'99YU3>`[OOQ"7,EAUR=3DMQE[G at 2MT;@"@<`;```
-M`&P````"````10``:%VZ``!`$0``P*@!`<"H`0(!]`'T`%0&.:)(JTO?1T#?
-MS)59&,Q8W%0N("4(`````0```$PJ```PEDCI)(54FG2P:7'8ZRD0WV6.?/F$
-MN5HB?'("3#<OL28YGL4U=3D,:^S].1,.-X$K=3D&GA@'`&P```!L`````@```$4`
-M`&A=3DNP``0!$``,"H`0'`J`$"`?0!]`!4!CFB2*M+WT=3D`W\R561C,6-Q4+B`E
-M(`````$```!,````,"M;YUGPB%+W:WJDA_IX7NRI2'7;9N@#L_6B]`B\?<RF
-M<,CG>>UY)KPHK'5]>!*W1F\6"`"8`0``F`$```(```!%``&47;X``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE1RI'M*A58)(``````````"$@(@@````````!>"(`
-M`'@``P!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``K&X.N2<JI`&T
-M`?7=3D.#`6/NMYJ!];M*:7^<.Y%5NS]KH5879@%=3D]\LP:/ISLDA\O>AH<IHN_B
-MI0UW5/F(7/N)`56D<1.Q+S5$,MWV#D_7-]S3N-H\-Y9`"P\>H,41/3M:46T'
-M,4K,;V:69"O!:'*2L*E[66XN<*@QZX9NO_(`*8$I```D<0_*S^0-C"O]?_]*
-M#[OZD]H<?!K>R^A9*]FG29JG%.(I```<``!`!%.P4F<TME`&C"<;=3D*<WI2**
-MJ7C'````'```0`4ELR_D]CR:QO6V:\'I^'FYRE,7F7 at 2MT8))0@`7````%P`
-M```"````10``6%V_``!`$0``P*@!`<"H`0(!]`'T`$0&*4<J1[2H56"2````
-M```````I("(@`````````#P````@``!`!@````>HP_W,G_6J\OD\^2.O$W9U
-MB#6GZG at 2MT:M2`@`N`$``+@!```"````10`!M%W,``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A4<J1[2H56"2```````````I("((`````````9 at A```@``!`!@``
-M``>HP_W,G_6J\OD\^2.O$W9UB#6GZB(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``K&X.N2<JI`&T`?7=3D.#`6/NMYJ!];M*:7^<.Y%5NS
-M]KH5879@%=3D]\LP:/ISLDA\O>AH<IHN_BI0UW5/F(7/N)`56D<1.Q+S5$,MWV
-M#D_7-]S3N-H\-Y9`"P\>H,41/3M:46T',4K,;V:69"O!:'*2L*E[66XN<*@Q
-MZX9NO_(`*8$I```D<0_*S^0-C"O]?_]*#[OZD]H<?!K>R^A9*]FG29JG%.(I
-M```<``!`!%.P4F<TME`&C"<;=3D*<WI2**J7C'````'```0`4ELR_D]CR:QO6V
-M:\'I^'FYRE,7F7 at 2MT;-;`@`4`$``%`!```"````10`!3%W-``!`$0``P*@!
-M`<"H`0(!]`'T`3@''4<J1[2H56"2N*G=3D["0B\\TA("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``*Z+SDRN at JCLSRE=3D"<Q,`'P2)^)PQ"9+=3DA at LH]T#/AX:U(K1J^TB
-M^5$4+;POI,0,+?/6*UV-8RAW2D_40HN[%=3DOX3LX=3DF$*7S9E8*,SJ3U_A7NM/
-M.85-0[/S##F3L&)+YM'^,S6#EU5RA"4#D]NW]!,"[H`@);GE.ROTR.^WM<NH
-M*0``)%@8RR&40DLJ%!5?4%LZAOJ3TQO at Z.'N`4=3DH/&_]A_D**0``'```0`2&
-MG^"P^;:'>&O>;JA\Z,\.D%0QN@```!P``$`%!B`12-YJ:F:01]M9;>@_LCR8
-ML)MX$K=3D&T)D(``P!```,`0```@```$4``0A=3DS@``0!$``,"H`0'`J`$"`?0!
-M]`#T!]E'*D>TJ%5 at DKBIW>PD(O/-+B`C"`````$```#L(P``T$VS(`*90>`5
-M9Q1>/%V[ZUME4;EIGC-#8B$O_,P3QH\)@JG+[V`$6""/XH_B(Q>=3D^>;HDZ4@
-M#P@\"1SL[R&::8545X51P)-OAK]8Y`[F1PPD!^=3DU;ZDNHK2 at 4%CTGX65O!!7
-MK@,<`@'@&>_?7M3`E<18I&":2- at V7$(B9H8OG]>\A4ITJ-8*`'(9#2(8,7&K
-M at 4/I-]XT(($C&S]4W2DYJM[4]H.#=3D&"0F10-(3E`$X?_-F[)MB.XW^0Y-K+Q
-M;!SEGNJ**<QR22LBH at P@@'@2MT8#LP@`O````+P````"````10``N%W/``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B4<J1[2H56"2N*G=3D["0B\\TN(",@`````0``
-M`)PD``"`>8'2?XKD3 at YQ&\5ZDCP+8Z[E4A!^7%N?J2%OX\9)@\C+/'9P1J&H
-MW9O]MW)F74)?8#?=3D#S3!*1'&5J_OF%,!TA<H]XG2:WUS5$XOXK/THP400!SC
-MG+'TMW"_H%+%`:8Z?O]"VXKSV^<.H_'!%KCVI;L=3D?K8:0$(HA[2'N7 at 2MT:Q
-MT0@`'`$``!P!```"````10`!&%W0``!`$0``P*@!`<"H`0(!]`'T`00'Z4<J
-M1[2H56"2N*G=3D["0B\\TN("0(`````@```/PA``#@;65%Y-RE:,^G.$ZDI[/1
-M7<]^*D,7)[(9)3=3DK60L>1DN]W"A/0KP!A/1IY'FG+T\F"/B'1*^Z+E%GW;PS
-M1Y'GRQ%8GJ%%@SA[M*J-G?AV\RCSV0,_&,C>2_@]<1\=3DK#@F;;NHNH"S6OWA
-MCIL]IM;43-J6*F0)FJIIVKG:::I_F)(WFL5%!`%'.G!E/8,DP@=3DKX_Q!CL4%
-MWC0#7PNHLW5(H/M`N*,^"/!L`#(GEC"M_6W at -7A@NPK>7^<^I\96-5-96=3DT@
-MV?/P+B5&I$D`#NMOIAC&:"V`@IM8M(=3DG?'@2MT:*UP@`_````/P````"````
-M10``^%W1``!`$0``P*@!`<"H`0(!]`'T`.0&R4<J1[2H56"2N*G=3D["0B\\TN
-M("0(`````P```-PA``#`JE'.YZ_1F,T<P5!N6KG!'V7W/^7-;%)56, at S6]<-
-M:F"F_)-5JC.A(ZJ8Z_\M7GGQ=3DD9B>"-P\XUU+'N.`?X'OG^1(6('UCIQ>;XH
-M$")#T-PZK(O)8YY[8'ULH;RP8L&'R5?Z^;5Q-96GG'(@UA,O*B`6LOP3KQXA
-MLZN`^UC,BI-!6-6`DB(.J*/0U+1RJ"U2H=3DZP-SK2MGF2WS/&K(FYVOPNP0Q(
-M-?J9F7M9JCY:YSR_B&.TLTLW`T at 6_YYX$K=3D&L.<(`&P```!L`````@```$4`
-M`&A=3DT@``0!$``,"H`0'`J`$"`?0!]`!4!CE'*D>TJ%5 at DKBIW>PD(O/-+B`D
-M(`````(```!,*0``,->3*0[3!.HOJ-?ZAB8@?`_MJ:#4"!6;"4D\S"-P8-`F
-M5.+M28U31E at M+Q^(>!*W1C$%"0!L````;`````(```!%``!H7=3D,``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y1RI'M*A58)*XJ=3DWL)"+SS2X@)"`````#````3"D`
-M`#!*OG>]A`C$0[L at -KP&U>6+.7C$"EE9,,-B11/7=3D#@Y]44R,\"WP3&N>(_,
-MC7 at 2MT;=3D'PD`/`$``#P!```"````10`!.%W4``!`$0``P*@!`<"H`0(!]`'T
-M`20'"4<J1[2H56"2N*G=3D["0B\\TN("0(````!````1PA``$`"M=3DV^I1=3D3ZNA
-MO"YJP(?AN"'`_AZ/"@4-_DR]P>NE5\_T?[.1S(RDCAT[M%86$K,^UBUN at QIC
-MJ(&=3D<;P>$F`XM^@SS\XZ%IMZ&:AMZUWL()6'&YF/9Y&-C676$Z]A)%N3U0&6
-M;W0':\V>6-70-;C=3D39[N at 5H8LBEZB>\"K3NE!W_KZ'8)NI%!HT.H[V+XAI@;
-M?+HW[D]<$\LK0C^94K\(^DSQFXO!VMJ(Z3&.JE`UKB/\8MQ>0 at HL2)KT%/'/
-MLI!'J6D4HUT)+]+NYZ.VF'6!$9.:I:%X5XW'-&E760?A/&NCF;?P3ICB@^1D
-M=3D(#F/8S3:NIF`%/#B!67+O27>!*W1NXK"0`<`0``'`$```(```!%``$87=3D4`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?I1RI'M*A58)*XJ=3DWL)"+SS2X@)`@````%
-M````_"$``.!\UEFA;3S^ED5Y1(<.2_;VRC5 at SGQ^%"=3D8UK[$8^<6>R>6^6*:
-M9Q5"R4<BC#X#4^W\VZ>I:]I*,A0Y"]&Q/?T"U]A5;>H-IPRUY8WDM*C:U=3D/L
-MZ5]=3D>F'T,[S;?T3AK6BB"!(6-`$;N^Y\Z_5D76C,7*"$Z2`SSWVS8'GX%V:1
-M-COC(-L at 89&&;(N]['ETC`W@:1?)9>N1RK&*H+BDH"W_E at I`FC3!:<![-,=3D8
-M>7TI`FK,>,+V]U<(,X'&1F_TNF2*G3L(D$;0/;_3G[##<F>/BF(@C<.-CT3B
-M`,N7>!*W1F8^"0#L````[`````(```!%``#H7=3D@``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y1RI'M*A58)*XJ=3DWL)"+SS2X@)"`````$````S"$``+`CPW%_H!TW
-M]'*$[7$W]V`O,G/.#',UJ%;^$&EM-E/.#0#WO`))+;HUZ<RPOO+00I.1+5$F
-M*I?(X++2=3DACW6VV4C\>J3&;A'S`P9GL#.;`2X3"L%6'"&0"JKMS>38`TNY&Q
-M^;#/.$68GH>WM=3DH#5<D;::W\7`$9 at N,`K*PS=3DEH3^2I7MD]!OZ,8(B5]HK'Z
-M!02$2GU021/9!@%\&<Z'#'+*Z&W\ERG(`VQM[KP">!*W1E1@"0#L````[```
-M``(```!%``#H7=3DD``$`1``#`J`$!P*@!`@'T`?0`U`:Y1RI'M*A58)*XJ=3DWL
-M)"+SS2X@)"`````%````S"$``+`)Q0$+S]@B,*X6HTIG(J*6E%?_P at -8<9Q;
-M7@!"X=3DUK+Q[+YQ`+HQYB:KNE.U!'"9HP,)[B_7DB1<H'(-!R<XXS?3B-<;!G
-M1D#4;S1'@<>)]9Y!SGK*G/(W8(%8A:'U<@GY]6MV4A8SS>3F^T]+_:7HEB;)
-MH+I9-U*KM%MQ&9ZN7'5 at _SOG+9+YWX!H*EX202M[=3DU-M&#F;U+IT#V*=3DC8<Y
-M0F$?X_*W.JAT+>"J>!*W1D1]"0`\`0``/`$```(```!%``$X7=3DH``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)1RI'M*A58)*XJ=3DWL)"+SS2X@)`@````&```!'"$`
-M`0!QO0K->X6WW%GKX`T#1L-;PR#2W4<$6$I:(4 at OI!DM<_66/YC=3D!G`,>)0N
-MI$6<"8E(S<2F&T]!7;6'6,O\0A-:5JU62>.]9D-/S"U"$R$T/N$X(Z)5:STY
-MJ!&-E[:`8_<^J2PH7G.P04H..S?>E]F(=3DC*QX3T)XHI at O/)Y@]]-$_ZL-K-0
-M.1`#*\?U&>0O'_N8170W[LE9#\A$`V_T&["9_$910L2:IO,:E,BYK]@\N];O
-M5?'8:;+_P;'_5)F,N>=3DY9<D:[9\[4EU)G7CK3^,#N/SW">ZZCH4)8FUXM'HF
-M'-QCIC.B;,_5HB/@/IWO*7V>\L&DIR_+^O&Z7UMX$K=3D&8HH)`!P!```<`0``
-M`@```$4``1A=3DVP``0!$``,"H`0'`J`$"`?0!]`$$!^E'*D>TJ%5 at DKBIW>PD
-M(O/-+B`D"`````<```#\(0``X,V[(#2[+UU=3DM9UN#CY.B)Z$5!Y%PIG2@^29
-MRJ,<`%ZBG:N=3D9X%E<DY`3G;>]A:FKM[[4]'*+<F)]SRBO?DTQ^CIR_*GI]4>
-M0D9>PMD9D at R38P-J$O),5:R+#U>2Y.+=3D9G2KO\C!_H4VH9XF<F[M.%*5!7O4
-MZ;&$+3XQ3'=3D+NO9$\)<8GXA%6DV;Z%@1+,(N:#D#K+Z37"HNI$+R_#GB"O)H
-M at P@)J=3DR&7VTC`>I<Y..`,@>6:4%!=3DML&57NRH_H$O'*A_R8VJ!5+T2+E#,J!
-MW'(-UO^*Q`2/?=3DCQ!IMX$K=3D&KIH)`.P```#L`````@```$4``.A=3DW```0!$`
-M`,"H`0'`J`$"`?0!]`#4!KE'*D>TJ%5 at DKBIW>PD(O/-+B`D(`````8```#,
-M(0``L.4%FM7 at E7IQ)#4I"YT\=3D[&HR!&J5HE9*9G`D)GST:(N*WH$$!D"')'\
-MUP$Q4\H25HI-P=3DC?3<7:JY]#I]II-WJ[K+Z?F)\&MWT,3S`.T(ZZH>\K#+\M
-MX+Z;3K^E at D)71V=3DC3+!I[NPQ_<,B7Z7OQ@'@4WK&/&NM6]I"_,1:GN^>'00R
-MV,A6WS$<D93)S5*+G6:0<@+#AI#=3D3^'0DL*;@9A7PO1_]S,:!HO#N^1X$K=3D&
-M!+T)`.P```#L`````@```$4``.A=3DW0``0!$``,"H`0'`J`$"`?0!]`#4!KE'
-M*D>TJ%5 at DKBIW>PD(O/-+B`D(`````<```#,(0``L-[\TH]VD0/>C#=3D`$3DT
-MLO,31_Q&NE'D7.O%K>B8E[7&FV5_.8K#T%H+#!7;&OX<UW0P;?W!>[XX8KG-
-M-M1>C7HBI"8)>2_'!RA'52:4<_RI7?&1&>@PY*+F^*6-VM'K(3,LD%#):+$>
-M?I'F6P1?6HNKP7FJ35/E\VGO30:)&"*41'7?YN0#E_[>9D_VF/)UVGO?`I64
-M=3D^Z_-QC=3D:!D/EGWO26D-,/W=3D6EMWBRQX$K=3D&#.D)`(P!``",`0```@```$4`
-M`8A=3DWP``0!$``,"H`0'`J`$"`?0!]`%T!UE'*D>TJ%5 at DKBIW>PD(O/-+B`D
-M"`````@```%L(0`!4(@RE-<5PD`Z=3D%^OJNC&EKG*];AFP^B?WBD=3DWO^UH;8;
-MJX#/!L]#=3D5!0XJ]>]PN7R at SLI]K/>@\M<%.<SE&6RF?1;;DT0Y!(X5J<A7_M
-M?5>GX!`0(4PSB6*Q"HMSE,'D+F9`S&'A3U'2-LW8[>Q97%\@155QEQ"Z+]C2
-M7QR!=3DQ:1=3D>9.E;%1B>W-P5N[!L>C^J<)'.`P+#Z).M;Q`]`-\JV,OEOUJHM^
-M7]^V>MBA3F/%[T0P>25VI`;FN$RP:G7N:\-`KR0(8JS(35Z1%XFG'TJ50J]H
-MH at A7]^S9"P_PW^QY$NX6`&*S]\4]A^9KK>\0)YB9<>K/N\BBO6Y$S';V,JDU
-MC_+U5%SUTDP*M9V0`DBWH?'W+8=3DM5^8]6!WP\4U2UEL*&;(=3D!Q!=3DTDJ14R,'
-M>RUQ[AY9=3D.PA5_G8Z:?:Q8??"I*;982D2?3`IPND>!*W1D$=3D"@!<`0``7`$`
-M``(```!%``%87>```$`1``#`J`$!P*@!`@'T`?0!1`<I1RI'M*A58)*XJ=3DWL
-M)"+SS2X@)"`````(```!/"$``2!W9EF"9O/_)8!.\L#!,%&L4J'<U,#MDQU/
-M_9N*<UZ:`T$*0)X]CBH`8LJ/]CE:[>3T2R.<:BF at I/\6X0WZJ.M#^ZN.3&H(
-M=3DL#<QG(M#P\B/*O_4GJ`X=3DS,/>Y.'PCA?X:[GX?;/V54(LIXG<+CQX,-W!/-
-MOHSB(2DD;X<8_5/.T64MQVQ`"NYU.$KXD]%(WY=3DY,;^"`1YSV<6^-F#P*:[/
-M0T=3DG-[8:A9X/*IM4E35[#ZIL)&T<`P=3D4(6P=3DL&#-_:LNP4S$1897;5UW8AQ=3D
-MR/Y\RCFDX4CUI7Z,&!/:3$6B`]K&Q'/&^866[(PS49ZB2?LN`4)5AOOQQ%)%
-M_L4VNZ4>BEUFG:FEG\'*X1>QFK=3D)M2P0FOY?VVV4U-&O"W at 2MT;01`H`?```
-M`'P````"````10``>%WA``!`$0``P*@!`<"H`0(!]`'T`&0&22Y!W*`WK)<)
-M=3DX0V_E3I[-(N("4(`````````%PJ``!`C4Q2:\GX#R[M'9:1Y]RCODIMWNE]
-M2N^A49H\&1^J9;^"'<I5=3D#K/)7D/;&]5,!D^.=3D-+=3D?'Q;QC@\:-/>!*W1D!0
-M"@!L````;`````(```!%``!H7>(``$`1``#`J`$!P*@!`@'T`?0`5`8Y+D'<
-MH#>LEPEWA#;^5.GLTBX@)2``````````3````#!TK*V91M`,>C=3DDB%KE>OH4
-MO,N"+)R#??;_D%"H4&C=3DL,PF?<)B?2EM&':>''@2MT:S7PH`;````&P````"
-M````10``:%WC``!`$0``P*@!`<"H`0(!]`'T`%0&.2Y!W*`WK)<)=3DX0V_E3I
-M[-(N("4(`````0```$PJ```PM"1[(N/]$'L2[CI'"%M(H['8=3D5IK2L=3DU9JF<
-M]*8"@I*YHJ/T[T4K6M8W>[]X$K=3D&/VT*`&P```!L`````@```$4``&A=3DY```
-M0!$``,"H`0'`J`$"`?0!]`!4!CDN0=3DR at -ZR7"7>$-OY4Z>S2+B`E(`````$`
-M``!,````,+Y)1957/@GSHL!H8B-MMA8E[&98D.9>U<TD''KR^6K[[(+C<U6E
-M(;SP-K&?>!*W1O9K"P"8`0``F`$```(```!%``&47>D``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE%;2;T=3D?2(",``````````"$@(@@````````!>"(``'@`!`!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``2D%F$:=3D7-LR9X!XE9A`C
-M><(UCMZ4L6^P(;:,]A=3DT6XYX,=3D=3DF&"1WC@`(.::NR#!"]N7E,Q86/T_'WT/0
-M!<8O\)F,$&D-[KMK72A>&WT2K=3D%Y><6E:UT:';-]8X\POSUK*?(<9QI*$VDO
-M;7O9 at MEB-J#!6M'-\\I=3D10UM5K,?-:PI```D23YMHJ]08O,8]>_W97$,I#E_
-M5T__7D;-2WAL(^0P+-`I```<``!`!!_)]NK9Y25!C%=3D'D<\_0IR$U`W1````
-M'```0`5/U73JK`<SP+Z5=3DY/XFGGQ/]@^S7 at 2MT9H>PL`7````%P````"````
-M10``6%WJ``!`$0``P*@!`<"H`0(!]`'T`$0&*16TF]'7TB`C```````````I
-M("(@`````````#P````@``!`!@````=3DU=3D(%XJQ7CAG#MG(AL?&"[6[%?$G at 2
-MMT9HBPL`N`$``+@!```"````10`!M%WK``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA16TF]'7TB`C```````````I("((`````````9 at A```@``!`!@````=3DU=3D(%X
-MJQ7CAG#MG(AL?&"[6[%?$B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``2D%F$:=3D7-LR9X!XE9A`C><(UCMZ4L6^P(;:,]A=3DT6XYX,=3D=3DF
-M&"1WC@`(.::NR#!"]N7E,Q86/T_'WT/0!<8O\)F,$&D-[KMK72A>&WT2K=3D%Y
-M><6E:UT:';-]8X\POSUK*?(<9QI*$VDO;7O9 at MEB-J#!6M'-\\I=3D10UM5K,?
-M-:PI```D23YMHJ]08O,8]>_W97$,I#E_5T__7D;-2WAL(^0P+-`I```<``!`
-M!!_)]NK9Y25!C%=3D'D<\_0IR$U`W1````'```0`5/U73JK`<SP+Z5=3DY/XFGGQ
-M/]@^S7 at 2MT8(KPL`4`$``%`!```"````10`!3%WL``!`$0``P*@!`<"H`0(!
-M]`'T`3@''16TF]'7TB`CRJ=3D%.O935WHA("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`$E]OI:=3D8S;4(V8RR$F"I/>1N3IN&#X8B?,5UY^,W4_#I[<1!,8>M(3Q3'#U
-M.H,+VP>>:X''Q3*?8I<ED<_CLH?9>LK*=3D at B+9D4:<^70L\Q_607[-,9*$"-E
-MSO-$Q_<7Q']6!2E`AJ@'OH\N?K50Y+)H%MF9:7#O/5M?ZDNVSL"'*0``).8J
-MTFG-V++=3DPPTV!DB'&R/7+ at C=3DZO-V_V9_PJ]Y"Z42*0``'```0`2Q3F324#&#
-MIZN6'\+`Q3<=3D`"ZC90```!P``$`%%]H7^((F_YMFW]/-[XWSV!5/C2%X$K=3D&
-M&-P+``P!```,`0```@```$4``0A=3D[0``0!$``,"H`0'`J`$"`?0!]`#T!]D5
-MM)O1U](@(\JG13KV4U=3DZ+B`C"`````$```#L(P``T-J2DL&Z%6_N185Q5#^&
-M8A!U_T&L/\[PT<F\4L<F+7E=3D6[PRS4(@"-,U5(G2G/Y!EG"HQ`(!-BKJOBCJ
-M,ZM.4)6I^/EPJ!L!'_=3DI>LG'7#XRO(6"7`I&,0T2)F`(XL%H at 8Y2W;7,N,PC
-MZ])GV[/1>&ZA(=3D(I9T=3D%*AOIJ+EEMW-UPRU(#J]3N@)5,0%YFK&P_^85I at Q+
-M"VMPCG[4STCBJ#L\4.W)H.>7H4J:OC0:FAE%0&83ZZ`?:=3DN0CC*,@'%[(,.,
-M at W+FU>.R4TQ9WW at 2MT:@]`L`O````+P````"````10``N%WN``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B16TF]'7TB`CRJ=3D%.O935WHN(",@`````0```)PD``"`
-MEU?E.;6Q]EC#S]2%WF!4DR3@)7*_6_A>7'/81S_T#>J]71Y=3DJ7W>GNDS'ZYC
-M.!O8S-N^40:MK0%:J'BFI\['_NV3.]2H>*J+](Y+T$6R5#O"AR+_M4Y)6?"Y
-M&4+Z.M4Z$EQNSX+\UN`S#:!(&'8G21!EX^ROS<>.C,T`67 at 2MT;6$PP`'`$`
-M`!P!```"````10`!&%WO``!`$0``P*@!`<"H`0(!]`'T`00'Z16TF]'7TB`C
-MRJ=3D%.O935WHN("0(`````@```/PA``#@!=3D'Z7<$ES\B?L(2.&#M&1&SB%`[7
-M.Y,X4]L>CO#\!@J<071>V/JU*CKAD#+RDM4S*QJ-Z/5BY>HA>3TWP)8G?"@"
-M=3D`3:$@VW*\@+DT8B"DH.[T8Z,U0,;K#B^Q%W=3DY]_VVZ)Q;"EV9;H14_BPAGC
-MFAXQ&^X[]D2!1VM>D%\`K#O6 at HC-X@.\$@"V5-7>NHTV21P6/1RX>'B"'!4G
-M4;2A#Q/":*IPQ8Q-/ZSF7KK]D)<V%G>. at N<PQR/#%@-IG_90J2V#H!Z]+H(R
-M-Y[Z*?U"ASAUK`$R>1APPR]!1W at 2MT8]'PP`_````/P````"````10``^%WP
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R16TF]'7TB`CRJ=3D%.O935WHN("0(````
-M`P```-PA``#`AY>!H(+NO^/4D2=3DA]H21'V.S%EZ9YB<?GNI"*0F\*4KE<FK8
-M_*N?$PX6J0+WD43_SPM`:8H$L*=3D63/FC!UP(!<ILZ?!8&-\C,*#N=3D^2 at A%TO
-M_T2"#2?!G(20..MXW%$2LE1*16`1"_=3D0BR%*<SC;(E'0ZVI3:,6'T!Z?0J/;
-MV.#I?W0WWX3!W=3D?=3DQ?0VZZD*=3DP_PHS7>P%2%_OH^-PWJ:1HO(O'H:L?E%(OM
-MXP5-VO+C6TIS8D+HZ?4=3D(XEX$K=3D&*BT,`&P```!L`````@```$4``&A=3D\P``
-M0!$``,"H`0'`J`$"`?0!]`!4!CD5M)O1U](@(\JG13KV4U=3DZ+B`D(`````(`
-M``!,*0``,)L<:^K"*!B(5=3D6=3DP@:RQ\=3D1$@5X,X#\']">`R(O(_:BTZ4TTF'\
-MT.K("/88>!*W1N-(#`!L````;`````(```!%``!H7?0``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y%;2;T=3D?2("/*IT4Z]E-7>BX@)"`````#````3"D``##;T_I6
-MNJ26$I1A?B<0_EADWKC-9*SJ/3(UO-M/KL!U99!=3D2LB?0JYQ-.SV<W at 2MT9!
-M9`P`/`$``#P!```"````10`!.%WU``!`$0``P*@!`<"H`0(!]`'T`20'"16T
-MF]'7TB`CRJ=3D%.O935WHN("0(````!````1PA``$`E8H`.X>)GGTIPLQVO(RB
-MUR5[Q%@-;48^G[E;P<C)\UTX6LE_N8*QX1)P1'V0OT$"K"/U>E':1*;0&VO(
-MO;C92MQ5<$:1V^T at Q)0WJG^W9NS0??RHK8J_:^4IA)+:7@'@ZU/.&-&/%4K3
-MH8T7\!6,1&[,'0\6YV%@]<->#A]:L4!MI'>P9B.B^9]!!@;"=3D`/6EA6CI;.J
-M23#CA0W-UDE7V@)0,99ML>71=3D^G]ZI$-H[6T)L8CZF*M_)O(+[2P7`D@%R:F
-MV0/3BYU(OK9TQ>27 at NRI+4-'@^`+[*)W#/:D6#Q<#$)+4*!#:<H1<F(A>HA]
-MNJ8>1@$)P.L-+[_D>!*W1N9O#``<`0``'`$```(```!%``$87?8``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I%;2;T=3D?2("/*IT4Z]E-7>BX@)`@````%````_"$`
-M`.!@K;G>(L(\5C+'D5QDN/&>5X@(!6T%7$YXBA at 2[;DV:W!@-:@_<.WS)_-%
-MUF4[]5N at Q5^GYN*DOX@<!/<96*+N,LUL7O)*,D>394L6<I8"%2ZR:"-K>,K1
-M\;M7UEYKU#UIE_\`@\DR/PK1+S7S"@BE.2NW1+12B=3D2BB$'H0,^>]UO=3D4_DN
-MAAO'N;:MRLCRY`4KVPH8B?V%'J^8*G at N;D.2_+ZX,/-+KW'_&TPY5EL`$_$E
-M[JZO-'6+S3CW^N15JF`&/P`U*N8\C!EZ3;H>*)8O:-8397^%EB8=3DAP,B>!*W
-M1F=3D_#`#L````[`````(```!%``#H7?<``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M%;2;T=3D?2("/*IT4Z]E-7>BX@)"`````$````S"$``+#+$-`HJ\%,<L]:5/T]
-M+6<J"&K!1 at A-A_F:/KG(5R+M(!:F at H""/-EN^R[8-FD'PSB&C[V!Z-<M0<^F
-M+-')(]AYJ3+396ENIB@#2S7,%F)_$U)4^9IUL,OB3O:Y=3D#D1Y[JP]4H$/69:
-MB_\/-[.>?:JAW3 at 2=3DD5["8G,+[,`HQ83-])9,E'<%R at VIIF=3DE_#3D0PI(6S.
-M\Y\\)#Q(+OLIC`I#M-$<M'"&PK8;HES->!*W1DJC#`#L````[`````(```!%
-M``#H7?@``$`1``#`J`$!P*@!`@'T`?0`U`:Y%;2;T=3D?2("/*IT4Z]E-7>BX@
-M)"`````%````S"$``+#<5Z/=3DV$;:8T?$XPQR4L204KHU&B(WQ]^?^4C^I3QU
-M^NI#8B$>TL)YB=3DPA8[QH]@OQMF#>6VU61^"H.0?&?Z"$XG at H?YK67&R:0ILW
-M.*C8+KLUX, at G01?-AK;H1.1)C<IF1'RB$-F)(]`DEQ`\@&+9>A%\>Q0"65%?
-M]4P6,*"N0,JCIH$JFHY60A[>`_9V3#%^O-T'55\NCOX1*.A%H643H?+!$D4S
-M?1G*`*%S>!*W1AO`#``\`0``/`$```(```!%``$X7?D``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)%;2;T=3D?2("/*IT4Z]E-7>BX@)`@````&```!'"$``0"EW at QJ
-MT(&?8N.)@(*L3+]X(Q$#\+:1/_?9<5 at E,`UK at Y-Y8G3_Q`(KCS/<2%PSQ]6_
-M?<J0+@]@2)9:S):Y)5E-Q4'TD0D:85%5PJGG]$=3D at IKP\Y63<V!=3D(GA)X7#79
-M[?]RBO6I/%N)*<'NQQLA#THGRXU\/;9UL#9P2!EWE:%_HGJQ;F:,C#9S_*RX
-M at 1I?K:I/(0\$88G_2%=3DI8;&89P)[!C$Y!H].&8W(&>0(E.%`XZVU6L#TQKJ*
-MM1<<R<T at NS2#FQKE8^!PNOF##0=3D8S7G<(J\2SA4(8N$6ZG8D$19MC$V42:]5
-M(!B at 7&[ZO#_;H!9J;]TPRFRV6+D0^@UX$K=3D&&<P,`!P!```<`0```@```$4`
-M`1A=3D^@``0!$``,"H`0'`J`$"`?0!]`$$!^D5M)O1U](@(\JG13KV4U=3DZ+B`D
-M"`````<```#\(0``X%C\U3FE=3D&IV54:IV^*..9M$3](6$6NK^1S-E4GN>.=3D]
-M5".+K7KB"S</K.YTO:<$[E,SI2D^GE-L(Z?O>MMNB^FN6T&2]D$^<.;`QM\T
-M,?M,0AWE<)VGN3\LQR7,&_F2W/XGO(XO?*_O,`,!Z"Y$(BG^Z)ES4RMO-JQG
-M`-T4CX07*/X(.-UR.)%R&*-A0"0`9Y+B9/C.ET;F`D.CYRLK4(8>:S#(0IY$
-M*<*&?M1OX`_NL;C.]I=3DG!87E6N;3]\+%0:C/H4AI/OY'\.\?L0HLPNW.NPZB
-MY,WOLHDMZ3-X$K=3D&<ML,`.P```#L`````@```$4``.A=3D^P``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KD5M)O1U](@(\JG13KV4U=3DZ+B`D(`````8```#,(0``L%/K
-M5[D(07L!1-X#1FQ<JRP2J/2*0$'10!%>#G#21#>;'1#PN;?<_W;H<<K<LY]_
-MM5`:P:)0L+Q5U]MB&C;TN;R;D6;OQUY#-/;ADV!-11W$Z]R&]JNK(IR&J3%+
-M.O1,!@#\VU8*;9Y.KTX">P=3D2XGB-`#2'XM*1<X<?R6D<BXZFM=3D[1[VOH\JW&
-MPV__%5ZGDS#UH$(;$#YJS>62H1#<UX at Q@HOLA"#.84?M(;=3DX$K=3D&JOX,`.P`
-M``#L`````@```$4``.A=3D_```0!$``,"H`0'`J`$"`?0!]`#4!KD5M)O1U](@
-M(\JG13KV4U=3DZ+B`D(`````<```#,(0``L*SHP;TI!,NQ?BKQVX<043AG.V1R
-M0148A6@#8-LJ,42(\E*))]5Z'L>CLNTICB^79C'+[>M.B".FN`Q-T#AT'=3D;)
-MQ7'L+7D[%J6->OPJDRJ'D@]WG:`6&!+G[2(\GEFYYLBW[9KB;Y%08J>C**J!
-MI3@=3D$D'D1#'8*L<=3DE),%1U/WRI+;;4CV1HH4`I!1G3S)/4+5M.Z"?;%%#TKN
-M*/CLJYSC=3DQ3Z,1N%*&QXVYMX$K=3D&*"4-`(P!``",`0```@```$4``8A=3D_0``
-M0!$``,"H`0'`J`$"`?0!]`%T!UD5M)O1U](@(\JG13KV4U=3DZ+B`D"`````@`
-M``%L(0`!4+H'6XS7$9Q!I*<E at G1889=3D7?Q!/+I)8%GB+E;I4CV(61IXQ9<'"
-MV*#O2BFC[845Y50!V7V+&'JJI^IS]9*D:1>5-3IY3#BAW^H0?7WC+RT3%!\#
-M!0)F)6M]V(6[+NZN<X<N`ES87+C>(H?T-D'+0CLU'I>A;F/0)+:4N]^@[5>D
-M\\"26R%,4@%)86F)<44T?2NN8.TPMSFA at NKL'NYIWBU`-]>QM'O at T>7>B:T-
-M>+"[4:_SC8J160ZP!7SUA)S-!$8-G*[DC0D>W1Y+8M*>%9PI5 at EVU_?CL+CV
-M0WW8&:'0!3^+Q*TR^)[\_F$PIAUK?J^>4&N2G?XE4@#DVUR:0[9NA=3DU at _YS$
-ML,,=3D^L=3D\"6ZC2"LC<-5PI.@).R&3OT3D0S4E3RU@*&L640^"ZC_1_TV,O?S`
-M:K;PXE&(^J77/<OCET>\IJE8W6L.B<-L>!*W1LI8#0!<`0``7`$```(```!%
-M``%87?X``$`1``#`J`$!P*@!`@'T`?0!1`<I%;2;T=3D?2("/*IT4Z]E-7>BX@
-M)"`````(```!/"$``2#'^-K5DQUQ9QXMACO>(KC&[+CN at 9GF,U+\R7<UA\IH
-MIN/X6*H+!H[CS\$*](_2 at B0[)V+D!X+D8>76G[T#S<T(U--U7*KUF\RIJ0_]
-M8_M[0IR>MOWN:B>L21$G,X,Y%0],[SJ,:0C^4E#BS_E*5V_8=3DZ8XP#+ at X([I
-MX^6+C^&&.)O</G!QB\"6[O?LP at U_9GKY@2C47<.E%K^68\MR!T@^0[Q]GDGX
-MLOA"##PHTT%EYGQ9"Z1KN+!S:7OI$RTC9`G.\9;7`BH;?9VQ'#Q;]Q9(FK@]
-M=3DZG?G+%<<WN/M&DX2RU,4#>%17_D$4#7<0(B+2JUEO!;*":<B%*,38SH"L/X
-MGD$=3DP89F5KQ)1'Q&&I:CJ at 3V'LX@(8<2N^C8+'@2MT:H?PT`?````'P````"
-M````10``>%W_``!`$0``P*@!`<"H`0(!]`'T`&0&2?N[X[M)L10BT:T,JZKT
-M=3DCHN("4(`````````%PJ``!`$@TU$^UY!?<>VH7\-CV6 at V$W64O<@_J`>Z#Z
-MC[+:;0Q@'ZZ7R2%"5ZE<_?(LI4MXN^M?*\BQ;UKPF4HY>!*W1O**#0!L````
-M;`````(```!%``!H7@```$`1``#`J`$!P*@!`@'T`?0`5`8Y^[OCNTFQ%"+1
-MK0RKJO1V.BX@)2``````````3````#"M3"$$"/.__BI1DSAF/AM[&K,0$8K$
-M]BIL/GA/]^\75?BVHOX9#97`?-5,TG at 2MT9UF0T`;````&P````"````10``
-M:%X!``!`$0``P*@!`<"H`0(!]`'T`%0&.?N[X[M)L10BT:T,JZKT=3DCHN("4(
-M`````0```$PJ```P<64-`2GL":?<7>KC!6:X5"[6I0HXGG:,<SBS:1^*XX?:
-MBX];,]%8(]`"WXQX$K=3D&S:8-`&P```!L`````@```$4``&A>`@``0!$``,"H
-M`0'`J`$"`?0!]`!4!CG[N^.[2;$4(M&M#*NJ]'8Z+B`E(`````$```!,````
-M,'UAZ4"P*M!Q!0XSMD2T&=3D2*TD,LEB>?&(4`R_TI?`J2D"KW0PV)5VFI)2-(
-M>!*W1MRA#@"8`0``F`$```(```!%``&47@,``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEU5[OT#IT/!T``````````"$@(@@````````!>"(``'@`!P!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``)`^7$RT5.T+<FM8#$ND=3D<^@ZL_Q)
-M at JC7>"`<XS<3/!MF+4U0KL$`8%OYHG0"<G5PC:B2"TOA%4/DN35C[(++*X?R
-M[,XWKN2_6Q=3DL_ at _-,2SWA/UR'YHE(MBQ0J>_V5CHVK)[GYJKZC`-,`C\H?/1
-M'8>`8T.IX]![?J8DD::(L#LI```D?YSF+K-T:!T3MMWZ26C\X$Z3J;F at K5CU
-M^*B_C]!T$?TI```<``!`!%9#!'B7E(9H^]PN_I[*1\X48HY-````'```0`5]
-M-C#H7?-:D/&1"/>#LR%GIKY(N7 at 2MT85L0X`7````%P````"````10``6%X$
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*=3D5>[]`Z=3D#P=3D```````````I("(@````
-M`````#P````@``!`!@````>F>'8(3T*06O+XZ(8E(:(7:;D?=3DW at 2MT:ZP`X`
-MN`$``+@!```"````10`!M%X%``!`$0``P*@!`<"H`0(!]`'T`:`'A=3D5>[]`Z
-M=3D#P=3D```````````I("((`````````9 at A```@``!`!@````>F>'8(3T*06O+X
-MZ(8E(:(7:;D?=3DR(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``)`^7$RT5.T+<FM8#$ND=3D<^@ZL_Q)@JC7>"`<XS<3/!MF+4U0KL$`8%OY
-MHG0"<G5PC:B2"TOA%4/DN35C[(++*X?R[,XWKN2_6Q=3DL_ at _-,2SWA/UR'YHE
-M(MBQ0J>_V5CHVK)[GYJKZC`-,`C\H?/1'8>`8T.IX]![?J8DD::(L#LI```D
-M?YSF+K-T:!T3MMWZ26C\X$Z3J;F at K5CU^*B_C]!T$?TI```<``!`!%9#!'B7
-ME(9H^]PN_I[*1\X48HY-````'```0`5]-C#H7?-:D/&1"/>#LR%GIKY(N7 at 2
-MMT:LY0X`4`$``%`!```"````10`!3%X&``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'=3D5>[]`Z=3D#P=3DR4H)=3D>54V;0A("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``!-N_!F`
-ML+I[(V,%4`+_MS_K2IVB8[J(]E8)SW7N$":?$O>\[G\U5TI4:LV_2>A,(UNM
-MH)3;4C<B@#MFO$/H;U;=3D$AJY/^+XHAY-9B?$B;,3$7D]@"+W0RRS/-EG.P.?
-M@):&]"KZ^NY6'POW*+AEJN$TS-"@070]\+5>$_5-990S*0``)+B#UGYI+;@]
-MFD at 0]#AH8=3DM[X_O+:?!EP%)@V/H;YF#S*0``'```0`07(X&'Q5/?F2,,U)LB
-MKXE4[`800````!P``$`%VADI>M+033[K#5M,OKF[I'8BXXMX$K=3D&21,/``P!
-M```,`0```@```$4``0A>!P``0!$``,"H`0'`J`$"`?0!]`#T!]G57N_0.G0\
-M'<E*"77E5-FT+B`C"`````$```#L(P``T/3?@:?'2RB=3DK7HHS5%R&;81=3D)SL
-M=3DQ*JEO5,D6/?U6`<$H,NKO=3DL7D+Y2QHBH;TZ(UUGJ]Q%*WN[_H"CS?B=3D=3D1L]
-MW!*\I0?U9N%IU3\RB;(4:!LG5C&4OC(P)E+QFF1LWC4%W[ORYD))W--[]8AU
-M]N(,W-BX1UD3952^_*H828>E::BZA(G.Z+_C#\4_QCF)W0S12FHE4I+*<_P^
-MC)646+P[8+W\B at ZCIR#W.A4W9V+2$:;@E<3>G+I=3D7_B!V,2\IQS#>$H0F,#*
-MP479-'@2MT;C*P\`O````+P````"````10``N%X(``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B=3D5>[]`Z=3D#P=3DR4H)=3D>54V;0N(",@`````0```)PD``"`B%@%O).%
-M\C/OI7>_U_D[,KH>&(-)A1+CZ7I*9,;#":`[L:8-W*C+/-/O"?O8YW at ATUAZ
-MIFO6"=3D^1Q.`AA-)*%K4SEMP37:?SMF`X/2E4O=3DQKBB/6]\(["'$QF/^!M8>6
-M)?Z<3K\(=3D2_WTWC+ZD!1.*+XWV^9&7BQ/)PZTGD2MT:V"0``'`$``!P!```"
-M````10`!&%X+``!`$0``P*@!`<"H`0(!]`'T`00'Z=3D5>[]`Z=3D#P=3DR4H)=3D>54
-MV;0N("0(`````@```/PA``#@DA<'_V4+`-E`1 at -C5N!,0`<#TJ&[MP,&[W3.
-MNH$;`\WDS*=3DD3EYA#<%`??XOX2A5G^YAHRM@[P`F\N=3D]PV+TVL3S9LCZOJY"
-M5M_-U&=3D4QA@,<NN#U`S6D?.K'G7MXFBO[4`FB;"'- at -IH=3D(E0JAET"_GTLG*
-M`X>!Q]!P9ZZSC_:!8.PXVB<J-B3DYZJ-17&=3DM>@/II"8M8WMK^20J$;C]=3D2(
-M)N&C^Q$Q'L.8/X26G?2SJ>IDV?E]MO5,B)TG82#RE5:6O`B5N[B4GZPT3MFQ
-M&_Y#H9GC.[U,*1[,%7D2MT8A%0``_````/P````"````10``^%X,``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R=3D5>[]`Z=3D#P=3DR4H)=3D>54V;0N("0(`````P```-PA
-M``#`09J,\?<1`A4EM_NUN*?'8=3D>U7Z+&8>&N-YPBZ*ZSL']TGTV)"OM0,XC/
-MVCYW]&/K^8XL=3D%^(JH!>?Q at A%1L8I.)F?)(WE)>F6E^"(A=3DL`QLOW.S=3D<ZCX
-M%./YT5QF6*K$X4M)",K#,E4I.I0($R>(0:9H)"OV>S2)'&W;#B\@)9 at R.&R^
-M,T@^BKZXZ0N%@,03KSED;647O;@#`P>K>:_JW@`4O45$X.;\!,$=3D;R1DV86-
-MF9[S<:/C5^%[*K-Y$K=3D&2"```&P```!L`````@```$4``&A>#@``0!$``,"H
-M`0'`J`$"`?0!]`!4!CG57N_0.G0\'<E*"77E5-FT+B`D(`````(```!,*0``
-M,-Q4XD1K0'@#KP]9S%/YVL"]<,\]'I#?P06^`X_RJY)'I0YMR%5X_5O5H&+O
-M>1*W1E4\``!L````;`````(```!%``!H7@\``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YU5[OT#IT/!W)2 at EUY539M"X@)"`````#````3"D``#"^T#6CWQ?2M#IW
-MRV`35156Y%SME#N6(G2HKU:H@]A^142=3D.CAKKBWN]KW/GGD2MT:[5@``/`$`
-M`#P!```"````10`!.%X0``!`$0``P*@!`<"H`0(!]`'T`20'"=3D5>[]`Z=3D#P=3D
-MR4H)=3D>54V;0N("0(````!````1PA``$`/_`*S^8\12B79H_M1N6U<<L.;E at X
-MZ)<.OD)*RPC%62]$R=3D7BBGGZVNX&M.<R at I]>-'BMGZ&_.&)+JU!MWX`$8U$Z
-M&><M(Z*"H,_1=3D3_HL12`YR2[3)5E)W]"3D97O9\<TFF5DQ&9R64LUFUP89H-
-M)81PS(0@#_KS.\Y=3D$GB![$[G,3Z\Z33UM*#<;=3DTO.Y!F0^L#^GW22"&^+([+
-MY>+ME><6\6K<CJ0@(-7.BZ]Q6WP-BFZ,1C7PS"@`*";0/3?8-PW2MU+C6[9%
-MON;F\'+;FJO:J!/_)N at 1*,59L at G79HM<%5R9'2E?.D`-V6M9J&06]ML=3D9?;N
-M&D, at NN?X>1*W1K%B```<`0``'`$```(```!%``$87A$``$`1``#`J`$!P*@!
-M`@'T`?0!!`?IU5[OT#IT/!W)2 at EUY539M"X@)`@````%````_"$``.!2(%U^
-M]<`\V=3D?4!%;'F<%0'O/BPR8GF4?6!K9?GBK>;T1E3?3Y&)I&Y`=3D-$R6O%(K+
-MZ=3D`U+/8]<PG"H-Y$1IM2F[<G0])1$I)('L"?KNK2*'XE$3+0GR25HDCLA7[\
-ML;SY)[,S$8:UCA/OTSLIY'<+:XETO5>2O+9ZT'+6A]OY;D<6#^D';E-CYC\.
-M5$W`[A^=3D'G4`1(L^87D2UM\2NL-K.PR.'GG&/4(^UUCU>K3S\^'^,LY7Q/EB
-M/3N>0A*<M$B>QW\$Q#9OHH.C5R[I7UQ6CUBET0JGYI[-X]&;>1*W1O!R``#L
-M````[`````(```!%``#H7A(``$`1``#`J`$!P*@!`@'T`?0`U`:YU5[OT#IT
-M/!W)2 at EUY539M"X@)"`````$````S"$``+`F,RW>G6E<ON%\JL\XON#3KU,+
-MF;/^Z_.B=3D<6D7-7QB]@T6/P4JS546+^`DX#OX,43CX=3D9Z6$IVY"M*D?]P9:+
-MU4NK^__8(`:I$WK'HEYR8S6)7$#-D)7:X)]P5MV$9_2NX8MON3!3NP$P+>JQ
-MN,2:-D6F3=3D%D/:\]`$JP6Q!:</CH81A+@,V.W=3D9%=3DYN<SD=3D$>BUFQ+_TO?>!
-M.LQQ%C,9Y*1[OE$+ at 1&FD3[]>1*W1D65``#L````[`````(```!%``#H7A,`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YU5[OT#IT/!W)2 at EUY539M"X@)"`````%
-M````S"$``+"]6_R&U_45<I!=3DIAWH22F&GXCIZNO6740HW+1N376C1.0RH[&"
-M\5',H<67>=3DP:8TE&XV\Q%F6.1^0T9I;D^.C),F3ZTEQJQZ$A[SS*>3]V1J"M
-M,G:9!"G^$W'>F2O38U"^),XN9_OOSV(`'.81;L_A)^GSTM+W`HD%(^+4 at U-'
-M$*LIS&6?]4B&2\>YR6O`:N4$L&L3''X6Z@][EM0*D/%LKDB?:BJE6(WR2_HG
-M>1*W1 at .S```\`0``/`$```(```!%``$X7A0``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)U5[OT#IT/!W)2 at EUY539M"X@)`@````&```!'"$``0#:'N.68G]Q'LLC
-M9<UN8=3DIZ3E]RFPWY@&<U.DT]0'PYPI"#UP"IJ6LTTO;Y!,\5C\:&O;"CB&;&
-M&XF_2$>[9BN#K>LQ^69RN^MM`>-,7)V at EI(KATT.U#40-_H?B9)N<'_P.@%W
-MB6TV"GJ#3F`WIL,'"1Z39"ORSN?P-:,-[X at XF&J6C=3D1!7LDJPK%!4W_5<6^=3D
-M,I52,_K,B/$/&L\<ZMB2$F/=3DJQ.D#L93]6WH8YWIS0)()L>^/#((:1$1OB>/
-MCH,N at ZDI[>);Y.`XQ&%$87#@M0'6Z01L%8#9#U at O78QI"ZS'3R^FD$=3D^S;$^
-M"Y0T)86.;!422Q'@"D2?1R5Y$K=3D&#[\``!P!```<`0```@```$4``1A>%0``
-M0!$``,"H`0'`J`$"`?0!]`$$!^G57N_0.G0\'<E*"77E5-FT+B`D"`````<`
-M``#\(0``X"7)Y8LD3=3DNP-__!&JFT at D`.'0R=3D%>>24(R:$SIL?\&/)7?25/+R
-M:<;:8YPCHL&*[#Q1JWB5A83'Q6GA4,3V]3,/Q7O,M`)/_IUS!%6;6HQ[LP!4
-M?NE-5H#LLV$$)*+]9+G%J:3">=3D$HXLELQ%]LH\U?`SLB.H*V';LUIE2QY2FN
-MTR at AKXA>]A<I;P&(?W])^68/X%2V>, at Y\1>DTARA4=3D3.^[2QW"A(5VR4*&`3
-MS4+;DK/V[[+?T4DLAX+`?YXYS&+_O3`$6J51Y!<YC5+H\Z#'2B?^A<;I'/"V
-MMV9Y$K=3D&QLX``.P```#L`````@```$4``.A>%@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KG57N_0.G0\'<E*"77E5-FT+B`D(`````8```#,(0``L)=3D7KG6M:6$=3D
-M+SK`;?J4><76DA8?MDX(6,YRQ%1I#F'66`(,A'73),MBJ@'(9`+R\FI_)AAD
-MU"^:;*]M!%>S]8UU!9;8^[NL'M.VKP464.R>E2ZHNV307X5H(CAM-I3U%1QA
-M^C0`1D1%`J2WI^"V)7$A--2HD$AG2E4A_%Z!@)Y'$)_YZ^1)@W#BF1?EZV:!
-MYAQ0%KPJW$0?X=3DD47,0(C?M'^S"F'KJ0\;`!DOMY$K=3D&$?```.P```#L````
-M`@```$4``.A>%P``0!$``,"H`0'`J`$"`?0!]`#4!KG57N_0.G0\'<E*"77E
-M5-FT+B`D(`````<```#,(0``L.:FH/SA.'.,#_NHSFJ5=3DAF0O$H#9FX;2^0.
-MO-PC->M&"^^M2"MQXZ-9102"63KP;N^AZSHN7O*RT;9RO0$<KO)0RLG(/<:B
-MQM3 at 9%NLJFG[!`FU^6#PE"R+[)H?AS!DL(F.=3DJA_V%,]_-D\.*762L(%$ML:
-M2":HBBSG"FC?C\4\Y`R2CJUX)E&A3AW#1UK^&;:D-=3DL\:ETRSY:E#[&/7(0<
-M:ND'T0`MP><<C6%Y$K=3D&D!8!`(P!``",`0```@```$4``8A>&```0!$``,"H
-M`0'`J`$"`?0!]`%T!UG57N_0.G0\'<E*"77E5-FT+B`D"`````@```%L(0`!
-M4"7WW^L6E.[9O\?:1\\!FNV*HW3*&.M at AVCP0DI%QMOM4R9K/L/2>FS_CH/'
-M*L4W8LSVU6,GSJ2^D]^71+3!.Z#0+&7TY=3D8P=3D(B7EM,MV])VL%K\0RO/2\R[
-MV,.311-<\M$OVP1.+IF)<^S^1$`2R6I!6OEO)61)>KKKX!,D at +LJ4KH3$WY#
-M5TI-]_8KLRZ=3D/D@"1^&J3>O]O[IOT%S<Z_=3DBV"E/@;$7N$SS4S'B_QU[A+66
-MSH;F)RJZ16?\^7R&D&5J%-;(<(G'46^'A(-.E7!7]P+GA!U*LZN'<&\I=3D56]
-M[?ZXZ*E7P=3D+JV4'142#NTW^B>%T(0(-6XJ2M--DSC2KMF,%@B757`>73"L&\
-M+ZZW?BM7AB6\1)WGRCM2![=3DT90288M!94PL:O65 at +)H?>4'\WA3KX`_W0ZTF
-M<?]S319)VBI^3ZVX^V().1]7>1*W1II+`0!<`0``7`$```(```!%``%87AD`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<IU5[OT#IT/!W)2 at EUY539M"X@)"`````(
-M```!/"$``2`%#W$_<556"-[TN at L]9RC9A<7>OQL?E:K\>W#\Q?OGXG%%$S)I
-M3\CO?9(CTQM+`>!4ND_D,11>=3D7<W$O/&YWGM.+]I($$"&!#DGM35$91G.[1K
-M:ROZ5$SB.8BND at 7DM]OHZ"<MF,,#H_BY)"/H_KFM:3UQ8-(JSRVT.U7-8T5G
-M9QON*79,/_Y)&XT']Z;'^8G;BT)Z46N.6PG.A3]VQP8TT&?[1`#+VN.X9UV.
-MD_O'H[R*L7OZ[I]S'"XEGXN8L%<V)J??\%;QIZ:VTP;6[MX`<863R>.H5_R[
-M\.B!,J]K5#VK>K#/[63/J`*B.$?;8O!$\#XN$N%%.:E,$<+P,C>[";SRT')K
-MP_QSN>TOGR2%B.0.[TX:W'KX/:&Q<GD2MT89<P$`?````'P````"````10``
-M>%X:``!`$0``P*@!`<"H`0(!]`'T`&0&25&0$Y<82>![ZT20J5XHWI8N("4(
-M`````````%PJ``!`<SEC""+ at MF0CX@,M9^&S<0<:E%%)I*``O>!O:X at D%TU*
-M^K_J9215O=3DX&D at TH=3DPITK$E7B8=3D)Z%&\A;H5>1*W1I%^`0!L````;`````(`
-M``!%``!H7AL``$`1``#`J`$!P*@!`@'T`?0`5`8Y49`3EQA)X'OK1)"I7BC>
-MEBX@)2``````````3````#`,U@$.=3D/%^!A3:>3R4]G.-TH>^4NIM9`</%-T]
-M]2=3DUJ&=3D``^R-KC`F@%I*\WD2MT;]C0$`;````&P````"````10``:%X<``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.5&0$Y<82>![ZT20J5XHWI8N("4(`````0``
-M`$PJ```PT5 at G(S1_F!UA`T#`-_)1'?&\_.8/X!("[GB8$.K;L,9[<2NK?+F:
-M9"*60MUY$K=3D&(9L!`&P```!L`````@```$4``&A>'0``0!$``,"H`0'`J`$"
-M`?0!]`!4!CE1D!.7&$G@>^M$D*E>*-Z6+B`E(`````$```!,````,-RSZ.#8
-M5H)8*`H$,;L9<A[`N_DB<^P$=3DY2=3D-Y0\ER at S6]U=3D$6`N9'J7D at AQ>1*W1BN7
-M`@"8`0``F`$```(```!%``&47AX``$`1``#`J`$!P*@!`@'T`?0!@`=3DE:H2`
-M:9M5_F@``````````"$@(@@````````!>"(``'@`"`!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``__QB=3D]I0>T;D:Z at NJ'&J/8(PE4.PI(:S at EPY
-M],%3IP5U"1K)ZW+__C)]><;<%@508&K51*U0J<1RFP*#R9QRT:O,)^[:<LD1
-M"$I3<&^,?B!:=3D85V@;SI60904NM`<$I.@?(Z0X"N.<_'VS;M04VW&P1L$9R(
-MGE/DO,#`SP(3=3DLTI```D\5WD!?S.7L!F6OJRDM`Y,T51_918$869%3.<%'C4
-M+'$I```<``!`!,=3D>16=3D$:]"EEU;D>M-GYG'P"GE(````'```0`49=3D0&G$`7E
-M@;8,Q.)V?=3D\1LU\39GD2MT8,I@(`7````%P````"````10``6%X?``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*6J$@&F;5?YH```````````I("(@`````````#P`
-M```@``!`!@````<=3D2/I?1)T_1`.V#Q"I96G\N/N.&7D2MT8KM@(`N`$``+@!
-M```"````10`!M%X@``!`$0``P*@!`<"H`0(!]`'T`:`'A6J$@&F;5?YH````
-M```````I("((`````````9 at A```@``!`!@````<=3D2/I?1)T_1`.V#Q"I96G\
-MN/N.&2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``__QB
-M=3D]I0>T;D:Z at NJ'&J/8(PE4.PI(:S at EPY],%3IP5U"1K)ZW+__C)]><;<%@50
-M8&K51*U0J<1RFP*#R9QRT:O,)^[:<LD1"$I3<&^,?B!:=3D85V@;SI60904NM`
-M<$I.@?(Z0X"N.<_'VS;M04VW&P1L$9R(GE/DO,#`SP(3=3DLTI```D\5WD!?S.
-M7L!F6OJRDM`Y,T51_918$869%3.<%'C4+'$I```<``!`!,=3D>16=3D$:]"EEU;D
-M>M-GYG'P"GE(````'```0`49=3D0&G$`7E@;8,Q.)V?=3D\1LU\39GD2MT;WV0(`
-M4`$``%`!```"````10`!3%XA``!`$0``P*@!`<"H`0(!]`'T`3@''6J$@&F;
-M5?YHX%ER6T\$.T`A("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``!\ET-UP82,TZ0D@
-M??&X%8,_L6HB3V/'_:44<I<"$Z'`?CPZY<NU_2@@#/,D%FKT]<7&-B;E5O5@
-M([`@%9N/Q5)OHY at L=3D(BSI"$8B*/\B:EDN#?V=3DQIM*GO+!(]PW\PAI^=3D1+F4#
-M\(>2.4B/4`U/KNP+)I.)B+-ZW[KI@/>KA]/+*0``)-B/$)<LGT^&]?&H<=3DM9
-MZ$FND*D/_X#B!,\\OA^B(UH9*0``'```0`1"!-8F%4IK$)``FMR.0N2/$LOX
-M?````!P``$`%JV,EQQ9!]S()HV++-T`&%/O8RO!Y$K=3D&+P(#``P!```,`0``
-M`@```$4``0A>)```0!$``,"H`0'`J`$"`?0!]`#T!]EJA(!IFU7^:.!9<EM/
-M!#M`+B`C"`````$```#L(P``T+._)=3DEK!5-R<*=3D`E5?7IB0K%U_V:_SD2B>_
-M1*O6]'8.H6^=3DG4^5M#EV4^]U#]7(!%S86Q#ZPP<#RS<M#+$W+^/8Y,>-88/@
-M=3DE&QWB<MX<L7$[*F9MMB[XZEZPY;1ZQ>J)O42G48(29+@"+<;:CUZ3CAEAZY
-M8.HV[Q"=3D\9C3UQLZ.%B(^>/#2E\!=3D['^R-L3';1D9_.RYI\32#HO9$;6;^^;
-M*-<86(T:3"'SWZ_UYW"L.CJ(<V[VRG6PX#;3,2PXJU"04SY$9V).299Y-7D2
-MMT93)0,`O````+P````"````10``N%XE``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB6J$@&F;5?YHX%ER6T\$.T`N(",@`````0```)PD``"`S)Z:.NJE7'.*FV]\
-MNR`'0:417_:Y<^@FT*8$A'?(S7_TW+*7C9%$G at S_*)3*<\YLU*51FM=3DY"G&H
-M?MJD&@.U8T;DBZYUTLJ6:"P/<LAP_0*ABT at XI9?U?K^+XL%M(5I7[`YD,).>
-MM84(ES@,Y1(]H7;,+7B/6DQ<-0P55'D2MT9"1`,`'`$``!P!```"````10`!
-M&%XF``!`$0``P*@!`<"H`0(!]`'T`00'Z6J$@&F;5?YHX%ER6T\$.T`N("0(
-M`````@```/PA``#@L=3D]>=3D7L"[W4KQ;01*73;4EL\G at LQ>F:8J&@M^NSD.`&5
-MKO/0:\"L^"),8<0`#&S=3D#.Y2?>>HGC456D(OEF8$DERTMY<$RC\B3/:($N3V
-M8Z0A^NJ9BC&*/0L/, at XX8#::B(A,C-[7/F]^;'(GI*H7SL;QFJ-C&@<A5-!`
-MY7KZ1K;B$B#7"'RQX at E=3D at F2]5J4N]/:%D55#KNS.KQ5/H''8FL(K?75YV`-B
-MWSE#:"ID9:1E/IV7#O)L\^5/DYBSSJ9G8-XOCZM\>72FA]J\37.(\;G:0CK]
-M00FE9*J7X7D2MT;>5`,`_````/P````"````10``^%XG``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R6J$@&F;5?YHX%ER6T\$.T`N("0(`````P```-PA``#`>L#8
-MK20W;$GJ=3D^J<QOFTA#/*)8`WJ"?/P.W)+/%C#W+N0Y+,%/ZHI"G2<,[J8(ND
-M#]O5PE/A7TLCM*>TEB7M;:%6U[F\\5$[(K>_!#FJ(W=3D'I3\^@25(GB^:\39W
-M;>0+2'_HR5`FI^G\:Q##^_=3D(@A%5K$$7G75 at 9%#C$?U(4O-0L,,3!+H6R!?P
-M:UJ$V;NGTC>1AY`-E3_@/,R.\0E=3DH1F6HVIW"I:+)Q<*!18#\'(:I%I9/]@P
-MA13(`BAY$K=3D&8U\#`&P```!L`````@```$4``&A>*```0!$``,"H`0'`J`$"
-M`?0!]`!4!CEJA(!IFU7^:.!9<EM/!#M`+B`D(`````(```!,*0``,$7#_&@S
-M5KI9$N#6'N+Q?9!TAS"3[0![&KBFNZC:>"?8(<SS:#&X?E-E&_0B>1*W1A%[
-M`P!L````;`````(```!%``!H7BD``$`1``#`J`$!P*@!`@'T`?0`5`8Y:H2`
-M:9M5_FC at 67);3P0[0"X@)"`````#````3"D``#!E3C0L&0[ST>\DEJ5)#B;@
-M<Q.HLWG@]`:N'L`]&#,_',3?)0'6+5$*N'J$T7D2MT;6E@,`/`$``#P!```"
-M````10`!.%XJ``!`$0``P*@!`<"H`0(!]`'T`20'"6J$@&F;5?YHX%ER6T\$
-M.T`N("0(````!````1PA``$`(]^C54-:H&TTB`#_+*^SK95OJN_=3D1*[Q0-(%
-MZ76Q]R,TW18QHW0!RQCJ at 32G>&D,)YC+[*]8,'.6^X5*?!(%"N_6OT[X+O9#
-MI3RM0 at Q(Q-5_NVR>U<&[8;1X(.Y7I\^E+EWE-/F8MN=3DZ^2EO:-B2Y5I$LD!-
-MP?;'0*N<+U+!"?"&]/7N:@9E[`,55N+U%&H&)[)W[8-J1I!&!0;H;+\T at N0(
-MT=3D,N0HL&/B"ESJ>-,1\H^/#_O6TJ8;>?5QRE#5DGA)QFU62+?S@=3DQF5W3HU`
-MZD'*N+EKYO*\\6UP:R[S\B2MO1I.I2__M*=3D'J0<1[6.S0V7J&8&E"`OD%,8B
-M>1*W1J*B`P`<`0``'`$```(```!%``$87BL``$`1``#`J`$!P*@!`@'T`?0!
-M!`?I:H2`:9M5_FC at 67);3P0[0"X@)`@````%````_"$``.#0X*N7Y at 4W+3":
-MY(OO%L(H8T>@'@PL7A!EWG@>?W>@D-_[(=3D"@A??:"=3D4!,"6&GO\GIT2<VF0K
-ME3TIMP(G%^]$9=3DKJ:,5(E+CC2CJ90TG<+*!-&J?#\=3DR[-A`U%3(KTP1VZ675
-M?FX%6N8R^W22)6BD>1<7AQW(9[BF^*.O2<@-K-L,Z*`#ZYB\JH[>Z6?ZY,I#
-M`V.DW*$1]F at W(*D5-]W8Y+L80?<[7;]$>B>\D!>QC[,-1[0S_M4L*_#P>]'+
-M\?/0@=3D-"`QP[MTF)W>.8ZT_BC%7\"Z(V/GHZ.;1`>1*W1HVR`P#L````[```
-M``(```!%``#H7BP``$`1``#`J`$!P*@!`@'T`?0`U`:Y:H2`:9M5_FC at 67);
-M3P0[0"X@)"`````$````S"$``+#\9XAX6_ at 1&N$*QYHKPSGHHMQJE4!%J%2&
-M#H^VO\K>2_ZX:,2P-\A0;!YNGKRTR&MRN1:3/?!PM at 3KVA``/%*P4HCQS)KV
-M49`4;,!J?(P_Y[F.PJ,Q.BC3;HQ?<83#PE[P.]%?YW<`8]IC+?"`7ET)D&IE
-M):3I<9B6*.$)+K0&34E7+(\L+F=3DN<&`??@U]1F)7EKX'<[/"123\<.AV3*_/
-M(?8TI]QJ:6(KGAZX>1*W1NK5`P#L````[`````(```!%``#H7BT``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y:H2`:9M5_FC at 67);3P0[0"X@)"`````%````S"$`
-M`+!4F5)'FQ at D<Q+M`.I>P0 at A!(I5,\FX3RAD:U/4'M-9Q!RX0KK^YI!G,C":
-M'B/#T8=3D5M[>O;1M2YN$^;W%*KD0W)06HHR2&NC5^1P,-R@]T?]#W4F;GF\XP
-M at FDJN\&]>]6ZCR]>F5K%TYO=3D0-0F at Y#.:V/D at 9&D2[DXL!8E+K:>V>"^['?E
-MW8[VT*WLZ.-BTZG#%2E[<:'79H$T\*:&/N4$[TF at FF[X0:2PA_'U>1*W1C7S
-M`P`\`0``/`$```(```!%``$X7B\``$`1``#`J`$!P*@!`@'T`?0!)`<):H2`
-M:9M5_FC at 67);3P0[0"X@)`@````&```!'"$``0!<=3D0L:B$RS2`A at W+@O?YOL
-MA%+E6;T-GDUC*5 at H_^GX$L&QV(/,+7^\XP1."@>.1Q[+V_TLGE]T30"`+N)E
-M<*]>OT`X:'STD#+[R[(T#. at HQ@N$<OA@=3D!Q[Q*"4W674U*___>^>5%"P-/^N
-M!$N9,LM9JGCKD`(%6NB/^7DFXV<TMPGB'Q[E7&`(L48UU+.D&!A'EEJY*]V'
-M6X-.?J,CY0`K5[?RR(:,P&CQQS<=3D[0QX$`XOK,S5O-``-_]PHJVUS0 at 3X=3D'F
-MZ^7;#+WMAP%Z&964=3D;\ISCF0VKUQ`\R@?1K&FE/1"Y/V/6]ONEHS1(])SYD8
-M'GDEB7'J(N+HUGUY$K=3D&[?X#`!P!```<`0```@```$4``1A>,```0!$``,"H
-M`0'`J`$"`?0!]`$$!^EJA(!IFU7^:.!9<EM/!#M`+B`D"`````<```#\(0``
-MX%!T#QCWZ(^:`K4K&[FTD*Z"+ZE3BE5"9DG#`/5?]"@QB%C-A77I.7.',D#S
-MYF*7<($27P<52 at XGW4NVDYF8QZD7P-67)IHTB'+$F+*3"\0>,S"8$WQ=3D>=3D+9
-MO3B2:FMF7_X-8`P<*9\=3DXK>G1'JBQ5!11K?;2CCD+$=3D`F5=3D3:1?4O)]]CU?(
-M)=3D##W4GH0?MDYH"XFI:G[VMS'.R?.S%2$;NFRIU1*UQ\6E&U0XK8K.>]EC/-
-M)G.86-94\J at D)H_)'_+&I_:KK%*\NO_3O(FTQK9#.8VB]ATM51FL at WUY$K=3D&
-M8PX$`.P```#L`````@```$4``.A>,0``0!$``,"H`0'`J`$"`?0!]`#4!KEJ
-MA(!IFU7^:.!9<EM/!#M`+B`D(`````8```#,(0``L'Y;JU),Y[[*"&V"`/=3DS
-MFK*ZA$,Q>[?*'M?G+@(DRF#K3Y<WTACG#;S:R0ZR<%Z-,\N.-X6V&`??E`X@
-MLF?4;/XR2%IDD)<W(U-7:400ILZ1H25K26-[6W!7QS3VP\K7QXU/X=3D,D_[2N
-MU57$8CI(1;KV2GE3($"`]*!4F25-%S5'^;9=3DC=3D1O6%P5/EJ%K.=3DQ5'F%IM*^
-M@$>ZP](2?CW+OU<17@'MNR/KEN)U%/)Y$K=3D&J#`$`.P```#L`````@```$4`
-M`.A>,@``0!$``,"H`0'`J`$"`?0!]`#4!KEJA(!IFU7^:.!9<EM/!#M`+B`D
-M(`````<```#,(0``L#/ISL5Q2<&P2<25+DU56[7A=3D._[$$I,VMW%;)33"!?<
-MPE,9E(L1U]!2^S[AJ-/4-T.%"(<8D:@:;W872?%`[]ACR5"F1X6+8600'KRX
-MRNH8&5NN3JZPH*A&SJ<4_'4?NFXZF*OCNJ1'>Y@]S&\ZWQ`LFDLFX'BD8A%]
-MZ:Y<9ZJ1]C5UM/$6?3P;YR%)RBQ]W4*-_"+^K, at 5F-!.3[1DU#GDKTD.>N%#
-MHL at TROEY$K=3D&.5<$`(P!``",`0```@```$4``8A>,P``0!$``,"H`0'`J`$"
-M`?0!]`%T!UEJA(!IFU7^:.!9<EM/!#M`+B`D"`````@```%L(0`!4*`.MBLY
-MDCSNMM984DU>&T2IH-,9*$G&B'5OTK)S'&AL/Y&M0>(_:8RY!IK;`[F'A=3DWX
-M"R/]P\+26H5GF\%JTOB/>T;VIF!_HS,26XAGD2$[VU3WT[*ST-!7 at +@K7Z[;
-MC#-K[\M)&0,]>Y(EE.+3?+D\XW at QA6G+#`\_A!ZHA&@K]#0P\"9LY,P[(!!,
-MXXQ.VY&?B9I#X^_1C>@=3DV5[Q^F&K?3P`@UG6;&VQEV$J"8H3'RN%F4+8RA.I
-MP:PTCZ;1!;L?FQP9KI=3D)(Y7(SV9_"9)\MZ1!GO=3D;7%'[$]I9.J7B8!Q.2E`I
-MA"OW=3DAT+>7\?2Z/P^-P74$ZJK7_7W%Z\2[SQ<&I5G3`05+#:EY"8Q.#YT0F$
-MS\I3UVD at _#_?H5.O22:PI!5 at SV55`2-5MZ?'5BQ.FY16#^TW6I"27_!4SHG!
-M8<=3D(B5\QP6*BK8*^>1*W1G>+!`!<`0``7`$```(```!%``%87C0``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<I:H2`:9M5_FC at 67);3P0[0"X@)"`````(```!/"$`
-M`2!T5>C#.L/Y(D>(OPX48J]6U"&_[-N7T]9T at 1&O/M/>HGE8J_QXJ,&=3D@<AC
-MC.S3#M&1S-.'F9O"D\+U'C_)XB%)TU)\!J/5CH>D=3D0DD'EM(E]#2VBC=3D[)';
-M=3D"3^H_(OW08D+A=3DOLO+#&LE!I#G^9?\3+FM;.6"=3D95:A_'\BQ,U1Q5"!5K`Y
-M_(8<UA]Q3OCY&S`O1<B6"W3<DM\7'=3DJK8Y7S!1QP77_4JD"RG:^(6OKN9&:T
-M4:=3D.!10<")*:&,8/NXY/6Q&M`G$W<[GUQ\DR12'YMY15N]+5SF=3D&0($;#H40
-MA?V3-F*`WVT!GL26%>7Y'%TCH,I76O5I%#[G(7M=3D^W!YL4:)T<L6CW1X\'=3D9
-MUQKC#05GZA9&C9M30<4#$'D2MT;IL at 0`?````'P````"````10``>%XU``!`
-M$0``P*@!`<"H`0(!]`'T`&0&21)LQ6GA at HA^3:SG;!$#N'XN("4(````````
-M`%PJ``!`+NGHY``A701HG4[]\3F[B;>T2;!<=3DJ.I`VYSL-YI$Z:.6<VC<W+E
-MJ"ZL/]:<TIE$:GOX43+<>$EAY*9L>1*W1B*_!`!L````;`````(```!%``!H
-M7C8``$`1``#`J`$!P*@!`@'T`?0`5`8Y$FS%:>&"B'Y-K.=3DL$0.X?BX@)2``
-M````````3````#"Z5\INT\8T:Z2,A?J,B3QF:B3?G!NX7Q^M;7VRB:)]30^<
-M98QW(C-<59]>[WD2MT;&S00`;````&P````"````10``:%XW``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.1)LQ6GA at HA^3:SG;!$#N'XN("4(`````0```$PJ```P
-M=3D%.N2QBA'RWC0(G%%]:*ZL]!`'[FD0SN<1;"MK7?AWZW=3DS%`@ZSP`#P[T2-Y
-M$K=3D&,]L$`&P```!L`````@```$4``&A>.```0!$``,"H`0'`J`$"`?0!]`!4
-M!CD2;,5IX8*(?DVLYVP1`[A^+B`E(`````$```!,````,,80PU4>RB at QSAK,
-MK#:"7;&,]G+8FE!UR%O@`.F^T%V*";JD[&9[Y]I05*GA>1*W1N77!0"8`0``
-MF`$```(```!%``&47CD``$`1``#`J`$!P*@!`@'T`?0!@`=3DEK3);\PSONUD`
-M`````````"$@(@@````````!>"(``'@`"0!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``XS2^2J%]A_PQ+^IG?B4P#[0M^QM5EG&B?I6^4^8 at L/2C
-M57BQLPU3ALJ"OP&<DJ+O?=3DZ#BK4LS"N:/"66`+D=3D<>*/=3D2.7QQ)IY`N&D`=3D!
-M<LI\RXTG5-B-C0+%CY$6+UU&(3+-!IHO7(_3,"TG+NJ9E/`ZZ7)1"8P*GJ6L
-M_?$>698I```D_%V-]JN:Z6!R7R?4_`Y_E+G>=3DN0Z>YBZ'Y(:1QA<X6$I```<
-M``!`!%!ZN54H6WY[6RV!.2&H<-`#?1;_````'```0`5#S(GVPA`2C`[>=3D9O>
-MM..#:O5S?7D2MT9QY at 4`7````%P````"````10``6%XZ``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*:TR6_,,[[M9```````````I("(@`````````#P````@``!`
-M!@````?^5FA%FLI3EM#E(+_P@"6-L_IO8WD2MT9J]@4`N`$``+@!```"````
-M10`!M%X[``!`$0``P*@!`<"H`0(!]`'T`:`'A:TR6_,,[[M9```````````I
-M("((`````````9 at A```@``!`!@````?^5FA%FLI3EM#E(+_P@"6-L_IO8R(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``XS2^2J%]A_PQ
-M+^IG?B4P#[0M^QM5EG&B?I6^4^8 at L/2C57BQLPU3ALJ"OP&<DJ+O?=3DZ#BK4L
-MS"N:/"66`+D=3D<>*/=3D2.7QQ)IY`N&D`=3D!<LI\RXTG5-B-C0+%CY$6+UU&(3+-
-M!IHO7(_3,"TG+NJ9E/`ZZ7)1"8P*GJ6L_?$>698I```D_%V-]JN:Z6!R7R?4
-M_`Y_E+G>=3DN0Z>YBZ'Y(:1QA<X6$I```<``!`!%!ZN54H6WY[6RV!.2&H<-`#
-M?1;_````'```0`5#S(GVPA`2C`[>=3D9O>M..#:O5S?7D2MT9X&@8`4`$``%`!
-M```"````10`!3%X]``!`$0``P*@!`<"H`0(!]`'T`3@'':TR6_,,[[M9)IRP
-M81)@O8(A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``.C>0Q1\#)\B*K<;15B0_5I`
-M8,IT.!8+R=3DX.6!,IXRS[F2]F\L=3D^1J'K256 at H3![@14#7O#O8;PA94I,'W^8
-MO/#0&0Z^W@!;B.QD?-C2`4$HV*():KN+28S<B4%HKH2^+42U'^O7R(TK0I$E
-MC\PLQ4S.MF?=3D)-N+PA\RTD0K7"7K*0``)'IR>4=3D$<.)M#-J;X<QJMD<=3D*I$W
-M)%NE-4B_%'0<UYJ4*0``'```0`3*@/2*$,+7_HIS`MF0K`HCFOH:[P```!P`
-M`$`%^")+SPWD)7PH+<`W.'0_"H:K*D]Y$K=3D&DD<&``P!```,`0```@```$4`
-M`0A>/@``0!$``,"H`0'`J`$"`?0!]`#T!]FM,EOS#.^[62:<L&$28+V"+B`C
-M"`````$```#L(P``T%:Q1[NL443.SBH"EG9YL.=3D#XG(+^!3W'(CPHAG-$X(V
-M2V?#5NVO:X-3XP at A+D%7`W,^YI;%<;E<Y9P_H_:@.9HS#U2<:;7%SH)M<?\0
-MO_M]9`G3R=3DJCV at J#R;/Y?.1B=3DS:D-!@6L!\.F&IU7&B7V]P'&XO=3D%4FBN8F4
-M<O$_Q(SXH"@AJPX/#R>?7!;#'W`#&(G;8\C%]1C]$2J,YQC=3DJJI0I--U#^/9
-M6-_?750"Q/%^5(5@))C47M'+:4^H<N1VA/)%59XN9SA`QGX^%GD2MT;@8`8`
-MO````+P````"````10``N%X_``!`$0``P*@!`<"H`0(!]`'T`*0&B:TR6_,,
-M[[M9)IRP81)@O8(N(",@`````0```)PD``"`C`:NS.+.K6@??YW^;XW6J*^/
-MW4AT0>43K,*:/,\\JI9E70%>JJ>K;@BS>F:E&V<Y9;P7H=3DUQJ]+O,Y59.T#3
-M"J83E25!W=3DRR]DP2),;BDP:@%:J at SN#D3E4Q7KID9^R*F!`'YV/B.V#HIF"C
-M?RD/GS(>]&+&=3DND_2`+S=3DWD2MT81@`8`'`$``!P!```"````10`!&%Y```!`
-M$0``P*@!`<"H`0(!]`'T`00'Z:TR6_,,[[M9)IRP81)@O8(N("0(`````@``
-M`/PA``#@J1@<[%2OL(N7VB#,UW->+0J(_4R3RV\AL?B6JB&>#NMA(FDMM6B$
-MJ:BON48E5]\3&7E$,XR?]'DY(<I^_`VZ:TPAGOR<X4 at T5'\N"$,A-*KH.B)Q
-ML'(!YSG"Y)K%A/1=3DN.=3D!X837$_N=3D]E&*8#Y4LY9+Y`6CD>!F"@/CEC`M&I5B
-M1-'%;W1CG<]?R?;)RWK>[;P^<F=3D/I;,N^Z%1;Z`4)5 at TWR@.QK1#K[;$H5P%
-MLUAKZ$\?)7?TGX/(@/F2JI?OSG,1KC$3>I2[B06=3DH,=3D#.')Z,^E"'LBEBB*S
-MEGD2MT8QBP8`_````/P````"````10``^%Y!``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R:TR6_,,[[M9)IRP81)@O8(N("0(`````P```-PA``#`"NLM$P;5.<XD
-MEW,3N!X+!?T%D1'[?$D+C5OR0IQ/\"6;B4ZLA6+M?SFW'S1V^%>/MRWZ%VUV
-M[);,6F3P7KY[%N3$$76#WE:4:;WX at 0?0G7*-[7Y#!:L^9*7DC,?AICTWG1,2
-MD[]H=3DVZ<G&EYD3A"SZUVHL27(2.N9X]@>S0F2P6ZB8&1`:K2U_YZ0K-^9YWK
-M>->CRGNOS%$W;OH*OG(9Q*"*)Z#3Y-^6O-Y\D2@"SA._UGS])M$>U,66_A-Y
-M$K=3D&/I8&`&P```!L`````@```$4``&A>0@``0!$``,"H`0'`J`$"`?0!]`!4
-M!CFM,EOS#.^[62:<L&$28+V"+B`D(`````(```!,*0``,`+;^D.QPOHG^'])
-M'-N\#X?(XB<)<""K,!Q<!@?TM";4OBQN`^4=3D;A#)"!D0>1*W1JRQ!@!L````
-M;`````(```!%``!H7D,``$`1``#`J`$!P*@!`@'T`?0`5`8YK3);\PSONUDF
-MG+!A$F"]@BX@)"`````#````3"D``#"UQ:(74\9'TX6N^0GI!Z.D%]8PQ!W^
-MTPXZEI4*("JW.`(9IYZ#F\7@"LQG07D2MT9WS`8`/`$``#P!```"````10`!
-M.%Y$``!`$0``P*@!`<"H`0(!]`'T`20'":TR6_,,[[M9)IRP81)@O8(N("0(
-M````!````1PA``$`*AR7+'J@<3EBF)R#IHQ5 at 03=3DK(5FGL\D:_M5(KVX7#G=3D
-M(U`/\6F??.4JW+KWNHBH"'8,2((B_";7HFNN^#6DE)BIIE\@NTH!_DD1U<$6
-MKAJJE"T("UW4X_496C@&.QSPDR,U(_:")EWO-V!S1XM*\C5])$+4<"$501 at +
-MB3S0.=3D_Q,3-2L>"X`S_?_IW\^"VOG8=3DZ=3DXNC;MO7^OS at .E(6CJXW_0!6CGDI
-M6M^KCB)UTIFRH@&&>)8$ROV$A<=3D=3D!0V$_*W60T$+IS9BL)B(AK<B"MCO,NX,
-M at 8\`.,_L*R$4'0\LT;L!(3G4NY.\<`0K=3D?'Q_K6$6//K$\%+ at FN8>1*W1F;8
-M!@`<`0``'`$```(```!%``$87D4``$`1``#`J`$!P*@!`@'T`?0!!`?IK3);
-M\PSONUDFG+!A$F"]@BX@)`@````%````_"$``.#Q%<M59*B!>L70]=3DZB59`A
-MAO-/]%4Z;;<#T'ZQ3GC:_7'<Z]XX4(/%NVAM7]$[A[ZYK:O9,4E(U9 at 8WC[0
-MM?46XU;11^T\$?W"-FKI&Q/MTE>(Z%,[E\HC:=3D[:B.'(&\R0QP!:RD7K;ZX^
-MIP1/7N+=3D>\YT%Z5(*?K-)SN5%8&)PJ<!SB-5WV`3C,B!^]/AK^*)RQ0WBQ(7
-M`6\+%*.<?EO\5SZ+#>,)/3*0$\&&Y5W9$_9*1IS5D]\QT[:US+-XCS&\=3D,<Z
-M:!!EPBL9/DBLE;'>V\B at 6/_E)2WD(]7M>1*W1BOH!@#L````[`````(```!%
-M``#H7D8``$`1``#`J`$!P*@!`@'T`?0`U`:YK3);\PSONUDFG+!A$F"]@BX@
-M)"`````$````S"$``+`,.9KT&!B\ZU">)D0>)V4'W`1CEA6?<^X-H(MRN8*,
-M&3+#@6K`N^O)IR+N)+F>SY`/4!AG<5?#$?QM-FES3<15<@G9FQ*YD9[#_`QP
-M-BP`GWW['^L6:?"6=3DN]);Z.'.X:>Z-!`F$SF\'Q_&Q^Z8]+W*VW-[W*,=3D_;#
-MVHL6;;MNWU?-[ZAI7:6EMZ`N>OD5W^Z=3DI+E9@%#KRK3N+O?>7NI39L6W4V/^
-MWE!!HZL&>1*W1LT*!P#L````[`````(```!%``#H7D<``$`1``#`J`$!P*@!
-M`@'T`?0`U`:YK3);\PSONUDFG+!A$F"]@BX@)"`````%````S"$``+"Y06Q(
-M'\./QBSZ at 0OV"U2%%O0`8O0&&YA5- at D!&U:A2OJ-)/5)]:*TGFT5<3W,?I'M
-MWKY&1]:_$SB^%3KYP4X5?%;?C"`T=3DL=3D]SB at R(W\G9E]?9RO'+;+[LE$O"#W9
-M;(58T6N.6_[LT-L"NDTFY&0EMFX,R\XB-)7LBB5",UK>`08W'T^XG0>Y at I>U
-MV<#O6^:RR=3D/@?H.5K[`?UM<A!-2(QJS7GL1/EK48"D<J>1*W1IXI!P`\`0``
-M/`$```(```!%``$X7D@``$`1``#`J`$!P*@!`@'T`?0!)`<)K3);\PSONUDF
-MG+!A$F"]@BX@)`@````&```!'"$``0"JC2TYD%-?BPO>^RP/!.'>PMA3!?JP
-M>#GAOJBV)QBQ<VU*0(CN!W1MVTWK&YA>$0(6,MDUOIL*W)>2B3V.Z^W]HA:-
-MP`3AH'@.4"[Z)7')^OTS"8P0*EUTR=3DV6 at 9QB\H.!+MD:T>PAS5&_I5E,!,L=3D
-M<K/%RSD_96LN+6J1TW9E"BM6SWE#GRF#SA3WLI0#R>D\-3/N`N']XB4S1,<I
-M_EMW<>>*L5SA&C*FK@:"B+G!$D]?]C3P at DQ9&C&)T\.$-S5B=3D4\S*V`:](E(
-MS3$=3D>P5`/NAX at F>;-B[%]CZF>ZL+:58^HFR*_C7YL-QK+9W&HO$9UM, at 1_DA
-MIPW4!O!Y$K=3D&:38'`!P!```<`0```@```$4``1A>20``0!$``,"H`0'`J`$"
-M`?0!]`$$!^FM,EOS#.^[62:<L&$28+V"+B`D"`````<```#\(0``X+[9RG#%
-M3EQGB?0>X#D[(9-F4;B!BDQ^1:`N_+EX]6,;ZDOV+P&.ETXY_ at 5V/?&[U&O+
-MVGK%"BKVPI$>WG[]1";/O:7'4VN[B"7+3ARY7I:Y\$%LF[-9N?DN3Q5,=3DW-F
-M(U>L/],$L4\3XK33-E)EZJ(/@I%B<@ZEWMHID\IBP at 4MA%1JF,5B4\*$H`/=3D
-ME)@F.2]7EPI2XLAYZI+^$H*#77_?"B'SL-75S0;4N=3D at P@:.M2(U7G at Z/(O4H
-M\SJN%\.^BU:P%"YEP4M5(&+::1W9"?QR06O`C!$R1.`A-OIY$K=3D&ZT4'`.P`
-M``#L`````@```$4``.A>2@``0!$``,"H`0'`J`$"`?0!]`#4!KFM,EOS#.^[
-M62:<L&$28+V"+B`D(`````8```#,(0``L*:BT%C75&X>"&7GG<45[RJ.1]0,
-M3:W(,1WQ(I#.':H*_KZ"F:H#6ZQ-49Y36A3(L3--7U1QW=3DV/5_Z`7]9^PT1V
-M+4Y4TBK&(&FL)F?2GHHM(XTJ%['9)RTRAIM%LS8Q7)F_&_A at 7[$9QLR+YGY+
-M<8N6N91YW-7J"JTGM at D!+2 at LB._.\B_(DEE?(\V5;"RL3AM)M]K^NI>$:Z->
-M8;RUCIZ5R#P%::W-'U]*EI9Y$K=3D&7&@'`.P```#L`````@```$4``.A>2P``
-M0!$``,"H`0'`J`$"`?0!]`#4!KFM,EOS#.^[62:<L&$28+V"+B`D(`````<`
-M``#,(0``L*5,:Q_YN;9]-?E&,PUK4%@HH8(Y.[)IYSV=3D/[$1VSG'^B>/&W:_
-M3=3D4<GBHAM<LN4SJ<8.;3FXLXHQJ.&``46=3D4KK]1BI359GR1I1TX-:LU;CR.?
-MG<>`M?3XRX'MAW)-Z[.$K-2KP")$_S/OTM0E5SRKP',/1K:OG^7P['!\_+OK
-MF-QP<^&1>X-X4M3^&$YUF3.XM^0HO=3DHNMAC3/SU]O#H:53[%`SW/H'0/>.-Y
-M$K=3D&9HX'`(P!``",`0```@```$4``8A>3```0!$``,"H`0'`J`$"`?0!]`%T
-M!UFM,EOS#.^[62:<L&$28+V"+B`D"`````@```%L(0`!4#:Q'/J>E+1ID!&I
-M!!>'S&,IZ*HKW-5(B0X31JA0[.5>WTE?GJP))[[OZ+?B%LHH4_'H`<]QP4X[
-M-IJXC.I=3D]L+&OC&Y,H`",O(@H'+9[",I3)J.,4DFB%$@?O\H?&-:DDB>Q/<%
-M[7JOXK9"`7KI+'6:TN26@/A8G(JC;-30#\GWB9(!UW'.*3J5VS7)>U8;3+,Q
-M9R!+%C8)KZX8JP#S,G37C':(IE?:$)G?UTD_N6'U/TNF-)GD#A;%0DO0Q2O.
-M3^=3D@`<YK3HR[*@N1]#3TSLW+3^4(L.US`P'QE]#]4N9HM#;$<6H`8P at JO2GR
-M.[SG#`)7+>OH,@(,W..SAE'9T3_W@`JA)%-)A/07W\7:\+>0$H5_]`(N\A^\
-MR:>:'\AQSQ&PGKR3_Z`C[%"9/Y7K".Y("K95WQU^WA6;\&@$_5`#'8Q9]ZEN
-MC^I^B:<8>1*W1LG#!P!<`0``7`$```(```!%``%87DT``$`1``#`J`$!P*@!
-M`@'T`?0!1`<IK3);\PSONUDFG+!A$F"]@BX@)"`````(```!/"$``2`J.#+2
-M=3D0 at 7@>&V]S12DMTQAC:X2H7U[9=3D`I8V2KF4\QZ"1R#9;9OSO+S5^!83;V2OA
-M-M].=3D52TU1IG$UVPC at ZX>Y at ZP:4ML7%K$]+&4/NH5K>>O6WC"$MT4]L*VS$N
-MMVI0>F5*!@?/Z;>]^<$$PU(E at Y%71)A*CH+WA\IM4&[^9'@YRT&QH!5(A!!5
-MX64]8)8`#5V69^/O-"9KYC<J(;V&G3'<$X;0^ZQ[);:,*>9E,VWO;V,I',-]
-M2?B=3DF`R?=3DX"=3DB`"<-Z`;VQ+4L>1C[L\0V$1YQP'>`A4V4M#<G.T@'&MY<O-S
-M(TY\]^'%>.I%\Q0.;WC$9>8NX76WM0._J2E1L&6-$,)_T#8:B%M=3D7XYL4[+\
-MJO:C1NGW9-E\Y'D2MT9[ZP<`?````'P````"````10``>%Y.``!`$0``P*@!
-M`<"H`0(!]`'T`&0&22 at T@?]8.T'VKC89\/H[.PHN("4(`````````%PJ``!`
-MIC[UU!,2MJ at O4&_@:+?0L7MU.NDVJ?HT.T.RO5=3D>4+:H(6XO>^!:1J'U1)D0
-MIR.[BD9.3 at .F;[;[SDB+>1*W1MSV!P!L````;`````(```!%``!H7D\``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y*#2!_U@[0?:N-AGP^CL["BX@)2``````````
-M3````##RR.M&\EWSY2:W%T]UGPQF^@6%(ZI&OXI-<ZOY.MC\-*42_&H`9P?Z
-MSV<**'D2MT:G!0@`;````&P````"````10``:%Y0``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.2 at T@?]8.T'VKC89\/H[.PHN("4(`````0```$PJ```PN)'D?$IO
-M6:1TY45+64945U^&_AG"FV#*.!\+_VI8JU4$#AQL/%Q&AQIY'9UY$K=3D&N!,(
-M`&P```!L`````@```$4``&A>40``0!$``,"H`0'`J`$"`?0!]`!4!CDH-('_
-M6#M!]JXV&?#Z.SL*+B`E(`````$```!,````,,LGG.=3D,J.B%C<CR09F;)%0U
-M=3D#YE$V9,O!WV#.Q1S2)7`M,JZ(8U^JEB424Y>1*W1D</"0"8`0``F`$```(`
-M``!%``&47E(``$`1``#`J`$!P*@!`@'T`?0!@`=3DEO5.GS^U,83H`````````
-M`"$@(@@````````!>"(``'@`_P!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``#WE;;.3WAS\2V1P(MAG7,$=3D*WGER-P+1/LE[%CJJ`":U"[+U5XUG
-MM#Q#EPY.!6G*H?F at CK=3DQ]O=3DQVN(#RS87++'-YS2_1DR`LN?',[&U<%O`&/PD
-MGJ-.5Q.VE*RNTYT2.#4QY<1:F>M3(-Z`G;*.)__;&W at WZ#X>, at +W?.!'<)\I
-M```DD1JL`.)6=3DM`.1S&'DT-IA@*7L1G<->:@J,A*K%\Q46 at I```<``!`!+R*
-MV*I!U#W)@M8:@M\(W3"%!0?I````'```0`7IE&5L8N&8_**0C=3D1/I\VOKFEU
-MB'D2MT9I'@D`7````%P````"````10``6%Y3``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*;U3I\_M3&$Z```````````I("(@`````````#P````@``!`!@````>'
-MMC_TA.'0Y5G]J1T;KU]"Z`U.Y7D2MT8M+ at D`N`$``+@!```"````10`!M%Y4
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A;U3I\_M3&$Z```````````I("((````
-M`````9 at A```@``!`!@````>'MC_TA.'0Y5G]J1T;KU]"Z`U.Y2(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``#WE;;.3WAS\2V1P(MAG7
-M,$=3D*WGER-P+1/LE[%CJJ`":U"[+U5XUGM#Q#EPY.!6G*H?F at CK=3DQ]O=3DQVN(#
-MRS87++'-YS2_1DR`LN?',[&U<%O`&/PDGJ-.5Q.VE*RNTYT2.#4QY<1:F>M3
-M(-Z`G;*.)__;&W at WZ#X>, at +W?.!'<)\I```DD1JL`.)6=3DM`.1S&'DT-IA@*7
-ML1G<->:@J,A*K%\Q46 at I```<``!`!+R*V*I!U#W)@M8:@M\(W3"%!0?I````
-M'```0`7IE&5L8N&8_**0C=3D1/I\VOKFEUB'D2MT8A4 at D`4`$``%`!```"````
-M10`!3%Y5``!`$0``P*@!`<"H`0(!]`'T`3@'';U3I\_M3&$Z7B4E0^'ZU:PA
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``([4&QX)0CJ[,R3=3D#+8VZ66T`\D7R*`X
-MX`//.&R66736!6R%&W.:>,!*&&H6;%U\R:9?F4`U\`\)8+H3L$NRGM`H0CHL
-MVORCR:^U%O]J-^6->12RT>B+-/RL8WNX/4^J_,]KAKX#S;B>R+_4:WCTQ%;C
-M].:#RVGY2X:F?%^FE.Y0*0``)'B$!=3D4=3D]8_$GN-)%6=3DJ4!_SQV<JS7!^*@5$
-MJ0=3DP1\I!*0``'```0`2!R+WOPUV<B-^R"QYNG[;`G(VX&````!P``$`%G<QN
-M=3D[+UFN8[O:+!F0W=3DC":_Z_-Y$K=3D&Y'\)``P!```,`0```@```$4``0A>5@``
-M0!$``,"H`0'`J`$"`?0!]`#T!]F]4Z?/[4QA.EXE)4/A^M6L+B`C"`````$`
-M``#L(P``T-JN'.W2+LZ3Z#>H6)V1`"K+\3H(;GR828B<5_S&>(HKZ2O^BYW1
-MOH#T7^4.^/4:ST>*"%TV<R7(^Q1_^]G^O_6T[6 at N`O3Z\MYF%L6S%_ZOIY(R
-M*'(=3D`MF")&A6OAK_Z5Y?61B6;DP;E%4/=3D-H]H[.<;2/GZT/@`ZND-)H(M[/(
-M3:J3KA;AQ3-PYECP(&AJ^Q649OVUU;;)>)8[_\7(OY-C(T[[SF0:TR]P7_UM
-M01)BL/G4GMX%EEJ(2V6T5EG,DMKAX.Y>#AE2CA-Y3GD2MT:#F at D`O````+P`
-M```"````10``N%Y9``!`$0``P*@!`<"H`0(!]`'T`*0&B;U3I\_M3&$Z7B4E
-M0^'ZU:PN(",@`````0```)PD``"`-^7B*']TJ[L at Y8"0]>MG@<U59)QY]DI4
-M.P=3DE+.^A_>JY15N`8I?19!$;[GN$Z(SU9Z-DR4_'`LDAFV,!D`MQ:I-\1!$N
-MMF'V/C!Z832F6CQ at T>_]?:/4>2(8UV^AMH$<Q3%P5$-#./.EL-T$"-@$X`[I
-M.0#`BKYD;RN.,7D2MT9+N0D`'`$``!P!```"````10`!&%Y:``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z;U3I\_M3&$Z7B4E0^'ZU:PN("0(`````@```/PA``#@
-M3!Y#0+CX9WVH>/Q`,H.*HH8^YFA@$K+NO`-BZ$X!7H'C(%S][A"&=3DCEK:0>Y
-M($7;16`ZBAXVT7V2O-\$ND2?&H&HDQTX`9X)35MX'E:,9W[,\S?=3D;?D_TM!X
-MH5$Q@,PR"(:<.4NZB243MO\`!2$3JHWT^V?]9V-X6U(^VE]J-'"32\)#U7,%
-M0C/%^=3D>7Y9Z.H?GYEZA%[4#DF\;8K.M09KYJ!IR;CL>??@5:I\B8=3D-^^+'OD
-M/ZQL"R7/=3D$Z],%R8/Q.]NS1$-[79LZ(O2O5/@^392W$Q*LS$L&O9,GD2MT:)
-MQ`D`_````/P````"````10``^%Y;``!`$0``P*@!`<"H`0(!]`'T`.0&R;U3
-MI\_M3&$Z7B4E0^'ZU:PN("0(`````P```-PA``#`<\V4"!@O)^P.^PM;_K]"
-M\5D[H</6",G_/F2PR`G$MH[`MY0+'H`DH5 at E6^SSN^`4.1M9U8"5P+E&0\-!
-MA,>'EZ:>99?+:`1[L31P?A@&"46^`*SIR)P[EV,MQ3-L4?>H6>#;R#(<I7L%
-M![V2+Q;[$RI^W_!N5U?>H8"`8X^15=3D$$&?MS?$"RA_4"5]4O>=3D"]__4[>4RI
-MT<*"ZTE[,#@B>+[+S-YD:Y at VMKJ+B#R16P`UC-K>9P8=3D^K14AT9Y$K=3D&],\)
-M`&P```!L`````@```$4``&A>7```0!$``,"H`0'`J`$"`?0!]`!4!CF]4Z?/
-M[4QA.EXE)4/A^M6L+B`D(`````(```!,*0``,$_-''8P#3D0N`\5:<.9>%5N
-MA:!^87W(/;K!<+,8>0)DTY=3D/+20%``Z7H?:`>1*W1C#K"0!L````;`````(`
-M``!%``!H7ET``$`1``#`J`$!P*@!`@'T`?0`5`8YO5.GS^U,83I>)25#X?K5
-MK"X@)"`````#````3"D``#!?KC-.&KILN:!&[Y>E%,HZZ9P%:9[YAFM[GJZ+
-M*[A4*VARL=3D/(>G]'$@Y-%7D2MT;2!@H`/`$``#P!```"````10`!.%Y>``!`
-M$0``P*@!`<"H`0(!]`'T`20'";U3I\_M3&$Z7B4E0^'ZU:PN("0(````!```
-M`1PA``$`0,0OI>@TW;KGOI(SW3E)`PK*,(FW#L\4_=3D7)FP)%76ER_C9VB_,>
-M:"_ZK<Z-Z.+/AO(#!F"$1)U/D+5W)2#^C/U\D!+/7REOXW+O59CA^O/(:';J
-MC2JH*I%[4<*XL&D"2C',_"DI7Q6C!/[D'6SBPTL^"B5H)TU$W)AN6A?5A`UH
-MSFH(;SYR[SF937KOV)<:M<>>,"X-=3D5&V8F$Z4#[\?)62#CX[O4^'9C5D2%UA
-M,:=3D\QV_--EVPL_*9IW:L"0)!"6XA1RBE=3DQ6D%7PW7U\Z%I<UUWK.P^O"(]Q#
-MOX at AL9V+O[JTSS?R;M1KWK(W?Y]D+*SQ31$9^*F8K+B@>1*W1FX2"@`<`0``
-M'`$```(```!%``$87E\``$`1``#`J`$!P*@!`@'T`?0!!`?IO5.GS^U,83I>
-M)25#X?K5K"X@)`@````%````_"$``.""A'^)\[,W\:\K_D>S at A[*C-X-Q&/<
-M7]_7E=3D&T>=3D#,<O:#(M;E$+D$\9U4FDN>N]9[<D->*5<I3&\[K/$C\I"4"NU*
-M\*U#'=3DRVBM#>YN@!Y6AB8``(DZ(J at XD"6]1@(L-V$9:*-($!D_K"`!:=3DG?0(
-M!_;*K+`4GK?#ZEK(Y&,XVY68+8;DYT3_P06)M;@H3J_2V;8IZOQ70B%4'56[
-MXLWRR\]R at UOG$S@@_]EQLL#F_N04`I*LDV*F!6UW)AL'1M^/#;B10&;+O);6
-MP=3D</;-<D"M7+,0`AGBRA=3D0)%>1*W1OTA"@#L````[`````(```!%``#H7F``
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YO5.GS^U,83I>)25#X?K5K"X@)"`````$
-M````S"$``+"\/K1>L8)V-LD\L+;Q:^,T$+\L`GP4SC<E.V9]!IO0;OW$Q26R
-MRW_?A3=3DO^=3DJL-3,U?M^DBS(:7N at 9N).J.[X7[AE`5(;`X9THE;HB,H]/<&PT
-M7L6 at G+<O[(4`[3<XDD#VNL>R%A2!1A1(J5CM.=3D0DD=3D#N2E..7"".OW4/J/"]
-MKCXU-0QL>OOH$.')L'L:(Z6O#4J]71- at G\3=3D?5'!1J:MORJ<'1N2^S1PWG;H
-M>1*W1I!#"@#L````[`````(```!%``#H7F$``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YO5.GS^U,83I>)25#X?K5K"X@)"`````%````S"$``+"N=3DNF:Y-^Z]W2!
-MC>*B]FP#EFH#VJMNJ].TI0E^,N"9WI*&=3D#PB"):&-\-;2K0.IA0VWZ.%K/HR
-MRC6K!O0J*VUIV;O.R4HPS]T)Q)EMGXBO3JC_X^^;9H(_3-/-YMH8),F6,"\Q
-M8]Z[_9<I:L!*")K0R'F7;6I7\F->T\6K!YWC&W)?QV+OT&04+&TU04VB$2.3
-M+>7J)T%-[MUJB$Z[%18 at F[/.:LP=3D81Q?9+(L>1*W1MA@"@`\`0``/`$```(`
-M``!%``$X7F(``$`1``#`J`$!P*@!`@'T`?0!)`<)O5.GS^U,83I>)25#X?K5
-MK"X@)`@````&```!'"$``0!E%$W50X;R\G%VD"'QQ]:L8CQ81G%Y6YU$;4_]
-M&;,,E"6CLZA97S?E:.?`:O$-N$MG9@&TIA.J]*\8(6DK6?N'$XBV<O31$D!]
-MZ)*597SK=3D]O+LI/6SM/1J?S`CR!7J+LVKCDBSS8LGP'L*-M354-+<!2BEI5!
-M0DH_2K9FFMRG4-?]\QUP]T9_">QB#47Q!#TT65`&?";75P57`[ZT_7IGR(7>
-M at HB/M#R!9+XVF_X/O?;88$0E:K#)UJ["$=3D2_5&B,(/8M-W,(&8C at UN2:!(:0
-M)*)CNVF?`D at J8(&;`H1<0.SDAZ[5N(PGBGU:'/14=3D-3)R*M'S7W)DWFY:<QY
-M$K=3D&TV@*`!P!```<`0```@```$4``1A>8P``0!$``,"H`0'`J`$"`?0!]`$$
-M!^F]4Z?/[4QA.EXE)4/A^M6L+B`D"`````<```#\(0``X(BQ`"Q#76ZO4ZVQ
-M<176&2RUN#Z*PV^>3LG0%4H^=3DWR;^#^>%O"G8]<R2<R"1HYJ%"K7P6\TKJ17
-MN5V1=3D0;UV,E1P"<6SCCZC?R71PEI_=3DD'(@W7G.!)$^0T+D at FZHX%S\N.Y95*
-M&_KN&ODY./:BNL>$XT.1E&B;,E!(<CQ[YD4V,P3!R5/`IKJO0,7-TRNJ1ZU2
-MV`DG3\>&78PW1&NHE,-W$_6>5QDG`M:SDJ$[3FY>T1Q*\O7#MGH0K-H2*WD;
-MRC+ME9UHHSB%"/VHJ6.<275(;V=3D=3D(E8!Q4 at 8]<AY$K=3D&]H`*`.P```#L````
-M`@```$4``.A>;0``0!$``,"H`0'`J`$"`?0!]`#4!KF]4Z?/[4QA.EXE)4/A
-M^M6L+B`D(`````8```#,(0``L"Q0,09;%]NXSL)6A0_,ED>Z]>@OL8GCT2V#
-MF2A!\87Z&:H8W]F*1=3DD5!&M=3D\?<_7?E[=3DW&J>K<G#66..5;7JFD,(9\V>PRS
-M$F6J.*A)=3DOAVNB__:`.O\@1[#/]K')\^G,O&OD.2&V)R996RQ$])C@@U^G$^
-M[J+`K5O[]I(EG:_FP,C$UF>Q!WH(0HS#Z/5EQ(>PGGQ']R$/O>QG$5^4-<$\
-M.'&9!Y`O1R=3DVRLMY$K=3D&::0*`.P```#L`````@```$4``.A>;@``0!$``,"H
-M`0'`J`$"`?0!]`#4!KF]4Z?/[4QA.EXE)4/A^M6L+B`D(`````<```#,(0``
-ML`U1%SW10W2#(A8[V2"X7D</II=3D<?PZIK:3NW+8U:IV4N)ELCGGTROR9V=3D;B
-MRWFM;H#F[6ZUV3--*OL+J]TK\#"-\T@$:_P$]CHV<R?D>@<:[HRAP+Q1)_:N
-MAPW;U+QFG,%W'K&((5YNAL$0$/!L+Z.ML_.P%+`+W(U*-F,Z;#S+2T+R^"`:
-M)*+!.<Z/-3#-$_H=3D,G-T"X4L[*YF:JO?QCIIK#E]M!>*;T)JR^YY$K=3D&9<H*
-M`(P!``",`0```@```$4``8A>;P``0!$``,"H`0'`J`$"`?0!]`%T!UF]4Z?/
-M[4QA.EXE)4/A^M6L+B`D"`````@```%L(0`!4'X/K/JE+<F=3DE-4:EVS/_S(-
-ME.B&;&Q,@(^B>1;MN049IL*Z$DVU<U'PTW5U>;+X\9XI8UW9;VI92XG'$)/@
-M^B>557QXM?-E^<>R&=3D%\GF#V;V_?>@5/A3W`9PJZW2\(ZZ?C.,,-B%Q6,IP&
-MHU*-'A*"+5[USM&`)B;M9F3Y?]^_"U;<A:<;UO7SO>'*&8@<U:K56A99$E^/
-M*CGKROHJ?UQG$F.).VIN6RJ19KP>[E=3D^X8)AY9G!A+,LQ at 56$7AU83X,&/XN
-M[3PH,$V\D:)/>*8;M]?V?O:]`N.]+P9WJB<CQ&&'"IUYEGLHYFU&J"?^=3D%1N
-M=3DV?$9BW8\"TX at _I[A[J%@>J![1,JS(EPO)Q,`H6U)"J%/X,[4#BD72T&KA7\
-M3.>W3FE9,>`T/7C/:3C]W+2>[3Z=3D(;W:A.5";ML]1;!N$0]E-ER!OG:`9\8^
-M>1*W1M[^"@!<`0``7`$```(```!%``%87G```$`1``#`J`$!P*@!`@'T`?0!
-M1`<IO5.GS^U,83I>)25#X?K5K"X@)"`````(```!/"$``2#HQQ`M+9S-_VM#
-M0NG38^HZG.*`5J:GY:@/C!L0BYWZ-6TD!._/PTT./<*@.(($__":/J#`5[F?
-MBO<*ST_=3DW/FY at L`Y?WW8(CM32CRM!QM_CENC9NY*37YWT-68E)GEH99F63$<
-M33-PX@&+E=3DAI`<3A_(,L0\4K8$AK8>?*`R'_ZU33L.-O[R\CYL9>GUM)'-SN
-M6"%>$QV>-!_S3G"@9U#U]J=3D5%U'P'Q4@/$N&/HW:_;8BUG&JA=3D&BA-[([FEG
-MMA<4XD:@65\/E<]WPS/Y7NX/Z"%;/U2WT,KOC9%MO".?P3&''&`J at YJAY7Y!
-M(W\[Y]^6JFM`/B,`%3+D?12%L9"3`[_VDO;NH5,#PI-&R(P3DH&D::N&5EPO
-M+<BO!GD2MT;F)0L`?````'P````"````10``>%YQ``!`$0``P*@!`<"H`0(!
-M]`'T`&0&28B'9(.YJE^U4<B)[-T?Q:@N("4(`````````%PJ``!`':KQ`2@!
-MLR:;E?EB_#UP[6<)1S/STV,<XK4A`:40",NLBN'B]DE,"^$"\(ZQS8`L`$FU
-MQP$-3?[W+I!H>1*W1A(Q"P!L````;`````(```!%``!H7G(``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YB(=3DD@[FJ7[51R(GLW1_%J"X@)2``````````3````#`(
-MI-RZ-':XU&>SD"`*()G619.:"-$BY9,F4G=3D>2YM21GODYA;+AAG#&!UR+GD2
-MMT850`L`;````&P````"````10``:%YS``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.8B'9(.YJE^U4<B)[-T?Q:@N("4(`````0```$PJ```P/R[;"2]H:>\)%Y4&
-M'VWN]438K*IJQ?)W8SK5V6QT^A[)XCHCX7/WBEB?\))Y$K=3D&7$T+`&P```!L
-M`````@```$4``&A>=3D```0!$``,"H`0'`J`$"`?0!]`!4!CF(AV2#N:I?M5'(
-MB>S=3D'\6H+B`E(`````$```!,````,,KXS<%\L+`+TNQ+&JO+W4^T8\#OMR*(
-MNOL#(!/,B(3W)(!E'?S*#6*,QO[B>1*W1IE0#`"8`0``F`$```(```!%``&4
-M7G<``$`1``#`J`$!P*@!`@'T`?0!@`=3DE))'E6G^?8QP``````````"$@(@@`
-M```````!>"(``'@`@`!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MF4T;GO]<!D\M+99658-=3D(\Y(X517<K[(N$-J7['FZ610W?7ADPS(AJ6+`((2
-M3'LDJLE"-LXL5"2@?I0>S'G]A>YA36V#N"M7+/@S5 at TOG7F["HKGNNGCN5_<
-M:P^'H&I"@'X4,$$^:Y%?TF7,9`A/E\MQ.)B;^R-_-6-4'&F/"S,I```DG;=3D&
-MS!>V;0*A#7_YK6;`^S$J+Z2-5Q:?9!S;K;?>U/4I```<``!`!(G&7$\_JOH%
-M&?$39IN(Y^SBZO*B````'```0`6J.]O6C?=3D\VTQ7(!8!Y%Z$4+]EL7D2MT8B
-M8`P`7````%P````"````10``6%YX``!`$0``P*@!`<"H`0(!]`'T`$0&*221
-MY5I_GV,<```````````I("(@`````````#P````@``!`!@````<7*K%M1<[O
-M:V.=3D/1:V)GQWY'RS''D2MT;F;PP`N`$``+@!```"````10`!M%YY``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A221Y5I_GV,<```````````I("((`````````9 at A
-M```@``!`!@````<7*K%M1<[O:V.=3D/1:V)GQWY'RS'"(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``F4T;GO]<!D\M+99658-=3D(\Y(X517
-M<K[(N$-J7['FZ610W?7ADPS(AJ6+`((23'LDJLE"-LXL5"2@?I0>S'G]A>YA
-M36V#N"M7+/@S5 at TOG7F["HKGNNGCN5_<:P^'H&I"@'X4,$$^:Y%?TF7,9`A/
-ME\MQ.)B;^R-_-6-4'&F/"S,I```DG;=3D&S!>V;0*A#7_YK6;`^S$J+Z2-5Q:?
-M9!S;K;?>U/4I```<``!`!(G&7$\_JOH%&?$39IN(Y^SBZO*B````'```0`6J
-M.]O6C?=3D\VTQ7(!8!Y%Z$4+]EL7D2MT;_DPP`4`$``%`!```"````10`!3%YZ
-M``!`$0``P*@!`<"H`0(!]`'T`3@''221Y5I_GV,<4"1X5OX'HX\A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``%ZQ4WB?QVI>\+`U?X<Z<%-"RPAFP]+73Q<<>AM3
-MU(%F)/[HK-V7I'$S91U?(;P<<G@)1.NRK"Y(LN*<I9H*0(N$U8<\6/^!D)V6
-M34,SURUZ54(D6/BZ'"G(<G61R!/@3-`0XV^G[<P0_A/.UT9E/OD^B_TI.'.B
-MI5[IAP&(XF2J*0``)$4YNFO5H,&,2HF($+P at X"`D1HMX9$(:J"`V@@_G#>B#
-M*0``'```0`1^R6_!\MCQ/F)4%.*S"<P=3DA6U>%P```!P``$`%`@VI78D.%EFO
-M]P0PDN[49A,^^?9Y$K=3D&O,`,``P!```,`0```@```$4``0A>>P``0!$``,"H
-M`0'`J`$"`?0!]`#T!]DDD>5:?Y]C'%`D>%;^!Z./+B`C"`````$```#L(P``
-MT#CUF31(9I*6HLHL\EEBZW=3D#>7$U!K;KJQ"[H50B#4AS]EN[S6!S0U1`F/AZ
-MG(7PC&!>H$FGDD5Y;#@&F`;Z*:Y>GZ=3DQ1?X6-522_I:)5S;G"4=3DHDUT-,8J<
-M>\BQ[K`UJK)J.8L8FIMC'\;:%84FPS"Y,/`_Q2G;P'=3D4%@#`RO3.1&P4AD/P
-M6OUW``V%H+DOGY%&JY33_+AP:?Z2^8L[;^6U[(3:CS(FO[#;7Q1(^N4S^T-8
-M&WK.IQ6['9>OT,?;Z\5LUQ%TE*-3X.D:PGD2MT9BV0P`O````+P````"````
-M10``N%Y\``!`$0``P*@!`<"H`0(!]`'T`*0&B221Y5I_GV,<4"1X5OX'HX\N
-M(",@`````0```)PD``"`!"!V>6\PK?DH%ZXR900C'4C5..ZD$%)DEQV=3DK2\C
-MIF(N_L$=3DU=3D[E)\;X!T'$Q7J2`@<F.`.`8U4BW7H\/-`QC;P<>(>(M@*$C/])
-M';'8B7A??]&J#XI/.$O0('7:(QQ'33U\-%5C)\CI at I=3D9Y:<"RW]['P,VRDGA
-M6R^U8'D2MT;%^`P`'`$``!P!```"````10`!&%Y]``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z221Y5I_GV,<4"1X5OX'HX\N("0(`````@```/PA``#@M0,6;K9;
-MB%6Q-`D6(9N"QF)>`V8DC<,!=3D1GRI+HTAW0Z&F3,D8N5XSYD,.L^F`B7Y1W5
-MR\[,ZYL;YLT3.Y!*9I49G@;Q70IF]K[`$_8(G'(7P6DBZBLT/>+G0 at +4A@)+
-M[BU"!V3@&ZS8.321LU%"@X*D&ZF)OD:7M?'NA8Z0L,E=3D*W&,Y]LI+'O:"U*J
-M6=3DZOL.H*!*4MQ]$R]V>9P&7*9ON*#<W_N6^M3$+RXV$%QC&=3D."X#/C&B at .1_
-M7)@IW'T at 926">JPX]X-J*YA+&6H*(;R`;=3D9CMF">^!I+P'D2MT9N`PT`_```
-M`/P````"````10``^%Y^``!`$0``P*@!`<"H`0(!]`'T`.0&R221Y5I_GV,<
-M4"1X5OX'HX\N("0(`````P```-PA``#`$B9F69<$8\*WK`UQ%T2-,@&KOFP$
-M-75%/'#?JJ*E7L9&5U%)NQ<;!Q4U87P^4?+ZFT,,D9NVZ:9-<0V7(3%WIB%+
-MBY0P7[5G2E<E!.6MG>.\FJM5#0$]5'#S1YZ:&`=3D_/`[P24'%EZ0(I$"MKLO(
-MC$#3FES94#EY^HXE,DYI;W#*&\EN'P`O/EWM#%/9"04MF-?$QG8V":.%R?C!
-M?&".^14VI"_[V!#Z+5-*E6\4$*?DN/)!3]I'%IM'1:-Y$K=3D&20X-`&P```!L
-M`````@```$4``&A>?P``0!$``,"H`0'`J`$"`?0!]`!4!CDDD>5:?Y]C'%`D
-M>%;^!Z./+B`D(`````(```!,*0``,'T@^03 at _#SNNTGJ,<[X#L at AT>0*4Q[I
-MD[?*;0+^NWQ,6,4O=3DQ=3D0(.7PT(KG>1*W1KLJ#0!L````;`````(```!%``!H
-M7H```$`1``#`J`$!P*@!`@'T`?0`5`8Y))'E6G^?8QQ0)'A6_@>CCRX@)"``
-M```#````3"D``##!EUU#(KB at 3TA?V?PQ3>FJ$45IN&TWI6`Q;115YCW9*BP"
-MB-,<MP%BSAFKZ7D2MT:-10T`/`$``#P!```"````10`!.%Z!``!`$0``P*@!
-M`<"H`0(!]`'T`20'"221Y5I_GV,<4"1X5OX'HX\N("0(````!````1PA``$`
-MI,9(;`4Z)YD9TP76>>/T at S`G%//#PG\1P-U#!5=3DVNAH-1S5XA`&#&`RY95P,
-M^4UDJAA at 6^C^/7D-5XJSE)(@W.+P&IMXL&,9YP,L;M(DOBK#<A[P3/6U&@EJ
-M.>64G!.D#\'Z7OQ.E/^\S&@60F\8?N5`XRT/)!U#R8-FB![G1;&9=3DU)V[_UG
-MJ=3DCWJH1?KC(/0(3',,.U8[93C[IDU&@-GA7K:F65IT8`X"SB(MS8L`)W("S6
-M[X=3DU_@!*D'&"QXT->SNB)HDIKFA6C3B-PZQD$Z:N?LQ&'PJ<:;5#N<BP5^RU
-MN@[B](ZSAR9YP`8)%I!*WQ*7F\6$"C4=3DKP?+>1*W1MY1#0`<`0``'`$```(`
-M``!%``$87H(``$`1``#`J`$!P*@!`@'T`?0!!`?I))'E6G^?8QQ0)'A6_@>C
-MCRX@)`@````%````_"$``.`=3D6P:E8\+$@F0:#-*V+>/40&M$+32)NY#E84'=3D
-M*7.]T$"!BQB`J,-(N\ZTKL9%O'%,2?:T9W#)8J_%+S_'I1L:#INE=3D_WO/AM8
-M<9G:!Z<D,>W/HT3L7=3D$!&L^#50;^Y$2R**:QG0$QLD?'8E8*7/&7HTJ*O_0E
-M8%X1/L4UI];S=3D-QU>&!`&.=3DO?W,O.^+H"$INFS(/T0<I$V`3;%RT+)Q7TI_G
-M9XD2-M6W'T'AHGV<<F?:I)]/@@DDFGKI>=3DA\5[7AL at _(8F3QQHZU=3D)X5Y:7\
-M7Z!@90?0/!"@H5[?>1*W1F-A#0#L````[`````(```!%``#H7H0``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y))'E6G^?8QQ0)'A6_@>CCRX@)"`````$````S"$`
-M`+">=3D=3D^*+QF;-,',;F($^YF\OM/FM7X&I&TRIJ/AT]!YD at M,ZE8\/T7O<EE(
-MXA?YDU(N^5 at 920Y&3639@\N!#0[V#$)UB[N9A)ATQ(U7#WJ;++/9$.C"EGA^
-M#Q:D\0SJ)VV;_B0+>W,?I6J>>#8?S"SN1+?!2R29CF[D!"JP\!><:.9R`>`S
-M'-;ZA<FC^5YU17$X&A`C"2Q<7"W'2DJ)4<]ND[.SR#%\:85..Q_?>1*W1I>#
-M#0#L````[`````(```!%``#H7H4``$`1``#`J`$!P*@!`@'T`?0`U`:Y))'E
-M6G^?8QQ0)'A6_@>CCRX@)"`````%````S"$``+"L]J\"UN4?&?[+C1H28;LV
-M+R1L9"%8R;H]<O%ME)GG#5<FETU6>PT3)X4JW%:$0-;FN4DC;HO2I>OYH:P-
-MMN'AV1<'S(EW0AN-%?G^$R.?*R?Q/7FH5<4JOZ\5]3CUX'^YL&3*_(X<I!U@
-MRR9AOO*O_#Y1MI`F5A3/GW$T.V!`C<,5^[/X2NK=3DU'@<4-`-=3DQ,D]%EY1XM]
-M6:*6]\3P9B8/B;%^/PJVZ=3D7WH6QX>1*W1DVA#0`\`0``/`$```(```!%``$X
-M7H8``$`1``#`J`$!P*@!`@'T`?0!)`<)))'E6G^?8QQ0)'A6_@>CCRX@)`@`
-M```&```!'"$``0"M?WM"K3_[$4F2__-Q-G!V^,(AC,I,(&N9`3K7`Y`*+<?0
-MVS(::,>RWDDZSQ>!0S\,-[`5DXC/KUR_(";8F"YE7+/6>-A`XG5U7X(4[9:3
-MI&=3DU#([R@\9+X72J[&%G:@LO'DW9%\AV79Y@!":#A-AN)1:&E@]S;T4;5RIW
-MY0XJUYL!-F0=3D#&)?3AAJKL/:*"R4N#+NQ[X:IT07WW at WKZ#S5+O8!@T5M`(1
-M&:K>->VE)5/.Y2:XV:SK,^T#JWAM]BL[2H3)&1^GW=3DD\&=3D\?)(KPX!]BEE7L
-M)9'0>F- at Q>MMC3,\9.=3D1,C2!O['PC1I#D#EB;:04ZJK&H'N&1LMY$K=3D&"ZT-
-M`!P!```<`0```@```$4``1A>AP``0!$``,"H`0'`J`$"`?0!]`$$!^DDD>5:
-M?Y]C'%`D>%;^!Z./+B`D"`````<```#\(0``X#_3`'=3D(*N!EJGP>Z,W&66S-
-MGGQN-J'4W[<4H>)C:B;>BB/@4LW-19D"&V"AIJM+O=3D9W(D=3DT at BBTN>OBRU_3
-MW[YP[D'EBVPV(C*7!@]2F"T/CJG_!(MF.,<`3<-&<N9C:7;%'$(-4G6U^XME
-M_<%XIMQ;X3<>MM4GT6Y/PN2%63[L-Q/K>;@3R`MO:36UMKSXC;+]EKJ;:<"]
-M5^SVHL,X)N<A/N_26>/E!@6(<NT($IQ$2S!:95;N9OOK[>JB\,-DLC)_(M(T
-M"5['$VX#B&1^!ZGG[J`LG1;Q,?W8R0MY$K=3D&BKP-`.P```#L`````@```$4`
-M`.A>B```0!$``,"H`0'`J`$"`?0!]`#4!KDDD>5:?Y]C'%`D>%;^!Z./+B`D
-M(`````8```#,(0``L``9?:2KC+>/9E.'`CX.LN03TH&$&_WGX;AZS.\I]HJ<
-MQ)&E)R51(\>&D'[Z%HF^<&79'0V>#^5G at TTX,;Q2E#Q0HY(?N23K)>I(,M5D
-M8X-<1P3XWH4..^;7P:(]9B\KJNQ8F/!^5EA=3D3!;_3G$-4ICW%MRDX;$KKF9N
-M,W"*B<I[?9=3D2:#'1]@1U-3$W!%RV=3DHJ72E&V]+N,0!TMP"+I(\;H[%KWGPT7
-M at 90WX^QY$K=3D&:=3D\-`.P```#L`````@```$4``.A>B0``0!$``,"H`0'`J`$"
-M`?0!]`#4!KDDD>5:?Y]C'%`D>%;^!Z./+B`D(`````<```#,(0``L%W;THI+
-M'3)\XM@@-8R2DZJRJ-<9"EP2M2A-1")Q/.BT&,CD"S/858PG7UC"E#4 at EIW(
-ML]3U('U.6B+Q=3D/#7>8?*G^(M^N7NVSQ?"5`>=3D7,;$?]^UO,$H.MHUHW@=3D7;Z
-M?6-(P.2,79GU?QL4BY7GWFA>D!9,Q7[87 at 4=3D`JA,XK*.T,C/"D+GQ:Y(8U(P
-M0/XB*0<NFQGY1#09-MC^"KP`G*ZY9AJ2U&R#571,F95Y$K=3D&D at 4.`(P!``",
-M`0```@```$4``8A>B@``0!$``,"H`0'`J`$"`?0!]`%T!UDDD>5:?Y]C'%`D
-M>%;^!Z./+B`D"`````@```%L(0`!4(@GQI<J_\"(;_[;7?&$D(']`9\1*YMV
-M5+W^5N`RY0'QF_`&<(G+IO/43V.:ZY!HMD`P#VF$O1S7I?M5;WGR<[L94<35
-MZD>0WE6<R.+&I:O8'3;'BJ?FE6,--]CDNWC5^W`T98\%Y0I@(>2AW=3DY;/C.;
-M-9Z.\Y1"P''S017HE]PT,YWUY3UL"WQW0OQ?+,`-K7H&U6*-]9&>(:XX49_5
-M1R#%PVX4KVO%(8/ADEPL%V2NJ&.%:"(?6/WI$,%=3DC\Z<+DVC]D.2%"*"01&<
-M!C[&=3DX?.!!Q[A`2AVXG665#A/#C5]_AF<&N3ZY0V+"@3..$@'@C/3[OH\81!
-M9]1P>FOK#DK at C4#I+'!*U7AJY#SY1QDCH[)C!#RLX[V&]S?VUP;:\!QR[&[Z
-M3AJ'O[QM]EK=3DM!O_2A^G+\CR8J&BC6.CJ_[+Y9)&?(&J),[.I"LY>1*W1BLY
-M#@!<`0``7`$```(```!%``%87HL``$`1``#`J`$!P*@!`@'T`?0!1`<I))'E
-M6G^?8QQ0)'A6_@>CCRX@)"`````(```!/"$``2":4?H#'D7CHJ:F$0YN$!LJ
-MK'!YXP*X1_XF;WA9\B)#B,F%'::W^P?HT,4DD*,Y4DKQOO""I5C+5=3DZJ\26Q
-M;,B=3DSV-."%_@`E0<B$G!<1_=3D+^Y2;LK^A]X;P6(;0(;GKYA>:R08]S&GOG7P
-M<,F04ZV<W'PRJCC8NB5`!%_X\[X-"9$-N1`R>)J,P+F.V4A0("4GGI[,L0MH
-MK\*2[5V9`T&%QQ:`D`^VTJ(#7'N;H2E0%-+$1VCQ2'"/1>UXXZ+%=3DFZI4S6:
-M,]. at S_9QDQWF3LGY&8Z:2"1G#7=3DSN.;J0(V6;UTH9K%F"Y!T#BX!$?RO52!_
-M<HW!)LEGA^I#0:0!Q94 at H%78'WXC.=3D at WWF87/-,+YZ\(K*$C9R+S0*"2&'D2
-MMT:_8`X`?````'P````"````10``>%Z,``!`$0``P*@!`<"H`0(!]`'T`&0&
-M2:M`8ZD7Z4M"NYG0]=3D.W3*PN("4(`````````%PJ``!`A*&"[NF8"S#L[$E9
-MT+B_>!1PP?+UW]">+B781 at J6@!BZ#S3P>EY9$=3D(O$L4PK7'LZ3P at U?""+/9[
-MD.RX>1*W1D-L#@!L````;`````(```!%``!H7HT``$`1``#`J`$!P*@!`@'T
-M`?0`5`8YJT!CJ1?I2T*[F=3D#UT[=3D,K"X@)2``````````3````##SJCG=3D6%\(
-MA\@`[@Z;M"P`B?N"AM>[8 at -W3D`H@(FC-3LTUKB3F;ZB4F\6!7D2MT;1>PX`
-M;````&P````"````10``:%Z0``!`$0``P*@!`<"H`0(!]`'T`%0&.:M`8ZD7
-MZ4M"NYG0]=3D.W3*PN("4(`````0```$PJ```P at O`_2%NVJ&$L)9BQLA]^"FTS
-MJ*)I9B]9XV at 8?XU\L)W)J0W/_'P["Y>`(25Y$K=3D&(XD.`&P```!L`````@``
-M`$4``&A>D0``0!$``,"H`0'`J`$"`?0!]`!4!CFK0&.I%^E+0KN9T/73MTRL
-M+B`E(`````$```!,````,'%74+X^;HQU45I:!%Q?&-/Y]MB4!3 at N9>B^EO2!
-M%^M2],$(=3DC:KMZP]I)KY>A*W1J9"``"8`0``F`$```(```!%``&47I,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE:SGX4"]@[#D``````````"$@(@@````````!
-M>"(``'@``````0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``H*4GVD;9
-MB:49]>',\$(JTH^,_EV19BR"JVL2+1%IMAGK;JP2*_U%E_U1?KPR9:Y^T\*<
-M"H]FVQ<F,0X&*W6V6IR'$,+QB%VE\6VL7\JI"08F:$"BEQ]JYM_M.*Q3!4.S
-MI-^^RX&>9L26[/4(2O^T2HP/S!QK$F1QZ5KZW"5805HI```D0DIV5;/&GV-$
-MCCME9[FRA\/-*?,8C")0D[3$@TXH6&4I```<``!`!$Q&`7'0GC)VC2G+\!)K
-M*BB'V=3D/H````'```0`4XP8"<.U_%^?R$?JSLU at S\_Q?$M7H2MT;5=3D0,`F`$`
-M`)@!```"````10`!E%Z9``!`$0``P*@!`<"H`0(!]`'T`8`'96LY^%`O8.PY
-M```````````A("((`````````7 at B``!X``````$!``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``*"E)]I&V8FE&?7AS/!"*M*/C/Y=3DD68L at JMK$BT1:;89
-MZVZL$BO]19?]47Z\,F6N?M/"G`J/9ML7)C$.!BMUMEJ<AQ#"\8A=3DI?%MK%_*
-MJ0D&)FA`HI<?:N;?[3BL4P5#LZ3?OLN!GF;$ENSU"$K_M$J,#\P<:Q)D<>E:
-M^MPE6$%:*0``)$)*=3DE6SQI]C1(X[96>YLH?#S2GS&(PB4).TQ(-.*%AE*0``
-M'```0`1,1@%QT)XR=3DHTIR_`2:RHHA]G3Z````!P``$`%.,&`G#M?Q?G\A'ZL
-M[-8,_/\7Q+5Z$K=3D&9[<)`)@!``"8`0```@```$4``91>L0``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V5K.?A0+V#L.0``````````(2`B"`````````%X(@``>```
-M```!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``"@I2?:1MF)I1GUX<SP
-M0BK2CXS^79%F+(*K:Q(M$6FV&>MNK!(K_467_5%^O#)EKG[3PIP*CV;;%R8Q
-M#@8K=3D;9:G(<0PO&(7:7Q;:Q?RJD)!B9H0**7'VKFW^TXK%,%0[.DW[[+ at 9YF
-MQ);L]0A*_[1*C`_,'&L29''I6OK<)5A!6BD``"1"2G95L\:?8T2..V5GN;*'
-MP\TI\QB,(E"3M,2#3BA892D``!P``$`$3$8!<=3D">,G:-*<OP$FLJ*(?9T^@`
-M```<``!`!3C!@)P[7\7Y_(1^K.S6#/S_%\2U>Q*W1G;#!P"8`0``F`$```(`
-M``!%``&47KX``$`1``#`J`$!P*@!`@'T`?0!@`=3DE0L;T@&A1"^H`````````
-M`"$@(@@````````!>"(``'@````!`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``XYE9=3DL/CKK\C#.\_.'=3D4NUF^IV=3DL`:HA5P0.R?%^6A+#2J0&O.=3D2
-MIUSGV(3Y&)`?K1KKJ;WM<G$PJ_$G)`D*--G:`$4SK;?@44R=3DSZ*YYJ^Y[LW+
-MN_P(2'V+5:VAHCCH$(Y^/\DOQ-'[O[2(:UGGI9OX]44H4]%#]M]I5.&:48HI
-M```D%JG4K?V3XC!PN+H^M\J94.:*H"Q)3//"<C`_R:]&*+DI```<``!`!+&:
-M-604A11$BNTQYAR/2E7'<;FM````'```0`59"E."HW'\KB9-QK$]-H;JDK=3DQ
-MQWL2MT;1[PH`F`$``)@!```"````10`!E%[!``!`$0``P*@!`<"H`0(!]`'T
-M`8`'94+&](!H40OJ```````````A("((`````````7 at B``!X`````0$!``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``..967;#XZZ_(PSO/SAW5+M9OJ=3DG
-M;`&J(5<$#LGQ?EH2PTJD!KSG4J=3D<Y]B$^1B0'ZT:ZZF][7)Q,*OQ)R0)"C39
-MV@!%,ZVWX%%,G<^BN>:ON>[-R[O\"$A]BU6MH:(XZ!".?C_)+\31^[^TB&M9
-MYZ6;^/5%*%/10_;?:53AFE&**0``)!:IU*W]D^(P<+BZ/K?*F5#FBJ`L24SS
-MPG(P/\FO1BBY*0``'```0`2QFC5D%(441(KM,>8<CTI5QW&YK0```!P``$`%
-M60I3 at J-Q_*XF3<:Q/3:&ZI*W<<=3D\$K=3D&`.\!`)@!``"8`0```@```$4``91>
-MT```0!$``,"H`0'`J`$"`?0!]`&`!V5"QO2`:%$+Z@``````````(2`B"```
-M``````%X(@``>`````$!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#C
-MF5EVP^.NOR,,[S\X=3DU2[6;ZG9VP!JB%7!`[)\7Y:$L-*I`:\YU*G7.?8A/D8
-MD!^M&NNIO>UR<3"K\2<D"0HTV=3DH`13.MM^!13)W/HKGFK[GNS<N[_`A(?8M5
-MK:&B.. at 0CGX_R2_$T?N_M(AK6>>EF_CU12A3T4/VWVE4X9I1BBD``"06J=3D2M
-M_9/B,'"XNCZWRIE0YHJ at +$E,\\)R,#_)KT8HN2D``!P``$`$L9HU9!2%%$2*
-M[3'F'(]*5<=3DQN:T````<``!`!5D*4X*C<?RN)DW&L3TVANJ2MW''?!*W1BH^
-M#P"8`0``F`$```(```!%``&47N8``$`1``#`J`$!P*@!`@'T`?0!@`=3DER%`/
-M'P#-&U<``````````"$@(@@````````!>"(``'@````"`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``,J?A<J_8=3D*8H11D#]\,/@'9!>OUC?DG"*Z#]
-MA(6V9SPF3<^4;*.U-_@&W%+->.TJA`\)E_(5!4#'Q%`8K)D6TT93VA??I:QX
-M2.IK*/B<(T:R^RQ$Z?VUCZ,=3DN,HU3XP5")<P:5K"8)$=3D--^1NA&L7%7J;"W5
-M46O.X4+N?X-6XB0I```DPU?/M at KK/(#N5\"2VDVLXE<XHHGHQ*=3DC2QI;.(,#
-M2.XI```<``!`!!@'FITNK=3D1HY4&:;HK24HSC/7;/````'```0`6I at UL:<LHC
-M#N9G390'GIPDZBC8:WT2MT:>)P,`F`$``)@!```"````10`!E%[W``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9<A0#Q\`S1M7```````````A("((`````````7 at B
-M``!X`````@$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``#*GX7*OV'2F
-M*$49`_?##X!V07K]8WY)PBN at _82%MF<\)DW/E&RCM3?X!MQ2S7CM*H0/"9?R
-M%05`Q\10&*R9%M-&4]H7WZ6L>$CJ:RCXG"-&LOLL1.G]M8^C';C*-4^,%0B7
-M,&E:PF"1'33?D;H1K%Q5ZFPMU5%KSN%"[G^#5N(D*0``),-7S[8*ZSR`[E?`
-MDMI-K.)7.**)Z,2G8TL:6SB#`TCN*0``'```0`08!YJ=3D+JW4:.5!FFZ*TE*,
-MXSUVSP```!P``$`%J8-;&G+*(P[F9TV4!YZ<).HHV&M]$K=3D&+FD)`)@!``"8
-M`0```@```$4``91?"0``0!$``,"H`0'`J`$"`?0!]`&`!V7(4`\?`,T;5P``
-M````````(2`B"`````````%X(@``>`````(!`0`,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```RI^%RK]ATIBA%&0/WPP^`=3DD%Z_6-^2<(KH/V$A;9G/"9-
-MSY1LH[4W^`;<4LUX[2J$#PF7\A4%0,?$4!BLF1;31E/:%]^EK'A(ZFLH^)PC
-M1K+[+$3I_;6/HQVXRC5/C!4(ES!I6L)@D1TTWY&Z$:Q<5>IL+=3D51:\[A0NY_
-M at U;B)"D``"3#5\^V"NL\@.Y7P)+:3:SB5SBBB>C$IV-+&ELX at P-([BD``!P`
-M`$`$&`>:G2ZMU&CE09INBM)2C.,]=3DL\````<``!`!:F#6QIRRB,.YF=3D-E`>>
-MG"3J*-AK?A*W1L5T!P"8`0``F`$```(```!%``&47R,``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE-+K1HCE%HDL``````````"$@(@@````````!>"(``'@````#
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``P&IEF2FY_Z*24=3DV_Y/HK
-M\JEG7AXH)^U,*4B)%ZQI.2/OP@[:36^4"5ZH0:BT*)P%`2>?+V]QY6-0PB;`
-MMH(R'CWIT*O1P*X.")._D_4A.9G>^1U^K05A.0FZ9+#$`JHQ>6:C<H7'E1+7
-MRWSO_Z388M=3DL7CT%FH]H&-/(B_SD&P\I```D4XMER^$]/F=3DNNX1H,3_OH#",
-M-R6MVI-8K-";?QO;7J(I```<``!`!.GFL6^:<JF&-C=3D;G=3D\%^F>"VLS;````
-M'```0`54(H"2(*/'>LT1[E]P9?0?."ZG''X2MT:&H0H`F`$``)@!```"````
-M10`!E%\D``!`$0``P*@!`<"H`0(!]`'T`8`'932ZT:(Y1:)+```````````A
-M("((`````````7 at B``!X`````P$!``P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``,!J99DIN?^BDE'=3DO^3Z*_*I9UX>*"?M3"E(B1>L:3DC[\(.VDUOE`E>
-MJ$&HM"B<!0$GGR]O<>5C4,(FP+:",AX]Z=3D"KT<"N#@B3OY/U(3F9WOD=3D?JT%
-M83D)NF2PQ`*J,7EFHW*%QY42U\M\[_^DV&+7;%X]!9J/:!C3R(O\Y!L/*0``
-M)%.+9<OA/3YG;KN$:#$_[Z`PC#<EK=3DJ36*S0FW\;VUZB*0``'```0`3IYK%O
-MFG*IAC8W6YW?!?IG at MK,VP```!P``$`%5"*`DB"CQWK-$>Y?<&7T'S at NIQQ_
-M$K=3D&X*`!`)@!``"8`0```@```$4``91?*```0!$``,"H`0'`J`$"`?0!]`&`
-M!V4TNM&B.46B2P``````````(2`B"`````````%X(@``>`````,!`0`,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``#`:F69*;G_HI)1W;_D^BORJ6=3D>'B at G
-M[4PI2(D7K&DY(^_"#MI-;Y0)7JA!J+0HG`4!)Y\O;W'E8U#")L"V at C(>/>G0
-MJ]'`K at X(D[^3]2$YF=3D[Y'7ZM!6$Y";IDL,0"JC%Y9J-RA<>5$M?+?.__I-AB
-MUVQ>/06:CV at 8T\B+_.0;#RD``"13BV7+X3T^9VZ[A&@Q/^^@,(PW):W:DUBL
-MT)M_&]M>HBD``!P``$`$Z>:Q;YIRJ88V-UN=3DWP7Z9X+:S-L````<``!`!50B
-M@)(@H\=3DZS1'N7W!E]!\X+J<<?Q*W1A[O#@"8`0``F`$```(```!%``&47S@`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE_5['9)RH4N4``````````"$@(@@`````
-M```!>"(``'@````$`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``VK=3D\
-MI,2JW6A#O*O9:Z3G,E/P\@!V&3XC-.0 at VO7ZVJML0`G8EAC'AI8,7(E8SZ(=3D
-M`\8]5%?%9LW#6/ZUAM=3D'<=3DM;G)L%D+ANB<=3DXP"^MO9;S>%9GFK0_$S%LO)_\
-MK?9';TSA&!3(%UH;NE)*?9]DP-[K$"V42.L\Q&V at X0TS;U,I```DQ5,WW)1V
-M'K_)8FMNW;U]13P37._4^Q)X9ZZ+(8B&$P$I```<``!`!/S2Y2=3DAE&V at X:P'
-M[2ROMNX?PG$)````'```0`467X,2?T(39`8UH.5+>MX(%(#B*X`2MT9!V0(`
-MF`$``)@!```"````10`!E%\Y``!`$0``P*@!`<"H`0(!]`'T`8`'9?U>QV2<
-MJ%+E```````````A("((`````````7 at B``!X````!`$!``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``-JW?*3$JMUH0[RKV6NDYS)3\/(`=3DAD^(S3D(-KU
-M^MJK;$`)V)88QX:6#%R)6,^B'0/&/517Q6;-PUC^M8;71W';6YR;!9"X;HG'
-M>,`OK;V6\WA69YJT/Q,Q;+R?_*WV1V],X1 at 4R!=3D:&[I22GV?9,#>ZQ`ME$CK
-M/,1MH.$-,V]3*0``),53-]R4=3DAZ_R6)K;MV]?44\$USOU/L2>&>NBR&(AA,!
-M*0``'```0`3\TN4G891MH.&L!^TLK[;N'\)Q"0```!P``$`%%E^#$G]"$V0&
-M-:#E2WK>"!2`XBN`$K=3D&U1H)`)@!``"8`0```@```$4``91?.@``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7]7L=3DDG*A2Y0``````````(2`B"`````````%X(@``
-M>`````0!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``#:MWRDQ*K=3D:$.\
-MJ]EKI.<R4_#R`'89/B,TY"#:]?K:JVQ`"=3DB6&,>&E at Q<B5C/HAT#QCU45\5F
-MS<-8_K6&UT=3DQVUN<FP60N&Z)QWC`+ZV]EO-X5F>:M#\3,6R\G_RM]D=3DO3.$8
-M%, at 76ANZ4DI]GV3`WNL0+91(ZSS$;:#A#3-O4RD``"3%4S?<E'8>O\EB:V[=3D
-MO7U%/!-<[]3[$GAGKHLAB(83`2D``!P``$`$_-+E)V&4;:#AK`?M+*^V[A_"
-M<0D````<``!`!19?@Q)_0A-D!C6 at Y4MZW@@4 at .(K at 1*W1J4I!P"8`0``F`$`
-M``(```!%``&47ST``$`1``#`J`$!P*@!`@'T`?0!@`=3DE^('74]R8#/D`````
-M`````"$@(@@````````!>"(``'@````'`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``(PNH at ZI;N:, at AFUL"PQ!4(S[I#K:@!C#ZNG)XTP"@@0ROH+3
-M\#KO?D'(V?,H\;J_JRV$"O'`,(:-6+&KG;LED_.9Y9>:5OD%2?5I1\<@/'$5
-MJ50GPO_91H4VKN8/L.8%\+(!F'4O4*$05O5^[O^]>YR#/W;K^0Q)L:N;<UB=3D
-M,)4I```DL2`$V<LEO8&$;C)QT973L3T2!OCXF^^+H.YJL@/N][LI```<``!`
-M!.+F>(W8*IN:C1["=3D.IF%'7?^P.C````'```0`7]J^1[!,2#IQ9`30L[EYCS
-M!8C@[8$2MT964PH`F`$``)@!```"````10`!E%\_``!`$0``P*@!`<"H`0(!
-M]`'T`8`'9?B!UU/<F`SY```````````A("((`````````7 at B``!X````!P$!
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``",+J(.J6[FC((9M;`L,05",
-M^Z0ZVH`8P^KIR>-,`H($,KZ"T_`Z[WY!R-GS*/&ZOZLMA`KQP#"&C5BQJYV[
-M)9/SF>67FE;Y!4GU:4?'(#QQ%:E4)\+_V4:%-J[F#[#F!?"R`9AU+U"A$%;U
-M?N[_O7N<@S]VZ_D,2;&KFW-8G3"5*0``)+$@!-G+);V!A&XR<=3D&5T[$]$@;X
-M^)OOBZ#N:K(#[O>[*0``'```0`3BYGB-V"J;FHT>PG3J9A1UW_L#HP```!P`
-M`$`%_:OD>P3$@Z<60$T+.Y>8\P6(X.V"$K=3D&L%(!`)@!``"8`0```@```$4`
-M`91?0@``0!$``,"H`0'`J`$"`?0!]`&`!V7X@=3D=3D3W)@,^0``````````(2`B
-M"`````````%X(@``>`````<!`0`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M```C"ZB#JENYHR"&;6P+#$%0C/ND.MJ`&,/JZ<GC3`*"!#*^@M/P.N]^0<C9
-M\RCQNK^K+80*\<`PAHU8L:N=3DNR63\YGEEYI6^05)]6E'QR`\<16I5"?"_]E&
-MA3:NY@^PY at 7PL@&8=3D2]0H1!6]7[N_[U[G(,_=3DNOY#$FQJYMS6)TPE2D``"2Q
-M(`39RR6]@81N,G'1E=3D.Q/1(&^/B;[XN@[FJR`^[WNRD``!P``$`$XN9XC=3D at J
-MFYJ-'L)TZF84=3D=3D_[`Z,````<``!`!?VKY'L$Q(.G%D!-"SN7F/,%B.#M at A*W
-M1DJA#@"8`0``F`$```(```!%``&47V```$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M;?&G651YB*D``````````"$@(@@````````!>"(``'@````(`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``.!/DAF"*87?*X]BTN*4N8<XT^9BJ;V37
-M*$-L&+XI^A+>G*KN1>`$2N/4<96Q7/VPJ">&!;3&*A29+H/*_-"E(+EPN8N(
-M#>.O)#_BG2L;UO@<Y3:R7)I$C,3(W&EK&MKC*+%&"[V&YUQ?4\,R_!N_32$)
-M*3S<I2CPQH'LQ#8FA$(I```D1UJ3#8[J[X;TY&H\&7I\:Z&56MVKX\!WQ^]H
-M/P)=3DR/0I```<``!`!#V^-6K"(-$!4ZL)FWNT at 2R%<>HA````'```0`419R[^
-MZB2]"75/3I)\D`NS%#8=3DK(,2MT8*BP(`F`$``)@!```"````10`!E%]D``!`
-M$0``P*@!`<"H`0(!]`'T`8`'96WQIUE4>8BI```````````A("((````````
-M`7 at B``!X````"`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``#@3Y(9@
-MBF%WRN/8M+BE+F'.-/F8JF]DURA#;!B^*?H2WIRJ[D7@!$KCU'&5L5S]L*@G
-MA at 6TQBH4F2Z#ROS0I2"Y<+F+B`WCKR0_XITK&];X'.4VLER:1(S$R-QI:QK:
-MXRBQ1 at N]AN=3D<7U/#,OP;OTTA"2D\W*4H\,:![,0V)H1"*0``)$=3D:DPV.ZN^&
-M].1J/!EZ?&NAE5K=3DJ^/`=3D\?O:#\"7<CT*0``'```0`0]OC5JPB#1`5.K"9M[
-MM($LA7'J(0```!P``$`%$6<N_NHDO0EU3TZ2?)`+LQ0V':R#$K=3D&RLP(`)@!
-M``"8`0```@```$4``91?;```0!$``,"H`0'`J`$"`?0!]`&`!V5M\:=3D95'F(
-MJ0``````````(2`B"`````````%X(@``>`````@!`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"```X$^2&8(IA=3D\KCV+2XI2YASC3YF*IO9-<H0VP8OBGZ
-M$MZ<JNY%X`1*X]1QE;%<_;"H)X8%M,8J%)DN@\K\T*4 at N7"YBX at -XZ\D/^*=3D
-M*QO6^!SE-K)<FD2,Q,C<:6L:VN,HL48+O8;G7%]3PS+\&[]-(0DI/-RE*/#&
-M@>S$-B:$0BD``"1'6I,-CNKOAO3D:CP9>GQKH95:W:OCP'?'[V at _`EW(]"D`
-M`!P``$`$/;XU:L(@T0%3JPF;>[2!+(5QZB$````<``!`!1%G+O[J)+T)=3D4].
-MDGR0"[,4-AVLA!*W1F_9!@"8`0``F`$```(```!%``&47XD``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEI&1L_!HMDHP``````````"$@(@@````````!>"(``'@`
-M```)`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``W/N%=3D/%B.KC3>H2"
-M+D at 3E'`&!0Y=3D"W+"NM=3D2>/N64!O[>/<I"*OV`]W@?0^$#I3C8Y"-SM>.+`@:
-MP<\AUFZ at I(^[9Y-QQ1N^$C\C0I>'H?OP.YK_V8&%HKDNCYN#6&^J5IJ++C[)
-M+"YR@"B>I?:W&/-WXTLU6FG";6WM54D0OI`I```D]S]O[J/H=3DD at 3CPJ5`>_.
-M@^A0NZ3%>@`J)'Q3`5NK'#4I```<``!`!/ZB6;=3D09O=3DVXED"7B1(1`R#SH%-
-M````'```0`5;K&^`5SG^2 at YB1TYWN%=3D&(T[,E(02MT95!0H`F`$``)@!```"
-M````10`!E%^=3D``!`$0``P*@!`<"H`0(!]`'T`8`'9:1D;/P:+9*,````````
-M```A("((`````````7 at B``!X````"0$!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``-S[A73Q8CJXTWJ$@BY([email protected][EE`;^WCW*0BK
-M]@/=3DX'T/A`Z4XV.0C<[7CBP(&L'/(=3D9NH*2/NV>3<<4;OA(_(T*7AZ'[\#N:
-M_]F!A:*Y+H^;@UAOJE::BRX^R2PN<H`HGJ7VMQCS=3D^-+-5IIPFUM[55)$+Z0
-M*0``)/<_;^ZCZ'9($X\*E0'OSH/H4+NDQ7H`*B1\4P%;JQPU*0``'```0`3^
-MHEFW4&;W=3DN)9`EXD2$0,@\Z!30```!P``$`%6ZQO@%<Y_DH.8D=3D.=3D[A71B-.
-MS)2%$K=3D&?P0!`)@!``"8`0```@```$4``91?K0``0!$``,"H`0'`J`$"`?0!
-M]`&`!V6D9&S\&BV2C```````````(2`B"`````````%X(@``>`````D!`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``#<^X5T\6(ZN--ZA((N2!.4<`8%
-M#ET+<L*ZUU)X^Y90&_MX]RD(J_8#W>!]#X0.E.-CD(W.UXXL"!K!SR'6;J"D
-MC[MGDW'%&[X2/R-"EX>A^_`[FO_9 at 86BN2Z/FX-8;ZI6FHLN/LDL+G*`*)ZE
-M]K<8\W?C2S5::<)M;>U521"^D"D``"3W/V_NH^AV2!./"I4![\Z#Z%"[I,5Z
-M`"HD?%,!6ZL<-2D``!P``$`$_J)9MU!F]W;B60)>)$A$#(/. at 4T````<``!`
-M!5NL;X!7.?Y*#F)'3G>X5T8C3LR4A1*W1NYD#@"8`0``F`$```(```!%``&4
-M7\4``$`1``#`J`$!P*@!`@'T`?0!@`=3DEJX+#7N*AX:H``````````"$@(@@`
-M```````!>"(``'@```!K`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M.9*6E`/C;-ICY]T2:\J>_49=3DFN84E'J_`37]%O!;]AH- at V\?*S=3DO>W22/"W^
-M2ZCQR.F]'<:O"&47=3D,[DJ&E<78-1%]"\[AQOD;T2\KA^*Y1C#/U\.H0F>K;]
-M4Y8/:X_OGI+>W9[<9M8WL3=3D0LO=3D!WF#^!\<_2MWT6):W8L^A_D<I```DP+M3
-M:D/$ZI%?1`=3D>GI+:S1/MM%XYDR%F*F7A5X4G<=3D0I```<``!`!/OZ785(*BR[
-MN#1FTGOZS,#$QB))````'```0`6_>5MLQH$;][0X6Z:;><_?@;*+4882MT;&
-M/`(`F`$``)@!```"````10`!E%_(``!`$0``P*@!`<"H`0(!]`'T`8`'9:N"
-MPU[BH>&J```````````A("((`````````7 at B``!X````:P$!``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``#F2EI0#XVS:8^?=3D$FO*GOU&79KF%)1ZOP$U
-M_1;P6_8:#8-O'RLW;WMTDCPM_DNH\<CIO1W&KPAE%W3.Y*AI7%V#41?0O.X<
-M;Y&]$O*X?BN48PS]?#J$)GJV_5.6#VN/[YZ2WMV>W&;6-[$W4++W0=3DY at _@?'
-M/TK=3D]%B6MV+/H?Y'*0``),"[4VI#Q.J17T0'7IZ2VLT3[;1>.9,A9BIEX5>%
-M)W'4*0``'```0`3[^EV%2"HLN[@T9M)[^LS`Q,8B20```!P``$`%OWE;;,:!
-M&_>T.%NFFWG/WX&RBU&&$K=3D&?7X(`)@!``"8`0```@```$4``91?R0``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V6K at L->XJ'AJ@``````````(2`B"`````````%X
-M(@``>````&L!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"```YDI:4`^-L
-MVF/GW1)KRI[]1EV:YA24>K\!-?T6\%OV&@V#;Q\K-V][=3D)(\+?Y+J/'(Z;T=3D
-MQJ\(91=3DTSN2H:5Q=3D at U$7T+SN'&^1O1+RN'XKE&,,_7PZA"9ZMOU3E@]KC^^>
-MDM[=3DGMQFUC>Q-U"R]T'>8/X'QS]*W?18EK=3DBSZ'^1RD``"3`NU-J0\3JD5]$
-M!UZ>DMK-$^VT7CF3(68J9>%7A2=3DQU"D``!P``$`$^_I=3DA4 at J++NX-&;2>_K,
-MP,3&(DD````<``!`!;]Y6VS&@1OWM#A;IIMYS]^!LHM1AQ*W1D:+!@"8`0``
-MF`$```(```!%``&47\H``$`1``#`J`$!P*@!`@'T`?0!@`=3DE57>?7Q:1*JX`
-M`````````"$@(@@````````!>"(``'@```!L`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``8+0'"K`G8))LR,Z2SVO>_1B6ZX04<[:]P*TU(FO=3DKG,3
-MV66-A_:[P8GF_`+3JL._.?<'&=3DRP!5'@`;9`/*['G+97L at 4E;\V-`X^DED'P
-MZ>L38!'S9,5&I-?M&Y90E1:-]'S'<+MTJ9.3ONRV"7*M7_CYB<$[@-/RUDHA
-MBANOSG4I```D=3D$1,2H9`&651$ENQ;X[TYZA1,<6`AR0*X:*H31KTS5 at I```<
-M``!`!%/R?@(%Q\-J(#U<0S'+ZIT%^:OM````'```0`7Q;=3DX]BO^3_P4LEP^M
-M;N%>X@*19(<2MT;GM at D`F`$``)@!```"````10`!E%_+``!`$0``P*@!`<"H
-M`0(!]`'T`8`'955WGU\6D2JN```````````A("((`````````7 at B``!X````
-M;`$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``&"T!PJP)V"2;,C.DL]K
-MWOT8ENN$%'.VO<"M-2)KW:YS$]EEC8?VN\&)YOP"TZK#OSGW!QG<L`51X`&V
-M0#RNQYRV5[(%)6_-C0./I)9!\.GK$V`1\V3%1J37[1N64)46C?1\QW"[=3D*F3
-MD[[LM at ERK5_X^8G!.X#3\M9*(8H;K\YU*0``)'1$3$J&0!EE41);L6^.].>H
-M43'%@(<D"N&BJ$T:],U8*0``'```0`13\GX"!<?#:B`]7$,QR^J=3D!?FK[0``
-M`!P``$`%\6W>/8K_D_\%+)</K6[A7N("D62($K=3D&7+8``)@!``"8`0```@``
-M`$4``91?S```0!$``,"H`0'`J`$"`?0!]`&`!V55=3DY]?%I$JK@``````````
-M(2`B"`````````%X(@``>````&P!`0`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``!@M`<*L"=3D at DFS(SI+/:][]&);KA!1SMKW`K34B:]VN<Q/998V']KO!
-MB>;\`M.JP[\Y]P<9W+`%4>`!MD`\KL><ME>R!25OS8T#CZ260?#IZQ-@$?-D
-MQ4:DU^T;EE"5%HWT?,=3DPNW2IDY.^[+8)<JU?^/F)P3N`T_+62B&*&Z_.=3D2D`
-M`"1T1$Q*AD`995$26[%OCO3GJ%$QQ8"')`KAHJA-&O3-6"D``!P``$`$4_)^
-M`@7'PVH@/5Q#,<OJG07YJ^T````<``!`!?%MWCV*_Y/_!2R7#ZUNX5[B`I%D
-MB!*W1I$"#@"8`0``F`$```(```!%``&47\T``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE)GOY,;Y8,/(``````````"$@(@@````````!>"(``'@```!M`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``'[/H^_&)33-3F9#.]8JU_,`I3KFJ
-M`T30NTQVUSD>V28'=3DZ<Q%JK at TF/,;%*%LX3RML(Y>BB)4`;9M3ORF82P7[)@
-MFXY)C(+/E'%3SGG;]0*B0J-2-#^_G(]9^9]4WN4TE.&\0D;76:<13D^::ESF
-MZ-O]S-JH5I8\>;8U12`7U?(I```DUZ at 9VT"/CV.P'++C&1G8:4?*T9V_6H[G
-M(1>%`;=3D)4.<I```<``!`!"D0%YR*B=3DLGQ^8LR_U0.VGO@?6P````'```0`4#
-M:4Y:5>(66'%`A\=3D,?A.+?[C"ZXD2MT:8[@$`F`$``)@!```"````10`!E%_.
-M``!`$0``P*@!`<"H`0(!]`'T`8`'929[^3&^6##R```````````A("((````
-M`````7 at B``!X````;0$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``!^S
-MZ/OQB4TS4YF0SO6*M?S`*4ZYJ at -$T+M,=3DM<Y'MDF!W>G,1:JX-)CS&Q2A;.$
-M\K;".7HHB5`&V;4[\IF$L%^R8)N.28R"SY1Q4\YYV_4"HD*C4C0_OYR/6?F?
-M5-[E-)3AO$)&UUFG$4Y/FFI<YNC;_<S:J%:6/'FV-44@%]7R*0``)->H&=3DM`
-MCX]CL!RRXQD9V&E'RM&=3DOUJ.YR$7A0&W25#G*0``'```0`0I$!><BHG;)\?F
-M+,O]4#MI[X'UL````!P``$`%`VE.6E7B%EAQ0(?'3'X3BW^XPNN)$K=3D&.#`(
-M`)@!``"8`0```@```$4``91?SP``0!$``,"H`0'`J`$"`?0!]`&`!V4F>_DQ
-MOE at P\@``````````(2`B"`````````%X(@``>````&T!`0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"```?L^C[\8E-,U.9D,[UBK7\P"E.N:H#1-"[3';7
-M.1[9)@=3DWIS$6JN#28\QL4H6SA/*VPCEZ*(E0!MFU._*9A+!?LF";CDF, at L^4
-M<5/.>=3DOU`J)"HU(T/[^<CUGYGU3>Y324X;Q"1M=3D9IQ%.3YIJ7.;HV_W,VJA6
-MECQYMC5%(!?5\BD``"37J!G;0(^/8[`<LN,9&=3DAI1\K1G;]:CN<A%X4!MTE0
-MYRD``!P``$`$*1`7G(J)VR?'YBS+_5`[:>^!];`````<``!`!0-I3EI5XA98
-M<4"'QTQ^$XM_N,+KBA*W1N`Z!@"8`0``F`$```(```!%``&47]```$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DEN at Z"R8:E;I@``````````"$@(@@````````!>"(`
-M`'@```!P`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``<,TPM_$]-T63
-MA$C*[N\R%=3D[2Y^A=3D?S7H=3D\^2[#YRRT4!Q<$8+,./$KV<DSL at AALH9&+'=3DAZ/
-M`X7RU)(@Y7N4IB>//IZ'2YT#(5)1--_)K]O&IA;H,FO*5K!+`'6O_\!&+^51
-M45V!B&+"`5S$&QVF8I(<F8KH[>#OL/SV`M5KN6<I```DR1_9ODP\*Z2_.V7$
-M[IB-M;Z]Q1!.!*$\!N?T&ZYY!B(I```<``!`!`OO02:Y,UJKMM*%+2].VY8$
-MXA*9````'```0`76)`S>G_XO9!:Q!QSZ?T,$VZ&UC(H2MT;':`D`F`$``)@!
-M```"````10`!E&`[``!`$0``P*@!`<"H`0(!]`'T`8`'9;H. at LF&I6Z8````
-M```````A("((`````````7 at B``!X````<`$!``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``'#-,+?Q/3=3D%DX1(RN[O,A7>TN?H77\UZ'?/DNP^<LM%`<7!
-M&"S#CQ*]G),[((8;*&1BQW8>CP.%\M22(.5[E*8GCSZ>ATN=3D`R%2433?R:_;
-MQJ86Z#)KRE:P2P!UK__`1B_E45%=3D at 8ABP@%<Q!L=3DIF*2')F*Z.W@[[#\]@+5
-M:[EG*0``),D?V;Y,/"NDOSMEQ.Z8C;6^O<403 at 2A/`;G]!NN>08B*0``'```
-M0`0+[T$FN3-:J[;2A2TO3MN6!.(2F0```!P``$`%UB0,WI_^+V06L0<<^G]#
-M!-NAM8R+$K=3D&"F@``)@!``"8`0```@```$4``91 at 0```0!$``,"H`0'`J`$"
-M`?0!]`&`!V6Z#H+)AJ5NF```````````(2`B"`````````%X(@``>````'`!
-M`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``!PS3"W\3TW19.$2,KN[S(5
-MWM+GZ%U_->AWSY+L/G++10'%P1 at LPX\2O9R3.R"&&RAD8L=3DV'H\#A?+4DB#E
-M>Y2F)X\^GH=3D+G0,A4E$TW\FOV\:F%N at R:\I6L$L`=3D:__P$8OY5%178&(8L(!
-M7,0;':9BDAR9BNCMX.^P_/8"U6NY9RD``"3)']F^3#PKI+\[9<3NF(VUOKW%
-M$$X$H3P&Y_0;KGD&(BD``!P``$`$"^]!)KDS6JNVTH4M+T[;E at 3B$ID````<
-M``!`!=3D8D#-Z?_B]D%K$''/I_0P3;H;6,BQ*W1NO3#0"8`0``F`$```(```!%
-M``&484<``$`1``#`J`$!P*@!`@'T`?0!@`=3DEPE2U(M\35F4``````````"$@
-M(@@````````!>"(``'@```!Q`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@```?&WO);=3D;T*4:M<0:1!<S#:2_;6\EKV9_0T\ZOR at TB:I9IQ\BQ9NFKK$
-MR!"^/(O?^6A[Q![^M;'M)OV0@"^$^\FB&-(]N]_OH=3D6%_4=3DSI$%W*:\_POY&
-M25['8)-&4&@A^TLLS(MEE]S:6*A1"EGF[TC:O+:U0O-_H:HR74'!';HI```D
-M/CW<PT;U2LW^O-U<:>L,1,#05]5RY=3D!CK&,69U=3D3AN\I```<``!`!-]*$TR'
-M at 3J[:(%(!+)[=3D_^)ZG?H````'```0`4X:<[Y:#S25Q=3DJ&VJ[%)7HVB?N9HP2
-MMT:IQP$`F`$``)@!```"````10`!E&'W``!`$0``P*@!`<"H`0(!]`'T`8`'
-M9<)4M2+?$U9E```````````A("((`````````7 at B``!X````<0$!``P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(```'QM[R6W6]"E&K7$&D07,PVDOVUO):]
-MF?T-/.K\H-(FJ6:<?(L6;IJZQ, at 0OCR+W_EH>\0>_K6Q[2;]D(`OA/O)HAC2
-M/;O?[Z'5A?U'<Z1!=3DRFO/\+^1DE>QV"31E!H(?M++,R+99?<VEBH40I9YN](
-MVKRVM4+S?Z&J,EU!P1VZ*0``)#X]W,-&]4K-_KS=3D7&GK#$3`T%?5<N708ZQC
-M%F=3D74X;O*0``'```0`3?2A-,AX$ZNVB!2`2R>W?_B>IWZ````!P``$`%.&G.
-M^6@\TE<7:AMJNQ25Z-HG[F:,$K=3D&+`D(`)@!``"8`0```@```$4``91B>0``
-M0!$``,"H`0'`J`$"`?0!]`&`!V7"5+4BWQ-690``````````(2`B"```````
-M``%X(@``>````'$!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"```!\;>\
-MEMUO0I1JUQ!I$%S,-I+]M;R6O9G]#3SJ_*#2)JEFG'R+%FZ:NL3($+X\B]_Y
-M:'O$'OZUL>TF_9"`+X3[R:(8TCV[W^^AU87]1W.D07<IKS_"_D9)7L=3D at DT90
-M:"'[2RS,BV67W-I8J%$*6>;O2-J\MK5"\W^AJC)=3D0<$=3DNBD``"0^/=3DS#1O5*
-MS?Z\W5QIZPQ$P-!7U7+ET&.L8Q9G5U.&[RD``!P``$`$WTH33(>!.KMH at 4@$
-MLGMW_XGJ=3D^@````<``!`!3AISOEH/-)7%VH;:KL4E>C:)^YFC1*W1I`;!@"8
-M`0``F`$```(```!%``&48PH``$`1``#`J`$!P*@!`@'T`?0!@`=3DE);I>R;%1
-MJS@``````````"$@(@@````````!>"(``'@```!R`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``S7FNHB]X@=3D1>L[&%1PR9SGQ;A0<KL<TA<WVJ*I\E
-MO(W))3]DM%ELE\?Z+NZ7Q-!0!L1%R""K%/@2T:+ at D>)YC7'K.=3DAIZWAR"RN1
-MWF/HZ)E"^,R+.E%1WG<RX\!2K7,=3DU":<&L>1!BOY(%'5),@)<ZG&7'5\(@&]
-M!X6Q?=3D)@M+<I```D_&]_+7P/I&[AD99\DW%/M<':G9,<2G`ON;`#A at D(ZT0I
-M```<``!`!&$P*'J#87-/-0Q!BVU_3Y1;BINH````'```0`7 at UZ,/ZZLJ&=3D8B
-M/:!;J>CL,%Q5K8T2MT:\00D`F`$``)@!```"````10`!E&,8``!`$0``P*@!
-M`<"H`0(!]`'T`8`'926Z7LFQ4:LX```````````A("((`````````7 at B``!X
-M````<@$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``,UYKJ(O>('47K.Q
-MA4<,F<Y\6X4'*['-(7-]JBJ?);R-R24_9+19;)?'^B[NE\304`;$1<@@JQ3X
-M$M&BX)'B>8UQZSG8:>MX<@LKD=3DYCZ.B90OC,BSI14=3DYW,N/`4JUS'=3D0FG!K'
-MD08K^2!1U23("7.IQEQU?"(!O0>%L7W28+2W*0``)/QO?RU\#Z1NX9&6?)-Q
-M3[7!VIV3'$IP+[FP`X8)".M$*0``'```0`1A,"AZ at V%S3S4,08MM?T^46XJ;
-MJ````!P``$`%X->C#^NK*AG6(CV at 6ZGH[#!<5:V.$K=3D&[4```)@!``"8`0``
-M`@```$4``91C,```0!$``,"H`0'`J`$"`?0!]`&`!V4ENE[)L5&K.```````
-M````(2`B"`````````%X(@``>````'(!`0`,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``#->:ZB+WB!U%ZSL85'#)G.?%N%!RNQS2%S?:HJGR6\C<DE/V2T
-M66R7Q_HN[I?$T%`&Q$7((*L4^!+1HN"1XGF-<>LYV&GK>'(+*Y'>8^CHF4+X
-MS(LZ45'>=3DS+CP%*M<QW4)IP:QY$&*_D at 4=3D4DR`ESJ<9<=3D7PB`;T'A;%]TF"T
-MMRD``"3\;W\M?`^D;N&1EGR3<4^UP=3DJ=3DDQQ*<"^YL`.&"0CK1"D``!P``$`$
-M83`H>H-A<T\U#$&+;7]/E%N*FZ@````<``!`!>#7HP_KJRH9UB(]H%NIZ.PP
-M7%6MCA*W1L^,#0"8`0``F`$```(```!%``&48V4``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE"F9524Z"DP(``````````"$@(@@````````!>"(``'@```!S`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``68T>G8<R!B%Q&T."=3DB79OAI<
-MSY#UB6X&",A'F- at VC%8HW))V',>TG at Q2]W2=3D36MZN-UI(XL_VO.B@^R7T^#J
-MFH>C`R at +EX@)E1U0MSI58-;)GX6%U(3 at .523<S*M at 5V0X$^[/6$W\%]?&)SU
-M^)PX$4FF)@;-'[::.0NZ%GF,F`0I```D&0-*N.Z7OR8`AF5."^"*=3DYX`WW&:
-MP]LRQAE.O?&Z,RPI```<``!`!*\9LX\,H[#02ER at Q*79'S`+I%H!````'```
-M0`7F3_X7:'"WK5V*MOD"NLH+@"OM"(\2MT98>0$`F`$``)@!```"````10`!
-ME&-N``!`$0``P*@!`<"H`0(!]`'T`8`'90IF54E. at I,"```````````A("((
-M`````````7 at B``!X````<P$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`%F-'IV', at 8A<1M#@G8EV;X:7,^0]8EN!@C(1YC8-HQ6*-R2=3DAS'M)X,4O=3DT
-MG4UK>KC=3D:2.+/]KSHH/LE]/@ZIJ'HP,H"Y>("94=3D4+<Z56#6R9^%A=3D2$X#E4
-MDW,RK8%=3DD.!/NSUA-_!?7QB<]?B<.!%)IB8&S1^VFCD+NA9YC)@$*0``)!D#
-M2KCNE[\F`(9E3 at O@BG>>`-]QFL/;,L893KWQNC,L*0``'```0`2O&;./#*.P
-MT$I<H,2EV1\P"Z1:`0```!P``$`%YD_^%VAPMZU=3DBK;Y`KK*"X`K[0B/$K=3D&
-M[[H'`)@!``"8`0```@```$4``91CBP``0!$``,"H`0'`J`$"`?0!]`&`!V4*
-M9E5)3H*3`@``````````(2`B"`````````%X(@``>````',!`0`,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``!9C1Z=3DAS(&(7$;0X)V)=3DF^&ES/D/6);@8(
-MR$>8V#:,5BC<DG8<Q[2>#%+W=3D)U-:WJXW6DCBS_:\Z*#[)?3X.J:AZ,#*`N7
-MB`F5'5"W.E5 at ULF?A874A.`Y5)-S,JV!79#@3[L]83?P7U\8G/7XG#@12:8F
-M!LT?MIHY"[H6>8R8!"D``"09`TJX[I>_)@"&94X+X(IWG@#?<9K#VS+&&4Z]
-M\;HS+"D``!P``$`$KQFSCPRCL-!*7*#$I=3DD?,`ND6@$````<``!`!>9/_A=3DH
-M<+>M78JV^0*ZR at N`*^T(D!*W1LO&!0"8`0``F`$```(```!%``&48[D``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE_YN-E>Y_]Y4``````````"$@(@@````````!
-M>"(``'@```!U`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``?8LXYB=3DV
-MDAOW;G7$D9!TWYO>Q9JOF[AS:$SU-TOU^[4V%_N1=3DOA?*7D**RC4V"HY/WO1
-M:Z[8RYP!T.KL2VFNYP?V.'WW.S\TA"%:7=3D3Z_ at 0F-<4PNUQT<H1X9:T[R!KD
-M^60<3NI?^RWCBS>NG%P-*L^@,[^.6Q3H(75%4QBM8$(I```D$5:OI@`IF/=3D9
-M)MD!/@0 at G.M?WUSU%S_2P)>]2JT21]DI```<``!`!/+.U;1)XJJ!)812K at -2
-MANC"G*E#````'```0`6&L>N[YR7>S#-LD/\Y+0I&?,^[U9`2MT9R\P@`F`$`
-M`)@!```"````10`!E&._``!`$0``P*@!`<"H`0(!]`'T`8`'9?^;C97N?_>5
-M```````````A("((`````````7 at B``!X````=3D0$!``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``'V+..8G=3DI(;]VYUQ)&0=3D-^;WL6:KYNX<VA,]3=3D+]?NU
-M-A?[D7;X7REY"BLHU- at J.3][T6NNV,N<`=3D#J[$MIKN<']CA]]SL_-(0A6EW4
-M^OX$)C7%,+M<=3D'*$>&6M.\@:Y/ED'$[J7_LMXXLWKIQ<#2K/H#._CEL4Z"%U
-M15,8K6!"*0``)!%6KZ8`*9CW62;9`3X$()SK7]]<]1<_TL"7O4JM$D?9*0``
-M'```0`3RSM6T2>*J at 26$4JX#4H;HPIRI0P```!P``$`%AK'KN^<EWLPS;)#_
-M.2T*1GS/N]60$K=3D&N34/`)@!``"8`0```@```$4``91CR```0!$``,"H`0'`
-MJ`$"`?0!]`&`!V7_FXV5[G_WE0``````````(2`B"`````````%X(@``>```
-M`'4!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``!]BSCF)W:2&_=3DN=3D<21
-MD'3?F][%FJ^;N'-H3/4W2_7[M387^Y%V^%\I>0HK*-38*CD_>]%KKMC+G`'0
-MZNQ+::[G!_8X??<[/S2$(5I=3DU/K^!"8UQ3"[7'1RA'AEK3O(&N3Y9!Q.ZE_[
-M+>.+-ZZ<7`TJSZ`SOXY;%. at A=3D453&*U at 0BD``"015J^F`"F8]UDFV0$^!""<
-MZU_?7/47/]+`E[U*K1)'V2D``!P``$`$\L[5M$GBJH$EA%*N`U*&Z,*<J4,`
-M```<``!`!8:QZ[OG)=3D[,,VR0_SDM"D9\S[O5D1*W1OA"#0"8`0``F`$```(`
-M``!%``&48]D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE<MP[L4RM)40`````````
-M`"$@(@@````````!>"(``'@```!V`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``P6KF5)&@]V.8\RT1_(E;\#N at -^*!J\(H">_,R@!$\\G];1%Q;`*_
-MY at 8K1R\/Q6+IQF2R2&7_ZK69AFS\OQGZS8WL^2?N%)2S_R=3D.7\<%0/#C7-ZR
-MO8"O8&46M^236*JW:'TO`J9I=3D',+XF\.""YN>%^484P08 at 2`NA>MRVH:FV`I
-M```D1*HLR[FW-$$I&?@9U!1TG*4:/\'H at 227U.V=3D at -(Y_K4I```<``!`!/2L
-MP at S>,A?F;]CJ9W_3,L=3D<%6LJ````'```0`7&S5<M?]0J8];CSJC12YV$22P0
-MO)(2MT8)*P$`F`$``)@!```"````10`!E&/:``!`$0``P*@!`<"H`0(!]`'T
-M`8`'97+<.[%,K25$```````````A("((`````````7 at B``!X````=3D@$!``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``,%JYE21H/=3DCF/,M$?R)6_`[H#?B
-M@:O"*`GOS,H`1//)_6T1<6P"O^8&*T<O#\5BZ<9DLDAE_^JUF89L_+\9^LV-
-M[/DG[A24L_\G3E_'!4#PXUS>LKV`KV!E%K?DDUBJMVA]+P*F:71S"^)O#@@N
-M;GA?E&%,$&($@+H7K<MJ&IM@*0``)$2J+,NYMS1!*1GX&=3D04=3D)RE&C_!Z($D
-ME]3MG8#2.?ZU*0``'```0`3TK,(,WC(7YF_8ZF=3D_TS+'7!5K*@```!P``$`%
-MQLU7+7_4*F/6X\ZHT4N=3DA$DL$+R2$K=3D&RVP'`)@!``"8`0```@```$4``91C
-MX@``0!$``,"H`0'`J`$"`?0!]`&`!V5RW#NQ3*TE1```````````(2`B"```
-M``````%X(@``>````'8!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#!
-M:N94D:#W8YCS+1'\B5OP.Z`WXH&KPB@)[\S*`$3SR?UM$7%L`K_F!BM'+P_%
-M8NG&9+)(9?_JM9F&;/R_&?K-C>SY)^X4E+/_)TY?QP5`\.-<WK*]@*]@91:W
-MY)-8JK=3DH?2\"IFET<POB;PX(+FYX7Y1A3!!B!("Z%ZW+:AJ;8"D``"1$JBS+
-MN;<T02D9^!G4%'2<I1H_P>B!))?4[9V`TCG^M2D``!P``$`$]*S"#-XR%^9O
-MV.IG?],RQUP5:RH````<``!`!<;-5RU_U"ICUN/.J-%+G81)+!"\DQ*W1EJ#
-M!0"8`0``F`$```(```!%``&48_@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE(;LC
-M at P:H_AD``````````"$@(@@````````!>"(``'@```!W`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``EDNP\W9FS[:H:CQ*P93?"-!F:.9XC=3D@@0:ZS
-M+HDI"?Y>+HSNQW0EA7'7'];27`#OI!]V7WMP!$76=3DS.,)&?4P![W5#;@X&0;
-MHRQ\E_X]MN*H=3DS$&IVF5?]@+:M?G%);T2URVUIL0QV?AXFR##(PU"X*21JW\
-M"WX\1.>G]>=3DM/-XI```DA;4HG4R"L74#8UV=3DP8!_/GPF*EV`CGPK3C73Z,N@
-M<J,I```<``!`!#XCQY0VQY3'QG@>`5,4:TO41^=3D4````'```0`4UL4]#Y-#0
-MT+5OBQD62_[=3D&_)>&Y,2MT8$I0@`F`$``)@!```"````10`!E&/Z``!`$0``
-MP*@!`<"H`0(!]`'T`8`'92&[(X,&J/X9```````````A("((`````````7 at B
-M``!X````=3DP$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``)9+L/-V9L^V
-MJ&H\2L&4WPC09FCF>(W8($&NLRZ)*0G^7BZ,[L=3DT)85QUQ_6TEP`[Z0?=3DE][
-M<`1%UG<SC"1GU,`>]U0VX.!D&Z,L?)?^/;;BJ'<Q!J=3DIE7_8"VK7YQ26]$M<
-MMM:;$,=3DGX>)L at PR,-0N"DD:M_`M^/$3GI_7G;3S>*0``)(6U*)U, at K%U`V-=3D
-MG<&`?SY\)BI=3D@(Y\*TXUT^C+H'*C*0``'```0`0^(\>4-L>4Q\9X'@%3%&M+
-MU$?G5````!P``$`%-;%/0^30T-"U;XL9%DO^W1OR7AN3$K=3D&EN8.`)@!``"8
-M`0```@```$4``91C^P``0!$``,"H`0'`J`$"`?0!]`&`!V4ANR.#!JC^&0``
-M````````(2`B"`````````%X(@``>````'<!`0`,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``"62[#S=3DF;/MJAJ/$K!E-\(T&9HYGB-V"!!KK,NB2D)_EXN
-MC.['=3D"6%<=3D<?UM)<`.^D'W9?>W`$1=3D9W,XPD9]3`'O=3D4-N#@9!NC+'R7_CVV
-MXJAW,0:G:95_V`MJU^<4EO1+7+;6FQ#'9^'B;(,,C#4+ at I)&K?P+?CQ$YZ?U
-MYVT\WBD``"2%M2B=3D3(*Q=3D0-C79W!@'\^?"8J78".?"M.-=3D/HRZ!RHRD``!P`
-M`$`$/B/'E#;'E,?&>!X!4Q1K2]1'YU0````<``!`!36Q3T/DT-#0M6^+&19+
-M_MT;\EX;E!*W1K+R#`"8`0``F`$```(```!%``&48_X``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE^:"D$FFP<O(``````````"$@(@@````````!>"(``'@```!X
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``&:;EH!0N')FU;T:/ONMH
-M))E2V7P%W9]+H5_(J316(A#+1WMR)HLT0QWMQK<Y(B\SNXT\%._M6`SM]/HX
-MYFX&S85AR!S*WD33G:Q5DH&=3DV=3D],P&4B5C89ZLRH9K?U+()EDPL<GWON)LN!
-M?5%V8W3LN'L(7,%A&V+AI]@QJ4T8=3DLPI```D6O$;'GL3^<\]8JDJ*FICJ9>F
-M-YZ1Q,$!$4J`_M\V(L$I```<``!`!)<4-V50S#.IV*!FP7V&3I*P0,;2````
-M'```0`64C<YIG'P;;SN`>[%^/+_06\IV5942MT;2W```F`$``)@!```"````
-M10`!E&/_``!`$0``P*@!`<"H`0(!]`'T`8`'9?F at I!)IL'+R```````````A
-M("((`````````7 at B``!X````>`$!``P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``!FFY:`4+AR9M6]&C[[K:"294ME\!=3DV?2Z%?R*DT5B(0RT=3D[<B:+-$,=3D
-M[<:W.2(O,[N-/!3O[5@,[?3Z..9N!LV%8<@<RMY$TYVL59*!G=3DG?3,!E(E8V
-M&>K,J&:W]2R"99,+')][[B;+ at 7U1=3DF-T[+A["%S!81MBX:?8,:E-&';,*0``
-M)%KQ&QY[$_G//6*I*BIJ8ZF7IC>>D<3!`1%*@/[?-B+!*0``'```0`27%#=3DE
-M4,PSJ=3DB at 9L%]ADZ2L$#&T@```!P``$`%E(W.:9Q\&V\[@'NQ?CR_T%O*=3DE65
-M$K=3D&<Q\'`)@!``"8`0```@```$4``91D````0!$``,"H`0'`J`$"`?0!]`&`
-M!V7YH*02:;!R\@``````````(2`B"`````````%X(@``>````'@!`0`,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"```9IN6@%"X<F;5O1H^^ZV at DF5+9?`7=3D
-MGTNA7\BI-%8B$,M'>W(FBS1#'>W&MSDB+S.[C3P4[^U8#.WT^CCF;@;-A6'(
-M',K>1-.=3DK%62 at 9W9WTS`92)6-AGJS*AFM_4L at F63"QR?>^XFRX%]479C=3D.RX
-M>PA<P6$;8N&GV#&I31AVS"D``"1:\1L>>Q/YSSUBJ2HJ:F.IEZ8WGI'$P0$1
-M2H#^WS8BP2D``!P``$`$EQ0W95#,,ZG8H&;!?89.DK!`QM(````<``!`!92-
-MSFF<?!MO.X![L7X\O]!;RG95EA*W1BXK!0"8`0``F`$```(```!%``&49`H`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE8"OUP1F[/_@``````````"$@(@@`````
-M```!>"(``'@```![`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``L8OJ
-MRL)M7):8:*OB4V(B&IYDE%#QQ;)VKR"O1I:C;!H\T1^KV6*IQ&0N*%2W]2C1
-MIN4'#+M4%S-&'N!4*O=3DG1T`QNS^HUG"#EI[3GKRRRY#E-6Q#HN0I54?(W^1A
-M05U[(3HJ][2\GM6OBGG(Z!]A9)((&!Z?AP!\M&&$XD?`X\HI```DI,:>$U80
-MX/$:F%RTDR.Z59XE)"`;?LZ[)5]45AA0J'(I```<``!`!*UY8 at M-WS>GT283
-M$WR=3D#"9`TZWE````'```0`47O/N2'T+$#7^>%Q("5 at K\!Q^66)82MT;25@@`
-MF`$``)@!```"````10`!E&0.``!`$0``P*@!`<"H`0(!]`'T`8`'96`K]<$9
-MNS_X```````````A("((`````````7 at B``!X````>P$!``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``+&+ZLK";5R6F&BKXE-B(AJ>9)10\<6R=3DJ\@KT:6
-MHVP:/-$?J]EBJ<1D+BA4M_4HT:;E!PR[5!<S1A[@5"KW9T=3D`,;L_J-9P at Y:>
-MTYZ\LLN0Y35L0Z+D*55'R-_D84%=3D>R$Z*O>TO)[5KXIYR.@?8622"!@>GX<`
-M?+1AA.)'P./**0``)*3&GA-6$.#Q&IA<M),CNE6>)20@&W[.NR5?5%884*AR
-M*0``'```0`2M>6(+3=3D\WI]$F$Q-\G0PF0-.MY0```!P``$`%%[S[DA]"Q`U_
-MGA<2`E8*_`<?EEB6$K=3D&89 at .`)@!``"8`0```@```$4``91D'P``0!$``,"H
-M`0'`J`$"`?0!]`&`!V5@*_7!&;L_^```````````(2`B"`````````%X(@``
-M>````'L!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``"QB^K*PFU<EIAH
-MJ^)38B(:GF244/'%LG:O(*]&EJ-L&CS1'ZO98JG$9"XH5+?U*-&FY0<,NU07
-M,T8>X%0J]V=3D'0#&[/ZC6<(.6GM.>O+++D.4U;$.BY"E51\C?Y&%!77LA.BKW
-MM+R>U:^*><CH'V%DD@@8'I^'`'RT883B1\#CRBD``"2DQIX35A#@\1J87+23
-M([I5GB4D(!M^SKLE7U16&%"H<BD``!P``$`$K7EB"TW?-Z?1)A,3?)T,)D#3
-MK>4````<``!`!1>\^Y(?0L0-?YX7$@)6"OP''Y98EQ*W1I*A#`"8`0``F`$`
-M``(```!%``&49"```$`1``#`J`$!P*@!`@'T`?0!@`=3DEAU,J.O#CV=3D4`````
-M`````"$@(@@````````!>"(``'@```!\`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``2L"EM:%/5>4SR6]_Z:-@]ZM8JVMUH6M(GH!<&Z.QQFQ3F at -^
-MDB.8SD\N.F842UNIWXW2N65+D"!1I$-X_^=3D>"IT\$\"H0Q/5!ED8WS$_"M3O
-M_>JHX&SUHC3#LASUZ1NWC*F1.=3D7H- at 8(8]/R5[.>0*0+*^F_EU,D&#`.;/:*
-M.U(I```D.8`:Z2F1TJKZ?T,;O*(>1%_Z[I_SHT:YL?@I&4]6M"0I```<``!`
-M!%@3O at 3B=3D-Z%^T0?DLUHQ+$C`PT?````'```0`5!6-+J13.VH5\3(3S\AKAW
-M4[,H+Y at 2MT:KC@``F`$``)@!```"````10`!E&0A``!`$0``P*@!`<"H`0(!
-M]`'T`8`'98=3D3*CKPX]G5```````````A("((`````````7 at B``!X````?`$!
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``$K`I;6A3U7E,\EO?^FC8/>K
-M6*MK=3D:%K2)Z`7!NCL<9L4YH#?I(CF,Y/+CIF%$M;J=3D^-TKEE2Y`@4:1#>/_G
-M7 at J=3D/!/`J$,3U099&-\Q/PK4[_WJJ.!L]:(TP[(<]>D;MXRID3G5Z#8&"&/3
-M\E>SGD"D"ROIOY=3D3)!@P#FSVBCM2*0``)#F`&NDID=3D*J^G]#&[RB'D1?^NZ?
-M\Z-&N;'X*1E/5K0D*0``'```0`18$[X$XG3>A?M$'Y+-:,2Q(P,-'P```!P`
-M`$`%05C2ZD4SMJ%?$R$\_(:X=3DU.S*"^8$K=3D&(]`&`)@!``"8`0```@```$4`
-M`91D(@``0!$``,"H`0'`J`$"`?0!]`&`!V6'4RHZ\./9U0``````````(2`B
-M"`````````%X(@``>````'P!`0`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``!*P*6UH4]5Y3/);W_IHV#WJUBK:W6A:TB>@%P;H['&;%.:`WZ2(YC.3RXZ
-M9A1+6ZG?C=3D*Y94N0(%&D0WC_YUX*G3P3P*A#$]4&61C?,3\*U._]ZJC@;/6B
-M-,.R'/7I&[>,J9$YU>@V!@ACT_)7LYY`I`LKZ;^74R08,`YL]HH[4BD``"0Y
-M@!KI*9'2JOI_0QN\HAY$7_KNG_.C1KFQ^"D93U:T)"D``!P``$`$6!.^!.)T
-MWH7[1!^2S6C$L2,##1\````<``!`!4%8TNI%,[:A7Q,A//R&N'=3D3LR at OF1*W
-M1@/9!`"8`0``F`$```(```!%``&49",``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MU:A&8`.*8W4``````````"$@(@@````````!>"(``'@```!]`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``.2@:JI.63ET`AJ@%58DF6H``J"L-%1%(
-MNWDI*?__(\]2*)JCC:/\[7#A]4[O,<ASZGH^K#-H0.4/9?BPSP<V>VDLHNTO
-M%<)4^ZZ38Z8V*$2![C]Q11=3DJ(>%=3DVVA%.WOR0O:\>`S=3D_LS?-W"O5G4,N`,B
-MP-Q,9]6C=3D\1@;KGVE3(I```DZ`6V-'R1$V^B%`.HM'$[1*G:07`Y-'L"/7U+
-MEJ=3DO,<,I```<``!`!-#`M>Q.WO57)D5;</V/]CE/_S<-````'```0`4Z&HGT
-MI[<^;K3[';UCE*9_=3D[76UYD2MT:E"`@`F`$``)@!```"````10`!E&0D``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9=3D6H1F`#BF-U```````````A("((````````
-M`7 at B``!X````?0$!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``#DH&JJ3
-MEDY=3D`(:H!56))EJ``*@K#1412+MY*2G__R//4BB:HXVC_.UPX?5.[S'(<^IZ
-M/JPS:$#E#V7XL,\'-GMI+*+M+Q7"5/NNDV.F-BA$@>X_<447:B'A7=3DMH13M[
-M\D+VO'@,W?[,WS=3DPKU9U#+@#(L#<3&?5HW?$8&ZY]I4R*0``).@%MC1\D1-O
-MHA0#J+1Q.T2IVD%P.31[`CU]2Y:G;S'#*0``'```0`30P+7L3M[U5R9%6W#]
-MC_8Y3_\W#0```!P``$`%.AJ)]*>W/FZT^QV]8Y2F?W>UUM>9$K=3D&34H.`)@!
-M``"8`0```@```$4``91D)0``0!$``,"H`0'`J`$"`?0!]`&`!V75J$9@`XIC
-M=3D0``````````(2`B"`````````%X(@``>````'T!`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"```Y*!JJDY9.70"&J`55B29:@`"H*PT5$4B[>2DI__\C
-MSU(HFJ.-H_SM<.'U3N\QR'/J>CZL,VA`Y0]E^+#/!S9[:2RB[2\5PE3[KI-C
-MIC8H1('N/W%%%VHAX5W;:$4[>_)"]KQX#-W^S-\W<*]6=3D0RX`R+`W$QGU:-W
-MQ&!NN?:5,BD``"3H!;8T?)$3;Z(4`ZBT<3M$J=3DI!<#DT>P(]?4N6IV\QPRD`
-M`!P``$`$T,"U[$[>]5<F15MP_8_V.4__-PT````<``!`!3H:B?2GMSYNM/L=3D
-MO6.4IG]WM=3D;7FA*W1H-;#`"8`0``F`$```(```!%``&49"L``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE,NRL[98J,/T``````````"$@(@@````````!>"(``'@`
-M`/__`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``M*^#!%0A^/T+'J=3D]
-MU+D:I!>9+:[JU)P1<3_](+(67E/>\QE&)6HPAPTQ(F(]APOZSU<RM1X4<^7P
-M#T--=3D`U$Z5IXX>#\A'G4IZ4U-$)3Y&1@'N?6>T(N<9^[+C$A9W1"4S34+K$!
-M$K6?'O=3DO?$SZ3`R/%_>X(@JZS1E!@(6ZPBDI```D`*.,CDFHCC8F%<=3D=3DS,A$
-MVZ07.7NL]E27-58!BZ at H</LI```<``!`!'XJ,;%K&.,4.42ABP:,/L"/C-Z,
-M````'```0`5VA5G##FOH'J^DN[OF(A$`(W"%-9L2MT9>0```F`$``)@!```"
-M````10`!E&0L``!`$0``P*@!`<"H`0(!]`'T`8`'93+LK.V6*C#]````````
-M```A("((`````````7 at B``!X``#__P$!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``+2O at P14(?C]"QZG?=3D2Y&J07F2VNZM2<$7$__2"R%EY3WO,91B5J
-M,(<-,2)B/8<+^L]7,K4>%'/E\`]#370-1.E:>.'@_(1YU*>E-31"4^1D8![G
-MUGM"+G&?NRXQ(6=3DT0E,TU"ZQ`1*UGQ[W;WQ,^DP,CQ?WN"(*NLT908"%NL(I
-M*0``)`"CC(Y)J(XV)A7'7<S(1-ND%SE[K/94ES56`8NH*'#[*0``'```0`1^
-M*C&Q:QCC%#E$H8L&C#[`CXS>C````!P``$`%=3DH59PPYKZ!ZOI+N[YB(1`"-P
-MA36;$K=3D&_H$&`)@!``"8`0```@```$4``91D-```0!$``,"H`0'`J`$"`?0!
-M]`&`!V4R[*SMEBHP_0``````````(2`B"`````````%X(@``>```__\!`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"TKX,$5"'X_0L>IWW4N1JD%YDM
-MKNK4G!%Q/_T at LA9>4][S&48E:C"'#3$B8CV'"_K/5S*U'A1SY?`/0TUT#43I
-M6GCAX/R$>=3D2GI34T0E/D9&`>Y]9[0BYQG[LN,2%G=3D$)3--0NL0$2M9\>]V]\
-M3/I,#(\7][@B"KK-&4&`A;K"*2D``"0`HXR.2:B.-B85QUW,R$3;I!<Y>ZSV
-M5)<U5@&+J"AP^RD``!P``$`$?BHQL6L8XQ0Y1*&+!HP^P(^,WHP````<``!`
-M!7:%6<,.:^@>KZ2[N^8B$0`C<(4UG!*W1MJ-!`"8`0``F`$```(```!%``&4
-M9'$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE+B+0&]%]H5```````````"$@(@@`
-M```````!>"(``'@``(```0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M9^J^2>C2^3X=3D&F^YU3)[>B0 at C_!\#"V7_)4&+/C.`#9FR"@0P?/SAM0DS^F=3D
-M9[>+9&J%&ICTO-JFV+R.M26 at D\:@6_'G=3DE`=3D18P>A1/8W["'(^D\WA2=3DS:R#
-MD4\'._*-.!7(^,?/GT#FZ])T<QDQ-IZ^Q!1(LCB9</Y'1T"%GKLI```DU/WL
-M\<IE/]K?AX)`DT*@GWP^GRPA`G:@(\4X4^7.&T,I```<``!`!$4*!?$]E1\-
-MDRCC#DD2J%*XR$4P````'```0`7/_%U9_8@<\3)#/:5*-?P9!)1ZSIP2MT9_
-MN@<`F`$``)@!```"````10`!E&1V``!`$0``P*@!`<"H`0(!]`'T`8`'92XB
-MT!O1?:%0```````````A("((`````````7 at B``!X``"```$!``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``&?JODGHTOD^'1ION=3D4R>WHD((_P?`PME_R5
-M!BSXS@`V9L at H$,'S\X;4),_IG6>WBV1JA1J8]+S:IMB\CK4EH)/&H%OQYW90
-M'46,'H43V-^PAR/I/-X4G<VL at Y%/!SORC3 at 5R/C'SY]`YNO2=3D',9,3:>OL04
-M2+(XF7#^1T=3D`A9Z[*0``)-3][/'*93_:WX>"0)-"H)]\/I\L(0)VH"/%.%/E
-MSAM#*0``'```0`1%"@7Q/94?#9,HXPY)$JA2N,A%,````!P``$`%S_Q=3D6?V(
-M'/$R0SVE2C7\&024>LZ<$K=3D&>?P-`)@!``"8`0```@```$4``91D?P``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V4N(M`;T7VA4```````````(2`B"`````````%X
-M(@``>```@``!`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!GZKY)Z-+Y
-M/AT:;[G5,GMZ)""/\'P,+9?\E08L^,X`-F;(*!#!\_.&U"3/Z9UGMXMD:H4:
-MF/2\VJ;8O(ZU):"3QJ!;\>=3DV4!U%C!Z%$]C?L(<CZ3S>%)W-K(.13P<[\HTX
-M%<CXQ\^?0.;KTG1S&3$VGK[$%$BR.)EP_D=3D'0(6>NRD``"34_>SQRF4_VM^'
-M at D"30J"??#Z?+"$"=3DJ`CQ3A3Y<X;0RD``!P``$`$10H%\3V5'PV3*.,.21*H
-M4KC(13`````<``!`!<_\75G]B!SQ,D,]I4HU_!D$E'K.G1*W1O`'#`"8`0``
-MF`$```(```!%``&49(@``$`1``#`J`$!P*@!`@'T`?0!@`=3DEU!;\, at XH!X``
-M`````````"$@(@@````````!>"(``'@```!T``$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``;**S2:1PPAVT*;<@0W`0O_'B6.B#-X"7Q24+Q2]!?#&3
-MA-(B8&(G0.?D#-6"6,Y7;@@*G at 1=3DE-]0S[S,\+U0[2(CE(UY'N5N:6P<?+#/
-M at YV+%.4ZCO>&MD]4FCDWG!S.Y$UICWMRMH(F7(T+;<G'&T\'O]+4J_;H#F<4
-MD;'Z6F$I```DP>B_0`QTE2$HTEZ#U_=3D%>NN\]IJ:#$M,[."QIH=3DB(T,I```<
-M``!`!/YLD^GOP,2UAX,=3DM@;XXX%[1G[+````'```0`4KD3E0C9 at T?4=3D\*=3DW_
-M_7"U9DL.0YT2MT:5-`\`F`$``)@!```"````10`!E&2Q``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9=3D06_#(.*`>````````````A("((`````````7 at B``!X````
-M=3D``!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``&RBLTFD<,(=3DM"FW($-P
-M$+_QXECH at S>`E\4E"\4O07PQDX32(F!B)T#GY`S5 at EC.5VX("IX$793?4,^\
-MS/"]4.TB(Y2->1[E;FEL''RPSX.=3DBQ3E.H[WAK9/5)HY-YP<SN1-:8][<K:"
-M)ER-"VW)QQM/![_2U*OVZ`YG%)&Q^EIA*0``),'HOT`,=3D)4A*-)>@]?W17KK
-MO/::F at Q+3.S@L::'8B-#*0``'```0`3^;)/I[\#$M8>#';8&^..!>T9^RP``
-M`!P``$`%*Y$Y4(V8-'U'?"G=3D__UPM69+#D.>$K=3D&Q3,&`)@!``"8`0```@``
-M`$4``91EFP``0!$``,"H`0'`J`$"`?0!]`&`!V74%OPR#B@'@```````````
-M(2`B"`````````%X(@``>````'0``0`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``!LHK-)I'#"';0IMR!#<!"_\>)8Z(,W@)?%)0O%+T%\,9.$TB)@8B=3D`
-MY^0,U8)8SE=3DN"`J>!%V4WU#/O,SPO5#M(B.4C7D>Y6YI;!Q\L,^#G8L4Y3J.
-M]X:V3U2:.3><',[D36F/>W*V at B9<C0MMR<<;3P>_TM2K]N at .9Q21L?I:82D`
-M`"3!Z+]`#'25(2C27H/7]T5ZZ[SVFIH,2TSLX+&FAV(C0RD``!P``$`$_FR3
-MZ>_`Q+6'@QVV!OCC at 7M&?LL````<``!`!2N1.5"-F#1]1WPIW?_]<+5F2PY#
-MGQ*W1E!"!`"8`0``F`$```(```!%``&49N8``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE>?]B!O<.OA<``````````"$@(@@````````!>"(``'@```!T`@$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``]!>83ZV\'AS3BR50U3,R*UQ\T/25
-M9F$'-P7[F.N8C!C!B,NYQ,[=3D at FO1'IK=3DB"'Y;?KYR3XXTFQTYK7EMDT,)M4/
-M"Q\E*XAHJAU:XK)8<4<;DWNH:&L.(M3O,!A,WPO.I[C3,2_:FT$T!1$'<*B"
-M^RNY"^W2[Z<]. at T'9HNNZ>DI```D:Q-H7%Y,)M;+CEUP+)H$ADQPNMLU"W.[
-M6ZD?+*SEZ`,I```<``!`!/\)3FH7WAQL21*+Y1Q(HGH,+I;O````'```0`5U
-M2GB__KA\<#8<[1XJ\W<^)D6$RY\2MT9';`<`F`$``)@!```"````10`!E&;R
-M``!`$0``P*@!`<"H`0(!]`'T`8`'97G_8@;W#KX7```````````A("((````
-M`````7 at B``!X````=3D`(!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``/07
-MF$^MO!X<TXLE4-4S,BM<?-#TE69A!S<%^YCKF(P8P8C+N<3.W8)KT1Z:W8 at A
-M^6WZ^<D^.-)L=3D.:UY;9-#";5#PL?)2N(:*H=3D6N*R6'%'&Y-[J&AK#B+4[S`8
-M3-\+SJ>XTS$OVIM!-`41!W"H at OLKN0OMTN^G/3H-!V:+KNGI*0``)&L3:%Q>
-M3";6RXY=3D<"R:!(9,<+K;-0MSNUNI'RRLY>@#*0``'```0`3_"4YJ%]X<;$D2
-MB^4<2*)Z#"Z6[P```!P``$`%=3D4IXO_ZX?'`V'.T>*O-W/B9%A,N?$K=3D&UJT-
-M`)@!``"8`0```@```$4``91F^@``0!$``,"H`0'`J`$"`?0!]`&`!V5Y_V(&
-M]PZ^%P``````````(2`B"`````````%X(@``>````'0"`0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``#T%YA/K;P>'-.+)5#5,S(K7'S0])5F80<W!?N8
-MZYB,&,&(R[G$SMV":]$>FMV((?EM^OG)/CC2;'3FM>6V30PFU0\+'R4KB&BJ
-M'5KBLEAQ1QN3>ZAH:PXBU.\P&$S?"\ZGN-,Q+]J;030%$0=3DPJ(+[*[D+[=3D+O
-MISTZ#0=3DFBZ[IZ2D``"1K$VA<7DPFULN.77`LF at 2&3'"ZVS4+<[M;J1\LK.7H
-M`RD``!P``$`$_PE.:A?>'&Q)$HOE'$BB>@PNEN\````<``!`!75*>+_^N'QP
-M-ASM'BKS=3DSXF183+H!*W1E*Y"P"8`0``F`$```(```!%``&49TT``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE4567_<H:.-(``````````"$@(@@````````!>"(`
-M`'@```!T`@$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``@+K%%XGPUV)&
-M#7_3O58JVSW!&<2WUP<[*7Z\4]YA*^.,)V#Q,8%<I'4'*S1[5E6:E??G2*3&
-MG2\EJ6CA9H7V_N5ZN20W#@,.0?:=3DWMYCB?7`_ZY($$,(,E3T`W\&EN8\DN"9
-M!%<"I7DJ7\\@B31C:^[.2\U7R3V&8CJM$L\BB,`I```D,'QN7.WMA47_$`T,
-M1`8#N$IX&#RI70[L=3DX7?2`2U;8<I```<``!`!`I88B@;H/ZW*@E>`2^9J]IE
-M)"-+````'```0`5U9@>8K<HK46Q3]Z!R<GUN(^F49*`2MT9&Y at X`F`$``)@!
-M```"````10`!E&=3D.``!`$0``P*@!`<"H`0(!]`'T`8`'95%5E_W*&CC2````
-M```````A("((`````````7 at B``!X````=3D`(!``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``("ZQ1>)\-=3DB1 at U_T[U6*ML]P1G$M]<'.RE^O%/>82OCC"=3D@
-M\3&!7*1U!RLT>U95FI7WYTBDQITO):EHX6:%]O[E>KDD-PX##D'VG=3D[>8XGU
-MP/^N2!!#"#)4]`-_!I;F/)+ at F017`J5Y*E_/((DT8VONSDO-5\D]AF(ZK1+/
-M(HC`*0``)#!\;ESM[85%_Q`-#$0&`[A*>!@\J5T.['>%WT@$M6V'*0``'```
-M0`0*6&(H&Z#^MRH)7@$OF:O:920C2P```!P``$`%=3D68'F*W**U%L4_>@<G)]
-M;B/IE&2A$K=3D&Q>4%`)@!``"8`0```@```$4``91G3P``0!$``,"H`0'`J`$"
-M`?0!]`&`!V5159?]RAHXT@``````````(2`B"`````````%X(@``>````'0"
-M`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``"`NL47B?#78D8-?].]5BK;
-M/<$9Q+?7!SLI?KQ3WF$KXXPG8/$Q at 5RD=3D0<K-'M659J5]^=3D(I,:=3D+R6I:.%F
-MA?;^Y7JY)#<.`PY!]IW>WF.)]<#_KD at 00P@R5/0#?P:6YCR2X)D$5P*E>2I?
-MSR")-&-K[LY+S5?)/89B.JT2SR*(P"D``"0P?&Y<[>V%1?\0#0Q$!@.X2G at 8
-M/*E=3D#NQWA=3D](!+5MARD``!P``$`$"EAB*!N at _K<J"5X!+YFKVF4D(TL````<
-M``!`!75F!YBMRBM1;%/WH')R?6XCZ91DHA*W1C3R`P"8`0``F`$```(```!%
-M``&49ZT``$`1``#`J`$!P*@!`@'T`?0!@`=3DE-8R2PT>#KBL``````````"$@
-M(@@````````!>"(``'@```!T`P$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``TBJ;2:@L(:"])^D3>]D8]ZQY1A":B,]*W0[<+P\-7!VV5`>R54(;>$BZ
-MRUKXV#=3DAWEK92?`MDRU1"[*EFO4;;!)J!U_%^KUB_?,[9>S`VXSTK$>;\197
-M2I at 8AV3I=3D0P`EF""$&SS-_=3D at 6;F?;)HB+-B7MFOC.VE*?XSSG27*0EXI```D
-MHU\TS3R2AZ'42X90TF%)67KR#LN$QE3`\>B?Q&!.LU\I```<``!`!,FYF[>;
-MJ+FQQMP.$^US+[Q:00R!````'```0`7D9Y+GBWAIH5!OP\7APV?<G%OG):(2
-MMT8#'P<`F`$``)@!```"````10`!E&>O``!`$0``P*@!`<"H`0(!]`'T`8`'
-M936,DL-'@ZXK```````````A("((`````````7 at B``!X````=3D`,!``P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``-(JFTFH+"&@O2?I$WO9&/>L>480FHC/
-M2MT.W"\/#5P=3DME0'LE5"&WA(NLM:^- at W8=3DY:V4GP+9,M40NRI9KU&VP2:@=3D?
-MQ?J]8OWS.V7LP-N,]*Q'F_$65TJ8&(=3DDZ74,`)9@@A!L\S?W8%FYGVR:(BS8
-ME[9KXSMI2G^,\YTERD)>*0``)*-?-,T\DH>AU$N&4-)A25EZ\@[+A,94P/'H
-MG\1 at 3K-?*0``'```0`3)N9NWFZBYL<;<#A/M<R^\6D$, at 0```!P``$`%Y&>2
-MYXMX::%0;\/%X<-GW)Q;YR6B$K=3D&IU\-`)@!``"8`0```@```$4``91GL```
-M0!$``,"H`0'`J`$"`?0!]`&`!V4UC)+#1X.N*P``````````(2`B"```````
-M``%X(@``>````'0#`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#2*IM)
-MJ"PAH+TGZ1-[V1CWK'E&$)J(STK=3D#MPO#PU<';94![)50AMX2+K+6OC8-V'>
-M6ME)\"V3+5$+LJ6:]1ML$FH'7\7ZO6+]\SME[,#;C/2L1YOQ%E=3D*F!B'9.EU
-M#`"68((0;/,W]V!9N9]LFB(LV)>V:^,[:4I_C/.=3D)<I"7BD``"2C7S3-/)*'
-MH=3D1+AE#284E9>O(.RX3&5,#QZ)_$8$ZS7RD``!P``$`$R;F;MYNHN;'&W`X3
-M[7,OO%I!#($````<``!`!>1GDN>+>&FA4&_#Q>'#9]R<6^<EHQ*W1G%L"P"8
-M`0``F`$```(```!%``&4:`T``$`1``#`J`$!P*@!`@'T`?0!@`=3DEUWCB?\CN
-MI"@``````````"$@(@@````````!>"(``'@```!T!`$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``29-:O[K9&EZG4/5SR=3D!UXQT4&7#ZG1%^0PDD\U8L
-M677J%V@#@R3L]$T9?]URLX[A<H>LCU5<SUO<3JTI_1L36&;=3D8MV=3DI3RZ@(IO
-MQG[&HWF at -UNWH2:W22>#`%.9/?]\P;I#:WV4A-H#2T?=3DR<9U/YY632)C3P/W
-M8=3DM#&`VN.API```D0IC![8=3D*8P!E7]3V#^X7UR/:$I,RXCTH,;L?@B(^H<`I
-M```<``!`!+)"AW*"`R_V!X\&DSYR&7(LG$\H````'```0`7 at HHK8=3DF!8PC at X
-MG^,,WEPN9[.]?*,2MT80F`X`F`$``)@!```"````10`!E&@2``!`$0``P*@!
-M`<"H`0(!]`'T`8`'9=3D=3DXXG_([J0H```````````A("((`````````7 at B``!X
-M````=3D`0!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``$F36K^ZV1I>IU#U
-M<\G0=3D>,=3D%!EP^IT1?D,))/-6+%EUZA=3DH`X,D[/1-&7_=3D<K..X7*'K(]57,];
-MW$ZM*?T;$UAFW6+=3DG:4\NH"*;\9^QJ-YH#=3D;MZ$FMTDG at P!3F3W_?,&Z0VM]
-ME(3:`TM'W<G&=3D3^>5DTB8T\#]V';0Q at -KCH<*0``)$*8P>V'2F,`95_4]@_N
-M%]<CVA*3,N(]*#&['X(B/J'`*0``'```0`2R0H=3DR@@,O]@>/!I,^<AER+)Q/
-M*````!P``$`%X***V'9 at 6,(X.)_C#-Y<+F>SO7RD$K=3D&W9<%`)@!``"8`0``
-M`@```$4``91H&@``0!$``,"H`0'`J`$"`?0!]`&`!V77>.)_R.ZD*```````
-M````(2`B"`````````%X(@``>````'0$`0`,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!)DUJ_NMD:7J=3D0]7/)T'7C'109</J=3D$7Y#"23S5BQ9=3D>H7:`.#
-M).ST31E_W7*SCN%RAZR/55S/6]Q.K2G]&Q-89MUBW9VE/+J`BF_&?L:C>:`W
-M6[>A)K=3D))X,`4YD]_WS!ND-K?92$V at -+1]W)QG4_GE9-(F-/`_=3DAVT,8#:XZ
-M'"D``"1"F,'MATIC`&5?U/8/[A?7(]H2DS+B/2 at QNQ^"(CZAP"D``!P``$`$
-MLD*'<H(#+_8'CP:3/G(9<BR<3R@````<``!`!>"BBMAV8%C".#B?XPS>7"YG
-ML[U\I1*W1L"B`P"8`0``F`$```(```!%``&4:!\``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE0K^WN.=3DKWYH``````````"$@(@@````````!>"(``'@```!T!P$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``V4FR4/N#H^9(Y=3DVTY\5.=3D<.E
-M"DE5_<B$WH:+,+.A0+^V+6R.:[P:4H(E at 1G81R</>;Y8E=3D0,#Q1#(57,9:TR
-M6(+%U+]\^AW+1C"K>C=3DGNN+TZCFRPHCHM7N"<@MVPC(M;X?GX'QTUW3664<@
-M*J6>.OZ at U&7JRHQ:IG<O:3__]&,I```DX(U%PB:V\3B$IF017X'1'OW[;,,0
-M)THC6S,`^2RF<:@I```<``!`!%_ML^:"2_BEWTTKP=3D.^<&0_"#UZ````'```
-M0`7HQRA<)PZ>UJ^@]O5G0H"X&H#<(:42MT:KSP8`F`$``)@!```"````10`!
-ME&@@``!`$0``P*@!`<"H`0(!]`'T`8`'94*_M[CG:]^:```````````A("((
-M`````````7 at B``!X````=3D`<!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`-E)LE#[@Z/F2.7=3DM.?%3G7#I0I)5?W(A-Z&BS"SH4"_MBULCFN\&E*")8$9
-MV$<G#WF^6)74#`\40R%5S&6M,EB"Q=3D2_?/H=3DRT8PJWHW9[KB].HYLL*(Z+5[
-M at G(+=3DL(R+6^'Y^!\=3D-=3DTUEE'("JEGCK^H-1EZLJ,6J9W+VD___1C*0``)."-
-M1<(FMO$XA*9D$5^!T1[]^VS#$"=3D*(ULS`/DLIG&H*0``'```0`1?[;/F at DOX
-MI=3D]-*\'3OG!D/P@]>@```!P``$`%Z,<H7"<.GM:OH/;U9T*`N!J`W"&E$K=3D&
-M8A$-`)@!``"8`0```@```$4``91H(@``0!$``,"H`0'`J`$"`?0!]`&`!V5"
-MO[>XYVO?F@``````````(2`B"`````````%X(@``>````'0'`0`,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``#92;)0^X.CYDCEW;3GQ4YUPZ4*257]R(3>
-MAHLPLZ%`O[8M;(YKO!I2 at B6!&=3DA')P]YOEB5U`P/%$,A5<QEK3)8 at L74OWSZ
-M'<M&,*MZ-V>ZXO3J.;+"B.BU>X)R"W;",BUOA^?@?'37=3D-991R`JI9XZ_J#4
-M9>K*C%JF=3DR]I/__T8RD``"3 at C47")K;Q.(2F9!%?@=3D$>_?MLPQ`G2B-;,P#Y
-M+*9QJ"D``!P``$`$7^VSYH)+^*7?32O!T[YP9#\(/7H````<``!`!>C'*%PG
-M#I[6KZ#V]6=3D"@+@:@-PAIA*W1H\>"P"8`0``F`$```(```!%``&4:"P``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE3&UB<`W<ZI$``````````"$@(@@````````!
-M>"(``'@```!T"`$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``--#)HZ,=3D
-MM3.BUF75Q!CE'V^'3^^1"VS6C,`OCNPS7DL)2+5KVX,DF66NA;4,)O@@.*FH
-M:&XIN?6]D$R0F]J23G#0$I at Z*PG#1C`9U0AWGH8QB&Z(L3Q6R>^).LY):)I=3D
-MV7OQAV<!0\=3D8+=3DR-[9]GU4P`MEXA=3DR*'75%=3DMH6C9T\I```DW8=3DAK`=3DCZLAJ
-MU<%6!H)`C;J.9DM,Q`TK:AD,W!F2PFXI```<``!`!$#(H9`RVUXJ%E&(@JQ[
-M1%W.8?A"````'```0`6.0O8I5C'IU104*35ZACI.10MM at J82MT;:20X`F`$`
-M`)@!```"````10`!E&@R``!`$0``P*@!`<"H`0(!]`'T`8`'94QM8G`-W.J1
-M```````````A("((`````````7 at B``!X````=3D`@!``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``#30R:.C';4SHM9EU<08Y1]OAT_OD0MLUHS`+X[L,UY+
-M"4BU:]N#))EEKH6U#";X(#BIJ&AN*;GUO9!,D)O:DDYPT!*8.BL)PT8P&=3D4(
-M=3DYZ&,8ANB+$\5LGOB3K.26B:7=3DE[\8=3DG`4/'6"W<C>V?9]5,`+9>(7<BAUU1
-M7;:%HV=3D/*0``)-V'8:P'8^K(:M7!5@:"0(VZCF9+3,0-*VH9#-P9DL)N*0``
-M'```0`1`R*&0,MM>*A91B(*L>T1=3DSF'X0@```!P``$`%CD+V*58QZ=3D44%"DU
-M>H8Z3D4+;8*G$K=3D&+TD%`)@!``"8`0```@```$4``91H.P``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V5,;6)P#=3DSJD0``````````(2`B"`````````%X(@``>```
-M`'0(`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"```TT,FCHQVU,Z+69=3D7$
-M&.4?;X=3D/[Y$+;-:,P"^.[#->2PE(M6O;@R299:Z%M0PF^"`XJ:AH;BFY];V0
-M3)";VI).<-`2F#HK"<-&,!G5"'>>AC&(;HBQ/%;)[XDZSDEHFEW9>_&'9P%#
-MQU at MW(WMGV?53`"V7B%W(H=3D=3D45VVA:-G3RD``"3=3DAV&L!V/JR&K5P58&@D"-
-MNHYF2TS$#2MJ&0S<&9+";BD``!P``$`$0,BAD#+;7BH648B"K'M$7<YA^$(`
-M```<``!`!8Y"]BE6,>G5%!0I-7J&.DY%"VV"J!*W1HI5`P"8`0``F`$```(`
-M``!%``&4:#T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE+:GTMV*?#HL`````````
-M`"$@(@@````````!>"(``'@```!T"0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``H$Q5[Z at A!4/3J/?WR!9KQ>.14Y+RFFB5_I_CV3\P#V7FIOD\QTU(
-MV(("#!:+;XWJ[LW</]5D(\N%$T%:Q_B8IW!-?$C'F5"U.OIK85C=3D3%$;V.9L
-MVCWH1#S^XE5\A]*W/O2MB)?1-BFC'FGLWXT4;ZPEI+6HS'@,=3D:`.^$_6T1XI
-M```DI8?ACZ]Z2#]:/?%A$@PO2O9JZ3SPZ#56-T6K>C\!)9`I```<``!`!&$;
-M.1P"%?_!$L#0CERX+!$X?-ZU````'```0`7NE:"]M#7,Y,?0]Y57M<Y+(V8R
-M`J at 2MT:?@08`F`$``)@!```"````10`!E&@_``!`$0``P*@!`<"H`0(!]`'T
-M`8`'92VI]+=3DBGPZ+```````````A("((`````````7 at B``!X````=3D`D!``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``*!,5>^H(05#TZCW]\@6:\7CD5.2
-M\IIHE?Z?X]D_,`]EYJ;Y/,=3D-2-B"`@P6BV^-ZN[-W#_59"/+A1-!6L?XF*=3DP
-M37Q(QYE0M3KZ:V%8W4Q1&]CF;-H]Z$0\_N)5?(?2MS[TK8B7T38IHQYI[-^-
-M%&^L):2UJ,QX#'6@#OA/UM$>*0``)*6'X8^O>D at _6CWQ81(,+TKV:ND\\. at U
-M5C=3D%JWH_`260*0``'```0`1A&SD<`A7_P1+`T(Y<N"P1.'S>M0```!P``$`%
-M[I6 at O;0US.3'T/>55[7.2R-F,@*H$K=3D&+<,,`)@!``"8`0```@```$4``91H
-M10``0!$``,"H`0'`J`$"`?0!]`&`!V4MJ?2W8I\.BP``````````(2`B"```
-M``````%X(@``>````'0)`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"@
-M3%7OJ"$%0].H]_?(%FO%XY%3DO*::)7^G^/9/S`/9>:F^3S'34C8@@(,%HMO
-MC>KNS=3DP_U60CRX4305K'^)BG<$U\2,>94+4Z^FMA6-U,41O8YFS:/>A$//[B
-M57R'TK<^]*V(E]$V*:,>:>S?C11OK"6DM:C,>`QUH`[X3];1'BD``"2EA^&/
-MKWI(/UH]\6$2#"]*]FKI//#H-58W1:MZ/P$ED"D``!P``$`$81LY'`(5_\$2
-MP-".7+ at L$3A\WK4````<``!`!>Z5H+VT-<SDQ]#WE5>USDLC9C("J1*W1N0[
-M"P"8`0``F`$```(```!%``&4:-$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE[X9?
-M[F*,X4(``````````"$@(@@````````!>"(``'@```!T^`$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``8'8'VN:J3&+GZ/ID:$2UO\3K^%[/;_\Y3FH:
-MH(UC/_!_P+?>227QJ6LC350!`>E*'+CCO``&%>.1%W8+[0%9>88PJ^JH@]I$
-M*;0'('5;:M:Z?^!=3DN3.2A3TT7-=3DW)`\J>]"6EW#GDM74AC\IJ`+DC%RQ?F3#
-ML>;CPH4UW)KZ&>(I```DH5,C;FTW)!%&;&+Q0,F1 at W^;MNL>?U&&TFKK.U$"
-M9;0I```<``!`!-L&L2=3D#XV]*4DO7GAR!PVBD6WSS````'```0`5\G7FF8#3G
-M.IS1R9>'KJU_EZ$F<ZD2MT8=3D<0X`F`$``)@!```"````10`!E&C3``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9>^&7^YBC.%"```````````A("((`````````7 at B
-M``!X````=3D/@!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``&!V!]KFJDQB
-MY^CZ9&A$M;_$Z_A>SV__.4YJ&J"-8S_P?\"WWDDE\:EK(TU4`0'I2ARXX[P`
-M!A7CD1=3DV"^T!67F&,*OJJ(/:1"FT!R!U6VK6NG_ at 7;DSDH4]-%S7=3DR0/*GO0
-MEI=3DPYY+5U(8_*:@"Y(Q<L7YDP['FX\*%-=3DR:^AGB*0``)*%3(VYM-R011FQB
-M\4#)D8-_F[;K'G]1AM)JZSM1`F6T*0``'```0`3;!K$G0^-O2E)+UYX<@<-H
-MI%M\\P```!P``$`%?)UYIF`TYSJ<T<F7AZZM?Y>A)G.J$K=3D&$W`%`)@!``"8
-M`0```@```$4``91HU```0!$``,"H`0'`J`$"`?0!]`&`!V7OAE_N8HSA0@``
-M````````(2`B"`````````%X(@``>````'3X`0`,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``!@=3D@?:YJI,8N?H^F1H1+6_Q.OX7L]O_SE.:AJ at C6,_\'_`
-MM]Y))?&I:R--5`$!Z4H<N..\``85XY$7=3D at OM`5EYAC"KZJB#VD0IM`<@=3D5MJ
-MUKI_X%VY,Y*%/31<UW<D#RI[T):7<.>2U=3D2&/RFH`N2,7+%^9,.QYN/"A37<
-MFOH9XBD``"2A4R-N;3<D$49L8O%`R9&#?YNVZQY_48;2:NL[40)EM"D``!P`
-M`$`$VP:Q)T/C;TI22]>>'('#:*1;?/,````<``!`!7R=3D>:9 at -.<ZG-')EX>N
-MK7^7H29SJQ*W1N)Z`P"8`0``F`$```(```!%``&4:-4``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEK86F^]W"*>P``````````"$@(@@````````!>"(``'@```!T
-M^0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``C?&A.:E_JJY'65:,A2 at 9
-MWV at U3:V3M;UV<B%/4<*G">'Z%`3(0 at XIN:YDZZ^[)+,%&2\[0OCB8IP7X9.R
-M<B^_HXJ103T<<IS'CW.CP%L:?"TPH^`"(WI-.',%R':_N-G5Q6_%<.\\#X`A
-MPZ1VGYHKQC<A@(]:1+MG;LUP.`L5:V8I```D<8PP13 at LPB19`'R`G"#PTVJ2
-MBWKOM at O&T@=3DK-)VF/API```<``!`!#??YTX5ZABE.>[2S-[E(MQPBKS&````
-M'```0`5>*>>&RYX$Z^+:S[[email protected]#(I[6:L2MT:@J`8`F`$``)@!```"````
-M10`!E&C:``!`$0``P*@!`<"H`0(!]`'T`8`'9:V%IOO=3DPBGL```````````A
-M("((`````````7 at B``!X````=3D/D!``P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``(WQH3FI?ZJN1UE6C(4H&=3D]H-4VMD[6]=3DG(A3U'"IPGA^A0$R$(.*;FN
-M9.NONR2S!1DO.T+XXF*<%^&3LG(OOZ.*D4$]''*<QX]SH\!;&GPM,*/@`B-Z
-M33AS!<AVO[C9U<5OQ7#O/`^`(<.D=3DI^:*\8W(8"/6D2[9V[-<#@+%6MF*0``
-M)'&,,$4X+,(D60!\@)P@\--JDHMZ[[8+QM(':S2=3DICX<*0``'```0`0WW^=3D.
-M%>H8I3GNTLS>Y2+<<(J\Q@```!P``$`%7BGGALN>!.OBVL^]Q(-CLPR*>UFK
-M$K=3D&+^H,`)@!``"8`0```@```$4``91HXP``0!$``,"H`0'`J`$"`?0!]`&`
-M!V6MA:;[W<(I[```````````(2`B"`````````%X(@``>````'3Y`0`,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``"-\:$YJ7^JKD=3D95HR%*!G?:#5-K9.U
-MO79R(4]1PJ<)X?H4!,A"#BFYKF3KK[LDLP49+SM"^.)BG!?AD[)R+[^CBI%!
-M/1QRG,>/<Z/`6QI\+3"CX`(C>DTX<P7(=3DK^XV=3D7%;\5P[SP/@"'#I':?FBO&
-M-R&`CUI$NV=3DNS7`X"Q5K9BD``"1QC#!%."S")%D`?("<(/#3:I*+>N^V"\;2
-M!VLTG:8^'"D``!P``$`$-]_G3A7J&*4Y[M+,WN4BW'"*O,8````<``!`!5XI
-MYX;+G at 3KXMK/O<2#8[,,BGM9K!*W1H7U"@"8`0``F`$```(```!%``&4:/4`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE*#>4BK.<BE0``````````"$@(@@`````
-M```!>"(``'@```!T^@$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``'.I<
-MVV7'2G7,/':GJ4B4R&RO+IIZ*'GH8TG'C;D<KU-C[0UPOZXVW!^"O5KL-L_H
-M57=3DI!QQ(:<411'AX<PH;+KX!8L8PTQF0OUQ",=3DH#-:P>6(R5;UV,8Z!`E8E%
-M)2SE05*'OA03RU8OQD2(?"O.Q4:$<]`-_I7?J_WN63!T7!,I```D=3DY7<J at I'
-MLU2MPJ[)6*\8W,."$40(>$Y<T,;E9Y\-.%LI```<``!`!*CO0,SKS%[3*!P?
-MR%[L$#.=3D3D*\````'```0`6VIJ9%@,V,9V>[]P9UUW`_"&[OZZP2MT:T(@X`
-MF`$``)@!```"````10`!E&D%``!`$0``P*@!`<"H`0(!]`'T`8`'92 at WE(JS
-MG(I4```````````A("((`````````7 at B``!X````=3D/H!``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``!SJ7-MEQTIUS#QVIZE(E,ALKRZ:>BAYZ&-)QXVY
-M'*]38^T-<+^N-MP?@KU:[#;/Z%5W:0<<2&G%$41X>',*&RZ^`6+&,-,9D+]<
-M0C':`S6L'EB,E6]=3DC&. at 0)6)124LY4%2A[X4$\M6+\9$B'PKSL5&A'/0#?Z5
-MWZO][EDP=3D%P3*0``)'>5W*H*1[-4K<*NR5BO&-S#@A%$"'A.7-#&Y6>?#3A;
-M*0``'```0`2H[T#,Z\Q>TR@<'\A>[!`SG4Y"O````!P``$`%MJ:F18#-C&=3DG
-MN_<&=3D=3D=3DP/PAN[^NM$K=3D&["$%`)@!``"8`0```@```$4``91I"```0!$``,"H
-M`0'`J`$"`?0!]`&`!V4H-Y2*LYR*5```````````(2`B"`````````%X(@``
-M>````'3Z`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"```<ZES;9<=3D*=3D<P\
-M=3DJ>I2)3(;*\NFGHH>>AC2<>-N1RO4V/M#7"_KC;<'X*]6NPVS^A5=3DVD''$AI
-MQ1%$>'AS"ALNO@%BQC#3&9"_7$(QV@,UK!Y8C)5O78QCH$"5B44E+.5!4H>^
-M%!/+5B_&1(A\*\[%1H1ST`W^E=3D^K_>Y9,'1<$RD``"1WE=3DRJ"D>S5*W"KLE8
-MKQC<PX(11`AX3ES0QN5GGPTX6RD``!P``$`$J.]`S.O,7M,H'!_(7NP0,YU.
-M0KP````<``!`!;:FID6`S8QG9[OW!G77<#\(;N_KKA*W1HHN`P"8`0``F`$`
-M``(```!%``&4:2D``$`1``#`J`$!P*@!`@'T`?0!@`=3DEE]?.N=3DO353(`````
-M`````"$@(@@````````!>"(``'@```!T_0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``&.?G+Z,Y6N\VE\?D+_A2W,](P$%-T.O49\;-S^9:%!X$L at D2
-M2L'%%;+[SP/>P%DT.1K:THG<.HW8JKN_6E5@=3DY(3S[-LSTU<=3D%WZ^G)%(]56
-MH0F*<)4DXR1/[.X"]HG_`:#\S,<&-0>0\!?X(&,\\&,'=3D#N808,'`QQK>A*8
-MV$XI```DF=3D:..Q2J)1KM7XZ3TU7.@!@!!Q2E1,;:5F%!$^P7X?PI```<``!`
-M!.]]GZ8N!-ZJA'M"[-)EI.D0#!MM````'```0`6#+&"B>SC7F#[R$ZLL<PE%
-M9#!O\:X2MT9(6 at 8`F`$``)@!```"````10`!E&DJ``!`$0``P*@!`<"H`0(!
-M]`'T`8`'99?7SKG;TU4R```````````A("((`````````7 at B``!X````=3D/T!
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``!CGYR^C.5KO-I?'Y"_X4MS/
-M2,!!3=3D#KU&?&S<_F6A0>!+()$DK!Q16R^\\#WL!9-#D:VM*)W#J-V*J[OUI5
-M8'>2$\^S;,]-7'1=3D^OIR12/55J$)BG"5).,D3^SN`O:)_P&@_,S'!C4'D/`7
-M^"!C//!C!W0[F$&#!P,<:WH2F-A.*0``))G6CCL4JB4:[5^.D]-5SH`8`0<4
-MI43&VE9A01/L%^'\*0``'```0`3O?9^F+ at 3>JH1[0NS29:3I$`P;;0```!P`
-M`$`%@RQ at HGLXUY@^\A.K+',)160P;_&N$K=3D&WIL,`)@!``"8`0```@```$4`
-M`91I*P``0!$``,"H`0'`J`$"`?0!]`&`!V67U\ZYV]-5,@``````````(2`B
-M"`````````%X(@``>````'3]`0`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M```8Y^<OHSE:[S:7Q^0O^%+<STC`04W0Z]1GQLW/YEH4'@2R"1)*P<45LOO/
-M`][`630Y&MK2B=3DPZC=3DBJN[]:56!WDA//LVS/35QT7?KZ<D4CU5:A"8IPE23C
-M)$_L[@+VB?\!H/S,QP8U!Y#P%_@@8SSP8P=3DT.YA!@P<#'&MZ$IC83BD``"29
-MUHX[%*HE&NU?CI/35<Z`&`$'%*5$QMI684$3[!?A_"D``!P``$`$[WV?IBX$
-MWJJ$>T+LTF6DZ1`,&VT````<``!`!8,L8*)[.->8/O(3JRQS"45D,&_QKQ*W
-M1 at 2H"@"8`0``F`$```(```!%``&4:2T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MMA.+4>O;#7<``````````"$@(@@````````!>"(``'@```!T_@$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``2#S+H;PQ,5/F,(\5'\&?_)B"MT"X1TK(
-M92?)&+:!C:/2C,;6*0%`2JGP;V5BO]:8OD!\#X>01H=3DBP%NA`?_N>7"3@^D^
-MQFC5H*NA[?(V]J6NA&UNST/9!^,M&03!LDN+ZX&@[>@8'CMR7,)5#U$T=3D4(`
-MJA/M/X,RN^09\2&R0_TI```D&V.`&T\ZOL[%UE#E,3V/Z]L_(I^Q??>\C5GA
-M-.T\&Y8I```<``!`!","4CV15L9-"3B$9>V7QK"2%X=3DW````'```0`7[X67E
-M=3D.CF2+W'JEQV4KAWF/"7CJ\2MT9,U`T`F`$``)@!```"````10`!E&DN``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9;83BU'KVPUW```````````A("((````````
-M`7 at B``!X````=3D/X!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``$@\RZ&\
-M,3%3YC"/%1_!G_R8 at K=3D`N$=3D*R&4GR1BV at 8VCTHS&UBD!0$JI\&]E8K_6F+Y`
-M?`^'D$:'8L!;H0'_[GEPDX/I/L9HU:"KH>WR-O:EKH1M;L]#V0?C+1D$P;)+
-MB^N!H.WH&!X[<ES"50]1-'5"`*H3[3^#,KOD&?$ALD/]*0``)!MC@!M/.K[.
-MQ=3D90Y3$]C^O;/R*?L7WWO(U9X33M/!N6*0``'```0`0C`E(]D5;&30DXA&7M
-ME\:PDA>'=3DP```!P``$`%^^%EY73HYDB]QZI<=3DE*X=3DYCPEXZP$K=3D&G],$`)@!
-M``"8`0```@```$4``91I+P``0!$``,"H`0'`J`$"`?0!]`&`!V6V$XM1Z]L-
-M=3DP``````````(2`B"`````````%X(@``>````'3^`0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``!(/,NAO#$Q4^8PCQ4?P9_\F(*W0+A'2LAE)\D8MH&-
-MH]*,QM8I`4!*J?!O96*_UIB^0'P/AY!&AV+`6Z$!_^YY<).#Z3[&:-6 at JZ'M
-M\C;VI:Z$;6[/0]D'XRT9!,&R2XOK@:#MZ!@>.W)<PE4/431U0@"J$^T_ at S*[
-MY!GQ(;)#_2D``"0;8X`;3SJ^SL764.4Q/8_KVS\BG[%]][R-6>$T[3P;EBD`
-M`!P``$`$(P)2/9%6QDT).(1E[9?&L)(7AW<````<``!`!?OA9>5TZ.9(O<>J
-M7'92N'>8\)>.L1*W1N+?`@"8`0``F`$```(```!%``&4:3```$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE1N<N:XVP3F\``````````"$@(@@````````!>"(``'@`
-M``!T_P$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``KJK2PQ2=3D'ZN!:7$:
-MNXQ,1I85373?S+>"_)Q6<W&@*[?IQSB at K]Z)8P"#0.8#9LEA9J/\!]1+;CC"
-MM/LQ9+Z5.`=3DL*(D2HPC!?L^2^2WA>6V?%GCXRZJA$LD3,2`MCT&-ZU>.8/5Z
-MV)J`Y030`1XIN/AAD43.V.VUHU:'#)";\M at I```DL0Q=3DG.)&EZ5-&FJ=3DV0J=3D
-MGD/)<_E\B$`S[X[6(9!L*MDI```<``!`!%XFY<;R^2$(3:M)6R!#JKC\5MR=3D
-M````'```0`53*T90/$-GNC'78:IAPK'TD(C49K$2MT84#`8`F`$``)@!```"
-M````10`!E&DQ``!`$0``P*@!`<"H`0(!]`'T`8`'94;G+FN-L$YO````````
-M```A("((`````````7 at B``!X````=3D/\!``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``*ZJTL,4G1^K at 6EQ&KN,3$:6%4UTW\RW at OR<5G-QH"NWZ<<XH*_>
-MB6,`@T#F`V;)86:C_`?42VXXPK3[,62^E3@';"B)$J,(P7[/DODMX7EMGQ9X
-M^,NJH1+)$S$@+8]!C>M7CF#U>MB:@.4$T`$>*;CX89%$SMCMM:-6APR0F_+8
-M*0``)+$,79SB1I>E31IJG=3DD*G9Y#R7/Y?(A`,^^.UB&0;"K9*0``'```0`1>
-M)N7&\ODA"$VK25L at 0ZJX_%;<G0```!P``$`%4RM&4#Q#9[HQUV&J8<*Q])"(
-MU&:Q$K=3D&GTT,`)@!``"8`0```@```$4``91I,@``0!$``,"H`0'`J`$"`?0!
-M]`&`!V5&YRYKC;!.;P``````````(2`B"`````````%X(@``>````'3_`0`,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"NJM+#%)T?JX%I<1J[C$Q&EA5-
-M=3D-_,MX+\G%9S<:`KM^G'.*"OWHEC`(-`Y at -FR6%FH_P'U$MN.,*T^S%DOI4X
-M!VPHB1*C",%^SY+Y+>%Y;9\6>/C+JJ$2R1,Q("V/08WK5XY@]7K8FH#E!-`!
-M'BFX^&&11,[8[;6C5H<,D)ORV"D``"2Q#%V<XD:7I4T::IW9"IV>0\ES^7R(
-M0#/OCM8AD&PJV2D``!P``$`$7B;EQO+Y(0A-JTE;($.JN/Q6W)T````<``!`
-M!5,K1E`\0V>Z,=3D=3DAJF'"L?20B-1FLA*W1IA=3D"@"8`0``F`$```(```!%``&4
-M:3<``$`1``#`J`$!P*@!`@'T`?0!@`=3DE>`2M9JJ24/\``````````"$@(@@`
-M```````!>"(``'@```!T``$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M0#L>L.*]XQ+T[&4W*./`ROL7X-1JXP"DP)\\\?,/2MQ'@Y\K at HI.E6B6%(!\
-M(Q!Z)?>:0*^0U/C)@5'<2G&GUC%NZC&2VGP7,:!<;2=3DW[-AEB>V4\U4DA6/1
-MCK$?RE7RN9 at D*M\@DI8+)H2NN!M'?J)2\>L?D"BGW\A=3DH/<V5\4I```D/)*'
-M+B(=3DJ?S[)D^,$'X)$WNRL.BU53U[]R_ZAHZZ)6DI```<``!`!(*A#V#9?%\H
-M^W[&?!Q^Z-4Q:;UF````'```0`6U\^)3G8B,W_8(3$XS+0 at W3;DYZ[(2MT8P
-MA at T`F`$``)@!```"````10`!E&DZ``!`$0``P*@!`<"H`0(!]`'T`8`'97@$
-MK6:JDE#_```````````A("((`````````7 at B``!X````=3D``!``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``$`['K#BO>,2].QE-RCCP,K[%^#4:N,`I,"?
-M//'S#TK<1X.?*X**3I5HEA2`?",0>B7WFD"OD-3XR8%1W$IQI]8Q;NHQDMI\
-M%S&@7&TG=3D^S898GME/-5)(5CT8ZQ'\I5\KF8)"K?()*6"R:$KK@;1WZB4O'K
-M'Y`HI]_(7:#W-E?%*0``)#R2ARXB':G\^R9/C!!^"1-[LK#HM54]>_<O^H:.
-MNB5I*0``'```0`2"H0]@V7Q?*/M^QGP<?NC5,6F]9@```!P``$`%M?/B4YV(
-MC-_V"$Q.,RT(-TVY.>NS$K=3D&?(4$`)@!``"8`0```@```$4``91I00``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V5X!*UFJI)0_P``````````(2`B"`````````%X
-M(@``>````'0``0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!`.QZPXKWC
-M$O3L93<HX\#*^Q?@U&KC`*3`GSSQ\P]*W$>#GRN"BDZ5:)84@'PC$'HE]YI`
-MKY#4^,F!4=3DQ*<:?6,6[J,9+:?!<QH%QM)W?LV&6)[93S522%8]&.L1_*5?*Y
-MF"0JWR"2E at LFA*ZX&T=3D^HE+QZQ^0**??R%V@]S97Q2D``"0\DH<N(AVI_/LF
-M3XP0?@D3>[*PZ+55/7OW+_J&CKHE:2D``!P``$`$@J$/8-E\7RC[?L9\''[H
-MU3%IO68````<``!`!;7SXE.=3DB(S?]@A,3C,M"#=3D-N3GKM!*W1I22`@"8`0``
-MF`$```(```!%``&4:4D``$`1``#`J`$!P*@!`@'T`?0!@`=3DEL[45*532?]P`
-M`````````"$@(@@````````!>"(``'@```!T`@$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``;9RH\C??@04IW3V5:#GZGXCF2B]&%[$ZRK3=3DVWK<AP^\
-M`VM,,6N`=3DNSV5^>8?X&HM"4OGD?.]$,B0YS%6%^O4YIWV,A5HXN9LCF4*5_.
-M at VY*DTSX2NEPQ]\NQR1-_6:3C]:&,LX[ANZNL>3%:FU7G+`H:NNCYGW5X0K1
-M3CJ_K*DI```DIX-H+5OQ#&/.Z,HX7W<'%>_<-E$XJAFNJ%PK5U-0=3DW,I```<
-M``!`!.-N0B0<\3->7I+7<\H+H*/`R)[)````'```0`4S?7U]\I(^6Y/,SA#A
-M at N&M)TW#DK02MT;KO04`F`$``)@!```"````10`!E&E+``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9;.U%2E4TG_<```````````A("((`````````7 at B``!X````
-M=3D`(!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``&V<J/(WWX$%*=3DT]E6 at Y
-M^I^(YDHO1A>Q.LJTW=3DMZW(</O`-K3#%K@';L]E?GF'^!J+0E+YY'SO1#(D.<
-MQ5A?KU.:=3D]C(5:.+F;(YE"E?SH-N2I-,^$KI<,??+L<D3?UFDX_6AC+..X;N
-MKK'DQ6IM5YRP*&KKH^9]U>$*T4XZOZRI*0``)*>#:"U;\0QCSNC*.%]W!Q7O
-MW#91.*H9KJA<*U=3D34'=3DS*0``'```0`3C;D(D'/$S7EZ2UW/*"Z"CP,B>R0``
-M`!P``$`%,WU]??*2/EN3S,X0X8+AK2=3D-PY*T$K=3D&:O\+`)@!``"8`0```@``
-M`$4``91I30``0!$``,"H`0'`J`$"`?0!]`&`!V6SM14I5-)_W```````````
-M(2`B"`````````%X(@``>````'0"`0`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``!MG*CR-]^!!2G=3D/95H.?J?B.9*+T87L3K*M-W;>MR'#[P#:TPQ:X!V
-M[/97YYA_@:BT)2^>1\[T0R)#G,587Z]3FG?8R%6CBYFR.90I7\Z#;DJ33/A*
-MZ7#'WR[')$W]9I./UH8RSCN&[JZQY,5J;5><L"AJZZ/F?=3D7A"M%..K^LJ2D`
-M`"2G at V@M6_$,8\[HRCA?=3DP<5[]PV43BJ&:ZH7"M74U!W<RD``!P``$`$XVY"
-M)!SQ,UY>DM=3DSR at N@H\#(GLD````<``!`!3-]?7WRDCY;D\S.$.&"X:TG3<.2
-MM1*W1DX/"@"8`0``F`$```(```!%``&4:5D``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE[M`0Q#RKL6@``````````"$@(@@````````!>"(``'@```!T`P$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``X=3D$]. at 0[Y9EN6NC91E70D`,'6"$4
-MR\?D6WZ]`4L!4+4<Z;\;FY>T4H"I6KU8"W;K=3D6:E9.":B8XXYK6A%>T,N2WI
-M,F(\>\WM60X3>U<:AK8%X_.!6W*IG%"2]=3D/#^K]6%[A:O%E9_N:9KY3M:S_Y
-M-T6GI4?X7>RCD\F+VY8Q/3$I```D.C?:A_B"YKJ at R%>(N30K2P^<H!<"U`[U
-M3`5<*,BAUE`I```<``!`!"MMNWK7E,X"D8=3D>L4BE-)YB*R.?````'```0`63
-M-DT!6\V at O',O=3DNJ^WD`':0-VA;42MT;R-PT`F`$``)@!```"````10`!E&E<
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9>[0$,0\J[%H```````````A("((````
-M`````7 at B``!X````=3D`,!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``.'1
-M/3H$.^69;EKHV495T)`#!U at A%,O'Y%M^O0%+`5"U'.F_&YN7M%*`J5J]6`MV
-MZW5FI63 at FHF...:UH17M#+DMZ3)B/'O-[5D.$WM7&H:V!>/S at 5MRJ9Q0DO73
-MP_J_5A>X6KQ96?[FF:^4[6L_^3=3D%IZ5'^%WLHY/)B]N6,3TQ*0``)#HWVH?X
-M at N:ZH,A7B+DT*TL/G*`7`M0.]4P%7"C(H=3D90*0``'```0`0K;;MZUY3.`I&'
-M7K%(I32>8BLCGP```!P``$`%DS9-`5O-H+QS+W;JOMY`!VD#=3DH6V$K=3D&4C<$
-M`)@!``"8`0```@```$4``91I8P``0!$``,"H`0'`J`$"`?0!]`&`!V7NT!#$
-M/*NQ:```````````(2`B"`````````%X(@``>````'0#`0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``#AT3TZ!#OEF6Y:Z-E&5=3D"0`P=3D8(13+Q^1;?KT!
-M2P%0M1SIOQN;E[12@*E:O5 at +=3DNMU9J5DX)J)CCCFM:$5[0RY+>DR8CQ[S>U9
-M#A-[5QJ&M at 7C\X%;<JF<4)+UT\/ZOU87N%J\65G^YIFOE.UK/_DW1:>E1_A=3D
-M[*.3R8O;EC$],2D``"0Z-]J'^(+FNJ#(5XBY-"M+#YR@%P+4#O5,!5PHR*'6
-M4"D``!P``$`$*VV[>M>4S@*1AUZQ2*4TGF(K(Y\````<``!`!9,V30%;S:"\
-M<R]VZK[>0`=3DI`W:%MQ*W1KM#`@"8`0``F`$```(```!%``&4:64``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE[SV!8AW#15P``````````"$@(@@````````!>"(`
-M`'@```!T!`$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``\V%L*H')3QEW
-M*ORK?@HV`H%X0`"29W!@%ZLT&2UU=3D*;-[F#T"XL*PV8?7`[1\_PU8#I?X[DW
-MK`(0B>JC.=3D<0R("0Q[0 at TI,65X!NT?;W!9G?#'#)M"C[K&K2G=3DNZ;TU#`9,W
-M0?:WW?OA:J3-@%+/KC*=3DC.WJ)N_2-TE(BO(\1. at I```D=3D!']P&H[FDDXP*K*
-MV,"F\0/PE/$7J2XRS\'EX/`TKW\I```<``!`!&4QDI8_*2KP[I%N95(7(LO)
-MFO8T````'```0`7IE/"5?@S\(M1SH]3H"K9;+_#JEK<2MT:N;P4`F`$``)@!
-M```"````10`!E&EF``!`$0``P*@!`<"H`0(!]`'T`8`'9>\]@6(=3DPT5<````
-M```````A("((`````````7 at B``!X````=3D`0!``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``/-A;"J!R4\9=3DRK\JWX*-@*!>$``DF=3DP8!>K-!DM=3D72FS>Y@
-M]`N+"L-F'UP.T?/\-6`Z7^.Y-ZP"$(GJHSG7$,B`D,>T(-*3%E>`;M'V]P69
-MWPQPR;0H^ZQJTIW;NF]-0P&3-T'VM]W[X6JDS8!2SZXRG8SMZB;OTC=3D)2(KR
-M/$3H*0``)'01_<!J.YI).,"JRMC`IO$#\)3Q%ZDN,L_!Y>#P-*]_*0``'```
-M0`1E,9*6/RDJ\.Z1;F52%R++R9KV-````!P``$`%Z93PE7X,_"+4<Z/4Z`JV
-M6R_PZI:W$K=3D&*;$+`)@!``"8`0```@```$4``91I9P``0!$``,"H`0'`J`$"
-M`?0!]`&`!V7O/8%B'<-%7```````````(2`B"`````````%X(@``>````'0$
-M`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``#S86PJ@<E/&7<J_*M^"C8"
-M at 7A``))G<&`7JS09+75TILWN8/0+BPK#9A]<#M'S_#5 at .E_CN3>L`A")ZJ,Y
-MUQ#(@)#'M"#2DQ97@&[1]O<%F=3D\,<,FT*/NL:M*=3DV[IO34,!DS=3D!]K?=3D^^%J
-MI,V`4L^N,IV,[>HF[](W24B*\CQ$Z"D``"1T$?W`:CN:23C`JLK8P*;Q`_"4
-M\1>I+C+/P>7@\#2O?RD``!P``$`$93&2EC\I*O#ND6YE4A<BR\F:]C0````<
-M``!`!>F4\)5^#/PBU'.CU.@*MELO\.J6N!*W1A6]"0"8`0``F`$```(```!%
-M``&4:6H``$`1``#`J`$!P*@!`@'T`?0!@`=3DE.O/5@#`=3D3!4``````````"$@
-M(@@````````!>"(``'@```!T!0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``C-)FKD)JN_P&+WEKRA5X-&<F-$;ZE;<LZ]H9E:)"!?I%[PQ1%7K?0IW:
-MB'BD"G%SX^4&*RC`/(M/?(Z"I?^C`6D-B-J:!E./&&.N'>E6_%Q8HS&<LASJ
-M++;L$W\WO,"]%HS6UOLN000E$.-K<\C#P\!.X%SX89#):U<)81LA+F8I```D
-M>1U\=3DO1<:)[KXS53),2(6_(/'2B\%0-ZA]>/B#7KJ,4I```<``!`!)XJZQ&2
-MJ6=3D3F"CX4V3GR[.=3D/`)#````'```0`6+38!R7=3D;,[,!"8N<#HR>FY11'];@2
-MMT:HZ0P`F`$``)@!```"````10`!E&EK``!`$0``P*@!`<"H`0(!]`'T`8`'
-M93KSU8`P'4P5```````````A("((`````````7 at B``!X````=3D`4!``P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``(S29JY":KO\!B]Y:\H5>#1G)C1&^I6W
-M+.O:&96B0 at 7Z1>\,415ZWT*=3DVHAXI`IQ<^/E!BLHP#R+3WR. at J7_HP%I#8C:
-MF at 93CQACKAWI5OQ<6*,QG+(<ZBRV[!-_-[S`O1:,UM;[+D$$)1#C:W/(P\/`
-M3N!<^&&0R6M7"6$;(2YF*0``)'D=3D?';T7&B>Z^,U4R3$B%OR#QTHO!4#>H?7
-MCX at UZZC%*0``'```0`2>*NL1DJEG4Y at H^%-DY\NSG3P"0P```!P``$`%BTV`
-M<EW6S.S`0F+G`Z,GIN441_6Y$K=3D&\^@#`)@!``"8`0```@```$4``91I;```
-M0!$``,"H`0'`J`$"`?0!]`&`!V4Z\]6`,!U,%0``````````(2`B"```````
-M``%X(@``>````'0%`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``",TF:N
-M0FJ[_`8O>6O*%7 at T9R8T1OJ5MRSKVAF5HD(%^D7O#%$5>M]"G=3DJ(>*0*<7/C
-MY08K*,`\BT]\CH*E_Z,!:0V(VIH&4X\88ZX=3DZ5;\7%BC,9RR'.HLMNP3?S>\
-MP+T6C-;6^RY!!"40XVMSR,/#P$[@7/AAD,EK5PEA&R$N9BD``"1Y'7QV]%QH
-MGNOC-5,DQ(A;\@\=3D*+P5`WJ'UX^(->NHQ2D``!P``$`$GBKK$9*I9U.8*/A3
-M9.?+LYT\`D,````<``!`!8M-@')=3DULSLP$)BYP.C)Z;E%$?UNA*W1G[W`0"8
-M`0``F`$```(```!%``&4:6X``$`1``#`J`$!P*@!`@'T`?0!@`=3DE&[])+1EZ
-MI:X``````````"$@(@@````````!>"(``'@```!T"`$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``54E\0:%A.;M6RE<R218P;.\4]QFL5/ZES/HSM((7
-MP&Z.`M0D6VN<SZQ[4%FY[1RHH4"RZ([H=3D0[`83W(U!OH!B#P$;S[;S"P63*U
-MKX$WW1`"NJ1?0[J0O'/T%5A)@WV7USYT-"Y at G9IG`:#)YG@;E?(SPA+"Z$'G
-ML`T&E5FYSMDI```D#\I#38W^H_8)@[KY8-8V]:$?Q";AJTO`TX,O6!*.5ODI
-M```<``!`!,:Z77HT>R2*0FPH,7+!L at Z'37>"````'```0`5S//[M9'YV&!0L
-MH"^[;G;^'#(#%KH2MT:=3D(04`F`$``)@!```"````10`!E&EQ``!`$0``P*@!
-M`<"H`0(!]`'T`8`'91N_22T9>J6N```````````A("((`````````7 at B``!X
-M````=3D`@!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``%5)?$&A83F[5LI7
-M,DD6,&SO%/<9K%3^I<SZ,[2"%\!NC at +4)%MKG,^L>U!9N>T<J*%`LNB.Z'4.
-MP&$]R-0;Z`8@\!&\^V\PL%DRM:^!-]T0`KJD7T.ZD+QS]!5828-]E]<^=3D#0N
-M8)V:9P&@R>9X&Y7R,\(2PNA!Y[`-!I59N<[9*0``)`_*0TV-_J/V"8.Z^6#6
-M-O6A'\0FX:M+P-.#+U at 2CE;Y*0``'```0`3&NEUZ-'LDBD)L*#%RP;(.ATUW
-M@@```!P``$`%<SS^[61^=3DA at 4+*`ONVYV_APR`Q:Z$K=3D&'F,+`)@!``"8`0``
-M`@```$4``91I=3DP``0!$``,"H`0'`J`$"`?0!]`&`!V4;OTDM&7JEK@``````
-M````(2`B"`````````%X(@``>````'0(`0`,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!527Q!H6$YNU;*5S))%C!L[Q3W&:Q4_J7,^C.T at A?`;HX"U"1;
-M:YS/K'M06;GM'*BA0++HCNAU#L!A/<C4&^@&(/`1O/MO,+!9,K6O at 3?=3D$`*Z
-MI%]#NI"\<_056$F#?9?7/G0T+F"=3DFF<!H,GF>!N5\C/"$L+H0>>P#0:56;G.
-MV2D``"0/RD--C?ZC]@F#NOE at UC;UH1_$)N&K2\#3 at R]8$HY6^2D``!P``$`$
-MQKI=3D>C1[)(I";"@Q<L&R#H=3D-=3DX(````<``!`!7,\_NUD?G88%"R at +[MN=3DOX<
-M,@,6NQ*W1M]O"0"8`0``F`$```(```!%``&4:7H``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE5D1F`SAX[>X``````````"$@(@@````````!>"(``'@```!T"0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``\RP=3D>[Q>7OSPK_U#U/^TW^?3
-M"-.TRD.A\RBA@;\@Z,C'O,*FGB;(Z*T-?RSG7*^[Q=3D"R4"=3D1\EB@"$WN9+"'
-MR*X39*JRRBGS<X)Z^?UDX,U-VW0-R*E?(HQX6.%9VF97T0ZX5 at M/&`W_979;
-MPN*D\5-'^:3V3'_8V(&YK3UJ[Y<I```D9;4HE,M]Y8H5E%GP6;F"*`9/)+,C
-M52!35</<+B$]$:TI```<``!`!-.NS%B<0.+:[_-677=3D?C&L)BGV<````'```
-M0`4X,B=3D!(%807+B\YH<K>KE!<]3V>+L2MT:%FPP`F`$``)@!```"````10`!
-ME&E\``!`$0``P*@!`<"H`0(!]`'T`8`'959$9@,X>.WN```````````A("((
-M`````````7 at B``!X````=3D`D!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`/,L'7N\7E[\\*_]0]3_M-_GTPC3M,I#H?,HH8&_(.C(Q[S"IIXFR.BM#7\L
-MYURON\70LE`G4?)8H`A-[F2PA\BN$V2JLLHI\W.">OG]9.#-3=3DMT#<BI7R*,
-M>%CA6=3DIF5]$.N%8+3Q at -_V5V6\+BI/%31_FD]DQ_V-B!N:T]:N^7*0``)&6U
-M*)3+?>6*%919\%FY at B@&3R2S(U4 at 4U7#W"XA/1&M*0``'```0`33KLQ8G$#B
-MVN_S5EUW7XQK"8I]G````!P``$`%.#(G02!6$%RXO.:'*WJY07/4]GB\$K=3D&
-MPYH#`)@!``"8`0```@```$4``91I?@``0!$``,"H`0'`J`$"`?0!]`&`!V56
-M1&8#.'CM[@``````````(2`B"`````````%X(@``>````'0)`0`,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``#S+!U[O%Y>_/"O_4/4_[3?Y],(T[3*0Z'S
-M**&!OR#HR,>\PJ:>)LCHK0U_+.=3D<K[O%T+)0)U'R6*`(3>YDL(?(KA-DJK+*
-M*?-S at GKY_63@S4W;=3D`W(J5\BC'A8X5G:9E?1#KA6"T\8#?]E=3DEO"XJ3Q4T?Y
-MI/9,?]C8@;FM/6KOERD``"1EM2B4RWWEBA646?!9N8(H!D\DLR-5(%-5P]PN
-M(3T1K2D``!P``$`$TZ[,6)Q`XMKO\U9=3D=3DU^,:PF*?9P````<``!`!3 at R)T$@
-M5A!<N+SFARMZN4%SU/9XO1*W1LFF`0"8`0``F`$```(```!%``&4:7\``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEU"?<NU2*'VX``````````"$@(@@````````!
-M>"(``'@```!T"@$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``VQ3\!*;/
-MX9,!+9>;E7D!#1D;M#!YX(/?K/()%]1%X*5IJNDUV?((_U[`^S<2<JE!;NZK
-MWY&:OKG#J'_3=3DK_H7V0PZ_.F8T*:^(ZIBRNK.K_?!5_H-\$WU,C:L82=3D7N@\
-MV_;+G%`BY4#_K=3DN$E5F=3DVL'*?\E/D8/;K]=3DB]VQ:N?@I```DGGX9M\IZI6CO
-M])Q$1H!()X649")J]05PE+1%YSJ-#PTI```<``!`!$49&"Y&%\"WSC&8/_AG
-M!0EE\F$`````'```0`6'J3&*(^+QUUJ1N at Q/`B!AW&KYD[T2MT8VTP0`F`$`
-M`)@!```"````10`!E&F```!`$0``P*@!`<"H`0(!]`'T`8`'9=3D0GW+M4BA]N
-M```````````A("((`````````7 at B``!X````=3D`H!``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``-L4_`2FS^&3`2V7FY5Y`0T9&[0P>>"#WZSR"1?41>"E
-M::KI-=3DGR"/]>P/LW$G*I06[NJ]^1FKZYPZA_TW:_Z%]D,.OSIF-"FOB.J8LK
-MJSJ_WP5?Z#?!-]3(VK&$G5[H/-OVRYQ0(N5`_ZW;A)59G=3DK!RG_)3Y&#VZ_7
-M8O=3DL6KGX*0``))Y^&;?*>J5H[_2<1$:`2">%E&0B:O4%<)2T1><ZC0\-*0``
-M'```0`1%&1 at N1A?`M\XQF#_X9P4)9?)A`````!P``$`%AZDQBB/B\=3D=3D:D;H,
-M3P(@8=3DQJ^9.]$K=3D&NQ0+`)@!``"8`0```@```$4``91I at 0``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V74)]R[5(H?;@``````````(2`B"`````````%X(@``>```
-M`'0*`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``#;%/P$IL_ADP$MEYN5
-M>0$-&1NT,'G@@]^L\@D7U$7 at I6FJZ379\@C_7L#[-Q)RJ4%N[JO?D9J^N<.H
-M?]-VO^A?9##K\Z9C0IKXCJF+*ZLZO]\%7^@WP3?4R-JQA)U>Z#S;]LN<4"+E
-M0/^MVX2569W:P<I_R4^1@]NOUV+W;%JY^"D``"2>?AFWRGJE:._TG$1&@$@G
-MA91D(FKU!7"4M$7G.HT/#2D``!P``$`$11D8+D87P+?.,9 at _^&<%"67R80``
-M```<``!`!8>I,8HCXO'76I&Z#$\"(&'<:OF3OA*W1F at A"0"8`0``F`$```(`
-M``!%``&4:80``$`1``#`J`$!P*@!`@'T`?0!@`=3DE?*Y1;CYAVQT`````````
-M`"$@(@@````````!>"(``'@```!T_P$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``@4YH\)3 at A^..U`>V\HLEZ4;`R/V#EFQLGJ.EN;@K"UCEX#B[E'_0
-M)QN\F;<)D3X(PS.Y$(62_1WZX+/W7<,8F!0\YIKX,\`$6%^)THN18'*D3V[]
-M"2RZE1]DX'\JF)(+1XKG8(1__5BOVK?(3Q0Z8#!IMJNA)J0):\5QUHJ/"`0I
-M```D%[*-[W<\5K6AAK)IPM&>[)R_P!$S?Z.NH-7/B`JT5(\I```<``!`!(P(
-M[M1Q3-$-T^8]-*)<J0?_$CB9````'```0`4-'>8\^!$*_+FN+H21<+<CUXU+
-M#[X2MT8Q30P`F`$``)@!```"````10`!E&F'``!`$0``P*@!`<"H`0(!]`'T
-M`8`'97RN46X^8=3DL=3D```````````A("((`````````7 at B``!X````=3D/\!``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``(%.:/"4X(?CCM0'MO*+)>E&P,C]
-M at Y9L;)ZCI;FX*PM8Y>`XNY1_T"<;O)FW"9$^",,SN1"%DOT=3D^N"S]UW#&)@4
-M/.::^#/`!%A?B=3D*+D6!RI$]N_0DLNI4?9.!_*IB2"T>*YV"$?_U8K]JWR$\4
-M.F`P:;:KH2:D"6O%<=3D:*CP@$*0``)!>RC>]W/%:UH8:R:<+1GNR<O\`1,W^C
-MKJ#5SX@*M%2/*0``'```0`2,".[4<4S1#=3D/F/32B7*D'_Q(XF0```!P``$`%
-M#1WF//@1"ORYKBZ$D7"W(]>-2P^_$K=3D&HTP#`)@!``"8`0```@```$4``91I
-MBP``0!$``,"H`0'`J`$"`?0!]`&`!V5\KE%N/F';'0``````````(2`B"```
-M``````%X(@``>````'3_`0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"!
-M3FCPE."'XX[4![;RBR7I1L#(_8.6;&R>HZ6YN"L+6.7 at .+N4?]`G&[R9MPF1
-M/@C#,[D0A9+]'?K at L_=3D=3DPQB8%#SFFO at SP`187XG2BY%@<J1/;OT)++J5'V3@
-M?RJ8D at M'BN=3D at A'_]6*_:M\A/%#I@,&FVJZ$FI`EKQ7'6BH\(!"D``"07LHWO
-M=3DSQ6M:&&LFG"T9[LG+_`$3-_HZZ at U<^("K14CRD``!P``$`$C`CNU'%,T0W3
-MYCTTHERI!_\2.)D````<``!`!0T=3DYCSX$0K\N:XNA)%PMR/7C4L/P!*W1O5:
-M`0"8`0``F`$```(```!%``&4:8\``$`1``#`J`$!P*@!`@'T`?0!@`=3DE-=3D"J
-MF%YEWN8``````````"$@(@@````````!>"(``'@```!T@`$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``M+9:6>L'D<L>64E>G+O8LNL^K$[`Q^SHKTI_
-M[(3VIAU)YPL4G0YQ0:OR)!<#5;YS,BH'E(ILRB=3DXC;A@/%]G\5)Q[\6N?G9(
-M]2T"G3T;J49;*9^4&HFNX(0O/%FGATNLY(%AJMHFAK$K_LH5XJT4B`(`FB.<
-M;N#9T?=3DTS>D(NG\I```D1+JV%8.75;&"O=3DCY,.^?M1]T#R'%JM6\:51:,SQ2
-M/E,I```<``!`!!J3M(E1U=3D<\G"B/Y!1O%.T6BU#2````'```0`6#$],6*4/:
-M6-D-J3GXB`WU\]6L8L`2MT8(A00`F`$``)@!```"````10`!E&F1``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9370JIA>9=3D[F```````````A("((`````````7 at B
-M``!X````=3D(`!``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``+2V6EGK!Y'+
-M'EE)7IR[V++K/JQ.P,?LZ*]*?^R$]J8=3D2><+%)T.<4&K\B07`U6^<S(J!Y2*
-M;,HG>(VX8#Q?9_%2<>_%KGYV2/4M`IT]&ZE&6RF?E!J)KN"$+SQ9IX=3D+K.2!
-M8:K:)H:Q*_[*%>*M%(@"`)HCG&[@V=3D'W=3D,WI"+I_*0``)$2ZMA6#EU6Q at KW8
-M^3#OG[4?=3D`\AQ:K5O&E46C,\4CY3*0``'```0`0:D[2)4=3D77/)PHC^04;Q3M
-M%HM0T@```!P``$`%@Q/3%BE#VEC9#:DY^(@-]?/5K&+`$K=3D&G,8*`)@!``"8
-M`0```@```$4``91IEP``0!$``,"H`0'`J`$"`?0!]`&`!V4UT*J87F7>Y@``
-M````````(2`B"`````````%X(@``>````'2``0`,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``"TMEI9ZP>1RQY925Z<N]BRZSZL3L#'[.BO2G_LA/:F'4GG
-M"Q2=3D#G%!J_(D%P-5OG,R*@>4BFS*)WB-N&`\7V?Q4G'OQ:Y^=3DDCU+0*=3D/1NI
-M1ELIGY0:B:[@A"\\6:>'2ZSD at 6&JVB:&L2O^RA7BK12(`@":(YQNX-G1]W3-
-MZ0BZ?RD``"1$NK85 at Y=3D5L8*]V/DP[Y^U'W0/(<6JU;QI5%HS/%(^4RD``!P`
-M`$`$&I.TB5'5USR<*(_D%&\4[1:+4-(````<``!`!8,3TQ8I0]I8V0VI.?B(
-M#?7SU:QBP1*W1G?2"`"8`0``F`$```(```!%``&4:9\``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE+P_'*/C<CG@``````````"$@(@@````````!>"(``'@```!T
-M`0``#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``XL$>!,PN/`;L`\)5^(V#
-M at A]@N)RLPLE8I`ZL6<HD4PV>R6Z?#KG2`X;%]:Y5__I0HOK$=3D\NSO?`2I[LO
-M[:>]LZK+_,.(SA!]5#=3DF?IKZ:,#%#FY1WLJN)CM</(?/$]E0BEP',%)IVT;\
-M:2Q<@=3D2,YHK%R'T4]UUX!,.LNA:31(\I```D'1O#ZR'A6GGN,0(#+K>0SS/Q
-M+YFC*N/Q7_<OU&+XT?(I```<``!`!+.E-R/)0*,56.NB%3HO+\*GRAE&````
-M'```0`4O!`+*6T#%42VJ-]CY4/TZ;)>`-L$2MT;N_ at L`F`$``)@!```"````
-M10`!E&F@``!`$0``P*@!`<"H`0(!]`'T`8`'92\/QRCXW(YX```````````A
-M("((`````````7 at B``!X````=3D`$```P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``.+!'@3,+CP&[`/"5?B- at X(?8+B<K,+)6*0.K%G*)%,-GLENGPZYT at .&
-MQ?6N5?_Z4*+ZQ'?+L[WP$J>[+^VGO;.JR_S#B,X0?50W9GZ:^FC`Q0YN4=3D[*
-MKB8[7#R'SQ/94(I<!S!2:=3DM&_&DL7('4C.:*Q<A]%/=3D=3D>`3#K+H6DT2/*0``
-M)!T;P^LAX5IY[C$"`RZWD,\S\2^9HRKC\5_W+]1B^-'R*0``'```0`2SI3<C
-MR4"C%5CKHA4Z+R_"I\H91@```!P``$`%+P0"REM`Q5$MJC?8^5#].FR7@#;"
-M$K=3D&<?X"`)@!``"8`0```@```$4``91II0``0!$``,"H`0'`J`$"`?0!]`&`
-M!V4O#\<H^-R.>```````````(2`B"`````````%X(@``>````'0!```,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``#BP1X$S"X\!NP#PE7XC8."'V"XG*S"
-MR5BD#JQ9RB13#9[);I\.N=3D(#AL7UKE7_^E"B^L1WR[.]\!*GNR_MI[VSJLO\
-MPXC.$'U4-V9^FOIHP,4.;E'>RJXF.UP\A\\3V5"*7`<P4FG;1OQI+%R!U(SF
-MBL7(?13W77@$PZRZ%I-$CRD``"0=3D&\/K(>%:>>XQ`@,NMY#/,_$OF:,JX_%?
-M]R_48OC1\BD``!P``$`$LZ4W(\E`HQ58ZZ(5.B\OPJ?*&48````<``!`!2\$
-M`LI;0,51+:HWV/E0_3ILEX`VPQ*W1H8-`0"8`0``F`$```(```!%``&4:;8`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE\;[69&DX>^P``````````"$@(@@`````
-M```!>"(``'@```!T`0(`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``>.M(
-M4M+P(4]M\[?N,>^K=3DM=3DW?]"R6.-+U$00B&CFRB``R#5$%>_@)]X6?K<^2*QJ
-M*KG&&N[E.-I]M:[^B8(Z^"5?[&0-&=3D0`V*&JD=3D4\@FRH)^)7UO`\#/:_$1R<
-MMWGL6.MJW`OOYZRYS.6>\CLBY_@>/O1\K5#%$Q.6+].0#.4I```DC$W'V8BM
-MK8C0&<$GSW$X($NB-YJ0;''Z+XJ0$8Z<R94I```<``!`!,0*I0$;2`X"^Y>;
-M"!+U6Y=3DE*]Z*````'```0`7Q$LXFQ@;!&)YSYW>%%C*$*4%-S\,2MT;9- at 0`
-MF`$``)@!```"````10`!E&FX``!`$0``P*@!`<"H`0(!]`'T`8`'9?&^UF1I
-M.'OL```````````A("((`````````7 at B``!X````=3D`$"``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``'CK2%+2\"%/;?.W[C'OJW;7=3DW_0LECC2]1$$(AH
-MYLH@`, at U1!7OX"?>%GZW/DBL:BJYQAKNY3C:?;6N_HF".O at E7^QD#1G4`-BA
-MJI'5/()LJ"?B5];P/`SVOQ$<G+=3DY[%CK:MP+[^>LN<SEGO([(N?X'C[T?*U0
-MQ1,3EB_3D`SE*0``)(Q-Q]F(K:V(T!G!)\]Q."!+HC>:D&QQ^B^*D!&.G,F5
-M*0``'```0`3$"J4!&T at .`ON7FP at 2]5N792O>B@```!P``$`%\1+.)L8&P1B>
-M<^=3DWA18RA"E!3<_#$K=3D&=3D'@*`)@!``"8`0```@```$4``91INP``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7QOM9D:3A[[```````````(2`B"`````````%X(@``
-M>````'0!`@`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``!XZTA2TO`A3VWS
-MM^XQ[ZMVUW=3D_T+)8XTO41!"(:.;*(`#(-405[^`GWA9^MSY(K&HJN<8:[N4X
-MVGVUKOZ)@CKX)5_L9`T9U`#8H:J1U3R";*@GXE?6\#P,]K\1')RW>>Q8ZVK<
-M"^_GK+G,Y9[R.R+G^!X^]'RM4,43$Y8OTY`,Y2D``"2,3<?9B*VMB-`9P2?/
-M<3@@2Z(WFI!L<?HOBI`1CIS)E2D``!P``$`$Q`JE`1M(#@+[EYL($O5;EV4K
-MWHH````<``!`!?$2SB;&!L$8GG/G=3DX46,H0I04W/Q!*W1FF%"`"8`0``F`$`
-M``(```!%``&4:=3DT``$`1``#`J`$!P*@!`@'T`?0!@`=3DEXH!\#![5-3(`````
-M`````"$@(@@````````!>"(``'@```!T`0(`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``])_,`R&-"4'ZLN)$IJ-9SHR(C(M!IK>>_;[RU[K#L/NT;.YS
-M0-_/]]%QYF$X+ZB7@)@[P8'BI<#[NA7"6[!#LS0 at SN[M`P2US)9<U9E7K$QW
-MN).A:S+\M!CG\W^B/>571MU59"Q"7S%CN!>1\HUMHN?%"Z-&'AW1M7NJ-]UU
-M@>,I```DH1L]"_4&7I.DQNR[D at +<`Y7;S/6$=3D!S..X_]3P!(#`TI```<``!`
-M!"&3D+170X(\=3D0*"P0\X;?X$8GJ%````'```0`5[?6=3D`0,NV&D":E*<<0R0)
-MJ7)-<,02MT:QL`L`F`$``)@!```"````10`!E&G>``!`$0``P*@!`<"H`0(!
-M]`'T`8`'9>*`?`P>U34R```````````A("((`````````7 at B``!X````=3D`$"
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``/2?S`,AC0E!^K+B1*:C6<Z,
-MB(R+0::WGOV^\M>ZP[#[M&SN<T#?S_?1<>9A."^HEX"8.\&!XJ7`^[H5PENP
-M0[,T(,[N[0,$M<R67-695ZQ,=3D[B3H6LR_+08Y_-_HCWE5T;=3D560L0E\Q8[@7
-MD?*-;:+GQ0NC1AX=3DT;5[JC?=3D=3D8'C*0``)*$;/0OU!EZ3I,;LNY("W`.5V\SU
-MA'0<SCN/_4\`2`P-*0``'```0`0ADY"T5T."/'4"@L$/.&W^!&)ZA0```!P`
-M`$`%>WUG0$#+MAI`FI2G'$,D":ER37#%$K=3D&%K`"`)@!``"8`0```@```$4`
-M`91IWP``0!$``,"H`0'`J`$"`?0!]`&`!V7B@'P,'M4U,@``````````(2`B
-M"`````````%X(@``>````'0!`@`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#TG\P#(8T)0?JRXD2FHUG.C(B,BT&FMY[]OO+7NL.P^[1L[G-`W\_WT7'F
-M83 at OJ)>`F#O!@>*EP/NZ%<);L$.S-"#.[NT#!+7,EES5F5>L3'>XDZ%K,ORT
-M&.?S?Z(]Y5=3D&W55D+$)?,6.X%Y'RC6VBY\4+HT8>'=3D&U>ZHWW76!XRD``"2A
-M&ST+]09>DZ3&[+N2`MP#E=3DO,]81T',X[C_U/`$@,#2D``!P``$`$(9.0M%=3D#
-M at CQU`H+!#SAM_ at 1B>H4````<``!`!7M]9T!`R[8:0)J4IQQ#)`FI<DUPQA*W
-M1A^]``"8`0``F`$```(```!%``&4:>```$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MRQ0'?GB at 7NT``````````"$@(@@````````!>"(``'@```!T`0,`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``BIWYT6BP4+H7D3>=3D6T)/ZG"W\M][BS`)
-MF]98E]A7E971#2]M!7G at TYK-]2;IVERG]>AA5/01FHFF?B]QL,"A%\ICF]C[
-MN.^^%8,Q*O-D-K0JRIH'(./M0!X1%4]'&NO+#XL797\F?'TLF($T>&&B<\"5
-MQ@,\3<+Y%!Z3'8IU`_PI```D0/2%9L9[5M^MQ1'!F3ZOO&!/E+]7U=3D/(2XG<
-M4Q?K at 3TI```<``!`!),-2R/F?ZI08&&8B>ZHX4K4:'I%````'```0`5E"*MV
-M-ZCQ<40RJ1W"+1J7"SD:3,82MT:&Z`,`F`$``)@!```"````10`!E&GA``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9<L4!WYXH%[M```````````A("((````````
-M`7 at B``!X````=3D`$#``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``(J=3D^=3D%H
-ML%"Z%Y$WG5M"3^IPM_+?>XLP"9O66)?85Y65T0TO;05YX-.:S?4FZ=3DI<I_7H
-M853T$9J)IGXO<;#`H1?*8YO8^[COOA6#,2KS9#:T*LJ:!R#C[4`>$15/1QKK
-MRP^+%V5_)GQ]+)B!-'AAHG/`E<8#/$W"^10>DQV*=3D0/\*0``)$#TA6;&>U;?
-MK<41P9D^K[Q at 3Y2_5]73R$N)W%,7ZX$]*0``'```0`23#4LCYG^J4&!AF(GN
-MJ.%*U&AZ10```!P``$`%90BK=3DC>H\7%$,JD=3DPBT:EPLY&DS&$K=3D&9BH*`)@!
-M``"8`0```@```$4``91IZ0``0!$``,"H`0'`J`$"`?0!]`&`!V7+%`=3D^>*!>
-M[0``````````(2`B"`````````%X(@``>````'0!`P`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``"*G?G1:+!0NA>1-YU;0D_J<+?RWWN+,`F;UEB7V%>5
-ME=3D$-+VT%>>#3FLWU)NG:7*?UZ&%4]!&:B:9^+W&PP*$7RF.;V/NX[[X5 at S$J
-M\V0VM"K*F@<@X^U`'A$53T<:Z\L/BQ=3DE?R9\?2R8 at 31X8:)SP)7&`SQ-POD4
-M'I,=3DBG4#_"D``"1`](5FQGM6WZW%$<&9/J^\8$^4OU?5T\A+B=3DQ3%^N!/2D`
-M`!P``$`$DPU+(^9_JE!@89B)[JCA2M1H>D4````<``!`!64(JW8WJ/%Q1#*I
-M'<(M&I<+.1I,QQ*W1CLX"`"8`0``F`$```(```!%``&4:?L``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEK'3)=3DVO+\^T``````````"$@(@@````````!>"(``'@`
-M``!T`00`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``C%`^1 at J_ZVP<<C#`
-M!4G[N=3DN`B0Y<7G##TW]57JVT4DI0^RBKAG.F#3H\ESK.054I`U]5Q%Y2M/J5
-M9#9LLC)TX%NT1KW3E1=3D/:.1\JMV*@_(*0,P.\J\G\(?&](F>%/V>?W[9%9[E
-ME>F*?+EB($ZC\]JRRA)QR#7D4/E=3DD76K$<8I```D^0I5\O.$\<2/NGHG!7;T
-M.L]C9;NW_4$K]UF+:V,'JE\I```<``!`!"G/2)>MZ,)G-P^NTS[]^\\803*/
-M````'```0`7<T0W'7V@':MXPA.E`%)MDJ&M3,L<2MT:O8 at L`F`$``)@!```"
-M````10`!E&G^``!`$0``P*@!`<"H`0(!]`'T`8`'9:QTR7=3DKR_/M````````
-M```A("((`````````7 at B``!X````=3D`$$``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``(Q0/D8*O^ML''(PP`5)^[G;@(D.7%YPP]-_55ZMM%)*4/LHJX9S
-MI at TZ/)<ZSD%5*0-?5<1>4K3ZE60V;+(R=3D.!;M$:]TY473VCD?*K=3DBH/R"D#,
-M#O*O)_"'QO2)GA3]GG]^V16>Y97IBGRY8B!.H_/:LLH2<<@UY%#Y79%UJQ'&
-M*0``)/D*5?+SA/'$C[IZ)P5V]#K/8V6[M_U!*_=3D9BVMC!ZI?*0``'```0`0I
-MSTB7K>C"9S</KM,^_?O/&$$RCP```!P``$`%W-$-QU]H!VK>,(3I0!2;9*AK
-M4S+($K=3D&_&$"`)@!``"8`0```@```$4``91J#```0!$``,"H`0'`J`$"`?0!
-M]`&`!V6L=3D,EW:\OS[0``````````(2`B"`````````%X(@``>````'0!!``,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``",4#Y&"K_K;!QR,,`%2?NYVX")
-M#EQ><,/3?U5>K;122E#[**N&<Z8-.CR7.LY!52D#7U7$7E*T^I5D-FRR,G3@
-M6[1&O=3D.5%T]HY'RJW8J#\@I`S`[RKR?PA\;TB9X4_9Y_?MD5GN65Z8I\N6(@
-M3J/SVK+*$G'(->10^5V1=3D:L1QBD``"3Y"E7R\X3QQ(^Z>B<%=3DO0ZSV-EN[?]
-M02OW68MK8P>J7RD``!P``$`$*<](EZWHPF<W#Z[3/OW[SQA!,H\````<``!`
-M!=3DS1#<=3D?:`=3DJWC"$Z4`4FV2H:U,RR1*W1M)Z``"8`0``F`$```(```!%``&4
-M:I,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE/9JEK>"CBV\``````````"$@(@@`
-M```````!>"(``'@```!T`0<`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MCL])JCCR%LV78.Y<'V:I8CT,,H\@`*[U3;S)VD$&FPE:0U/[<QCL'_+FIV10
-MPN5O,?5$&MWXD=3D]M6#`Y3`TA:I2IEN4ZOQ?ZA at Z6-Q#B08[D0U0"=3DN0'R=3D<#
-M\CCM$]9:5RR;YR:(J2`")_//4DA\PO3_T0#]\I)<?BG*0U'YBVDI```DT?"I
-MIV++=3DN?<FHN5,@"Y93Y#G0.5Z-MA2>W;;.SC$7\I```<``!`!$;.[4;O((B>
-M<MZ/Q\BG''I!JRC0````'```0`6#7`IR7*D6-_L9+^62SWD.<Y*B>\D2MT9Q
-MF@,`F`$``)@!```"````10`!E&J8``!`$0``P*@!`<"H`0(!]`'T`8`'93V:
-MI:W at HXMO```````````A("((`````````7 at B``!X````=3D`$'``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``([/2:HX\A;-EV#N7!]FJ6(]##*/(`"N]4V\
-MR=3DI!!IL)6D-3^W,8[!_RYJ=3DD4,+E;S'U1!K=3D^)'?;5 at P.4P-(6J4J9;E.K\7
-M^H8.EC<0XD&.Y$-4`G;D!\G7`_(X[1/66E<LF^<FB*D@`B?SSU)(?,+T_]$`
-M_?*27'XIRD-1^8MI*0``)-'PJ:=3DBRW;GW)J+E3(`N64^0YT#E>C;84GMVVSL
-MXQ%_*0``'```0`1&SNU&[R"(GG+>C\?(IQQZ0:LHT````!P``$`%@UP*<ERI
-M%C?[&2_EDL]Y#G.2HGO)$K=3D&^-L)`)@!``"8`0```@```$4``91JG@``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V4]FJ6MX*.+;P``````````(2`B"`````````%X
-M(@``>````'0!!P`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``".STFJ./(6
-MS9=3D@[EP?9JEB/0PRCR``KO5-O,G:00:;"5I#4_MS&.P?\N:G9%#"Y6\Q]40:
-MW?B1WVU8,#E,#2%JE*F6Y3J_%_J&#I8W$.)!CN1#5`)VY`?)UP/R..T3UEI7
-M+)OG)HBI(`(G\\]22'S"]/_1`/WRDEQ^*<I#4?F+:2D``"31\*FG8LMVY]R:
-MBY4R`+EE/D.=3D`Y7HVV%)[=3DML[.,1?RD``!P``$`$1L[M1N\@B)YRWH_'R*<<
-M>D&K*-`````<``!`!8-<"G)<J18W^QDOY9+/>0YSDJ)[RA*W1FKI!P"8`0``
-MF`$```(```!%``&4:JT``$`1``#`J`$!P*@!`@'T`?0!@`=3DE#=3DD/M0^P`<$`
-M`````````"$@(@@````````!>"(``'@```!T`0@`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``G;0HYEJ at HL%]!W7<]L<L5:W]NOE9PHNVQ%PH=3D)W](U43
-M<W,E#CE!0VE;=3DSTW97>G$_4%=3DU7 at 12$C:/6B"NE.MS$B0BZ.]M`!_^G-X3#<
-M<I*0PY[Q!%;!0M_J+*:!7/TQID^W4$)D\C#3D:?<W%&JQI6M:3E-.D:S at 9+"
-M])L!8/TI```D;/.0(@U['BYI07JW`O:T_]4<-YQ6R_E-TY<*N=3DUPF3,I```<
-M``!`!)*R7VK*1>%,35LXL_$<^@)?#<`=3D````'```0`6X]P"T'DAYKU,#A5-"
-MOVI!?:F:;,H2MT9M%`L`F`$``)@!```"````10`!E&JR``!`$0``P*@!`<"H
-M`0(!]`'T`8`'90W9#[4/L`'!```````````A("((`````````7 at B``!X````
-M=3D`$(``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``)VT*.9:H*+!?0=3DUW/;'
-M+%6M_;KY6<*+ML1<*'2=3D_2-5$W-S)0XY04-I6W<]-V5WIQ/U!7=3D5X$4A(VCU
-MH at KI3K<Q(D(NCO;0`?_IS>$PW'*2D,.>\016P4+?ZBRF at 5S],:9/MU!"9/(P
-MTY&GW-Q1JL:5K6DY33I&LX&2PO2;`6#]*0``)&SSD"(->QXN:4%ZMP+VM/_5
-M'#><5LOY3=3D.7"KG=3D<)DS*0``'```0`22LE]JRD7A3$U;.+/Q'/H"7PW`'0``
-M`!P``$`%N/<`M!Y(>:]3`X530K]J07VIFFS+$K=3D&R!,"`)@!``"8`0```@``
-M`$4``91JQP``0!$``,"H`0'`J`$"`?0!]`&`!V4-V0^U#[`!P0``````````
-M(2`B"`````````%X(@``>````'0!"``,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``"=3DM"CF6J"BP7T'=3D=3DSVQRQ5K?VZ^5G"B[;$7"ATG?TC51-S<R4..4%#
-M:5MW/3=3DE=3DZ<3]05W5>!%(2-H]:(*Z4ZW,2)"+H[VT`'_Z<WA,-QRDI##GO$$
-M5L%"W^HLIH%<_3&F3[=3D00F3R,-.1I]S<4:K&E:UI.4TZ1K.!DL+TFP%@_2D`
-M`"1L\Y`B#7L>+FE!>K<"]K3_U1PWG%;+^4W3EPJYW7"9,RD``!P``$`$DK)?
-M:LI%X4Q-6SBS\1SZ`E\-P!T````<``!`!;CW`+0>2'FO4P.%4T*_:D%]J9IL
-MS!*W1L8?``"8`0``F`$```(```!%``&4:L\``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEQ8N5_6W+.T@``````````"$@(@@````````!>"(``'@```!T`0D`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``T*4-7Z9:1#`#SRLZ0QI)EKIUE&)]
-M*#6E]LLJHYK]8'-=3D172W%52X991;%Y2PAF(J3.%MS:!4J9ODK+JC2T9>`\]0
-M?\L?$DF20_[73Y_S2U3WW:9-Q@(D at E[]O>K!7PR">I&_$GU/%W>3J5;3=3D^<B
-M:R+4DDHT&+(?D45(?68]!Y at I```DK#H]^(X9;<JDE$>?@G&,KOSIIC at P%*/9
-M^,#A_I9HSI\I```<``!`!".6S]?4.6#=3DT[>OAM$UO#0E7,7;````'```0`6@
-MEK)O"65'?!EIMJ.M(?QVN)N0B,P2MT8?3`,`F`$``)@!```"````10`!E&K0
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9<6+E?UMRSM(```````````A("((````
-M`````7 at B``!X````=3D`$)``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``-"E
-M#5^F6D0P`\\K.D,:29:Z=3D91B?2 at UI?;+*J.:_6!S745TMQ54N&646Q>4L(9B
-M*DSA;<V at 5*F;Y*RZHTM&7@//4'_+'Q))DD/^UT^?\TM4]]VF3<8")()>_;WJ
-MP5\, at GJ1OQ)]3Q=3DWDZE6TW?G(FLBU))*-!BR'Y%%2'UF/0>8*0``)*PZ/?B.
-M&6W*I)1'GX)QC*[\Z:8X,!2CV?C`X?Z6:,Z?*0``'```0`0CEL_7U#E at W=3D.W
-MKX;1-;PT)5S%VP```!P``$`%H):R;PEE1WP9:;:CK2'\=3DKB;D(C,$K=3D&M(T)
-M`)@!``"8`0```@```$4``91JT0``0!$``,"H`0'`J`$"`?0!]`&`!V7%BY7]
-M;<L[2```````````(2`B"`````````%X(@``>````'0!"0`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``#0I0U?IEI$,`//*SI#&DF6NG648GTH-:7VRRJC
-MFOU@<UU%=3D+<55+AEE%L7E+"&8BI,X6W-H%2IF^2LNJ-+1EX#SU!_RQ\229)#
-M_M=3D/G_-+5/?=3DIDW&`B2"7OV]ZL%?#()ZD;\2?4\7=3DY.I5M-WYR)K(M222C08
-MLA^114A]9CT'F"D``"2L.CWXCAEMRJ241Y^"<8RN_.FF.#`4H]GXP.'^EFC.
-MGRD``!P``$`$(Y;/U]0Y8-W3MZ^&T36\-"5<Q=3DL````<``!`!:"6LF\)94=3D\
-M&6FVHZTA_':XFY"(S1*W1OZ:!P"8`0``F`$```(```!%``&4:M,``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DER?LEB+'"WAH``````````"$@(@@````````!>"(`
-M`'@```!T`?@`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``7Y5J]G(G<216
-M+JMD;L^N&DN7W=3D7DVW,',P$OF\_<$B5W*95.O.2]R%LD.#UTN,,]/EN\X-E.
-M)N_M\H;2[/V&8Z$`H+=3D\+PF65D_.WF07+1_2<XT?2ZIJ&B6/9'#'=3D+RFCEL-
-MGU7!NJO(`$$E#GL4D5,)UB"QWXIN5)/?E+\/\:\I```D>]$7]`<3Z\1+`+WL
-M>!SKE3)?AP[R5`?YTPXD?\0ZV!4I```<``!`!$;AFJW3>E,!3*30&JO%L`/<
-M'5IQ````'```0`49=3D\]QAGT1,D/AY@;N+5^(VF:\$\T2MT8+Q at H`F`$``)@!
-M```"````10`!E&K4``!`$0``P*@!`<"H`0(!]`'T`8`'9<G[)8BQPMX:````
-M```````A("((`````````7 at B``!X````=3D`'X``P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``%^5:O9R)W$D5BZK9&[/KAI+E]W5Y-MS!S,!+YO/W!(E=3DRF5
-M3KSDO<A;)#@]=3D+C#/3Y;O.#93B;O[?*&TNS]AF.A`*"W?"\)EE9/SMYD%RT?
-MTG.-'TNJ:AHECV1PQW2\IHY;#9]5P;JKR`!!)0Y[%)%3"=3D8 at L=3D^*;E23WY2_
-M#_&O*0``)'O1%_0'$^O$2P"]['@<ZY4R7X<.\E0'^=3D,.)'_$.M at 5*0``'```
-M0`1&X9JMTWI3`4RDT!JKQ;`#W!U:<0```!P``$`%&7?/<89]$3)#X>8&[BU?
-MB-IFO!/.$K=3D&9\4!`)@!``"8`0```@```$4``91JU0``0!$``,"H`0'`J`$"
-M`?0!]`&`!V7)^R6(L<+>&@``````````(2`B"`````````%X(@``>````'0!
-M^``,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``!?E6KV<B=3DQ)%8NJV1NSZX:
-M2Y?=3DU>3;<P<S`2^;S]P2)7<IE4Z\Y+W(6R0X/72XPST^6[S at V4XF[^WRAM+L
-M_89CH0"@MWPO"9963\[>9!<M'])SC1]+JFH:)8]D<,=3DTO*:.6PV?5<&ZJ\@`
-M024.>Q214PG6(+'?BFY4D]^4OP_QKRD``"1[T1?T!Q/KQ$L`O>QX'.N5,E^'
-M#O)4!_G3#B1_Q#K8%2D``!P``$`$1N&:K=3D-Z4P%,I-`:J\6P`]P=3D6G$````<
-M``!`!1EWSW&&?1$R0^'F!NXM7XC:9KP3SA*W1O80#P"8`0``F`$```(```!%
-M``&4:M\``$`1``#`J`$!P*@!`@'T`?0!@`=3DE?%A-J>%;].X``````````"$@
-M(@@````````!>"(``'@```!T`?D`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``X>A1]L_[`NHDC0"',:"\/YCRZJ(A:4`#6=3D/(:*64"VM[U#]K-'+\*@F\
-M[$(=3D,CES1;B!-L7@/GM2SP40.M+(D'92])<SXUI!IJ(6</.;TVT8D;U_G-PA
-M\E=3DQ(OV\MIB[EXMTHQ=3D]H3/I]29RX%.1BJ8XIT:8E^I^!#<8O2([;C`I```D
-MQ=3DX]%D3!2)YI.E%Q66<A$5I.B@%C'<B.CE-Q*#4J3&TI```<``!`!`@/'`(X
-MH6K\L39351C^NGAM/@*Q````'```0`47IR[#KWWVD>?^M@")>I3"8(OPZ\\2
-MMT8$_@(`F`$``)@!```"````10`!E&KB``!`$0``P*@!`<"H`0(!]`'T`8`'
-M97Q83:GA6_3N```````````A("((`````````7 at B``!X````=3D`'Y``P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``.'H4?;/^P+J)(T`AS&@O#^8\NJB(6E`
-M`UG3R&BEE`MK>]0_:S1R_"H)O.Q"'3(Y<T6X at 3;%X#Y[4L\%$#K2R)!V4O27
-M,^-:0::B%G#SF]-M&)&]?YS<(?)7<2+]O+:8NY>+=3D*,7?:$SZ?4F<N!3D8JF
-M.*=3D&F)?J?@0W&+TB.VXP*0``),7>/19$P4B>:3I1<5EG(1%:3HH!8QW(CHY3
-M<2 at U*DQM*0``'```0`0(#QP".*%J_+$V4U48_KIX;3X"L0```!P``$`%%Z<N
-MPZ]]]I'G_K8`B7J4PF"+\.O/$K=3D&CS\)`)@!``"8`0```@```$4``91JY```
-M0!$``,"H`0'`J`$"`?0!]`&`!V5\6$VIX5OT[@``````````(2`B"```````
-M``%X(@``>````'0!^0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#AZ%'V
-MS_L"ZB2-`(<QH+P_F/+JHB%I0`-9T\AHI90+:WO4/VLT<OPJ";SL0ATR.7-%
-MN($VQ>`^>U+/!1`ZTLB0=3DE+TES/C6D&FHA9P\YO3;1B1O7^<W"'R5W$B_;RV
-MF+N7BW2C%WVA,^GU)G+ at 4Y&*ICBG1IB7ZGX$-QB](CMN,"D``"3%WCT61,%(
-MGFDZ47%99R$16DZ*`6,=3DR(Z.4W$H-2I,;2D``!P``$`$"`\<`CBA:ORQ-E-5
-M&/ZZ>&T^`K$````<``!`!1>G+L.O??:1Y_ZV`(EZE,)@B_#KT!*W1A=3D/!P"8
-M`0``F`$```(```!%``&4:NP``$`1``#`J`$!P*@!`@'T`?0!@`=3DE(F@!'`_#
-M*F$``````````"$@(@@````````!>"(``'@```!T`?H`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``J=3D"O5V_6K<H,$%J+VT<V837;I&_05TZYM!ROL26D
-M;B$%S.\(#&%P?L.&GU$^:0225670RRR1PK,VH[M7+/WS(,0G9_\=3DHNOCL+VG
-MBE at 17IS\^N9O'W_)$.55"Y/4>0<-5=3D/E>2T-#S\K at C/OFWTQDX>DAEVSAD;X
-M60!E`0U&,10I```D=3DQ,39+J.M_2K\#GCRCK'H.*%4N5LU:VYFD([H+%;N$\I
-M```<``!`!,"&7\M!P8CQ(E*Z'8T(%\]W at 2&(````'```0`7XY#8BIK%`=3D+;>
-M9+Y]YI'14W54JM`2MT8*>`H`F`$``)@!```"````10`!E&KP``!`$0``P*@!
-M`<"H`0(!]`'T`8`'92)H`1P/PRIA```````````A("((`````````7 at B``!X
-M````=3D`'Z``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``*G0KU=3DOUJW*#!!:
-MB]M'-F$UVZ1OT%=3D.N;0<K[$EI&XA!<SO"`QA<'[#AI]1/FD$DE5ET,LLD<*S
-M-J.[5RS]\R#$)V?_':+KX["]IXI8$5Z<_/KF;Q]_R1#E50N3U'D'#573Y7DM
-M#0\_*X(S[YM],9.'I(9=3DLX9&^%D`90$-1C$4*0``)'<3$V2ZCK?TJ_`YX\HZ
-MQZ#BA5+E;-6MN9I".Z"Q6[A/*0``'```0`3`AE_+0<&(\2)2NAV-"!?/=3DX$A
-MB````!P``$`%^.0V(J:Q0'2VWF2^?>:1T5-U5*K1$K=3D&-7<!`)@!``"8`0``
-M`@```$4``91J\@``0!$``,"H`0'`J`$"`?0!]`&`!V4B:`$<#\,J80``````
-M````(2`B"`````````%X(@``>````'0!^@`,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``"IT*]7;]:MR at P06HO;1S9A-=3DND;]!73KFT'*^Q):1N(07,[P@,
-M87!^PX:?43YI!))59=3D#++)'"LS:CNU<L_?, at Q"=3DG_QVBZ^.PO:>*6!%>G/SZ
-MYF\??\D0Y54+D]1Y!PU5T^5Y+0T//RN",^^;?3&3AZ2&7;.&1OA9`&4!#48Q
-M%"D``"1W$Q-DNHZW]*OP.>/*.L>@XH52Y6S5K;F:0CN at L5NX3RD``!P``$`$
-MP(9?RT'!B/$B4KH=3DC0 at 7SW>!(8@````<``!`!?CD-B*FL4!TMMYDOGWFD=3D%3
-M=3D52JT1*W1H;$#@"8`0``F`$```(```!%``&4:OH``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE"&UXC%V1 at H4``````````"$@(@@````````!>"(``'@```!T`?T`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``U63"TF0U?C?G75[2%;UFU*%T
-MR4D5J[;4=3D($X=3D<%A^[-P%5?=3D`FHDM/15 at 6!+0N8-=3D=3D3[=3D<P=3D?.H=3D0O:^T=
W(H
-M'[VT)?0:,"'"O`;U5K8>UB7&`J<$<H</@RQ3$]^J&QRIFC\8'-)EBI=3DH..B<
-M9MB'R4XHZH+Y;9.7.PB at PW(Z)[@I```D2?FL1]-7Y^W8<FXSH)2Z+A[!8+4:
-MGZO*^MY5*:-&W]HI```<``!`!'H$[?!0=3DB;EM+J//XR+5=3D')B!8Q````'```
-M0`7VX$.I/,1&%J+&*TZ=3D)I%)^RB`.-(2MT;0KP(`F`$``)@!```"````10`!
-ME&L```!`$0``P*@!`<"H`0(!]`'T`8`'90AM>(Q=3DD8*%```````````A("((
-M`````````7 at B``!X````=3D`']``P#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`-5DPM)D-7XWYUU>TA6]9M2A=3D,E)%:NVU'2!.'7!8?NS<!57W0)J)+3T58%@
-M2T+F#774^W7,'7SJ'4+VOM-R*!^]M"7T&C`APKP&]5:V'M8EQ@*G!'*'#X,L
-M4Q/?JAL<J9H_&!S298J7:#CHG&;8A\E.*.J"^6V3ESL(H,-R.B>X*0``)$GY
-MK$?35^?MV')N,Z"4NBX>P6"U&I^KROK>52FC1M_:*0``'```0`1Z!.WP4'8F
-MY;2ZCS^,BU71R8 at 6,0```!P``$`%]N!#J3S$1A:BQBM.G2:12?LH@#C2$K=3D&
-M4_$(`)@!``"8`0```@```$4``91K!```0!$``,"H`0'`J`$"`?0!]`&`!V4(
-M;7B,79&"A0``````````(2`B"`````````%X(@``>````'0!_0`,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``#59,+29#5^-^=3D=3D7M(5O6;4H73)216KMM1T
-M at 3AUP6'[LW`55]T":B2T]%6!8$M"Y at UUU/MUS!U\ZAU"]K[3<B@?O;0E]!HP
-M(<*\!O56MA[6)<8"IP1RAP^#+%,3WZH;'*F:/Q@<TF6*EV at XZ)QFV(?)3BCJ
-M at OEMDY<["*##<CHGN"D``"1)^:Q'TU?G[=3DAR;C. at E+HN'L%@M1J?J\KZWE4I
-MHT;?VBD``!P``$`$>@3M\%!V)N6TNH\_C(M5T<F(%C$````<``!`!?;@0ZD\
-MQ$86HL8K3ITFD4G[*(`XTQ*W1F'[!@"8`0``F`$```(```!%``&4:PH``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEW@<*&Q71YOL``````````"$@(@@````````!
-M>"(``'@```!T`?X`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``U10=3D<4(J
-M9`9VR9E]Y%@WY2\`6#P@$&*H=3DX-?+,(SZ^&9!RJ:=3D(T3(\0RP!B$G:;+!P-D
-M=3DD8L**.X-7:N`66+1P>IT1@?*DF+'?W6G?YS>@9+RQ0?R-M2'Z,AH[LK<)->
-M55[\R#111%-I*0D"S.-/HHJ(N!%QLD-Z?_%!WM_(T$,I```D0F6DS=3D&_X[IK
-M,<`(&QCM<@^?U"H,FS#/`@]LN+2A=3DZ4I```<``!`!,42#RC5AA]BOV*U#RT5
-MM-R_V^Q,````'```0`5&6=3DU%YC2HD)]1H>OI,WMU6092HM,2MT:L*0H`F`$`
-M`)@!```"````10`!E&L+``!`$0``P*@!`<"H`0(!]`'T`8`'9=3DX'"AL5T>;[
-M```````````A("((`````````7 at B``!X````=3D`'^``P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``-44'7%"*F0&=3DLF9?>18-^4O`%@\(!!BJ'>#7RS",^OA
-MF0<JFG2-$R/$,L`8A)VFRP<#9'9&+"BCN#5VK@%EBT<'J=3D$8'RI)BQW]UIW^
-M<WH&2\L4'\C;4A^C(:.[*W"37E5>_, at T4413:2D)`LSC3Z**B+ at 1<;)#>G_Q
-M0=3D[?R-!#*0``)$)EI,W1O^.Z:S'`"!L8[7(/G]0J#)LPSP(/;+BTH7>E*0``
-M'```0`3%$@\HU88?8K]BM0\M%;3<O]OL3````!P``$`%1EG=3D1>8TJ)"?4:'K
-MZ3-[=3D5D&4J+4$K=3D&+"D!`)@!``"8`0```@```$4``91K$@``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V7>!PH;%=3D'F^P``````````(2`B"`````````%X(@``>```
-M`'0!_@`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``#5%!UQ0BID!G;)F7WD
-M6#?E+P!8/"`08JAW at U\LPC/KX9D'*IITC1,CQ#+`&(2=3DILL'`V1V1BPHH[@U
-M=3DJX!98M'!ZG1&!\J28L=3D_=3D:=3D_G-Z!DO+%!_(VU(?HR&CNRMPDUY57OS(-%%$
-M4VDI"0+,XT^BBHBX$7&R0WI_\4'>W\C00RD``"1"9:3-T;_CNFLQP`@;&.UR
-M#Y_4*@R;,,\"#VRXM*%WI2D``!P``$`$Q1(/*-6&'V*_8K4/+16TW+_;[$P`
-M```<``!`!499W47F-*B0GU&AZ^DS>W59!E*BU!*W1G]X#@"8`0``F`$```(`
-M``!%``&4:R$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE"^5U0NT@^=3DL`````````
-M`"$@(@@````````!>"(``'@```!T`?\`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``Y\J!,4HY818[6&CL?;C&TIY1`LBQC.-N.A5K]^+F at BSU%;'6U;U4
-MF,8+#F>?NPC&(:C'1?&+2TZ9Y38PK9ETK4ZI4!ZL=3DGL[G%50WW'4J=3D/GS)RN
-M(I_N"D&$*'(*:M<Z<T#3V=3DI0Z@!*IW__B;N`$K>6A<BSHNYJ$(*(FK#N/4TI
-M```D'L0ER_?'FR._=3D5#1\D,]9$BEXGUOR+;:45PJLS:$LXHI```<``!`!#S;
-M";`VJES`6;8H'4^L76FE>'QR````'```0`4LX2]:N;\K^A=3D.X\5N<$OP)-(.
-M`]42MT:280(`F`$``)@!```"````10`!E&LD``!`$0``P*@!`<"H`0(!]`'T
-M`8`'90OE=3D4+M(/G;```````````A("((`````````7 at B``!X````=3D`'_``P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``.?*@3%*.6$6.UAH['VXQM*>40+(
-ML8SC;CH5:_?BYH(L]16QUM6]5)C&"PYGG[L(QB&HQT7QBTM.F>4V,*V9=3D*U.
-MJ5`>K'9[.YQ54-]QU*G3Y\R<KB*?[@I!A"AR"FK7.G-`T]G:4.H`2J=3D__XF[
-M@!*WEH7(LZ+N:A""B)JP[CU-*0``)![$)<OWQYLCOW50T?)#/61(I>)];\BV
-MVE%<*K,VA+.**0``'```0`0\VPFP-JI<P%FV*!U/K%UII7A\<@```!P``$`%
-M+.$O6KF_*_H73N/%;G!+\"32#@/5$K=3D&/J,(`)@!``"8`0```@```$4``91K
-M)@``0!$``,"H`0'`J`$"`?0!]`&`!V4+Y75"[2#YVP``````````(2`B"```
-M``````%X(@``>````'0!_P`,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#G
-MRH$Q2CEA%CM8:.Q]N,;2GE$"R+&,XVXZ%6OWXN:"+/45L=3D;5O528Q at L.9Y^[
-M",8AJ,=3D%\8M+3IGE-C"MF72M3JE0'JQV>SN<55#?<=3D2IT^?,G*XBG^X*080H
-M<@IJUSIS0-/9VE#J`$JG?_^)NX`2MY:%R+.B[FH0 at HB:L.X]32D``"0>Q"7+
-M]\>;([]U4-'R0SUD2*7B?6_(MMI17"JS-H2SBBD``!P``$`$/-L)L#:J7,!9
-MMB@=3D3ZQ=3D::5X?'(````<``!`!2SA+UJYOROZ%T[CQ6YP2_`DT at X#UA*W1I:U
-M!@"8`0``F`$```(```!%``&4:X\``$`1``#`J`$!P*@!`@'T`?0!@`=3DEW7=3DB
-M(^@JI#D``````````"$@(@@````````!>"(``'@```!T`0``#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``*.;V$>Z?=3DJV$<(+0LMI/&IVDX0_7X<L'C_%L
-M8Q$'#J)?'NL#CQY8 at 2+;R>YW)@RMG?`ML][4L_".5DKT59^RM:,6WW,2/U'T
-MO`=3DN.Q110^,&B-I#4H%,^)##?<YD]W@#."DTE'>>!Q,@<U*2ANHT+:Q[8QWI
-M>"+`8Y/T>SC#<-XI```D:T:,EGDG//'2RZI3HP8]=3D]MN7DW73/(N=3D!*V3*R!
-MU*HI```<``!`!%J(&"1._RN\=3DAE*%-_>S8CDPO#"````'```0`5NM=3DU`:>)D
-MAIWR at P.ZCV=3DW=3DLK*1M82MT:%VPD`F`$``)@!```"````10`!E&N0``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9=3DUW8B/H*J0Y```````````A("((`````````7 at B
-M``!X````=3D`$```P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``"CF]A'NGW:M
-MA'""T++:3QJ=3DI.$/U^'+!X_Q;&,1!PZB7Q[K`X\>6($BV\GN=3DR8,K9WP+;/>
-MU+/PCE9*]%6?LK6C%M]S$C]1]+P';CL444/C!HC:0U*!3/B0PWW.9/=3DX`S at I
-M-)1WG@<3('-2DH;J-"VL>V,=3DZ7 at BP&.3]'LXPW#>*0``)&M&C)9Y)SSQTLNJ
-M4Z,&/7?;;EY-UTSR+G02MDRL@=3D2J*0``'```0`1:B!@D3O\KO'892A3?WLV(
-MY,+PP@```!P``$`%;K7=3D0&GB9(:=3D\H,#NH]G=3DW;*RD;7$K=3D&P=3DH``)@!``"8
-M`0```@```$4``91KDP``0!$``,"H`0'`J`$"`?0!]`&`!V7=3D=3DV(CZ"JD.0``
-M````````(2`B"`````````%X(@``>````'0!```,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```HYO81[I]VK81P at M"RVD\:G:3A#]?ARP>/\6QC$0<.HE\>
-MZP./'EB!(MO)[G<F#*V=3D\"VSWM2S\(Y62O15G[*UHQ;?<Q(_4?2\!VX[%%%#
-MXP:(VD-2 at 4SXD,-]SF3W>`,X*324=3DYX'$R!S4I*&ZC0MK'MC'>EX(L!CD_1[
-M.,-PWBD``"1K1HR6>2<\\=3D++JE.C!CUWVVY>3=3D=3D,\BYT$K9,K('4JBD``!P`
-M`$`$6H at 8)$[_*[QV&4H4W][-B.3"\,(````<``!`!6ZUW4!IXF2&G?*#`[J/
-M9W=3DVRLI&UQ*W1A0I#@"8`0``F`$```(```!%``&4:Y<``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEQJ*Q_AZX"1P``````````"$@(@@````````!>"(``'@```!T
-M`0(`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``3C8M;+XK,('Z7]YL.'?Z
-M13T+]N1S&3!.PA4K`$0:L)#UF*[G8Q!DEX4>6L(TR+P;&&1<`%UL5^BQQ<_3
-M4L]#OYU at QGK$MBYVU>Y$&M&GBC0^N\8B;@FC:[SKT)RQ,(F-D(784:+AC(MZ
-M!K!26]#@2BK42*!1>9M%VP&/^M9:8VLI```D=3D9V)UN..HN8<M7^&.T4]LHCG
-MC4IW+)=3D'%6O].M37<:@I```<``!`!#95=3DD-?G9(:D at TL2R?KIS1K1W-#````
-M'```0`5`YNGSN,67ZXG\14AJCSO?(VAOH]@2MT93$P(`F`$``)@!```"````
-M10`!E&N9``!`$0``P*@!`<"H`0(!]`'T`8`'9<:BL?X>N`D<```````````A
-M("((`````````7 at B``!X````=3D`$"``P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``$XV+6R^*S"!^E_>;#AW^D4]"_;D<QDP3L(5*P!$&K"0]9BNYV,09)>%
-M'EK"-,B\&QAD7`!=3D;%?HL<7/TU+/0[^=3D8,9ZQ+8N=3DM7N1!K1IXHT/KO&(FX)
-MHVN\Z]"<L3")C9"%V%&BX8R+>@:P4EO0X$HJU$B at 47F;1=3DL!C_K66F-K*0``
-M)'6=3DB=3D;CCJ+F'+5_ACM%/;*(YXU*=3DRR71Q5K_3K4UW&H*0``'```0`0V579#
-M7YV2&I(-+$LGZZ<T:T=3DS0P```!P``$`%0.;I\[C%E^N)_$5(:H\[WR-H;Z/8
-M$K=3D&YE0(`)@!``"8`0```@```$4``91KG@``0!$``,"H`0'`J`$"`?0!]`&`
-M!V7&HK'^'K@)'```````````(2`B"`````````%X(@``>````'0!`@`,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``!.-BULOBLP@?I?WFPX=3D_I%/0OVY',9
-M,$["%2L`1!JPD/68KN=3DC$&27A1Y:PC3(O!L89%P`76Q7Z+'%S]-2ST._G6#&
-M>L2V+G;5[D0:T:>*-#Z[QB)N":-KO.O0G+$PB8V0A=3DA1HN&,BWH&L%);T.!*
-M*M1(H%%YFT7;`8_ZUEIC:RD``"1UG8G6XXZBYARU?X8[13VRB.>-2G<LET<5
-M:_TZU-=3DQJ"D``!P``$`$-E5V0U^=3DDAJ2#2Q+)^NG-&M'<T,````<``!`!4#F
-MZ?.XQ9?KB?Q%2&J/.]\C:&^CV1*W1@*/!@"8`0``F`$```(```!%``&4:[L`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE'Q(4D8^P4(\``````````"$@(@@`````
-M```!>"(``'@```!T`0,`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``E2L5
-MH_X7;0_`SKB;Y6Z*,M"$7K:Z%@LF/+7\5D1D'N45!9,DC0:?T',\`]SBUE4E
-MC-[[!F^,/]41P,Z?'%;;::&HZ!#(/54KET'T=3D6^?5?M-&/'C.B&]7 at E=3DG0>%
-M(IA)TVZ_BXOJH_IXCE),67O<78ZEDQOO8KQY%7_B,C!_DJ4I```D%C<G'LUD
-M\+AU'M]KHX*.##7DDB.(Q*;]O-E%E:*/Z+,I```<``!`!!B0)RCM&Y.(M6L'
-M>J"0R.KYZ]_Z````'```0`6H<NO5UR2_T#X,$O0&[/KH63!F<MD2MT9JM`D`
-MF`$``)@!```"````10`!E&N^``!`$0``P*@!`<"H`0(!]`'T`8`'91\2%)&/
-ML%"/```````````A("((`````````7 at B``!X````=3D`$#``P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``)4K%:/^%VT/P,ZXF^5NBC+0A%ZVNA8+)CRU_%9$
-M9![E%063)(T&G]!S/`/<XM95)8S>^P9OC#_5$<#.GQQ6VVFAJ. at 0R#U5*Y=3D!
-M]'5OGU7[31CQXSHAO5X)79T'A2*82=3D-NOXN+ZJ/Z>(Y23%E[W%V.I9,;[V*\
-M>15_XC(P?Y*E*0``)!8W)Q[-9/"X=3D1[?:Z."C at PUY)(CB,2F_;S9196BC^BS
-M*0``'```0`08D"<H[1N3B+5K!WJ at D,CJ^>O?^@```!P``$`%J'+KU=3D<DO]`^
-M#!+T!NSZZ%DP9G+:$K=3D&CK,``)@!``"8`0```@```$4``91KP```0!$``,"H
-M`0'`J`$"`?0!]`&`!V4?$A21C[!0CP``````````(2`B"`````````%X(@``
-M>````'0!`P`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``"5*Q6C_A=3DM#\#.
-MN)OE;HHRT(1>MKH6"R8\M?Q61&0>Y14%DR2-!I_0<SP#W.+6526,WOL&;XP_
-MU1'`SI\<5MMIH:CH$,@]52N70?1U;Y]5^TT8\>,Z(;U>"5V=3D!X4BF$G3;K^+
-MB^JC^GB.4DQ9>]Q=3DCJ63&^]BO'D5?^(R,'^2I2D``"06-R<>S63PN'4>WVNC
-M at HX,->22(XC$IOV\V465HH_HLRD``!P``$`$&)`G*.T;DXBU:P=3DZH)#(ZOGK
-MW_H````<``!`!:ARZ]77)+_0/@P2]`;L^NA9,&9RVA*W1DH$#@"8`0``F`$`
-M``(```!%``&4;`,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE at Y?8-M)OT.H`````
-M`````"$@(@@````````!>"(``'@```!T`00`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``_S*C0NBQ0 at Q[-8.'KUB=3D at U`:Y._IO3%C;D!-SZ]CDTYQX.RQ
-MT8H7)54]5 at +_V_<\9H74TYE2DENROU(L##1\EG$`VK2.3SMV)/I>;FF@!?18
-M]0&)B_4GCZH'-H??LC8)P9!V*OSA+LZNHP4<^JX^]5$X7;$-.0]68=3D7M+0QB
-M^B at I```DV/K=3D"\Q%!88[UYNZZ-"+[QIO[>`+\\68L>Z+KX-O<[@I```<``!`
-M!&%)!1)&M88Q/*E*CI)T2$`&!ZZ=3D````'```0`6/K"M@@L(<F(X<AUS1IQF?
-MJ+^[U=3DL2MT8K[`$`F`$``)@!```"````10`!E&P(``!`$0``P*@!`<"H`0(!
-M]`'T`8`'98.7V#;2;]#J```````````A("((`````````7 at B``!X````=3D`$$
-M``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``/\RHT+HL4(,>S6#AZ]8G8-0
-M&N3OZ;TQ8VY`3<^O8Y-.<>#LL=3D&*%R55/58"_]OW/&:%U-.94I);LK]2+`PT
-M?)9Q`-JTCD\[=3DB3Z7FYIH`7T6/4!B8OU)X^J!S:'W[(V"<&0=3DBK\X2[.KJ,%
-M'/JN/O51.%VQ#3D/5F'5[2T,8OHH*0``)-CZW0O,106&.]>;NNC0B^\:;^W@
-M"_/%F+'NBZ^#;W.X*0``'```0`1A20421K6&,3RI2HZ2=3D$A`!@>NG0```!P`
-M`$`%CZPK8(+"')B.'(=3D<T:<9GZB_N]7;$K=3D&P"T(`)@!``"8`0```@```$4`
-M`91L$0``0!$``,"H`0'`J`$"`?0!]`&`!V6#E]@VTF_0Z@``````````(2`B
-M"`````````%X(@``>````'0!!``,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#_,J-"Z+%"#'LU at X>O6)V#4!KD[^F],6-N0$W/KV.33G'@[+'1BA<E53U6
-M`O_;]SQFA=3D33F5*26[*_4BP,-'R6<0#:M(Y/.W8D^EYN::`%]%CU`8F+]2>/
-MJ@<VA]^R- at G!D'8J_.$NSJZC!1SZKC[U43A=3DL0TY#U9AU>TM#&+Z*"D``"38
-M^MT+S$4%ACO7F[KHT(OO&F_MX`OSQ9BQ[HNO at V]SN"D``!P``$`$84D%$D:U
-MAC$\J4J.DG1(0`8'KIT````<``!`!8^L*V""PAR8CAR'7-&G&9^HO[O5W!*W
-M1EL[!@"8`0``F`$```(```!%``&4;!L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MHF7FO05SP9\``````````"$@(@@````````!>"(``'@```!T`04`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``Q1,=3D0EAHUJ.E6RR0\9\-Q&7GJ;ZM#F'U
-M<%S!BMM_*UUY258LR"B(D]>E"+Z`E/&T,OU?&YJY-;G+SYPVAXLI at R60D[CU
-MW at XM1P=3D]Q:K&.)FD<2`D]F`Q[\9VJ at 0:7UB\X."8CY at ZH2Y)M32^9BZ)24(V
-MQ7_._8Q%IG#Y;3YV<3$I```DPQ;E1CKFAYS2"]_!>P!W8_MM'%)[;^D\U!`;
-M\@\+NS at I```<``!`!-M,L9!,Z.DE:04I1@>+V.05:X]C````'```0`4(QK14
-M,%;`T$=3D:+%G,0][?(3-%^=3DP2MT8Y9 at D`F`$``)@!```"````10`!E&P=3D``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9:)EYKT%<\&?```````````A("((````````
-M`7 at B``!X````=3D`$%``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``,43'4)8
-M:-:CI5LLD/&?#<1EYZF^K0YA]7!<P8K;?RM=3D>4E6+, at HB)/7I0B^@)3QM#+]
-M7QN:N36YR\^<-H>+*8,ED).X]=3DX.+4<'?<6JQCB9I'$@)/9@,>_&=3DJH$&E]8
-MO.#@F(^8.J$N2;4TOF8NB4E"-L5_SOV,1:9P^6T^=3DG$Q*0``),,6Y48ZYH><
-MT at O?P7L`=3DV/[;1Q2>V_I/-00&_(/"[LX*0``'```0`3;3+&03.CI)6D%*48'
-MB]CD%6N/8P```!P``$`%",:T5#!6P-!'6BQ9S$/>WR$S1?G=3D$K=3D&CV4``)@!
-M``"8`0```@```$4``91L)0``0!$``,"H`0'`J`$"`?0!]`&`!V6B9>:]!7/!
-MGP``````````(2`B"`````````%X(@``>````'0!!0`,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``#%$QU"6&C6HZ5;+)#QGPW$9>>IOJT.8?5P7,&*VW\K
-M77E)5BS(*(B3UZ4(OH"4\;0R_5\;FKDUN<O/G#:'BRF#)9"3N/7>#BU'!WW%
-MJL8XF:1Q("3V8#'OQG:J!!I?6+S at X)B/F#JA+DFU-+YF+HE)0C;%?\[]C$6F
-M</EM/G9Q,2D``"3#%N5&.N:'G-(+W\%[`'=3DC^VT<4GMOZ3S4$!OR#PN[."D`
-M`!P``$`$VTRQD$SHZ25I!2E&!XO8Y!5KCV,````<``!`!0C&M%0P5L#01UHL
-M6<Q#WM\A,T7YW1*W1NBP#0"8`0``F`$```(```!%``&4;"P``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE<MG][D+IHM<``````````"$@(@@````````!>"(``'@`
-M``!T`0@`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``E3N!&;N5[LS[5<UW
-MTA]+'@80P.&B[,NV,DL!/4LX\H''PS^6GOCL!`U%?ZTF26KFA+AIWUO'*J1T
-MH+`+LE3X+]W#I0D7$\*_^*X4DO-$%RB.'ER03+-;R*&<&IO"3B0T%OV+I[UB
-M0X,:E!@`((=3DT*0[`$15=3D"^OD9<PRW,#;,#,I```D^4 at Q>B>M(:]NWW+D^&+8
-M=3DS>&CW&&S,7ACA6@'L7B^GHI```<``!`!&9;@>Z"6`!X3N:4/*G5!QD,1/J]
-M````'```0`7;*[38C?V40[-=3D3\$1!IA=3D%BU+P-X2MT;TG0$`F`$``)@!```"
-M````10`!E&PQ``!`$0``P*@!`<"H`0(!]`'T`8`'97+9_>Y"Z:+7````````
-M```A("((`````````7 at B``!X````=3D`$(``P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``)4[@1F[E>[,^U7-=3D](?2QX&$,#AHNS+MC)+`3U+./*!Q\,_EI[X
-M[`0-17^M)DEJYH2X:=3D];QRJD=3D*"P"[)4^"_=3DPZ4)%Q/"O_BN%)+S1!<HCAY<
-MD$RS6\BAG!J;PDXD-!;]BZ>]8D.#&I08`""'=3D"D.P!$570OKY&7,,MS`VS`S
-M*0``)/E(,7HGK2&O;M]RY/ABV'<WAH]QALS%X8X5H![%XOIZ*0``'```0`1F
-M6X'N at E@`>$[FE#RIU0<9#$3ZO0```!P``$`%VRNTV(W]E$.S74_!$0:8718M
-M2\#>$K=3D&>-\'`)@!``"8`0```@```$4``91L,P``0!$``,"H`0'`J`$"`?0!
-M]`&`!V5RV?WN0NFBUP``````````(2`B"`````````%X(@``>````'0!"``,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"5.X$9NY7NS/M5S7?2'TL>!A#`
-MX:+LR[8R2P$]2SCR@<?#/Y:>^.P$#45_K29):N:$N&G?6\<JI'2 at L`NR5/@O
-MW<.E"1<3PK_XKA22\T07*(X>7)!,LUO(H9P:F\).)#06_8NGO6)#@QJ4&``@
-MAW0I#L`1%5T+Z^1ES#+<P-LP,RD``"3Y2#%Z)ZTAKV[?<N3X8MAW-X:/<8;,
-MQ>&.%:`>Q>+Z>BD``!P``$`$9EN![H)8`'A.YI0\J=3D4'&0Q$^KT````<``!`
-M!=3DLKM-B-_91#LUU/P1$&F%T6+4O`WQ*W1K+N!0"8`0``F`$```(```!%``&4
-M;#L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE4."=3D9$OB at K```````````"$@(@@`
-M```````!>"(``'@```!T`0D`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M"`M(KG:"C63G7L/Y4U)`]PFP&&],&(S*0058WN\7S=3D>ZVXC/5D$9:6^PH;RH
-M1XWV=3D%$"+)$7 at 0--*632J7'`EX-]JJ>4JZ))F%Y=3DS(8)1[A2X=3DU"UV-#JO?G
-MV/Q!GP>-IFX]ZZTBRGV0/RJU6:1;>5;\JLG?Z;OO&$65V.I!]"\I```DWMO*
-M<6<X3V4;SMZ&D2CKN=3D^N(A[_^]+U``Y&P6S106`I```<``!`!*R$@`[.3Z;!
-M+(X[-6:HX$Z`L;3N````'```0`7=3DBV_GACCDNW\%IZOJP3_"&,;36M\2MT8;
-M&`D`F`$``)@!```"````10`!E&Q```!`$0``P*@!`<"H`0(!]`'T`8`'95#@
-MG61+XH*P```````````A("((`````````7 at B``!X````=3D`$)``P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(```@+2*YV at HUDYU[#^5-20/<)L!AO3!B,RD$%
-M6-[O%\W7NMN(SU9!&6EOL*&\J$>-]G11`BR1%X$#32EDTJEQP)>#?:JGE*NB
-M29A>7<R&"4>X4N'=3D0M=3DC0ZKWY]C\09\'C:9N/>NM(LI]D#\JM5FD6WE6_*K)
-MW^F[[QA%E=3DCJ0?0O*0``)-[;RG%G.$]E&\[>AI$HZ[G?KB(>__O2]0`.1L%L
-MT4%@*0``'```0`2LA(`.SD^FP2R..S5FJ.!. at +&T[@```!P``$`%W8MOYX8X
-MY+M_!:>KZL$_PAC&TUK@$K=3D&(A<``)@!``"8`0```@```$4``91L0@``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V50X)UD2^*"L```````````(2`B"`````````%X
-M(@``>````'0!"0`,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"```("TBN=3DH*-
-M9.=3D>P_E34D#W";`8;TP8C,I!!5C>[Q?-U[K;B,]601EI;["AO*A'C?9T40(L
-MD1>!`TTI9-*I<<"7 at WVJIY2KHDF87EW,A at E'N%+AW4+78T.J]^?8_$&?!XVF
-M;CWKK2+*?9`_*K59I%MY5ORJR=3D_IN^\81978ZD'T+RD``"3>V\IQ9SA/91O.
-MWH:1*.NYWZXB'O_[TO4`#D;!;-%!8"D``!P``$`$K(2`#LY/IL$LCCLU9JC@
-M3H"QM.X````<``!`!=3DV+;^>&..2[?P6GJ^K!/\(8QM-:X!*W1K9C#0"8`0``
-MF`$```(```!%``&4;%@``$`1``#`J`$!P*@!`@'T`?0!@`=3DETKN_O;+(%J,`
-M`````````"$@(@@````````!>"(``'@```!T`0H`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``^]`?-B2/!+01:.#'GOQ2VRYFIX!L[PW]H+6&T\.E')@)
-M5YOAWK/UJ6(?>X]Y8<VK]Q1><U)K6ZXTG<:^(C)V(J,#E-*]G=3D\NC2N>!-=3D5
-MESLYL at 5$&BX,\@.+.W2JHL6\<E*.A\E[I2`,$"]:Q>FY8MLNQJD12K[$W(I+
-M,N>)^(8I```D7<=3DCF.K%I*0>`>PO8LSP3_H,AHK?:H'45!MA2V=3DU.U$I```<
-M``!`!+CD1RJ1KM%<.%9MOFM8PN.23+(O````'```0`7F\&)T.F6Q#'$H+I^S
-M:O+DNFK+ at .$2MT;53P$`F`$``)@!```"````10`!E&Q>``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9=3D*[O[VRR!:C```````````A("((`````````7 at B``!X````
-M=3D`$*``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``/O0'S8DCP2T$6C at QY[\
-M4MLN9J>`;.\-_:"UAM/#I1R8"5>;X=3DZS]:EB'WN/>6'-J_<47G-2:UNN-)W&
-MOB(R=3DB*C`Y32O9W?+HTKG at 3759<[.;(%1!HN#/(#BSMTJJ+%O')2CH?)>Z4@
-M#!`O6L7IN6+;+L:I$4J^Q-R*2S+GB?B&*0``)%W'8YCJQ:2D'@'L+V+,\$_Z
-M#(:*WVJ!U%0;84MG=3D3M1*0``'```0`2XY$<JD:[17#A6;;YK6,+CDDRR+P``
-M`!P``$`%YO!B=3D#IEL0QQ*"Z?LVKRY+IJRX#A$K=3D&9)$'`)@!``"8`0```@``
-M`$4``91L8```0!$``,"H`0'`J`$"`?0!]`&`!V72N[^]LL at 6HP``````````
-M(2`B"`````````%X(@``>````'0!"@`,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``#[T!\V)(\$M!%HX,>>_%+;+F:G@&SO#?V at M8;3PZ4<F`E7F^'>L_6I
-M8A][CWEAS:OW%%YS4FM;KC2=3DQKXB,G8BHP.4TKV=3DWRZ-*YX$UU67.SFR!40:
-M+ at SR`XL[=3D*JBQ;QR4HZ'R7NE(`P0+UK%Z;EBVR[&J1%*OL3<BDLRYXGXABD`
-M`"1=3DQV.8ZL6DI!X!["]BS/!/^@R&BM]J@=3D14&V%+9W4[42D``!P``$`$N.1'
-M*I&NT5PX5FV^:UC"XY),LB\````<``!`!>;P8G0Z9;$,<2 at NG[-J\N2Z:LN`
-MXA*W1IN=3D!0"8`0``F`$```(```!%``&4;&X``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE6)!'=3D6H-X_D``````````"$@(@@````````!>"(``'@```!T`?\`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``A7*SX&)@@>>+7TL@\\P5I/L[\%-3
-MSU'Y!9"!STB7&/*]VWP1GVB at V+WILQQMNU2BW//F\(LJ/PC0ZJ6N,8(+1C7O
-M at L`C5_[S at +>&\ZN/V`"_.U9:I.=3D*E>B((>7\].1A at JF:`2LXF$8B+'ORKJ;2
-MLL4!-8AG<P$<#]%%CP88X&,I```D:')U]#\\!GH6H;G#.$T3_$)B<89?*?/Y
-MQLP#E/'G]XXI```<``!`!$S(+PZ<,I<!N-*&5QO=3D0&$953>7````'```0`4[
-MR$PHR618#PW.;3R;$ZRKU,?VEN(2MT;/R0@`F`$``)@!```"````10`!E&QQ
-M``!`$0``P*@!`<"H`0(!]`'T`8`'95B01W5J#>/Y```````````A("((````
-M`````7 at B``!X````=3D`'_``P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``(5R
-ML^!B8('GBU]+(//,%:3[._!34\]1^060@<](EQCRO=3DM\$9]HH-B]Z;,<;;M4
-MHMSSYO"+*C\(T.JEKC&""T8U[X+`(U?^\X"WAO.KC]@`OSM66J3G2I7HB"'E
-M_/3D88*IF@$K.)A&(BQ[\JZFTK+%`36(9W,!'`_118\&&.!C*0``)&AR=3D?0_
-M/`9Z%J&YPSA-$_Q"8G&&7RGS^<;,`Y3QY_>.*0``'```0`1,R"\.G#*7`;C2
-MAE<;W4!A&54WEP```!P``$`%.\A,*,ED6`\-SFT\FQ.LJ]3']I;B$K=3D&8`L/
-M`)@!``"8`0```@```$4``91L=3DP``0!$``,"H`0'`J`$"`?0!]`&`!V58D$=3DU
-M:@WC^0``````````(2`B"`````````%X(@``>````'0!_P`,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``"%<K/@8F"!YXM?2R#SS!6D^SOP4U//4?D%D('/
-M2)<8\KW;?!&?:*#8O>FS'&V[5*+<\^;PBRH_"-#JI:XQ@@M&->^"P"-7_O.`
-MMX;SJX_8`+\[5EJDYTJ5Z(@AY?STY&&"J9H!*SB81B(L>_*NIM*RQ0$UB&=3DS
-M`1P/T46/!AC at 8RD``"1H<G7T/SP&>A:AN<,X31/\0F)QAE\I\_G&S`.4\>?W
-MCBD``!P``$`$3, at O#IPREP&XTH97&]U`81E5-Y<````<``!`!3O(3"C)9%@/
-M#<YM/)L3K*O4Q_:6XQ*W1AT7#0"8`0``F`$```(```!%``&4;'T``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE`TL-++I!^CX``````````"$@(@@````````!>"(`
-M`'@```!T`8``#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``'*HA at CIKPS7S
-M"L!^RHDWK;WUH*WI+68()4ZG&<8&+C.4A"\-*-T[8I-6MG3W'K9&&K9'_L@#
-MYI'N%F!H.ZGC7FU+,TKDZ4.&#\A3R8HT4^N=3D75$QF'><D\+(!#/S\FLA+P^-
-M'8]7G:V5`?*[&@@N(GR#J at 6)-,V<*^Y9U*3FDALI```DSVD610.5)W%^15TQ
-MCJQ2H\P[D_/=3D<]]Y50WS"E^T!E(I```<``!`!#R$/'_3&SLG9"T%!-+_>N$-
-MN[DP````'```0`6W<C$Y=3D*TO7<%O[N*$#J0MEFM/).02MT9N`0$`F`$``)@!
-M```"````10`!E&R!``!`$0``P*@!`<"H`0(!]`'T`8`'90-+#2RZ0?H^````
-M```````A("((`````````7 at B``!X````=3D`&```P#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``!RJ(8(Z:\,U\PK`?LJ)-ZV]]:"MZ2UF""5.IQG&!BXSE(0O
-M#2C=3D.V*35K9T]QZV1AJV1_[(`^:1[A9@:#NIXUYM2S-*Y.E#A at _(4\F*-%/K
-MG5U1,9AWG)/"R`0S\_)K(2\/C1V/5YVME0'RNQH(+B)\@ZH%B33-G"ON6=3D2D
-MYI(;*0``),]I%D4#E2=3DQ?D5=3D,8ZL4J/,.Y/SW7/?>54-\PI?M`92*0``'```
-M0`0\A#Q_TQL[)V0M!032_WKA#;NY,````!P``$`%MW(Q.72M+UW!;^[BA`ZD
-M+99K3R3D$K=3D&`T,'`)@!``"8`0```@```$4``91L@@``0!$``,"H`0'`J`$"
-M`?0!]`&`!V4#2PTLND'Z/@``````````(2`B"`````````%X(@``>````'0!
-M@``,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"```<JB&".FO#-?,*P'[*B3>M
-MO?6 at K>DM9@@E3J<9Q at 8N,Y2$+PTHW3MBDU:V=3D/<>MD8:MD?^R`/FD>X68&@[
-MJ>->;4LS2N3I0X8/R%/)BC13ZYU=3D43&8=3DYR3PL@$,_/R:R$O#XT=3DCU>=3DK94!
-M\KL:""XB?(.J!8DTS9PK[EG4I.:2&RD``"3/:19%`Y4G<7Y%73&.K%*CS#N3
-M\]USWWE5#?,*7[0&4BD``!P``$`$/(0\?],;.R=3DD+04$TO]ZX0V[N3`````<
-M``!`!;=3DR,3ETK2]=3DP6_NXH0.I"V6:T\DY1*W1C]1!0"8`0``F`$```(```!%
-M``&4;(P``$`1``#`J`$!P*@!`@'T`?0!@`=3DEHIX7<X:7*M4``````````"$@
-M(@@````````!>"(``'@```!T`0$!#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``O')GI$SV'8"?(9EZ\F#3`X=3D?ZABBZA?H\8L+2:OK:2MY;08>N0(60[=3D`
-M$'*U6"43&V-*(3KI85-;--YO\37]?4K%MT2B>-6YW20B.K_)!9'K*9,&>>%$
-MOC1GQUF!#?S/R6'VR<_)H@)[^Y@$[%)\,+N4?:,F/O4^Q"U\[P)5Y70I```D
-M!N-!H*%B8*/_UYF`1_"PVP%L/X2L2X'7T%G!^/)JS=3D8I```<``!`!)EE3RVZ
-M?SNHC%Y9'*:02I]\WF[-````'```0`5?0D=3DJ%=3DFF'A842D1&^)H/U1`,QN42
-MMT:.>P@`F`$``)@!```"````10`!E&R/``!`$0``P*@!`<"H`0(!]`'T`8`'
-M9:*>%W.&ERK5```````````A("((`````````7 at B``!X````=3D`$!`0P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``+QR9Z1,]AV`GR&9>O)@TP.'7^H8HNH7
-MZ/&+"TFKZVDK>6T&'KD"%D.W0!!RM5 at E$QMC2B$ZZ6%36S3>;_$U_7U*Q;=3D$
-MHGC5N=3DTD(CJ_R061ZRF3!GGA1+XT9\=3D9 at 0W\S\EA]LG/R:(">_N8!.Q2?#"[
-ME'VC)C[U/L0M?.\"5>5T*0``)`;C0:"A8F"C_]>9@$?PL-L!;#^$K$N!U]!9
-MP?CR:LW6*0``'```0`2994\MNG\[J(Q>61RFD$J??-YNS0```!P``$`%7T)'
-M:A79IAX6%$I$1OB:#]40#,;E$K=3D&%;T.`)@!``"8`0```@```$4``91LDP``
-M0!$``,"H`0'`J`$"`?0!]`&`!V6BGA=3DSAI<JU0``````````(2`B"```````
-M``%X(@``>````'0!`0$,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"\<F>D
-M3/8=3D@)\AF7KR8-,#AU_J&*+J%^CQBPM)J^MI*WEM!AZY`A9#MT`0<K58)1,;
-M8THA.NEA4ULTWF_Q-?U]2L6W1*)XU;G=3D)"(ZO\D%D>LIDP9YX42^-&?'68$-
-M_,_)8?;)S\FB`GO[F`3L4GPPNY1]HR8^]3[$+7SO`E7E=3D"D``"0&XT&@H6)@
-MH__7F8!'\+#;`6P_A*Q+@=3D?06<'X\FK-UBD``!P``$`$F65/+;I_.ZB,7ED<
-MII!*GWS>;LT````<``!`!5]"1VH5V:8>%A1*1$;XF at _5$`S&YA*W1L#,#`"8
-M`0``F`$```(```!%``&4;*$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE at 1&`1!X?
-MP<P``````````"$@(@@````````!>"(``'@```!T`0$!#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``5HKHZPF?A%_;R at S#=3D$ICSE2PC/G)U`<'W0<%U(RK
-M$;5$T6+C(2>O$'=3DK1[]\P;V:@Z@(WM,,.O!TV,#!!7^*__ZRU$49:'*6;3(Q
-M?AG5/8I=3DKO%_5:7C9^)JZ2CK/["P,5(!/20-;`;MX000X54EUKG,MUZI7HEF
-MSX.A"+;\77HI```DAH$]XM5)7RB4913QMS<:/[1^`?"!"B46 at 0WCG#GN6ZTI
-M```<``!`!*;QV1T1S&1"Z,*75A%67U[^%&B>````'```0`7E"BL%[$%F^<+S
-MYSNJ!3XZR]FH8.<2MT9/LP``F`$``)@!```"````10`!E&RF``!`$0``P*@!
-M`<"H`0(!]`'T`8`'98$1@$0>'\',```````````A("((`````````7 at B``!X
-M````=3D`$!`0P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``%:*Z.L)GX1?V\H,
-MPW1*8\Y4L(SYR=3D0'!]T'!=3D2,JQ&U1-%BXR$GKQ!W:T>_?,&]FH.H"-[3##KP
-M=3D-C`P05_BO_^LM1%&6AREFTR,7X9U3V*7:[Q?U6EXV?B:NDHZS^PL#%2`3TD
-M#6P&[>$$$.%5)=3D:YS+=3D>J5Z)9L^#H0BV_%UZ*0``)(:!/>+525\HE&44\;<W
-M&C^T?@'P at 0HE%H$-XYPY[ENM*0``'```0`2F\=3DD=3D$<QD0NC"EU815E]>_A1H
-MG@```!P``$`%Y0HK!>Q!9OG"\^<[J at 4^.LO9J&#G$K=3D&X/0&`)@!``"8`0``
-M`@```$4``91LK@``0!$``,"H`0'`J`$"`?0!]`&`!V6!$8!$'A_!S```````
-M````(2`B"`````````%X(@``>````'0!`0$,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!6BNCK"9^$7]O*#,-T2F/.5+",^<G4!P?=3D!P74C*L1M4318N,A
-M)Z\0=3DVM'OWS!O9J#J`C>TPPZ\'38P,$%?XK__K+411EH<I9M,C%^&=3D4]BEVN
-M\7]5I>-GXFKI*.L_L+`Q4@$])`UL!NWA!!#A5276N<RW7JE>B6;/@Z$(MOQ=3D
-M>BD``"2&@3WBU4E?*)1E%/&W-QH_M'X!\($*)1:!#>.<.>Y;K2D``!P``$`$
-MIO'9'1',9$+HPI=3D6$59?7OX4:)X````<``!`!>4**P7L06;YPO/G.ZH%/CK+
-MV:A at Z!*W1K'_!`"8`0``F`$```(```!%``&4;+8``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE1%1Q^1Q'K$```````````"$@(@@````````!>"(``'@```!T`0$"
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``:+DA*7GGZKYV1A]ATW6:1BYM
-MJO"W].F8 at TC%N4]K@$,L_?S$B%_,>H_MC*.Y[?34*<-*B8NED/(WE0NM.ZGL
-MY4LV.YC.KK:!T(8*QF>ZE,Z`?HVUG*T4O[.YTRA+ at 1Z1A7DN_C$]1'KRQEB#
-MIZ3VND69C>M2FA>/SEU%IQX7XTLI```DRX65N1LCY]N77 at S(4P42&.ZUOC'5
-MN;,1N289E0O/AU\I```<``!`!"*5,.<RR0SIY,'&FP*L'1`!,H;W````'```
-M0`7TOW,$VAF+,$!#BTW,>`D17&@RV. at 2MT90+0@`F`$``)@!```"````10`!
-ME&RX``!`$0``P*@!`<"H`0(!]`'T`8`'9414<?D<1ZQ````````````A("((
-M`````````7 at B``!X````=3D`$!`@P#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`&BY(2EYY^J^=3DD8?8=3D-UFD8N;:KPM_3IF(-(Q;E/:X!#+/W\Q(A?S'J/[8RC
-MN>WTU"G#2HF+I9#R-Y4+K3NI[.5+-CN8SJZV@=3D"&"L9GNI3.@'Z-M9RM%+^S
-MN=3D,H2X$>D85Y+OXQ/41Z\L98 at Z>D]KI%F8WK4IH7C\Y=3D1:<>%^-+*0``),N%
-ME;D;(^?;EUX,R%,%$ACNM;XQU;FS$;DF&94+SX=3D?*0``'```0`0BE3#G,LD,
-MZ>3!QIL"K!T0`3*&]P```!P``$`%]+]S!-H9BS!`0XM-S'@)$5QH,MCH$K=3D&
-MZVX.`)@!``"8`0```@```$4``91LP0``0!$``,"H`0'`J`$"`?0!]`&`!V5$
-M5''Y'$>L0```````````(2`B"`````````%X(@``>````'0!`0(,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``!HN2$I>>?JOG9&'V'3=3D9I&+FVJ\+?TZ9B#
-M2,6Y3VN`0RS]_,2(7\QZC^V,H[GM]-0IPTJ)BZ60\C>5"ZT[J>SE2S8[F,ZN
-MMH'0A at K&9[J4SH!^C;6<K12_L[G3*$N!'I&%>2[^,3U$>O+&6(.GI/:Z19F-
-MZU*:%X_.746G'A?C2RD``"3+A96Y&R/GVY=3D>#,A3!1(8[K6^,=3D6YLQ&Y)AF5
-M"\^'7RD``!P``$`$(I4PYS+)#.GDP<:;`JP=3D$`$RAO<````<``!`!?2_<P3:
-M&8LP0$.+3<QX"1%<:#+8Z1*W1@)]#`"8`0``F`$```(```!%``&4;,8``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEJJ[\9P+1Y=3DH``````````"$@(@@````````!
-M>"(``'@```!T`0$##`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``K4.Q0@*:
-MU1G(N.YQUFH6&<;-<ET+P9=3DH#<3_J[Y?#286[,JHF\-V`74:;]59J;1.^-1U
-M\@`=3D[ZI9VS.EYLON6,)&A(W^K2OH$R'5ZZE5K=3DWL.T at B3J^U(YBFE;[JF,?U
-MBL>@`=3D\ZCGY]M?DHZ$3Z!>V-$B;V.2I;8I at QC'/E,HHI```D:PE!VB]OOYP,
-MT7*?2)I26/76ATUD at I]>W:-F,^SA_[4I```<``!`!`U;VA<`:@((*5.9R?%A
-MUW_=3D0UV>````'```0`5'Y-BY]?,&'I=3D9<_;T&MRI!QI6(NH2MT8490``F`$`
-M`)@!```"````10`!E&S)``!`$0``P*@!`<"H`0(!]`'T`8`'9:JN_&<"T>7:
-M```````````A("((`````````7 at B``!X````=3D`$!`PP#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``*U#L4("FM49R+CN<=3D9J%AG&S7)=3D"\&7:`W$_ZN^7PTF
-M%NS*J)O#=3D@%U&F_56:FT3OC4=3D?(`'>^J6=3DLSI>;+[EC"1H2-_JTKZ!,AU>NI
-M5:W=3D[#M((DZOM2.8II6^ZIC']8K'H`'?.HY^?;7Y*.A$^@7MC1(F]CDJ6V*8
-M,8QSY3***0``)&L)0=3DHO;[^<#-%RGTB:4ECUUH=3D-9(*?7MVC9C/LX?^U*0``
-M'```0`0-6]H7`&H"""E3F<GQ8=3D=3D_W4-=3DG@```!P``$`%1^38N?7S!AZ767/V
-M]!K<J0<:5B+J$K=3D&N:8&`)@!``"8`0```@```$4``91LS@``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V6JKOQG`M'EV@``````````(2`B"`````````%X(@``>```
-M`'0!`0,,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``"M0[%"`IK5&<BX[G'6
-M:A89QLUR70O!EV at -Q/^KOE\-)A;LRJB;PW8!=3D1IOU5FIM$[XU'7R`!WOJEG;
-M,Z7FR^Y8PD:$C?ZM*^@3(=3D7KJ56MW>P[2").K[4CF*:5ONJ8Q_6*QZ`!WSJ.
-M?GVU^2CH1/H%[8T2)O8Y*EMBF#&,<^4RBBD``"1K"4':+V^_G`S1<I](FE)8
-M]=3D:'362"GU[=3DHV8S[.'_M2D``!P``$`$#5O:%P!J`@@I4YG)\6'7?]U#79X`
-M```<``!`!4?DV+GU\P8>EUES]O0:W*D'&E8BZQ*W1G*P!`"8`0``F`$```(`
-M``!%``&4;-D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE@;TO85HE1XX`````````
-M`"$@(@@````````!>"(``'@```!T`0$$#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``QIO'W<H#6PF3#P;*^U8 at GP6Y"*YA=3DZY_0X4*C7!Z`3?LC^C8T,BU
-M$WFIA\LLR8=3D?HBYD?TLN0Z7BGY[\55V=3D<#NE>DLZ!QT7F]OA?8U6SZQ[%.4`
-M-(^BPBB_%29BHCQX3>0J^Q>%90`O0ZZ%)(*-LT"I7%B_IK*U"U*IZAM:;*PI
-M```DMN:?J>$_7*TEXULO1G&..MJ/(*6,5&VVJI!`G?O:+I4I```<``!`!%=3D5
-MIC:M$.Q6)4:;JI7@`2U^(UZG````'```0`4MNC/]PC+$-HY8Z$I8I25)NY?$
-MG^L2MT8>WP<`F`$``)@!```"````10`!E&S<``!`$0``P*@!`<"H`0(!]`'T
-M`8`'98&]+V%:)4>.```````````A("((`````````7 at B``!X````=3D`$!!`P#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``,:;Q]W*`UL)DP\&ROM6()\%N0BN
-M87>N?T.%"HUP>@$W[(_HV-#(M1-YJ8?++,F'7Z(N9']++D.EXI^>_%5=3DG7`[
-MI7I+.@<=3D%YO;X7V-5L^L>Q3E`#2/HL(HOQ4F8J(\>$WD*OL7A64`+T.NA22"
-MC;-`J5Q8OZ:RM0M2J>H;6FRL*0``)+;FGZGA/URM)>-;+T9QCCK:CR"EC%1M
-MMJJ00)W[VBZ5*0``'```0`175:8VK1#L5B5&FZJ5X`$M?B->IP```!P``$`%
-M+;HS_<(RQ#:.6.A*6*4E2;N7Q)_K$K=3D&K2`.`)@!``"8`0```@```$4``91L
-MXP``0!$``,"H`0'`J`$"`?0!]`&`!V6!O2]A6B5'C@``````````(2`B"```
-M``````%X(@``>````'0!`00,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#&
-MF\?=3DR at -;"9,/!LK[5B"?!;D(KF%WKG]#A0J-<'H!-^R/Z-C0R+43>:F'RRS)
-MAU^B+F1_2RY#I>*?GOQ579UP.Z5Z2SH''1>;V^%]C5;/K'L4Y0`TCZ+"*+\5
-M)F*B/'A-Y"K[%X5E`"]#KH4D at HVS0*E<6+^FLK4+4JGJ&UILK"D``"2VYI^I
-MX3]<K27C6R]&<8XZVH\@I8Q4;;:JD$"=3D^]HNE2D``!P``$`$5U6F-JT0[%8E
-M1INJE>`!+7XC7J<````<``!`!2VZ,_W",L0VCECH2EBE)4F[E\2?[!*W1ITM
-M#`"8`0``F`$```(```!%``&4;.8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE/VR>
-M*?YE_%```````````"$@(@@````````!>"(``'@```!T`0$'#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``#I+I.IT9"6>CLTYYX6"+>KG3%/GVT1;O`Q.*
-M#XBYJ').K%3/!1\)3_M<83!^]$H5TM$8$OJXE-TUJ at +5PJS`CIQVQR,4/R>B
-MT6,_181J;\A-_@@2B3WW[_)D3>/`GXGOB?;V\$KQI0)1]/R$Q(J7*T53*K-I
-MS!L.,XLLYNR`M+TI```DSVP>_9H7/++#V<J0UZYDM:G2T&@Y]CW9K7__+JUS
-MJ]DI```<``!`!.J=3D@%:;BVNW<_%N$3^U$^+!>$8!````'```0`5)'V'<2L?T
-M^.2[L;G8>+U`Z!6,<NT2MT:_%@``F`$``)@!```"````10`!E&SH``!`$0``
-MP*@!`<"H`0(!]`'T`8`'93]LGBG^9?Q0```````````A("((`````````7 at B
-M``!X````=3D`$!!PP#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(```Z2Z3J=3D&0EG
-MH[-.>>%@BWJYTQ3Y]M$6[P,3B@^(N:AR3JQ4SP4?"4_[7&$P?O1*%=3D+1&!+Z
-MN)3=3D-:H"U<*LP(Z<=3DL<C%#\GHM%C/T6$:F_(3?X($HD]]^_R9$WCP)^)[XGV
-M]O!*\:4"4?3\A,2*ERM%4RJS:<P;#C.++.;L at +2]*0``),]L'OV:%SRRP]G*
-MD->N9+6ITM!H.?8]V:U__RZM<ZO9*0``'```0`3JG8!6FXMKMW/Q;A$_M1/B
-MP7A&`0```!P``$`%21]AW$K']/CDN[&YV'B]0. at 5C'+M$K=3D&=3D%@&`)@!``"8
-M`0```@```$4``91L[@``0!$``,"H`0'`J`$"`?0!]`&`!V4_;)XI_F7\4```
-M````````(2`B"`````````%X(@``>````'0!`0<,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```.DNDZG1D)9Z.S3GGA8(MZN=3D,4^?;1%N\#$XH/B+FH<DZL
-M5,\%'PE/^UQA,'[T2A72T1 at 2^KB4W36J`M7"K,".G';'(Q0_)Z+18S]%A&IO
-MR$W^"!*)/??O\F1-X\"?B>^)]O;P2O&E`E'T_(3$BI<K15,JLVG,&PXSBRSF
-M[("TO2D``"3/;![]FA<\LL/9RI#7KF2UJ=3D+0:#GV/=3DFM?_\NK7.KV2D``!P`
-M`$`$ZIV`5IN+:[=3DS\6X1/[43XL%X1@$````<``!`!4D?8=3DQ*Q_3XY+NQN=3DAX
-MO4#H%8QR[A*W1 at EE!`"8`0``F`$```(```!%``&4;/P``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE#F+!'8>9R!```````````"$@(@@````````!>"(``'@```!T
-M`0$(#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``YR?.H+(YRG4(?$&'%@RJ
-M!B1H6XQIR/LW_<P>A&:ICVPTC,L**@XNU[]B4PRBC)U=3D6.ZI'DF-8I;)'C$]
-MEEL9P5LE*VKX7!^,(^I$(X9CU.-E[U%5%K\+Y$(H?"6,8N)ES,B+E/>P'AL;
-M5;V%^2G5WN^L(3[:\2S<6>#A\SY+QDDI```D41+/BV%)?$+)QIXY*#Z'&+T[
-M;N5._Y#$J#0<:0ED0-<I```<``!`!+3%G$%(N[F@<9Z&E!97V5J!RW1/````
-M'```0`5,COMGJ at C5VUS?F3-+=3D%7WKQXD#.X2MT;DD`<`F`$``)@!```"````
-M10`!E&T!``!`$0``P*@!`<"H`0(!]`'T`8`'90YBP1V'F<@0```````````A
-M("((`````````7 at B``!X````=3D`$!"`P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``.<GSJ"R.<IU"'Q!AQ8,J at 8D:%N,:<C[-_W,'H1FJ8]L-(S+"BH.+M>_
-M8E,,HHR=3D75CNJ1Y)C6*6R1XQ/99;&<%;)2MJ^%P?C"/J1".&8]3C9>]151:_
-M"^1"*'PEC&+B9<S(BY3WL!X;&U6]A?DIU=3D[OK"$^VO$LW%G at X?,^2\9)*0``
-M)%$2SXMA27Q"R<:>.2@^AQB].V[E3O^0Q*@T'&D)9$#7*0``'```0`2TQ9Q!
-M2+NYH'&>AI065]E:@<MT3P```!P``$`%3([[9ZH(U=3DM<WYDS2W15]Z\>)`SN
-M$K=3D&=3D=3D(-`)@!``"8`0```@```$4``91M!P``0!$``,"H`0'`J`$"`?0!]`&`
-M!V4.8L$=3DAYG($```````````(2`B"`````````%X(@``>````'0!`0@,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``#G)\Z at LCG*=3D0A\08<6#*H&)&A;C&G(
-M^S?]S!Z$9JF/;#2,RPHJ#B[7OV)3#**,G5U8[JD>28UBELD>,3V66QG!6R4K
-M:OA<'XPCZD0CAF/4XV7O4546OPOD0BA\)8QBXF7,R(N4][`>&QM5O87Y*=3D7>
-M[ZPA/MKQ+-Q9X.'S/DO&22D``"11$L^+84E\0LG&GCDH/H<8O3MNY4[_D,2H
-M-!QI"61`URD``!P``$`$M,6<04B[N:!QGH:4%E?96H'+=3D$\````<``!`!4R.
-M^V>J"-7;7-^9,TMT5?>O'B0,[Q*W1H/@"P"8`0``F`$```(```!%``&4;0D`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE\#E9-<3I$R8``````````"$@(@@`````
-M```!>"(``'@```!T`0$)#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``:R@*
-MWG'2Q,%(#V&;-LI2"_7'BI#\@-3-*RS_\+O3JBUG8YTP)H/>;PNH*:@KDF;]
-MP7^_F$F_>N9ZA:\=3D!EJ`JSJ8/^9$[I`59=3D:]YX65&<P<YQN(@B41`+2YAF5'
-M:8$$.JGU<PJR<$#G*2EB(_X>^^5)U"*T)GC11CFBMU#[X:0I```DL1*+-M7<
-M"3OZ*'%/`B"K%V^6HGBE/KV*F_IKEW\8LI<I```<``!`!(X`I>P_4S)JI]A5
-MD]NUEO.R=3D`&?````'```0`4,01H6[^FN9,-`Q+TKL\9LD]D&2^\2MT;`"@\`
-MF`$``)@!```"````10`!E&T*``!`$0``P*@!`<"H`0(!]`'T`8`'9?`Y637$
-MZ1,F```````````A("((`````````7 at B``!X````=3D`$!"0P#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``&LH"MYQTL3!2`]AFS;*4 at OUQXJ0_(#4S2LL__"[
-MTZHM9V.=3D,":#WF\+J"FH*Y)F_<%_OYA)OWKF>H6O'09:@*LZF#_F1.Z0%676
-MO>>%E1G,'.<;B((E$0"TN89E1VF!!#JI]7,*LG!`YRDI8B/^'OOE2=3D0BM"9X
-MT48YHK=3D0^^&D*0``)+$2BS;5W`D[^BAQ3P(@JQ=3DOEJ)XI3Z]BIOZ:Y=3D_&+*7
-M*0``'```0`2.`*7L/U,R:J?859/;M9;SLG0!GP```!P``$`%#$$:%N_IKF3#
-M0,2]*[/&;)/9!DOP$K=3D&3 at H&`)@!``"8`0```@```$4``91M#P``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7P.5DUQ.D3)@``````````(2`B"`````````%X(@``
-M>````'0!`0D,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``!K*`K><=3D+$P4@/
-M89LVRE(+]<>*D/R`U,TK+/_PN].J+6=3DCG3`F@]YO"Z at IJ"N29OW!?[^82;]Z
-MYGJ%KQT&6H"K.I at _YD3ND!5EUKWGA949S!SG&XB")1$`M+F&94=3DI at 00ZJ?5S
-M"K)P0.<I*6(C_A[[Y4G4(K0F>-%&.:*W4/OAI"D``"2Q$HLVU=3DP)._HH<4\"
-M(*L7;Y:B>*4^O8J;^FN7?QBRERD``!P``$`$C@"E[#]3,FJGV%63V[66\[)T
-M`9\````<``!`!0Q!&A;OZ:YDPT#$O2NSQFR3V09+\1*W1O`4!`"8`0``F`$`
-M``(```!%``&4;14``$`1``#`J`$!P*@!`@'T`?0!@`=3DE]7Z9DU&>E,$`````
-M`````"$@(@@````````!>"(``'@```!T`0'W#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``J)KPN[80LY(4K$(F=3D-.T]/5[`F(6'9-:>RBRL[]$"*'K.=3D8;
-M-G'U^%I\B?V8EXZFR5S+WR=3DM$;BG@(S=3D&O%`B&K8^.IN6EJ/4=3D9$*-^66N*R
-MNL69T*!5%1[$SW8$`<=3D/ZKLO\IZAS:.!`$.8S5>GU;08-1)AV-SN>;1!5_P\
-MK8<I```D6]SOJ`W>7S4I:RZOH"U6-H=3D=3DAW$#%P(_UY8]'6+\-V<I```<``!`
-M!(Z-$X[M/-FGPV at V?PVC_0>SGSL=3D````'```0`4&Y,-B_QN13%:%EXME+W5B
-M3A:D0/$2MT::0@<`F`$``)@!```"````10`!E&T6``!`$0``P*@!`<"H`0(!
-M]`'T`8`'9?5^F9-1GI3!```````````A("((`````````7 at B``!X````=3D`$!
-M]PP#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``*B:\+NV$+.2%*Q")G33M/3U
-M>P)B%AV36GLHLK._1`BAZSG6&S9Q]?A:?(G]F)>.ILE<R]\G;1&XIX",W1KQ
-M0(AJV/CJ;EI:CU'61"C?EEKBLKK%F=3D"@514>Q,]V!`''3^J[+_*>H<VC at 0!#
-MF,U7I]6T&#428=3DC<[GFT05?\/*V'*0``)%O<[Z at -WE\U*6LNKZ`M5C:'78=3DQ
-M`Q<"/]>6/1UB_#=3DG*0``'```0`2.C1..[3S9I\-H-G\-H_T'LY\['0```!P`
-M`$`%!N3#8O\;D4Q6A9>+92]U8DX6I$#Q$K=3D&.H0-`)@!``"8`0```@```$4`
-M`91M%P``0!$``,"H`0'`J`$"`?0!]`&`!V7U?IF349Z4P0``````````(2`B
-M"`````````%X(@``>````'0!`?<,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``"HFO"[MA"SDA2L0B9TT[3T]7L"8A8=3DDUI[*+*SOT0(H>LYUALV<?7X6GR)
-M_9B7CJ;)7,O?)VT1N*>`C-T:\4"(:MCXZFY:6H]1UD0HWY9:XK*ZQ9G0H%45
-M'L3/=3D at 0!QT_JNR_RGJ'-HX$`0YC-5Z?5M!@U$F'8W.YYM$%7_#RMARD``"1;
-MW.^H#=3DY?-2EK+J^@+58VAUV'<0,7`C_7ECT=3D8OPW9RD``!P``$`$CHT3CNT\
-MV:?#:#9_#:/]![.?.QT````<``!`!0;DPV+_&Y%,5H67BV4O=3D6).%J1`\A*W
-M1CR2"P"8`0``F`$```(```!%``&4;24``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M\:(:EDZ'#F4``````````"$@(@@````````!>"(``'@```!T`0'X#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``C+9#W&NNY#VF5F9DZE>.9(,.65*BP>-E
-MXPR:.]RZJZ,C$\^XJ`S.P?71$9I;B0?X<>C>3NQ\X0`AX)S^NKV6P2_`#\`Z
-MAG?YX'9(D54#-^(+9\47L'(3^7=3D$GUNPFQCOPB4T/<EHRF]A;"(_G at PTQ^D8
-M at TN[^6_[W=3D*FZ1*KJ1\I```D.5>1"`?,!"E4.*/$:&%.4W.L`R"YL$BG$*4I
-M_@@"<Q,I```<``!`!'XL)%5G-'6=3D9^E!$[>BUG'X!#"\````'```0`720*KM
-M%L/O3?9(90LZ/[V:T=3D>*/?(2MT:=3DO`X`F`$``)@!```"````10`!E&TG``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9?&B&I9.APYE```````````A("((````````
-M`7 at B``!X````=3D`$!^`P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``(RV0]QK
-MKN0]IE9F9.I7CF2##EE2HL'C9>,,FCO<NJNC(Q//N*@,SL'UT1&:6XD'^''H
-MWD[L?.$`(>"<_KJ]EL$OP`_`.H9W^>!V2)%5`S?B"V?%%[!R$_EW1)];L)L8
-M[\(E-#W):,IO86PB/YX,-,?I&(-+N_EO^]W2IND2JZD?*0``)#E7D0@'S`0I
-M5#BCQ&AA3E-SK`, at N;!(IQ"E*?X(`G,3*0``'```0`1^+"159S1UG6?I01.W
-MHM9Q^`0PO````!P``$`%TD"J[1;#[TWV2&4+.C^]FM'7BCWS$K=3D&V[L%`)@!
-M``"8`0```@```$4``91M*```0!$``,"H`0'`J`$"`?0!]`&`!V7QHAJ63H<.
-M90``````````(2`B"`````````%X(@``>````'0!`?@,`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``",MD/<:Z[D/:969F3J5XYD at PY94J+!XV7C#)H[W+JK
-MHR,3S[BH#,[!]=3D$1FEN)!_AQZ-Y.['SA`"'@G/ZZO9;!+\`/P#J&=3D_G@=3DDB1
-M50,WX at MGQ1>P<A/Y=3DT2?6[";&._")30]R6C*;V%L(C^>##3'Z1B#2[OY;_O=3D
-MTJ;I$JNI'RD``"0Y5Y$(!\P$*50XH\1H84Y3<ZP#(+FP2*<0I2G^"`)S$RD`
-M`!P``$`$?BPD56<T=3D9UGZ4$3MZ+6<?@$,+P````<``!`!=3D)`JNT6P^]-]DAE
-M"SH_O9K1UXH]]!*W1LK)`P"8`0``F`$```(```!%``&4;3,``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE2\T5:R//H-,``````````"$@(@@````````!>"(``'@`
-M``!T`0'Y#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``]B5],M=3DL^0N?#:T.
-MQMGJ1*MA&&PZ;J#Q!Q;Z?1T1X./"^DS<L9BQU#T5A;@86WR]R!@+4%](8-/Y
-M#];2P0N6BA&KDH-@(E3DDTEYQ)X<T488YUBOYRR?K8?LZ9[5N87!DTB>M-'^
-M`V-X?(*EMCO&D@>#(PR1Y.I/3H[N%'FY/WPI```DA[3(>B<0 at F;"G^`UZXFG
-ME^%+X%LB^E7.R.)1.%4E0\XI```<``!`!&NWGG+P_$R>-_;FDM!YDW')"2A!
-M````'```0`7NJ[!4X./ZTA+BO7'UUY5"RG_0#/02MT:H]`8`F`$``)@!```"
-M````10`!E&TV``!`$0``P*@!`<"H`0(!]`'T`8`'94O-%6LCSZ#3````````
-M```A("((`````````7 at B``!X````=3D`$!^0P#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``/8E?3+7;/D+GPVM#L;9ZD2K81AL.FZ@\0<6^GT=3D$>#CPOI,W+&8
-ML=3D0]%86X&%M\O<@8"U!?2&#3^0_6TL$+EHH1JY*#8")4Y)-)><2>'-%&&.=3D8
-MK^<LGZV'[.F>U;F%P9-(GK31_ at -C>'R"I;8[QI('@R,,D>3J3TZ.[A1YN3]\
-M*0``)(>TR'HG$()FPI_ at ->N)IY?A2^!;(OI5SLCB43A5)4/.*0``'```0`1K
-MMYYR\/Q,GC?VYI+0>9-QR0DH00```!P``$`%[JNP5.#C^M(2XKUQ]=3D>50LI_
-MT`ST$K=3D&]C4-`)@!``"8`0```@```$4``91M.```0!$``,"H`0'`J`$"`?0!
-M]`&`!V5+S15K(\^@TP``````````(2`B"`````````%X(@``>````'0!`?D,
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``#V)7TRUVSY"Y\-K0[&V>I$JV$8
-M;#INH/$'%OI]'1'@X\+Z3-RQF+'4/16%N!A;?+W(&`M07TA at T_D/UM+!"Y:*
-M$:N2 at V`B5.2327G$GAS11ACG6*_G+)^MA^SIGM6YA<&32)ZTT?X#8WA\@J6V
-M.\:2!X,C#)'DZD].CNX4>;D_?"D``"2'M,AZ)Q""9L*?X#7KB:>7X4O at 6R+Z
-M5<[(XE$X525#SBD``!P``$`$:[>><O#\3)XW]N:2T'F3<<D)*$$````<``!`
-M!>ZKL%3 at X_K2$N*]<?77E4+*?]`,]1*W1OY""P"8`0``F`$```(```!%``&4
-M;3T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE"T9:+NOGB[```````````"$@(@@`
-M```````!>"(``'@```!T`0'\#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MLZJ@,VQ%^+X[$(*[B>.I4LQBY at IF`UQ[T11"J+%TR)>!<4;FHPXNGF at 1+3Z9
-MNVKRA=3D<[X752J^<E2=3D'=3D<QJ at IW#UAJ_QG"D$P40,`)74_M20TYE6!:?B7Z76
-M6,ZW`-P*]#M5UA3&R,"&Z:9HU4=3DBAG=3D5)>Z011Q/EM+\O:^[7-XI```DU:N&
-ML at J(GB9UIK:[[+6F/1)EVK+9T.4%\24680UMFLPI```<``!`!-5=3D6=3DZ<>#$S
-MLQZ712$O5Q>:BR\8````'```0`68XY2-YG=3DYX:`P.MG;N)1].[26L/42MT:*
-M;@X`F`$``)@!```"````10`!E&U```!`$0``P*@!`<"H`0(!]`'T`8`'90M&
-M6B[KYXNP```````````A("((`````````7 at B``!X````=3D`$!_`P#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``+.JH#-L1?B^.Q""NXGCJ5+,8N8*9 at -<>]$4
-M0JBQ=3D,B7 at 7%&YJ,.+IYH$2T^F;MJ\H77.^%U4JOG)4G1W7,:H*=3DP]8:O\9PI
-M!,%$#`"5U/[4D-.95 at 6GXE^EUEC.MP#<"O0[5=3D84QLC`ANFF:-5'8H9W527N
-MD$4<3Y;2_+VONUS>*0``)-6KAK(*B)XF=3D::VN^RUICT29=3DJRV=3D#E!?$E%F$-
-M;9K,*0``'```0`3575G>G'@Q,[,>ET4A+U<7FHLO&````!P``$`%F..4C>9W
-M>>&@,#K9V[B4?3NTEK#V$K=3D&I6T%`)@!``"8`0```@```$4``91M0@``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V4+1EHNZ^>+L```````````(2`B"`````````%X
-M(@``>````'0!`?P,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"SJJ`S;$7X
-MOCL0 at KN)XZE2S&+F"F8#7'O1%$*HL73(EX%Q1N:C#BZ>:!$M/IF[:O*%USOA
-M=3D5*KYR5)T=3DUS&J"G</6&K_&<*03!1`P`E=3D3^U)#3F58%I^)?I=3D98SK<`W`KT
-M.U76%,;(P(;IIFC51V*&=3DU4E[I!%'$^6TOR]K[M<WBD``"35JX:R"HB>)G6F
-MMKOLM:8]$F7:LMG0Y07Q)19A#6V:S"D``!P``$`$U5U9WIQX,3.S'I=3D%(2]7
-M%YJ++Q@````<``!`!9CCE(WF=3DWGAH#`ZV=3DNXE'T[M):P]Q*W1H5Y`P"8`0``
-MF`$```(```!%``&4;4H``$`1``#`J`$!P*@!`@'T`?0!@`=3DE_55LP`@=3D01$`
-M`````````"$@(@@````````!>"(``'@```!T`0']#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@```=3D$%$IU?P at O6'=3DBT03'J_,`<],5-C\X4B*R6VO\QB^=3D6
-M4I[4G0/"GPR'@AEH/M+->8I'GUZ%=3D&Q>%8;6Q8JF+4$A0>(G(Y*H[$\=3DH9\2
-MC->J7>1EJ6B=3D2:!1)7E*:^Z)B)66/*2&/&^R8SZ73A![BZ,"'XG8!5;8N.W1
-MYCTKT?,I```D14K*X.,R*A*^J=3D<.G8(Q=3DL3JN'B)U7 at MI6O=3D>ELM\&HI```<
-M``!`!&=3DT:M!KGP;O?)DJP6!V at +-+_HA:````'```0`5W^JG^N#-L+2P)\/""
-MTT!HN[^<8_<2MT8AI at 8`F`$``)@!```"````10`!E&U+``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9?U5;,`('4$1```````````A("((`````````7 at B``!X````
-M=3D`$!_0P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(```'1!1*=3D7\(+UAW8M$$Q
-MZOS`'/3%38_.%(BLEMK_,8OG5E*>U)T#PI\,AX(9:#[2S7F*1Y]>A71L7A6&
-MUL6*IBU!(4'B)R.2J.Q/':&?$HS7JEWD9:EHG4F at 425Y2FONB8B5ECRDACQO
-MLF,^ETX0>XNC`A^)V`56V+CMT>8]*]'S*0``)$5*RN#C,BH2OJG7#IV",7;$
-MZKAXB=3D5X+:5KW7I;+?!J*0``'```0`1G=3D&K0:Y\&[WR9*L%@=3DH"S2_Z(6@``
-M`!P``$`%=3D_JI_K at S;"TL"?#P at M-`:+N_G&/W$K=3D&U><,`)@!``"8`0```@``
-M`$4``91M40``0!$``,"H`0'`J`$"`?0!]`&`!V7]56S`"!U!$0``````````
-M(2`B"`````````%X(@``>````'0!`?T,`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"```!T042G5_""]8=3DV+1!,>K\P!STQ4V/SA2(K);:_S&+YU92GM2=3D`\*?
-M#(>"&6@^TLUYBD>?7H5T;%X5AM;%BJ8M02%!XB<CDJCL3QVAGQ*,UZI=3DY&6I
-M:)U)H%$E>4IK[HF(E98\I(8\;[)C/I=3D.$'N+HP(?B=3D@%5MBX[=3D'F/2O1\RD`
-M`"1%2LK at XS(J$KZIUPZ=3D at C%VQ.JX>(G5>"VE:]UZ6RWP:BD``!P``$`$9W1J
-MT&N?!N]\F2K!8':`LTO^B%H````<``!`!7?ZJ?ZX,VPM+`GP\(+30&B[OYQC
-M^!*W1I/T"@"8`0``F`$```(```!%``&4;54``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE]""QR9U:%+H``````````"$@(@@````````!>"(``'@```!T`0'^#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``,Y+;2T;LF]ONCP.6'LHN((?D'@P2
-M/\]SN&ZAT6O:,R50T&?I7]6"IF&^DTG0?B%4 at 4:)*BQ5]B'9XHZ9;PC$M'I1
-M[:!/R:.CHU[&'T[7Q59!Y=3D#+9-5CGHC,T=3D;D#$/?O\]5(E<BX=3D:_>+6B70RB
-M!'&G at 14%B2"Z3^V at YM[.V2 at I```DI=3DNS%2*EYSSQ;3=3D^]_%1JIA#K$V#(1?,
-M\KNQS/*ZL:PI```<``!`!*:.71GU^8IP&")VPA;9=3D_2ADT__````'```0`4L
-M($Y*<LKH4V6M\K*-C,]"6Z'UT/@2MT8?(`X`F`$``)@!```"````10`!E&U6
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9?0 at L<F=3D6A2Z```````````A("((````
-M`````7 at B``!X````=3D`$!_ at P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``#.2
-MVTM&[)O;[H\#EA[*+B"'Y!X,$C_/<[ANH=3D%KVC,E4-!GZ5_5 at J9AOI-)T'XA
-M5(%&B2HL5?8AV>*.F6\(Q+1Z4>V at 3\FCHZ->QA].U\560>70RV358YZ(S-'6
-MY`Q#W[_/52)7(N'6OWBUHET,H at 1QIX$5!8D at ND_MH.;>SMDH*0``)*7;LQ4B
-MI><\\6TW?O?Q4:J80ZQ- at R$7S/*[L<SRNK&L*0``'```0`2FCET9]?F*<!@B
-M=3DL(6V7?TH9-/_P```!P``$`%+"!.2G+*Z%-EK?*RC8S/0ENA]=3D#Y$K=3D&C!\%
-M`)@!``"8`0```@```$4``91M6P``0!$``,"H`0'`J`$"`?0!]`&`!V7T(+')
-MG5H4N@``````````(2`B"`````````%X(@``>````'0!`?X,`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"```SDMM+1NR;V^Z/`Y8>RBX at A^0>#!(_SW.X;J'1
-M:]HS)5#09^E?U8*F8;Z32=3D!^(52!1HDJ+%7V(=3DGBCIEO",2T>E'MH$_)HZ.C
-M7L8?3M?%5D'ET,MDU6.>B,S1UN0,0]^_SU4B5R+AUK]XM:)=3D#*($<:>!%06)
-M(+I/[:#FWL[9*"D``"2EV[,5(J7G//%M-W[W\5&JF$.L38,A%\SRN[',\KJQ
-MK"D``!P``$`$IHY=3D&?7YBG`8(G;"%MEW]*&33_\````<``!`!2P at 3DIRRNA3
-M9:WRLHV,ST);H?70^A*W1H,K`P"8`0``F`$```(```!%``&4;64``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE-<4"\C"D'G(``````````"$@(@@````````!>"(`
-M`'@```!T`0'_#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``&I;$BK`.,&QO
-M,_]-J6?G33*DY$([TB$]&0_XSG/L1AZU#(*Y:UP:!>]C'@AAA+^/YC!8QK;%
-MB].BO,&4\IZ;U?8(&J2+`0`WA5RT[JDX*]"E,J'1Y\DY_DNHG2.V0_-E[RW2
-M/S,;E@,EB at BJA1O)[L9VO);:G%?[=3DFN!$9W#\``I```D6N9?@@0C:F(VGO6J
-MH_Z-^-BKK3V@;B0PY,MO0U at +`- at I```<``!`!(,8G1U8VG82N-^RA[V]P_T%
-MTA8R````'```0`7GU8F/96/H`AV6.<>\T2?EJI`)/OH2MT826`8`F`$``)@!
-M```"````10`!E&UJ``!`$0``P*@!`<"H`0(!]`'T`8`'937%`O(PI!YR````
-M```````A("((`````````7 at B``!X````=3D`$!_PP#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``!J6Q(JP#C!L;S/_3:EGYTTRI.1".](A/1D/^,YS[$8>M0R"
-MN6M<&@7O8QX(882_C^8P6,:VQ8O3HKS!E/*>F]7V"!JDBP$`-X5<M.ZI."O0
-MI3*AT>?).?Y+J)TCMD/S9>\MTC\S&Y8#)8H(JH4;R>[&=3DKR6VIQ7^W9K at 1&=3D
-MP_``*0``)%KF7X($(VIB-I[UJJ/^C?C8JZT]H&XD,.3+;T-8"P#8*0``'```
-M0`2#&)T=3D6-IV$KC?LH>]O</]!=3D(6,@```!P``$`%Y]6)CV5CZ`(=3DECG'O-$G
-MY:J0"3[Z$K=3D&GYD,`)@!``"8`0```@```$4``91M;P``0!$``,"H`0'`J`$"
-M`?0!]`&`!V4UQ0+R,*0><@``````````(2`B"`````````%X(@``>````'0!
-M`?\,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"```:EL2*L`XP;&\S_TVI9^=3D-
-M,J3D0CO2(3T9#_C.<^Q&'K4, at KEK7!H%[V,>"&&$OX_F,%C&ML6+TZ*\P93R
-MGIO5]@@:I(L!`#>%7+3NJ3 at KT*4RH=3D'GR3G^2ZB=3D([9#\V7O+=3D(_,QN6`R6*
-M"*J%&\GNQG:\EMJ<5_MV:X$1G</P`"D``"1:YE^"!"-J8C:>]:JC_HWXV*NM
-M/:!N)##DRV]#6`L`V"D``!P``$`$@QB=3D'5C:=3DA*XW[*'O;W#_072%C(````<
-M``!`!>?5B8]E8^@"'98YQ[S1)^6JD`D^^Q*W1E>F"@"8`0``F`$```(```!%
-M``&4;7D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE>U<>BM&;C5X``````````"$@
-M(@@````````!>"(``'@```!T`0$!#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``FUA9Y:!F9!2M,#J&<Z#?!$9O)3??N!I*141$.O*Y6.,I28_I\-9]$]6Q
-M#UXRNI.J-FQR(CX0T[1&)_TQ5.N,L:)$V0G]B;*>_//_%__"A_AHLOZ7Z)UX
-M"1 at 3G58I;D<]U<@%M1U)L1<C<9`]/]%$E7SGF^#7*OZ**D'*\^BFADLI```D
-M`+]B]15H56;+9K?2*Y;<3MDO:9^@,%A/]*-`-[XQ3`,I```<``!`!"6O1Q]0
-M,&A2S?QP\OTMT[CBXWG:````'```0`6>J')>Q">L9R0]R70'9>?/7,HE&/L2
-MMT8>T at T`F`$``)@!```"````10`!E&U\``!`$0``P*@!`<"H`0(!]`'T`8`'
-M97M7'HK1FXU>```````````A("((`````````7 at B``!X````=3D`$!`0P#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``)M86>6 at 9F04K3`ZAG. at WP1&;R4WW[@:
-M2D5$1#KRN5CC*4F/Z?#6?1/5L0]>,KJ3JC9L<B(^$-.T1B?],53KC+&B1-D)
-M_8FRGOSS_Q?_PH?X:++^E^B=3D>`D8$YU6*6Y'/=3D7(!;4=3D2;$7(W&0/3_11)5\
-MYYO at URK^BBI!RO/HIH9+*0``)`"_8O45:%5FRV:WTBN6W$[9+VF?H#!83_2C
-M0#>^,4P#*0``'```0`0EKT<?4#!H4LW\</+]+=3D.XXN-YV@```!P``$`%GJAR
-M7L0GK&<D/<ET!V7GSUS*)1C\$K=3D&,M$$`)@!``"8`0```@```$4``91M@@``
-M0!$``,"H`0'`J`$"`?0!]`&`!V5[5QZ*T9N-7@``````````(2`B"```````
-M``%X(@``>````'0!`0$,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``";6%GE
-MH&9D%*TP.H9SH-\$1F\E-]^X&DI%1$0Z\KE8XRE)C^GPUGT3U;$/7C*ZDZHV
-M;'(B/A#3M$8G_3%4ZXRQHD39"?V)LI[\\_\7_\*'^&BR_I?HG7@)&!.=3D5BEN
-M1SW5R`6U'4FQ%R-QD#T_T425?.>;X-<J_HHJ0<KSZ*:&2RD``"0`OV+U%6A5
-M9LMFM](KEMQ.V2]IGZ`P6$_THT`WOC%,`RD``!P``$`$):]''U`P:%+-_'#R
-M_2W3N.+C>=3DH````<``!`!9ZH<E[$)ZQG)#W)=3D`=3DEY\]<RB48_1*W1C/B`@"8
-M`0``F`$```(```!%``&4;8@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE9_)&]]2N
-M1'H``````````"$@(@@````````!>"(``'@```!T`0$"#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``;[?5);,/#*/Z6%3Z/,#YYG at A2]0S9")SH&R!\^Q4
-M:X5ZZ'`>0:BB:P2O>JJC#M^!0`F,8AER4+8P:8F@<;;=3D?GOMC!'@5N_B8L^/
-M?W*US1-U$QQ_H.=3DCFLV<>(;HPWQ/@^6.,!,*@@<($H-M$@(!K5=3DE#X->+LUI
-MUB5Y3V\WAXPI```DR&;T9`\=3DK]@QE&W6JY`V^\>R at HHFO*I02F(16`BV5@,I
-M```<``!`!+^A_VHTN5A>V!D&IK]SAZD]G58V````'```0`68KQMWBQTRRA#4
-M`/":-MO*RL/.Z?T2MT;#"08`F`$``)@!```"````10`!E&V*``!`$0``P*@!
-M`<"H`0(!]`'T`8`'96?R1O?4KD1Z```````````A("((`````````7 at B``!X
-M````=3D`$!`@P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``&^WU26S#PRC^EA4
-M^CS`^>9X(4O4,V0B<Z!L@?/L5&N%>NAP'D&HHFL$KWJJHP[?@4`)C&(9<E"V
-M,&F)H'&VW7Y[[8P1X%;OXF+/CW]RM<T3=3D1,<?Z#G8YK-G'B&Z,-\3X/ECC`3
-M"H('"!*#;1("`:U790^#7B[-:=3D8E>4]O-X>,*0``),AF]&0/':_8,91MUJN0
-M-OO'LH**)KRJ4$IB$5@(ME8#*0``'```0`2_H?]J-+E87M at 9!J:_<X>I/9U6
-M-@```!P``$`%F*\;=3DXL=3D,LH0U`#PFC;;RLK#SNG]$K=3D&8TL,`)@!``"8`0``
-M`@```$4``91MEP``0!$``,"H`0'`J`$"`?0!]`&`!V5G\D;WU*Y$>@``````
-M````(2`B"`````````%X(@``>````'0!`0(,`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!OM]4ELP\,H_I85/H\P/GF>"%+U#-D(G.@;('S[%1KA7KH<!Y!
-MJ*)K!*]ZJJ,.WX%`"8QB&7)0MC!IB:!QMMU^>^V,$>!6[^)BSX]_<K7-$W43
-M''^@YV.:S9QXANC#?$^#Y8XP$PJ"!P at 2@VT2`@&M5V4/@UXNS6G6)7E/;S>'
-MC"D``"3(9O1D#QVOV#&4;=3D:KD#;[Q[*"BB:\JE!*8A%8"+96`RD``!P``$`$
-MOZ'_:C2Y6%[8&0:FOW.'J3V=3D5C8````<``!`!9BO&W>+'3+*$-0`\)HVV\K*
-MP\[I_A*W1B95"@"8`0``F`$```(```!%``&4;9T``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DEC;-:LPUC`M0``````````"$@(@@````````!>"(``'@```!T`0$#
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``)`CJHJ"&PZ63;QT&UP&U1'4)
-MC=3D=3DI//XPP&:M!DHW@>1X=3D[]_%B]]'K8RH[[1HR%0_&ET/IE\,5MS+D5!!6+R
-MN+*X_\_ at U'-.7;AO<E4])LR?31&0?(F6S^-96%'92,,NDF^/L_4)%V5A46?2
-M"OH#4WI2FK0G[`TEFF;P#V#UA=3D4I```DZ>+_[B&FIL"'YF][I,00\;J#+DO+
-M?[/NHN2'$QJ`:S`I```<``!`!/CC;TC?^,_U-*KH,$A,X:\U;NWD````'```
-M0`5=3D]@%ZRPYFFP;I$0:%.#.]SV/8OOX2MT:K at PT`F`$``)@!```"````10`!
-ME&V>``!`$0``P*@!`<"H`0(!]`'T`8`'98VS6K,-8P+4```````````A("((
-M`````````7 at B``!X````=3D`$!`PP#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`"0(ZJ*@AL.EDV\=3D!M<!M41U"8W7:3S^,,!FK09*-X'D>'>_?Q8O?1ZV,J.^
-MT:,A4/QI=3D#Z9?#%;<RY%005B\KBRN/_/X-1S3EVX;W)5/2;,GTT1D'R)EL_C
-M65A1V4C#+I)OC[/U"1=3DE85%GT at KZ`U-Z4IJT)^P-)9IF\`]@]875*0``).GB
-M_^XAIJ;`A^9O>Z3$$/&Z at RY+RW^S[J+DAQ,:@&LP*0``'```0`3XXV](W_C/
-M]32JZ#!(3.&O-6[MY````!P``$`%7?8!>LL.9IL&Z1$&A3 at SO<]CV+[_$K=3D&
-M&(,$`)@!``"8`0```@```$4``91MHP``0!$``,"H`0'`J`$"`?0!]`&`!V6-
-MLUJS#6,"U```````````(2`B"`````````%X(@``>````'0!`0,,`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"```D".JBH(;#I9-O'0;7`;5$=3D0F-UVD\_C#`
-M9JT&2C>!Y'AWOW\6+WT>MC*COM&C(5#\:70^F7PQ6W,N14$%8O*XLKC_S^#4
-M<TY=3DN&]R53TFS)]-$9!\B9;/XUE84=3DE(PRZ2;X^S]0D796%19](*^@-3>E*:
-MM"?L#26:9O`/8/6%U2D``"3IXO_N(::FP(?F;WNDQ!#QNH,N2\M_L^ZBY(<3
-M&H!K,"D``!P``$`$^.-O2-_XS_4TJN at P2$SAKS5N[>0````<``!`!5WV`7K+
-M#F:;!ND1!H4X,[W/8]B^`!.W1G./`@"8`0``F`$```(```!%``&4;:\``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE<,;E<@I`PY$``````````"$@(@@````````!
-M>"(``'@```!T`0$$#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``KE.S+T!E
-MT$XPJDQ8%I+9-WX:K=3DF.I[(]HD1;4D0338Q6`N4.J',?F51/Y^JR]#(EEEPT
-M"`H(WA6.$E+;!"I>L?967.DMU,SMB/K)C(0KL&,<&#R+$XOEQ[5.:=3DW.Y%]L
-M_)@2Z`5S=3DD;9`.P(W,`41(#AD"CEVA?%P`/^9]Z at -D(I```D5^M-J^J.AL,8
-M0S4;P%S_D)3)%&AF,B6F$(:MSM"TM!4I```<``!`!*J-`;ZT>/@Y("4WQPM_
-MBUJFJKZ&````'```0`6&P,GE9\M:I!SOD$]@UKWJ)?>1?``3MT:.NP4`F`$`
-M`)@!```"````10`!E&VR``!`$0``P*@!`<"H`0(!]`'T`8`'97#&Y7(*0,.1
-M```````````A("((`````````7 at B``!X````=3D`$!!`P#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``*Y3LR]`9=3D!.,*I,6!:2V3=3D^&JW9CJ>R/:)$6U)$$TV,
-M5 at +E#JAS'YE43^?JLO0R)99<-`@*"-X5CA)2VP0J7K'V5ESI+=3D3,[8CZR8R$
-M*[!C'!@\BQ.+Y<>U3FG=3DSN1?;/R8$N@%<W9&V0#L"-S`%$2`X9`HY=3DH7Q<`#
-M_F?>H#9"*0``)%?K3:OJCH;#&$,U&\!<_Y"4R11H9C(EIA"&K<[0M+05*0``
-M'```0`2JC0&^M'CX.2`E-\<+?XM:IJJ^A@```!P``$`%AL#)Y6?+6J0<[Y!/
-M8-:]ZB7WD7P`$[=3D&)_T+`)@!``"8`0```@```$4``91MN@``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V5PQN5R"D##D0``````````(2`B"`````````%X(@``>```
-M`'0!`00,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``"N4[,O0&703C"J3%@6
-MDMDW?AJMV8ZGLCVB1%M21!--C%8"Y0ZH<Q^95$_GZK+T,B667#0("@C>%8X2
-M4ML$*EZQ]E9<Z2W4S.V(^LF,A"NP8QP8/(L3B^7'M4YIW<[D7VS\F!+H!7-V
-M1MD`[`C<P!1$@.&0*.7:%\7``_YGWJ`V0BD``"17ZTVKZHZ&PQA#-1O`7/^0
-ME,D4:&8R):80AJW.T+2T%2D``!P``$`$JHT!OK1X^#D@)3?'"W^+6J:JOH8`
-M```<``!`!8;`R>5GRUJD'.^03V#6O>HE]Y%\`1.W1I`*"@"8`0``F`$```(`
-M``!%``&4;=3D(``$`1``#`J`$!P*@!`@'T`?0!@`=3DEU/ZI. at R5L*8`````````
-M`"$@(@@````````!>"(``'@```!T`0$'#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``,QD2V%";MNAT&[1:5D=3D4PSHQ^(S6*4;5\E4A!/A#FL,RULW&C\55
-ME'1TYP9%3G at Z\3(0(Q/H!4]1RUD(*-O[G8K'\/E;G,>UFWLZB7YN2YV7D6W:
-M2^8UQ!>8M(Z.),>Z<O#=3DO(:.S(=3D.E7^:YP0;FYRSRD_2[[%`U>%2>)($QJ(I
-M```D)@&:^5/>6:KPNVON1\"/5)99'FFR.*/(&ADWZKX"F_,I```<``!`!%@)
-MQ4@>N=3D7QU%P.8A7>>+YF=3DV43````'```0`5SV-9#'I7!WZ*0,+2M`X"#:+E!
-MZP$3MT9\-0T`F`$``)@!```"````10`!E&W4``!`$0``P*@!`<"H`0(!]`'T
-M`8`'9=3D3^J3H,E;"F```````````A("((`````````7 at B``!X````=3D`$!!PP#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``#,9$MA0F[;H=3D!NT6E9'5,,Z,?B,
-MUBE&U?)5(03X0YK#,M;-QH_%591T=3D.<&14YX.O$R$",3Z`5/4<M9""C;^YV*
-MQ_#Y6YS'M9M[.HE^;DN=3DEY%MVDOF-<07F+2.CB3'NG+PW;R&CLR'3I5_FN<$
-M&YN<L\I/TN^Q0-7A4GB2!,:B*0``)"8!FOE3WEFJ\+MK[D?`CU2661YILCBC
-MR!H9-^J^`IOS*0``'```0`18"<5('KG5\=3D1<#F(5WGB^9G=3DE$P```!P``$`%
-M<]C60QZ5P=3D^BD#"TK0.`@VBY0>L"$[=3D&&C4$`)@!``"8`0```@```$4``91M
-MU0``0!$``,"H`0'`J`$"`?0!]`&`!V74_JDZ#)6PI@``````````(2`B"```
-M``````%X(@``>````'0!`0<,`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"```S
-M&1+84)NVZ'0;M%I61U3#.C'XC-8I1M7R52$$^$.:PS+6S<:/Q564=3D'3G!D5.
-M>#KQ,A`C$^@%3U'+60 at HV_N=3DBL?P^5N<Q[6;>SJ)?FY+G9>1;=3DI+YC7$%YBT
-MCHXDQ[IR\-V\AH[,ATZ5?YKG!!N;G+/*3]+OL4#5X5)XD at 3&HBD``"0F`9KY
-M4]Y9JO"[:^Y'P(]4EED>:;(XH\@:&3?JO@*;\RD``!P``$`$6`G%2!ZYU?'4
-M7`YB%=3DYXOF9W91,````<``!`!7/8UD,>E<'?HI`PM*T#@(-HN4'K`Q.W1B<_
-M`@"8`0``F`$```(```!%``&4;=3D8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE,L]8
-M>P:U&5T``````````"$@(@@````````!>"(``'@```!T`0$(#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``19G`*8.P02*/=3DD44`.$/6/AF%7Q%5U5^8?\[
-MRPB1Q.\K0;"S4-L-()``1%S\=3D"8))T;T;9FJY_,2IS.X)`7NW`>O5-+X6WMA
-MLHH.O#!!A`Z[.]>S=3D:W4%\2O\T$1L\;;>K5BINBTP at 35;2*]7!@`M77M*LX^
-MW\JOII_O=3DY=3D7M88I```D$\/;^1=3DKM`L]PH`1&[".4`C'-6,^Y*J8 at -@UIO:-
-MXY at I```<``!`!&DP=3D=3DD,4`Y<^UO7127&QL]/OOY"````'```0`68&>^4E3??
-M_`4XD4V8GWD.0-&4E@,3MT8S;04`F`$``)@!```"````10`!E&W7``!`$0``
-MP*@!`<"H`0(!]`'T`8`'93+/6'L&M1E=3D```````````A("((`````````7 at B
-M``!X````=3D`$!"`P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``$69P"F#L$$B
-MCW9%%`#A#UCX9A5\15=3D5?F'_.\L(D<3O*T&PLU#;#2"0`$1<_'0F"2=3D&]&V9
-MJN?S$J<SN"0%[MP'KU32^%M[8;**#KPP080.NSO7LW6MU!?$K_-!$;/&VWJU
-M8J;HM,($U6TBO5P8`+5U[2K./M_*KZ:?[W>75[6&*0``)!/#V_D7:[0+/<*`
-M$1NPCE`(QS5C/N2JF(#8-:;VC>.8*0``'```0`1I,'79#%`.7/M;UT4EQL;/
-M3[[^0@```!P``$`%F!GOE)4WW_P%.)%-F)]Y#D#1E)8#$[=3D&VJX+`)@!``"8
-M`0```@```$4``91MV```0!$``,"H`0'`J`$"`?0!]`&`!V4RSUA[!K4970``
-M````````(2`B"`````````%X(@``>````'0!`0@,`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``!%F<`I@[!!(H]V110`X0]8^&85?$5757YA_SO+")'$[RM!
-ML+-0VPT at D`!$7/QT)@DG1O1MF:KG\Q*G,[@D!>[<!Z]4TOA;>V&RB at Z\,$&$
-M#KL[U[-UK=3D07Q*_S01&SQMMZM6*FZ+3"!-5M(KU<&`"U=3D>TJSC[?RJ^FG^]W
-MEU>UABD``"03P]OY%VNT"SW"@!$;L(Y0",<U8S[DJIB`V#6F]HWCF"D``!P`
-M`$`$:3!UV0Q0#ES[6]=3D%)<;&ST^^_D(````<``!`!9 at 9[Y25-]_\!3B139B?
-M>0Y`T926!!.W1B&["0"8`0``F`$```(```!%``&4;=3DD``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEUP.6OR<961X``````````"$@(@@````````!>"(``'@```!T
-M`0$)#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``*)XO)L*V!41FI$N*;S6!
-MP^*,'EARRTD_B3^UB?("HZ!/FRIT;@LA<"8T&;=3D[@QGESU,6,V@>MMH?/W^\
-M9E9SHQ-SEM)];^'7Q;1?VY'O3S\'EO3KP&04TSG]W8[:"5'LM3$(X;>]2!>,
-MPEDH@:4;:MLF(&CQ0<G2`9GTW!E:"%(I```DMEVY\37HXE)-U:N/P=3DFL>X&Q
-M_7S?#<6YB&R2IL'EU<HI```<``!`!$O\J#J#]_+/^L:$Z94(P3<[SD73````
-M'```0`4WW"SB4`KJX8PH)$1C-X&-$B4`$`03MT96YPP`F`$``)@!```"````
-M10`!E&W:``!`$0``P*@!`<"H`0(!]`'T`8`'9=3D<#EK\G&5D>```````````A
-M("((`````````7 at B``!X````=3D`$!"0P#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``"B>+R;"M at 5$9J1+BF\U@</BC!Y8<LM)/XD_M8GR`J. at 3YLJ=3D&X+(7`F
-M-!FW>X,9Y<]3%C-H'K;:'S]_O&96<Z,3<Y;2?6_AU\6T7]N1[T\_!Y;TZ\!D
-M%-,Y_=3DV.V at E1[+4Q".&WO4 at 7C,)9*(&E&VK;)B!H\4')T@&9]-P96 at A2*0``
-M)+9=3DN?$UZ.)23=3D6KC\'9K'N!L?U\WPW%N8ALDJ;!Y=3D7**0``'```0`1+_*@Z
-M at _?RS_K&A.F5",$W.\Y%TP```!P``$`%-]PLXE`*ZN&,*"1$8S>!C1(E`!`%
-M$[=3D&HN8#`)@!``"8`0```@```$4``91MVP``0!$``,"H`0'`J`$"`?0!]`&`
-M!V77`Y:_)QE9'@``````````(2`B"`````````%X(@``>````'0!`0D,`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"```HGB\FPK8%1&:D2XIO-8'#XHP>6'++
-M23^)/[6)\@*CH$^;*G1N"R%P)C09MWN#&>7/4Q8S:!ZVVA\_?[QF5G.C$W.6
-MTGUOX=3D?%M%_;D>]//P>6].O`9!33.?W=3DCMH)4>RU,0CAM[U(%XS"62B!I1MJ
-MVR8@:/%!R=3D(!F?3<&5H(4BD``"2V7;GQ->CB4DW5JX_!V:Q[@;']?-\-Q;F(
-M;)*FP>75RBD``!P``$`$2_RH.H/W\L_ZQH3IE0C!-SO.1=3D,````<``!`!3?<
-M+.)0"NKAC"@D1&,W at 8T2)0`0!A.W1O#R`0"8`0``F`$```(```!%``&4;=3DT`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE]'M'<X5W1A$``````````"$@(@@`````
-M```!>"(``'@```!T`0'_#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``PKQY
-M,'?U=3DTP+C:3T8[7^3\3BXT7\3W,G/KH#OI.T!^#-Z.6\1?S\V]S5V!`0<3S&
-M1>TQH(@D"NLS6^#JE'T+RN[T]@"'Y6(7F&:B[EX\1,-.V1)%'N"U\MBZOMD/
-M)BGM".S"([JM-<@1T.M#]FRGU_D\I7;0LX=3D8A[M;#RT@\&\I```D4V.F(14^
-MIH*U2_ at Q!L66$VN at SEI5D"'")T6A_3L?^T<I```<``!`!&:-7)T.Q7`R6PB3
-M0#`G$]Z9YSND````'```0`7UG:6GY6#_Z/,.@!DRI)B`GTK^DP83MT8<'P4`
-MF`$``)@!```"````10`!E&W>``!`$0``P*@!`<"H`0(!]`'T`8`'9?1[1W.%
-M=3DT81```````````A("((`````````7 at B``!X````=3D`$!_PP#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``,*\>3!W]7=3D,"XVD]&.U_D_$XN-%_$]S)SZZ`[Z3
-MM`?@S>CEO$7\_-O<U=3D at 0$'$\QD7M,:"()`KK,UO at ZI1]"\KN]/8`A^5B%YAF
-MHNY>/$3#3MD211[@M?+8NK[9#R8I[0CLPB.ZK37($=3D#K0_9LI]?Y/*5VT+.'
-M6(>[6P\M(/!O*0``)%-CIB$5/J:"M4OX,0;%EA-KH,Y:59`APB=3D%H?T['_M'
-M*0``'```0`1FC5R=3D#L5P,EL(DT`P)Q/>F><[I````!P``$`%]9VEI^5 at _^CS
-M#H`9,J28@)]*_I,&$[=3D&!&$+`)@!``"8`0```@```$4``91MWP``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7T>T=3DSA7=3D&$0``````````(2`B"`````````%X(@``
-M>````'0!`?\,`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``#"O'DP=3D_5W3`N-
-MI/1CM?Y/Q.+C1?Q/<R<^N at .^D[0'X,WHY;Q%_/S;W-78$!!Q/,9%[3&@B"0*
-MZS-;X.J4?0O*[O3V`(?E8A>89J+N7CQ$PT[9$D4>X+7RV+J^V0\F*>T([,(C
-MNJTUR!'0ZT/V;*?7^3RE=3DM"SAUB'NUL/+2#P;RD``"138Z8A%3ZF at K5+^#$&
-MQ983:Z#.6E60(<(G1:'].Q_[1RD``!P``$`$9HU<G0[%<#);")-`,"<3WIGG
-M.Z0````<``!`!?6=3DI:?E8/_H\PZ`&3*DF("?2OZ3!Q.W1BYL"0"8`0``F`$`
-M``(```!%``&4;>$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE2?2_U at V5\\P`````
-M`````"$@(@@````````!>"(``'@```!T`0&`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``;[@[K8JU)R*%;>TR.^M5>-.&N#G3/W!JO2B5^;N.O<"WUNE(
-M6E3?^AEBV!V+>;._!YI.!C0)WQ[;[J8ZS-X';04:5(D,*[7GNRE7-P8,DP\9
-MN4V\5`"_X>9MJ+8O5QZX3&Y5[+\@=3DQ]P<NC(OM,RZ,@[80T5<)>]X4HS.K#<
-MYK4I```DL at DR@(!!3E7LO'%!W&L!H<\]P)S`^QU!92^]6KJ`$]LI```<``!`
-M!!!O[YM@)IT\@_X,;/$)C?>6_"4V````'```0`7K6J-W-H?8+GX_`I>[E=3DJ$
-M:.UH9`<3MT81F0P`F`$``)@!```"````10`!E&WB``!`$0``P*@!`<"H`0(!
-M]`'T`8`'94GTO]8-E?/,```````````A("((`````````7 at B``!X````=3D`$!
-M@`P#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``&^X.ZV*M2<BA6WM,COK57C3
-MAK at YTS]P:KTHE?F[CKW`M];I2%I4W_H98M@=3DBWFSOP>:3 at 8T"=3D\>V^ZF.LS>
-M!VT%&E2)#"NUY[LI5S<&#),/&;E-O%0`O^'F;:BV+U<>N$QN5>R_('<?<'+H
-MR+[3,NC(.V$-%7"7O>%*,SJPW.:U*0``)+(),H"`04Y5[+QQ0=3DQK`:'//<"<
-MP/L=3D064OO5JZ@!/;*0``'```0`00;^^;8":=3D/(/^#&SQ"8WWEOPE-@```!P`
-M`$`%ZUJC=3DS:'V"Y^/P*7NY7:A&CM:&0($[=3D&7Y@#`)@!``"8`0```@```$4`
-M`91MXP``0!$``,"H`0'`J`$"`?0!]`&`!V5)]+_6#97SS```````````(2`B
-M"`````````%X(@``>````'0!`8`,`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``!ON#NMBK4G(H5M[3([ZU5XTX:X.=3D,_<&J]*)7YNXZ]P+?6Z4A:5-_Z&6+8
-M'8MYL[\'FDX&-`G?'MONICK,W@=3DM!1I4B0PKM>>[*5<W!@R3#QFY3;Q4`+_A
-MYFVHMB]7'KA,;E7LOR!W'W!RZ,B^TS+HR#MA#15PE[WA2C,ZL-SFM2D``"2R
-M"3*`@$%.5>R\<4'<:P&ASSW`G,#['4%E+[U:NH`3VRD``!P``$`$$&_OFV`F
-MG3R#_ at QL\0F-]Y;\)38````<``!`!>M:HW<VA]@N?C\"E[N5VH1H[6AD"1.W
-M1M"B`0"8`0``F`$```(```!%``&4;>0``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M-E(9L,5Z3PH``````````"$@(@@````````!>"(``'@```!T`0$```,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``PO+>&5=3D;:_M>XYHE,IOYW\.:[I6CD%A`
-M-,>_6[,68^?0D at Q2=3DRI:5=3D-SBD6N'>I_1$$331VV[X8,-&PNO_V^910 at ZDGU
-M.@`N[DETLQAHA\Q)UL4?V'R:937AHV#4F#\((#1(2I+1JFNC,.+9RG./@O\K
-M68=3DG05:^?,MBO5Y?9C(I```D]`D4.\VF&2NYKP at Y3!\*'2?*6?_X%PS9K at F3
-MGR@`:T at I```<``!`!)/8O?2J^!SG':A6YPS22&E0BW2G````'```0`4E:MA"
-M)!P-@"E07,R0KL=3D80K[J90D3MT;/T`0`F`$``)@!```"````10`!E&WE``!`
-M$0``P*@!`<"H`0(!]`'T`8`'9392&;#%>D\*```````````A("((````````
-M`7 at B``!X````=3D`$!```#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``,+RWAE7
-M6VO[7N.:)3*;^=3D_#FNZ5HY!80#3'OUNS%F/GT)(,4G<J6E73<XI%KAWJ?T1!
-M$TT=3DMN^&##1L+K_]OF44(.I)]3H`+NY)=3D+,8:(?,2=3D;%']A\FF4UX:- at U)@_
-M""`T2$J2T:IKHS#BV<ISCX+_*UF'9T%6OGS+8KU>7V8R*0``)/0)%#O-IADK
-MN:\(.4P?"ATGREG_^!<,V:X)DY\H`&M(*0``'```0`23V+WTJO@<YQVH5N<,
-MTDAI4(MTIP```!P``$`%)6K80B0<#8`I4%S,D*['6$*^ZF4)$[=3D&A1(+`)@!
-M``"8`0```@```$4``91MY@``0!$``,"H`0'`J`$"`?0!]`&`!V4V4AFPQ7I/
-M"@``````````(2`B"`````````%X(@``>````'0!`0```P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``#"\MX95UMK^U[CFB4RF_G?PYKNE:.06$`TQ[];LQ9C
-MY]"2#%)W*EI5TW.*1:X=3DZG]$01--';;OA at PT;"Z__;YE%"#J2?4Z`"[N272S
-M&&B'S$G6Q1_8?)IE->&C8-28/P@@-$A*DM&J:Z,PXMG*<X^"_RM9AV=3D!5KY\
-MRV*]7E]F,BD``"3T"10[S:89*[FO"#E,'PH=3D)\I9__ at 7#-FN"9.?*`!K2"D`
-M`!P``$`$D]B]]*KX'.<=3DJ%;G#-)(:5"+=3D*<````<``!`!25JV$(D'`V`*5!<
-MS)"NQUA"ONIE"A.W1MH>"0"8`0``F`$```(```!%``&4;><``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEIQA;?"*9C38``````````"$@(@@````````!>"(``'@`
-M``!T`0$``0,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``IETU:R=3D5%E&(&5ZK
-M,@&U054"H!4\(P6-S9JTC0WY6)!&Z^=3DV`"(X<;?BAPZFBT`*MEX3R5`HU-SY
-MLD[!Q:F#;KRBG at 9#*0L[G[JB)2^FOSS=3DH;_P#,(E"5PTO1"`SAZ/^JB7>!C$
-M_/[R/W2;T<0JZHY\`B/*.<)%YI!J/PQUD?HI```DQEKK8%T9?JN?/?E3JI7T
-M9#7PS(U<;PPG9H$A"`;\D at DI```<``!`!"IQ@=3DQ#G<NM+(O2A>_PA^PT2WVV
-M````'```0`7\OD4 at 0GS>JAI/2*)@P("P9Z490 at H3MT;82 at P`F`$``)@!```"
-M````10`!E&WH``!`$0``P*@!`<"H`0(!]`'T`8`'9:<86WPBF8TV````````
-M```A("((`````````7 at B``!X````=3D`$!``$#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``*9=3D-6LG5191B!E>JS(!M4%5`J`5/",%C<V:M(T-^5B01NOG=3D@`B
-M.'&WXH<.IHM`"K9>$\E0*-3<^;).P<6I at VZ\HIX&0RD+.Y^ZHB4OIK\\W:&_
-M\`S")0E<-+T0@,X>C_JHEW at 8Q/S^\C]TF]'$*NJ.?`(CRCG"1>:0:C\,=3D9'Z
-M*0``),9:ZV!=3D&7ZKGSWY4ZJ5]&0U\,R-7&\,)V:!(0@&_)()*0``'```0`0J
-M<8'<0YW+K2R+TH7O\(?L-$M]M@```!P``$`%_+Y%($)\WJH:3TBB8,"`L&>E
-M&4(+$[=3D&+$H#`)@!``"8`0```@```$4``91MZ0``0!$``,"H`0'`J`$"`?0!
-M]`&`!V6G&%M\(IF--@``````````(2`B"`````````%X(@``>````'0!`0`!
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``"F735K)U4648 at 97JLR`;5!50*@
-M%3PC!8W-FK2-#?E8D$;KYW8`(CAQM^*'#J:+0`JV7A/)4"C4W/FR3L'%J8-N
-MO**>!D,I"SN?NJ(E+Z:_/-VAO_`,PB4)7#2]$(#.'H_ZJ)=3DX&,3\_O(_=3D)O1
-MQ"KJCGP"(\HYPD7FD&H_#'61^BD``"3&6NM at 71E^JY\]^5.JE?1D-?#,C5QO
-M#"=3DF at 2$(!OR2"2D``!P``$`$*G&!W$.=3DRZTLB]*%[_"'[#1+?;8````<``!`
-M!?R^12!"?-ZJ&D](HF#`@+!GI1E"#!.W1O5P`0"8`0``F`$```(```!%``&4
-M;?D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE5+`_?1Y7]@<``````````"$@(@@`
-M```````!>"(``'@```!T`0$``@,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M7AD<O4N'_P?,"LF-C)5-U>G[1C.[F)/=3D_31JFJ\/H$J&<_()*ZZZSX%M%L*D
-M8GJ9<QS`Z*7V!TU^!XJ52/Y0(=3D'B=3D1=3DA#XY0^+ at H4Q57PO!8O"TJ$EP8+KO5
-M1#?+"D-5)]$R'@_2\2N^H=3DN'S%6<.OI!W<N1H)-"%AUU[8.&9T\I```D/HX_
-MDID20!YFDCIV.UFC##BM??PX3V(G%%(ZQ1-\_S at I```<``!`!*VT"\"GP&DG
-M(>K<G%#FXP>K=3DDZA````'```0`7MI9=3DP31W,PPD":TN<E`/-J'X-YPP3MT:\
-MJ00`F`$``)@!```"````10`!E&WZ``!`$0``P*@!`<"H`0(!]`'T`8`'952P
-M/WT>5_8'```````````A("((`````````7 at B``!X````=3D`$!``(#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``%X9'+U+A_\'S`K)C8R53=3D7I^T8SNYB3W?TT
-M:IJO#Z!*AG/R"2NNNL^!;1;"I&)ZF7,<P.BE]@=3D-?@>*E4C^4"'1XG4780^.
-M4/BX*%,55\+P6+PM*A)<&"Z[U40WRPI#52?1,AX/TO$KOJ';A\Q5G#KZ0=3DW+
-MD:"30A8=3D=3D>V#AF=3D/*0``)#Z./Y*9$D`>9I(Z=3DCM9HPPXK7W\.$]B)Q12.L43
-M?/\X*0``'```0`2MM`O`I\!I)R'JW)Q0YN,'JW9.H0```!P``$`%[:67<$T=3D
-MS,,)`FM+G)0#S:A^#><,$[=3D&5.L*`)@!``"8`0```@```$4``91M^P``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V54L#]]'E?V!P``````````(2`B"`````````%X
-M(@``>````'0!`0`"`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!>&1R]2X?_
-M!\P*R8V,E4W5Z?M&,[N8D]W]-&J:KP^@2H9S\@DKKKK/@6T6PJ1B>IES',#H
-MI?8'37X'BI5(_E`AT>)U%V$/CE#XN"A3%5?"\%B\+2H27!@NN]5$-\L*0U4G
-MT3(>#]+Q*[ZAVX?,59PZ^D'=3DRY&@DT(6'77M at X9G3RD``"0^CC^2F1)`'F:2
-M.G8[6:,,.*U]_#A/8B<44CK%$WS_."D``!P``$`$K;0+P*?`:2<AZMR<4.;C
-M!ZMV3J$````<``!`!>VEEW!-'<S#"0)K2YR4`\VH?@WG#1.W1C;U"`"8`0``
-MF`$```(```!%``&4;?T``$`1``#`J`$!P*@!`@'T`?0!@`=3DEM^PN5.TT['@`
-M`````````"$@(@@````````!>"(``'@```!T`0$``P,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``[1A!I#VT0WJ.(AC,A(?);>UCK\18.R=3D^Q':[.FOY/`VU
-M9&W6F[RW=3DN<&%,X+2S(:B`8:L<I(4Z8?2W)%OI6*`!0V1DBY at YM^^D[UO8T*
-M:XQ/GWGOM\NF];SX_/:6V5EA`RS:;3`Q9W)\!!*TS;-&262T#H9*"P5!#L!5
-MB_PU;&,I```DK[&Y^COJ$_IU5:L7. at 6GE3#H+,>4@?P-DL`"J4JDJHDI```<
-M``!`!-C&F),2()U#(%$1H^J-G:`^:+T=3D````'```0`4:`.`$<,\<0LQG`*!!
-M3)V:YW*=3D8PT3MT:H(PP`F`$``)@!```"````10`!E&W^``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9;?L+E3M-.QX```````````A("((`````````7 at B``!X````
-M=3D`$!``,#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``.T80:0]M$-ZCB(8S(2'
-MR6WM8Z_$6#LG?L1VNSIK^3P-M61MUIN\MW;G!A3."TLR&H@&&K'*2%.F'TMR
-M1;Z5B@`4-D9(N8.;?OI.];V-"FN,3Y]Y[[?+IO6\^/SVEME980,LVFTP,6=3DR
-M?`02M,VS1DEDM`Z&2 at L%00[`58O\-6QC*0``)*^QN?H[ZA/Z=3D56K%SH%IY4P
-MZ"S'E('\#9+``JE*I*J)*0``'```0`38QIB3$B"=3D0R!1$:/JC9V@/FB]'0``
-M`!P``$`%&@#@!'#/'$+,9P"@04R=3DFN=3DRG6,.$[=3D&'2,#`)@!``"8`0```@``
-M`$4``91M_P``0!$``,"H`0'`J`$"`?0!]`&`!V6W["Y4[33L>```````````
-M(2`B"`````````%X(@``>````'0!`0`#`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``#M&$&D/;1#>HXB&,R$A\EM[6.OQ%@[)W[$=3DKLZ:_D\#;5D;=3D:;O+=3DV
-MYP84S at M+,AJ(!AJQRDA3IA]+<D6^E8H`%#9&2+F#FW[Z3O6]C0IKC$^?>>^W
-MRZ;UO/C\]I;966$#+-IM,#%G<GP$$K3-LT9)9+0.ADH+!4$.P%6+_#5L8RD`
-M`"2OL;GZ.^H3^G55JQ<Z!:>5,. at LQY2!_`V2P`*I2J2JB2D``!P``$`$V,:8
-MDQ(@G4, at 41&CZHV=3DH#YHO1T````<``!`!1H`X`1PSQQ"S&<`H$%,G9KG<IUC
-M#Q.W1ADP`0"8`0``F`$```(```!%``&4;@```$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DETAV$$DY_,#<``````````"$@(@@````````!>"(``'@```!T`0$`!`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``M?0=3D8#=3D^N_&@SUW4&[O_U1<WE,U1
-MIYGKD1,Q%[I5]<O._P0/JIQL$U8QT<.L[9#,>H98`+VB-5YR/:@;L%7P(%13
-M,;6/!OGU at Y;Z*/$2J;XN,*G#JB5$%#0A%4YWU?*HSU'S(Y;W+@'38#STBJKI
-M]@VX#U*?:D\/(BQR%/V6-P$I```D$#V;=3D.37/]<1"UA/J>6+-BYR_J-Z*K@#
-M<J1RZ\6\7FHI```<``!`!+8_Z^0`M6P5NK at P@R%O?8KH&TY@````'```0`5R
-M1C%\I!X0=3D6&C/HT0)6D`X]S3M0\3MT:I6P0`F`$``)@!```"````10`!E&X!
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9=3D(=3DA!).?S`W```````````A("((````
-M`````7 at B``!X````=3D`$!``0#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``+7T
-M'6`W?KOQH,]=3DU!N[_]47-Y3-4:>9ZY$3,1>Z5?7+SO\$#ZJ<;!-6,=3D'#K.V0
-MS'J&6`"]HC5><CVH&[!5\"!44S&UCP;Y]8.6^BCQ$JF^+C"IPZHE1!0T(15.
-M=3D]7RJ,]1\R.6]RX!TV`\](JJZ?8-N`]2GVI/#R(L<A3]EC<!*0``)!`]FW3D
-MUS_7$0M83ZGEBS8N<OZC>BJX`W*D<NO%O%YJ*0``'```0`2V/^OD`+5L%;JX
-M,(,A;WV*Z!M.8````!P``$`%<D8Q?*0>$'5AHSZ-$"5I`./<T[4/$[=3D&`9T*
-M`)@!``"8`0```@```$4``91N`@``0!$``,"H`0'`J`$"`?0!]`&`!V72'802
-M3G\P-P``````````(2`B"`````````%X(@``>````'0!`0`$`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``"U]!U at -WZ[\:#/7=3D0;N__5%S>4S5&GF>N1$S$7
-MNE7UR\[_!`^JG&P35C'1PZSMD,QZAE@`O:(U7G(]J!NP5?`@5%,QM8\&^?6#
-MEOHH\1*IOBXPJ<.J)404-"$53G?5\JC/4?,CEO<N`=3D-@//2*JNGV#;@/4I]J
-M3P\B+'(4_98W`2D``"00/9MTY-<_UQ$+6$^IY8LV+G+^HWHJN`-RI'+KQ;Q>
-M:BD``!P``$`$MC_KY`"U;!6ZN#"#(6]]BN@;3F`````<``!`!7)&,7RD'A!U
-M8:,^C1`E:0#CW-.U$!.W1C6I"`"8`0``F`$```(```!%``&4;@,``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE-#H<@XJQTFT``````````"$@(@@````````!>"(`
-M`'@```!T`0$`!P,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``?3A<+&Y<@^P7
-M4O52O:5\D7[3#DZ#*N`LQ-']C&[\(#N&41#6ZD6!KB/Z2=3DEMG7R!BZQY^Y,G
-MV:)^?A!\<*D/U1WAY9$7<:UB^N.BIPI'*L+<2"W5&,^B)Z"10/C%MEHK=3DXMX
-M#_54JBVY]PT at -J+&O43S75"^LEH*-9]P)D^,/X0I```D1)A`M#.3C(BS1:.R
-M6.E03*`@[N?>XH()`<O!RUD at 49$I```<``!`!*JLAEM^OP5?-TY at YU,Z02'S
-M5QW.````'```0`52HAQW*:V3XB"14X_?]&:W\+_))A`3MT9[U0L`F`$``)@!
-M```"````10`!E&X$``!`$0``P*@!`<"H`0(!]`'T`8`'930Z'(.*L=3D)M````
-M```````A("((`````````7 at B``!X````=3D`$!``<#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``'TX7"QN7(/L%U+U4KVE?)%^TPY. at RK@+,31_8QN_"`[AE$0
-MUNI%@:XC^DG9;9U\@8NL>?N3)]FB?GX0?'"I#]4=3DX>61%W&M8OKCHJ<*1RK"
-MW$@MU1C/HB>@D4#XQ;9:*W>+>`_U5*HMN?<-(#:BQKU$\UU0OK):"C6?<"9/
-MC#^$*0``)$280+0SDXR(LT6CLECI4$R@(.[GWN*""0'+P<M9(%&1*0``'```
-M0`2JK(9;?K\%7S=3D.8.=3D3.D$A\U<=3DS@```!P``$`%4J(<=3DRFMD^(@D5./W_1F
-MM_"_R281$[=3D&S=3D0"`)@!``"8`0```@```$4``91N!0``0!$``,"H`0'`J`$"
-M`?0!]`&`!V4T.AR#BK'2;0``````````(2`B"`````````%X(@``>````'0!
-M`0`'`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``!].%PL;ER#[!=3D2]5*]I7R1
-M?M,.3H,JX"S$T?V,;OP at .X91$-;J18&N(_I)V6V=3D?(&+K'G[DR?9HGY^$'QP
-MJ0_5'>'ED1=3DQK6+ZXZ*G"D<JPMQ(+=3D48SZ(GH)%`^,6V6BMWBW@/]52J+;GW
-M#2`VHL:]1/-=3D4+ZR6 at HUGW`F3XP_A"D``"1$F$"T,Y.,B+-%H[)8Z5!,H"#N
-MY][B@@D!R\'+62!1D2D``!P``$`$JJR&6WZ_!5\W3F#G4SI!(?-7'<X````<
-M``!`!5*B''<IK9/B()%3C]_T9K?PO\DF$A.W1 at S@``"8`0``F`$```(```!%
-M``&4;@8``$`1``#`J`$!P*@!`@'T`?0!@`=3DEP7OD9QUPP^\``````````"$@
-M(@@````````!>"(``'@```!T`0$`"`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``P;T:]E$02XCYO<F=3DLP=3D.X[(+B at HJO4O6M2N-JJ@VM[?1ZS*F%8W50SH7
-M?[!:_4>*\TJ#WE&8093XO1J0_ND:R2K,D!DT,GD;1?Y4#.WLNN4';(F1/[WU
-M&U)U8]LA$BI,+=3D(+5MNS.HUK.TKJ,C%]U(?%T'5QS#AO5M\@6UFWD\@I```D
-MV3?/+A!;$XB3D[`0<;R];TWN?I>=3D^$UT>PX!GC?LS/,I```<``!`!.Q at X2Q?
-M#$)"JR$VH[/Z9YPD\'M+````'```0`6?HW'<SS.N;$G%)TWZ2AT_L93.51(3
-MMT8J#00`F`$``)@!```"````10`!E&X'``!`$0``P*@!`<"H`0(!]`'T`8`'
-M9<%[Y&<=3D<,/O```````````A("((`````````7 at B``!X````=3D`$!``@#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``,&]&O91$$N(^;W)G;,'3N.R"XH**KU+
-MUK4KC:JH-K>WT>LRIA6-U4,Z%W^P6OU'BO-*@]Y1F$&4^+T:D/[I&LDJS)`9
-M-#)Y&T7^5`SM[+KE!VR)D3^]]1M2=3D6/;(1(J3"W2"U;;LSJ-:SM*ZC(Q?=3D2'
-MQ=3D!U<<PX;U;?(%M9MY/(*0``)-DWSRX06Q.(DY.P$'&\O6]-[GZ7G?A-=3D'L.
-M`9XW[,SS*0``'```0`3L8.$L7PQ"0JLA-J.S^F><)/![2P```!P``$`%GZ-Q
-MW,\SKFQ)Q2=3D-^DH=3D/[&4SE42$[=3D&TTX*`)@!``"8`0```@```$4``91N"```
-M0!$``,"H`0'`J`$"`?0!]`&`!V7!>^1G'7##[P``````````(2`B"```````
-M``%X(@``>````'0!`0`(`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#!O1KV
-M41!+B/F]R9VS!T[CL at N*"BJ]2]:U*XVJJ#:WM]'K,J85C=3D5#.A=3D_L%K]1XKS
-M2H/>49A!E/B]&I#^Z1K)*LR0&30R>1M%_E0,[>RZY0=3DLB9$_O?4;4G5CVR$2
-M*DPMT at M6V[,ZC6L[2NHR,7W4A\70=3D7',.&]6WR!;6;>3R"D``"39-\\N$%L3
-MB).3L!!QO+UO3>Y^EYWX371[#@&>-^S,\RD``!P``$`$[&#A+%\,0D*K(3:C
-ML_IGG"3P>TL````<``!`!9^C<=3DS/,ZYL2<4G3?I*'3^QE,Y5$Q.W1J-=3D"`"8
-M`0``F`$```(```!%``&4;AL``$`1``#`J`$!P*@!`@'T`?0!@`=3DE]9S48[ZQ
-M`F@``````````"$@(@@````````!>"(``'@```!T`0$`"0,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``K38\*#:U.?#>RWA>I/G!X$\\Q,GVKAM$/3.^=3DCP_
-M#\!F at LL4!V`E?5I+HC75",`6*&V\ET43Y0Y3G+AS.)N'H at 0'#-+8/$/!9MAZ
-MV-$XZ. at SZ0B*:MT at B[L:]AVL at T,;0<#);_JI7/0Y at DRTF<7#H`YX;0<V)H*C
-MD:)K6SO`5F,I```D/<T3EJ.!L+1@?AFL)U!`FA at E*JXDX>*AN=3D9&QQE*?THI
-M```<``!`!)FEB];52EC/^_90RA6`1D\G1.?6````'```0`50F#,7&P0-BG1^
-MXHAK,4+WQB@@HQ,3MT:.APL`F`$``)@!```"````10`!E&X=3D``!`$0``P*@!
-M`<"H`0(!]`'T`8`'9?6<U&.^L0)H```````````A("((`````````7 at B``!X
-M````=3D`$!``D#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``*TV/"@VM3GPWLMX
-M7J3YP>!//,3)]JX;1#TSOG8\/P_`9H++%`=3D@)7U:2Z(UU0C`%BAMO)=3D%$^4.
-M4YRX<SB;AZ($!PS2V#Q#P6;8>MC1..CH,^D(BFK=3D((N[&O8=3DK(-#&T'`R6_Z
-MJ5ST.8),M)G%PZ`.>&T'-B:"HY&B:UL[P%9C*0``)#W-$Y:C@;"T8'X9K"=3D0
-M0)H8)2JN).'BH;G61L<92G]**0``'```0`29I8O6U4I8S_OV4,H5@$9/)T3G
-MU@```!P``$`%4)@S%QL$#8IT?N*(:S%"]\8H(*,4$[=3D&L88"`)@!``"8`0``
-M`@```$4``91N(0``0!$``,"H`0'`J`$"`?0!]`&`!V7UG-1COK$":```````
-M````(2`B"`````````%X(@``>````'0!`0`)`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``"M-CPH-K4Y\-[+>%ZD^<'@3SS$R?:N&T0],[YV/#\/P&:"RQ0'
-M8"5]6DNB-=3D4(P!8H;;R711/E#E.<N',XFX>B!`<,TM@\0\%FV'K8T3CHZ#/I
-M"(IJW2"+NQKV':R#0QM!P,EO^JE<]#F"3+29Q<.@#GAM!S8F at J.1HFM;.\!6
-M8RD``"0]S1.6HX&PM&!^&:PG4$":&"4JKB3AXJ&YUD;'&4I_2BD``!P``$`$
-MF:6+UM5*6,_[]E#*%8!&3R=3D$Y]8````<``!`!5"8,Q<;!`V*=3D'[BB&LQ0O?&
-M*""C%1.W1N20``"8`0``F`$```(```!%``&4;B(``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE$[X*D(`5^*8``````````"$@(@@````````!>"(``'@```!T`0$`
-M`P,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``5L`!?-6\?'O/$VLP&9@`V0LY
-M*$>RNBZ=3D1J01.2_F%%B2MZ5F9[H*'O/)G#]IU7VW>CL^$?Z2;I&1_L!4I$-!
-M'^A*Z-S+2I/#=3DO0^>_!L+Y*RJNLIEE;8=3DC\;WK57-R]"._)<R",XG-[_D\.!
-MV'@Q#R"#I6P&W=3D:$B$[!":!]]DDI```DN((;MW%ID3X9HLY1:W>*P*RV'LF8
-M$^$;R8&]GGO, at I4I```<``!`!">R3$-$PXRPJ4P'MWDD%*7WK[AI````'```
-M0`4[*6*Q20+0UC.Z7;$H+C-,I#RDP143MT8 at OP,`F`$``)@!```"````10`!
-ME&XG``!`$0``P*@!`<"H`0(!]`'T`8`'91.^"I"`%?BF```````````A("((
-M`````````7 at B``!X````=3D`$!``,#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`%;``7S5O'Q[SQ-K,!F8`-D+.2A'LKHNG4:D$3DOYA18DK>E9F>Z"A[SR9P_
-M:=3D5]MWH[/A'^DFZ1D?[`5*1#01_H2NC<RTJ3PW;T/GOP;"^2LJKK*996V'8_
-M&]ZU5S<O0COR7, at C.)S>_Y/#@=3DAX,0\@@Z5L!MW6A(A.P0F@??9)*0``)+B"
-M&[=3DQ:9$^&:+.46MWBL"LMA[)F!/A&\F!O9Y[S(*5*0``'```0`0GLDQ#1,.,
-ML*E,![=3DY)!2E]Z^X:0```!P``$`%.REBL4D"T-8SNEVQ*"XS3*0\I,$5$[=3D&
-MH@`*`)@!``"8`0```@```$4``91N+```0!$``,"H`0'`J`$"`?0!]`&`!V43
-MO at J0@!7XI@``````````(2`B"`````````%X(@``>````'0!`0`#`P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``!6P`%\U;Q\>\\3:S`9F`#9"SDH1[*Z+IU&
-MI!$Y+^846)*WI69GN at H>\\F</VG5?;=3DZ.SX1_I)ND9'^P%2D0T$?Z$KHW,M*
-MD\-V]#Y[\&PODK*JZRF65MAV/QO>M5<W+T([\ES((SB<WO^3PX'8>#$/((.E
-M;`;=3DUH2(3L$)H'WV22D``"2X at ANW<6F1/AFBSE%K=3DXK`K+8>R9 at 3X1O)@;V>
-M>\R"E2D``!P``$`$)[),0T3#C+"I3`>W>204I?>ON&D````<``!`!3LI8K%)
-M`M#6,[I=3DL2 at N,TRD/*3!%A.W1DL."`"8`0``F`$```(```!%``&4;C0``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEA/IUV/3)9MD``````````"$@(@@````````!
-M>"(``'@```!T`0$`!`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``Q?H"?Z)6
-MZ=3D'^!V?XLJ*S8*J/7.X&!9?A\SSH?R4=3D<5]XY*"#B:DAT7Q2G=3D_#?OS.2MP9
-ME=3D83>YGBS:`45D#0H^>13[N.(MA344X-*@D4MW>[`O#I##B5J6FM%0WM//T"
-MWX!6`LV*8Y$.VI$(2.M(&`+Z5>9VXQYT'7Q_,4NM-?8I```D<(H]F6*.W3P^
-MIX>:J3)"I[SF]+>C0)':<$@O85;)!0XI```<``!`!*!0AYS2L"NIP\HFYR%!
-M\-Y;0JZ,````'```0`5),<,^<2Q62/-H\FO.C`DQ<)8&6Q83MT8..0L`F`$`
-M`)@!```"````10`!E&XV``!`$0``P*@!`<"H`0(!]`'T`8`'983Z=3D=3DCTR6;9
-M```````````A("((`````````7 at B``!X````=3D`$!``0#```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``,7Z`G^B5NG1_@=3DG^+*BLV"JCUSN!@67X?,\Z'\E'7%?
-M>.2@@XFI(=3D%\4IW?PW[\SDK<&976$WN9XLV@%%9`T*/GD4^[CB+84U%.#2H)
-M%+=3DWNP+PZ0PXE:EIK14-[3S]`M^`5 at +-BF.1#MJ1"$CK2!@"^E7F=3DN,>=3D!U\
-M?S%+K37V*0``)'"*/9EBCMT\/J>'FJDR0J>\YO2WHT"1VG!(+V%6R04.*0``
-M'```0`2 at 4(><TK`KJ</*)N<A0?#>6T*NC````!P``$`%23'#/G$L5DCS:/)K
-MSHP),7"6!EL7$[=3D&@3@"`)@!``"8`0```@```$4``91N.0``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V6$^G78],EFV0``````````(2`B"`````````%X(@``>```
-M`'0!`0`$`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``#%^@)_HE;IT?X'9_BR
-MHK- at JH]<[@8%E^'S/.A_)1UQ7WCDH(.)J2'1?%*=3DW\-^_,Y*W!F5UA-[F>+-
-MH!160-"CYY%/NXXBV%-13 at TJ"12W=3D[L"\.D,.)6I::T5#>T\_0+?@%8"S8IC
-MD0[:D0A(ZT at 8`OI5YG;C'G0=3D?'\Q2ZTU]BD``"1PBCV98H[=3D/#ZGAYJI,D*G
-MO.;TMZ-`D=3DIP2"]A5LD%#BD``!P``$`$H%"'G-*P*ZG#RB;G(4'PWEM"KHP`
-M```<``!`!4DQPSYQ+%9(\VCR:\Z,"3%PE at 9;&!.W1E]&``"8`0``F`$```(`
-M``!%``&4;D```$`1``#`J`$!P*@!`@'T`?0!@`=3DE%SR3M1:FP=3D8`````````
-M`"$@(@@````````!>"(``'@```!T`0$`!0,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``<;QRVXK8.D\^K!>>ANF*_&`UC:<K=3D:?%\OE99KDKX2"98DC"0+=3DF
-M"$MN'M4HXV8@]LLU]67AP5(5P2!P2K-A=3D8KH.IYOB11*TIX($Q2A=3D84;SI0D
-M-6X>%4&NQ5;+$Q]*<N%5V2.*BU`@F)Z59I36LKBK^D=3D(IV!8 at KT\ZOF1)0(I
-M```DW"XVMA>7C<RD^[B]U"(31A1A\R;OS23UXCA*JU:[,N<I```<``!`!'8O
-M?O%-[3,70PL2,[\9/R?+(G3F````'```0`7O=3D'2QJXEY2L0!B`ZG2Z#GQ'KC
-M\A at 3MT;D<`,`F`$``)@!```"````10`!E&Y!``!`$0``P*@!`<"H`0(!]`'T
-M`8`'91<\D[46IL'6```````````A("((`````````7 at B``!X````=3D`$!``4#
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``'&\<MN*V#I//JP7GH;IBOQ at -8VG
-M*W6GQ?+Y66:Y*^$@F6)(PD"W9 at A+;A[5*.-F(/;+-?5EX<%2%<$@<$JS876*
-MZ#J>;XD42M*>"!,4H76%&\Z4)#5N'A5!KL56RQ,?2G+A5=3DDCBHM0()B>E6:4
-MUK*XJ_I'2*=3D at 6(*]/.KYD24"*0``)-PN-K87EXW,I/NXO=3D0B$T848?,F[\TD
-M]>(X2JM6NS+G*0``'```0`1V+W[Q3>TS%T,+$C._&3\GRR)TY@```!P``$`%
-M[W1TL:N)>4K$`8 at .ITN@Y\1ZX_(8$[=3D&4K()`)@!``"8`0```@```$4``91N
-M0@``0!$``,"H`0'`J`$"`?0!]`&`!V47/).U%J;!U@``````````(2`B"```
-M``````%X(@``>````'0!`0`%`P``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!Q
-MO'+;BM at Z3SZL%YZ&Z8K\8#6-IRMUI\7R^5EFN2OA()EB2,)`MV8(2VX>U2CC
-M9B#VRS7U9>'!4A7!('!*LV%UBN at ZGF^)%$K2G@@3%*%UA1O.E"0U;AX50:[%
-M5LL3'TIRX579(XJ+4""8GI5FE-:RN*OZ1TBG8%B"O3SJ^9$E`BD``"3<+C:V
-M%Y>-S*3[N+W4(A-&%&'S)N_-)/7B.$JK5KLRYRD``!P``$`$=3DB]^\4WM,Q=3D#
-M"Q(SOQD_)\LB=3D.8````<``!`!>]T=3D+&KB7E*Q`&(#J=3D+H.?$>N/R&1.W1AN^
-M!P"8`0``F`$```(```!%``&4;D0``$`1``#`J`$!P*@!`@'T`?0!@`=3DE=3D-1L
-M,,7"UTP``````````"$@(@@````````!>"(``'@```!T`0$`"`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``('68/\_DVDXUY[K1 at C%4*A*U88B2-MFE8@>0
-M1KG2\`3,JT$I9V:,WE6975+Y[W6/_]&T]QL*-[ZOLZN?_WXVL3VQG;%E%AT-
-M+DP0GH#^IH_CU!?:H695CMH)\LJ`0=3D99J*^-]%5!#P'QU$.6]H3*H,E?CL,I
-MAC+A(-`YL2',-G\I```D#HV#<Y?`=3DZ#'R+G-!G03.<P\O665YT;RF#(D73FQ
-M\6 at I```<``!`!"50VI=3D-MOI'7FIL'15AFG869)1@````'```0`6ECYOG^_)Y
-M%%%%CN:H`O=3D'CLX=3DS1D3MT;8Z at H`F`$``)@!```"````10`!E&Y%``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9734;##%PM=3D,```````````A("((`````````7 at B
-M``!X````=3D`$!``@#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``"!UF#_/Y-I.
-M->>ZT8(Q5"H2M6&(DC;9I6('D$:YTO`$S*M!*6=3DFC-Y5F5U2^>]UC__1M/<;
-M"C>^K[.KG_]^-K$]L9VQ918=3D#2Y,$)Z`_J:/X]07VJ%F58[:"?+*@$'66:BO
-MC?1500\!\=3D1#EO:$RJ#)7X[#*88RX2#0.;$AS#9_*0``)`Z- at W.7P'>@Q\BY
-MS09T$SG,/+UEE>=3D&\I at R)%TYL?%H*0``'```0`0E4-J73;;Z1UYJ;!T589IV
-M%F248````!P``$`%I8^;Y_OR>11118[FJ`+W1X[.'<T:$[=3D&&.H!`)@!``"8
-M`0```@```$4``91N1@``0!$``,"H`0'`J`$"`?0!]`&`!V5TU&PPQ<+73```
-M````````(2`B"`````````%X(@``>````'0!`0`(`P``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```@=3D9 at _S^3:3C7GNM&",50J$K5AB)(VV:5B!Y!&N=3D+P!,RK
-M02EG9HS>59E=3D4OGO=3D8__T;3W&PHWOJ^SJY__?C:Q/;&=3DL646'0TN3!">@/ZF
-MC^/4%]JA9E6.V at GRRH!!UEFHKXWT54$/`?'40Y;VA,J at R5^.PRF&,N$@T#FQ
-M(<PV?RD``"0.C8-SE\!WH,?(N<T&=3D!,YS#R]997G1O*8,B1=3D.;'Q:"D``!P`
-M`$`$)5#:ETVV^D=3D>:FP=3D%6&:=3DA9DE&`````<``!`!:6/F^?[\GD4446.YJ@"
-M]T>.SAW-&A.W1F,X#P"8`0``F`$```(```!%``&4;E$``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE^GC!EZ,+PI<``````````"$@(@@````````!>"(``'@```!T
-M`0$`"0,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``/$7</%<WIB(\Q1*'VZ>>
-MEN?E%2*B926>=3D'E=3D0_IJ7`6-[FTUA1[@QL4$9:O`D+8R9$=3D at M0.AN98K#TZT
-MDV4]$3*8!O5?7B-V>^WJ at 50U)QVOH)HVQZ(R+3VOCP06:+8)#`1,3.G<AW1&
-MXRWA`"0V?CADJZN=3DTBZFT%IQ%2H"NFLI```D1EQ"IVK;45U::''T'(VE[0L4
-M'I*$/C4 at A-C9"-)/;24I```<``!`!``-Y9P&W%C[M\JX?86%L,\;$F;'````
-M'```0`5CK@[./%5$.XS+:+!FE>7R/-@>JQL3MT:*(@,`F`$``)@!```"````
-M10`!E&Y3``!`$0``P*@!`<"H`0(!]`'T`8`'9?IXP9>C"\*7```````````A
-M("((`````````7 at B``!X````=3D`$!``D#```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``#Q%W#Q7-Z8B/,42A]NGGI;GY14BHF4EGG1Y74/Z:EP%C>YM-84>X,;%
-M!&6KP)"V,F1'8+4#H;F6*P].M)-E/1$RF`;U7UXC=3DGOMZH%4-2<=3DKZ":-L>B
-M,BT]KX\$%FBV"0P$3$SIW(=3DT1N,MX0`D-GXX9*NKG=3D(NIM!:<14J`KIK*0``
-M)$9<0J=3DJVU%=3D6FAQ]!R-I>T+%!Z2A#XU((38V0C23VTE*0``'```0`0`#>6<
-M!MQ8^[?*N'V%A;#/&Q)FQP```!P``$`%8ZX.SCQ51#N,RVBP9I7E\CS8'JL;
-M$[=3D&&V0)`)@!``"8`0```@```$4``91N5```0!$``,"H`0'`J`$"`?0!]`&`
-M!V7Z>,&7HPO"EP``````````(2`B"`````````%X(@``>````'0!`0`)`P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"```\1=3DP\5S>F(CS%$H?;IYZ6Y^45(J)E
-M)9YT>5U#^FI<!8WN;36%'N#&Q01EJ\"0MC)D1V"U`Z&YEBL/3K2393T1,I@&
-M]5]>(W9[[>J!5#4G':^@FC;'HC(M/:^/!!9HM at D,!$Q,Z=3DR'=3D$;C+>$`)#9^
-M.&2KJYW2+J;06G$5*@*Z:RD``"1&7$*G:MM175IH<?0<C:7M"Q0>DH0^-2"$
-MV-D(TD]M)2D``!P``$`$``WEG`;<6/NWRKA]A86PSQL29L<````<``!`!6.N
-M#LX\540[C,MHL&:5Y?(\V!ZK'!.W1N-Q!P"8`0``F`$```(```!%``&4;ET`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE>9I]X`\$$?$``````````"$@(@@`````
-M```!>"(``'@```!T`0$`"@,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``9&[Q
-MX.?8-I=3D+.!(7H]*]QL'0=3D'54!_7_W^$E/VY!%A[]Z?P35->9EAL]$>=3D^)P9C
-ME[E*+30;*NL,!3.>I\:_O7%VN8[6#!R08$]E?9?0.O`GBQLEM[NP&]V\0SCI
-MU3,E;$95;LQLB7=3D+$"6T1<6]X>B^$@J]HMX)+/[1^T)0ZN`I```D9HHT/6_;
-M!8[%QL>PQQ&/-G.OTLY2A]&'DS^X8>OQ?VHI```<``!`!'0_'M]I&_G@;<@.
-M,H258ML;*.7+````'```0`48W21+Q/^U@[DZZ5?M(GB-+>JQXAP3MT:=3DG`H`
-MF`$``)@!```"````10`!E&Y>``!`$0``P*@!`<"H`0(!]`'T`8`'97F:?>`/
-M!!'Q```````````A("((`````````7 at B``!X````=3D`$!``H#```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``&1N\>#GV#:72S at 2%Z/2O<;!T'1U5`?U_]_A)3]N
-M018>_>G\$U37F98;/1'G?B<&8Y>Y2BTT&RKK#`4SGJ?&O[UQ=3DKF.U at P<D&!/
-M97V7T#KP)XL;);>[L!O=3DO$,XZ=3D4S)6Q&56[,;(EW2Q`EM$7%O>'HOA(*O:+>
-M"2S^T?M"4.K@*0``)&:*-#UOVP6.Q<;'L,<1CS9SK]+.4H?1AY,_N&'K\7]J
-M*0``'```0`1T/Q[?:1OYX&W(#C*$E6+;&RCERP```!P``$`%&-TD2\3_M8.Y
-M.NE7[2)XC2WJL>(=3D$[=3D&W9L!`)@!``"8`0```@```$4``91N7P``0!$``,"H
-M`0'`J`$"`?0!]`&`!V5YFGW@#P01\0``````````(2`B"`````````%X(@``
-M>````'0!`0`*`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``!D;O'@Y]@VETLX
-M$A>CTKW&P=3D!T=3D50']?_?X24_;D$6'OWI_!-4UYF6&ST1YWXG!F.7N4HM-!LJ
-MZPP%,YZGQK^]<7:YCM8,')!@3V5]E]`Z\">+&R6WN[`;W;Q#..G5,R5L1E5N
-MS&R)=3DTL0);1%Q;WAZ+X2"KVBW at DL_M'[0E#JX"D``"1FBC0];]L%CL7&Q[#'
-M$8\V<Z_2SE*'T8>3/[AAZ_%_:BD``!P``$`$=3D#\>WVD;^>!MR`XRA)5BVQLH
-MY<L````<``!`!1C=3D)$O$_[6#N3KI5^TB>(TMZK'B'1.W1@/K#@"8`0``F`$`
-M``(```!%``&4;F```$`1``#`J`$!P*@!`@'T`?0!@`=3DEJHU7TT[0UCD`````
-M`````"$@(@@````````!>"(``'@```!T`0$`"P,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``,Z]!_!5BR]W3]]"9P)!(Q$V&'\V%Z+>.B@<W67XWI]XKLUE8
-M#BD8,"Z8;O&SB;8OH%1+KR<:V*&=3DI,]"!./@HF,Z7J=3DI=3D+ALI?$S(`"*LL,]
-M2W32ME;$-IT1W0BQ2#I\VZ"@^>[WWCQ+.1T4,&6CPL3H!"\@.4/*:U;&`8"8
-MX4\I```D.,822%]O^Q$FS^FCG>S*]"HT4SHHR!/6Y_8@@@XSW$$I```<``!`
-M!(,A5J%\RY1IE%_O:RH%CPJF#\)+````'```0`5FAD876WDORGD<3UDP>:R'
-M6);O-!X3MT9[U`(`F`$``)@!```"````10`!E&YC``!`$0``P*@!`<"H`0(!
-M]`'T`8`'9:J-5]-.T-8Y```````````A("((`````````7 at B``!X````=3D`$!
-M``L#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``#.O0?P58LO=3DT_?0F<"02,1-
-MAA_-A>BWCHH'-UE^-Z?>*[-96`XI&#`NF&[QLXFV+Z!42Z\G&MBAG:3/0 at 3C
-MX*)C.EZG:72X;*7Q,R``BK+#/4MTTK96Q#:=3D$=3DT(L4 at Z?-N at H/GN]]X\2SD=3D
-M%#!EH\+$Z`0O(#E#RFM6Q@&`F.%/*0``)#C&$DA?;_L1)L_IHYWLRO0J-%,Z
-M*, at 3UN?V(((.,]Q!*0``'```0`2#(5:A?,N4:91?[VLJ!8\*I at _"2P```!P`
-M`$`%9H9&%UMY+\IY'$]9,'FLAUB6[S0>$[=3D&"Q8)`)@!``"8`0```@```$4`
-M`91N:P``0!$``,"H`0'`J`$"`?0!]`&`!V6JC5?33M#6.0``````````(2`B
-M"`````````%X(@``>````'0!`0`+`P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M```SKT'\%6++W=3D/WT)G`D$C$388?S87HMXZ*!S=3D9?C>GWBNS65 at .*1 at P+IAN
-M\;.)MB^@5$NO)QK8H9VDST($X^"B8SI>IVETN&RE\3,@`(JRPSU+=3D-*V5L0V
-MG1'=3D"+%(.GS;H*#Y[O?>/$LY'10P9:/"Q.@$+R`Y0\IK5L8!@)CA3RD``"0X
-MQA)(7V_[$2;/Z:.=3D[,KT*C13.BC($];G]B""#C/<02D``!P``$`$@R%6H7S+
-ME&F47^]K*@6/"J8/PDL````<``!`!6:&1A=3D;>2_*>1Q/63!YK(=3D8EN\T'Q.W
-M1B(B!P"8`0``F`$```(```!%``&4;G<``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M;11P('J$`"0``````````"$@(@@````````!>"(``'@```!T`0$`#0,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``F>Z:XW*'%.W1H(V=3D/DZ`@0<- at 0:U<M3(
-MEFX<51N#UIQ'\"KS$BL/3],5W4?L"*JO`T)^_X&W<T75[EBD]2*KM+`[O-A%
-M@$44ZTOU"W!8),0Z>(C^6>/\FFPF3<(\1AFQW`SZ!?2_E'1%BI\8^IZHEY<1
-M$/"VO._)AS-0 at FU#=3DO$I```DV4R'5VO#H3=3DEK=3DS:@NW0O%$K2$,8'M>0DL;[
-M-;B0")<I```<``!`!'8@;SEJ at 3EQ50@P1HYHSRYGVX5Q````'```0`575\BO
-MA62'DK4H8#A,QE^Q_C"`C1\3MT983 at H`F`$``)@!```"````10`!E&YY``!`
-M$0``P*@!`<"H`0(!]`'T`8`'96T4<"!ZA``D```````````A("((````````
-M`7 at B``!X````=3D`$!``T#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``)GNFN-R
-MAQ3MT:"-G3Y.@($'#8$&M7+4R)9N'%4;@]:<1_`J\Q(K#T_3%=3DU'[`BJKP-"
-M?O^!MW-%U>Y8I/4BJ[2P.[S818!%%.M+]0MP6"3$.GB(_EGC_)IL)DW"/$89
-ML=3DP,^@7TOY1T18J?&/J>J)>7$1#PMKSOR8<S4()M0W;Q*0``)-E,AU=3DKPZ$W
-M9:W<VH+MT+Q1*TA#&![7D)+&^S6XD`B7*0``'```0`1V(&\Y:H$Y<54(,$:.
-M:,\N9]N%<0```!P``$`%5U?(KX5DAY*U*&`X3,9?L?XP@(T@$[=3D&LDT!`)@!
-M``"8`0```@```$4``91N>@``0!$``,"H`0'`J`$"`?0!]`&`!V5M%'`@>H0`
-M)```````````(2`B"`````````%X(@``>````'0!`0`-`P``#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``"9[IKC<H<4[=3D&@C9T^3H"!!PV!!K5RU,B6;AQ5&X/6
-MG$?P*O,2*P]/TQ7=3D1^P(JJ\#0G[_@;=3DS1=3D7N6*3U(JNTL#N\V$6`113K2_4+
-M<%@DQ#IXB/Y9X_R:;"9-PCQ&&;'<#/H%]+^4=3D$6*GQCZGJB7EQ$0\+:\[\F'
-M,U"";4-V\2D``"393(=3D7:\.A-V6MW-J"[=3D"\42M(0Q@>UY"2QOLUN)`(ERD`
-M`!P``$`$=3DB!O.6J!.7%5"#!&CFC/+F?;A7$````<``!`!5=3D7R*^%9(>2M2A@
-M.$S&7['^,("-(!.W1G6<#@"8`0``F`$```(```!%``&4;GL``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE#$\;H2=3D>V_8``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#@,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``Y at H0)YQ#>MMWQ^0P
-M+**;?FJ%N*M+-OFV):*%71<SWV;6>N(OR983M&D=3D_?AQ,A"([B#^./MY07R=3D
-MFNC?"I>$S!LN/JF^C*BXR%MFTT)J/<PN=3D2MTV900-'0DFT(SP;!YL5=3D/+\_K
-MY-G)Z4(\^+$/FE/Q<P>VL,KX9K>Y]OD6%Z<I```DRJ<0%TRFJZ<]_XRC((F^
-MI at SINEOZBP#/5FP9!OJ;J. at I```<``!`!*OB2RD`FU,>SJ*I at V1O&U79=3DQ7`
-M````'```0`605^V0^V1P`@/C>!IYQT4.TMU$]"$3MT8 at A@(`F`$``)@!```"
-M````10`!E&Y\``!`$0``P*@!`<"H`0(!]`'T`8`'90Q/&Z$G7MOV````````
-M```A("((`````````7 at B``!X````=3D`$!``X#```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``.8*$"><0WK;=3D\?D,"RBFWYJA;BK2S;YMB6BA5T7,]]FUGKB+\F6
-M$[1I'?WX<3(0B.X at _CC[>4%\G9KHWPJ7A,P;+CZIOHRHN,A;9M-":CW,+G4K
-M=3D-F4$#1T))M",\&P>;%73R_/Z^39R>E"//BQ#YI3\7,'MK#*^&:WN?;Y%A>G
-M*0``),JG$!=3D,IJNG/?^,HR")OJ8,Z;I;^HL`SU9L&0;ZFZCH*0``'```0`2K
-MXDLI`)M3'LZBJ8-D;QM5V7<5P````!P``$`%D%?MD/MD<`(#XW@:><=3D%#M+=3D
-M1/0A$[=3D&R<<(`)@!``"8`0```@```$4``91N?0``0!$``,"H`0'`J`$"`?0!
-M]`&`!V4,3QNA)U[;]@``````````(2`B"`````````%X(@``>````'0!`0`.
-M`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``#F"A`GG$-ZVW?'Y#`LHIM^:H6X
-MJTLV^;8EHH5=3D%S/?9M9ZXB_)EA.T:1W]^'$R$(CN(/XX^WE!?)V:Z-\*EX3,
-M&RX^J;Z,J+C(6V;30FH]S"YU*W39E!`T=3D"2;0C/!L'FQ5T\OS^ODV<GI0CSX
-ML0^:4_%S![:PROAFM[GV^187IRD``"3*IQ`73*:KISW_C*, at B;ZF#.FZ6_J+
-M`,]6;!D&^INHZ"D``!P``$`$J^)+*0";4Q[.HJF#9&\;5=3DEW%<`````<``!`
-M!9!7[9#[9'`"`^-X&GG'10[2W43T(A.W1D#3!@"8`0``F`$```(```!%``&4
-M;H@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE$,9$4<OSD%$``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#P,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M2XJ2[Z>G3%0,*(?^V.VK:<W])Z"M=3D'C$R!LOA<A`KK*QBCM>X;K[LF\P8S2H
-M(Y-&Q1=3D'F91OK()HRE9P4#H.08844P"+T>[6;7-X417-C.AOW3KRTPC^[2$#
-M\3\(I@@^50/\T/KS;*JJNB8\P+I;VHO2&1UYOT?Z52JQ9QU!&>LI```DR:L]
-M#;#+8IXPG%L"%%"LMV,Z$@#G,53<_%"Z[3O4L@<I```<``!`!&FUG1VA^-JK
-MX`AJ\90*=3D(JX$IXN````'```0`4X:"ZU%[:'SPYHK(__,^.?>T167R(3MT8>
-M``H`F`$``)@!```"````10`!E&Z)``!`$0``P*@!`<"H`0(!]`'T`8`'91#&
-M1%'+\Y!1```````````A("((`````````7 at B``!X````=3D`$!``\#```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``$N*DN^GITQ4#"B'_MCMJVG-_2>@K71XQ,@;
-M+X7(0*ZRL8H[7N&Z^[)O,&,TJ".31L471YF4;ZR":,I6<%`Z#D&&%%,`B]'N
-MUFUS>%$5S8SH;]TZ\M,(_NTA`_$_"*8(/E4#_-#Z\VRJJKHF/,"Z6]J+TAD=3D
-M>;]'^E4JL6<=3D01GK*0``),FK/0VPRV*>,)Q;`A10K+=3DC.A(`YS%4W/Q0NNT[
-MU+('*0``'```0`1IM9T=3DH?C:J^`(:O&4"G2*N!*>+@```!P``$`%.&@NM1>V
-MA\\.:*R/_S/CGWM$5E\C$[=3D&=3D/\``)@!``"8`0```@```$4``91NB@``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V40QD11R_.040``````````(2`B"`````````%X
-M(@``>````'0!`0`/`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!+BI+OIZ=3D,
-M5`PHA_[8[:MIS?TGH*UT>,3(&R^%R$"NLK&*.U[ANONR;S!C-*@CDT;%%T>9
-ME&^L at FC*5G!0. at Y!AA13`(O1[M9M<WA1%<V,Z&_=3D.O+3"/[M(0/Q/PBF"#Y5
-M`_S0^O-LJJJZ)CS`NEO:B](9'7F_1_I5*K%G'4$9ZRD``"3)JST-L,MBGC"<
-M6P(44*RW8SH2`.<Q5-S\4+KM.]2R!RD``!P``$`$:;6=3D':'XVJO@"&KQE`IT
-MBK at 2GBX````<``!`!3AH+K47MH?/#FBLC_\SXY][1%9?(Q.W1H%-#@"8`0``
-MF`$```(```!%``&4;HT``$`1``#`J`$!P*@!`@'T`?0!@`=3DEJ0%3GA(>[_D`
-M`````````"$@(@@````````!>"(``'@```!T`0$`$`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``GZRXN(LB,Z!LE&PUXZL-=3D/)IM96*\@N,"P>:.6^[W>+M
-M"^KDVT?R$`]NF<;O3%.X)<:OY$K1X!VFWD0BWYR_D8Z`^S4`*2H/,,BJ\7IT
-M][88,[_L2WLKU)WQ[/WI750JO4M-C_I`CLU(%/36D]K5T.=3DKSR[-$5+,X6:%
-MT/Y7<, at I```DA1_$)?Z\^8^<_/QP4T]S)K`$"5E1B,<5AA0FW*"&8H at I```<
-M``!`!*[_`3KX6#Z_U?P<!]7-Q-&`QMN`````'```0`6&G]?CO_MTBHR5;NS>
-MH*Q$LB:1^203MT8-.`(`F`$``)@!```"````10`!E&Z2``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9:D!4YX2'N_Y```````````A("((`````````7 at B``!X````
-M=3D`$!`!`#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``)^LN+B+(C.@;)1L->.K
-M#73R:;65BO(+C`L'FCEON]WB[0OJY-M'\A`/;IG&[TQ3N"7&K^1*T>`=3DIMY$
-M(M^<OY&.@/LU`"DJ#S#(JO%Z=3D/>V&#._[$M[*]2=3D\>S]Z5U4*KU+38_Z0([-
-M2!3TUI/:U=3D#G:\\NS1%2S.%FA=3D#^5W#(*0``)(4?Q"7^O/F/G/S\<%-/<R:P
-M!`E948C'%884)MR at AF*(*0``'```0`2N_P$Z^%@^O]7\'`?5S<31@,;;@```
-M`!P``$`%AI_7X[_[=3D(J,E6[LWJ"L1+(FD?DD$[=3D&H7D(`)@!``"8`0```@``
-M`$4``91NE@``0!$``,"H`0'`J`$"`?0!]`&`!V6I`5.>$A[O^0``````````
-M(2`B"`````````%X(@``>````'0!`0`0`P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``"?K+BXBR(SH&R4;#7CJPUT\FFUE8KR"XP+!YHY;[O=3DXNT+ZN3;1_(0
-M#VZ9QN],4[@EQJ_D2M'@':;>1"+?G+^1CH#[-0`I*@\PR*KQ>G3WMA at SO^Q+
-M>RO4G?'L_>E=3D5"J]2TV/^D".S4 at 4]-:3VM70YVO/+LT14LSA9H70_E=3DPR"D`
-M`"2%'\0E_KSYCYS\_'!33W,FL`0)65&(QQ6&%";<H(9BB"D``!P``$`$KO\!
-M.OA8/K_5_!P'U<W$T8#&VX`````<``!`!8:?U^._^W2*C)5N[-Z at K$2R)I'Y
-M)1.W1OZ%!@"8`0``F`$```(```!%``&4;J$``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE(H3RM0=3D1 at P0``````````"$@(@@````````!>"(``'@```!T`0$`$P,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``4\)NGR%:?#Y!_,/M:+N;ISH7XM\!
-M9^!A#_MP*5YEUJP>!-:E;CW+,YA).4_*\.O!)1]QJR[N?R1;10H,GW7SNC]8
-MW>Z[12#^S:GF"CQ:Z=3DYA.1H9(G[15SP9S`4R>]\KM+,7V&P$D&'1K'<BO+/X
-M.]>\D6M7=3D)O4._D6Z_.Y%K<I```DM*6`SP,[<<2.6!]:()`V>V+<41:81"FK
-MN<E$*JLTOFDI```<``!`!%$$QYB:9R)O%ZVA!DM3^P`GB><O````'```0`5J
-M/9AL#J$&2S+*4F+#6F.(T!:ATB43MT8%L at D`F`$``)@!```"````10`!E&ZB
-M``!`$0``P*@!`<"H`0(!]`'T`8`'92*$\K4'48,$```````````A("((````
-M`````7 at B``!X````=3D`$!`!,#```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``%/"
-M;I\A6GP^0?S#[6B[FZ<Z%^+?`6?@80_[<"E>9=3D:L'@36I6X]RS.823E/RO#K
-MP24?<:LN[G\D6T4*#)]U\[H_6-WNNT4 at _LVIY@H\6NG>83D:&2)^T5<\&<P%
-M,GO?*[2S%]AL!)!AT:QW(KRS^#O7O)%K5W2;U#OY%NOSN1:W*0``)+2E@,\#
-M.W'$CE@?6B"0-GMBW%$6F$0IJ[G)1"JK-+YI*0``'```0`11!,>8FF<B;Q>M
-MH09+4_L`)XGG+P```!P``$`%:CV8;`ZA!DLRRE)BPUICB-`6H=3D(F$[=3D&0;$`
-M`)@!``"8`0```@```$4``91NHP``0!$``,"H`0'`J`$"`?0!]`&`!V4BA/*U
-M!U&#!```````````(2`B"`````````%X(@``>````'0!`0`3`P``#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``!3PFZ?(5I\/D'\P^UHNYNG.A?BWP%GX&$/^W`I
-M7F76K!X$UJ5N/<LSF$DY3\KPZ\$E'W&K+NY_)%M%"@R?=3D?.Z/UC=3D[KM%(/[-
-MJ>8*/%KIWF$Y&ADB?M%7/!G,!3)[WRNTLQ?8;`208=3D&L=3DR*\L_@[U[R1:U=3DT
-MF]0[^1;K\[D6MRD``"2TI8#/`SMQQ(Y8'UH at D#9[8MQ1%IA$*:NYR40JJS2^
-M:2D``!P``$`$403'F)IG(F\7K:$&2U/[`">)YR\````<``!`!6H]F&P.H09+
-M,LI28L-:8XC0%J'2)A.W1IG]#0"8`0``F`$```(```!%``&4;J@``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DERT^7%Q3Z*F0``````````"$@(@@````````!>"(`
-M`'@```!T`0$`%`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``WR!-ADMSME%G
-MF"/@J7QQW"?,EF?DZ-<@EGW:$P7!$N")F;LQK3S9Q_H*3-")7 at KMJ\Y at .HND
-MO:-)*NZT:TOI&/%G\L'['6/$=3D-I59C&Q;W_YMPOK:I"X"`>_!7-T+18\31F0
-M`PUF',4/:)ACTHE"J:QM#=3D5ZZW1O'!^JUX0&[6(I```DE?PZ>[6Z4F[@0)(:
-M;ED#![+ at W!@%R3@"P:NB&A\10W8I```<``!`!"Z.[`L]C4DLE41MLM&".?3*
-M`.=3DK````'```0`7\.#QK^=3D]/$SB2.#(!IW\`XI)PKB<3MT;6Z0$`F`$``)@!
-M```"````10`!E&ZK``!`$0``P*@!`<"H`0(!]`'T`8`'9<M/EQ<4^BID````
-M```````A("((`````````7 at B``!X````=3D`$!`!0#```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``-\@389+<[919Y at CX*E\<=3DPGS)9GY.C7()9]VA,%P1+ at B9F[
-M,:T\V<?Z"DS0B5X*[:O.8#J+I+VC22KNM&M+Z1CQ9_+!^QUCQ'3:568QL6]_
-M^;<+ZVJ0N`@'OP5S=3D"T6/$T9D`,-9AS%#VB88]*)0JFL;0W5>NMT;QP?JM>$
-M!NUB*0``))7\.GNUNE)NX$"2&FY9`P>RX-P8!<DX`L&KHAH?$4-V*0``'```
-M0`0NCNP+/8U)+)5$;;+1 at CGTR@#G:P```!P``$`%_#@\:_G?3Q,XDC at R`:=3D_
-M`.*2<*XG$[=3D&8RL(`)@!``"8`0```@```$4``91NL```0!$``,"H`0'`J`$"
-M`?0!]`&`!V7+3Y<7%/HJ9```````````(2`B"`````````%X(@``>````'0!
-M`0`4`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``#?($V&2W.V46>8(^"I?''<
-M)\R69^3HUR"6?=3DH3!<$2X(F9NS&M/-G'^@I,T(E>"NVKSF`ZBZ2]HTDJ[K1K
-M2^D8\6?RP?L=3D8\1TVE5F,;%O?_FW"^MJD+@(![\%<W0M%CQ-&9`##68<Q0]H
-MF&/2B4*IK&T-U7KK=3D&\<'ZK7A`;M8BD``"25_#I[M;I2;N!`DAIN60,'LN#<
-M&`7).`+!JZ(:'Q%#=3DBD``!P``$`$+H[L"SV-22R51&VRT8(Y],H`YVL````<
-M``!`!?PX/&OYWT\3.)(X,@&G?P#BDG"N*!.W1DLU!@"8`0``F`$```(```!%
-M``&4;KD``$`1``#`J`$!P*@!`@'T`?0!@`=3DEA$N"^NCVFE(``````````"$@
-M(@@````````!>"(``'@```!T`0$`%0,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``+7)?/#BE2*9W.[C?@50"47)U@:6=3D]U*>+!4LQR"COLT;!_&+!*I7Z%1P
-MT^:$ZVQM\.)W#@C#>ZID@?&($-"YY at G>;)*GF"<N-N'Z,K0N*]]1D.=3D7OEYM
-M'9"HNDFM5BYPK1DRX7H#IKG(R2A[^?/\V70_?Z;"[YRJ#QY%6>TJZWPI```D
-M^OA*+R/H at 0RZ1>_^T2"*S<"-8SP0*`:&"NDP>_(WJ8\I```<``!`!)1YL,J5
-MZBNVO,RN_E9PJ"E)D,;?````'```0`7#`S"OB!X?2^_\U(E.(,&D'OU6"R at 3
-MMT;N8PD`F`$``)@!```"````10`!E&Z[``!`$0``P*@!`<"H`0(!]`'T`8`'
-M981+ at OKH]II2```````````A("((`````````7 at B``!X````=3D`$!`!4#```,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``"UR7SPXI4BF=3DSNXWX%4`E%R=3D8&EG?=3D2
-MGBP5+,<@H[[-&P?QBP2J5^A4<-/FA.ML;?#B=3DPX(PWNJ9('QB!#0N>8)WFR2
-MIY at G+C;A^C*T+BO?49#G5[Y>;1V0J+I)K58N<*T9,N%Z`Z:YR,DH>_GS_-ET
-M/W^FPN^<J@\>15GM*NM\*0``)/KX2B\CZ($,ND7O_M$@BLW`C6,\$"@&A at KI
-M,'OR-ZF/*0``'```0`24>;#*E>HKMKS,KOY6<*@I29#&WP```!P``$`%PP,P
-MKX@>'TOO_-2)3B#!I![]5 at LI$[=3D&$V,``)@!``"8`0```@```$4``91NO@``
-M0!$``,"H`0'`J`$"`?0!]`&`!V6$2X+ZZ/::4@``````````(2`B"```````
-M``%X(@``>````'0!`0`5`P``#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"```M<E\\
-M.*5(IG<[N-^!5`)1<G6!I9WW4IXL%2S'(*.^S1L'\8L$JE?H5'#3YH3K;&WP
-MXG<.",-[JF2!\8 at 0T+GF"=3DYLDJ>8)RXVX?HRM"XKWU&0YU>^7FT=3DD*BZ2:U6
-M+G"M&3+A>@.FN<C)*'OY\_S9=3D#]_IL+OG*H/'D59[2KK?"D``"3Z^$HO(^B!
-M#+I%[_[1((K-P(UC/!`H!H8*Z3![\C>ICRD``!P``$`$E'FPRI7J*[:\S*[^
-M5G"H*4F0QM\````<``!`!<,#,*^('A]+[_S4B4X at P:0>_58+*1.W1M>Q#0"8
-M`0``F`$```(```!%``&4;L0``$`1``#`J`$!P*@!`@'T`?0!@`=3DE+;JZ)+U%
-M0(,``````````"$@(@@````````!>"(``'@```!T`0$`_P,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``2LVHN)*GV=3DH,+QZ`N)[,)F`BJ+-!324E4<)_]++/
-M8+XWE<M*<;`V3GHYEU/;&%6?5KQ-4PC\I3D\4J88$`Y<,>[&M/HN(U=3DCG';6
-M7Q3#)WMDHH&#U,&N#0`EPPT!:)(55_:HF21`?%"*7GT71]^YV<4GE;)?2:V/
-M#N$+(<D0+=3D$I```D"910(OO*]UZ4>!-^E.0<SBEO(Z?76$RC+)$0DBA]_,8I
-M```<``!`!&LGK-^*;>G<PQFZ0[[#4?1I)NTU````'```0`5OPB7NTF?L'K"G
-MXA]>.C'^$6P4S2H3MT:,FP$`F`$``)@!```"````10`!E&[%``!`$0``P*@!
-M`<"H`0(!]`'T`8`'92VZNB2]14"#```````````A("((`````````7 at B``!X
-M````=3D`$!`/\#```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``$K-J+B2I]G:#"\>
-M at +B>S"9@(JBS04TE)5'"?_2RSV"^-Y7+2G&P-DYZ.9=3D3VQA5GU:\35,(_*4Y
-M/%*F&!`.7#'NQK3Z+B-78YQVUE\4PR=3D[9**!@]3!K at T`)<,-`6B2%5?VJ)DD
-M0'Q0BEY]%T??N=3DG%)Y6R7TFMCP[A"R')$"W1*0``)`F44"+[RO=3D>E'@3?I3D
-M',XI;R.GUUA,HRR1$)(H??S&*0``'```0`1K)ZS?BFWIW,,9ND.^PU'T:2;M
-M-0```!P``$`%;\(E[M)G[!ZPI^(?7CHQ_A%L%,TJ$[=3D&*=3DT'`)@!``"8`0``
-M`@```$4``91NR@``0!$``,"H`0'`J`$"`?0!]`&`!V4MNKHDO45`@P``````
-M````(2`B"`````````%X(@``>````'0!`0#_`P``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!*S:BXDJ?9V at PO'H"XGLPF8"*HLT%-)251PG_TLL]@OC>5RTIQ
-ML#9.>CF74]L859]6O$U3"/RE.3Q2IA at 0#EPQ[L:T^BXC5V.<=3DM9?%,,G>V2B
-M at 8/4P:X-`"7##0%HDA57]JB9)$!\4(I>?1=3D'W[G9Q2>5LE])K8\.X0LAR1`M
-MT2D``"0)E%`B^\KW7I1X$WZ4Y!S.*6\CI]=3D83*,LD1"2*'W\QBD``!P``$`$
-M:R>LWXIMZ=3DS#&;I#OL-1]&DF[34````<``!`!6_")>[29^P>L*?B'UXZ,?X1
-M;!3-*Q.W1JGH!0"8`0``F`$```(```!%``&4;M@``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE/V`_:D6GF3,``````````"$@(@@````````!>"(``'@```!T`0$`
-M@`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``!:)MO:WLS4$-J\*2IW]&T1P1
-M;3GC0W$2?J?,V5#<!.1ZH5W;*?`D<@6N5IG163[,K at J%:7^?[,11HS[TQXBX
-M*BVZM6)RR;O.0UA)OO`5RJML$C:6`C9^1E#*WOP:]>LZ%5L]LG.%,>#R)J3S
-M+:)G[![#K\DJAY/N"YY]/5;#<ADI```DVZJ08#JNZ0;0XV?)W'#OO\+R/<%G
-M8@*:<*CA6;I.)!,I```<``!`!)*7X,7GOC<67!(]B=3D at WGD1>/`1X````'```
-M0`5[5]4L$S.M64XU7=3DA^B47EK(JAA2L3MT:?%0D`F`$``)@!```"````10`!
-ME&[;``!`$0``P*@!`<"H`0(!]`'T`8`'93]@/VI%IYDS```````````A("((
-M`````````7 at B``!X````=3D`$!`(`#```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M``6B;;VM[,U!#:O"DJ=3D_1M$<$6TYXT-Q$GZGS-E0W`3D>J%=3DVRGP)'(%KE:9
-MT5D^S*X*A6E_G^S$4:,^],>(N"HMNK5B<LF[SD-82;[P%<JK;!(VE@(V?D90
-MRM[\&O7K.A5;/;)SA3'@\B:D\RVB9^P>PZ_)*H>3[@N>?3U6PW(9*0``)-NJ
-MD&`ZKND&T.-GR=3DQP[[_"\CW!9V("FG"HX5FZ3B03*0``'```0`22E^#%Y[XW
-M%EP2/8G8-YY$7CP$>````!P``$`%>U?5+!,SK5E.-5W8?HE%Y:R*H84L$[=3D&
-M_A0``)@!``"8`0```@```$4``91O6@``0!$``,"H`0'`J`$"`?0!]`&`!V4_
-M8#]J1:>9,P``````````(2`B"`````````%X(@``>````'0!`0"``P``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"```%HFV]K>S-00VKPI*G?T;1'!%M.>-#<1)^
-MI\S94-P$Y'JA7=3DLI\"1R!:Y6F=3D%9/LRN"H5I?Y_LQ%&C/O3'B+ at J+;JU8G+)
-MN\Y#6$F^\!7*JVP2-I8"-GY&4,K>_!KUZSH56SVR<X4QX/(FI/,MHF?L'L.O
-MR2J'D^X+GGT]5L-R&2D``"3;[email protected][I!M#C9\G<<.^_PO(]P6=3DB`IIPJ.%9
-MNDXD$RD``!P``$`$DI?@Q>>^-Q9<$CV)V#>>1%X\!'@````<``!`!7M7U2P3
-M,ZU93C5=3DV'Z)1>6LBJ&%+!.W1M-@#0"8`0``F`$```(```!%``&4;UL``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEXX]=3D?34"7<(``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`````P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``:2[VB/;6
-M2'A]VN]'B0),`N6U-1H'I^\;#2?'TYY6;;C<S4Z:#X"_K5DR+];@#K<A$'&^
-M-6AK\!_$0'PLWZ[=3D;Q9>7SY;$:AA1_XL7)6KZ8?<6ND^#K\>Y(FXS*/&8,H;
-MBB4#'FF#5G5!R.PP;OZW.@"GRX.EZ,I[)A_/<E'_U%<I```D"IB]^D6_N)^4
-MT`)Q@'IU[!#N=3D"0R=3D8C#>0F#+&/"I*PI```<``!`!'7"<-T#OUTD+;>*?)4D
-MS*\K]:KS````'```0`7EX#RTITEUM-&A*?G14S4)S+8&;BT3MT9;30$`F`$`
-M`)@!```"````10`!E&]<``!`$0``P*@!`<"H`0(!]`'T`8`'9>./77TU`EW"
-M```````````A("((`````````7 at B``!X````=3D`$!``P````,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``&DN]HCVUDAX?=3DKO1XD"3`+EM34:!Z?O&PTGQ].>5FVX
-MW,U.F@^`OZU9,B_6X`ZW(1!QOC5H:_`?Q$!\+-^NW6\67E\^6Q&H84?^+%R5
-MJ^F'W%KI/@Z_'N2)N,RCQF#*&XHE`QYI at U9U0<CL,&[^MSH`I\N#I>C*>R8?
-MSW)1_]17*0``)`J8O?I%O[B?E-`"<8!Z=3D>P0[G0D,G6(PWD)@RQCPJ2L*0``
-M'```0`1UPG#=3D`[]=3D)"VWBGR5),RO*_6J\P```!P``$`%Y>`\M*=3D)=3D;31H2GY
-MT5,U"<RV!FXM$[=3D&[XX'`)@!``"8`0```@```$4``91O8@``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V7CCUU]-0)=3DP@``````````(2`B"`````````%X(@``>```
-M`'0!`0`,````#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``!I+O:(]M9(>'W:[T>)
-M`DP"Y;4U&@>G[QL-)\?3GE9MN-S-3IH/@+^M63(OUN`.MR$0<;XU:&OP'\1`
-M?"S?KMUO%EY?/EL1J&%'_BQ<E:OIA]Q:Z3X.OQ[DB;C,H\9 at RAN*)0,>:8-6
-M=3D4'([#!N_K<Z`*?+ at Z7HRGLF'\]R4?_45RD``"0*F+WZ1;^XGY30`G&`>G7L
-M$.YT)#)UB,-Y"8,L8\*DK"D``!P``$`$=3D<)PW0._720MMXI\E23,KROUJO,`
-M```<``!`!>7@/+2G276TT:$I^=3D%3-0G,M at 9N+A.W1FR:!0"8`0``F`$```(`
-M``!%``&4;VL``$`1``#`J`$!P*@!`@'T`?0!@`=3DE4UM^=3D966N1@`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`$```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``K8SP%\"2N2S5<`)A7L<UR.D.(I.KJ.TJ^P6.Y9O%IZBDCH)<2MS.
-MC4:Z!T-!U8>(-A![5_BN#1?AGN&6E66XH>/L'Y##/Q=3D_G<B+_F(*8O/2C].I
-MGTE38#OP_0.MWF at PSYIY-,[$)4+]E^<7IDD8+.;<+OOSOTIX46O<[X%$6^\I
-M```D8QUX^1MTNVY'F-S$4HDJ,#,ZFR\!JHD/%O7,''!%9^DI```<``!`!%J<
-M#D^0W=3D*ARJ+0QO)4M^AQK`@*````'```0`7Z4H/`!A+CQ^'KQ/@[$7XGH>G8
-M?"X3MT9?QP@`F`$``)@!```"````10`!E&]L``!`$0``P*@!`<"H`0(!]`'T
-M`8`'95-;?G65EKD8```````````A("((`````````7 at B``!X````=3D`$!``P!
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``*V,\!?`DKDLU7`"85['-<CI#B*3
-MJZCM*OL%CN6;Q:>HI(Z"7$K<SHU&N@=3D#0=3D6'B#80>U?XK at T7X9[AEI5EN*'C
-M[!^0PS\7?YW(B_YB"F+STH_3J9])4V`[\/T#K=3DYH,,^:>33.Q"5"_9?G%Z9)
-M&"SFW"[[\[]*>%%KW.^!1%OO*0``)&,=3D>/D;=3D+MN1YC<Q%*)*C`S.ILO`:J)
-M#Q;US!QP16?I*0``'```0`1:G`Y/D-W2H<JBT,;R5+?H<:P("@```!P``$`%
-M^E*#P`82X\?AZ\3X.Q%^)Z'IV'PN$[=3D&T`@/`)@!``"8`0```@```$4``91O
-M;0``0!$``,"H`0'`J`$"`?0!]`&`!V536WYUE9:Y&```````````(2`B"```
-M``````%X(@``>````'0!`0`,`0``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"M
-MC/`7P)*Y+-5P`F%>QS7(Z0XBDZNH[2K[!8[EF\6GJ*2. at EQ*W,Z-1KH'0T'5
-MAX at V$'M7^*X-%^&>X9:59;BAX^P?D,,_%W^=3DR(O^8 at IB\]*/TZF?25- at ._#]
-M`ZW>:##/FGDTSL0E0OV7YQ>F21 at LYMPN^_._2GA1:]SO at 41;[RD``"1C'7CY
-M&W2[;D>8W,12B2HP,SJ;+P&JB0\6]<P<<$5GZ2D``!P``$`$6IP.3Y#=3DTJ'*
-MHM#&\E2WZ'&L"`H````<``!`!?I2@\`&$N/'X>O$^#L1?B>AZ=3DA\+Q.W1B(1
-M#0"8`0``F`$```(```!%``&4;VX``$`1``#`J`$!P*@!`@'T`?0!@`=3DEH[;8
-MDK)JX^D``````````"$@(@@````````!>"(``'@```!T`0$`#`(```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``._[#\QG?O8Z7$U]9']<0!C+643GF!JJ\]2O1
-M>'"-'8[W:?2XF95/C/MO%?N60,^]WA3%>QS8QY%-SO;7:Z.E!*1+=3D;6\(ONR
-M*LA`A%7^`;!5[D:<`&;N#@"TV`"%>%&FNESF)585>#!0%*C)^R&13>)<ADHS
-M'HOLCO)HS`OY$DHI```D4TG56ZCN!;>;MRZ.K6?HA[.:T*,&+V$+\ZD+0-RM
-MF)8I```<``!`!*'F(0#6*-^&2,!>1",GZV!6C_YD````'```0`5O_PFM8D'Y
-MC'[^$#?,%\/?&A:<^3`3MT8I_P``F`$``)@!```"````10`!E&]O``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9:.VV)*R:N/I```````````A("((`````````7 at B
-M``!X````=3D`$!``P"```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``#O^P_,9W[V.
-MEQ-?61_7$`8RUE$YY@:JO/4KT7APC1V.]VGTN)F53XS[;Q7[ED#/O=3DX4Q7L<
-MV,>13<[VUVNCI02D2W6UO"+[LBK(0(15_@&P5>Y&G`!F[@X`M-@`A7A1IKI<
-MYB56%7 at P4!2HR?LAD4WB7(9*,QZ+[([R:,P+^1)**0``)%-)U5NH[@6WF[<N
-MCJUGZ(>SFM"C!B]A"_.I"T#<K9B6*0``'```0`2AYB$`UBC?ADC`7D0C)^M@
-M5H_^9````!P``$`%;_\)K6)!^8Q^_A`WS!?#WQH6G/DP$[=3D&F$`'`)@!``"8
-M`0```@```$4``91O<```0!$``,"H`0'`J`$"`?0!]`&`!V6CMMB2LFKCZ0``
-M````````(2`B"`````````%X(@``>````'0!`0`,`@``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"```[_L/S&=3D^]CI<37UD?UQ`&,M91.>8&JKSU*]%X<(T=3DCO=3DI
-M]+B9E4^,^V\5^Y9`S[W>%,5['-C'D4W.]M=3DKHZ4$I$MUM;PB^[(JR$"$5?X!
-ML%7N1IP`9NX.`+38`(5X4::Z7.8E5A5X,%`4J,G[(9%-XER&2C,>B^R.\FC,
-M"_D22BD``"132=3D5;J.X%MYNW+HZM9^B'LYK0HP8O80OSJ0M`W*V8EBD``!P`
-M`$`$H>8A`-8HWX9(P%Y$(R?K8%:/_F0````<``!`!6__":UB0?F,?OX0-\P7
-MP]\:%ISY,1.W1CI-!0"8`0``F`$```(```!%``&4;W(``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEK560S/8G_WH``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`0```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``43$P5?7B at GL(VNMZ`*7Q
-MAT;RL&&;HO(\K_JV<6Y;6U[781S'&]_Y<[::^DY-J0[Q_3,B4DMS.O8B/1<#
-M2UE3+-G?BFQ0FV*-A-RAL-N<;63;$?T at HXO_!;L1X<;A+0XYEKJ&K_?+9*(!
-MQ+'U2O;%F,'HFUR/??#H1US88-9"DZTI```DFC[D2AX2$@)VU;KX5(4*!3F0
-MI76`FLBBJ.Q=3D,R_.,L at I```<``!`!%'4RVZ!A#\A/.%QZ2WQP9U,_XM&````
-M'```0`4JIY+R3 at AR43%<:`O&\(2$`CUS_#$3MT8N>0@`F`$``)@!```"````
-M10`!E&]S``!`$0``P*@!`<"H`0(!]`'T`8`'9:U5D,SV)_]Z```````````A
-M("((`````````7 at B``!X````=3D`$!``P$```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``%$Q,%7UXH)["-KK>@"E\8=3D&\K!AFZ+R/*_ZMG%N6UM>UV$<QQO?^7.V
-MFOI.3:D.\?TS(E)+<SKV(CT7`TM94RS9WXIL4)MBC83<H;#;G&UDVQ'](*.+
-M_P6[$>'&X2T..9:ZAJ_WRV2B`<2Q]4KVQ9C!Z)M<CWWPZ$=3D<V&#60I.M*0``
-M))H^Y$H>$A("=3DM6Z^%2%"@4YD*5U@)K(HJCL73,OSC+(*0``'```0`11U,MN
-M at 80_(3SA<>DM\<&=3D3/^+1@```!P``$`%*J>2\DX(<E$Q7&@+QO"$A`(]<_PQ
-M$[=3D&PKH.`)@!``"8`0```@```$4``91O>```0!$``,"H`0'`J`$"`?0!]`&`
-M!V6M59#,]B?_>@``````````(2`B"`````````%X(@``>````'0!`0`,!```
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``!1,3!5]>*">PC:ZWH`I?&'1O*P89NB
-M\CRO^K9Q;EM;7M=3DA',<;W_ESMIKZ3DVI#O'],R)22W,Z]B(]%P-+65,LV=3D^*
-M;%";8HV$W*&PVYQM9-L1_2"CB_\%NQ'AQN$M#CF6NH:O]\MDH@'$L?5*]L68
-MP>B;7(]]\.A'7-A at UD*3K2D``"2:/N1*'A(2`G;5NOA4A0H%.9"E=3D8":R**H
-M[%TS+\XRR"D``!P``$`$4=3D3+;H&$/R$\X7'I+?'!G4S_BT8````<``!`!2JG
-MDO)."')1,5QH"\;PA(0"/7/\,A.W1N/$#`"8`0``F`$```(```!%``&4;X,`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DE?Q3. at T=3DML3(``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`0```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``_VZ2
-M&LDZ#>4#(A&QC'Q_X2H)`0&4QCP"&"[B5"!;JR"O_XE;%EBS;U$%^#F83V,*
-M7U4A;80<6*&)^)5AB%&T3!7]"<'DBZK_1B[8SEN'5'_*]X/U".F/+)5MO^%U
-MRR7L4-X&$, at KL3T-F43GQR+HC/IG-6SBG/`+'*RAG1://8`I```DM=3D`O(_<Z
-M`8>5[CH"P.4J_I&D:0SN2^CC7DB",&C:C`(I```<``!`!'9!!>7-0\:R[Z["
-M?C&P"PB_FJR#````'```0`5>>7<YCRX1Y!%;RZ9TVN0+$A\K/3,3MT;_L```
-MF`$``)@!```"````10`!E&^(``!`$0``P*@!`<"H`0(!]`'T`8`'97\4SH-'
-M;;$R```````````A("((`````````7 at B``!X````=3D`$!``P$```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``/]NDAK). at WE`R(1L8Q\?^$J"0$!E,8\`A at NXE0@
-M6ZL at K_^)6Q98LV]1!?@YF$]C"E]5(6V$'%BAB?B588A1M$P5_0G!Y(NJ_T8N
-MV,Y;AU1_RO>#]0CICRR5;;_A=3D<LE[%#>!A#(*[$]#9E$Y\<BZ(SZ9S5LXISP
-M"QRLH9T6CSV`*0``)+70+R/W.@&'E>XZ`L#E*OZ1I&D,[DOHXUY(@C!HVHP"
-M*0``'```0`1V007ES4/&LN^NPGXQL`L(OYJL at P```!P``$`%7GEW.8\N$>01
-M6\NF=3D-KD"Q(?*STS$[=3D&FO(&`)@!``"8`0```@```$4``91OC@``0!$``,"H
-M`0'`J`$"`?0!]`&`!V5_%,Z#1VVQ,@``````````(2`B"`````````%X(@``
-M>````'0!`0`,!```#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``#_;I(:R3H-Y0,B
-M$;&,?'_A*@D!`93&/`(8+N)4(%NK(*__B5L66+-O407X.9A/8PI?52%MA!Q8
-MH8GXE6&(4;1,%?T)P>2+JO]&+MC.6X=3D4?\KW at _4(Z8\LE6V_X77+)>Q0W at 80
-MR"NQ/0V91.?'(NB,^F<U;.*<\`L<K*&=3D%H\]@"D``"2UT"\C]SH!AY7N. at +`
-MY2K^D:1I#.Y+Z.->2((P:-J,`BD``!P``$`$=3DD$%Y<U#QK+OKL)^,;`+"+^:
-MK(,````<``!`!5YY=3DSF/+A'D$5O+IG3:Y`L2'RL]-!.W1B/_!`"8`0``F`$`
-M``(```!%``&4;YP``$`1``#`J`$!P*@!`@'T`?0!@`=3DE at R</*E'3A0P`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`<```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``-$Z_)=3D\!`9V;MJ,>M081L,QO&IH>_U+/GP)R%^MD at B"\-KJX
-MODK?8]D^9=3DH9&B;1P>;L7+FL:U15J%^#LD*CU/R09!<RSGY^U7OJS.';JZE-
-M&MHBR/)>/B4H=3DI_+_<EROHT'.R[?E]ODE>]:MR.)&$3+:M!N'053IDY!QM'[
-M"PPI```DF4>.=3D$FM+Y^64]2Z83(I**`,;5]3XN651X"\7P^=3DAY`I```<``!`
-M!'RB58:R!8UI>8F4_LCR*$SV,WLS````'```0`4R/`*<0NM#A_#.YW>$[!,8
-MPH>>]C03MT85*P@`F`$``)@!```"````10`!E&^=3D``!`$0``P*@!`<"H`0(!
-M]`'T`8`'98,G#RI1TX4,```````````A("((`````````7 at B``!X````=3D`$!
-M``P'```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``#1.OR7?`0&=3DF[:C'K4&$;#,
-M;QJ:'O]2SY\"<A?K9((@O#:ZN+Y*WV/9/F7:&1HFT<'F[%RYK&M45:A?@[)"
-MH]3\D&07,LY^?M5[ZLSAVZNI31K:(LCR7CXE*':?R_W)<KZ-!SLNWY?;Y)7O
-M6K<CB1A$RVK0;AT%4Z9.0<;1^PL,*0``))E'CG1)K2^?EE/4NF$R*2B@#&U?
-M4^+EE4>`O%\/G8>0*0``'```0`1\HE6&L at 6-:7F)E/[(\BA,]C-[,P```!P`
-M`$`%,CP"G$+K0X?PSN=3DWA.P3&,*'GO8T$[=3D&;6P.`)@!``"8`0```@```$4`
-M`91OH0``0!$``,"H`0'`J`$"`?0!]`&`!V6#)P\J4=3D.%#```````````(2`B
-M"`````````%X(@``>````'0!`0`,!P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M```T3K\EWP$!G9NVHQZU!A&PS&\:FA[_4L^?`G(7ZV2"(+PVNKB^2M]CV3YE
-MVAD:)M'!YNQ<N:QK5%6H7X.R0J/4_)!D%S+.?G[5>^K,X=3DNKJ4T:VB+(\EX^
-M)2AVG\O]R7*^C0<[+M^7V^25[UJW(XD81,MJT&X=3D!5.F3D'&T?L+#"D``"29
-M1XYT2:TOGY93U+IA,BDHH`QM7U/BY95'@+Q?#YV'D"D``!P``$`$?*)5AK(%
-MC6EYB93^R/(H3/8S>S,````<``!`!3(\`IQ"ZT.'\,[G=3DX3L$QC"AY[V-1.W
-M1DEZ#`"8`0``F`$```(```!%``&4;ZH``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MB1 at RG%1ZW=3D\``````````"$@(@@````````!>"(``'@```!T`0$`#`@```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``YEUPCYD'IGT&(L6?+%QI/#2$`&(>:7"5
-MXE at EY.AC7P>8F4?V#QW\\!KUL=3D!.=3D;BT2[P<?\YJ3#(PF07P:3'%.F;=3DN=3D^&
-M_5E"$8?%^,07/W^<5#R[:1*JEPRWZBT&#DH22JPTK<V^CFJY]RX_YG1AEN&Q
-M/*.^!$G5ZU94]7PVV]XI```D>G7:YVF+;41\J\SX'?N7NL8%&'M8:UI/[L1G
-MJ-859=3D0I```<``!`!%V$5Y?VRHS2"6UR9O;.>,XIVPQU````'```0`4S_(_-
-M_DE$L?8EET*H at WCO=3DTMC.C83MT;`8@``F`$``)@!```"````10`!E&^M``!`
-M$0``P*@!`<"H`0(!]`'T`8`'98D8,IQ4>MW?```````````A("((````````
-M`7 at B``!X````=3D`$!``P(```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``.9=3D<(^9
-M!Z9]!B+%GRQ<:3PTA`!B'FEPE>)8)>3H8U\'F)E']@\=3D_/`:];'03G6XM$N\
-M''_.:DPR,)D%\&DQQ3IFW;G?AOU90A&'Q?C$%S]_G%0\NVD2JI<,M^HM!@Y*
-M$DJL-*W-OHYJN?<N/^9T89;AL3RCO at 1)U>M65/5\-MO>*0``)'IUVN=3DIBVU$
-M?*O,^!W[E[K&!1A[6&M:3^[$9ZC6%674*0``'```0`1=3DA%>7]LJ,T at EM<F;V
-MSGC.*=3DL,=3D0```!P``$`%,_R/S?Y)1+'V)9=3D"J(-X[W=3D+8SHV$[=3D&2*0&`)@!
-M``"8`0```@```$4``91OM```0!$``,"H`0'`J`$"`?0!]`&`!V6)&#*<5'K=3D
-MWP``````````(2`B"`````````%X(@``>````'0!`0`,"```#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``#F77"/F0>F?08BQ9\L7&D\-(0`8AYI<)7B6"7DZ&-?
-M!YB91_8/'?SP&O6QT$YUN+1+O!Q_SFI,,C"9!?!I,<4Z9MVYWX;]64(1A\7X
-MQ!<_?YQ4/+MI$JJ7#+?J+08.2A)*K#2MS;Z.:KGW+C_F=3D&&6X;$\H[X$2=3D7K
-M5E3U?#;;WBD``"1Z=3D=3DKG:8MM1'RKS/@=3D^Y>ZQ at 48>UAK6D_NQ&>HUA5EU"D`
-M`!P``$`$7817E_;*C-();7)F]LYXSBG;#'4````<``!`!3/\C\W^242Q]B67
-M0JB#>.]W2V,Z-Q.W1B&Q!`"8`0``F`$```(```!%``&4;[@``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE\+,U=3DK=3D'8&\``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`D```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``#O+Y[YA8&Q2)`&8=3D
-METE&:N=3D=3D46#6I<.]')"G5#[PY7(=3D_(%B,L>Z]G._U8OJDBY<RWF3YSTG-JR!
-MY$LX$/;3:V^</5)+HMZ+M_55&_-[/6,9Y><H]5<7`C2=3D?_%XYX,7AH@??$?8
-M[(Q=3D9VB"MFK`+SH9V!J.LCAHW5P?J?CWA_<I```D.:Q8TG9O4[A.C%7S7 at MF
-M^4#O0(7CEA^\*T)TGMZ9G6PI```<``!`!$C:72X*#[@[%+OQI?!IQL0;-8F(
-M````'```0`4Q%(O2:89KWE=3DR,]X]G8>.$2)/13<3MT:9W`<`F`$``)@!```"
-M````10`!E&^Y``!`$0``P*@!`<"H`0(!]`'T`8`'9?"S-7:W1V!O````````
-M```A("((`````````7 at B``!X````=3D`$!``P)```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(```[R^>^86!L4B0!F'9=3D)1FKG75%@UJ7#O1R0IU0^\.5R'?R!8C+'
-MNO9SO]6+ZI(N7,MYD^<])S:L@>1+.!#VTVMOG#U22Z+>B[?U51OS>SUC&>7G
-M*/57%P(TG7_Q>.>#%X:('WQ'V.R,76=3DH at K9JP"\Z&=3D@:CK(X:-U<'ZGX]X?W
-M*0``)#FL6-)V;U.X3HQ5\UX+9OE`[T"%XY8?O"M"=3D)[>F9UL*0``'```0`1(
-MVETN"@^X.Q2[\:7P:<;$&S6)B````!P``$`%,12+TFF&:]Y7<C/>/9V'CA$B
-M3T4W$[=3D&0!X.`)@!``"8`0```@```$4``91ON@``0!$``,"H`0'`J`$"`?0!
-M]`&`!V7PLS5VMT=3D@;P``````````(2`B"`````````%X(@``>````'0!`0`,
-M"0``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"```.\OGOF%@;%(D`9AV7249JYUU1
-M8-:EP[T<D*=3D4/O#E<AW\@6(RQ[KV<[_5B^J2+ES+>9/G/2<VK('D2S at 0]M-K
-M;YP]4DNBWHNW]54;\WL]8QGEYRCU5Q<"-)U_\7CG at Q>&B!]\1]CLC%UG:(*V
-M:L`O.AG8&HZR.&C=3D7!^I^/>']RD``"0YK%C2=3DF]3N$Z,5?->"V;Y0.]`A>.6
-M'[PK0G2>WIF=3D;"D``!P``$`$2-I=3D+ at H/N#L4N_&E\&G&Q!LUB8@````<``!`
-M!3$4B])IAFO>5W(SWCV=3DAXX1(D]%.!.W1K`J#`"8`0``F`$```(```!%``&4
-M;[\``$`1``#`J`$!P*@!`@'T`?0!@`=3DEEORT.M:R#C8``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#/H```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MGY72G!J5(3G(PUK<),T]\DYP2:=3DO-#`6&#OO"YQ=3DE]&OW$!!T1V?/^P<."[I
-M!YFL0RS3NA$"E(VL+86M$8^Y?2$QB*,XC[X<>K[Z*Y/:X)K+R\JSH"S4>T^R
-MIU#6^Y]'ULSD'J(]EW[)\!'J6\-`=3DS at NH.:.KB5"F2-#!0(HNB`I```D-(RS
-M+:)M"(_/Q>2E%I58PEG9X)S`EZW*2VKJ.KX6J7,I```<``!`!'$+&ZT9C4/^
-MCCI)G'0J7^0TPEM*````'```0`5'##K'A$]`+I9?943;@W9K/P2/C#D3MT9I
-M%```F`$``)@!```"````10`!E&_!``!`$0``P*@!`<"H`0(!]`'T`8`'99;\
-MM#K6L at XV```````````A("((`````````7 at B``!X````=3D`$!``SZ```,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``)^5TIP:E2$YR,-:W"3-/?).<$FG;S0P%A@[
-M[PN<79?1K]Q`0=3D$=3DGS_L'#@NZ0>9K$,LT[H1`I2-K"V%K1&/N7TA,8BC.(^^
-M''J^^BN3VN":R\O*LZ`LU'M/LJ=3D0UON?1];,Y!ZB/9=3D^R?`1ZEO#0'<X+J#F
-MCJXE0IDC0P4"*+H@*0``)#2,LRVB;0B/S\7DI1:56,)9V>"<P)>MRDMJZCJ^
-M%JES*0``'```0`1Q"QNM&8U#_HXZ29QT*E_D-,);2@```!P``$`%1PPZQX1/
-M0"Z67V5$VX-V:S\$CXPY$[=3D&'58&`)@!``"8`0```@```$4``91OQP``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V66_+0ZUK(.-@``````````(2`B"`````````%X
-M(@``>````'0!`0`,^@``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``"?E=3D*<&I4A
-M.<C#6MPDS3WR3G!)IV\T,!88.^\+G%V7T:_<0$'1'9\_[!PX+ND'F:Q#+-.Z
-M$0*4C:PMA:T1C[E](3&(HSB/OAQZOOHKD]K at FLO+RK.@+-1[3[*G4-;[GT?6
-MS.0>HCV7?LGP$>I;PT!W."Z at YHZN)4*9(T,%`BBZ("D``"0TC+,MHFT(C\_%
-MY*46E5C"6=3DG at G,"7K<I+:NHZOA:I<RD``!P``$`$<0L;K1F-0_Z..DF<=3D"I?
-MY#3"6TH````<``!`!4<,.L>$3T`NEE]E1-N#=3DFL_!(^,.A.W1B5B!`"8`0``
-MF`$```(```!%``&4;](``$`1``#`J`$!P*@!`@'T`?0!@`=3DEZ8T%SM[T*_,`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#/L```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``W)#P-3C5!MG&X]@M'-<EDRN(O$.X#VDY1I!GH;&ZN\=3DE
-M;C:SUH5$7BN-=3D<9,^:_;(/AGNHEW,_4HF>Q5R4HE)DT>8^?"Q/ZE)XB.'$:<
-MHHGJ=3D][\W7#*C3$,\>911U"Y7,SYS:4 at CW/$U5>_X+C%`[&8*#M^H)AQM!/!
-M_XX2N-8I```D>Y_;N&OWGT"ZK#"ZI!SUH2GB<"@DZ1>V5OZ`&,`>+NPI```<
-M``!`!"5OB\Q(6.8B>[/^W%AV%\[2-L(@````'```0`4B+R?W4#:P4`5W.)*(
-M%N544STXO3H3MT:?C@<`F`$``)@!```"````10`!E&_:``!`$0``P*@!`<"H
-M`0(!]`'T`8`'9>F-!<[>]"OS```````````A("((`````````7 at B``!X````
-M=3D`$!``S[```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``-R0\#4XU0;9QN/8+1S7
-M)9,KB+Q#N`]I.4:09Z&QNKO'96XVL]:%1%XKC77&3/FOVR#X9[J)=3DS/U*)GL
-M5<E*)29-'F/GPL3^I2>(CAQ&G**)ZG?>_-UPRHTQ#/'F44=3D0N5S,^<VE((]S
-MQ-57O^"XQ0.QF"@[?J"8<;03P?^.$KC6*0``)'N?V[AK]Y]`NJPPNJ0<]:$I
-MXG`H).D7ME;^@!C`'B[L*0``'```0`0E;XO,2%CF(GNS_MQ8=3DA?.TC;"(```
-M`!P``$`%(B\G]U`VL%`%=3DSB2B!;E5%,].+TZ$[=3D&#-`-`)@!``"8`0```@``
-M`$4``91OY0``0!$``,"H`0'`J`$"`?0!]`&`!V7IC07.WO0K\P``````````
-M(2`B"`````````%X(@``>````'0!`0`,^P``#`$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"``#<D/`U.-4&V<;CV"T<UR63*XB\0[@/:3E&D&>AL;J[QV5N-K/6A41>
-M*XUUQDSYK]L@^&>ZB7<S]2B9[%7)2B4F31YCY\+$_J4GB(X<1IRBB>IWWOS=3D
-M<,J-,0SQYE%'4+E<S/G-I2"/<\355[_ at N,4#L9 at H.WZ@F'&T$\'_CA*XUBD`
-M`"1[G]NX:_>?0+JL,+JD'/6A*>)P*"3I%[96_H`8P!XN["D``!P``$`$)6^+
-MS$A8YB)[L_[<6'87SM(VPB`````<``!`!2(O)_=3D0-K!0!7<XDH at 6Y513/3B]
-M.Q.W1L/<"P"8`0``F`$```(```!%``&4;^H``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE>NHC)G)?%)4``````````"$@(@@````````!>"(``'@```!T`0$`#/P`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``HESGO+?B_'.CZ%VMX([[WM,SL at +`
-MVSL1J&?Q7D at +>O;3K&T`8)AWQ]8N&D^:H],!DDR^5?X?7QW\.Y^X#1"VF_!&
-MNH26&2KU`O+`2&>U6VMM8/7)8LQE0F2$#EX7F^IQL:)#`P&@V>=3D2\?29'VE5
-M]L5G&>M*F?R)_>,XE+T=3D1-,I```DJ=3DT[1$YFCI*C/A5;O.)(%J*,, at J5[H#:
-M+L94JJD&W\LI```<``!`!%/H.(Z at 1*+K>^2]EQR`3<S_5V;C````'```0`4X
-MD[4F;SFC_,?<%D7!^Q#+(NTOVSL3MT9I"`\`F`$``)@!```"````10`!E&_K
-M``!`$0``P*@!`<"H`0(!]`'T`8`'97KJ(R9R7Q25```````````A("((````
-M`````7 at B``!X````=3D`$!``S\```,`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``*)<
-MY[RWXOQSH^A=3DK>".^][3,[("P-L[$:AG\5Y("WKVTZQM`&"8=3D\?6+AI/FJ/3
-M`9),OE7^'U\=3D_#N?N`T0MIOP1KJ$EADJ]0+RP$AGM5MK;6#UR6+,94)DA`Y>
-M%YOJ<;&B0P,!H-GG4O'TF1]I5?;%9QGK2IG\B?WC.)2]'433*0``)*G=3D.T1.
-M9HZ2HSX56[SB2!:BC#(*E>Z`VB[&5*JI!M_+*0``'```0`13Z#B.H$2BZWOD
-MO9<<@$W,_U=3DFXP```!P``$`%.).U)F\YH_S'W!9%P?L0RR+M+]L\$[=3D&U@<&
-M`)@!``"8`0```@```$4``91O[```0!$``,"H`0'`J`$"`?0!]`&`!V5ZZB,F
-M<E\4E0``````````(2`B"`````````%X(@``>````'0!`0`,_```#`$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"``"B7.>\M^+\<Z/H7:W at COO>TS.R`L#;.Q&H9_%>
-M2`MZ]M.L;0!@F'?'UBX:3YJCTP&23+Y5_A]?'?P[G[@-$+:;\$:ZA)89*O4"
-M\L!(9[5;:VU@]<EBS&5"9(0.7A>;ZG&QHD,#`:#9YU+Q])D?:57VQ6<9ZTJ9
-M_(G]XSB4O1U$TRD``"2IW3M$3F:.DJ,^%5N\XD at 6HHPR"I7N at -HNQE2JJ0;?
-MRRD``!P``$`$4^@XCJ!$HNM[Y+V7'(!-S/]79N,````<``!`!3B3M29O.:/\
-MQ]P61<'[$,LB[2_;/1.W1B80!`"8`0``F`$```(```!%``&4;^T``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DESA,W*QJ[0L,``````````"$@(@@````````!>"(`
-M`'@```!T`0$`#/\```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``A>)<$$IV,?>E
-M."'1A=3D7&]N at Q*B*V*7C__Q4'4=3D"VNYU\QB?R*J*5"EE][X;XX+_L>T8,JYP`
-M"0KP.A.5)+T,R4]6U at 8U>HS_]V-=3D^D%-+Q.E]!P!OJ)DER7X8&J&+9&H"\W[
-M<+[PUZOEG5E4^TH.J//7_""U\&U73(A1@<I,*;(I```D50--8C;!F\B:!"3G
-MQF"UK?[2Z%R`^)-5VQH%`8G,\]PI```<``!`!&^?V-V,B)&]N@>"CE9)\<^M
-M\[:[````'```0`5Y(;E;C*%*654I:=3D6KGRN$7A/\Z3T3MT9)0`<`F`$``)@!
-M```"````10`!E&_N``!`$0``P*@!`<"H`0(!]`'T`8`'9<X3-RL:NT+#````
-M```````A("((`````````7 at B``!X````=3D`$!``S_```,`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``(7B7!!*=3DC'WI3 at AT875QO;H,2HBMBEX__\5!U'0MKN=3D?,8G
-M\BJBE0I9?>^&^."_['M&#*N<``D*\#H3E22]#,E/5M8&-7J,__=3DC7?I!32\3
-MI?0<`;ZB9)<E^&!JABV1J`O-^W"^\->KY9U95/M*#JCSU_P at M?!M5TR(48'*
-M3"FR*0``)%4#36(VP9O(F at 0DY\9 at M:W^TNA<@/B35=3DL:!0&)S//<*0``'```
-M0`1OG]C=3DC(B1O;H'@HY62?'/K?.VNP```!P``$`%>2&Y6XRA2EE5*6G5JY\K
-MA%X3_.D]$[=3D&_8$-`)@!``"8`0```@```$4``91O]```0!$``,"H`0'`J`$"
-M`?0!]`&`!V7.$S<K&KM"PP``````````(2`B"`````````%X(@``>````'0!
-M`0`,_P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``"%XEP02G8Q]Z4X(=3D&%U<;V
-MZ#$J(K8I>/__%0=3D1T+:[G7S&)_(JHI4*67WOAOC at O^Q[1 at RKG``)"O`Z$Y4D
-MO0S)3U;6!C5ZC/_W8UWZ04TO$Z7T'`&^HF27)?A@:H8MD:@+S?MPOO#7J^6=3D
-M653[2 at ZH\]?\(+7P;5=3D,B%&!RDPILBD``"15`TUB-L&;R)H$).?&8+6M_M+H
-M7(#XDU7;&@4!B<SSW"D``!P``$`$;Y_8W8R(D;VZ!X*.5DGQSZWSMKL````<
-M``!`!7DAN5N,H4I952EIU:N?*X1>$_SI/A.W1H*6"P"8`0``F`$```(```!%
-M``&4;_\``$`1``#`J`$!P*@!`@'T`?0!@`=3DE47_$74;MIX<``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`````P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``]%?U?=3D&CHR[CIRRV!QGDFGJUDX3H9B1V-Y\8 at 8EL,%>TW*_^9.WQ4')%
-M*USVFBT7[5QS/4BI5)!EZ&X0V/J,/-U(QCBQ!&:+'#I^X_HU`.$E[335I5MB
-M8#Y(@$UD=3D,Z.>MB;5\P^M'!$$/PA-G8*#0"38Z74^&Y*LU`2*^QXQ2HI```D
-M9CHB`7#(:6)KMAS at 4R*ABE?_>U2BKDLLRM=3D)9>1__!PI```<``!`!"_T!5[I
-M\\680&O^IDD%8BDY=3D'+X````'```0`6Y'E at W^<1?%UKN)@K)=3DTK-EAZ6P3X3
-MMT9-N at X`F`$``)@!```"````10`!E'````!`$0``P*@!`<"H`0(!]`'T`8`'
-M95%_Q%U&[:>'```````````A("((`````````7 at B``!X````=3D`$!``P````,
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``/17]7W1HZ,NXZ<LM@<9Y)IZM9.$Z&8D
-M=3DC>?&(&);#!7M-RO_F3M\5!R12M<]IHM%^U<<SU(J5209>AN$-CZC#S=3D2,8X
-ML01FBQPZ?N/Z-0#A)>TTU:5;8F`^2(!-9'3.CGK8FU?,/K1P1!#\(39V"@T`
-MDV.EU/AN2K-0$BOL>,4J*0``)&8Z(@%PR&EB:[8<X%,BH8I7_WM4HJY++,K7
-M267D?_P<*0``'```0`0O]`5>Z?/%F$!K_J9)!6(I.71R^````!P``$`%N1Y8
-M-_G$7Q=3D:[B8*R7=3D*S98>EL$_$[=3D&K;D%`)@!``"8`0```@```$4``91P'P``
-M0!$``,"H`0'`J`$"`?0!]`&`!V51?\1=3D1NVGAP``````````(2`B"```````
-M``%X(@``>````'0!`0`,````#`$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#T5_5]
-MT:.C+N.G++8'&>2:>K63A.AF)'8WGQB!B6PP5[3<K_YD[?%0<D4K7/::+1?M
-M7',]2*E4D&7H;A#8^HP\W4C&.+$$9HL<.G[C^C4`X27M--6E6V)@/DB`361T
-MSHYZV)M7S#ZT<$00_"$V=3D at H-`)-CI=3D3X;DJS4!(K['C%*BD``"1F.B(!<,AI
-M8FNV'.!3(J&*5_][5**N2RS*UTEEY'_\'"D``!P``$`$+_0%7NGSQ9A`:_ZF
-M205B*3ET<O@````<``!`!;D>6#?YQ%\76NXF"LEW2LV6'I;!0!.W1OSM`P"8
-M`0``F`$```(```!%``&4<+X``$`1``#`J`$!P*@!`@'T`?0!@`=3DEHDV/[5Y<
-MX$H``````````"$@(@@````````!>"(``'@```!T`0$`#`$```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``:_NLW\CV:T682BR6`?S5KN%['7-<5)C/CQ1+'NI9
-MS,:<#W^;&)F//SE88XQ3!GNMI`HK[5(G<&5C_XW3N8%$#O<!HV.:HQ#)X(DX
-MJC6@$E$<#4L&7\5J!6_`OJ3O\VM7<'1FN)2$'R]5Y6Y+-.%^EH=3DSE^+%DX>\
-M,@/)GI4?N\XI```D'+UH!IK>V[[[D:R!B:_2Y)+#XR-W at 1OX7V)`DV6['(8I
-M```<``!`!,P$BG&K^P-O^4?'&`(CDT<.AR04````'```0`5I\F'I,VE3:0J?
-MLP2X/\<^4J#HOT`3MT8]&@<`F`$``)@!```"````10`!E'),``!`$0``P*@!
-M`<"H`0(!]`'T`8`'9:)-C^U>7.!*```````````A("((`````````7 at B``!X
-M````=3D`$!``P!```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``&O[K-_(]FM%F$HL
-ME@'\U:[A>QUS7%28SX\42Q[J6<S&G`]_FQB9CS\Y6&.,4P9[K:0**^U2)W!E
-M8_^-T[F!1`[W`:-CFJ,0R>").*HUH!)1'`U+!E_%:@5OP+ZD[_-K5W!T9KB4
-MA!\O5>5N2S3A?I:'<Y?BQ9.'O#(#R9Z5'[O.*0``)!R]:`::WMN^^Y&L at 8FO
-MTN22P^,C=3DX$;^%]B0)-ENQR&*0``'```0`3,!(IQJ_L#;_E'QQ@"(Y-'#H<D
-M%````!P``$`%:?)AZ3-I4VD*G[,$N#_'/E*@Z+]`$[=3D&#5L-`)@!``"8`0``
-M`@```$4``91S2@``0!$``,"H`0'`J`$"`?0!]`&`!V6B38_M7ES at 2@``````
-M````(2`B"`````````%X(@``>````'0!`0`,`0``#`$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!K^ZS?R/9K19A*+)8!_-6NX7L=3D<UQ4F,^/%$L>ZEG,QIP/?YL8
-MF8\_.5ACC%,&>ZVD"BOM4B=3DP96/_C=3D.Y at 40.]P&C8YJC$,G at B3BJ-:`241P-
-M2P9?Q6H%;\"^I._S:U=3DP=3D&:XE(0?+U7E;DLTX7Z6AW.7XL63A[PR`\F>E1^[
-MSBD``"0<O6@&FM[;OON1K(&)K]+DDL/C(W>!&_A?8D"39;L<ABD``!P``$`$
-MS`2*<:O[`V_Y1\<8`B.31PZ')!0````<``!`!6GR8>DS:5-I"I^S!+ at _QSY2
-MH.B_01.W1J*M"P"8`0``F`$```(```!%``&4=3D````$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DEB?#`//PC(>(``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`(```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``2%TZ3A_<Q"B#7L**92.&[9`Z
-MP^K?XIC0;K$F7JJQ#IMRH1+FK?M9A#V%YB'9/2T2T0DPK')?EY@%C_#J2B0D
-ML>!]<F:G8"GGX1*._&97Q<"J?S=3D95BHO^T9*]6+4;*85>1EU!'^21D3O*WW4
-MZ=3DCBSTR/#0%1PSUA?OC4!'=3DT80<I```DF80D at +*SL*>NRQ,>M\7XE5A[*LND
-M61NQ:\EC>8;6SH$I```<``!`!(QI,Z1P&>X.272:_//RKP<NXJV<````'```
-M0`4GS>R`7_!S";#FXDQQA?V>.TV%Y4$3MT9QX0X`F`$``)@!```"````10`!
-ME'11``!`$0``P*@!`<"H`0(!]`'T`8`'98GPP#S\(R'B```````````A("((
-M`````````7 at B``!X````=3D`$!``P"```,`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`$A=3D.DX?W,0H at U["BF4CANV0.L/JW^*8T&ZQ)EZJL0Z;<J$2YJW[680]A>8A
-MV3TM$M$),*QR7Y>8!8_PZDHD)+'@?7)FIV`IY^$2COQF5\7`JG\W658J+_M&
-M2O5BU&RF%7D9=3D01_DD9$[RM]U.G8XL],CPT!4<,]87[XU`1W=3D&$'*0``))F$
-M)("RL["GKLL3'K?%^)58>RK+I%D;L6O)8WF&ULZ!*0``'```0`2,:3.D<!GN
-M#DETFOSS\J\'+N*MG````!P``$`%)\WL@%_P<PFPYN),<87]GCM-A>5"$[=3D&
-MD^$%`)@!``"8`0```@```$4``91V0```0!$``,"H`0'`J`$"`?0!]`&`!V6)
-M\,`\_",AX@``````````(2`B"`````````%X(@``>````'0!`0`,`@``#`$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``!(73I.']S$*(->PHIE(X;MD#K#ZM_BF-!N
-ML29>JK$.FW*A$N:M^UF$/87F(=3DD]+1+1"3"L<E^7F`6/\.I*)"2QX'UR9J=3D@
-M*>?A$H[\9E?%P*I_-UE6*B_[1DKU8M1LIA5Y&74$?Y)&1.\K?=3D3IV.+/3(\-
-M`5'#/6%^^-0$=3DW1A!RD``"29A"2`LK.PIZ[+$QZWQ?B56'LJRZ19&[%KR6-Y
-MAM;. at 2D``!P``$`$C&DSI'`9[@Y)=3D)K\\_*O!R[BK9P````<``!`!2?-[(!?
-M\',)L.;B3'&%_9X[387E0Q.W1I7M`P"8`0``F`$```(```!%``&4=3DS,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE>JBJG&>TP2X``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`0```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``/--/$(*#
-M/TL3[%F".=3DTG[X`)<N)+<P#"+TRA^`/)^N0ISOV*5)I^[F43+P.YK46>?Z at L
-MFNJ\(]PWT,_H!+#J86'S$?[`MU@/LMN!'+JA52Y]ZAI,QE,F=3DQ2UDVW\(!,.
-M^E'X6"T#E,3144%4+LIUH4HV0J-;0=3D;/_,$'F)091RTI```D5B[#$P2=3D"X`7
-M4C,(,GJ0P?]-H7>2F2,FUC'Q]5BQ(.PI```<``!`!#G at EX/(CS+;6M)LYK\4
-M2(!JH1-S````'```0`6R;]KI.Q]D)FQR%":E2REZ\ACS/D,3MT9/&@<`F`$`
-M`)@!```"````10`!E'=3D```!`$0``P*@!`<"H`0(!]`'T`8`'97JHJIQGM,$N
-M```````````A("((`````````7 at B``!X````=3D`$!``P$```,`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``#S33Q""@S]+$^Q9 at CG=3D)^^`"7+B2W,`PB],H?@#R?KD
-M*<[]BE2:?NYE$R\#N:U%GG^H+)KJO"/<-]#/Z`2PZF%A\Q'^P+=3D8#[+;@1RZ
-MH54N?>H:3,93)G<4M9-M_"`3#OI1^%@M`Y3$T5%!5"[*=3D:%*-D*C6T'6S_S!
-M!YB4&4<M*0``)%8NPQ,$G0N`%U(S"#)ZD,'_3:%WDIDC)M8Q\?58L2#L*0``
-M'```0`0YX)>#R(\RVUK2;.:_%$B`:J$3<P```!P``$`%LF_:Z3L?9"9L<A0F
-MI4LI>O(8\SY#$[=3D&I5H-`)@!``"8`0```@```$4``91W3@``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V5ZJ*J<9[3!+@``````````(2`B"`````````%X(@``>```
-M`'0!`0`,!```#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"```\TT\0 at H,_2Q/L68(Y
-MW2?O@`ERXDMS`,(O3*'X`\GZY"G._8I4FG[N91,O`[FM19Y_J"R:ZKPCW#?0
-MS^@$L.IA8?,1_L"W6`^RVX$<NJ%5+GWJ&DS&4R9W%+63;?P@$P[Z4?A8+0.4
-MQ-%1050NRG6A2C9"HUM!UL_\P0>8E!E'+2D``"16+L,3!)T+@!=3D2,P at R>I#!
-M_TVA=3DY*9(R;6,?'U6+$@["D``!P``$`$.>"7@\B/,MM:TFSFOQ1(@&JA$W,`
-M```<``!`!;)OVND['V0F;'(4)J5+*7KR&/,^1!.W1L]L"P"8`0``F`$```(`
-M``!%``&4=3DUD``$`1``#`J`$!P*@!`@'T`?0!@`=3DE):DG8K.)Y7H`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`4```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``7ZZNE4?P71B]'W=3DSA2>BIZ_V(NOBG9PR+W#DR-!PIZV*?_N8=3D],Q
-MU,C99`"G=3DX)"?*E7;]C#_CL9/E+UE<7+P99X'>8&>(1)47,NSC;][/2-:G-8
-M3=3D7QR'.DZ`6G<-Z>, at YUH_1<HW&;3SKK_![[GJ.>8W<4)=3D/KG at _TM]1L32XI
-M```DU-!\W\[ZMDAOKG6MC&<`]8K<P4?+R6C$`WQ9B6FUM;`I```<``!`!`HJ
-MLZ/=3D9A@:H7X'?$[Z4HW"-'\:````'```0`6J0-9'<9$UAS)*0W_[QC/_ER?-
-M#D03MT8GDPX`F`$``)@!```"````10`!E'=3D=3D``!`$0``P*@!`<"H`0(!]`'T
-M`8`'926I)V*SB>5Z```````````A("((`````````7 at B``!X````=3D`$!``P%
-M```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``%^NKI5'\%T8O1]W<X4GHJ>O]B+K
-MXIV<,B]PY,C0<*>MBG_[F'?3,=3D3(V60`IW>"0GRI5V_8P_X[&3Y2]97%R\&6
-M>!WF!GB$25%S+LXV_>STC6IS6$W5\<ASI.@%IW#>GC(.=3D:/T7*-QFT\ZZ_P>
-M^YZCGF-W%"73ZYX/]+?4;$TN*0``)-30?-_.^K9(;ZYUK8QG`/6*W,%'R\EH
-MQ`-\68EIM;6P*0``'```0`0**K.CW688&J%^!WQ.^E*-PC1_&@```!P``$`%
-MJD#61W&1-8<R2D-_^\8S_Y<GS0Y%$[=3D&7)(%`)@!``"8`0```@```$4``91W
-M8P``0!$``,"H`0'`J`$"`?0!]`&`!V4EJ2=3DBLXGE>@``````````(2`B"```
-M``````%X(@``>````'0!`0`,!0``#`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!?
-MKJZ51_!=3D&+T?=3DW.%)Z*GK_8BZ^*=3DG#(O<.3(T'"GK8I_^YAWTS'4R-ED`*=3DW
-M at D)\J5=3DOV,/^.QD^4O65Q<O!EG@=3DY at 9XA$E1<R[.-OWL](UJ<UA-U?'(<Z3H
-M!:=3DPWIXR#G6C]%RC<9M/.NO\'ON>HYYC=3DQ0ET^N>#_2WU&Q-+BD``"34T'S?
-MSOJV2&^N=3D:V,9P#UBMS!1\O):,0#?%F):;6UL"D``!P``$`$"BJSH]UF&!JA
-M?@=3D\3OI2C<(T?QH````<``!`!:I`UD=3DQD36',DI#?_O&,_^7)\T.1A.W1CJ?
-M`P"8`0``F`$```(```!%``&4>&,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE4!%O
-M![K>D9(``````````"$@(@@````````!>"(``'@```!T`0$`#`8```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``;%B554[4S&#6FU<+.@(MA1Y9[<U!K.N'(E08
-M12P=3D^5\I?.A`%U7/@8(+-?NN#83+5'W5M/9TN4BS5\DVU4!D^T4J6">',%W>
-MW;,J@,#L,V[:-;*_>VI+HTS@]$$$H>&[Y=3D!JY6PL]#"A)3"CCHN>*(V"D[IY
-MA6GL62P%3#H-IG4I```D":J"ZA=3DF5;9L'>R4M34]N5+>[CY<EE^?AEFDE8`)
-MU8HI```<``!`!&#II%'.[[.^=3DO3#8"@%KU5J.#LU````'```0`6IRI;T'$BC
-M$>-H<(DG02=3D^9%1)PT83MT;LR at 8`F`$``)@!```"````10`!E'AH``!`$0``
-MP*@!`<"H`0(!]`'T`8`'95`1;P>ZWI&2```````````A("((`````````7 at B
-M``!X````=3D`$!``P&```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``&Q8E55.U,Q@
-MUIM7"SH"+84>6>W-0:SKAR)4&$4L'?E?*7SH0!=3D5SX&""S7[K at V$RU1]U;3V
-M=3D+E(LU?)-M5`9/M%*E at GAS!=3DWMVS*H#`[#-NVC6ROWMJ2Z-,X/1!!*'AN^70
-M:N5L+/0PH24PHXZ+GBB- at I.Z>85I[%DL!4PZ#:9U*0``)`FJ at NH79E6V;!WL
-ME+4U/;E2WNX^7)9?GX99I)6`"=3D6**0``'```0`1 at Z:11SN^SOG;TPV`H!:]5
-M:C@[-0```!P``$`%J<J6]!Q(HQ'C:'"))T$G?F142<-&$[=3D&9 at P-`)@!``"8
-M`0```@```$4``91X;0``0!$``,"H`0'`J`$"`?0!]`&`!V50$6\'NMZ1D@``
-M````````(2`B"`````````%X(@``>````'0!`0`,!@``#`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``!L6)553M3,8-:;5PLZ`BV%'EGMS4&LZX<B5!A%+!WY7RE\
-MZ$`75<^!@@LU^ZX-A,M4?=3D6T]G2Y2+-7R3;50&3[12I8)X<P7=3D[=3DLRJ`P.PS
-M;MHULK][:DNC3.#T002AX;OET&KE;"ST,*$E,*..BYXHC8*3NGF%:>Q9+`5,
-M. at VF=3D2D``"0)JH+J%V95MFP=3D[)2U-3VY4M[N/ER67Y^&6:25@`G5BBD``!P`
-M`$`$8.FD4<[OL[YV],-@*`6O56HX.S4````<``!`!:G*EO0<2*,1XVAPB2=3D!
-M)WYD5$G#1Q.W1H48"P"8`0``F`$```(```!%``&4>-P``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DEH?9U[BO1HH```````````"$@(@@````````!>"(``'@```!T
-M`0$`#`<```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``#03"`XNE/=3D'J;U#6&[-L
-M&,\IASOZLIF52^"YN0T,%V+(79QTY*IO".001'S;X'_M5%%]I>,=3D`L5J4S,A
-M1H_O>"-I]?`+ at 6CN+@"VLRQ?/FE@`QXXL'W?:[CX),:K=3DI+_PPPN);1E"+!>
-M8B5,[U7A(B**EAJHR_?:;<?K;U7SX-XI```D#"'I(=3DQYU=3D/&;>;<.)AQ/[@7
-MRV=3D8G72I(N=3DF-'R]IA<I```<``!`!&TX,,Z49]T:X3R/;I+%BS?$[L]/````
-M'```0`7ZB0$;5<LP_!\\[O29%K'$*Q at C<T<3MT;H1`X`F`$``)@!```"````
-M10`!E'CG``!`$0``P*@!`<"H`0(!]`'T`8`'9:'V=3D>XKT:*````````````A
-M("((`````````7 at B``!X````=3D`$!``P'```,`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(```T$P at .+I3W1ZF]0UANS;!C/*8<[^K*9E4O at N;D-#!=3DBR%V<=3D.2J;PCD
-M$$1\V^!_[511?:7C'0+%:E,S(4:/[W at C:?7P"X%H[BX`MK,L7SYI8`,>.+!]
-MWVNX^"3&JW:2_\,,+B6T90BP7F(E3.]5X2(BBI8:J,OWVFW'ZV]5\^#>*0``
-M)`PAZ2'<>=3D73QFWFW#B8<3^X%\MG6)UTJ2+G9C1\O:87*0``'```0`1M.##.
-ME&?=3D&N$\CVZ2Q8LWQ.[/3P```!P``$`%^HD!&U7+,/P?/.[TF1:QQ"L8(W-(
-M$[=3D&-T0%`)@!``"8`0```@```$4``91Y-@``0!$``,"H`0'`J`$"`?0!]`&`
-M!V6A]G7N*]&B@```````````(2`B"`````````%X(@``>````'0!`0`,!P``
-M#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"```-!,(#BZ4]T>IO4-8;LVP8SRF'._JR
-MF95+X+FY#0P78LA=3DG'3DJF\(Y!!$?-O@?^U447VEXQT"Q6I3,R%&C^]X(VGU
-M\`N!:.XN`+:S+%\^:6`#'CBP?=3D]KN/@DQJMVDO_##"XEM&4(L%YB)4SO5>$B
-M(HJ6&JC+]]IMQ^MO5?/@WBD``"0,(>DAW'G5T\9MYMPXF'$_N!?+9UB=3D=3D*DB
-MYV8T?+VF%RD``!P``$`$;3 at PSI1GW1KA/(]NDL6+-\3NST\````<``!`!?J)
-M`1M5RS#\'SSN])D6L<0K&"-S21.W1J51`P"8`0``F`$```(```!%``&4>4<`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DETT4OPV"8 at M$``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`H```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``&$&M
-M6#GCJM3BU.-HX3P7J8 at 8WP4W=3D7`%I=3D=3DOJEP at -M>D8+96YS(H+*2O9B&=3D\OQ0
-M:I$]8-AM60A5K27NW/K^E5*RI/<[PF.IT&03W/6&`$@-J/O<%N,.G5 at D1>IG
-MUKI'')6F.WHKY)_"'3UXX9>^(FF7@[`J[LP`:>YAU2`IZ#0I```DT(92!9`7
-M>E at +$H;ZE(SQ4VN'0RKM=3DB1))-VEV9H$JZ4I```<``!`!)Y5>*!8OF1=3DO9K(
-MO%X+KTN1`S(I````'```0`4$WL!1,MEV'LO]5?2B')`/0J&L>TD3MT:C?`8`
-MF`$``)@!```"````10`!E'E*``!`$0``P*@!`<"H`0(!]`'T`8`'9=3D-%+\-@
-MF(+1```````````A("((`````````7 at B``!X````=3D`$!``P*```,`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``!A!K5 at YXZK4XM3C:.$\%ZF(&-\%-W5P!:77;ZI<
-M(#;7I&"V5N<R*"RDKV8AG?+\4&J1/6#8;5D(5:TE[MSZ_I52LJ3W.\)CJ=3D!D
-M$]SUA@!(#:C[W!;C#IU8)$7J9]:Z1QR5ICMZ*^2?PAT]>.&7OB)IEX.P*N[,
-M`&GN8=3D4@*>@T*0``)-"&4 at 60%WI8"Q*&^I2,\5-KAT,J[78D223=3DI=3DF:!*NE
-M*0``'```0`2>57B at 6+YD7;V:R+Q>"Z]+D0,R*0```!P``$`%!-[`43+9=3DA[+
-M_57THAR0#T*AK'M)$[=3D&-;X,`)@!``"8`0```@```$4``91Y4P``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7312_#8)B"T0``````````(2`B"`````````%X(@``
-M>````'0!`0`,"@``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"```80:U8.>.JU.+4
-MXVCA/!>IB!C?!3=3DU<`6EUV^J7"`VUZ1 at ME;G,B at LI*]F(9WR_%!JD3U at V&U9
-M"%6M)>[<^OZ54K*D]SO"8ZG09!/<]88`2`VH^]P6XPZ=3D6"1%ZF?6ND<<E:8[
-M>BODG\(=3D/7CAE[XB:9>#L"KNS`!I[F'5("GH-"D``"30AE(%D!=3DZ6`L2AOJ4
-MC/%3:X=3D#*NUV)$DDW:79F at 2KI2D``!P``$`$GE5XH%B^9%V]FLB\7 at NO2Y$#
-M,BD````<``!`!03>P%$RV78>R_U5]*(<D`]"H:Q[2A.W1HC."@"8`0``F`$`
-M``(```!%``&4>5X``$`1``#`J`$!P*@!`@'T`?0!@`=3DE<AM<IW(PH;(`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`L```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``R2GYLT</E0S)C%1=3DO/KN[4]Q at M@.\;I^`\NB5J(I'4;LZ%#V
-M4_G+7,#G$8P<!/;M_(50C",-V4_&D91EL3.5C`_%2U(X.GU:L?Z(C_NK/5G$
-M,+>&K:CP]OF8Q7[ZZW#!1$=3D?CCUG#J"^1?M_K6N290=3D(2`^ZP]S'%'3^[@2(
-MN1\I```D/LB!$O#HCU+./,IJZF>/O0B#J-^1-EFVSWE75BIXSZ<I```<``!`
-M!!S[)*"[X@%=3DHR)N)G_)N(*$>?[!````'```0`5+7&:N#T)M%',&\`W9[)JL
-MH/]IM$H3MT:C]@T`F`$``)@!```"````10`!E'EA``!`$0``P*@!`<"H`0(!
-M]`'T`8`'97(;7*=3DR,*&R```````````A("((`````````7 at B``!X````=3D`$!
-M``P+```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``,DI^;-'#Y4,R8Q47;SZ[NU/
-M<8+8#O&Z?@/+HE:B*1U&[.A0]E/YRUS`YQ&,'`3V[?R%4(PC#=3DE/QI&49;$S
-ME8P/Q4M2.#I]6K'^B(_[JSU9Q#"WAJVH\/;YF,5^^NMPP41'7XX]9PZ at OD7[
-M?ZUKDF4'2$@/NL/<QQ1T_NX$B+D?*0``)#[(@1+PZ(]2SCS*:NIGC[T(@ZC?
-MD399ML]Y5U8J>,^G*0``'```0`0<^R2 at N^(!7:,B;B9_R;B"A'G^P0```!P`
-M`$`%2UQFK@]";11S!O`-V>R:K*#_:;1+$[=3D&^O4$`)@!``"8`0```@```$4`
-M`91Y:0``0!$``,"H`0'`J`$"`?0!]`&`!V5R&URG<C"AL@``````````(2`B
-M"`````````%X(@``>````'0!`0`,"P``#`$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#)*?FS1P^5#,F,5%V\^N[M3W&"V`[QNGX#RZ)6HBD=3D1NSH4/93^<M<P.<1
-MC!P$]NW\A5",(PW93\:1E&6Q,Y6,#\5+4C at Z?5JQ_HB/^ZL]6<0PMX:MJ/#V
-M^9C%?OKK<,%$1U^./6<.H+Y%^W^M:Y)E!TA(#[K#W,<4=3D/[N!(BY'RD``"0^
-MR($2\.B/4LX\RFKJ9X^]"(.HWY$V6;;/>5=3D6*GC/IRD``!P``$`$'/LDH+OB
-M`5VC(FXF?\FX at H1Y_L$````<``!`!4M<9JX/0FT4<P;P#=3DGLFJR at _VFT3!.W
-M1 at MM`P"8`0``F`$```(```!%``&4?'X``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M:@6?D@\"BDP``````````"$@(@@````````!>"(``'@```!T`0$`#`P```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``^W5;N`G^%`A;8X^DI+%')NTIB><>&-HE
-M at L@'9]`RU"PW^B)'P+T/ZFSUITK`G#5PP5C\3U$(WL9-NQO/8Q]&JQT0/9P5
-M[-ANXQL(S]W8=3D]I>#9X31MR$+DS$"6^[NONL`>VS=3D!OX)#$K%5MB1G5*:,X'
-M&&YHU<?,M6`'@J=3D/M`8I```DF#[=3D08C),_]BS5S#V6=3DWK1F64X"DVH?]/L,X
-MK&@K9)DI```<``!`!*U@$<C7>8(^08/@J*^NZ!U5CDW#````'```0`6`IDT'
-MSGJ):.8]!VQ_CXQ_O]2$H4P3MT:AHP8`F`$``)@!```"````10`!E'T3``!`
-M$0``P*@!`<"H`0(!]`'T`8`'96H%GY(/`HI,```````````A("((````````
-M`7 at B``!X````=3D`$!``P,```,`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``/MU6[@)
-M_A0(6V./I*2Q1R;M*8GG'AC:)8+(!V?0,M0L-_HB1\"]#^IL]:=3D*P)PU<,%8
-M_$]1"-[&3;L;SV,?1JL=3D$#V<%>S8;N,;",_=3DV'?:7 at V>$T;<A"Y,Q`EON[K[
-MK`'MLW0;^"0Q*Q5;8D9U2FC.!QAN:-7'S+5@!X*G3[0&*0``))@^W4&(R3/_
-M8LU<P]EG=3DZT9EE.`I-J'_3[#.*QH*V29*0``'```0`2M8!'(UWF"/D&#X*BO
-MKN@=3D58Y-PP```!P``$`%@*9-!\YZB6CF/0=3DL?X^,?[_4A*%,$[=3D&*^4,`)@!
-M``"8`0```@```$4``91]*P``0!$``,"H`0'`J`$"`?0!]`&`!V5J!9^2#P**
-M3```````````(2`B"`````````%X(@``>````'0!`0`,#```#`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"``#[=3D5NX"?X4"%MCCZ2DL4<F[2F)YQX8VB6"R`=3DGT#+4
-M+#?Z(D?`O0_J;/6G2L"<-7#!6/Q/40C>QDV[&\]C'T:K'1`]G!7LV&[C&PC/
-MW=3DAWVEX-GA-&W(0N3,0);[NZ^ZP![;-T&_ at D,2L56V)&=3D4IHS@<8;FC5Q\RU
-M8`>"IT^T!BD``"28/MU!B,DS_V+-7,/99W>M&993@*3:A_T^PSBL:"MDF2D`
-M`!P``$`$K6`1R-=3DY at CY!@^"HKZ[H'56.3<,````<``!`!8"F30?.>HEHYCT'
-M;'^/C'^_U(2A31.W1H+R"@"8`0``F`$```(```!%``&4?E(``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE`)GS&-6\9V<``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#/\```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``99MX@#N_^O[+]^.Q
-M%.2$C>/^[0V4;:LR$/>Y4D:__)>WI[HP=3D<4Y:?I\?W<TBK1I8]V5E"#8N%L"
-MDZ#;>H08B$A4D*22?5!6P-F"^\+Q3:. at M(`+]T[7U at X8;-BWYO5/D)/VFT1H
-M2_H\;M'&?@4=3DF_U*P1%<=3DX,I1+-/F at Z4#14I```D+9**L at B'+V]O$+FP at UM.
-M$DY<;HAB1_*MN>^MAH-UBVTI```<``!`!,DX9Z*SG>("U248U\/-HE%-\G.4
-M````'```0`5X.W8UF'BK24J^1SF;;$/L@,W:/4T3MT:)'0X`F`$``)@!```"
-M````10`!E'Y3``!`$0``P*@!`<"H`0(!]`'T`8`'90"9\QC5O&=3DG````````
-M```A("((`````````7 at B``!X````=3D`$!``S_```,`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``&6;>(`[O_K^R_?CL13DA(WC_NT-E&VK,A#WN5)&O_R7MZ>Z,'7%
-M.6GZ?']W-(JT:6/=3DE90 at V+A;`I. at VWJ$&(A(5)"DDGU05L#9 at OO"\4VCH+2`
-M"_=3D.U]8.&&S8M^;U3Y"3]IM$:$OZ/&[1QGX%'9O]2L$17'>#*42S3YH.E`T5
-M*0``)"V2BK((AR]O;Q"YL(-;3A).7&Z(8D?RK;GOK8:#=3D8MM*0``'```0`3)
-M.&>BLYWB`M4E&-?#S:)13?)SE````!P``$`%>#MV-9AXJTE*OD<YFVQ#[(#-
-MVCU.$[=3D&\AP%`)@!``"8`0```@```$4``91^5P``0!$``,"H`0'`J`$"`?0!
-M]`&`!V4`F?,8U;QG9P``````````(2`B"`````````%X(@``>````'0!`0`,
-M_P``#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``!EFWB`.[_Z_LOWX[$4Y(2-X_[M
-M#91MJS(0][E21K_\E[>GNC!UQ3EI^GQ_=3DS2*M&ECW964(-BX6P*3H-MZA!B(
-M2%20I))]4%;`V8+[PO%-HZ"T@`OW3M?6#AALV+?F]4^0D_:;1&A+^CQNT<9^
-M!1V;_4K!$5QW at RE$LT^:#I0-%2D``"0MDHJR"(<O;V\0N;"#6TX23EQNB&)'
-M\JVY[ZV&@W6+;2D``!P``$`$R3AGHK.=3DX at +5)1C7P\VB44WR<Y0````<``!`
-M!7@[=3DC68>*M)2KY'.9ML0^R`S=3DH]3Q.W1@@H`P"8`0``F`$```(```!%``&4
-M?J<``$`1``#`J`$!P*@!`@'T`?0!@`=3DE*B!>X3O at UUP``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#(````P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M at IZLP^&WHOKP*4.<7#)048_!N[[UR&05784SV8RHWA6-P9'4!`&2F2%Y679<
-MQA5#+T)EMBO;FVAE`I!;1Q4$0T.R:2']*L'2=3D2'XQ7 at S/K]4Q$0>S?NFB7WN
-MXHXJ1NII^7<#3<;:UBN4M>MO;%AE/RA%S\@GP-WU38TV^LI?=3DV$I```DKO;V
-M_WUU$V4G(1KF$-37[LY*#*@19GY.<-!`:!%3H04I```<``!`!)'P#T#R%_+Q
-M)POEL^OI*)H(U(4P````'```0`6$G=3D4C/4[)M>UNL0_6AV2\6JBOM4\3MT9C
-M508`F`$``)@!```"````10`!E'ZM``!`$0``P*@!`<"H`0(!]`'T`8`'92H@
-M7N$[X-=3D<```````````A("((`````````7 at B``!X````=3D`$!``R````,`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``(*>K,/AMZ+Z\"E#G%PR4%&/P;N^]<AD%5V%
-M,]F,J-X5C<&1U`0!DIDA>5EV7,850R]"9;8KVYMH90*06T<5!$-#LFDA_2K!
-MTG4A^,5X,SZ_5,1$'LW[IHE][N*.*D;J:?EW`TW&VM8KE+7K;VQ893\H1<_(
-M)\#=3D]4V--OK*7W=3DA*0``)*[V]O]]=3D1-E)R$:YA#4U^[.2 at RH$69^3G#00&@1
-M4Z$%*0``'```0`21\`]`\A?R\2<+Y;/KZ2B:"-2%,````!P``$`%A)W5(SU.
-MR;7M;K$/UH=3DDO%JHK[5/$[=3D&#Y<,`)@!``"8`0```@```$4``91^M0``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V4J(%[A.^#77```````````(2`B"`````````%X
-M(@``>````'0!`0`,@```#`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``""GJS#X;>B
-M^O`I0YQ<,E!1C\&[OO7(9!5=3DA3/9C*C>%8W!D=3D0$`9*9(7E9=3DES&%4,O0F6V
-M*]N;:&4"D%M'%01#0[)I(?TJP=3D)U(?C%>#,^OU3$1![-^Z:)?>[BCBI&ZFGY
-M=3DP--QMK6*Y2UZV]L6&4_*$7/R"?`W?5-C3;ZRE]W82D``"2N]O;_?74392<A
-M&N80U-?NSDH,J!%F?DYPT$!H$5.A!2D``!P``$`$D?`/0/(7\O$G"^6SZ^DH
-MF at C4A3`````<``!`!82=3DU2,]3LFU[6ZQ#]:'9+Q:J*^U4!.W1F4I"P"8`0``
-MF`$```(```!%``&4 at 94``$`1``#`J`$!P*@!`@'T`?0!@`=3DE=3D8N0#WQB9/P`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,!``P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``PBPTK(W7 at X9+RS:0LN`/Q`#;T:)G:.P\IN6<FQWRK?5.
-M<V,M[';&RGH`P;.CSF[-OK#_6-UD-AMCF#67>R0%,_?KJ$?MB=3D]BN?*4X<L&
-M?2R!SS8 at C65L<84^=3D=3DQKXT6*<I\HKM>"VR7N@@_SG/[),XK@:$+ATJ7#N3B:
-M'*I9>(@I```D`-0?%\%CL"+E`A<XV!\Q^J.3)A&FV"I)WV#@5W<+!3,I```<
-M``!`!-WBP]H4TU.E(:Q+N+G<'ST91L)9````'```0`7VSE_":P4EIEJ`;T^"
-M6R'M?<3P.%`3MT;C/PL`7````%P````"````10``6(&6``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*76+D`]\8F3\```````````I("(@`````````#P````@``!`
-M!@````G9]V,J9FVC8+`#>;2<\4E>;)DIAU`3MT;,6`L`N`$``+@!```"````
-M10`!M(&7``!`$0``P*@!`<"H`0(!]`'T`:`'A76+D`]\8F3\```````````I
-M("((`````````9 at A```@``!`!@````G9]V,J9FVC8+`#>;2<\4E>;)DIAR(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``PBPTK(W7 at X9+
-MRS:0LN`/Q`#;T:)G:.P\IN6<FQWRK?5.<V,M[';&RGH`P;.CSF[-OK#_6-UD
-M-AMCF#67>R0%,_?KJ$?MB=3D]BN?*4X<L&?2R!SS8 at C65L<84^=3D=3DQKXT6*<I\H
-MKM>"VR7N@@_SG/[),XK@:$+ATJ7#N3B:'*I9>(@I```D`-0?%\%CL"+E`A<X
-MV!\Q^J.3)A&FV"I)WV#@5W<+!3,I```<``!`!-WBP]H4TU.E(:Q+N+G<'ST9
-M1L)9````'```0`7VSE_":P4EIEJ`;T^"6R'M?<3P.%`3MT9>E0L`4`$``%`!
-M```"````10`!3(&>``!`$0``P*@!`<"H`0(!]`'T`3@''76+D`]\8F3\M>DU
-M++*1HP(A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(``'Z=3D5$+)RNG,Y_YK,"5+0^9\
-MAR>,"7#.:IFV. at 9JD_\H;90Q;_0Q.R$,F:00+_KZ&5^1WW%1<@P)%"KNX=3DD)
-MBFM`\8'BTQA19W30 at KE.R#,L%<\-Q$N!CWH_"@D,L]>>%9#5'E25UOTHV?"M
-M<?CZ&4!-!Q40&LFQ-/B89GQBZ`6F*0``)"H#-M%E5,PACN[/L!Z8\!N#\XV7
-M3%0"VQ_<CVR*`T7\*0``'```0`1\730V,0$X<B3@),\ZQ$<4W\LV1P```!P`
-M`$`%(+<1#JII463'CQ<X=3D.).\5*BQ-90$[=3D&`,\+``P!```,`0```@```$4`
-M`0B!H```0!$``,"H`0'`J`$"`?0!]`#T!]EUBY`/?&)D_+7I-2RRD:,"+B`C
-M"`````$```#L(P``T/ZL](]LB",Z*[6[;\B-</D[QG!8*2X-BG3EX+]EV*%?
-MX(OU6SOC`+=3D!2?U/X;Z2+TV%U_G>J at HRNL,\J-=3DC$@_3/0),WVY%.D!!,35&
-M_CEY7XEL*ZL?<6<SD2%-^L;/6CR*DB((6=3D"X0=3D8_2Q28E1GE+C/\`S2FQ;T"
-MSEN2)I5RN%A-!.3/=3DP5)C*/>=3DO12H3L:'Z*UE2A4(ELN&$^"1C7VGQVD!8<K
-M?$TO_U`U&#,7DS%)'[?(8XF.6!'B3O$KND:7QR.34H)F#AE(A%`3MT8T#PP`
-MO````+P````"````10``N(&D``!`$0``P*@!`<"H`0(!]`'T`*0&B76+D`]\
-M8F3\M>DU++*1HP(N(",@`````0```)PD``"`DZ",E>IA-Q$)4/^#*;$\4U7B
-M2=3D])\]Y5XA&OM5TA`S4/8#I5\J1---*!Q]2PT:D=3DTQ8#MKC8H*)@"]RWHC&:
-M>L[>:/E:_9>[?:6F632IM;K^98P0ZYP+JECV8$L+#D^O$!N[PA9XFD&P at 244
-MVF<T\2??%^0-]=3DX;J"K!-U`3MT87/@P`'`$``!P!```"````10`!&(&E``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z76+D`]\8F3\M>DU++*1HP(N("0(`````@``
-M`/PA``#@T5TF@;5?G at A<;84Q'Y_!N&X:7WI2K4*(BO^]5%=3DS#IK*MYU`Q]%F
-MUVP52_8O[9<:5<GV997 at WZ'\6)F6O1##6?,&;)#`+L.%PK=3D.=3DLX)&\5#?X*@
-MD]+[!N?<=3D\%584+1REJ$LMBUGRN\]#2_VVAH-#1B$(J1<?-0=3D$!DKD)@O1VN
-M-@:1\>JV;<)#>V-_S%.B3CR1`PC^HW#Y)9C>@1$;+L_^HY'X8-(GT.&M%D6T
-M-*F`O1D#ZOP,(4VSFX$"_$/^U=3DJ9+^3K'>_C,IIO85SR4.]$]5`AQKZ4R+U*
-M25`3MT;!1PP`_````/P````"````10``^(&F``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R76+D`]\8F3\M>DU++*1HP(N("0(`````P```-PA``#`HU%9>0DS&_KE
-M68'F(21-1Q]T0 at _)0J5VW&M&V]91RC9;1E8:]ZOE/MN>9LGI+4XG%H]*+5R/
-M at K+KM02,A0I3>PQF.NR6GSH^L>84;QO*/[:25I,%8=3DL12HTQQB-G`A%_2[7=3D
-M2C=3DOQ!38)Z`*]R@<K(<1IMYG(3OKI^))+5VT=3D,G"X^A8M#A=3D0-U63E%VK4`5
-M.UOWW[&M^]21XEC))9<S)V0Y$$@AW=3D#M-&!F<RW&Y$8DJKN0ALA.D^*BO9E0
-M$[=3D&QV(,`&P```!L`````@```$4``&B!J```0!$``,"H`0'`J`$"`?0!]`!4
-M!CEUBY`/?&)D_+7I-2RRD:,"+B`D(`````(```!,*0``,.MY95Z]\+FC[GF3
-MU#T'D"9]1-&^SMC;UD!%<,+:6/>*,UQJ-2"+GW.!DJ.Y4!.W1N:)#`!L````
-M;`````(```!%``!H@:H``$`1``#`J`$!P*@!`@'T`?0`5`8Y=3D8N0#WQB9/RU
-MZ34LLI&C`BX@)"`````#````3"D``#!-=3D:_NB:.TZ>I8?3WY;=3DD\TP at N5L5?
-MHP[.GN6NY2FGGFGK-:_;AX9'B at H25%`3MT8OMPP`/`$``#P!```"````10`!
-M.(&K``!`$0``P*@!`<"H`0(!]`'T`20'"76+D`]\8F3\M>DU++*1HP(N("0(
-M````!````1PA``$`CVV[9`FD1E3#'YJ5WO)IG9<$$1'!.-HNO0UAHPP;+FW'
-M2$@O3EZH#;84T,<2S7N<!`-52._':VO?9\<12[2B;*>Z^:3)^>LQX37]TS8&
-MTHXOFV[]\DR05 at JEROE7,4(&78RRJR3FV(CK:%Y)["("W;7./E[/U<@>.JU6
-MX'(_YI]=3DR]I0\-<UDY;F_F+3E&0(,E:;P\8[D(",:23N95W at FHF9F:'71,LA
-MTK:&!3&C(LZRE5)&<@.-*4/$C#OSQ:>_D\&;;-"6\I(G`BO(O7O!#/]3CW9E
-MM`.$!)PR-'.DZ at F0,Q"GSYPYM):5LP:G3RO=3D.9$X1,ZT1.!M.SL!4!.W1F[9
-M#`#L````[`````(```!%``#H@:X``$`1``#`J`$!P*@!`@'T`?0`U`:Y=3D8N0
-M#WQB9/RUZ34LLI&C`BX@)"`````$````S"$``+"0;1?/O:N?>9,RKB6-(SG-
-M`Q06)+YQ<-:^ZELNMMVIFMP(I+$A'+B1DJ&"_RR75XC(N4]46/!F=3D\`D^^;K
-M>:G,Q at KBIKA$Y&ND!0$JU8;8G7`1@:=3D`?JY2<=3D$SZ6NIG=3DW$$8_BU;__9\;/
-MJM%;1$9``L.Q@)C:108G26_#A!V-%1G%O6X\$,T at 1K?FX!J\8$7X5D.,6OW&
-MQ_7+W/ZU&X3E'U at G._J`*][:![M*4!.W1N3C#``<`0``'`$```(```!%``$8
-M@;```$`1``#`J`$!P*@!`@'T`?0!!`?I=3D8N0#WQB9/RUZ34LLI&C`BX@)`@`
-M```%````_"$``.!0^ZQS=3D35C;N0=3DH[^E5T;.FUVR,(,I:N"@#:5;'+7UR";,
-M_'V"$_^:6$&W,R31S5;_*._<OQ9[H\%VI at 6_>*,;+M:V?HM4,=3D9AL7\<5+W!
-M:O/4>?E,9Y3U?64%B&$2,4D54UINKK at 5O]Q!/UGSO&,J2;20DP$+J,S&4N+(
-MS,A7':!EM#T'V3?"4<`.(NLCJSAJD;'8?96^KCKVCA1`L0_US7[H7MT#D$7Z
-M)NX[IOA6\_AL;+8;J3T!Y/@JI/&J0'^<Z9+>+V:)-W8K2BM7V%EEALG#(G"S
-MBP>:HM5B4!.W1GL)#0#L````[`````(```!%``#H@;0``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y=3D8N0#WQB9/RUZ34LLI&C`BX@)"`````%````S"$``+!((Q:I
-M_B42`%O)=3D!#`OE<QC1J5C=3D1`;MR(1/UZ*`%X,`_MK/"+GG#<ISSQ\K)%=3DW!W
-M,'=3D+J"A9#NIX0$TMK0V7:G'>"+(YYK4\Q#O.J]D,D_,0NZ+B,Q<OQ-"V_!/P
-MH[`D2=3D,HJDCO<R!W;_)ZC\,#=3D=3D;@56%M%U9R;2P4?+C;MBS-.),.K1H\\E>8
-M-Z+I?N&E.%0+D\/?Q=3DE_E.T3]E;&68>">$$4?*N2^`C04!.W1L`V#0`\`0``
-M/`$```(```!%``$X@;4``$`1``#`J`$!P*@!`@'T`?0!)`<)=3D8N0#WQB9/RU
-MZ34LLI&C`BX@)`@````&```!'"$``0#'4SOCS:3.O[%F[F2\W>-RB5./F_I;
-M34W8:<8>@P)#,%*<L?0 at ZXY$!`XRB%8 at VUD1EOZ'7/:I2RT_XK"_5+$0"(QB
-M(^@.5A?M.3#/R?M('UAVVZ)HAPK;V9%:3I:?I4;PGET+-/$T/3+#Q^&MFEDM
-M<0F6ZMD)W114:X82TFP-$W77\15T27]7BUDS?;F?6,&IGG`[FVA-<V'@%U_I
-M3S1@*"_MRHS(/9`LE"`X.F"`O=3D[MC&DT3*BQLHW98?HKGBKZ/9=3D`58[AFTSL
-M+E`3_<M$OMO1'/8^6NZXS:H.JM%SW2<,EU5A&^KG-(6580@);'B]_5`N at UB_
-M$9B'M(=3D0$[=3D&QU at -`.P```#L`````@```$4``.B!M@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KEUBY`/?&)D_+7I-2RRD:,"+B`D(`````8```#,(0``L"\$3>6L
-M1II4T8!1205E?LA/]BHY6_CB^%.??@8M+!HXYNV%-%%J\#WA5U_/=3D5SZ,Z?*
-MKA4;SO5.^1QHPVO2IG./_-SHGP6HHH:S"2NZF+O<;WNGYE^8VFBG!IL8+@*<
-MX*'$04,6^W<3@*9<K&<EOPZZ)E4WITQO&PW"5UP;6XKK4DXE"X#2WC_UJ3T`
-M7`*(>%^AU`#T'7NW!%G-P/=3D9*/.M'&C([^6^M`C`J[U0$[=3D&'&4-`!P!```<
-M`0```@```$4``1B!O0``0!$``,"H`0'`J`$"`?0!]`$$!^EUBY`/?&)D_+7I
-M-2RRD:,"+B`D"`````<```#\(0``X+:\E_"&8)JTY<B$]VV8/C'?%A;!-4PR
-M6/:N<\'-#`&B]#O$Q[$(M*V/#Z^I`LU%.<L*3J=3DX`.Z$80G%_T\OT&\3J@;H
-MVN3?%];3^W]8899UG@;S>7A,MM9 at F3OU">%G%&.474`S0/(!A+ZE[%1FL./]
-MD$.][8"-\4QLT]UM):4(-L/8Q at UXX](B!86$BTVH&S,_OYEKC%.$40`7T09J
-MUU^\::EE3B+ at G#)9"W4#1UXD\*Z%'>U'5"*R&"'VL:UJ1M5!>0M')-,BD/^H
-MW=3DIO'IGSHP4QIEGK77R-F8Y0$[=3D&KH0-`.P```#L`````@```$4``.B!O@``
-M0!$``,"H`0'`J`$"`?0!]`#4!KEUBY`/?&)D_+7I-2RRD:,"+B`D(`````<`
-M``#,(0``L"F4,KR:B<`L24Y)@;AHB5"0&?3/=3DK1X<L\Q-#RTB[X-:U%_Y7J`
-M1^-O8OV$*(-QHAT(=3D)]J3AL:'FZ%[W#LN1`;/3--T,K7L:=3DBNKXVLY-?IKWM
-M6O>_Y!/'VT3SC^P><9#Q75XE2QR(CMMM&TS]GZ9QZF@\F4AA(TJCMT#09<A@
-M)G&)G(N*#+F>:&7<6DH9XZ;#*R!R9QS:GKZ=3DYC1.SD,*:(??;^H_1=3DT3#?Y0
-M$[=3D&U-<-`(P!``",`0```@```$4``8B!P@``0!$``,"H`0'`J`$"`?0!]`%T
-M!UEUBY`/?&)D_+7I-2RRD:,"+B`D"`````@```%L(0`!4`2&,%2K3"]3B>(0
-MJSE3UK`;`@FTQFA-1`U$?WGW!)<VEYLFXR3T)+5V#$@6U_*LD5'[O=3DW%!C'/
-M2O_H\3Q?MI>%^97[]5Q-B[>9W#!=3DRK:#)3BCY=3DW/2^TMZNS66&M0\P>'=3D9$E
-M$+L)TWUNB;6:!%MJ at _:,?5-I534 at A[)JC?9B7$DE+<)\H.(=3DTUH+QJ=3DYIE45
-MA)K*PLCY%;J3!TR<]%!ROMB&F50P1_"VR=3D0I0K,PBQ^KZ&"3SIB`I>RZ\+MM
-MUK=3DG3YRP>\#R*3#]+/\2L"%%&?WST0&WFBFM9>/^P\*Y4-5J;6`I at FS;1[_I
-M;\#D3I!]7BS3/VIB"##SQ/(I`['DQK=3D'V0)_UHZQIM+X?B;A&"U36X5-DX"U
-M:-\G)5H3B^5NQ_`O_]XY>64D85?DCV<]HF(9L'TSJ9SD`OT`C2IM#_DGA+HS
-MIG]W7+''4!.W1M0M#@!<`0``7`$```(```!%``%8@<8``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I=3D8N0#WQB9/RUZ34LLI&C`BX@)"`````(```!/"$``2"=3DSIWI
-MOW3)B>L>'XW%.6$<Z'7[/@D3,Z+_+10YO at 5IH*I])CFW\Q`9>FMQW1/5B+CK
-MC9_N1!CBKHJ%Q,<@O*$VT*)U*@G>,R`LLWWFG[EUA3]MR27;:&J">6BP6;?@
-M,\70C"L[^D%U\+8H5_>D)`%41$?*/5(0+IZ/!#U)<`W<9:KSL at K'FCK>?M+<
-MHETBPUT8)YA/?6'_)0=3D"'"\R#._X_(''SS\!^83.)=3D=3DK+N<_!(N%X8Q3RI.C
-M5 at RMAB?D//N>(S'AR'<Y-7,]EUW^,#AM.PF2#KBP=3D=3D\=3D>3P9HJ96C17<T6(]
-M'<?'DKJ(Q4CQ([.4M6JRD;#EOV"I&+?B52(EC1-J[`Q[B';3>.QT*^T/;V>?
-M>UK`D0^`9.R15U`3MT;@:PX`?````'P````"````10``>('-``!`$0``P*@!
-M`<"H`0(!]`'T`&0&262A\R+$4^'L`\7[7AG:+AXN("4(`````````%PJ``!`
-M0I%8T+0KR2><WX<>I!$[:VM-P\@9USZWV2LE"N'')RXR95R(_#TCVY7WF-`!
-MR_^9\)<`$'MU9\&%;8C14!.W1AI]#@!L````;`````(```!%``!H@<X``$`1
-M``#`J`$!P*@!`@'T`?0`5`8Y9*'S(L13X>P#Q?M>&=3DHN'BX@)2``````````
-M3````#!MTU('?C$3I6P0PPIZT?,A:%:%!UHC[5JG3CSWH#-(T^+3$G;E8TWQ
-MIL$*25`3MT9JE`X`;````&P````"````10``:('/``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.62A\R+$4^'L`\7[7AG:+AXN("4(`````0```$PJ```P@,X0"8PN
-MR&>C2*<YJ=3D06>!H$[9!2IH8:*N*OUA9;`LPB9$*'2)P[#XTO at YY0$[=3D&#:@.
-M`&P```!L`````@```$4``&B!T```0!$``,"H`0'`J`$"`?0!]`!4!CEDH?,B
-MQ%/A[`/%^UX9VBX>+B`E(`````$```!,````,)B\*\G%)0*_"!&/#ABGXB58
-M+F:4"?<0:U<S2,TLDJ\,Y^]=3D8PV<9LF\>_Q641.W1KSL``"8`0``F`$```(`
-M``!%``&4@>D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE(ZXD5#YLX,X`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,!``P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``-$CL'F;O.9[0RD'?%%OJ]FAA+JSI24PW at +T.Z*&M+3 at X&A[S)R`;
-M0X_>QQ[]TY><"">;LQI9B&D(2`.U?VB:7_?NA"O7Y:LW*'A4,WB#DG&Y4N(,
-MS0B0+O279*TCN at UA^;0*CF7R16((Z59THV&"8%0'F!97`$UAT!*]"F)>R(<I
-M```D#ES5G206 at 5RYY$;-.S>6W",CS;^BU-9$D4QH[QL%Q+TI```<``!`!(M"
-MW[>&ZDB-B.JO/EC"'P-US6*X````'```0`54HURB_7(UL%)1"L&XHQY`-H0R
-ME5$3MT;B!`$`7````%P````"````10``6('J``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*2.N)%0^;.#.```````````I("(@`````````#P````@``!`!@````EC
-MGR3=3D);`X-8^9"U[RQG at 0(X68!%$3MT:S(`$`N`$``+@!```"````10`!M('K
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A2.N)%0^;.#.```````````I("((````
-M`````9 at A```@``!`!@````ECGR3=3D);`X-8^9"U[RQG at 0(X68!"(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``-$CL'F;O.9[0RD'?%%OJ
-M]FAA+JSI24PW at +T.Z*&M+3 at X&A[S)R`;0X_>QQ[]TY><"">;LQI9B&D(2`.U
-M?VB:7_?NA"O7Y:LW*'A4,WB#DG&Y4N(,S0B0+O279*TCN at UA^;0*CF7R16((
-MZ59THV&"8%0'F!97`$UAT!*]"F)>R(<I```D#ES5G206 at 5RYY$;-.S>6W",C
-MS;^BU-9$D4QH[QL%Q+TI```<``!`!(M"W[>&ZDB-B.JO/EC"'P-US6*X````
-M'```0`54HURB_7(UL%)1"L&XHQY`-H0RE5$3MT;]:`$`4`$``%`!```"````
-M10`!3('R``!`$0``P*@!`<"H`0(!]`'T`3@''2.N)%0^;.#.NM"5'$;]Z+\A
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``"L7C--P+>:V/RZC0R]A@"_O]XS096D?
-M$X.>ITDJ&\QUP^:I!#B at HTTYQ#"14Z/D-^Y-_SW1$^A;D0UE5\0:D]R"V5;D
-M;-$61+^?SY!4#[@5@`>A5#F(>@5W!XRZJ at 0$%@91A4<!?\+U$-ZX#NK$:MQ=3D
-M=3DL\>"I5*^#;7LI at W*J?]*0``)!3_#M"P@=3D]6I#I(,55GSQE2/Y;PI]&Q.3>?
-MUKZ,VUZ>*0``'```0`2-0C%LH`Y$E*>(!YYU#0*J1CIF/P```!P``$`%<>%+
-MVUFECW4!.R6(^3+$T,&(E"U1$[=3D&,*D!``P!```,`0```@```$4``0B!\P``
-M0!$``,"H`0'`J`$"`?0!]`#T!]DCKB14/FS at SKK0E1Q&_>B_+B`C"`````$`
-M``#L(P``T-]R^'"(S/TST`8&G")U;S#Z6$_"9]Q'W%@,%QSZV;?,,LY5`?\^
-M/. at 1HX]A%\/62XJ%/XS->8^\_S^<^Q7$IB9[/JGU;3L'*3.Z2G!PP4/Q-"56
-M/X/[G69'(KC*"0U!7U:@*[%>@^\7XKJNDPTF`21 at -4AT2ELW-M2-&*W62:%=3D
-M\VG_\<`'TAP]?/9`U!"<\-.W%G8>@>D_5'8DVZ=3D[[;+;,<DE628,*"PMC/:`
-M!_K>2<O7@?K[:H'AG[>]\[E;3P0E($"(M/F[[%^HQ5$3MT8BW0$`O````+P`
-M```"````10``N('W``!`$0``P*@!`<"H`0(!]`'T`*0&B2.N)%0^;.#.NM"5
-M'$;]Z+\N(",@`````0```)PD``"`7T1J70?'&'FTR\6TLG4VH1B!\&@[O;A#
-M?DKJ&F0R]+P-H0FK'*TL_96KK8)BXI'H?/>-E.%4FJV0:W/4C-^:`02'CAE,
-M>STF+5;FE'8A(N(V*L,AT>4C.["(QP9VD=3D_<RUH6F981"86#=3D?`=3D@#S.0S-!
-MOI*HO5;2AH36E%$3MT:7&P(`'`$``!P!```"````10`!&('X``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z2.N)%0^;.#.NM"5'$;]Z+\N("0(`````@```/PA``#@
-M<KPJ")`%JP+N97*.O<GO`R])KVZC_X65>V>/J-?1 at WMJV.(JFNM6L#-H=3DEJ3
-M#4RL1#([G^U.LT/-]%Q_6NG0Y2=3D!?BZ;!>@KN$CO&3_NBU^7FM at O.JE_YS$*
-MS<Y0-9'C!(EXSN<SL^MY?B5&$H])6%?.'<1:]DYC*E>B(\P^@U!T/DQYJ>VR
-M21$N?EAQ,IM86<(B,;^7`?'F=3DN*P1T\/9E[2"3J%VX_+:-^$`QQE%??,3#U#
-M937"<_.]+-4L3V6F?,YT\IE#OH849L3<)>OC&RX5K.YTFUF*.>'+>5$3MT80
-M)P(`_````/P````"````10``^('Y``!`$0``P*@!`<"H`0(!]`'T`.0&R2.N
-M)%0^;.#.NM"5'$;]Z+\N("0(`````P```-PA``#`[#W^K[]MTRH]`372[>PP
-M9ES&<Y:9N at W_%3O9,S_HIMF*^.GK#0'H^VZCGS9I=3D7(_HH9Z<GNHBY!+EK5Q
-MH9FDB!&`OA'`>'+]MVYF;`*+(Y<1P+MS_*7\S'Z_WE4+2/0Z7)2^[C3JA65<
-M?:T%+7,;3Q]#>BDMUR4U0P/B_,?L"\EPG_LEQQ]^)Q2]#.<;+2KL]4X0SO$>
-M)$]*<`/#)8L$PFHJGTY*SV9$\WR^E2_#F6A-\GD_':MTUQ9V?'A1$[=3D&K#P"
-M`&P```!L`````@```$4``&B!^@``0!$``,"H`0'`J`$"`?0!]`!4!CDCKB14
-M/FS at SKK0E1Q&_>B_+B`D(`````(```!,*0``,`N/&D=3D at O4/P8B<1/>6))/N!
-M)GN6S0&!3`8A9&/T$YV,4A*Y_C.FS7XD%;>.41.W1BAA`@!L````;`````(`
-M``!%``!H@?X``$`1``#`J`$!P*@!`@'T`?0`5`8Y(ZXD5#YLX,ZZT)4<1OWH
-MORX@)"`````#````3"D``##/U[_URTHTHG_MX$I'$M<@,T1)OP>.*SY7`\J$
-M4`V`R3SFXIG=3DUS#)>_MO.U$3MT8#FP(`/`$``#P!```"````10`!.('_``!`
-M$0``P*@!`<"H`0(!]`'T`20'"2.N)%0^;.#.NM"5'$;]Z+\N("0(````!```
-M`1PA``$`M`#=3D>L3#BV+]F_>FP84U$_W0&1KK.MPYGBUU!TR<CQ9I at Q)71F1#
-M2'<V(',F>;6#,1K'W88WN\D(%"PSNP`H#PK+C(C>2C832K`OI?L9J\7QMM`F
-M1CA at T<^(R:2D1DNLY>[Y0P,A-O:=3D.(#H#%X4"W%.<]1I;O-")RJ_PWRCT4P9
-M`J'9BX2B\95MQ,<:Q44K,U/)I0;6U)"X0$<QW)`F(ONCQ)Q2_,(.H64C:K.H
-M>R%'3![17$.E?5V?G!\@@6?]./U/;>[4S+]%=3D?+!`73?`6.$XG\CV8CUR=3D=3D*
-MOFRH`:BS3_^%!FT>BM/5F?0G48%5BCEUYDLA["9[>@-041.W1MVG`@`<`0``
-M'`$```(```!%``$8@@```$`1``#`J`$!P*@!`@'T`?0!!`?I(ZXD5#YLX,ZZ
-MT)4<1OWHORX@)`@````%````_"$``.`'LQ!-*T"=3D1)T$XWGC'A?UT\E19N[4
-M#CW5-5&+74O+QN`2^ZC^^2E'+B#H<]&E5/TP=3D(YU3<O-'@XYHN>?#!"-C#/Q
-MS\$9`B]P;>_!=3D*1T at I;H!'!#>8P4X&/WNPQG&5-\RA`]^0F)9I1Q`3B0O<`;
-M85PS/P=3DX6TN8L1,\EO?&4>7AT93-^E.L6LFK;+>>Y>'BYJUKVS&G?C;K[T.M
-MHLP_.$&6'>79+81QL,*>>FAB]%%X3 at V'LAL, at B"H!6%::,4':`L9M$P^[OOT
-M'E*F!BT=3D>BE84L-8H*FOJ`<.41.W1GG(`@#L````[`````(```!%``#H@@0`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y(ZXD5#YLX,ZZT)4<1OWHORX@)"`````$
-M````S"$``+`\1`^7$*&]2&".9?@WZ26QTH0DV<HXW,R&2G;KS38L4$741`*\
-MJ3"43`";RNNJLG'XU/TJ&FSO04N+XDG)'TS$(`&)\7/J/(`$7N<N2`J*SR5\
-MZKQ+=3D2*F7`N,V:T6=3DL\BI]0;GW<L8W)..[BX^MM`JM#!HP[@Z#70JURZ.P8/
-M]ON;3L+[&F1.<$[`4RVH7LV:TF3FE8A8TK\!#[.\W"M$[`M8NBGGL[+6R>]'
-M41.W1I#R`@#L````[`````(```!%``#H@@4``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y(ZXD5#YLX,ZZT)4<1OWHORX@)"`````%````S"$``+#"O0E\P_`7"[CZ
-M20 at PQ>TX)*).NGW$/^+Z#VBX=3D0>E"YMS44?4B*<VF%'X$&OT=3D#[%!QC$,3H_
-M*R<\/^=3DCR7?GIWXBKL]?\SV>P(XF2GO-D#K-S^WG89`*$=3D0($+./YI1!&?O>
-M_H:*)5\%$5A<(<C5)37 at W+B^FP7?L?V>06_FIV"ZO_SK>S@]]AK>1&PZV%@!
-M4JK#.XB!;2784SEZAC^2>NL(K[2;5626Y(6&41.W1CDQ`P`\`0``/`$```(`
-M``!%``$X@@8``$`1``#`J`$!P*@!`@'T`?0!)`<)(ZXD5#YLX,ZZT)4<1OWH
-MORX@)`@````&```!'"$``0!IW[Y52O6ZY+8XCG*PAIGF?:=3D_>B</T9@#D=3D!N
-MSX7]WUQ1I`E>"%0Z2WJL]MXV/L)@=3DB:AA%I=3D9\]Z>>;/5N$'ABZ<50)4[)#)
-M30\A25\U2<7.`U<!E^P[H23@],1:I$7P8LO\R_%DD#*S'HIY<]QB?/)YAT7X
-M/YFA/`A<TNLY.Y0%MC1Q:D"-L(,7D)0(_0FM>MW\L.HC#I&4>IC&BW8)9ITE
-M]M7K\^-`!CRPO]L.I=3D`]PWA)T`X/=3D;*3ILR,$`<^7(0`BH@)U8HU0E.41[?]
-MGL+,!,ECV,;+UI;K:B&'0D<;\-9ZBKTA.):,B)?N:^G[53U#"#6,D;%%%XY1
-M$[=3D&=3DS\#`!P!```<`0```@```$4``1B""@``0!$``,"H`0'`J`$"`?0!]`$$
-M!^DCKB14/FS at SKK0E1Q&_>B_+B`D"`````<```#\(0``X*KR#GH5PZ at 9,O]*
-MI!:-SMG9)&D3BF>IL;LQU0:P5Q9J?KL$B&U;HJ!N"4HH<FO?_)3)PN1KB2'C
-M!-P'L5PB"*=3DM'U'IODDN*ZO)95S9!HN*SWFZ`.M@^$IOXW0I0+QN.#;0)G46
-M3(`$B<]E02.'S09%A6%?)@4`A0UXD?/P#9!<]5D*^$?M`$;0$)#,7TXW=3D$^Q
-M:G<I,25=3DE\#+5MDHZB:PP.&6>5$+F/,"T.4T]$QOWI)3 at UC3`KJ5V_F/97I&
-M+)<EP5&_'$!J&94H=3D7"MO],KWD?6P8WD98W>#EI1$[=3D&TUP#`.P```#L````
-M`@```$4``.B""P``0!$``,"H`0'`J`$"`?0!]`#4!KDCKB14/FS at SKK0E1Q&
-M_>B_+B`D(`````8```#,(0``L(TI>W`L*WLX*,$X3GNR!L8F@"9XT"I5+BRB
-M9-"_:#'M4*OSNT-:N:T%00*8HX#RU9<'AXLD;]9:>P at J]X/U2PC/!.L)A@,U
-MM$HN!T78\:UL!O$C2,"U4(W2A7?R"'G=3D+_3^&!?N8XLU^`5S at _`$F+XH-[/D
-M7=3DC,>FVQ%D1=3D\GIJ at WTVKF#W`_W>N3E5[.)[3ZR/BZ`,($X'6(7J_);UAAU&
-M_0$P1J`ER^>]KSQ1$[=3D&Q(8#`.P```#L`````@```$4``.B"#```0!$``,"H
-M`0'`J`$"`?0!]`#4!KDCKB14/FS at SKK0E1Q&_>B_+B`D(`````<```#,(0``
-ML%X%/[=3D)&J,U55VI3JX+`Q/;E,R[.^@"D&0H&"$!>8\@_Q:;'=3DX<:?=3D@:8)P
-M=3D1]C2(!Q-ZM'314)RI"):&S8 at 1PPEQ!V4?07A^@;E"!W8(B19W'M=3DG<M`NTS
-M;</I#M.K\$(2\SDP,78R3$L%XSB7I#NXF4?P&Q?L`6%&&X*)_9\V-VY6C%D!
-M5-"*G3)(#Y77&9!6-:([PE@''Z%\KF42+)JW5O?\@XD[51PD*)11$[=3D&;-<#
-M`(P!``",`0```@```$4``8B"$```0!$``,"H`0'`J`$"`?0!]`%T!UDCKB14
-M/FS at SKK0E1Q&_>B_+B`D"`````@```%L(0`!4"+CG^F=3D926FD8IED]U&K#E=3D
-MT>?%?,(%QO2ZI;0C,2OY%(_C1Q*+ at D_:.DB[149>AC>MC(-_`-]^$$OE.&W4
-MHOE8$;V4`$*=3DK[`89^.&<-1=3DJ5QOTAD_G,?HC)\Q!AGONX1_X&P:7<EYG6+0
-MLIOAD!9_HY/3 at ZM3!8'WNV9.(+#D2TTB*Z*]KQME#$-T`J2UQ:1J&<2FX3RS
-M5ZS>VK?;7F&WY_;J9F?PI2REKTLHMW"!U%RMVX6V63"IIE at KKF7.)3 at J2OT[
-M:^MHY]3Q=3DN_EX7?DK_,TW_S&5D>F3OG`;?X,>*=3DIRS],:390;7%S:8T8)KH;
-MIQ26DB<?K4W<\F-8P5L+S*;#%;PL/57"=3D#W-1V**AK?,F:G^]QK\4P4CGK-(
-M;I-B\J(S!%?6HAL]C)BQ79'8_=3D14K/8MMDI&O-O+$`/S"#@XZ^OV5^@G00V;
-M41.W1J@\!`!<`0``7`$```(```!%``%8 at A(``$`1``#`J`$!P*@!`@'T`?0!
-M1`<I(ZXD5#YLX,ZZT)4<1OWHORX@)"`````(```!/"$``2`@X%\V2GRF7:Q6
-MNAB>9Z[&R^@:MK^T*QCAN4]V"M4;O*(B>H7T:N7HF&#CVV7XT3PE%`\;QJ5E
-MVP1&1+F+UBY"X<AX[,@``L,=3D]4(F+@<D2H7XTH]$NN2HE_^?7WS7#%$[!D^#
-M[/U>\=3D at QO8U0TQAMT3:>!R^%)U)_3S<8P_V'Y"[AXB$YNLI((SF36'W-LW4+
-MO]K:5OL-JN6W<&7T at CVRK:L+D>8"?]VWPE*N+-OLPWHS[]4,CJ9&>Y#`E%2"
-MU at 16IN0TD\'#BNRBXPA^"`8US4:G=3DQJL&5NG5I%KTEQ,%DW</^M$M2YCP at O\
-MA_H/WO41N58)02K]F2K_[J+J[:VGBJWSF")&FN]ZWBK84([D^V;4S)T>*:11
-MYI>_XU$3MT;>CP0`?````'P````"````10``>((4``!`$0``P*@!`<"H`0(!
-M]`'T`&0&2=3DI,%X,J::>BRRRZM8<,Y=3D4N("4(`````````%PJ``!`+]/>#_H/
-MXG6WN<$(^997W=3D3N at B=3D-=3DA'IDB'K\/-+*'TV%,+DZ1`WYFP6Z<7=3DL9;]*#TJ
-M"DH)$S_*U7JZ41.W1IFH!`!L````;`````(```!%``!H at A4``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YVDP7 at RIIIZ++++JUAPSEU2X@)2``````````3````#!8
-MB-H<)HR6#JX9K2A%[NJ6*^U,T8WI%$:[&&`M8B<HU"HA\>W at B^M/148YBE$3
-MMT:JR00`;````&P````"````10``:((6``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.=3DI,%X,J::>BRRRZM8<,Y=3D4N("4(`````0```$PJ```P6`'@BSS\H/F<ZF7*
-MCB)WRC2%#H?/'V<UT!L7K6*OS)D"Q=3D!1=3DF$TFVD3F"-1$[=3D&X.8$`&P```!L
-M`````@```$4``&B"%P``0!$``,"H`0'`J`$"`?0!]`!4!CG:3!>#*FFGHLLL
-MNK6'#.75+B`E(`````$```!,````,%?]!X-*^9B#\+<@`/$(,7,-2C\EIPJ`
-M5+*(U:,"(-E]_*O;MJPAU#B5P"0.41.W1BM9!@"8`0``F`$```(```!%``&4
-M at J8``$`1``#`J`$!P*@!`@'T`?0!@`=3DEG+(0TB=3DA%W```````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,"``P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MKU]P!8^O_MH6EVY8*%XCT/O]+O:N-PF#)-/%U)9)A?:68?948W25131PO&2@
-M0>GV\Y97"MQ.#2%S=3DF.&'<8"`=3DEAKRAYZ at KE%M`RH+$KA\<V<K^=3DG1,'0\-J
-MUR#U^FF^9VQ=3DZ3>WR7!HD+`CXK>ISN]`5%S0)G$AA'YP!Z_M_>8I```DQ4]5
-M849#-Z0>?1WPNHDB1MBVL]G(=3D)DF4<5<)7YL3JHI```<``!`!*\T4/HCN0Y$
-MS/6Z&"-&8`>O<<G_````'```0`7_66*2V52U&:+[/1@$B>)AK_(I;E$3MT;>
-M9P8`7````%P````"````10``6(*G``!`$0``P*@!`<"H`0(!]`'T`$0&*9RR
-M$-(G81=3DP```````````I("(@`````````#P````@``!`!@````H.N+TM!1'0
-M<E-_-9'P47YHE:*@CE$3MT;'=3DP8`N`$``+@!```"````10`!M(*H``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A9RR$-(G81=3DP```````````I("((`````````9 at A
-M```@``!`!@````H.N+TM!1'0<E-_-9'P47YHE:*@CB(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``KU]P!8^O_MH6EVY8*%XCT/O]+O:N
-M-PF#)-/%U)9)A?:68?948W25131PO&2 at 0>GV\Y97"MQ.#2%S=3DF.&'<8"`=3DEA
-MKRAYZ at KE%M`RH+$KA\<V<K^=3DG1,'0\-JUR#U^FF^9VQ=3DZ3>WR7!HD+`CXK>I
-MSN]`5%S0)G$AA'YP!Z_M_>8I```DQ4]5849#-Z0>?1WPNHDB1MBVL]G(=3D)DF
-M4<5<)7YL3JHI```<``!`!*\T4/HCN0Y$S/6Z&"-&8`>O<<G_````'```0`7_
-M66*2V52U&:+[/1@$B>)AK_(I;E$3MT8*G08`4`$``%`!```"````10`!3(*I
-M``!`$0``P*@!`<"H`0(!]`'T`3@''9RR$-(G81=3DP*XZRS4.9F`@A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``!KMY)KM;LE/W-+'/X[XDJQM-]XU["3%&L-5Q&A2
-M5PB-ZT/U/^PJ-76K,.V,N*U6^^"4&]&6W$J_SRT_9W>:Q+^M.C^_!+J29!H/
-M2[&)2*P]P8LP$ZZY]X2P;=3DZ^[7"S<L1-GE#9?E:.*MUDL1CNR7XW=3D.ND&1),
-MV^^\!Y-T_>7P*0``)*C#^/.\H?OS435-9$T.ZC*^V4?KHNHH9PI+3CN#9U1\
-M*0``'```0`0_XJ1;X!U3$_U85_1I)8\!RE#)$````!P``$`%#P[Y`IPE9Q]2
-M5"L'9UP]Y2?L(Y51$[=3D&G]`&``P!```,`0```@```$4``0B"J@``0!$``,"H
-M`0'`J`$"`?0!]`#T!]F<LA#2)V$7<"N.LLU#F9@(+B`C"`````$```#L(P``
-MT'Z^H+UG^P!?9E<#G#C$!2AW07GZ?'MHEECJ6?K4D?J*K>GG[!`(R)HC[7LI
-MW50HQ_RQG"`J*B:Y at S'*`U"KT/@G&:J8_GUM6X'=3DB&8ORX at N;_>H;)HIM$?A
-MVO+_8NK$6-#3)[Z92DFX.S^]ZCF3]$B<),HPV%*V,T*6+MV705GG"0@>4',8
-M=3DPOX81`A:&DGPF4/CRK0C?. at C&0FAKEEK$<3ZL7?<=3D;K\;J9=3DO-B/KVH?OB!
-M*)<G[[!_;Q.ZQ,G7)Y5MR?+:<H.?JBQU[U$3MT:_Z08`O````+P````"````
-M10``N(*K``!`$0``P*@!`<"H`0(!]`'T`*0&B9RR$-(G81=3DP*XZRS4.9F`@N
-M(",@`````0```)PD``"`@J9N!_;':Y_'X8.A/,!U=3DJT$N-ST]<1Z-V<X]RO\
-MMF4+/HH5X5/M1U+O4+>#S,-ZQ5!72E&H."*S3NA4G=3DBL`QR=3DW+<?_#:[Z;D)
-M*Y8@,:[]I&)Y(.9KB.:R`&;>I2YU&GI_>-_`_KG[0D!6YR^>1(Y:86#L#*N.
-MR&[_]5$3MT9Q"`<`'`$``!P!```"````10`!&(*L``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z9RR$-(G81=3DP*XZRS4.9F`@N("0(`````@```/PA``#@'-Z`TBP<
-MHE\*G_$OL),E%_/DOE@,Q5KNL)64:\20),\+;[3ZG>I&*5F>-E]573;L0WT\
-M](5!T+1G03(H'/?N.4&9VU]V$+-[2X`5.:$/QQ,MQ5P<#_(Z;5O%G.=3DH9_7P
-MDT.[X3#NYBS''1/:,(H0JT?9$M1]G\I*4NUU_GX,\[5$]EW$``5-26R6CC?J
-M*[HQ7UB]1MITXI)*^R_2R5(8[`>>$NR!GMF8LUS?NE%7OJC)PGL:_4_ZYE(X
-MJ0H]WE?<_5$VT3\8\XA6<%"Z[:N,?JG#>@GP*?H/(1:9G%$3MT:^$P<`_```
-M`/P````"````10``^(*M``!`$0``P*@!`<"H`0(!]`'T`.0&R9RR$-(G81=3DP
-M*XZRS4.9F`@N("0(`````P```-PA``#`R:_JP[(]$JK+9=3D&8P'U>#J*.O`TD
-M\*&<Z9$3,ES$E.X$T-#Z3JOIKRR3*`R8Z>2FE+ZXCP[Q;VI""I7)3*_QCC[?
-MKRDDI>$85OH)[!P7L"F.V>;8HMY)*)GZ*5`2/MO4GJR8F$,W8\NWV2A2MD+*
-MTM"LK/U[U#5L+O66Q5&"T\$2PS/>%QKR\JSA,O<,\>^(6#<`',SYQIX.H1O&
-M>H]!VWD])!*FM.D%/>A:#NUXVX':X.C at 9<UE:MZ=3D_+]1$[=3D&QA\'`&P```!L
-M`````@```$4``&B"K@``0!$``,"H`0'`J`$"`?0!]`!4!CF<LA#2)V$7<"N.
-MLLU#F9@(+B`D(`````(```!,*0``,/Z5C/R(QXYUP*=3D1V'"\!<J`NR2(Q]?#
-MZQX4SK'4T7%,YV&&8JIHT;$3ZB,T41.W1JXT!P!L````;`````(```!%``!H
-M at J\``$`1``#`J`$!P*@!`@'T`?0`5`8YG+(0TB=3DA%W`KCK+-0YF8""X@)"``
-M```#````3"D``#!$T.H7&)VJ"^CURB!\=3D8IDO1C10P`32L6!G5@,^'Z#4VQ]
-M67;B(PQ3HK#JM%$3MT:"5@<`/`$``#P!```"````10`!.(*R``!`$0``P*@!
-M`<"H`0(!]`'T`20'"9RR$-(G81=3DP*XZRS4.9F`@N("0(````!````1PA``$`
-MLTCB?3W=3DW51^GZIQ,'T5GW7V_QRCFF9RLF5`Z5,PB at Q4TTAI9Q3R:+XE0U(F
-M+RM*[RD5#9Z=3DKQY[?G>I_`)>R`B4[4DPZ3\-GP1A(VAKMY4J\SG.?"ELGC_%
-M6/`DED/SF&`E%@I`#ZW>(E)]Y`REU&`^$@-=3D=3DK2N$NH[L,7CF4+$]SZ$7JC3
-MM`)C1VY)0)&V")#?#3_A<67?;N:D*L4C#B[2#3LWD(*MY`&6B?JL!"BPC(NB
-MG%[DE.9IDR:)]M87$T!JP8BI-MSE>&21.<49&01)Z"N,@)@C;`0)8R!XA=3D"=3D
-M7T86V-5Z%"!7>T8>A.(B5Z88*G9"/_Q:9!O!41.W1G=3D=3D!P`<`0``'`$```(`
-M``!%``$8 at K,``$`1``#`J`$!P*@!`@'T`?0!!`?IG+(0TB=3DA%W`KCK+-0YF8
-M""X@)`@````%````_"$``.`E^R*5%HQ)_.``IO%VN9W$0OD.G;!T7)O\:RCU
-MQM,J2 at BSK!=3D5IG&92\6.9D_XE'^<V2+B8>SX<C3E$4A&6M:<OH2P+EP5]A at 6
-M!.H3SZ-V/:9B>(@)*,FE+#]TGJ[@)'J_(,G-"YMFYRSU>C+;ZH\0:'&5_KQ+
-MVB]*T\MJS1D4M._QFOS<?'>!)HB^\P[&UH#&0_\1H-M`6G#Q18TH/_V=3DZ0GR
-MD at N9)MV@;\FJ$8?Z88=3DJ?X_MN1C$NYM-MKSN6DUE#IZJ86"9JR%C<U?[TH#<
-MW(C'(Z.*#C"^IH2>41.W1G9S!P#L````[`````(```!%``#H at K0``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YG+(0TB=3DA%W`KCK+-0YF8""X@)"`````$````S"$`
-M`+"3$L!M^8C;M*0V*B%?,1J$/6NA1X%+,7=3D<3EX9N(U]E':0?!W4$0^GK880
-M[D`C<V)N@<5"N2.W*=3D-WU)N9@$LZXC1RW8N'0"T0]BU1&$?XSZIRX@!1;I)6
-MJ2UJ;4S![S]@AP"%]=3DC;%*%I@#$]Z%9E4R*;P?^+5+PN)8J/=3DX_ at 1!=3DO0KX\
-MP%X8SBX*K/8DP"!&FH5)SW]6[`\6`Q5JX/@&E>0V:9T:3!7T1C4E41.W1B26
-M!P#L````[`````(```!%``#H at K4``$`1``#`J`$!P*@!`@'T`?0`U`:YG+(0
-MTB=3DA%W`KCK+-0YF8""X@)"`````%````S"$``+#&.'X?_QIY9MP(Z72C3Y<H
-M`99TM:(C[6D7*4W.NN\[-([&=3D?E3S46T;FBQK$1LK=3D)L8@;0B-%%-RZRO+F;
-MWY+KR&%&W6C^BUAY-D[Y\VW5Z$%'Y%6^3'"H>D,/`N+,"G)_-VHJB)^FA%L,
-M::. at -Z\*@_ARY#SHCWO,&D at J$X5/#/U6?AC?!3?!@/:$UI4UFR#*^R:']%G"
-M"#&)$_49#U687E!E(N]R<]PB:X.N41.W1I"S!P`\`0``/`$```(```!%``$X
-M at K8``$`1``#`J`$!P*@!`@'T`?0!)`<)G+(0TB=3DA%W`KCK+-0YF8""X@)`@`
-M```&```!'"$``0!0[</HA6KPT at Q/V0.5TV/A!_#61RYL+[+V1V#)#?1"5YE3
-M$[KW&8;A`+UCZ-Q#[/E_.G.O^8!_)5$O]FH^`S9*Y4&6EP3 at _8I(=3DL"^1'!@
-M!_APDIES""];?T^GMKS/6*\[5A at BZ,NOJ*[F[A6SK@#V!X7A@`M<C)"<0MU\
-MD(LG'&E^&%-_RSJV(&C!S`JHQNPY"HXT)Z3UJZ[WA1;>S";BSDK!LGX+@&8K
-MQT2PS2&O"P4O8&UWCN:W:GMDO&6I"7"#9O/@?($+NIV#'UW+U#)MH=3D8%<+4Z
-MX300$T^\N)8)0A<^P$D$N61B+`6\*KLCU4%^C,G%^!.8:@Z2(ZY1$[=3D&?+\'
-M`!P!```<`0```@```$4``1B"MP``0!$``,"H`0'`J`$"`?0!]`$$!^F<LA#2
-M)V$7<"N.LLU#F9@(+B`D"`````<```#\(0``X(U/W5<#,+CMI]PA@'\E9\'R
-M#I-)6-Q2T2EYN%LW;!?*?>_X5C/C'56_DT`L(%I2V"4T@&M3N60>25$WUO>O
-M?"?0"N\(`#4\I24!8I74$F5V`7^B1%\E;F-'[Q5^4XYTJ*GKAGX3?3YWO7T*
-M08F at X@9%"@1VAEYOECFR#J,UOH*NPO"=3D1&V8+8K/&1YU.LRWK"AEYT$24RZN
-M_'G-=3D<*$3RV>/+V&(4$LUDW+_<0P+N- at O5CF*U%`6C^:2<C=3DZ:9%ZN_07**]
-M;+[H28V2<V;&LNA@%;@F`R.F]]Y*#B)1$[=3D&C\\'`.P```#L`````@```$4`
-M`.B"N```0!$``,"H`0'`J`$"`?0!]`#4!KF<LA#2)V$7<"N.LLU#F9@(+B`D
-M(`````8```#,(0``L!U32ZMEP*#4CC',)#\87*PY9R93\$9YJ\[YPN)5"[>I
-M^OOS`_3J">*ET8><Z]1LJYSQ(WPJO<`A5>LI at UR.LK::@@$J7@&.D/QR[7BZ
-M5I(^!<J%?EV)Z;<NV8VUO)WC=3D<(Z]>E4T2F\Q!!XD`T;.MQ)<,R]S+)X8#\H
-MHZE7%\<(?C675>BQ6RX,/9_0D+Z`W!\?_1K?VS0T at ._R&N>RP+$4VV/D\]W$
-MK3@%#C-1$[=3D&1O,'`.P```#L`````@```$4``.B"N0``0!$``,"H`0'`J`$"
-M`?0!]`#4!KF<LA#2)V$7<"N.LLU#F9@(+B`D(`````<```#,(0``L(15@`_W
-M-XDO7 at X-FF&8KF$^/N*74;`+>[$-HSF)F(V?:6+;;IIDM,2+TEJ:=3D'J/S,C8
-M?C.=3DFN-OP"([E10<O,OV"'\4YJ028#@9S43!NR&Y34*:ZUNX3;_PN#]EGV6H
-M)-IT79!>(I!!J>F@^>;?.!Q[9=3D$*PUJK;SUDX+"PL0U8SB/FY[LQ\)RM!!U_
-M\+0E78 at +I@.S[FU#W%-N/&G5]"?C!W,=3DGIWN%%I>LL!1$[=3D&S!D(`(P!``",
-M`0```@```$4``8B"N@``0!$``,"H`0'`J`$"`?0!]`%T!UF<LA#2)V$7<"N.
-MLLU#F9@(+B`D"`````@```%L(0`!4'T[M.([>R\YJC/K.70%17-LX"M5JMY^
-MD/_EAJ]S0-3\7=3DG\F.I"0VNGU,_)E<=3D0S at Y+<'=3DF+(EEBA$%"(I<6<0J5.W6
-M*W1"2?6^=3D)"72Q6.SI=3D]^KM1P5)6\).P6C=3D"#?@4'TD]$3)TABI6VZ#H%9;&
-M^>E64D?ZHDK..#7>\XW\8NFW%D/^L,_:Q@=3D9ZLWZW*M-O^>=3D'N/*L5BTDP_Y
-MO#T,+23W&1J`H(L6S7T!*#6!"N3:=3D^?M=3DG5PT`RN:UYRK8<,'<89D#%2GMMP
-M><F%[F)4R=3D>"NB4*AYBZ'_`>ZV/`'O&TI[9WE[$2_N86>S62M^,I#WAX>(?-
-M%@-,^R%S/#>GI?A?V3^S,9)!R.F\L/E][CQ)W<):JMJOK/)6`LZV-%:^:.%6
-MDYRUPP`6,!%V'/G,61$K493WN#]^XE)^_H.EAHCW-;?$`(EGO0TI41.W1D=3D.
-M"`!<`0``7`$```(```!%``%8 at KL``$`1``#`J`$!P*@!`@'T`?0!1`<IG+(0
-MTB=3DA%W`KCK+-0YF8""X@)"`````(```!/"$``2"'R1P@'6#0ZN\BSB(RT346
-MWT^Y9[);R\E_+"/:<P/I5^NU(`HM@@R^V:#,/@["-J'<;7!5S?!PJ5TD5Y;V
-M*P+/!$)&X/BZZ*=3D37AR>.LD=3D4!ZD'X?^!F,&.T,3NP at E%XV![2X/=3D^T>O>Q7
-MV1)60)I"F_0`)PC.^6`$VX_H&&4"6.GLUN:U<Q/@,BHU`!27?_$42;[[^7P&
-MNQBT*$;^5P9>_N@"Z0??V.Q`%8/WJRFHEH*B9#T))A26XZ`;V[WZ2Y$^;+`-
-M!Q$+L$/*_3>/-DN*.$).I?IJ7AR[ESF:!KR,A+9P7N>USWSU)_E!Y13I>-:0
-MRBQQ1O1GP!"4??!AX\03LLD"_G678?]Y7'V\+P(7)RWW*$J*LM'MC<PE6U$3
-MMT8[=3DP@`?````'P````"````10``>(*\``!`$0``P*@!`<"H`0(!]`'T`&0&
-M227VP3D4_0@?`CAF-;%Q0<XN("4(`````````%PJ``!`Y[$'!Z=3D;CZC1]>_J
-M!->_0?1F3%6T0U*!$7O,0Z_P,EN)20X+#1+U5"E2N$'=3D97DK5$NNDV-A"H4`
-MDF-141.W1HR""`!L````;`````(```!%``!H at KT``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y)?;!.13]"!\".&8UL7%!SBX@)2``````````3````#`IHT7>9$DU
-M!\@/2.<_4BKE(WP:"(1>%KO,ID(\NB,+4)/BE<M3$$<[\U]CO5$3MT8\D0@`
-M;````&P````"````10``:(*^``!`$0``P*@!`<"H`0(!]`'T`%0&.27VP3D4
-M_0@?`CAF-;%Q0<XN("4(`````0```$PJ```P_*9"*#<+30K&1L/(?9ITI`0Y
-MZ:?<)>$'X,)82^Z--3,!K__45_`H0U6R/K51$[=3D&\9X(`&P```!L`````@``
-M`$4``&B"OP``0!$``,"H`0'`J`$"`?0!]`!4!CDE]L$Y%/T('P(X9C6Q<4'.
-M+B`E(`````$```!,````,'34#ZT.'VT4GO4;<P'NSO`3<U)S'MK.J^ICNS^:
-MV540.- at WT71=3D:*>8V0,541.W1O?M"0"8`0``F`$```(```!%``&4 at L,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DES2"%[][#R\$``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,#``P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``"H\/8;":
-MRE/C0W.)1"NPT0I0\&"G;<%$74;>GNG*7P8#-X0E2*KF/+C9<BE<,D_9=3D/E!
-M,$7[%-H5GF7\?J\0#JR12"*(I0-)'.Z`Z&0BR^9FHU'U at 9;Y!9):O]C^/NT^
-M.%.VN9!'PI4>G_4*%?4";=3D04[1DU-*/Z$;>AP\F"%:`I```DLUGHSV_;EA:B
-M?/&Q.=3D&`EWX1GFK=3D)9J*1+Y)%E(U>BDI```<``!`!':>PJ#7A=3D"O%^[]:$.2
-M3XN>)Z=3DN````'```0`6[Y:L.N!#:0U&L]I!"'$@BB`RII%$3MT8,_0D`7```
-M`%P````"````10``6(+$``!`$0``P*@!`<"H`0(!]`'T`$0&*<T at A>_>P\O!
-M```````````I("(@`````````#P````@``!`!@````HM?./%FC;MG347UNPY
-MA'FA.&T!*U$3MT:C#`H`N`$``+@!```"````10`!M(+%``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A<T at A>_>P\O!```````````I("((`````````9 at A```@``!`
-M!@````HM?./%FC;MG347UNPYA'FA.&T!*R(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``"H\/8;":RE/C0W.)1"NPT0I0\&"G;<%$74;>
-MGNG*7P8#-X0E2*KF/+C9<BE<,D_9=3D/E!,$7[%-H5GF7\?J\0#JR12"*(I0-)
-M'.Z`Z&0BR^9FHU'U at 9;Y!9):O]C^/NT^.%.VN9!'PI4>G_4*%?4";=3D04[1DU
-M-*/Z$;>AP\F"%:`I```DLUGHSV_;EA:B?/&Q.=3D&`EWX1GFK=3D)9J*1+Y)%E(U
-M>BDI```<``!`!':>PJ#7A=3D"O%^[]:$.23XN>)Z=3DN````'```0`6[Y:L.N!#:
-M0U&L]I!"'$@BB`RII%$3MT:&,0H`4`$``%`!```"````10`!3(+&``!`$0``
-MP*@!`<"H`0(!]`'T`3@''<T at A>_>P\O!4TXMCC(/D0<A("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``&_AFML]AV"V_L,;S_GI-5(*^H/7[:H0.^]TP&I,\JX"^$J5
-M6:TSJ33T;+@>::/O2C_.OJ/C!`52L*10V;4.3HRK)+X1K$8FP?:0T5VHM%22
-M^%'7S1#!]X>WSTDGZ+"X8SPTMMFTL'KBC1R60P^22N1/1UP2I-[`9_5N'S'8
-MMN%P*0``))%)MM$^_AUMQLZJ2(.]<Q:Y9+%KT&[^!^ZI,"/GI2+9*0``'```
-M0`3$P\GGG^GJK/E8V1TSH!\-;^7K&P```!P``$`%Y"CDD[;VF#L[JRZ,48S#
-MZ8VH(%-1$[=3D&`U\*``P!```,`0```@```$4``0B"QP``0!$``,"H`0'`J`$"
-M`?0!]`#T!]G-((7OWL/+P5-.+8XR#Y$'+B`C"`````$```#L(P``T'5K)XIB
-M2O-!=3D#4\RR1^5!Y;LLM?"J-?*NU8)90`8O4 at MZ@`F3!]W6Y1'M\'IL"-%?#S
-M75C'P0!1B_(:OPXPU4H"MTA\1P4TWJ(H]WWVY!A"8_VJQ%;ZD%U]=3DLM%W7%E
-MM,VP.RM:`I01+13*7FK'G&BD"+AG$M>K'NGP+]1GC+[[Q_48_IVW(FX.S^Z"
-M6S at 1O]YC7*WK@<=3DO%YC"RP'>#QFZ"SQ,#%N*.T=3D&[LE3$-S1A[%*%1KP:PSD
-M8$D.RO\DN0>&+*Z$2P?:RC?25%$3MT;S=3DPH`O````+P````"````10``N(+(
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B<T at A>_>P\O!4TXMCC(/D0<N(",@````
-M`0```)PD``"`!7?@"0]X6$&U(>:VB>0!!3F)KH46B-?[%MZ'4#Z^I31$S\WJ
-MKNY40"$O1TSA.E"6:SX#1//AF#B7>3GH`=3DN*9[31`B,<WWW+GG9`-8O<'[B^
-MF5I2UH\%>%\@_D[IZ'N=3DSC4^;0,,V,_(@+K>T4N;)L;K."9SO9VKF9$*IE$3
-MMT8YE at H`'`$``!P!```"````10`!&(+)``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ<T at A>_>P\O!4TXMCC(/D0<N("0(`````@```/PA``#@QC@:)7%R*;].'F".
-M^KR*X^RCZHU=3D32QSUW"9+?=3D\]#GK/=3DY-C]>Y:(BJ3%UX'KK$M>14XC*R'><"
-MR),%R]I1^BG^%<#:RCZQM\D_08JCQ_Y$"3[`E=3DUXXCU5H`<):W0Z$]);TJMA
-MT`"5;,-[`/POSZ""]Z6;(Q\QI8O4?\7[X^RR&K1MY&3^WJQ7U\^,02*7@]@)
-M\G at YG&(+.[8A=3D8OOUE1](%7:A][-,$H%KR>S[S&_+&\^F.'&$";]%[H45I*B
-M$H%/'#G]6JFS;C64@\FKVDQO&&*[89>)2W8HNE$3MT8IH0H`_````/P````"
-M````10``^(+*``!`$0``P*@!`<"H`0(!]`'T`.0&R<T at A>_>P\O!4TXMCC(/
-MD0<N("0(`````P```-PA``#`_X$NE!O:##(Z at X8^-X- at _V\@0.(E*:I!=3D!Q4
-M9^`"HGX(0<SF:5ARD$9=3DZN/J)?EC48''N?Q6$62\+61Q>O+8]\;*RAV&6:*<
-MI>4TJD+XSS6D`C]ROE))-S>92)RD^K-#$1S&7FFM_$RKA8SG^Y<V;6/%:8HB
-MQ(4!(&`159&O<Y-I`667ONS-[%J_H-O$2/.2WR^YCLK2Y^E3+#@A:;S2 at 6.;
-MKKA^B:XRUB9P0!$!3AI[6`Y<J4*1\6B'[5)1$[=3D&.*P*`&P```!L`````@``
-M`$4``&B"RP``0!$``,"H`0'`J`$"`?0!]`!4!CG-((7OWL/+P5-.+8XR#Y$'
-M+B`D(`````(```!,*0``,%A$4S]\Z=3DIS;ZW%OQ[CXUXZ^[1'%R.7 at Z,7>]L%
-MU#;8 at NQGW?I5A]F43??041.W1L3'"@!L````;`````(```!%``!H at LP``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YS2"%[][#R\%33BV.,@^1!RX@)"`````#````
-M3"D``#"SCMT_LQ"$9"D=3D)(J;G#&=3D!P()_DL<*U,1GF!BQ:=3D9F8C\1Z>X\#RS
-MX)\,\%$3MT;1X at H`/`$``#P!```"````10`!.(+-``!`$0``P*@!`<"H`0(!
-M]`'T`20'"<T at A>_>P\O!4TXMCC(/D0<N("0(````!````1PA``$`9PC]W53?
-M%:HC)OIX^".E&>F`36/T\#-AJA1 at T'WC:HWWSG]<Q7=3DFN167B%L(,.Q5^O]F
-MML]&%[$ZR:"D=3DX)@AAUTV$VBD=3D>^2J\=3D`OZV\;5VJ#;<QJ$:6O4P.`]BOD=3D+
-M2KY9Y\C#]R at _9=3D]O(D!?/1-T*C2&%-DD4(?_R$.$)FVCN"2G[DB=3DOXLULBKY
-M'A["'KTSM"L`_0,^AU9=3DI^.</:ISZ9EZ#/3)DYT6=3D#>!X)5*@=3D9W.>D?A_#3
-M2K4CCT/&/?/YYS-U#`KXK=3DHAHVH-':W0M2'-ZT=3D["!I>!BTE'9H5SS9EVC./
-MS.8(S@``?;C#X.ED7H at E9@Q9>MKY41.W1D[N"@`<`0``'`$```(```!%``$8
-M at LX``$`1``#`J`$!P*@!`@'T`?0!!`?IS2"%[][#R\%33BV.,@^1!RX@)`@`
-M```%````_"$``.",XJURN]:2 at U4G%8VJ$"OQ$(P;?\BJYVW57IG)4-.V98HP
-MCE[,=3DCK6-K8`U$Q%I/"@3?"M[A-$\NT at HO4;JRN>C#(LP#^$!3-9Y4D\YJ["
-MV]#6V\GNCAEYX5F4L#\UZ"-<W$XBUB^(6U:2:'J0EY5&:0B/H-9YDBPP1J]]
-M)TSF^9#/<04^;,$VX/;SHF/D=3DGI#]P!>-B$DP*8-8OQQZ at J;GIN[^@OKG>IA
-M_@>W=3DHYWQ9R"IO2=3DW6W(0DO'UAN5D5X+#)$(Z,6WYDNRCB^9VM*M]]VYW2'L
-M0BM,/7V!41.W1F[^"@#L````[`````(```!%``#H at L\``$`1``#`J`$!P*@!
-M`@'T`?0`U`:YS2"%[][#R\%33BV.,@^1!RX@)"`````$````S"$``+"@>N$S
-MI\1JSP<?0DGM7TQ#\:!>EIH^&XZ at X9AU0'X(K=3DA-X^C at D4NM(VQ`L@*35_K"
-M/YET1>PGNW#'#DHIE*92!P7)+=3D0:29(AS31K6E2[GL2A+0P8&QE?%J'>4)9L
-M>`@/R]]-`<&3AS.)$RCU26^(NB[Q7J`+!.E.::QBFCJ"S$(M8,8>D>$)93*^
-MK"2LB_^>=3D/-KJDF)-"703M)OO+`$=3D2\<MZWE21^H]LY!41.W1JX@"P#L````
-M[`````(```!%``#H at M```$`1``#`J`$!P*@!`@'T`?0`U`:YS2"%[][#R\%3
-M3BV.,@^1!RX@)"`````%````S"$``+#B+$@Q5RW)U:F%*S6.L%/)8B4V559+
-MA>PNV\Y2#4PE_<?=3DQ1,?1?YA76\M>92NB9DG6P`O#>8MN8._W;/2.,<DG'^N
-MO7Y4NNO6P_QXRR`,=3DHOZ^T_FN6<UZI?\S3HCV62ZFTM)?)V:M`#PBL&'JI--
-MTS+ZF>H:2D1*+V,M);+\_;P5?R0G3XVN3&Z&?@0KW^*9F6$3IQM&Y-C#]):I
-MZR,]G+#[',&`6AW=3D-&9N41.W1DL]"P`\`0``/`$```(```!%``$X at M$``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)S2"%[][#R\%33BV.,@^1!RX@)`@````&```!
-M'"$``0#@TRQ':<!W7@/FQG,[)4)&X=3DP^6>,,NLWUCJP?L19(T.=3DJ^TV+[`!^
-M at 96<M!?IPW]Z!WB!8SJA!. at GNVQM!=3D)\,H#0%;4Q''DUU:H*$83=3DR423?GZ/
-MT9CJRUAJL(1O>7=3D6*307`[7)FSWK%I.A:[75"6AHI]=3D*A'''`O3!WY%Y8BBD
-M;U6-B=3DQ1;"DF0YQ;)^F+$PT+`B^9SO%&O6!\#*>/TQONNI9_`-%!#&1]R*7A
-M<9S>B=3D!7 at YV`B&.^IN;FAD%2@(TD8I?$D-(N`I"(<K+- at T,-\P(JTE,;+C83
-MR_O"$@QJL3_&Z<##O&19)!V^.!_^SRZY.-N1\\RT(PI1$[=3D&`4D+`!P!```<
-M`0```@```$4``1B"T@``0!$``,"H`0'`J`$"`?0!]`$$!^G-((7OWL/+P5-.
-M+8XR#Y$'+B`D"`````<```#\(0``X,54'@GA^I+$*UR,X<-UZQ!^Z'8[1EP3
-M:"9.WJ'3UTX42=3DJ at 1$XV7S]:"'\A]S]:F[ZT^%AE?;:*YUI]L]B!Y=3D_["0*S
-M>_W[^=3D-')$S"UX+!VAIUQ!Q&1SV<=3DXP:5H\#%C/0",^`^+>>>G[5410<E&;$
-M at 2'^+Z$$-;!`#'G(K>AJ5Y%:&X1.\,5RI]Z2&;4<>7PD"?3R&`W;!N_"8'+.
-MH&(+Y&ST9E*^+5CR2[H(FPQG1[F7!C$PAQT';37`KH8^[@\Q\UH]R4P^M(RM
-MT/TDBR,>BZ`:,H2A50+G8<U1$[=3D&RU at +`.P```#L`````@```$4``.B"TP``
-M0!$``,"H`0'`J`$"`?0!]`#4!KG-((7OWL/+P5-.+8XR#Y$'+B`D(`````8`
-M``#,(0``L+HZ+ZW0S;'\L.8]H25W6U,R>JP#"(2]R at 50GZ5&=3D$)!!61`G)VO
-M4V0*V7RNX,F'8`YRK+6RNM-4<7#_`>/CRUO&HYU)!>/QKBTF:10_V7ZJO0D%
-MY1W`Z'P11\U2R\LA5;_:`Q]I,%'@:6O%MB#D$1V]+-$_;^^'\:XF"K:B@*38
-M4>0TZ]'RLZ=3DQ\Y71HJ&ZU$'^9Y[-K1*/>BB42U'38"C?I;]NF<C6%"]P$J51
-M$[=3D&L7D+`.P```#L`````@```$4``.B"U```0!$``,"H`0'`J`$"`?0!]`#4
-M!KG-((7OWL/+P5-.+8XR#Y$'+B`D(`````<```#,(0``L,!?3R(66%7K7RTP
-M=3DSX3II7:,I<P!<YF:^I1+>Z)[0[L%U"'[W2K\.^-!<V/0@`8_H?)PFW=3D%$Y&
-MV-7V5\QH?9?F*'"1BMHW#Q0\A*;P6_#+JIV\O<5_7?1&2LNK9[K$6=3DSWGF$Q
-M1FI5V_$5WAU'E?8Q:<$METVZT_>$D!EV2ZIZY-LB'.!75-GB;EO$>*!Y_+%E
-MQ9QS\<$ZSV]SIYP>B-]#K05BC`*'D_0,8#)1$[=3D&U9\+`(P!``",`0```@``
-M`$4``8B"U0``0!$``,"H`0'`J`$"`?0!]`%T!UG-((7OWL/+P5-.+8XR#Y$'
-M+B`D"`````@```%L(0`!4);_6V=3D-K<)?YN(RP%3[Q/[O'/FL9XGK.O-OA[/P
-M#Q#^TSY8Z5X([+$DJM4$49&HJJS\HL:B?5K+0.!04=3D%4@]Y')+RS at AHD\P*J
-M93,`?8&M9NHCY.%V/-_MPT.G,(HM*G?QFO(8F85WZT&`QT$R8$,[JKD^IDI;
-MQ^;A*:*#A([@'SRR*LO,KDA4&C%_%:K$[9L]GMBZX5^3B8,\-F3DH9D<-\6.
-M;JIE?3_W7MDZ#R<X5?VJ1[MZNJ.2<*N=3DN.[04W\/\Z,^-R_WGOSM4^#6]2)S
-MA6E81X#5N&=3D\"#V\)5!3Z/\I+1[K!P^Y1JFE;\$=3DRGP^=3D7FI'?!>YV@&^.L.
-M+78WV-;PY\B'-R,A=3D[Y:/ZE>N7:-'R)QS+V:'.ZEB727Q3T'C%##5BZ^VJ1S
-M$#_)MHX-.^/U:_YF.VQ,Z[!=3D`"3`07 at _B4@W48.<T\E'41.W1EG5"P!<`0``
-M7`$```(```!%``%8 at M8``$`1``#`J`$!P*@!`@'T`?0!1`<IS2"%[][#R\%3
-M3BV.,@^1!RX@)"`````(```!/"$``2`H'`DGK*-Q?.$@H:F2[;&D6^S6_(T.
-M.]2#1MPUQ068P?^3]5HP6I1\[3795E=3DT48S1OG.(A&G#D")+/NSW,-7\[-Y,
-MI--.E%+W at _1H8G^,V-_P2_!3['=3DE/<WFG:B(N1Q%2$ER/9](?1`(+K(0K/B^
-MEH\DHC=3DSSE5<FT>JN6>:5!A%(39:0CC-3UJ\F>5MG`P6Q>1T35JRM`[R/GK/
-M1S/9&8!:LK<FV*9+G!ONP>B^E+!9@?6.IHF/1O%U0I^P('0CEE);#>ZM2I%%
-MJ7B17SR$KBBC8&EMS4FW[_0[K.<_\_.-7C9K49``(,ABE597[YO1,Z%:FJ8G
-M/'5]JHQ32KP3B6U\.=3D=3DSOGM?922JJ19TVR at V&A%WV8W'R`\I/E$3MT9Y^PL`
-M?````'P````"````10``>(+7``!`$0``P*@!`<"H`0(!]`'T`&0&23'?V$L2
-M,&B2FID7&%AJXELN("4(`````````%PJ``!`]@:5I5+UT(Q=3D394^PAY/2U%<
-M1.$"/,!XIQ:CM.O=3D:)[\1D8D./O4O#IV:-/-87BR#&,&5]1LLA)DV5?Z41.W
-M1KT&#`!L````;`````(```!%``!H at M@``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-M,=3D_82Q(P:)*:F1<86&KB6RX@)2``````````3````##^.=3DNMK!=3D.E*M3^KW_
-MZY_X6CS*"_ at H6,B-,)+NCATDAA4O>J8GI&!>8/(FQE$3MT9D%0P`;````&P`
-M```"````10``:(+9``!`$0``P*@!`<"H`0(!]`'T`%0&.3'?V$L2,&B2FID7
-M&%AJXELN("4(`````0```$PJ```PXL4R\H8S(\3?/.Z[@?$)4L?03#.'75L[
-M`Y8 at -1ZKQ2@(5&RU8=3D>-*9+A)J51$[=3D&Y"(,`&P```!L`````@```$4``&B"
-MV@``0!$``,"H`0'`J`$"`?0!]`!4!CDQW]A+$C!HDIJ9%QA8:N);+B`E(```
-M``$```!,````,(L at H9!_(_M`4/+D9F091[&/OO9\;R'EG;QD`0B>($M^[$+=3D
-M7)82O'MZ:;/S41.W1EL?#0"8`0``F`$```(```!%``&4 at ML``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE9%QOF$I+]3(``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,$``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``VI]2=3D2]EK$)0)@PR
-M!&7J2/I`JQS<]HP_4+'IG^0I3$6FQBR#$OTP!B3=3DQR+;IP1K^/(R,JDJI)&R
-M at 73.T-?MTEM%]4S!1+T=3DK\.B3%B3\7ZO"+"(T4N_\2Z5"D"L_QJY+B]-^3E2
-MK8O.D at 3Z5MTGOE,7`;;,0T'_`R7KL+=3DJ>LHI```D68((PQ((`T`#/.O-=3DCX@
-M.^_;?U1Z57A4=3D_]92OX+=3DW<I```<``!`!%H4]VL-ET4--I:A9^BUJ>/:I6.T
-M````'```0`5F&3*C%UL^@W^T-0'GE7QE at P(K^E$3MT9A+ at T`7````%P````"
-M````10``6(+<``!`$0``P*@!`<"H`0(!]`'T`$0&*61<;YA*2_4R````````
-M```I("(@`````````#P````@``!`!@````J04GWB<*P2,3F#NIJI?*[W'C08
-M>U$3MT;V/0T`N`$``+@!```"````10`!M(+=3D``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A61<;YA*2_4R```````````I("((`````````9 at A```@``!`!@````J0
-M4GWB<*P2,3F#NIJI?*[W'C08>R(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``VI]2=3D2]EK$)0)@PR!&7J2/I`JQS<]HP_4+'IG^0I3$6F
-MQBR#$OTP!B3=3DQR+;IP1K^/(R,JDJI)&R at 73.T-?MTEM%]4S!1+T=3DK\.B3%B3
-M\7ZO"+"(T4N_\2Z5"D"L_QJY+B]-^3E2K8O.D at 3Z5MTGOE,7`;;,0T'_`R7K
-ML+=3DJ>LHI```D68((PQ((`T`#/.O-=3DCX at .^_;?U1Z57A4=3D_]92OX+=3DW<I```<
-M``!`!%H4]VL-ET4--I:A9^BUJ>/:I6.T````'```0`5F&3*C%UL^@W^T-0'G
-ME7QE at P(K^E$3MT8X8 at T`4`$``%`!```"````10`!3(+>``!`$0``P*@!`<"H
-M`0(!]`'T`3@''61<;YA*2_4R3V-IN&\0-+\A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``.R(Q<P7C`@Y\Z'^[1C2L,3H. at 9RJ0,9E<8(5W+72_K"G]2<)I at TM>$1
-M1$!A,LK2%P+J&7=3D))AV?W*X5NF5>GK^RR-,:&^L8-2^Y^.+Z+=3D$HW*LM:^^T
-MFIGP#H6J3QFB,Z.G7FH=3DJ;H98*_JU`&^/=3DM1`0F_#?7OL!5.5/B-RW`.*0``
-M)+,C>J>(!FBG.7/N[L6OH'`Q;E80J!;G<V-_?[HZ;99X*0``'```0`0LJQK_
-MA#8(&!$W1A"/;IK;&[-/$P```!P``$`%P*8HP$8O"P0I-$WK^HSVF<EY02M1
-M$[=3D&X(X-``P!```,`0```@```$4``0B"WP``0!$``,"H`0'`J`$"`?0!]`#T
-M!]ED7&^82DOU,D]C:;AO$#2_+B`C"`````$```#L(P``T/<,#EAM^-GXOW8%
-M9/<2S3F$48S#"UUZ"-ZE[,1J<_)3`+CQ>^KJ5YG`PN\Y*M)S]@2#U,?@DAD[
-M]E7X;*?]_['MO#]LK;+?=3D#1VTBTB$*!RM(!4AQS>`^1.G<!Z%!6^%B=3DGIT1W
-M]1X:1P>#F3BD<7$J+L4G8L\4M[%.6N[+<:UY4YC)],OL+W4P at H^>YMGBJ>+M
-M&>3J^XCF'<BT"NE,\PY&2'G]YL-#!FR)?I.-^\ALA&^$6_>.F'PW#GBTFZ\$
-MNOG*Y@[>X-EAG/WTEU$3MT8MJ`T`O````+P````"````10``N(+@``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B61<;YA*2_4R3V-IN&\0-+\N(",@`````0```)PD
-M``"`:*GX6SG27[T/!UG!3HB+3>6M?+V7),B'(7 at AKRZJ4\6FE#1DC.J'849D
-M6`=3D<>;NL8NI41(3Z3-U%RP;[OG6Y`DJ_\'+ROE%ML>#97_V\;"`KG7X56`_G
-M>Z^31R)7TES'&.#FA[];%L^*6Q2DNP6FP11:I"7H[*1C:M[2X%$3MT86QPT`
-M'`$``!P!```"````10`!&(+A``!`$0``P*@!`<"H`0(!]`'T`00'Z61<;YA*
-M2_4R3V-IN&\0-+\N("0(`````@```/PA``#@5;D4;RP^BMCDPZXJ/NW5RI`K
-M/W[6,_ at SB,?:OHI034;X-!Y*37UV/ZE?Q at 5]@`J^C6*[W7I/VY<QMP+\5$8N
-MR;OM.$(G88.\XU5>.0MN at Z?]SK0$60O5M)H`4`_77(<$;/W&$[H9<*7LK'Y;
-MG/\5S3V2208R:_2`>B"4895MKY-V?+D&7W?[&=3DTV.]]&$H2U7;^=3DTH(8*A3Q
-M<_\I%=3D09$F51]U_**2W:H8!BE>>GF.23:R*OJ#1\5M`7-/^@K#C&AA]?6`$9
-MK763Y]2?1?GE&C'.\Z>ZS5^/+OCX0E$3MT9FT at T`_````/P````"````10``
-M^(+B``!`$0``P*@!`<"H`0(!]`'T`.0&R61<;YA*2_4R3V-IN&\0-+\N("0(
-M`````P```-PA``#`,]P=3D=3DR6Q)X<;^9];4,J%DKLQMF2#W/8&SJSHC"L;<M_%
-M/1HN^F9D)[5PQ-*+*V/I,[*J\PCH]?]FWAKI@\ATFOJ_3 at 0%A/'"^OUP]X2P
-MG`QN at +N>&LE\-+XB+.!Q^`L$G?/N@'?"1`:("5:>;<QHQ4W&!EGM16OK4:W,
-M^<$E]'MV/VB@;I6;$&+(%NJ%NV<\44%68FK?-HO4M2M)SMAD"*-WV:`IQ[<P
-M9:Z]'K-<((G?_P6EKXK#,H.EF^51$[=3D&PMT-`&P```!L`````@```$4``&B"
-MXP``0!$``,"H`0'`J`$"`?0!]`!4!CED7&^82DOU,D]C:;AO$#2_+B`D(```
-M``(```!,*0``,&\58#.M#MM"IH<!5^$=3D]BTWV*H#^@N)Z4 at F["O8D8/R+2IO
-MZ+#54EC^0KFP41.W1H_X#0!L````;`````(```!%``!H at N0``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y9%QOF$I+]3)/8VFX;Q`TORX@)"`````#````3"D``#`D
-M8ZLN$WTV<R!7:/5RXI"DW7V3<'ZQ+`\LOF1XYVM6Z_178'U/8!(G@<_.$5$3
-MMT:?$PX`/`$``#P!```"````10`!.(+E``!`$0``P*@!`<"H`0(!]`'T`20'
-M"61<;YA*2_4R3V-IN&\0-+\N("0(````!````1PA``$`J>(GQ'`@4$%X_,[Q
-MZ%W'5"9`RZFXCEYLIW]#G3DH-%`?DH[655 at YB<<;\7GDHUUB<2C#/5>9@!0C
-M]?_J at 1R5,$"`6^%Y;IR.3\!)_ at 5"!/&OL5G%'D9,DARU>6SPZNCBB_KH)@@\
-M^*;>I$+ECP(@,4NRU<`#%[;+?QBJ9""M45#IS\3M68F+A]3`I5OQ3$@*U#/7
-MO1-,C]X:PZR_?=3DJDXVZM7=3D/\8%I4V"<7IL(2P^BSZ-J62C,R&"G@]-LT3'P)
-M2O*L!ON;)UP`\23=3DW>2Z?Z%&!G0`YM0I8&OC%WR0?/*<]]Y7'Y.WVQJ-PR2A
-M^O7?-GT'7BRDO4'$Z>NW41.W1ML>#@`<`0``'`$```(```!%``$8 at N8``$`1
-M``#`J`$!P*@!`@'T`?0!!`?I9%QOF$I+]3)/8VFX;Q`TORX@)`@````%````
-M_"$``."@SD3)8Y)8=3DX-O$I>N71DL^W5':KV`ZTZP^RK*8U.0`VJ""(96KNXL
-MSVNJKA%E)I,WZU)O_]$6R=3DM@/;\(Z0)RK`$?_'HR7R3 at D>VC'=3D_YWQ-98.!"
-M6;:Q4PW.#+JFMKNPG.3-Z<LAI_'S>/O.^]QHL$B>M42.CF:V[-/S8+2C%[.I
-M6>)=3D2$;^Y=3DV=3D(1!Y#-C4;GC,E1+91!4',RDZ<A0K&X&1;1`-"(YCF,[@Y9@,
-M!&"D>=3D>C)P4$&HE6_U^$!%#=3D&(&F%B[^R=3DMH-"=3DR/GS7,5C>V:N#$GP+Q at 4"
-M41.W1K,N#@#L````[`````(```!%``#H at N<``$`1``#`J`$!P*@!`@'T`?0`
-MU`:Y9%QOF$I+]3)/8VFX;Q`TORX@)"`````$````S"$``+#`1J$^VN/N*'A)
-M-%TSL8Q!3"RVVJ7J!4/ZC++,E^FQB/DL90^P76UE?L=3D9J0F('H_3&4CU^X47
-M#[17`-<]@D!5=3DZHW.75`HV^IQ`UX>MUI^S=3D6.E,JRW+W'B!4KWVQ#6OL3E3(
-M]&"-M<$`H846<VWS-(,*"J^_AZAE!U/Y>=3D&I0N478MI2M4,41I'30)F/\YOD
-M*GTL30XP,E7 at I:4*D.E&(WBZ6J(OE8-8DZ:<41.W1KQ1#@#L````[`````(`
-M``!%``#H at N@``$`1``#`J`$!P*@!`@'T`?0`U`:Y9%QOF$I+]3)/8VFX;Q`T
-MORX@)"`````%````S"$``+!IVCHU$@JJ*#17U1>2S0-]R-^_>,]W+Z=3DM``J\
-M<O<P`&V8V$I44TJ.O-IG(UNJ%JFP!J*;RG1/61K18WTGVG#Y at TQM@\+K!I^>
-M1&N1`29<US3VE.R#N\*N7CJ7*IS26HK!_YBM&0 at -K&B6"I8#@.23;/QE2G)[
-M!9GC>9B),>4(N9>5=3D6$*,N"-C]VFH7R5XW)Q_)$#;G,^F_#K#JM[Z:1G3?-4
-M2$\,`LK5?8!N41.W1G1O#@`\`0``/`$```(```!%``$X at ND``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)9%QOF$I+]3)/8VFX;Q`TORX@)`@````&```!'"$``0`&
-M.SVR<AQ+U[GTK]LGP@/*<KOHTMI:,+I_;NAC]9IPW(M+DP'E7\NR/-Y%A at T'
-M)%G1`I'E*PS(LA;@K1$/I%QRP?:IC>>M;T6;/X/<K+]R$=3DB9Y-^284L0MY8[
-MWWW]!205[#GV**DI!:,ZU?0K&7C*)1<\C9-ZDP"&+C0&TH*&F:VF$B<:;^?J
-M?7*_?%9:EOJ`;KZVOYQG=3D\,!!'`X(M!TM=3D**R`.9A\1/H05FTPT":8%`S7X5
-ML!A!>#*$7,W,8:6>`Y*E>3PMK`AM^<"E`46_]^@8UY/2*UZT50!:,[I+#':Y
-MT\61\P?#7NCF)487ZG6_EK9*I1E86>N;^@%1$[=3D&5GL.`!P!```<`0```@``
-M`$4``1B"Z@``0!$``,"H`0'`J`$"`?0!]`$$!^ED7&^82DOU,D]C:;AO$#2_
-M+B`D"`````<```#\(0``X"3;]%*S'U)K8RE23<T`>9#>I'30#BO1GUS>P0ZP
-M;J&C/@N)'.5QDD.SF at BY';$TQ%<,/4;6%21RU1M/_R#PY=3D"B_+EV9SO-),HU
-MR6Q".7BG,SI2%NPH33`OU]L3<"IH.$*<)%XN^H#_G`1J7+./E.N,U0_0\7T=3D
-MV'H[&.?J\'D:TIJ(0"$]G"5NNZ()#YE1R94H@!>UW[.`W%Q)NJ/<L)/(BG04
-MY(4\:%T&TRD(ZU4V^3<N#F%?IP_#EDQ5MK;"R(.D(9(OMA=3D)7. at D$0"GVL+U
-MGHV8BKW;2@;U=3D=3D-1$[=3D&TXH.`.P```#L`````@```$4``.B"ZP``0!$``,"H
-M`0'`J`$"`?0!]`#4!KED7&^82DOU,D]C:;AO$#2_+B`D(`````8```#,(0``
-ML!PRY74`]_B<:T`A.?5FNXVN2"X2'RUUGCS-,9"=3DF?J];QI0NT3F?6&=3DL>1&
-M^<QW/$E,EB%Y4PW\9$SC#$^SD;0JCO44];`8<8<9@'&9PERI'G at 8(9>!;(RL
-MJ7 at X2\2[I,/<G@[OH+Z%$@Q,X32J?"R\$_<<H6B;YY!1J)KF>A#/#H0M;]3`
-M?B*0I,O^_*Q]D*_]X>T$/SL;>M,S(VU)S,22 at M%O\F3WF1$,=3DFI1$[=3D&8:T.
-M`.P```#L`````@```$4``.B"[0``0!$``,"H`0'`J`$"`?0!]`#4!KED7&^8
-M2DOU,D]C:;AO$#2_+B`D(`````<```#,(0``L'>6+=3DZ/XHL"+H-09*KE3L_?
-M`=3DS>"T#)C[5TR;?D><2?<G)YR=3D^1<D@]45:M648PLG9'3 at XU8AGC/L-C:D:-
-M'MU1L9:`&RPXJ#`HYQ6]_J[`T:>AP&F@<".$VI6&7C$Q'=3D!0+>RIEM-LT#\*
-M\*90CSBFEQTQ&M>$>U!3?1$=3D2L/&`TL<M6^OLE at Z%9Z4B7G2<'=3D<C=3D&`+0\L
-M#I:^D_`-PV5H&>XL\@<:UGKM^M)1$[=3D&T=3D,.`(P!``",`0```@```$4``8B"
-M[@``0!$``,"H`0'`J`$"`?0!]`%T!UED7&^82DOU,D]C:;AO$#2_+B`D"```
-M``@```%L(0`!4#H#YV'BD+$":"L;74O.C04/<EP%R%(MI+-N3P#-[E$IT4.Z
-M"-(H*)7DZ2*4'/*X7Y=3DXE=3D+^N"V@,^?!RC;04/T>K^GF(\*H=3DX[>YWH[OBR.
-M10X##N7R8$QR/1=3D*[#H`U8H?D\&M5[@>Y!N.TI-ENP"V+\3X)>(#$UF:5\^F
-MQG*#?!-L#1=3D'ENE()WY0-^*&Y7*A5;7DO>O\5S3C%>DGRI>EW?1]9E5(O&H'
-M'<C8('(S#C>CK&J_!\?43C%(<)N*<\#"+2"-0/CWJ^>KMT0`V0YY$^442Y+L
-M00O-R60,`+UD:KR-^MA-(3%XQA-!;[O<V=3DAC&#@3>N<`UY``+=3D?,(%"N":3^
-MCBT/_AME&Z=3DB4EF?R^I7/!>CZT"^JF,<(.0:MD8UX`UY!RXH$*G.8$,O^!EW
-MD=3D2 at XABK6;?.W=3DW&>%J0OWZK3-/5)$74*3`W41.W1CX)#P!<`0``7`$```(`
-M``!%``%8 at N\``$`1``#`J`$!P*@!`@'T`?0!1`<I9%QOF$I+]3)/8VFX;Q`T
-MORX@)"`````(```!/"$``2!;H+=3D;OKO-&AHKVIN`?BD*&B9TV"TZ^J^^T8R[
-M9<"75O<9@(S=3DG8#T+5LR@#/THZ"&?"LSF1>S']E]RD'2.E*_$']Q]6=3D5[!Q1
-M=3D'U&_S)`KA0T=3D`>_\A`GE$YD/N7<JR55L34QI-(V1NFP6C_Z5KN>0:=3DRYN>(
-M=3D%YG5`S-3>.VUA:KW6`*W2S&/CEK#6%+!A2#%RSC-%\;P'3+?4><'NMPLCO4
-M+YN*TAR6X`=3D\UNMK$1/?#'_!*.,HL[T95*KM>B[:>F\W[W?/2?=3D3L+1ZH%\A
-M2T]^PD?>.)/A;'3SJ1<-D*N]Q'BA,%(MP)3U>W*10\PY;2-F,Y=3D])T!U_VX#
-M#U<P?YSL%+D?K[%`1V`1K<:,VB*)`\%A790U37)4&%$3MT;/,0\`?````'P`
-M```"````10``>(+P``!`$0``P*@!`<"H`0(!]`'T`&0&227ZG]KRFGF#,D++
-M"HMMDW,N("4(`````````%PJ``!`2I2A>]?OIAAAN(PP0#4;#.A at 0ID7]5!$
-MO/G7J"8`28BR?`%DPM@%J,L$KBH7F43>Z4_WB'"]WT:UY[(`41.W1D(_#P!L
-M````;`````(```!%``!H at O,``$`1``#`J`$!P*@!`@'T`?0`5`8Y)?J?VO*:
-M>8,R0LL*BVV3<RX@)2``````````3````#!.23MJG7]B241[Y<Z5Z$8@/.JW
-M8+AKF_=3D:^ULC<AE4?N?X(?KW4<-F4+0!7E(3MT;."P``;````&P````"````
-M10``:(+T``!`$0``P*@!`<"H`0(!]`'T`%0&.27ZG]KRFGF#,D++"HMMDW,N
-M("4(`````0```$PJ```PL%[,OQASGWCA>#+W98DB+ at W7J_VZ,1](7 at Q^'E1E
-M+*)#I9$UDK1M at 3HIV^12$[=3D&1!D``&P```!L`````@```$4``&B"]0``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CDE^I_:\IIY at S)"RPJ+;9-S+B`E(`````$```!,
-M````,(^R0Q6DN"^\!^#\QZ&W"1"-*W>`I^7<3))SK^[8]#03,+_4,6[.E4!)
-M:*CJ4A.W1C$7`0"8`0``F`$```(```!%``&4 at O8``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE1FR2NJ.5`FD``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,'``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``@`V;)@21V?C]26``Z.RD+5BI
-M\R#PV<ES>M5:H)(7PZ?1@`,40"+MYS66E$DY#I"EZQUQ3D$"7=3DLZ!('03N$+
-M.<VLH0-\,%S1?[SKBCS3^"U$+:QO'R at 6\\Q4ZW)750-_U-9.CHCPB;@+F]V?
-M!85R@"JDQ)#W(T6_$"[IQ'/UE`PI```D6OH_L5!&:9S(\PPQ=3DDLQ2>&NA-1E
-M(!))/6^Y\BA9\=3DDI```<``!`!&'C3Q>28F&V[]ST^L0VS;=3D3,(WV````'```
-M0`5\%2S2-4!.(*N?F#(1KVY"X-AKME(3MT8Q)P$`7````%P````"````10``
-M6(+W``!`$0``P*@!`<"H`0(!]`'T`$0&*49LDKJCE0)I```````````I("(@
-M`````````#P````@``!`!@````J8)2K-]9N#`9C4Y?ADZ0=3DQQ=3D(+FE(3MT;#
-M-@$`N`$``+@!```"````10`!M(+X``!`$0``P*@!`<"H`0(!]`'T`:`'A49L
-MDKJCE0)I```````````I("((`````````9 at A```@``!`!@````J8)2K-]9N#
-M`9C4Y?ADZ0=3DQQ=3D(+FB(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``@`V;)@21V?C]26``Z.RD+5BI\R#PV<ES>M5:H)(7PZ?1@`,40"+M
-MYS66E$DY#I"EZQUQ3D$"7=3DLZ!('03N$+.<VLH0-\,%S1?[SKBCS3^"U$+:QO
-M'R at 6\\Q4ZW)750-_U-9.CHCPB;@+F]V?!85R@"JDQ)#W(T6_$"[IQ'/UE`PI
-M```D6OH_L5!&:9S(\PPQ=3DDLQ2>&NA-1E(!))/6^Y\BA9\=3DDI```<``!`!&'C
-M3Q>28F&V[]ST^L0VS;=3D3,(WV````'```0`5\%2S2-4!.(*N?F#(1KVY"X-AK
-MME(3MT:D6P$`4`$``%`!```"````10`!3(+Y``!`$0``P*@!`<"H`0(!]`'T
-M`3@''49LDKJCE0)IAK@;?JI(\!8A("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``(YL
-M(P"<4AS\Z)43#5JYCV6#*BE2Q<'G9A\A]5<25ZLJ''I[7%C*FP*)-WZXY(N-
-MPX?&&J=3D2B_R(1C"^;-I7DYL"E","Q:SJ$G,PF>@8[%%BRE"*)\RT*KOU9*+K
-MAY]1"7!:_R'IKW[+N.[AK,G%,3H("1E5!MQ24`4?$@M8$S3R*0``)*L+`G+D
-MS^KP`U7YOR7P/*J)!8E]RQ#0DG=3D78N5:#$*G*0``'```0`37B])C^B6$&&/=3D
-MZM*UR5_E)_'Y(````!P``$`%2Y37@*?IN=3D2Q, at GY[C#M'%^Z4WE2$[=3D&V8@!
-M``P!```,`0```@```$4``0B"^@``0!$``,"H`0'`J`$"`?0!]`#T!]E&;)*Z
-MHY4":8:X&WZJ2/`6+B`C"`````$```#L(P``T*T'2$)8<ETQ5&>IB&]8ACLR
-MV%)MD]%Y'>!/X8E?PL-UG#5(`+K!A_\D,AVN;3%L4@#IKQ-2#8E,QZF^D>XB
-MJ0U?^<Q\_/'>@5AVN(@U=3D"MQ)YR[AV^&9^^SJ`2,V%*CX1TJ.-J*-MN_ZBV.
-MXWJO6EBY,;6T'+_Z.X^6076C(CVO?^@6O3^K<I)*C'3&)ND:-2$=3D&MCD_8U2
-M3WE at OQX)`GOK/_S#X9[:'*+\51-),WVSFG[=3DW#%A;^UMQ9^I%444/$,%":A+
-M&1#^>@N%`U(3MT;;H@$`O````+P````"````10``N(+[``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B49LDKJCE0)IAK@;?JI(\!8N(",@`````0```)PD``"`&(&!
-ML6(O[DKW]1#,J>+(MCLQ)HG)1T;3N988V/9N;4X!$6^1:*;<J=3D*A=3DP,(4%&,
-MC-!WH[;BV-K,S/)S7&VGTIH#+?[(E'JA42E*?<\%&X$?CMD."2;J09_5:?7R
-M'&G[D&[WV*:DK+J14[U8$^SJ^<B&.;E;9N`/N#Z(VU(3MT;>P0$`'`$``!P!
-M```"````10`!&(+\``!`$0``P*@!`<"H`0(!]`'T`00'Z49LDKJCE0)IAK@;
-M?JI(\!8N("0(`````@```/PA``#@=3D=3DU#A?86TPNJL6P!M!V,OOHD)K=3DB%<?"
-MUZBE]5EEG),N%0T=3DI*#L)3P!F[93T,N$]T=3DRM5#H7 at 8O//0%CE>28%CF5A);
-M.QIO4AQ^T.PU8![X;EFXFT?^8&#D!&S-6"CD`<Q'OG%X1\M/GK;,-M<%ES6M
-M1U6_N4 at 4*5'#4YIL^X\Y8Q&UHD.?0SG_)A_4B.;RHX4'5]7CQ=3DQW9I&P-<\P
-M'YT-66F8T.2`FN,-5:]1Y at 4^T/#0/!^4OZCM%_^"CJR;Z0X<ZOV:>KQ,1*.%
-M=3D-8]8))BG!%ZPS[3`40Q?%(3MT;\S`$`_````/P````"````10``^(+]``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R49LDKJCE0)IAK@;?JI(\!8N("0(`````P``
-M`-PA``#`"Y*4:EO at -=3D],7X$M[871Y)"SX#L[X<=3DR:GV,,/^F05+[3WY at +^AZ
-MVE'JW:*#DVAL2U=3DR`AI31[QQ<XQ]6H_E^"-WZ01FHR,LZG=3D(X8C/N69V`:BS
-M7YE=3D\VLK'K;8([GYFTY#TO=3D@#UZ!,NO%WK4B_)6TWQD4^L5QM=3DAQ$#.J>#84
-MHN$)5/1>`6C1,(+M//)<:BLB&M__6KS[!'T^)&JHC$"?CD6.7CR.:SNJSBOM
-M=3D.=3D+,&V!`O7:%F0\8:I2$[=3D&J=3D<!`&P```!L`````@```$4``&B"_@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CE&;)*ZHY4":8:X&WZJ2/`6+B`D(`````(```!,
-M*0``,,-6HOMRWS,'6O`/?!S=3DQTKOKI8-5S\)/,EKS"%Z80_G+EGBO69YALS:
-M*/C#4A.W1GSS`0!L````;`````(```!%``!H at O\``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y1FR2NJ.5`FF&N!M^JDCP%BX@)"`````#````3"D``#!B7ALNPP19
-M;YD!7KR_QMC4**U1=3D(-XJI2311:HP33V;,H!:?^^::*H"F'/S5(3MT:;#@(`
-M/`$``#P!```"````10`!.(,```!`$0``P*@!`<"H`0(!]`'T`20'"49LDKJC
-ME0)IAK@;?JI(\!8N("0(````!````1PA``$`W6P]0XVJ2MAU02#::D93B\-O
-M8&0*<;!S?-,;BI;ZT6K2]JGUT.D(*E:83`#/3^<[)>/V43O"`9K/&,Q0Q2:^
-MB/;W]PO.Z-9E8LQMSICSV-K=3D-?/LK[P8EFT$26+_26U1Z:=3D at KKWA2FF7O7B.
-M"B5P at T!Q4?3R9M$'*3:)-M_2T8_%1:[#51EE>_P\,>JCB=3D%500#XQ],^*7\`
-MP6-CX^C\"_GQ>L(\@`^X2[5Z-8?56"1/)+M6O!_A18]/)N-3:GDW0N0J\$W#
-M#@N?L2.SLA$HX\73A^$D5<*EKZF>V-5RQ,OJM_U6TT1$:.HWN932L<T#Z[2:
-MKQ`#5BVFB8>04A.W1D$:`@`<`0``'`$```(```!%``$8 at P$``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I1FR2NJ.5`FF&N!M^JDCP%BX@)`@````%````_"$``.`W
-M;:Y_*=3D=3D/KQGJ:;"TD(/Z\&)!G%]7I>0HW*?I]%N>5P93!\2QA\UU1CD`?8TO
-M##\(A`R-?0RU(/B'JR@%3=3D)1FS9?\DV(9D6J#X99%F-KT4CPT33T9^@IH)QD
-M-3A at EI.^BO+3<>]ZTU+P"RGI$KUM+MQ,;_'%W6/V+^3-][!TF-P";J1`F14B
-M9:+VT^SL[,K7)<F_\%]+-SGW`.6L#DD+R*^/#!SY_<^)]<:%&F((?8A*/#BW
-M0+"EY^7`^"Q#5L([C:2EBH/Q7(+6'71L'C[`VCRC\J*O8U12/WY?4A.W1G$J
-M`@#L````[`````(```!%``#H at P(``$`1``#`J`$!P*@!`@'T`?0`U`:Y1FR2
-MNJ.5`FF&N!M^JDCP%BX@)"`````$````S"$``+"BQ<(Z';&*AOI^FI[Q5?/4
-M=3DMO]M3#S9S1[9[0+>B)[T?YX68V#I7U`\MK9&-(4<E'KV>VF"?0+Z#-UR]"H
-MD"YQ%7=3DBO4S\/%A)945"-VLTLZFK<T$2\P'I;M\SG"\R'@\#83(J5.G'[/:=3D
-M+T0%6Q(CQM';E5IV12H$#+7RSTT@<E>(;.232NAS>C1R^,I#.VTMO/@\?P at Q
-M4TSXD<"5'\NBFD#-;D"QP%6$IG584A.W1LM,`@#L````[`````(```!%``#H
-M at P,``$`1``#`J`$!P*@!`@'T`?0`U`:Y1FR2NJ.5`FF&N!M^JDCP%BX@)"``
-M```%````S"$``+`(2&FS'\4!J5EDU$`J&9J#_&(<M^;GO/LH-Q?MI/`FYJUT
-MN at 8E(F7;GRR&M"\[ZY40H0-;AK(#60:PM!&F"(UWU#JSD9'V;3J/8\&_EF&(
-M,X6%RISM<#G0HZ1K?@O&]AY)K!F]Y*:]XO5IS^4OA0'.?(F67H2'U'U#C$/:
-MCNG"^2(M*/_<E#T;JG9KDT:DY0 at UE_=3DF)A9<$TD>I:\H<0=3D2B2A8*)IZ4*:F
-M0+\G4A.W1I5I`@`\`0``/`$```(```!%``$X at P0``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)1FR2NJ.5`FF&N!M^JDCP%BX@)`@````&```!'"$``0!F6A)+1/^)
-MWWDG:\&P"X<R0<H')W__F]:YD!:!*$,W7):$QD4O7A?`N\5I"$2),DJ0_ZDC
-MK3[%4UHCP*Z8TK40+'@27'R!M>_\GV(%IJU_0IX]8GB8HV^9,99!QC^=3D'7$-
-M9&@?Y.RDB3'<T(B.]B[3H4?VZTT*Z/Q[E\YI7*FB31CX_ER"'90]X)4U]>>Q
-M%RV5D16@!J6;"W_X3V%MTD)YT7FL6T+O;!2_+'J7[K&V#3_\PZ>Q<X5[]H;U
-MP+S4'UQQ%^U:+!\>LFKZ_QR]S&MEQ+?L at MAOE5&+#4VC3"T3!W-?/;5#!+\Y
-M`BS0(.>-6FP](>BA*JOTO!_Y%-]2$[=3D&"G4"`!P!```<`0```@```$4``1B#
-M!0``0!$``,"H`0'`J`$"`?0!]`$$!^E&;)*ZHY4":8:X&WZJ2/`6+B`D"```
-M``<```#\(0``X.F>=3DFU8?WWL]F^_'X"V$:F2'Q+>(@C8YJ&_:V"4)7GH!)GM
-MRF^(HKQKV.0Z0IT.`7B8L&QS3CWD(A-]H\G;;=3DK8>[WIE0:,WUD']-F<<CGO
-M2=3D].3EQYV.C+=3DQYC)=3D,X7^QL?M:%%2F%4(H?6\UXF(^V=3D<KBX0V at YT9.[=3D50
-M!EL*RA!:J07Q0%Y:)1JZK^7WJ[19T4?,`IT)/X?=3D<R at 5\`$D/+M):/!7_GVI
-M1ND8<?@J?`&MA']A.+NN)GE;'QI("J#;7=3D*FD>2!;<L3AX8/^5<Z^E8(#FG1
-M%R!RY,M2$[=3D&G84"`.P```#L`````@```$4``.B#!@``0!$``,"H`0'`J`$"
-M`?0!]`#4!KE&;)*ZHY4":8:X&WZJ2/`6+B`D(`````8```#,(0``L!W:-O[K
-M at W-@:`ZT@`5_&L=3D,#$`J</U?D$_`SR3R_$+Q0N!&:TQW#<D at +"AZL`^KG3B-
-M]#33FLVV7:>JY)^U[6E4+Z8&"<-Q-(MU]YPNB-)I17JA:42W7>.IIW]M.+U?
-M5!KCNL];9.+^&3\M at 9>3HVOQ/O_90?5'V;-#JD+\2%D$$I^06$QIC;?M";*(
-MS`Z$&[0U%/$63S"#S2K,N2XYXGU=3D]T>7_00 at P2;1S"!2$[=3D&@J@"`.P```#L
-M`````@```$4``.B#!P``0!$``,"H`0'`J`$"`?0!]`#4!KE&;)*ZHY4":8:X
-M&WZJ2/`6+B`D(`````<```#,(0``L!XLUP--NQ12.O2?UZ:JV)S]<N.UEK>>
-MBZ:5%3T;&9NEM'3U3?S[7MG&Q)50LN@([%"'QT)?6 at 1"=3D:T8_?_)H at .%^*1;
-M5>0W8`B\^&*/$C^<PS*W;W$DHDLTQ23BB&CWV9UB/?4/+?.JL3VERCH4')L4
-MOWA%9M3Q04'QXNZ;ZOA/8_`]:0-8>K%J9'J/]?`C$[`SMK?]^5I>N,#]O0J$
-M=3D_G/K+Z at L<%UP;X"2N92$[=3D&,,X"`(P!``",`0```@```$4``8B#"```0!$`
-M`,"H`0'`J`$"`?0!]`%T!UE&;)*ZHY4":8:X&WZJ2/`6+B`D"`````@```%L
-M(0`!4+//L>6-IA at 10HR):H<-UAU%C1QSVXVC7W:FX[4YZJ;D`YI\+R,?HY4)
-MH:WG?,=3D<4EI5=3D5=3D1C^8X;Z:$PE=3DSJ/K&+,^).:B6_HB38 at P&>-7`E]@@;41D
-MOZ*9R at EVGH*7G`$O:)@WZS+R!W9CD$=3D)$=3D,X%V\'CJR3MNIO2T&8;,"`<_<C
-M)'R%I^L#Q[XJ/5P,O8=3DB><YV(^=3DF>J!(K/U at M+YHF*'@Q&W6!]KZG+$]\9%8
-MT6U!J6?2K=3D7G6<_D\GWU*LZ*0F\7ZH?'"L5@<V35`_4,D'4V4=3D)"%P$8&^'^
-M<W6=3D^LZB?K%T?AV=3D>3P)#K;5.3[`2_N#+7.HKQ at D*CYL/N'V&'2_VNVK\/T6
-M3!+$ODOP3Y&5/9J5M$+1&PF`O67/U5HI+FZ^2_#2)<^D7B#59A-SY%-Q"!09
-MXZLUWR=3DJC-V\Q^<*ZA!YD)D"O(OG4A.W1F,#`P!<`0``7`$```(```!%``%8
-M at PD``$`1``#`J`$!P*@!`@'T`?0!1`<I1FR2NJ.5`FF&N!M^JDCP%BX@)"``
-M```(```!/"$``2#XS45.++6WR\1X+<+S)PP`Z at F#US3AR3`"J1F'*[2,TW:K
-M[$`(64XC;0HO_:G2S%<F'N11)JPS/%W^]&>N12`NS=3D=3DZY!1T<QW+23X@`#]_
-M/9%AT'&M`Q&BGT4[H\N2O6=3D!I8P"DP13DUK/M2Q13DQQ8E&QJ(-_`K+TL\X1
-MAP=3D,HGU<.+.U,`0.4K:Y[!U5A.\<:KPK(JT5]_]^FDEFF4;>&JZ35G>&GD?T
-MMZ(%D\O)@QJB\L-RE-3@&F<4NSI#&TV.<6AN'0V.#F363'51-C7;\:23<U\K
-M7FP3FB'*D]*8C at _VAI!E)B`WV;LZU_[URN/8?D^1?3ZXTJ,A*7 at -CZ(K&,N?
-M.?62'\"X#:KAK,0-`J?\DD!:(Q=3D<-\9LL%(3MT8Q*@,`?````'P````"````
-M10``>(,*``!`$0``P*@!`<"H`0(!]`'T`&0&2;T%EB]4\L<^=3DS?BI/#'$(,N
-M("4(`````````%PJ``!`B=3D`^P'&+U1"XHR7"%?\D2/$VO(AH(J8!9=3DZ!B(*Q
-MD-P_0S*I at W>[;M$=3D]JN$"!7+O+J,Q6P/K3LK'Y1N4A.W1L\U`P!L````;```
-M``(```!%``!H at PL``$`1``#`J`$!P*@!`@'T`?0`5`8YO066+U3RQSYW-^*D
-M\,<0 at RX@)2``````````3````#"[/[%)\Y+F8'O#DBN5"F<<<,B3(:(L6A.*
-M&,DB1)OXFD>-S[5C0T0?+MC7`%(3MT9U1`,`;````&P````"````10``:(,,
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.;T%EB]4\L<^=3DS?BI/#'$(,N("4(````
-M`0```$PJ```P0;;TX5>+H2:_X63=3D1OMETD1]Y8)'OUTVU)GE$$?*&93L7&";
-M$`YELEK\_XM2$[=3D&=3DE(#`&P```!L`````@```$4``&B##0``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CF]!98O5/+'/G<WXJ3PQQ"#+B`E(`````$```!,````,.C-
-M[L3O:/_XZ;Y?GY*>?*G>E_>G#6UEH\=3D^:YZ(A:Q;?*&-(*"V9+@(+S9F4A.W
-M1G1/!`"8`0``F`$```(```!%``&4 at PX``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MW18[AP=3D8\Z4``````````"$@(@@````````!>"(``'@```!T`0$`#`,(``P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``GD3^I_[<7 at O?=3D at X%+B?C]8GY"%TJL36D
-MP]VC)[`LTNMU6,)A%.IFS,<F.)4?E3T(>8/9%E#(`SB2J#!W(H2LLSCCV1/,
-MA=3D'`=3DT4&%-9W^:-;1<\?DQHD]VZ!4C1,^(D3=3D%^6.1HD.7\>^'Q"'>7.+/LG
-M%]NOFMC6@`YN2=3DD/"JTI```D at 26!_>3+Z!\`J#A^1QZ($=3D$$(]93(]IJLH,4
-MN=3D(G*2`I```<``!`!)$62KFR$>4XX_W*6\NVNN.OTJC7````'```0`5A>"7;
-MU"0NDN7(R)3+39,',\O3N%(3MT:>7 at 0`7````%P````"````10``6(,/``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*=3DT6.X<'6/.E```````````I("(@````````
-M`#P````@``!`!@````IK@>D00E&K5]Y&,NK?`;1"D*D)+%(3MT;M;00`N`$`
-M`+@!```"````10`!M(,0``!`$0``P*@!`<"H`0(!]`'T`:`'A=3DT6.X<'6/.E
-M```````````I("((`````````9 at A```@``!`!@````IK@>D00E&K5]Y&,NK?
-M`;1"D*D)+"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MGD3^I_[<7 at O?=3D at X%+B?C]8GY"%TJL36DP]VC)[`LTNMU6,)A%.IFS,<F.)4?
-ME3T(>8/9%E#(`SB2J#!W(H2LLSCCV1/,A=3D'`=3DT4&%-9W^:-;1<\?DQHD]VZ!
-M4C1,^(D3=3D%^6.1HD.7\>^'Q"'>7.+/LG%]NOFMC6@`YN2=3DD/"JTI```D at 26!
-M_>3+Z!\`J#A^1QZ($=3D$$(]93(]IJLH,4N=3D(G*2`I```<``!`!)$62KFR$>4X
-MX_W*6\NVNN.OTJC7````'```0`5A>"7;U"0NDN7(R)3+39,',\O3N%(3MT8F
-MD at 0`4`$``%`!```"````10`!3(,1``!`$0``P*@!`<"H`0(!]`'T`3@''=3DT6
-M.X<'6/.E'J5/>YE`Q_$A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``)?T2S'ZDLJ@
-M^ZDU_XG5V-V:$]">#XVSHJE&<AVS<#GG[Q(%5^D0MTJ9/X[I#^%5:X*J.%M.
-MGK^-&S,?,25Z:AXW)_01_YPD57DGD[/#&'6!Z:[!L!C%0S";-"-!_@\9?8O_
-MZ8D10H"0,B**+K5]QL4U.:M`"]\WZFZ2#H!C"=3D at 7*0``).KD&MP&9)J^/@/9
-M71%1)5IBL(9[6?>T`K`OR_J7.P;I*0``'```0`3)0J*:OICA#Q!WV^J>^P<9
-MOW;$?P```!P``$`%3KJG[>Q&_+C4'_UQ31.`9/YF=3DO12$[=3D&-[\$``P!```,
-M`0```@```$4``0B#$@``0!$``,"H`0'`J`$"`?0!]`#T!]G=3D%CN'!UCSI1ZE
-M3WN90,?Q+B`C"`````$```#L(P``T&JXM at _O)QU-S)K=3D$89??.0&<W7!N00C
-M?.WL-,D&R1#'`3M`IPZL10#5M*:[:ZH6'&'(F]&%P<3Z>`U,PN.OI,Y\'2[$
-M(Y!_75H+S7FJ4I2EC=3DNK9<S0?4P`ER/=3D.I_-&7>SYVYF$JQ`RTUEYYV=3D!Z!3
-MT]$I??HU115*K1X;3[%1'%DIS>5A\3R4M(83__EC965R><!J'#F][(2R\V\;
-MPU1H!(%Z?[!=3D,(+0'FCNOGL4B22T3^JE)!7T(5V^H'D_UW776'[%>.,80YM:
-MO%(3MT;HV`0`O````+P````"````10``N(,3``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B=3DT6.X<'6/.E'J5/>YE`Q_$N(",@`````0```)PD``"`#/(EGS4O_![_
-M?4.\(><NJP.G4M%0[6 at 1QS/$.U"2ET&)GCVGK=3DF#WGF6#^:[Y0X,74_<1YL7
-M2\[Q#A_['^Y%(0*,&$:@I]?'%0Y+;5@>7).2CRN1F##I-19V=3D75"N$`O?[OX
-MY=3D$M3'[&).'CP1(U*D@[9!0#!R-\UQ.C_U(3MT;2]P0`'`$``!P!```"````
-M10`!&(,4``!`$0``P*@!`<"H`0(!]`'T`00'Z=3DT6.X<'6/.E'J5/>YE`Q_$N
-M("0(`````@```/PA``#@YS+OUHM!A9Z'?S at OZ^II.<7@]9-%UQ.TJ,TP_?<9
-M*V&A%UMU\_Z`X69 at 32[1 at N5*<(CY2;)FZ%JV`L`P]+E0#9FJL373Z+9FJLMC
-M%>$[[5,"F"'1VJIV8[HS$$9-3GUDJ.!6*CBMKIJERU5#PA%D"IL>;NQ<YL"B
-MJ'V^:=3D:(ELEM$5^*IZSXJRBW7(\;W5NY1FZ_L=3D16D=3D:(7QPUE=3DE/L?+:I*TX
-M4+$1+/5NT"@C-B0Y_8S(&T3(O[Z5:<&%SDJ at -_*DX7FQU-1:[^^GFDT"X\KO
-MQ:E6MZ@^%P<.PU(3MT;T`@4`_````/P````"````10``^(,5``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R=3DT6.X<'6/.E'J5/>YE`Q_$N("0(`````P```-PA``#`
-MQ_SU, at _-S84M]Y68+92H8?Y:2:#"*MMLKX86AZ$$=3DUY4%[/K76F`E@>WW/>4
-MNAORV%R4\JC-,&A!L'W]?.+>*T4H'7Y]J$]WYD!,"LJZ_CR`?G$1ED?J],/.
-M)W%(:=3DB?SQ`>^]*;3W1*!]C$UF/KP*3>?9MJQ8I$)E%Y3Z2%`:^HL95607Z;
-M=3D^ICR_.(J at S)+_=3D-Y84%OV_`J'$@[;L]]2>\6XT'U]SN(@R<#+8%L_!,TE<=3D
-M@[I+Q`H(IVQ2$[=3D&7`X%`&P```!L`````@```$4``&B#%@``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CG=3D%CN'!UCSI1ZE3WN90,?Q+B`D(`````(```!,*0``,"BP
-MZN1TQ0*[Z8]4J0!=3D$QQU?D@>ZY&6*$4L$(ML64.07BP>>XA=3D@)(_ISS]4A.W
-M1L8I!0!L````;`````(```!%``!H at Q<``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MW18[AP=3D8\Z4>I4][F4#'\2X@)"`````#````3"D``##I13R&S\L6Y.J>5(Q(
-MJ5]E[I..1MO5UE%K)64F3TM?*BV-E/>#7QV255^J>%(3MT:*1`4`/`$``#P!
-M```"````10`!.(,8``!`$0``P*@!`<"H`0(!]`'T`20'"=3DT6.X<'6/.E'J5/
-M>YE`Q_$N("0(````!````1PA``$`TR1-&:>H#92411_]F_OO;9AFCVY0 at X5S
-M(VQP#0+AF]?=3D03-_18*5Q0IW'S9MB?EN,0O-3<)-CN\SUAVPDM,`NVMXP;DN
-M5`;KW`V%P1O&XPAO!3F6[_408>$?;!Y7JX%&#-B*A.0X?LPS.6G<$AHX$/R)
-MD,I,+U%O,6*+,B`GWR>M;KKRUMJ&AAD+)$\K!RJ?U8=3DAW)&K"AC_ at D3V>F[Y
-ML$04<'*,U_)X2)+\,"9];K*OH)%9'"F[85.\I#O_KH3YK1GJV[B/8X'%ZX"V
-M@[X;WZ0130WICB/V at -,^).QQ^&A4R^:4@%7X,BAG!3CH/M29'4<KULFK&A^H
-M%&-:4A.W1ME0!0`<`0``'`$```(```!%``$8 at QD``$`1``#`J`$!P*@!`@'T
-M`?0!!`?IW18[AP=3D8\Z4>I4][F4#'\2X@)`@````%````_"$``.")"QWB-#N+
-MKHD>S+YAB-\LB_8Y)1KMTZZ_U26K@<^TY>2DR;90<3VRBSF#]TL<,O6&XS#8
-M[:39`"ADW?JD#*90*%+1V@'.;A9I<&WU-IYK5$ML+G"_^W"I_`1)]00G68:?
-MDZ-N+$F2,,62MD+;;*GY25Z[B,S^>K9,ENM at AIFSF..DV=3D5X*O.H3YR!9%8!
-M,WSF1Q/FEWWP<P at G(!'F.XSA$9[?%XCI=3D89N]':K]C_A at 7Z<PM#%61+K7;5B
-M at 4/4X3FEQ/W$QKISX)+;65AR\1ID$NGH#B($GX\\T!OK4A.W1D1@!0#L````
-M[`````(```!%``#H at QH``$`1``#`J`$!P*@!`@'T`?0`U`:YW18[AP=3D8\Z4>
-MI4][F4#'\2X@)"`````$````S"$``+`A4C5=3D]('/?-SWM*XX>#)J20[*](M,
-MC^&4\/TO=3D1 at 9B$;$.AXQ?1"%]QZH%ME9_Q.J'.J,&MBN`@]JK!:WPX9'1QRJ
-MM"2:UFY^A#K7=3D05M].?":^%N]P/$4_ at +?R53QY,32#2=3D2PQ7^#Y<JX.:OH/2
-M8SJ/-)*:_;JEL;M8EYKL>M$,.8^_0GX4LI@>LOG9!YQIW@#"S(V)&BDOZLD*
-M%J at RRFF_*.M5?H,`00$/4A.W1JB!!0#L````[`````(```!%``#H at QL``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YW18[AP=3D8\Z4>I4][F4#'\2X@)"`````%````
-MS"$``+!EQB;>$O=3D<JV@^"QI=3DJ#:1,E3;5XA.S,%8VI*9T99I6BCR\'$*F at V-
-M\*U"4Y.\Z?\IQ+$8/!ABU;-660OI_)CFT1-8.O4J9$$A4(B/G!;7Z8AP*@:W
-MGI.S%[(9KG#90-SX%,&,00D3>:T<G-E[=3D!50<47.95@\^AE`=3DAG])8)?0ZGY
-MY)(S<%.#"5X/Z3G_+ at 1C#&Y.$&.ZU7RP>0;@R0]D(6H8%0%^5B)RS8`-4A.W
-M1AZ?!0`\`0``/`$```(```!%``$X at QP``$`1``#`J`$!P*@!`@'T`?0!)`<)
-MW18[AP=3D8\Z4>I4][F4#'\2X@)`@````&```!'"$``0"<_BIBODFS^/@@2AN\
-M("FT,CY,9T$P:K\,8&KIDM<7=3DY(3.I"VCP"7?X%8-A1(]?U5Q93 at .8[W>EX$
-MKF"*&!MM2#\R#].B%V\]PK"!7?9$VD8R<_?@S,\P7_^18ZJ(BW>^3P$`12[T
-MIC;OQG;/M%A5,F;82#\.Z+OB?%NFL'L&U#YFM2M8+V-?/[^JYE86`N,,OKZJ
-M`V!%A6["I0D7=3DZ:ZA;K23G]Z(Y*[$<"(,B,]KB5LGX>>CR*F])LL4M.DF/=3DA
-MH'7VDX0J3^NL7B011S2?>$-L"@LB-ZF/@=3DPUZ`D,=3D#P71DD%0"7`P/[[:;\>
-M7$)TNWR)$;(7DL#*UFM2$[=3D&/*L%`!P!```<`0```@```$4``1B#'0``0!$`
-M`,"H`0'`J`$"`?0!]`$$!^G=3D%CN'!UCSI1ZE3WN90,?Q+B`D"`````<```#\
-M(0``X,?U<XFT"1Z>$JP[S)C)XRHPBE0V3H0C'00&[KM1BC'1C9[7!"S37V8]
-MCA0J^"#>4$TJ1]\*'$BN9Q+KQ*WR(&$TB\'?ZD/Y>TL9W6'^BI'0LWSQV_::
-M#@F`09"DOPND)?2C!+=3D6 at T+8S6!BD+(-$K'8C`T2?\8#FR(QM,N=3D.HZRU6*-
-M9@?-,-M]06%<>'12*H[06FL+Z*]`NULJ&`)JO,_;.$WUVEM<,8<=3DYQWA6`5R
-M72:MZ^TN(">&BKKY'QJH]+,<FC`;E>_BF;D2ZYQNO+TO".L*-7*U$N`&A852
-M$[=3D&Q;P%`.P```#L`````@```$4``.B#(```0!$``,"H`0'`J`$"`?0!]`#4
-M!KG=3D%CN'!UCSI1ZE3WN90,?Q+B`D(`````8```#,(0``L!2$)W$7SH%8X0#]
-MQ*C at O)[KC[;$]Z:QB0P+./(A\$#?`R[SBLF2S;QN8?11KLP7X$IBJ'AW^,7*
-M.D86;0.2_"Q@!$P)_>LB:C,*O-U9:S'Q0IN3_?5!#W34.&E*)XY at 2XM$7^T"
-MVCK)ZD4`,NGC,Z,*,O;0$:OFF!I%UP>MLS"_[K0+VG^!]GO+(..I<.&J'E;/
-M3W)MUCQ&2,VF#?%(IF[3>/C%18+7),D8^"M2$[=3D&+>`%`.P```#L`````@``
-M`$4``.B#(0``0!$``,"H`0'`J`$"`?0!]`#4!KG=3D%CN'!UCSI1ZE3WN90,?Q
-M+B`D(`````<```#,(0``L/[F87W9&R>LSCQN2T!(_HF"%T'+D"L28BP_7I&3
-M7`@BB#@H5N3^8_PK2%/G\M#%@4=3D!^L\6_E>A!F*-O6HX?*2[>`/4+#(\E;O*
-M=3D$61$`X$@').VVT)0A3&+/TNFL#:$,CO\ZFH[)M^HE^L76^=3DEJ at C.C`\6=3DZQ
-MLQQD>[2/1":F4_<U!/4BLU-PH"Q^AEIWM$GU1>#(K)%XN`K"2]I'*4%=3DEVD"
-MX:'@Z<X>LO92$[=3D&\@\&`(P!``",`0```@```$4``8B#4P``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UG=3D%CN'!UCSI1ZE3WN90,?Q+B`D"`````@```%L(0`!4$C'
-MR_7&;/>W`*QS#AH,D\VB>QY-K_1#%O<>MV?`F?&2#GU';_[D0J5Y3(E,/%<V
-M(($OX3?P@',H'O&YZE+!O_]20YRU$20?,$^-CP4F>B;I7JD60//"DGM4(C#8
-M8Z90-&TR?<<R?NE'S^H!MX#M+>-W$U*,]:DC04/7WU6$$;H'1K&&JOA4%T7&
-M7'DH/\=3DXXM`1U%Q-DC?47[6*4(Y??73R:6%E?3=3D&*K8^"@*N5B)>SOD>DGA;
-M8=3DSWSC@\T7K10<F($C^[YNWH5/@;0E+E/N8F\(-STMGAGTN"(EGE6TY?(GN7
-M^5QDM8%=3D".<AB'L?=3DMW-B[.F+/I7";(:7[N-BR-W=3D:AG;1@#RM?YS0'QD!<#
-M6:68=3DB9J0A,W7^U at 9RW)0%$D.K7 at KC`]E(62%IV)0HYM;,Q*1H6,/D3#9,I(
-M+94O!`,A"RC[B7R0ZN*34A.W1@!P!@!<`0``7`$```(```!%``%8 at W<``$`1
-M``#`J`$!P*@!`@'T`?0!1`<IW18[AP=3D8\Z4>I4][F4#'\2X@)"`````(```!
-M/"$``2#YCC4.+2<!:(=3D'BK.-K+)`/785%&@8EX at MH_DY0N,PLF!F(2F<0MXR
-M6?0-&VSXE;0=3DR,NCO;R4L:K]3V*;K9BMGPG2I+W9+?/??;FPP9L3&LRBD""3
-M>@TAN<K"Q<A&_ at .8VAEQD:C*M`J0<8JO?Z?)F7'1H0^W at A+;$']C1:ZI9\>(
-MAU:P`\2D5;=3D=3D,$]7_6Y2Y/O)[VSGYHO,G7L1N8I:4V+7\A%PQBAQX/C4#&SW
-MWH'"59\-T;$*NH%3<M9;7",9Q2O&AN\'Y1V*!#Y8T'7\Q at NH4;7$A;J/^S;J
-M$Z]'HSE,(=3D8I#9*.1P232V*3?9\'0S&1IV"[BJF)I5A8S").9FB9VK+4#T)(
-MM at 15S[C.P)HY:TZKI($QBE([(E(3MT8JN at 8`?````'P````"````10``>(.^
-M``!`$0``P*@!`<"H`0(!]`'T`&0&20G!DQQP\S8_>K%`Y$\P&%@N("4(````
-M`````%PJ``!`A"$V.JD>B'VGGBI!B\YCK$2>+H'0%=3DGKC%*9L6+I:C@,JB!3
-M&R_-^H.HP%V8)%MB0Q@[M$M6(8L=3DAW'F4A.W1KS*!@!L````;`````(```!%
-M``!H@[\``$`1``#`J`$!P*@!`@'T`?0`5`8Y"<&3''#S-C]ZL4#D3S`86"X@
-M)2``````````3````##2T"=3D1BC9QE10S at 3A>%X3;WG<M`@678)\%4P!RZ*%-
-M)SV+1<<DCB1E>T_SD%(3MT8PX at 8`;````&P````"````10``:(/+``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.0G!DQQP\S8_>K%`Y$\P&%@N("4(`````0```$PJ
-M```PB78WYN<>*Y>+-,YUCC8WVS_$FU2I3:$4I[_?+]I?,+UBSJTU>G50>W-%
-MMZ]2$[=3D&908'`&P```!L`````@```$4``&B$$P``0!$``,"H`0'`J`$"`?0!
-M]`!4!CD)P9,<</,V/WJQ0.1/,!A8+B`E(`````$```!,````,!EV@!D["=3D![
-M'25O`:HY_85>!X?Y=3D.(.HB?R_8S-:H1.B=3DI,_'/VW\=3DHV>YY4A.W1K0E"`"8
-M`0``F`$```(```!%``&4A$$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE;#4V5*QD
-ML50``````````"$@(@@````````!>"(``'@```!T`0$`#`,)``P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``BB5$W#OQ1MW1$*?3A:*AE/%`-]O+Z$T7A9)0=3D!U[
-MA5@@>[U!$TZGH%KQL.=3D3AD`D"@J(X!=3D:2ZL9GJ7]U0O#V]N5I[TDYC**D&"?
-M[7,@">.L.5BD:X,- at T?@-;0OYY7)25LG_TF^>X=3D0%UPMOX09YFQB)O5(,.AI
-M["+0NM7U>S(I```DU/<F*PZP"R"V/OKS+UKEC0AL*3:)\+NP;)/:O#]-"/4I
-M```<``!`!'JK3Y^;$,'F^&OZKA0VX'!+$ZEO````'```0`46G*N&-;V#1-)/
-MX-$2 at SR0O3BY4U(3MT;*-0@`7````%P````"````10``6(1"``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*6PU-E2L9+%4```````````I("(@`````````#P````@
-M``!`!@````ID"C"M?_7NL+>=3D1-F.%1QACR,7HU(3MT9,1@@`N`$``+@!```"
-M````10`!M(1#``!`$0``P*@!`<"H`0(!]`'T`:`'A6PU-E2L9+%4````````
-M```I("((`````````9 at A```@``!`!@````ID"C"M?_7NL+>=3D1-F.%1QACR,7
-MHR(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``BB5$W#OQ
-M1MW1$*?3A:*AE/%`-]O+Z$T7A9)0=3D!U[A5@@>[U!$TZGH%KQL.=3D3AD`D"@J(
-MX!=3D:2ZL9GJ7]U0O#V]N5I[TDYC**D&"?[7,@">.L.5BD:X,- at T?@-;0OYY7)
-M25LG_TF^>X=3D0%UPMOX09YFQB)O5(,.AI["+0NM7U>S(I```DU/<F*PZP"R"V
-M/OKS+UKEC0AL*3:)\+NP;)/:O#]-"/4I```<``!`!'JK3Y^;$,'F^&OZKA0V
-MX'!+$ZEO````'```0`46G*N&-;V#1-)/X-$2 at SR0O3BY4U(3MT9&:P@`4`$`
-M`%`!```"````10`!3(1$``!`$0``P*@!`<"H`0(!]`'T`3@''6PU-E2L9+%4
-MAWO%A!35>>,A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``(FU193STV__T=3D]N+!X7
-MB,<:M.J at W_FG(#3N@``FTSS_&I)I/XCBC$.^/CC;OVCM4*A(TKE,HLI!1_&C
-MJUP)FZH7;.T at I4W:]ZS&P#4$PY<-S&AQI';N,6JW#&&>R at W!U!06AZ^3J*%1
-MZ\B4^5*`!LG:0+7A:9P[CLTOH)C&20J"*0``),[#;.\)LZQ,SL,H(QI-X![_
-MV`.%*R%HXLB0F=3D.3S0L!*0``'```0`03F5[_Z86:=3D5VXRPH3`V2MWK]1I@``
-M`!P``$`%#K];:J=3D]508G/RD;,&H4CG2DZ,U2$[=3D&>ID(``P!```,`0```@``
-M`$4``0B$10``0!$``,"H`0'`J`$"`?0!]`#T!]EL-394K&2Q5(=3D[Q804U7GC
-M+B`C"`````$```#L(P``T"EGQ-8>(>G(I>#`5GJC5YFC-=3D'0AKRD515QEQ*\
-MTFZ+`$!R,S$3HBAMD8'0E;BQ#=3DNV,(9'R%/]8[5<5[<_#1($?0],62S)5-:U
-MFPAOPNX^1">HRBN;B*2B"0XPXE6[C_\(:@ETDO3O+\8[K_--IOU4J9B\VS8-
-M^[)G$SMCN;B\!OY`*IGP&K2?"@C0AO7 at EO%X\1FKK$Q&/\Y=3D?K&6QT;$\78V
-M)9IBF[&Y9-@$N&K^V`F?MV.3IHBKR%N8(\%M;KF-ZV[ZX&<B/;"M&5(3MT:"
-ML@@`O````+P````"````10``N(1&``!`$0``P*@!`<"H`0(!]`'T`*0&B6PU
-M-E2L9+%4AWO%A!35>>,N(",@`````0```)PD``"`\J8J&I(=3D-_3(/=3D1VJ$X@
-M[`59.<WX*V<N,%D0=3D8]S>`D770NBW]I]EA"'\DSFN]P'=3D8:YKJ<'XFM2XV>`
-MU-;L>KD^YRSU55$B5UAZO-"$D%Y2OEI"82/U'[6M4V7S,VV]X8GZ5*=3D;*K:8
-MYWPT8HKDH,#QE0U)A)P*(;=3DZ)U(3MT;@T0@`'`$``!P!```"````10`!&(1'
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z6PU-E2L9+%4AWO%A!35>>,N("0(````
-M`@```/PA``#@`!<:7^DN!\&3!+1N;]:1M&I)-DZ15L9S7?PH_0<"A7MFW[<]
-M*F8%#X;=3D6(H+)>+ at -S<$S%(/'F.3U#5V?F5(0`Z\,^YN&OY\(8RV3GIQ;"50
-MM@]9?7B3,(Q_',]GK*>+%LDI[7OTH_ON-:^,IGM)U:]LJ<1JE_^W"D9*9*)!
-M93*/<&E%2-'-5Q*ZZ?OQHTOO;*[_FXW1S$"1X8C8(Z:_*>F%0Y5PW;3W5-ZT
-M^;`9,:P6'8[L<*2:0OK2]5Y;H!U">P6C:RSNM[]MP->*"C[#6ZFAZL''#8"7
-M$*,@]5(3MT8<W0@`_````/P````"````10``^(1(``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R6PU-E2L9+%4AWO%A!35>>,N("0(`````P```-PA``#`3.G0;KQ?
-M2DJUT^C.Q%F at N^*]5/I#ZJ*`C,OINDE\Q-R_13F[<72B;@_X4**S-7'`"6=3DI
-M^,"(B'7^/I5\!QV]NGQ?HQV^+186BB*:U]USL\S0SS<,?)QFJA4:3"",N0%\
-M(V,.>*3IR3@#0J.1RRQ&SC9#I>Q*`$Q:>8@@IJ`,)[@FS&3DV(OYQ)4T:KEC
-MCP''J at 2[P`1"0T^@.KW9KVOF3YET_++=3D`KY\I8M$%U91L1K%3Q=3DZ$$S(JZW.
-M)%U2$[=3D&[N<(`&P```!L`````@```$4``&B$20``0!$``,"H`0'`J`$"`?0!
-M]`!4!CEL-394K&2Q5(=3D[Q804U7GC+B`D(`````(```!,*0``,(,I_P1$.6-A
-M8U9-*HU)^4^AN.;C4O`!_[(X/P1NDY=3D15/G?*70=3DVZ?;Y7WU4A.W1KP#"0!L
-M````;`````(```!%``!HA$H``$`1``#`J`$!P*@!`@'T`?0`5`8Y;#4V5*QD
-ML52'>\6$%-5YXRX@)"`````#````3"D``#"GLSH^T;C0J407CYO"$65Y-(MT
-MJ"67G?]S712[F2N#EFT(Q6E@#N]A<G$U\U(3MT8+(`D`/`$``#P!```"````
-M10`!.(1+``!`$0``P*@!`<"H`0(!]`'T`20'"6PU-E2L9+%4AWO%A!35>>,N
-M("0(````!````1PA``$`6%09P)(#\],9NKO[P!D/I at 1&;FV8`H3.3M*WO<2A
-M4^H;*%?3>?S1T9$X`+.`/`VC+C6L]UK>73X!W=3D!&>Y/IX2W*N+!ZC5NP\BSO
-M9HOKI#UQ:_0O$0JW+AKU7+Y0S(GE+3/R:<HHP.5M3V0_PS\2)U9M_9KZOLI\
-M9+Y6PHN_R"9+^JL@,WUM]X=3D;E:_<G%B2^DF41L%(.$>(],1:(!#W>]>;.>X9
-M>^F;)HTY*9=3DY#7C$-Y at A=3DA-??//$2?\S&8;/,+FE\@ZE`?`KLE\:;<[QP3Q=3D
-MA.7<L?L at ZK,D\&PSF7W*3$X6W3A),<F*YQ$W@!^1L*F#.+.QYI,A5T)-4A.W
-M1EHK"0`<`0``'`$```(```!%``$8A$P``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M;#4V5*QDL52'>\6$%-5YXRX@)`@````%````_"$``.`=3D,J)/MH at UK(,]CC0C
-M&->3IWP!'@^""OT(PT_6AB'XE<;=3DGHDSP*DV/X#[2A3E,"-'#_X[X`8W<\%7
-MDC-W?6IZ$00<`HT7ZD]PNU(:JV4XL`IC]4&32)!4<7PEG`Y67V$QWL%FGW-%
-M_&_Z%4(&9M6+-!8E'KSI$=3D_9O95MQ[3X+LO6W=3DD+L07[CS=3D6:43]RI/*S-??
-MYRE8G;NT"(ZGA,$ON_DMK;_VE8OJ8*7WLC(2+<82$&:TSFF$P)AM[&:\,=3DXM
-M<ELKY3=3D&QI[,]GW5^X6.^%F2,"UJ-RQM#>W+4A.W1A,["0#L````[`````(`
-M``!%``#HA$T``$`1``#`J`$!P*@!`@'T`?0`U`:Y;#4V5*QDL52'>\6$%-5Y
-MXRX@)"`````$````S"$``+`$6[KSE4.#B<S>O!GTPP?;DYN:<W0I at 3^1ZBN5
-MHK at KT/KJKF(15L085Y6J+*F.MJA`!AJQ9[2*BYQSO*^?/(Y0-NP'ZS&CCJS0
-MTD"\0[[<$"&HN0YCS02T[\^*L2)\G(9:Y[I>GP2)K0(%A;YIT5CX.8 at M>`5Z
-MH*GS\\B[R+REBS-<8V\"Q$N&QGH[3%C$,:&KF/4MC42A$6%7!)3?WF$N'2)`
-MEM&_4=3D,'6_HT4A.W1B)=3D"0#L````[`````(```!%``#HA$X``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y;#4V5*QDL52'>\6$%-5YXRX@)"`````%````S"$``+#T
-M9V7Z?<U*_@@S8PSYHWL<7T\MV!O;V3)M"*6KEE8CJHU<TYWB at WK,7*))J=3D[U
-MHL`<V6BZ>S4U#KM>(>R_52OS]O7U5=3D-'M^$ZB]N]T@*?.+9&3$J/@9]N?X#V
-M3#9'HFZG;9+0AKKT^>U0+^F)!H>/0V`R1IRV(_`8^0#[P"MVPTX3OUM<S$`@
-MQ&P[XW!`JIY21G'PB:$?,W#G%U"!*)<]<V07MS`)[T<;R!^I4A.W1C1Z"0`\
-M`0``/`$```(```!%``$XA$\``$`1``#`J`$!P*@!`@'T`?0!)`<);#4V5*QD
-ML52'>\6$%-5YXRX@)`@````&```!'"$``0#4*QQM&R^&+&_,LQ0`PN7 at 8YYH
-M7H[S_]"9`#+ at 75\=3D<.I$W4QJ4TD3=3DA=3DAXK(%VE7 at RALF*."I)`PZ:1<=3D^K)4
-M[O;M]OQK1:U$5GH]+,NTV2!#^>-7=3DC)Z=3DD]\B&_VX"SW?4OI,R@&NH8_#$)'
-M/(X3?7H%O\W_I\X&AN=3D#3*:@9X[?:D[]VP[X;1!3RGD8(P=3DMSQT-=3DKCVQOKX
-MX'5+W_M2BU/T@]7]O\1^FQ&2D5PQ'H893S(2062(`X'+&G[-+\?WM]S$R%UU
-M=3D>A6S)].=3DR^`^8J(60GC<LM.S`SE_3[<)`Y+4O<V_!'EN+]7'\_8&Z>0MJ at 7
-MZ2<C4JR_QB-2$[=3D&XX4)`!P!```<`0```@```$4``1B$4```0!$``,"H`0'`
-MJ`$"`?0!]`$$!^EL-394K&2Q5(=3D[Q804U7GC+B`D"`````<```#\(0``X&0V
-M7FR&6P32L3[3?T<]O42QNXD?%R=3DFP$$4+W``CH1.;@!7=3D#1]`*_CM'WERT/R
-MNN>N+HQ)![W07Y0^S9+M#M`NG/M":=3DJ5U at A=3D\FZ):RILMCG`]7`H,%$20>RP
-MR!-.WH-R7K34X1<KD;%79+S8G%8V2(>I<L!H#_OX>5[EBU5QE1R-M2_(*99P
-MG7Q-PK>MV%_.8:K<9B?8\@ECD*S=3D_6YWN1;_A(ZXAC3>J;?8!]M"3G&;K*<<
-MR3AO_E>38L!MNI2:0-7SNT6!;85);)]IRS..F5V\5IL](N?RFMI2$[=3D&QY4)
-M`.P```#L`````@```$4``.B$40``0!$``,"H`0'`J`$"`?0!]`#4!KEL-394
-MK&2Q5(=3D[Q804U7GC+B`D(`````8```#,(0``L%)JL-*>A8+T87UJ3\3:^T`$
-MVZ:I2F0X3)EDC5:@%<1/8WFW;4+)"0O(7,V?@Y;D at XA#5K51M'^/')MWP]<0
-MCE_,'LTW4=3D64.&5]<$[2Z6::"$8L7K at 6+D])!F`\G>Q at MJVWB'L7`K`ZM-W+
-M?HEL?;U3NIH),V;959#[3#]INMJ?/?/5?B$F;:`D6KU.X(.&.'.DOVZN3B7/
-MC=3DP?_\B?2<BTL-5$G>>6S#[#`G=3D2$[=3D&S[D)`.P```#L`````@```$4``.B$
-M4@``0!$``,"H`0'`J`$"`?0!]`#4!KEL-394K&2Q5(=3D[Q804U7GC+B`D(```
-M``<```#,(0``L)4<\'2Q(E/EI:?EC95<Z3&TIH0]D=3D#4U;V+S2H+LNNE!TY[
-M,/M"+0`&@'&*%!2[!S3XS2RAOR#A$U`1Q*=3DVQ(-:-Q$1\1CK(#<B1T7;VU2F
-MKDZK,E!]\A]J=3DV%G0JJ*,XDYPE0FSZN^!FJ*JAPR`3">:LU5`ANJ79M3T3C[
-MQ68_;1;:*B%^)G;"/@/O%_7+D&#,%92;Z;`0\).W7+R;T&*)3!./BY'*KZGA
-M-]M2$[=3D&^M\)`(P!``",`0```@```$4``8B$50``0!$``,"H`0'`J`$"`?0!
-M]`%T!UEL-394K&2Q5(=3D[Q804U7GC+B`D"`````@```%L(0`!4$$<`/0LY$FF
-M][P89&]C_18FS(4H8'*?GJOM&_H?&%1X:^C:1=3D$`M(PUM39AMAR;0C^Z4)4&
-M9^UFG2)KZ[@L=3DWQ6CTXXL at IHZBEBI)N#`&:GPA]_*J6S:*R0C=3D^V]5JXE"Y[
-M*Y7QNC!!<V-V\#!+ at NNM".^UKR3((`7:(Q/,S6W&=3DZR%2L<AF'/\6K#!QDH<
-M`JN2DJBRK)8M0%_V*J.[X.V.9!$5.G?1,9>Q&&>`+I];E9[[=3DBW5D$*Y70EW
-MXV.B32K+T_*,^2J!;+P04WSOQ?:NEP3E?B^WY#F\PHS)H=3D'<0=3D.)!,C!U:=3D'
-MV9DE?D6!TN[9,\C[9^VYQ`[I`BO&CGQGPN`77;<>2%*('R7 at ME8[AO["5E\<
-MG0RTXU!4OL@;R'H5>9F0SX>:RY(((M;A.MD/#%',KF2@</+@?Z2LU\:"D>3N
-MEFX(WU)`:3:H4A.W1B04"@!<`0``7`$```(```!%``%8A%8``$`1``#`J`$!
-MP*@!`@'T`?0!1`<I;#4V5*QDL52'>\6$%-5YXRX@)"`````(```!/"$``2#6
-M]CR#&)G0#?[K`)EM((]\A.*MRLC]H3?N8L""755K:0'_12%7CW%7^4=3D'(SED
-M\Z+!),_XV-"0_VZMRH53-JT_-P9;]2-`&UAG&TC;E8?1*],EZY#WW at 8-$=3DZ5
-M>%<*1)T[M?II)XI'Z@=3D-M"DA:4K?-++@;?0%/2)O`R?BZU6V/HFB<:>[T4+0
-MQ9/PPCW1V?4Z,\F'0H^MT=3D#>'-BVO,C at Q?/FL=3DW>IYA7VI.,Q at .4Y,_L5?@Q
-M#^D]9>#0VQZU>Z']0W<-<6F_>YOBL##GY#*.CG8C!1F.E*_L::3QGP7J&"\D
-MW0AK6R^)U&*3"XS%\J!9?A9ELG4.87L1[4>%,?Z8OBV!4=3D>PNC at 5;D)_6X(L
-MXEQO6)S><`>3%\MZ\U(3MT8M.PH`?````'P````"````10``>(17``!`$0``
-MP*@!`<"H`0(!]`'T`&0&29Q\3YTTU51S$MBQ at K%D3?8N("4(`````````%PJ
-M``!`(/"5CD^4%3G_>Q1Z&W:<"U$'=3D>NBWP78\!L/\J6AYL??X6S=3D at 0E)]]I#
-M32T<'<,!'K/E>BWLW5>FI"H at 4A.W1KM&"@!L````;`````(```!%``!HA%@`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8YG'Q/G3355',2V+&"L61-]BX@)2``````
-M````3````#!<.'PD7,,I,!!T&][UEKA%SJ.7^8K-X*(:G'.%!C>07 at D%"#-^
-M\)NK6IVH?U(3MT9H50H`;````&P````"````10``:(19``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.9Q\3YTTU51S$MBQ at K%D3?8N("4(`````0```$PJ```PJHH<
-MF;454NN4`IQ3S<HI8&FF>4KC>E0"8:GT2C2BSFOD66G2J-34;JI;TB-2$[=3D&
-MB&(*`&P```!L`````@```$4``&B$6@``0!$``,"H`0'`J`$"`?0!]`!4!CF<
-M?$^=3D--54<Q+8L8*Q9$WV+B`E(`````$```!,````,(AD=3D27,LVD#WAJ]M at HJ
-M*OJ-PZEK8V:AZFE:.RCUR6_K&&7!]YHH_^&=3DOO<S4A.W1K1?"P"8`0``F`$`
-M``(```!%``&4A%L``$`1``#`J`$!P*@!`@'T`?0!@`=3DE9ZH^0#^XP8T`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`/W``P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``^+(?S7P^;M:_U]L4`@8!0S?,2N&>GI6?U$+/JQ\Z+W%9F4(R
-MH2=3D5KAX,?_-A2LS)03]\@I2=3DS\.[?KIU'S[_(3)OHZR]Q=3DX)<BQ9&\W`9`]/
-MVC"LF7C<&'=3D!1>W(:A_J#V&M?3<R`HA?E;'O_`G1%LB*N-7&O<;[;W8[F6LE
-MZADI```DP)ARA!.>.U70JL)S$P&YH!-"JRDV<$W#R7P,4_G+CD8I```<``!`
-M!`ACZT]E!7.<PLMK:,+LF6$1(.>4````'```0`7-891HG,""I3O+.;C&J&+"
-M$D]/)%(3MT;#;@L`7````%P````"````10``6(1<``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*6>J/D`_N,&-```````````I("(@`````````#P````@``!`!@``
-M``HV_$UXDHU<G3%3Z>,X00A,+-&&(U(3MT9(?@L`N`$``+@!```"````10`!
-MM(1=3D``!`$0``P*@!`<"H`0(!]`'T`:`'A6>J/D`_N,&-```````````I("((
-M`````````9 at A```@``!`!@````HV_$UXDHU<G3%3Z>,X00A,+-&&(R(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``^+(?S7P^;M:_U]L4
-M`@8!0S?,2N&>GI6?U$+/JQ\Z+W%9F4(RH2=3D5KAX,?_-A2LS)03]\@I2=3DS\.[
-M?KIU'S[_(3)OHZR]Q=3DX)<BQ9&\W`9`]/VC"LF7C<&'=3D!1>W(:A_J#V&M?3<R
-M`HA?E;'O_`G1%LB*N-7&O<;[;W8[F6LEZADI```DP)ARA!.>.U70JL)S$P&Y
-MH!-"JRDV<$W#R7P,4_G+CD8I```<``!`!`ACZT]E!7.<PLMK:,+LF6$1(.>4
-M````'```0`7-891HG,""I3O+.;C&J&+"$D]/)%(3MT;NH at L`4`$``%`!```"
-M````10`!3(1>``!`$0``P*@!`<"H`0(!]`'T`3@''6>J/D`_N,&-B@\DEP\Z
-M'Q4A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``-3#%I]1R>`'`.4.)BE^^%!ST1Q?
-M^=3D&KAD8+"(@50EX'K`L\#`YL$BSG0'R\J9,&A^X<Y)--98 at R@(J+;Z2X9:O^
-M;TX=3D.;1.S\'H#(]E1(2#)39#T)>U'%9,*YXVL3D7J:>G'S[LWA^@`WI'+!N/
-MC<5#59$^2R#S7]MDANDC>E;Q*0``)$=3D at W4/W"^L8P)9:>8TYD?/HBXRSJW22
-MAQ0?/"?B<@DN*0``'```0`3_L[<Q9DQ"#CWLL5E7EG6%)0T#C````!P``$`%
-M2Z;B%A&D>P38BJ;"Q$J at 4C_5M3Q2$[=3D&2=3D`+``P!```,`0```@```$4``0B$
-M7P``0!$``,"H`0'`J`$"`?0!]`#T!]EGJCY`/[C!C8H/))</.A\5+B`C"```
-M``$```#L(P``T..E69#%ZN%]@N>2(,G+)D at .U@0WKO,2]@T3[YA+6,Y>`E/1
-MOGQAHY7W.@]8VNC'-\^IU>S,XV)#9?;5Y.=3D73QIC"M<G^3D0Y=3D]">XDZBE13
-MG7U'M=3DUG[M3.`C,2"Q^]F8XOZL&CV^U14Q&U$Z&X'V30">QI<_Z%0GU!/=3DFP
-MQ\44`'H5=3DVW_H*P at WN:=3D'T3",HCWK#:,L>^O3L*7(R!7.WZ9%_?.ZDWZX-KM
-MG-W.SB24@?[N<8;/QG\#<'+NZ-/=3DYBH7O9EE#?<C\/`\>5(3MT8CZ0L`O```
-M`+P````"````10``N(1@``!`$0``P*@!`<"H`0(!]`'T`*0&B6>J/D`_N,&-
-MB@\DEP\Z'Q4N(",@`````0```)PD``"`+S]8[8D9I:K(!&IIH)K&%ZFFSXV=3D
-M`48#5ZD?)#"M9^13[>*5/4_64R0U<H.+)[1'>5]M&IAT]B/\BY'2Z@)OOF8O
-MA*=3D#H at V.X4.M;3HJW,MMB8/&]?>!-P\N<S_%']BO8DMG<JCN9.Z[ZM#ZH"X!
-M>6:.0@#XGKUDA]P1`%(3MT8#"`P`'`$``!P!```"````10`!&(1A``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z6>J/D`_N,&-B@\DEP\Z'Q4N("0(`````@```/PA
-M``#@@A6?]?R7A_)#,YHVQ#YZ:4S1,,"<A\41TV\JD@?>A>\3DN*@EB/(;9(1
-MHG;F_02"13(F,&W`2`\CLRR%)47O at 41<P/(PV07S$F92J8OTEBY3>[OJ+:TB
-M4HGMD>Z3%.&E'E1;?_]\;1VO_[GOUYV!\0^/QW'!Z/'ZHC6#-7-LNRIV9E#`
-M*64HXU?@-J-,!Q&@=3DY[A4*UKW+)[9JKM0V=3DE`J,!]]I-_"EX?Q.H?U*-8S9(
-MGNCH8RYID;MXJWQLL96L`U@<</H<8_HW(O0*A\FJC.4+,R]%DFRQ!)WKS%(3
-MMT9N%@P`_````/P````"````10``^(1B``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR6>J/D`_N,&-B@\DEP\Z'Q4N("0(`````P```-PA``#`5Z1BD6[$$17?]]7J
-M).85V\=3D<U,KQ1"^^6K at 0E38/<#T*J<'NM`K6ZF`]VY[5T7<"64MGM*CU[,6X
-MO4RBGR=3D"!68)];,&I]8V95"^:`6B3\?HW+F-J<Q\NERL%GC@*9O+;[ZZ3:51
-M8CL2/.EKMQB:>,`HMH0_O8U'G8%M8N_&X8YU_2:X)Q?7+;XH6Y7F!]S\:_NC
-MW#O>-T2)+2H;3_)(>%DH0/?QWNL`@(OU$MAK:-MTE2G\CJ.BR;8&Y_A2$[=3D&
-M?AT,`&P```!L`````@```$4``&B$8P``0!$``,"H`0'`J`$"`?0!]`!4!CEG
-MJCY`/[C!C8H/))</.A\5+B`D(`````(```!,*0``,)F1F"8&@"$_WWCH7"_.
-M1X@;6LN__PB=3D`>$<V;P.`[^%9E\1__J"]&0SK#7K4A.W1E0Y#`!L````;```
-M``(```!%``!HA&0``$`1``#`J`$!P*@!`@'T`?0`5`8Y9ZH^0#^XP8V*#R27
-M#SH?%2X@)"`````#````3"D``#"%X'A5>7"6%K#O=3DW]=3D:4K<*I6">3&P^P0R
-MA$5D$XGDLQ#:)7086ZQZO!_5I%(3MT;D4PP`/`$``#P!```"````10`!.(1E
-M``!`$0``P*@!`<"H`0(!]`'T`20'"6>J/D`_N,&-B@\DEP\Z'Q4N("0(````
-M!````1PA``$`4HFT2!YXT%RNG8=3D$[V."IZ\SB#0!:43N$F:FM'%NZGAN[,PC
-MBX*2`!@[[=3D8*[R$`2O,%E!P)&5(R0''DK^Q30N>+Z558J2@$4:P1:O^2`A/1
-M'_0E)"A)(9E*Z>*$D_,]G8K#K']5DMRSM at 0416#(.55!'TRNS^W:Z<;K>L$8
-M[!]/C)R:D_>/<\[;Z=3D"G')/I^)19 at _J_[+&$-3I[8N(L;TM^W\>,('!WCE'B
-MY%H1+,)P0R_M4TY4.._5/=3D\5/0]Y:I,%IM8C&W$56DY?RUZ+?')XB\=3D^H&6`
-MDQ3@!3Y_%C[2F%'1'DQVY)NE5>(]1PC`^WYZ2CP6`92D8`0N4A.W1L1?#``<
-M`0``'`$```(```!%``$8A&8``$`1``#`J`$!P*@!`@'T`?0!!`?I9ZH^0#^X
-MP8V*#R27#SH?%2X@)`@````%````_"$``.`H!3$``(FA))G'M7"L2AA*47F2
-M[',/%))_B&F=3D3$[TWWH>B!IH0O)<WW7_SZFT'EA.>CC9 at GC9_"[\;O5E6K.W
-M__A/_YW_Y6:!FA<2I\N33K;XOK)1V]DMN67([23`@KDJSBEO;&;OE8LY<]0/
-M/`;AW%-\6Q5?F+DVY&,'561:VO]8#W)B?Y;.DPJ5'KVFGQ"W:P\2J2 at 3O8`I
-MM->C_,X.;,Y>7I3%NR.\PW`KTG*,+AKYMCDG+@%%\++'4Y600!CP_+AC.AEK
-M#Y5SBFH?0R:@OLFN)&,EM?D<'&+"4A.W1B%P#`#L````[`````(```!%``#H
-MA&<``$`1``#`J`$!P*@!`@'T`?0`U`:Y9ZH^0#^XP8V*#R27#SH?%2X@)"``
-M```$````S"$``+#H]9OM>+DW)C-V&3W4-XQ5[YX#X6>?R:.=3D-)-(B2+";R$)
-M6K5"9MW%BPO)_\.5&289A-/M;JL/L''E$CHQ\\&2`PY^<(5MUVT&7<J;T%%`
-MU\DCS2..<"Y:A.8,$SS.",UIQ&D=3DB:/;OO0$HE[YMMBG0/@OYIR&0@*>+>N:
-MDAN>[_=3D9<.*99Y(H#<`VX,74"!M^^K^;?/S[[?1M(/`^G7-RTJU!0*=3D&#_;^
-MUN=3D at 4A.W1CR3#`#L````[`````(```!%``#HA&@``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y9ZH^0#^XP8V*#R27#SH?%2X@)"`````%````S"$``+![JDZ3"W!^
-MVIC[+9 at -OBXASR5)?HFA]2O((J*4P3!.T%R1V.KP&CC50_[`5*PR`_K9B#ID
-M,.]0)=3D at 7=3DS3)1W#:@L7^'^U)3=3DO\,OJUGQ/"9^XDF%C&X5ER9EURO6A(R%#*
-M(WP$1GOZL;?\S.3=3DYJN1K"(,VC32?`".+-;#>F5L&G_>"]3$CJU2X;H\D4C-
-M>"D/"^&QIT/F$_?0.`^-W&>,<64#D9%C6^$EP]>(4A.W1E.P#``\`0``/`$`
-M``(```!%``$XA&D``$`1``#`J`$!P*@!`@'T`?0!)`<)9ZH^0#^XP8V*#R27
-M#SH?%2X@)`@````&```!'"$``0#[WPNJM\Z,*DXVEMFT'[E<^*/3M=3DLBC1M<
-MZ#E"?ON$-H;M1U,A5_YZI6R98HVTR-(?2?(094[(<CENKJ%+,GPB]SYR4BPW
-MZ]LG6(_1!OPO*$&=3D90=3D at FQ7]$[UQ]X`@[Y3T).77.(ODOFEG-UO(^8:<_712
-MXO8G=3DY_IN:MQPAN7]E/%^(+(:"#H"KK'M#(]M1)<VP?":F:P-+T$H)+["ADA
-M%G35ES[O%R?U57[,6"YJ9/+_E!G\<!ZWV;K6.S%MJ5^CNHR'OQT<_;D>+=3D'X
-MS$S<UEDRU9[@O0F,Y^=3D_46V1JKL()&@'R?+@:1FO7<#[;O"!.5 at 4'-!N99 at 3
-MD[Q2$[=3D&`KH,`!P!```<`0```@```$4``1B$:@``0!$``,"H`0'`J`$"`?0!
-M]`$$!^EGJCY`/[C!C8H/))</.A\5+B`D"`````<```#\(0``X$"L2'/$FB>Z
-MYZG4KHO;\4544NFFW\?R"!D]BA-[$.(HH,(HS'+D-LYJ49SSR6!UGM(+HS%J
-MSF6+\(OCC-*XOTS>0B@(OQ6I8[G*WMJG>O8Z<L)8C\C];SI(F32;?^U\AFXI
-M,2+Z7[TF<]+(`_6U'B\XH!1W800A0O?0O_'P#JDQBUT4N[>HJ:_N2E+\1D68
-M.([CCOT%'VU@`URB(D:,IZB+UBR>#R4]"4D,%KJR7)F]:^+0&IVEHSW6=3D("&
-M/#9!VWM%*+2WUK-@)O`+VI:NM%0W<DD99:KS?X#>V'92$[=3D&#<P,`.P```#L
-M`````@```$4``.B$:P``0!$``,"H`0'`J`$"`?0!]`#4!KEGJCY`/[C!C8H/
-M))</.A\5+B`D(`````8```#,(0``L+TQG>B_3;F5"P=3D,$A2A9%J[NC at LZ/TY
-MI5`B=3D1:*S<._`)2?*HX`W.-?P\D!0/9W\@;*#5S39ID*@19,%O7P-QJ!9A]4
-M")3GG#5S`W)'-]1(`7WN_5\0NMB5(5L4*1-WF%>)S1#:KSY<)U1RO2(1W!.<
-M_"7/?M'-R]"\1;TV%DE697CY8?6/G7$U\TR?"%:62S.$%PC4]`JMN`5NE;D$
-M.<2F4)A<[O9=3DR$[9O392$[=3D&?>X,`.P```#L`````@```$4``.B$;```0!$`
-M`,"H`0'`J`$"`?0!]`#4!KEGJCY`/[C!C8H/))</.A\5+B`D(`````<```#,
-M(0``L+XB`M725F2R'@FQIPD2`)\MLK:E4V[Y>A;F6=3DC]6!#-1"W=3D9,F`,P(Q
-M@`:T,+$E/,)#R/.KT;7R>"IM<X'N]&0;"+GG_$_".?4V%*FBB71&U!XEQ[[L
-MN>)Q^9HY/ID)KL>D'$A#P2H&96Z^2:4ZL$5WPQ<1I@"ZVY[S\3"^`",]Q6QL
-MPH*[%_)^]%1T!N:R`"W,DRJ2Q23V3+X(%B at 4IFF7Z.G;W4A+2(P%,EI2$[=3D&
-M-!4-`(P!``",`0```@```$4``8B$;0``0!$``,"H`0'`J`$"`?0!]`%T!UEG
-MJCY`/[C!C8H/))</.A\5+B`D"`````@```%L(0`!4"9?)FN$M0*:_CCD_V6H
-M7!UE&>])4K/2KE:7%]+N!<LN&*H$3R&RSR.'MF15;L'#J^H^BOX^]E=3D9KP_A
-M`5=3DIR=3D(?V4M;"',)_(W"C"U\743C=3DU-.\G#_B_8[;0<>D3PD<R#=3D_-VM"8?M
-M_A3+V@,44)I72WP\=3DPD&FJ7::Y/JT`7[M7NC0XCSW\+>=3DY0W4D,F)QX&U2D.
-MTHD`*?L0*U=3D#CS(!0Q>\OSV&M#!4\>]:X at Q+BQ>4)W;\PA.TG<->4'HH[T(R
-ML7D1J/KAAUM3>0L+<-VJZJI]@<4EU4I")ZHWXHI38XW26^=3D(:_4X2<,1+NS\
-M#YWY]<G^?LR(\Q]41>1@&].^RGY:0O%6RTH.T+#^0]R=3D5[G;R#*F>. at C^VT_
-MA0_1)D7;O"6SK,:H3.9C+0B#=3DL6-I&8$93`Z>`2"J^#@PHS&$T7K<@ZS<MIV
-MU*\H4A.W1ME)#0!<`0``7`$```(```!%``%8A&X``$`1``#`J`$!P*@!`@'T
-M`?0!1`<I9ZH^0#^XP8V*#R27#SH?%2X@)"`````(```!/"$``2"7TM,9DD&5
-M<JHG;42`[80WGF2303,5%'0Q:SP3/H6),J=3D*`\3/?I&'B at ./<;/T0NOHU\/U
-MBAG,A4UB7G4E.HP at .[$>B:+/['';7&YD-C=3D=3DM'_@#`#T06./D92=3D,>CW)7HY
-MCZS*1QO7XG0^'$`J"Z`O2^&YI*R)=3DE%;`("YO`Y_CMK2W@%D%90V?W1=3D>L;+
-MML at 7S*&(@AL$DE]6FL"(?1.]+R[AV[=3D)%\S]Q\TY%^T;#OA5"C!9C9"28QR3
-MF%!4"PA<?4P<(XEY,?%D[USGRC7_AZV`;J44AZP&:8Q0!13LI^5XVBH&HKNU
-M@;&/#:D/)B)!7^"NPS5]R/=3D%^^J^&]FD7[>H,EC_,Q6KWC6T_[08'#PPHQ;+
-MH9W3;*)^<5(3MT9S<`T`?````'P````"````10``>(1O``!`$0``P*@!`<"H
-M`0(!]`'T`&0&261O1N98B(CT,SMA3&@26Q\N("4(`````````%PJ``!`SAK*
-M-;A4>CS#3JJ>S<HI_7ZQ at Y6N1*9K0^FX)*;YJT\)K]U(P:^8X:D555>FCC4?
-M8#RX5=3D;SCY7[[8F[4A.W1OE[#0!L````;`````(```!%``!HA'```$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y9&]&YEB(B/0S.V%,:!);'RX@)2``````````3```
-M`#"1N9EX:N6"AI?0]!>CAB%5O0>S"2IH:]8)A1-$W:QR2H#<_8$EPQXF(:*E
-M/%(3MT8RBPT`;````&P````"````10``:(1Q``!`$0``P*@!`<"H`0(!]`'T
-M`%0&.61O1N98B(CT,SMA3&@26Q\N("4(`````0```$PJ```P-Q^7/O)#6,^?
-MD,/?-#*LI6NU)M=3DP[91P%G]`,6,,S1W_C%J=3DJ\5*P8O%H1U2$[=3D&;9 at -`&P`
-M``!L`````@```$4``&B$<@``0!$``,"H`0'`J`$"`?0!]`!4!CED;T;F6(B(
-M]#,[84QH$EL?+B`E(`````$```!,````,"(9VST:_LYG&,JF8I%`AH87`QH4
-M8129FQ?I"_EOZ^+CDW]X'P>&T4^\ZQY]4A.W1N.3#@"8`0``F`$```(```!%
-M``&4A',``$`1``#`J`$!P*@!`@'T`?0!@`=3DE84KO#*9$7"D``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`/X``P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``&HR+7-[Z:U$&QU\JUY-2*$75>,>U%.C_[D-724EN?3Z^U6<O.PYD_>^&
-M.)/X9_0&5!IDG`@!K;C2_K"DU[TY45852=3D]JW:)_(&PNXTKZER^;HT'[B?5L
-M=3D>QR8/[@:S/H0'U.!E3V']&&]:\T2>88*P:HLRWJ.5+AAOZFZ7(1M6\I```D
-MKBV`'D/4B.")RR%3S*1Q4ZEO>;@/F"[NR3T%\%4<<>0I```<``!`!/2G-DWI
-MC5!-33L8$A,PPTV!#FW;````'```0`7$*_.R"$R9#E*/MZI+E78X"NZD6U(3
-MMT;6H at X`7````%P````"````10``6(1T``!`$0``P*@!`<"H`0(!]`'T`$0&
-M*6%*[PRF1%PI```````````I("(@`````````#P````@``!`!@````KGA19/
-M?<Z%U8BLWFWYE234,V.I'%(3MT8?LPX`N`$``+@!```"````10`!M(1U``!`
-M$0``P*@!`<"H`0(!]`'T`:`'A6%*[PRF1%PI```````````I("((````````
-M`9 at A```@``!`!@````KGA19/?<Z%U8BLWFWYE234,V.I'"(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``&HR+7-[Z:U$&QU\JUY-2*$75
-M>,>U%.C_[D-724EN?3Z^U6<O.PYD_>^&.)/X9_0&5!IDG`@!K;C2_K"DU[TY
-M45852=3D]JW:)_(&PNXTKZER^;HT'[B?5L=3D>QR8/[@:S/H0'U.!E3V']&&]:\T
-M2>88*P:HLRWJ.5+AAOZFZ7(1M6\I```DKBV`'D/4B.")RR%3S*1Q4ZEO>;@/
-MF"[NR3T%\%4<<>0I```<``!`!/2G-DWIC5!-33L8$A,PPTV!#FW;````'```
-M0`7$*_.R"$R9#E*/MZI+E78X"NZD6U(3MT;:U at X`4`$``%`!```"````10`!
-M3(1V``!`$0``P*@!`<"H`0(!]`'T`3@''6%*[PRF1%PI'07*F[4.7)PA("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(```,IG2IRT1PB.TKS]"QGV at I0F<L]?YA%+0HO
-M\]37P."E*G0RC0!N-$CI7#3!DBWS&=3D*YJ^^1MV4[L at F0[*4<7`:V2'Q1%;K]
-M<0-V4D0$:BHG5Q4P%!&W,HEA[=3DT12D_ZJ`ONX=3DYH)J=3DZ^\_4?6YNPI?R):?J
-MGOZXUK[I].&E:+>K*0``)#5P_V3N*.\3'NI.(S08>%_KZ`'&P3I0NC-XQ8(>
-M<<U?*0``'```0`3`2=3D#\V^;1^LF!]-=3D3!"Y(2H!C*0```!P``$`%3LYK.3`X
-M`"%'9BF/G/XE[(A93/%2$[=3D&?@,/``P!```,`0```@```$4``0B$=3DP``0!$`
-M`,"H`0'`J`$"`?0!]`#T!]EA2N\,ID1<*1T%RINU#ER<+B`C"`````$```#L
-M(P``T+<\&5T3:LIEY0%Z1-WI1#?`4C'3"A=3D%]]G7AJ)M/KD752SX`^"H/:B+
-M!XM'%R=3D4BQ,;^0:PF:EO<C=3DHRG<XV(6B'"EF3'9Y+"EKN0ZU>M94<`!=3DX at A^
-M>%:#HCZW;8]:Q7I-<O=3D,](6UD6LP2F[^U>]M\AQZKL:/B^!;^;2P=3DEX]8J#@
-MH6WZF_WA3."CH8[7)Z8_!(C6QH at LHQ.QWCM5W2T(UOA at 1\<8H?"\9^=3D("+"4
-MR1K)^#"G]PY3;H@$<U,-BJAXQH=3DSX?=3DL]'(29U(3MT8-'0\`O````+P````"
-M````10``N(1X``!`$0``P*@!`<"H`0(!]`'T`*0&B6%*[PRF1%PI'07*F[4.
-M7)PN(",@`````0```)PD``"`L\COA,50H./#G7B+LHW&]^)'<I]%>LQ+`ON6
-M:!V"-]B&P^;4%@H$X6LM7R`3IQLIOO`8ML2HQQQ\=3D*,*G$QL`VFRXF9F:6,X
-M)Z6Z1;VYZR--$GHTQP[B:]47F]'ZC)O$F8Y.%"R7L`(]60:WP:\M*#(.=3DVJE
-M@]*)[#2?'5(3MT:J/`\`'`$``!P!```"````10`!&(1Y``!`$0``P*@!`<"H
-M`0(!]`'T`00'Z6%*[PRF1%PI'07*F[4.7)PN("0(`````@```/PA``#@F\WY
-M3'^1/LA0V[]WV,HP"(E4#*NFS+S#O?C.P*D45P0`JIV%.]'&`:RI%6]#B4#9
-MQP8]]^0H<0J(*T;'U$X8K3"'049!)#A0]N.'!(6['+TH:BJ)NSLSI$GD&9IA
-MC*0Z)Y5.?X>O4)9NY0<KEIK1K6P5_".FC-9'?\7F"0K8XV^9;_^<,#20!<\0
-M2;/&,_4L_(GTY32`%$O]5/'_Y+8.WT^ODI(GWEWFZ:O3N3]:,P`\;3N/3F\4
-M$\@PDQ*)PE2Y at T:$(0\,412&-X3>WU%"BQ4YG$HJ+_- at FLM0GE,3MT9L"@``
-M;````&P````"````10``:(1Z``!`$0``P*@!`<"H`0(!]`'T`%0&.6%*[PRF
-M1%PI'07*F[4.7)PN("0@`````@```$PI```P,-+?K(CN5ZCET[OO8U4U-)"Y
-M at ++$&>N"-]78:`,W-[/:#T0^^QSM8?C*3_-3$[=3D&>1```/P```#\`````@``
-M`$4``/B$>P``0!$``,"H`0'`J`$"`?0!]`#D!LEA2N\,ID1<*1T%RINU#ER<
-M+B`D"`````,```#<(0``P),!\!XV(%BMZ:58NQ6[C]VC''1R%[1KZY])O-<U
-MFG,D?B$QIOA.C^[S-GZ"&,?]S:9\6*1.LS0V`'1,0\$W(O<HE9__)_BA,_R>
-M6>"NS4^(#-#+4K::O;)`.VJ8L\O"!#@V#+7M@[MRT=3D]_(K1 at V48#<TF?:MJ4
-M=3DJ/7EEUZ&:.N(%IL&^L&'MW$:I8[?S.AXS&0+%.OQ$ZWOXMAZ",EE&]-)FF_
-MWLP[I[*12#[`!M!7H^F:4H?(`I.AI24<4Q.W1JDM``!L````;`````(```!%
-M``!HA'T``$`1``#`J`$!P*@!`@'T`?0`5`8Y84KO#*9$7"D=3D!<J;M0Y<G"X@
-M)"`````#````3"D``#">@?26<E.-\M*R/;LK4QD7E/A09TB4M]HHCPG[UU>?
-M\(TINID3&^DQ>)9$O%,3MT8 at 2```/`$``#P!```"````10`!.(1^``!`$0``
-MP*@!`<"H`0(!]`'T`20'"6%*[PRF1%PI'07*F[4.7)PN("0(````!````1PA
-M``$`R(4,.!,(/1&?-`<I].'?0#Q]81&J;&#3Y$!XC--/\-/IC%YOD>D$#D7[
-M;)95<FE(Z#M8%`"WC3&&H@%=3D?^^Z,PPM.3:8.D5819C]8X'W;>D^+EB5T.R4
-M:$24$*V82+UQ+(IDG8?AYDI:MB(=3DF,5F6SDXV*1B4Y1 at _X@.,`6%AA[VN3^D
-M!9C$G10-!.38>P?C at WXZ5S=3DD&-D[;OQ-#SZ8K8!DXPZNRNN&<0A?:+;5O(&@
-M/2N6045J1$HF')=3D-OLU^.(LL\(\1]KH4$,E(\H5=3D,2:KWIA\0LHH=3DI&0@?G(
-M$A5Q,2M0.6S`>6]1JSFGC&G:M^(W-@\<$#"9<G#Z4Q.W1OU3```<`0``'`$`
-M``(```!%``$8A'\``$`1``#`J`$!P*@!`@'T`?0!!`?I84KO#*9$7"D=3D!<J;
-MM0Y<G"X@)`@````%````_"$``.#$T"J1L5).BJ/YHJF9:`/@W+&O_^Q9_X':
-MU5;\W80W7Y6:=3DG!^K=3D&-/+0>]X8%=3D#(H)OV$/ZL+)K.,MWO$M2Q_+%%>#S>W
-M<7-M(/6OTJ]`PL!B&T-27'>N\LXK&XT7D*J*2*OBT/\H2^CMA'32C>'\6?*(
-M&TA+*OB<=3D7WTJLK\\Q2>(%&0$<[]1/-P;^+_A]E.>Q-Y`12-G[SUAU<&4-HX
-MSKP!^([?4V.?<'MIQL\G@:8R1$O^E8C@[F48;I#]$I3W$2+YY9Z#'-K2E)AI
-M`,."EFWJJM)W]8!T)VK]4Q.W1M-C``#L````[`````(```!%``#HA(```$`1
-M``#`J`$!P*@!`@'T`?0`U`:Y84KO#*9$7"D=3D!<J;M0Y<G"X@)"`````$````
-MS"$``+`%'9+IZ/G7<=3DB@<4#Z0,A'!E[B/.1H2(QK.>)+0;DKEA2MOL>LEOIJ
-M$4ULUF9R#X,&N-)&H(?BUP6G13"]`T11Q1;O7+I>!N(UT-@'>2FC&MEV`#_#
-M7+R0U:#`'<-PAC(WOK<H[5A?^9&8ZG-7)TQ'CB$'"?&B9_B`)F$#[F4VUC/N
-ML4O8#OT=3DJ(M(93OC$]Z'R35<1O<`?N6T?Q_WGS\F6_0MZIE,77#I[![44Q.W
-M1D.&``#L````[`````(```!%``#HA($``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M84KO#*9$7"D=3D!<J;M0Y<G"X@)"`````%````S"$``+#P6/IK8+`(8C&Q[GZ4
-M8%8+2Y;:(5LT3LK646'5U$N^!H%%5GZ$CD>0M%"'[?3L>W?6R)A!X*\'TDCB
-M6E&.VBS%C44.:6RYICG%%4_A[\X/I+XY*]#O,F.-"$\PGZ^4_]"6Z32<*Y1_
-M-!=3D;%Y:1=3DUDBVCGU:2`,D$'6!L:VQ2I2J+@#!M?.G8`<S</S*YFK!=3DVTL(!`
-MS.#"_Y/EFS?2E>/=3DT>!>5Q-;<-\'E.@^4Q.W1A"D```\`0``/`$```(```!%
-M``$XA((``$`1``#`J`$!P*@!`@'T`?0!)`<)84KO#*9$7"D=3D!<J;M0Y<G"X@
-M)`@````&```!'"$``0#^MZ!?MI"0NB3.#P?*O!8I9>OLU at 3&9F%6<%4`2Y"5
-M+1\8KO&(FL618(69QN6DEZTX'GQ9-C&\=3D&;$N[7*$`MM$&$KN9[^;\_]G8M0
-M7\??#SD`8B\8DQRI1*UMT!;%]_BM[B"*P9\\)4N?696M at Q,<N"E9_=3D+T;HC<
-MGY=3D)$WL:XIFAVV(&>P\?#:I\#'@TDK,7?"DG$-1N96:)8L/3_C0E<M``4]W)
-M*5AS(9<(Y>[]'[$,$FC=3D-%!(9PU7>7W68R9_.K]O'S[2_P'G58O5"EU@*\9(
-MTHV85^3)AL/C**OB*M%T4;NI<?WB=3D1?WN7RK?"\'U.;K,(N'C1"<UP-3$[=3D&
-MW:\``!P!```<`0```@```$4``1B$@P``0!$``,"H`0'`J`$"`?0!]`$$!^EA
-M2N\,ID1<*1T%RINU#ER<+B`D"`````<```#\(0``X*E at M6,)Y?F6]]`DP/K!
-MVFV4J.:MN/E8'6"!WQUF(!2M7VK5[BM5$]8O!K'B5(]NOAA6BV-XU!1^)BUL
-M8LMLB[:T^\/%.6AZ$&3(P=3D7U;']4E7F_$^W<`_7"M%(_1YMZ4030&,(2S:*!
-M>]X70UD. at QM?Z'2Z<GF$,Z]1`:%'(I09U0NXGEZR^\H@(Z*FZ%WZV-#^K(5V
-M7Z/)0H=3D7 at X4B/C39)(Z5Z*W-./S$5NHNXZ"ZM]4Q(65*FW-AZ#OW5?`=3DO]+F
-MUI&*X.]K=3D3CX#P'65<G?Y2:98)D:[%B5+653$[=3D&;K\``.P```#L`````@``
-M`$4``.B$A```0!$``,"H`0'`J`$"`?0!]`#4!KEA2N\,ID1<*1T%RINU#ER<
-M+B`D(`````8```#,(0``L/?GC\"ZD,S=3D.XUK9.=3DAI%P#6?N;'83N=3DDBQA(Q^
-MWZ#=3DB2:"L)52SA[]U[_71O?W,R8`&M`*?EZ399NTT`M[EM\=3DH77):`CI>(!J
-M0P`3I&']H(MO;3#&7$/4 at ARI;G)!,T.Z``(;=3D=3D<&I]!'L"5ZB^=3D:"26#?O:Z
-M]-/Y_RU!_^=3D;&Y3QL5P)1&.FCK%6^9WKB)7-0W^(N/+O;BD3NNHK(/.4QI$3
-MQQMM at ZJ"+^Y3$[=3D&1.$``.P```#L`````@```$4``.B$A0``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KEA2N\,ID1<*1T%RINU#ER<+B`D(`````<```#,(0``L.W$
-M\$WUQ#PDW<"LG[(K1#^MP%S]B,)O%/"K#;$"&Z54>63DK4O3C]2.ZDEL%UK;
-MR8K?5$%KN`!>-XXCV>YQHCK,!2[05^Y_T#4=3D4@%V-I4##N&=3DH1Y:45`N9:MN
-MB-C[^U0Y,\C)OC5YM-V)BGLMP?_C],'6#C2,C>N%KWLA(YP8P%HO^C7W5KF&
-M*L5\R73AMIZ@@^/C$,E*@F_S`9E7<3*0.VK&%C,1F/]I_1-3$[=3D&C0<!`(P!
-M``",`0```@```$4``8B$A@``0!$``,"H`0'`J`$"`?0!]`%T!UEA2N\,ID1<
-M*1T%RINU#ER<+B`D"`````@```%L(0`!4"KXLTV#0Q_Z9`.E]2OUYCIR#R63
-MS<\O+IRIUR]IN$?:WP*W,ZZ/)',.!AF/8MP7Q.0&7$X)/O%7U;RZ)O3M+Q.V
-MBV!CLGM]D0M:OY/>`]X1]J5#W=3DQ8RK9:(V:`-@*Q/P(FHYSD9J5^Z@`WUE at 8
-MZ"T-;05SM$R4YT$+D at 2++\AHVV".!AO-5XP?+:<L,L!_<U9>H!KF=3DHV:`]B[
-MB at BKT=3DMY4\=3D_$:.1\]*6%NOY!2^CF3$T?Q`>Z'OD/I\B53BD[8[I'C6?`1O[
-MCU5`S^\DL#$#S*5W+GA at _)KF<R$-FL#_6V5FI%4$5B0'LP2`6V:Q)V!5X?22
-M,+_S,A,;""H\CT#)]7A1#02$)*S:O']"X,KI+U;^-A,`F4Z8;ID5QH!BJSJJ
-M(%KO*UA\VB7`[@_5*SXQ'W_.D0+I9FX/2C$N$(EFH6(K,K9F9/[13HX?4Q.W
-M1M(\`0!<`0``7`$```(```!%``%8A(<``$`1``#`J`$!P*@!`@'T`?0!1`<I
-M84KO#*9$7"D=3D!<J;M0Y<G"X@)"`````(```!/"$``2#7S.RB.#?C5O)$415'
-M&;MW98;N4'<R:D=3DZR$G<M4B[S\0#I>#YKF"X2!\IG#QBG?4V&@JSO%NJ`F)Q
-MHROK4/?N7P''O&IC:IQ0RP[!`U:]NZ8:#[`C228](9I6Z+UH3']I`$>MV,RW
-M3?:=3DS>MR$:F;^=3D(,8.QFP2;C4\E9L at V*3_Y)`!UI/2EAZ$JA)0"E=3D4)^`5P@
-M-060P/5H%%EWIV>O&>KR8.[`(1M2X^<GX9&LO3W!WY(R=3D.?.DEJ$3<MY:S^]
-MB%Q?/[J0BL9KJ\S[E]N\WNN(7$,T1SRI9^&L;8W(LRS=3DRA**OQM6DXV6?MPL
-MZH&AU14UZZS\+33<8MJ_H"H$G)_D`2YL*DH$G@=3DU6K`U"`NEO#F0PY/X at X'Y
-MQ5,3MT;L8P$`?````'P````"````10``>(2(``!`$0``P*@!`<"H`0(!]`'T
-M`&0&2=3D@<_?":3N-1IYC9N!H.=3D"@N("4(`````````%PJ``!`>EJO6TAO*`%?
-M`1=3DWXLG[18LL8<>Z?@K?A=3D,`CVG.&4NO[C8X"#VXHUZ3E9SK;[?N4B^N'O<M
-MB(>+W`H`4Q.W1G!O`0!L````;`````(```!%``!HA(D``$`1``#`J`$!P*@!
-M`@'T`?0`5`8YV!S]\)I.XU&GF-FX&@YT*"X@)2``````````3````#``E,3H
-MPA\V9IGD at BH,:ZL_7.<5;RN"Y2E9&!5!3??/*SB[&M/11+=3D6?QUCM%,3MT8+
-M?P$`;````&P````"````10``:(2*``!`$0``P*@!`<"H`0(!]`'T`%0&.=3D@<
-M_?":3N-1IYC9N!H.=3D"@N("4(`````0```$PJ```P]G!-M%,FBV`E$8%?%PGS
-M]^A2N>L>*,:J@>>;0/#&,<YX'XR7)9:`V`5C,SY3$[=3D&CXP!`&P```!L````
-M`@```$4``&B$BP``0!$``,"H`0'`J`$"`?0!]`!4!CG8'/WPFD[C4:>8V;@:
-M#G0H+B`E(`````$```!,````,+"6<;,"NLFFZC'GG?0KKO$0FZW4RH5(*3T,
-MO\1=3D/X>Y2Y#D+,=3DAT/<7$1<+4Q.W1EB)`@"8`0``F`$```(```!%``&4A(P`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DEX(FE at 37V358``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`/Y``P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``4FV!
-MU6^S"0/++1BFL7`J"XQ+C,C?I)=3D6N]NEB#DM=3D<!:.(LIPQOL*5>OH;2S++U3
-M8'E=3D3`:Q:L-OS#)WH4'%4F5ZR]Q/9DW!GWS>A_K`.+V[8A/C3":*?D3#V<5@
-M,'JDAWFY<'#,(O!F##Z)/ZKZI\^\53LE^)HL3F*MMW"/(/XI```DU[\G%>2)
-M):S.>]X&"611FE(4T[P%*#]$6H0IC]G015\I```<``!`!!:>.@;.NFFG9V at E
-M/;#(5 at WPYI^,````'```0`6K%FK#]+(^R#!64QA4&NO60M[#F5,3MT8BF`(`
-M7````%P````"````10``6(2-``!`$0``P*@!`<"H`0(!]`'T`$0&*>")I8$U
-M]DU6```````````I("(@`````````#P````@``!`!@````JBT[N2?)FY3:M"
-M7;)/%4,Q;+JO2E,3MT;&IP(`N`$``+@!```"````10`!M(2.``!`$0``P*@!
-M`<"H`0(!]`'T`:`'A>")I8$U]DU6```````````I("((`````````9 at A```@
-M``!`!@````JBT[N2?)FY3:M"7;)/%4,Q;+JO2B(``'@```!T`0$`#`,```P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``4FV!U6^S"0/++1BFL7`J"XQ+C,C?I)=3D6
-MN]NEB#DM=3D<!:.(LIPQOL*5>OH;2S++U38'E=3D3`:Q:L-OS#)WH4'%4F5ZR]Q/
-M9DW!GWS>A_K`.+V[8A/C3":*?D3#V<5@,'JDAWFY<'#,(O!F##Z)/ZKZI\^\
-M53LE^)HL3F*MMW"/(/XI```DU[\G%>2)):S.>]X&"611FE(4T[P%*#]$6H0I
-MC]G015\I```<``!`!!:>.@;.NFFG9V at E/;#(5 at WPYI^,````'```0`6K%FK#
-M]+(^R#!64QA4&NO60M[#F5,3MT83S`(`4`$``%`!```"````10`!3(2/``!`
-M$0``P*@!`<"H`0(!]`'T`3@''>")I8$U]DU6O#(?A^R$=3D4TA("(@````````
-M`3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````
-M"`0```(H``"(``(``+Z\4;)?#&L\/V-"8H.W*M?^3`T&E0]JYP\$V/&@6.#S
-M,M#K*+$H2#VF(34ZR\.TNM3`W7]XAFTW3B!AD/G3`,]__0K&&K[KK_I_S+HJ
-M!7ECCHV#'=3DDR(%?Q0FV0P5V9+!]15&!H)P3CF,Z1-P(2>D+C_^$\RU1M8EU\
-MO+6*9:T**0``)#0,;HF#S>\VKR]$@7$63E)G/U?Z^FA1#J6QQ1#L?)O)*0``
-M'```0`0(>3.S\#-XA5Z)E\2A66>Q(NJ()P```!P``$`%G[Q'+&BZ&)\F2((=3D
-M4_YFX>;)(PI3$[=3D&-OD"``P!```,`0```@```$4``0B$D```0!$``,"H`0'`
-MJ`$"`?0!]`#T!]G at B:6!-?9-5KPR'X?LA'5-+B`C"`````$```#L(P``T'SZ
-M3PGX/#.C@"UXG!47X<MRK at UJL_S7&O$]AY]P.3DR%Y`]65T<0>:S%[OVW?&9
-MW'&??MI_++L^3VO&S&)^[8O%\4R0M:;DT5J$?;%9YL;T\\1Z:IMHJ`H\1V#4
-MP`.=3DM"Y0*(T[\3`UH-LFKA*YI66WK@#)4'8UE(XBKHG at L9H;0$%%EQ;(W@$$
-MH;3[FFJF=3DM'6$2Q1UW@?[O(QZ^$DZ\`D>'Y>&@MME6%.S.4`QZ=3D!3D=3D+6]"]
-M1>(;144\TI,@^?M\'%?(2A(I;TS$X%,3MT9P$@,`O````+P````"````10``
-MN(21``!`$0``P*@!`<"H`0(!]`'T`*0&B>")I8$U]DU6O#(?A^R$=3D4TN(",@
-M`````0```)PD``"`"YB;R#2PW6B&O3^73-0R&!I!O:U_T=3DG'F<U,>&G']G/=3D
-M,,."(=3D^V$;'(5^;_GTRM,Y'IDC&/7%?2?6*@[30VK-PD),XML\WHTOI<V[_<
-M^AMG'28L\46(Y[WLC-HF=3D^0.0SY=3DFK/#[#@O6WNQ]X:1[RKC'((@=3DB-\K8D%
-MW5,3MT:F,0,`'`$``!P!```"````10`!&(23``!`$0``P*@!`<"H`0(!]`'T
-M`00'Z>")I8$U]DU6O#(?A^R$=3D4TN("0(`````@```/PA``#@7]2#3KTHCX$N
-M13[SHG+C]07$F^(-0.>+Y(H4;"2?HYJY[]Q7>].?]^A"<R;@2T#M"T,A'<RF
-MR]S7224>;FOS[%=3D8"$;'YQ`"-WCKV"71FIEF6%L`T6_,(U,7%%XB$6EA<W"V
-M(VXM,N92HP=3DT1N]SI<A3RW2Y]A^IW#RIK8.:HX>[[Z)DIFGNY&11?=3DU[.4 at K
-M(_>&2">\<7.$=3D+CW)_'#41]$'.3.NW&7?6K#92JE&YO[G[OWP[X=3D]!1(L/V_
-M6R>Z/A'>ZHU)QJJ9^L'=3DZT:T.FD6IVJR^#5;%"1@]U,3MT9U/`,`_````/P`
-M```"````10``^(24``!`$0``P*@!`<"H`0(!]`'T`.0&R>")I8$U]DU6O#(?
-MA^R$=3D4TN("0(`````P```-PA``#`Z"W^S!;\F=3D>ARA^6E^NZ9_OZ]Y\':Q@@
-M4O!T!XV;TCB]EDE4)]*893N):T>R,^5-03\Z$&=3D%WXQTN\6&W&[T/.YU\;;.
-MVY2SF;JK]37-S''^OB?B=3DK7`TQXF\P9+)WJ=3D#',<K"'5T$,QWA_KE^7RG2?B
-MW6IDY(5M-'W"CZ6`GJT at 6U'2N&\[WGX;O,FK\:0JN-WXK5 at DI`5Y_(UJS%"V
-M[<<,_*H<EZ+I0L;^7>,E32D5R<-R9N10 at .=3DUM]93$[=3D&DT<#`&P```!L````
-M`@```$4``&B$E0``0!$``,"H`0'`J`$"`?0!]`!4!CG at B:6!-?9-5KPR'X?L
-MA'5-+B`D(`````(```!,*0``,/$OH[*F#T8+(V[/3X at 6B^YZ%N&%;(C]#9?<
-M%FI^$$.;?^VA_64^_3KX9?,M4Q.W1KIB`P!L````;`````(```!%``!HA)8`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8YX(FE at 37V35:\,A^'[(1U32X@)"`````#
-M````3"D``#`NYS>V+=3D\#X,4#5U'H0U')L!TQF-G0)+(%/3U$+:6MVZP]\)IO
-M_LQ<*REH]E,3MT9+?0,`/`$``#P!```"````10`!.(27``!`$0``P*@!`<"H
-M`0(!]`'T`20'">")I8$U]DU6O#(?A^R$=3D4TN("0(````!````1PA``$`)R;'
-MM7P=3DQKU<#IYPWSKYE'O6V]_"J9`@.I'O%]#*NCT at _:T68#`@77.%Z`D[:U`5
-MO\E4.O`^&&B;[9Q at TPL!0 at P4ED81+2(4/@..@'^\O+D?:2A\X`ZGVE%JX>0(
-M,L*U\JX2P)%(Z30L\9K<9AUY=3D)=3DTN=3DJ6D4HOX&]Y1Y.\53IK\(+'''-0(9$B
-MJ#CCY\O&\!Q'N#?&-E;V^</WZI/]/[#Y4Y01I)!($OH()^+"0RLNZA<=3D>,&0
-M)23EA@]!U-IS#ZM,`'C5*=3D0(LTIRF,M[$BH.*PX:)1*7YUGQY at YV++V4<Y*9
-M;W*4PLKX_FN_P>^I:>0P=3D_%O;T#Y_^UL4Q.W1OJ)`P`<`0``'`$```(```!%
-M``$8A)@``$`1``#`J`$!P*@!`@'T`?0!!`?IX(FE at 37V35:\,A^'[(1U32X@
-M)`@````%````_"$``.#?H0)2Z5RF1?37&#$T'Q<9:=3DO,T89,JUE/[WQB:+W/
-MUS;;Y#NX7LZH*SYFK&MWR[8U%GG<A:;XB;/OV5*:?Q'RAM[%.^O5^EY;?O7(
-MO=3D&KS5K<UAXIA>`1G+U`UDD^(\C'4Z;F4Y':>1_<S(F;5ZUEDR+2"1GS$@]K
-M_O=3D>/?]0;T6ID>180DE6;[<@P+2N`_W3>TH&2*,LUY&$6\R7*T8H&^=3D&`7QZ
-M_[(+OO=3D;T_9>.MPG@::5*Z$8.#>,Y(::S`8&-]HOT+`C1$_6NB3 at 6Y`7Q+'M
-MA-(J8V)LL*A#4Q.W1G*9`P#L````[`````(```!%``#HA)D``$`1``#`J`$!
-MP*@!`@'T`?0`U`:YX(FE at 37V35:\,A^'[(1U32X@)"`````$````S"$``+!Y
-M5]+>]%04E6R_/V at AV38C8;?@?G(TUR+E at H8!!BDV'0 at GC/Y4'5SUS!*J:JJ/
-MLLZC&3IH(NW=3D.,[P=3D2$:05\'M+"1^K6SA&XVLWS?^&L\)$?8TM6A43!]`+F9
-M:F85;4`&&+P2ZS6H/3F.]*`=3DJ$_IY&U+V9WT94ZDQW2\G%`R/$9!+8K17%"2
-MSY8M:T4HR=3DR%(@?J3;X@?BU:X?3._H:7A)(RE4U(<3X`<'H&4Q.W1GF[`P#L
-M````[`````(```!%``#HA)H``$`1``#`J`$!P*@!`@'T`?0`U`:YX(FE at 37V
-M35:\,A^'[(1U32X@)"`````%````S"$``+`+:Y([$X")TZA%&IM3M$L:C4%+
-MM>_Y1$O@[C/=3DC'^Z*#/+AUQK"RMN!L)]D,DY,S6<$0%AZV+&/E4=3DI?>Y2S3#
-M at 17Z>(7B:?%B7R0:65HH<S^>H#[(%A0WH-V:MG:\.!6)R3 at 82DEP7>?B9/1'
-MC+6;Y`[.IKSZ>XP`POW(#V3P&Z\3.&(07+ZX,P11C1?)M:H!8__B]TO2A'12
-M]+!J<S-4<&>0:E4/":_-2L-$4Q.W1LO8`P`\`0``/`$```(```!%``$XA)L`
-M`$`1``#`J`$!P*@!`@'T`?0!)`<)X(FE at 37V35:\,A^'[(1U32X@)`@````&
-M```!'"$``0`SZF?TBQ((42VCF90I$7-=3D_#-S"'/4"HX2XR!V]1LYR8\$MS[G
-M)D60BF39!7URKV3R7"%JA-Q9,IB:GT$F-1G6>6EW;\X^QNO/1JTSY/S.^JR9
-M^>[RU`7E*E#!*3DI*^<Q9-GP[XPCY1&PE)2JR[:!9#K,F8DSZZ.-ZX36XWY_
-M],)Q^:Z-.<+SYE)"TOZ&XY/[3K+0[;7$9I3D[D2:1JOWK?1.P?<;SYYA!U0S
-M/X%I<4;2<A8*!^Z7(QL'R(/GAU46%72E>RR'K13_H!B=3D?X at 13HO4#8S-:"`X
-M]&@2FE(6A6*`F4/;KB[,M[>2U#/G;VZ:/*/XKT`%8'47BKI3$[=3D&C>0#`!P!
-M```<`0```@```$4``1B$G```0!$``,"H`0'`J`$"`?0!]`$$!^G at B:6!-?9-
-M5KPR'X?LA'5-+B`D"`````<```#\(0``X*:$GTO/99;_BNS"MV=3D)M#'G!6G0
-M;(+8&0!]J9RKITQZ!US]1Y)[#7<;^J+(:FR;)JSXQ<T#+"?=3D`CD42=3D;MG_S$
-MU27Z*E0NO%(E]\`NWF*=3DR3X.FH0M;G-8SK-]S&:IAH8D0R5*;$-*A'X9ZU=3DV
-MA86G'[+:<8X7^19?IY40/`EZ;Z883HEH7Y3TR=3DS<, at I+H62E>FO9PV#`E]:D
-MDC;82/K&X30UC_XIHW7\9QQR9K[WZ&C3R^`7DS"9I:%/.'/(X9XO>&%HFS&S
-MT?>@C#O>2<H?H.]9\(IR2>OQ8_M3$[=3D&+?0#`.P```#L`````@```$4``.B$
-MG0``0!$``,"H`0'`J`$"`?0!]`#4!KG at B:6!-?9-5KPR'X?LA'5-+B`D(```
-M``8```#,(0``L-`(:<&G5A'FE^KA`IQ;X:-0/X]M3$W@##_RW?-O)J[F0&:3
-ME;CVF#"JCMIVKACJ5J[]]M=3DU?YWC)FI]C+`0*)\WHOJGE]@U[Y10O(:@L at 69
-MU at L@5Z:>8F5G;W);M9M??;>\H5P<I8:QR4%^_Q(D+VJLV>-7%2UOVV+/<=3D:Q
-MNH[S<"[!P8"+G5 at 5K<2HU$%]2UXL"`(/%DDT\DOMU9ALIRHW<V-ZBUO?S,=3D]
-M\/%3$[=3D&C!8$`.P```#L`````@```$4``.B$G@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KG at B:6!-?9-5KPR'X?LA'5-+B`D(`````<```#,(0``L-[F86Y4H6F$
-M4B$H'DIA0;[EQ%=3DJQRP1I)^DKSR=3D]SL:!NYTQ0GEYVB>PP03L"SP49,T8MY#
-MBI_&/:1\3ZL&)NN^2R;FY8[4)O`N0XJ=3DE^;/V'E?!WS#\;U8D8UM2SD?DM-X
-M''3Q/+LLOPBE7#%A_V[C,/6Z8>@1$=3D\Y,^$#1"N%),7\J(0<8K0/5FC?'8).
-MI,U%(+FXH22IB&)+<408A;QB%!,^92JCW(,T*J53$[=3D&AST$`(P!``",`0``
-M`@```$4``8B$GP``0!$``,"H`0'`J`$"`?0!]`%T!UG at B:6!-?9-5KPR'X?L
-MA'5-+B`D"`````@```%L(0`!4(5*2!;I=3DX-_N^V&=3D3>?R5\YJ/"0\,>\+XIZ
-M)<BJ%W%`8QLXLN;,\^IC1 at .J/C#JK\,H7U=3D^I/-^7,^@C(@C<[Q#ZO=3DY`8-.
-M;$[K^F#HX;$9K:8O*V>X'2.P#9NJXV#*2"GU!O\S+!]AI=3D'[WA((=3D:+E";:B
-M[P1GKM^FI%AO&C'F@>H!3=3DEB1,E(8M&_QC!!N\EO@))I=3DEX.*PI_`H"\U085
-M\YC8.O[9M#6!23V+SG.!\@]U]EM&>MUU%F/H$GQ5W,EWXJO0&B;)/#2OO8A&
-M0EZIVZZY#>HJ&[6_KM2T:AKTOQI$<#VJ5+4QP9G&?C?)YRN_@(4UK\=3DW<NZ)
-M&E280VU2`ZS`R!]C917@()!G5;ELLE"'=3D#1T&BE97W!)SJR%]ZP=3D*(K>NO&P
-M'@+71OF#V)*CL7+A2S+9,LVS/0GH%[Y'ZQ.T[373#\DNB.U74Q.W1D%Q!`!<
-M`0``7`$```(```!%``%8A*```$`1``#`J`$!P*@!`@'T`?0!1`<IX(FE at 37V
-M35:\,A^'[(1U32X@)"`````(```!/"$``2`"R;SQS1:A$#*QRJ"K>TQN-)ZH
-MT=3D)+<8_R,'2Z('72,<TGCCZ2(O8_N_8OL4 at V?"+ at V7$P-'$<!2.)"=3D>0(+OI
-M,3?0(4[:494GFS'//.+6+/G/C!?)XHS(#_OV,FBI)- at B$JA[?>W+Y]Y*`*E1
-M,5_G0D":]9O&IW>8U2><*SJY%M at D`GYP6TG-1<.E\B0=3D>4RM/I7C\M=3DO`_0O
-M^=3D+P5Q8L)L$`/.RLSTP?#RG':;KE\6VF3)S%)N=3D>.MHS(_V*S]9M6])]RY0%
-M=3D5!H!*[KU;RV>CX>Z60`BQL>;9C&'4"WZJ:JZ\E.GU$:)+X4>Z at H)*QI80NE
-ML1M\36G6I->Y$TL&\(;?&J"DSHC%MR`;OOM>BA>^@;^09?7-*[0L)E,3MT9`
-MF`0`?````'P````"````10``>(2A``!`$0``P*@!`<"H`0(!]`'T`&0&2;G*
-MVZ.-<:0]#_.X#K$=3DWJ\N("4(`````````%PJ``!`_<?D8-S^9S'[!;U@*:`N
-M[%.`AZ9,F')(L0TZ[I$RLE5DC=3DC%U6=3D(3GBSAZIW&>1%,_4KL9P=3DT%<WMY"U
-M4Q.W1I"C!`!L````;`````(```!%``!HA*(``$`1``#`J`$!P*@!`@'T`?0`
-M5`8YN<K;HXUQI#T/\[@.L1W>KRX@)2``````````3````##^")<?^MQ1]RU%
-M;5NHN:OL&`XITJ"I1$LKFW68(VK`*JTA=3DOV#2KG`$Z`Q<E,3MT:$L at 0`;```
-M`&P````"````10``:(2C``!`$0``P*@!`<"H`0(!]`'T`%0&.;G*VZ.-<:0]
-M#_.X#K$=3DWJ\N("4(`````0```$PJ```P+R9-__8XTO!::$#9P+?%LD=3DXI(HI
-M.>B!3`MTC"W/2932GVC5H%8A[:9&FCE3$[=3D&E,`$`&P```!L`````@```$4`
-M`&B$I```0!$``,"H`0'`J`$"`?0!]`!4!CFYRMNCC7&D/0_SN`ZQ'=3DZO+B`E
-M(`````$```!,````,#'FNS2H_3+:SK_;#*\KQ\2R=3D)I@<']')I][:=3DX,"E*7
-M.^?FO+?!D*PTKA374Q.W1E[D!0"8`0``F`$```(```!%``&4A-X``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DE5=3DXOG8,`3-H``````````"$@(@@````````!>"(`
-M`'@```!T`0$`#`/\``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``288R*T=3D=3DI$],
-MYW2CT<^>PO-$F:EK#W74K'1D`6MK>KU`Z*:]X.ID+A8L4-C]H?8HQ;X`X3?9
-MXY at O@R4QJ1R3^YP\$(FF=3DH:VLH9N4$_8KLQ,[@Z04D_\*@G.5?]R&?[/6'20
-M>:*_P]Q^5H^$?7^&X'IOY[_+0XM3PU0J<T,=3D>V4I```D\%P.FD)EE]EI*F-2
-M#VOV")1ZI5%]C#]2P3.PT?&CQE0I```<``!`!&+YM.\I509E)!?\[(>@*U#;
-M?W-F````'```0`7 at R4I5#Z+VSCNVHR$B.:'0>M9K`%,3MT:7\P4`7````%P`
-M```"````10``6(3?``!`$0``P*@!`<"H`0(!]`'T`$0&*57>+YV#`$S:````
-M```````I("(@`````````#P````@``!`!@````J!&0YB44-G$1&)P>(LXS<&
-MKJ,7/E,3MT;<`@8`N`$``+@!```"````10`!M(3@``!`$0``P*@!`<"H`0(!
-M]`'T`:`'A57>+YV#`$S:```````````I("((`````````9 at A```@``!`!@``
-M``J!&0YB44-G$1&)P>(LXS<&KJ,7/B(``'@```!T`0$`#`,```P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``288R*T=3D=3DI$],YW2CT<^>PO-$F:EK#W74K'1D`6MK
-M>KU`Z*:]X.ID+A8L4-C]H?8HQ;X`X3?9XY at O@R4QJ1R3^YP\$(FF=3DH:VLH9N
-M4$_8KLQ,[@Z04D_\*@G.5?]R&?[/6'20>:*_P]Q^5H^$?7^&X'IOY[_+0XM3
-MPU0J<T,=3D>V4I```D\%P.FD)EE]EI*F-2#VOV")1ZI5%]C#]2P3.PT?&CQE0I
-M```<``!`!&+YM.\I509E)!?\[(>@*U#;?W-F````'```0`7 at R4I5#Z+VSCNV
-MHR$B.:'0>M9K`%,3MT9J)P8`4`$``%`!```"````10`!3(3A``!`$0``P*@!
-M`<"H`0(!]`'T`3@''57>+YV#`$S:7 at 3U"^M8E_8A("(@`````````3`B```P
-M````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H
-M``"(``(``!_0S:\E at C9=3D.R!>4*[J-B2]&&ATYE,F?N'5+N=3D\:]QO%9;?F5^F
-M1"7$X2,[?5VXL`KO;-#_+0T%9J/!+'9$/<(0G-_((NL'F_1 at V/H3AFMJ8Z*%
-MY(&38CU#S3>2GQ4R036""X-0*#%HY%W$Z=3D>U9(!("S&FOG6'L:?1Q$XD^E)F
-M*0``)%+-/(X3TCPS\'L,PQ'HC<L;2`N[S3"E`AR<"!,+M-0$*0``'```0`1:
-M/L06B:2-%SLST2+"*\6_#;#N)````!P``$`%*DW at P+`_#K'[I`9FF%&)[U#@
-M2WY3$[=3D&5U8&``P!```,`0```@```$4``0B$XP``0!$``,"H`0'`J`$"`?0!
-M]`#T!]E5WB^=3D at P!,VEX$]0OK6)?V+B`C"`````$```#L(P``T+O:U7]V37:\
-M6F+.4.7"XA>@5I(D&(QV$#2'`QN$GIPU]M at GIUP)%3_O#RMR\=3D_0(B7H<5Z'
-M7-C&=3D5DB,.<NAOF?>0X>-03A\$Z\[5;[()I%!2M-^*DW"P=3D/BKJILES/`W44
-M09PC(T;6,D,V\T+:`WJP)Y`2EXK_38(!<%7?<OE\7H\Y9JSUU0]FQ+V8T6^9
-M)]7P&"CP'`LJP0F+$91S"(UUL8[C=3D03)J!6NQ>%>@'OX8?)F'X*`K+H`PH=3D^
-M9DB\B"Y=3DM\O)B%GY&PF>,5,3MT81;P8`O````+P````"````10``N(3D``!`
-M$0``P*@!`<"H`0(!]`'T`*0&B57>+YV#`$S:7 at 3U"^M8E_8N(",@`````0``
-M`)PD``"`<\I_-,A"V$34L'CWR3(AT<$E$]:U+HJ*-_9XXY[KD?9R]^ONI3XI
-MV522+^,,#+'$!/JTSZB\U,U-%;!I3:^=3DVE)TPENKI;W(QO;_"E7_%=3D,^459(
-M:.^ICKOC=3DV)]EB[CN#0#@9 at T"KU5]RKQ&[UJ#3,N]-3PMC]I4JR32E,3MT:2
-MC at 8`'`$``!P!```"````10`!&(3F``!`$0``P*@!`<"H`0(!]`'T`00'Z57>
-M+YV#`$S:7 at 3U"^M8E_8N("0(`````@```/PA``#@A<ODZ]!'\THUZ&\P#@T&
-M<!W!IO=3DK9>0I?FV"(S1B&>8W4 at .'\.W//:DV^%V1H"@K>.C*V&!UV9-8YL2P
-M(3H"[F'/R>QZ;"AT_!]]V2`W[ZUN#.SW_;#Q%9&:)$]KQ&E>9]RD1$_\JHQK
-M]:U33(&7P1^(NV"A7=3D/HC%5*Z-$EKDIPP>H3ZYI-'8_:O$>=3D_/O;%.:FT(W!
-M&_;!`\`HQP%A?]_]RM/";;`;];%^CA5H_]'=3DAS%8M_M#%\Y9=3D9\P^28]YD^M
-MM2 at Q.@*(-VE`<.W7\S5C^.>4S?QMQL(!OE,3MT:/F at 8`_````/P````"````
-M10``^(3G``!`$0``P*@!`<"H`0(!]`'T`.0&R57>+YV#`$S:7 at 3U"^M8E_8N
-M("0(`````P```-PA``#`DI('#01M"]";UZI734 at D0N=3DZGM*I%_;D4"1O-$B9
-M3NH0Y`UZ]AR^&U$)GE[S&/%%R_7 at N<\D<3-(%W"RA9Z]1'@9/C\Y\K0OD/@Q
-MZRCFL>)CBJS/UY,N:"FD]J`:*#Z#GS;AUIQB`M91LZ"=3DW"BI,S)VC5.6X_R3
-M9,,SO`,0R?;.4^^[WH6MK9/+IE-#7+.&]A9"\NP+BOQ[&ZZ!*,/-0#0;NDXE
-MDOP][;E-=3DK,K,*<8CR`,(H,&`*DM"^53$[=3D&%:8&`&P```!L`````@```$4`
-M`&B$Z```0!$``,"H`0'`J`$"`?0!]`!4!CE5WB^=3D at P!,VEX$]0OK6)?V+B`D
-M(`````(```!,*0``,/=3D`%=3D#\,#\L7?!&NQN\1:LL&/`A!4VZDXD'/&RJ]^O2
-M)=3D"D"?</42;LG`FJ4Q.W1D[!!@!L````;`````(```!%``!HA.D``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y5=3DXOG8,`3-I>!/4+ZUB7]BX@)"`````#````3"D`
-M`#!R^#""&8AX>;KP)B-WV!\")=3D;Q.^I51K=3D+!KN>N\QR9$46T>4<IC&76-:0
-M+%,3MT8XW08`/`$``#P!```"````10`!.(3J``!`$0``P*@!`<"H`0(!]`'T
-M`20'"57>+YV#`$S:7 at 3U"^M8E_8N("0(````!````1PA``$`OZK"&-.S^<)`
-M2XM)I+/3^T`;=3D*-#!9=3DPHQH0*,I*7::O\I.=3D;ET&/+YY'JU`YLUMP^K]SZV0
-ME_#\HJA_,,W)!3(6#K5-N$20#[*)-HENI+EWICKPK+[78>H\C?@80GSM+CH6
-MG)6=3DA^Y=3DP6XOW@\T8/E`JWNL![2&-T5YJ7(+KB,RT70Z`.P/AAZXQ-$4@&A=3D
-M4VSCF"++%8*'?<?4%:Z!FN228DLB(1.UXXT(+]Z1_=3DCN2[WWE%EL%8`'#QO*
-M/):!Z/S(KNV_7&1N??%=3D0U[K4%A:-4/7U(*/5/X,^QH[X1R?@S&GLC-TD0#>
-M<)9@=3DT-;OY@"48#B:>KIDJ_H4Q.W1B'I!@`<`0``'`$```(```!%``$8A.L`
-M`$`1``#`J`$!P*@!`@'T`?0!!`?I5=3DXOG8,`3-I>!/4+ZUB7]BX@)`@````%
-M````_"$``.`5?K+-5U)!@]+\*/'528LD"D&".6+Y\TT/0[%R775ZIB><>GBI
-M!-3TFL.:'E]B6%+K=3D>(\]C3M3XWQ'A8VN5<JZ'?)*_LXI^J]`$?D;^52KNKN
-MD`$. at G%C?XJUIO\O'VJ>/"=3DG\0D`UOL0M#^Y0,3</T2*=3D9R:E<O6S"&WK[5M
-M2#\H:B/4X,)G15(+'6\P:S`+/S-'%)6*%;E'Q"@1"R.9[O2M=3DGQZ>"UBQ4$N
-M1K5U':A+S)3K:;BUR!S7\_!KO$@6)-G4R\'0_T/F6<%:!!P+%6%W&+A=3D[[)Z
-M[P at 14Q.W1KSX!@#L````[`````(```!%``#HA.P``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y5=3DXOG8,`3-I>!/4+ZUB7]BX@)"`````$````S"$``+!6%,E7DA&1
-M#=3D#TE"4Z9%5K`@UO,?5O"]KW3>$G`!P$K1N$D0=3DQ)5<CY'X^5.5X#`A]/<8M
-MJ>J%0HF&ZFGCR$81&IMN:7 at W.5:Y"AIX8?VHI<C7.R%.2LF3\BE.\D)'4YXL
-MW*9/%1J.YG.C%YO<.XQIJG(.<DJTH1;K5DK`<\CH?/V-;,2NT&XRS^M*7(HL
-M(%59D7B=3DUJTTU$?]#ULA0M,)32F*1ET!"#W=3D/L at 34Q.W1B$<!P#L````[```
-M``(```!%``#HA.X``$`1``#`J`$!P*@!`@'T`?0`U`:Y5=3DXOG8,`3-I>!/4+
-MZUB7]BX@)"`````%````S"$``+`]^D5W_3;<'9OVJWVFR64:V.^]#;S)E\]M
-M9NT&S'OZB"J4%.[_SE^U*&"`BX/SVAC\4A]01_J>$$B=3DC":*(8T*WSHJG]R4
-M5-`JTB7/P5.S-%ZG'6K&>"E:DP>I`XQP,.'*-`DM2V+I#L^A!E)(,<U?Q75Z
-MHY)`EV\EPL/J70CQZ+O#3>G"T+SBYCY9ASN>57E:U53*T,^V4>!'D<=3D34;!$
-MU.]&R@,_K08).AD[4Q.W1H8Y!P`\`0``/`$```(```!%``$XA.\``$`1``#`
-MJ`$!P*@!`@'T`?0!)`<)5=3DXOG8,`3-I>!/4+ZUB7]BX@)`@````&```!'"$`
-M`0`WXGO"]T;O)N636JH!T]#F=3D:]1V'QA*D^1R<S1:MT;SU^Q<=3D]/[E7(A?,J
-MR,"5R_ at 7D-OUIZ!T/,^(\'.3K&E+[DZK*]U]-C5-)U<G@/F+LE_[[4`DRI2G
-MUG#:/N!!0RJ`B1I3B`XOQSVUI?=3D+>O4W,6#8$6F&, at 0A=3DP76=3D?X!S8<X]:>U
-M7!Q:.;F;E%\/&>_V!O![G-N5!4U-ZR=3D*'\_\WQOW9QKW+4P7><]QH/8?2FEW
-MLCK]R=3DCP7#IY7Y%>.F,3_S$E'X5:?JNJ69MD_]OV<8=3DU>Z4>#(DI`!S[A":3
-M%9$V8!*YMFPCB],&_ZPHG;73%B/YX`M!#?77<NE3$[=3D&`$<'`!P!```<`0``
-M`@```$4``1B$\```0!$``,"H`0'`J`$"`?0!]`$$!^E5WB^=3D at P!,VEX$]0OK
-M6)?V+B`D"`````<```#\(0``X%Y at GK[_HZVCQP5_R:R]<G7^6`]I:3/Z^2%U
-M)DE9K"#I^2:_!8<2_D!7_^X-,B?N^A8G)R0ATN`?F/UW9^Y6`(/8M!L4/";S
-M7`TS^'T%:^#_149<I"P6;,,K*4+0`:<I<QPG/F@("?G=3D1BA)!*$9'FR(5PQ6
-M%@VXG#3M:X,+)O#W^\0:MX+;E;+B#H[_PK[RQ\/\T1I[&79('2,D<$ZV`K<A
-M0%[*M`PNP=3D&<*C0]VNF5C["K.@>$.MNNFV;U[YYNB)6Y_^#9(W&.V[4"'54<
-M467T<(?OWH_`L5G:VA]3$[=3D&858'`.P```#L`````@```$4``.B$\0``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KE5WB^=3D at P!,VEX$]0OK6)?V+B`D(`````8```#,
-M(0``L&5J4,_Q@&H.R8I#,<L-D<A:<!RF3]$_S"D?"C/4C3.&*.*H.G-L\&)S
-MFWBN"@?D^UCI#L,Y=3D,98Q&K@<=3D"43XZ15E'O59U_891;USV:^P12>22<=3DDE3
-M=3D(R5S)P>=3DWDN1A0F3@)G)PQ[0=3D&]";[7\Q"+3*+=3D+5$\;6$#ME0?)HB5B.IX
-M,7NY;IZ!EN(+W[<C37/DCJ*;-M at -N/,#CO`1=3DP9H[N^(G_WNA[,]<PA3$[=3D&
-MYWD'`.P```#L`````@```$4``.B$\P``0!$``,"H`0'`J`$"`?0!]`#4!KE5
-MWB^=3D at P!,VEX$]0OK6)?V+B`D(`````<```#,(0``L":ZB]HAB-OIU:(U8EZZ
-MFT3D>Y=3D8O-M-784^D'4EM8-D1:/ZS3'MJ<"15`'^(0F+OUX,!-UNY6[,,)A+
-M9>,"3BR=3DHCW4P%/Y98"7/.!B*;T[+;_1-=3DI[U4;>V.Y%SX^;CNYUD>/#(!L)
-M]:$:;*1)R=3D]VDO7I,/>T\D:?0NXN+J^91Q=3DQ3G2_T2Q!;U(*A?L9%GI[9@`#
-M#\=3D+Y4J,VG5 at 5P>S-@'])^7D@<ZM at 6=3D3$[=3D&T9\'`(P!``",`0```@```$4`
-M`8B$]```0!$``,"H`0'`J`$"`?0!]`%T!UE5WB^=3D at P!,VEX$]0OK6)?V+B`D
-M"`````@```%L(0`!4*6<NBL%OM#HJ2L2\.A!S"F7AN9%OD*/`^LVXIA:N3U5
-M<D>J2%/,7`=3DJ``+S:#`G'`PW!_U5"0"D>CN at -KXLL_/J8-\>A\!L<_@>GL7Z
-MQ4=3D9]:\@Z<YU]&5/LEF<;NU],%';JZ(8##.[XG%3/(Y7.8--S;9_(XZ]T(^<
-MPA`&E60JX$*WVR73X'#)`1WD9:/GT<ERV"A_813JX5<YR=3DCM:%]9X;UUP&1X
-M2 at HK&A#U`'RY2OKQD;+L.WY!Q]W0DWH=3DF!=3DWW-U1C4)S(HAL,Y1=3D1"].7S,1
-M/#KQH(>9.J:)O;KB.OO^#8 at FG/7Y0@\;":&NG:O24*MX:YMN_T=3DMF'21D&((
-MM2.>B89_':UVW#=3D1FF/]*V.;=3D3/IZ+G,1%1XPISWVZ?M.A7?,P/:#HKB!6NP
-M\I=3DR<&_>:Z-,!BT$(4YQI/T?$A-`0AZ+:=3D4BULUG4Q.W1K/4!P!<`0``7`$`
-M``(```!%``%8A/4``$`1``#`J`$!P*@!`@'T`?0!1`<I5=3DXOG8,`3-I>!/4+
-MZUB7]BX@)"`````(```!/"$``2!"A^V[[>)AM6`$^PD@'C:)\7WBLMZB4^?H
-M@)K<'8"2*GX at R"$?!)NW$E+M0C:9OW_&-B,V+=3D1[!Z5OJ$7W/36B!8O4Y$=3D:
-M3L#$!YP4!Q=3D5!U9[Z`/8X#%3&.8?&:2XELX;K+1%M*Y(5?7 at 0?.,7[T%IK;6
-M[F#*L2_E<U=3D:UF71VO,P&0%:XF$P?_2?B7JGN]MV at 8&U4GXH,:H4_QC]\:WA
-M$?+&-$/9Y;^6<3(JD](X;<&0P2IXI]&SC^=3D\C%^APJZHLW(H6WNQ31EKK822
-M?2$2U/K_`U2T14%GDH^&.3OK0J20/]_K'A:J*5K0JJKASL=3D7ZYNTUD`L:*&N
-M3,IL3)D9=3DDE&/]I')(R/KSBRZZQ$.EV_#C=3DQ/"2JLN?*>E,3MT8^_`<`?```
-M`'P````"````10``>(3V``!`$0``P*@!`<"H`0(!]`'T`&0&28WO(75U9]WI
-MP#0ICL'L4:<N("4(`````````%PJ``!`!B(/1R[E0*W2]!5-5U!X0U166[L=3D
-M+@$T8(<F3JWH'UUJ]J,#;A)X<,"'V8M*J2$7TU%8W/H=3D?-4*8</N4Q.W1L,'
-M"`!L````;`````(```!%``!HA/<``$`1``#`J`$!P*@!`@'T`?0`5`8YC>\A
-M=3D75GW>G`-"F.P>Q1IRX@)2``````````3````#"OJ*Y]T\F#J?-2.EZI>U5'
-M$W8*G:NOF8_WXVJ[*^'_Z,'W7@#ILG$=3DQUI;H%,3MT8D%P@`;````&P````"
-M````10``:(3X``!`$0``P*@!`<"H`0(!]`'T`%0&.8WO(75U9]WIP#0ICL'L
-M4:<N("4(`````0```$PJ```P*OV,>Z<":U=3DE(>-66U4ZL_<V'@URZ!+"=3D'-?
-MT$.`=3D1CR>&$=3DT-PCRETVW=3D-3$[=3D&8"0(`&P```!L`````@```$4``&B$^0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CF-[R%U=3D6?=3DZ<`T*8[![%&G+B`E(`````$`
-M``!,````,'J9=3DO)XRN5QR-Z at F,;N+G#4!G[W1T7L&3"?#`(XE,_ULECU%$%V
-M3PBT+Z$44Q.W1FH>"0"8`0``F`$```(```!%``&4A/T``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE\4$]F5`$Q`D``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`/]``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``%)V&5+H[ID76>A3Q-HR8
-MV8Z4`_!VBQO<RHW[QNW'-+M#F%VI,Q\`J43U8>Y`OXQ(_$JKC'PBU*FRK>8,
-M'$2";R`/TTFQOEKLGX,/08\M+K'&E%5A&.T52!E).ST9[&];9<*2<9/O+HI7
-M*'QM=3DSG;U at Z^`%0&1$OD^\IM\,UR2H(I```DTW7B2[6M at G9R2$=3DES!=3D2[V17
-M5*"3.0EPTUW0&S4WM>XI```<``!`!*Q^0"EV"-2^SZ.&(J:(]]-P"6;_````
-M'```0`50_.*4G#M&CFZ?OA74`=3D&\+*C3\U,3MT8&+ at D`7````%P````"````
-M10``6(3^``!`$0``P*@!`<"H`0(!]`'T`$0&*?%!/9E0!,0)```````````I
-M("(@`````````#P````@``!`!@````JE2,ZLVU-C>:KO(Y*NE, at _5>EN]E,3
-MMT;_0 at D`N`$``+@!```"````10`!M(4#``!`$0``P*@!`<"H`0(!]`'T`:`'
-MA?%!/9E0!,0)```````````I("((`````````9 at A```@``!`!@````JE2,ZL
-MVU-C>:KO(Y*NE, at _5>EN]B(``'@```!T`0$`#`,```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``%)V&5+H[ID76>A3Q-HR8V8Z4`_!VBQO<RHW[QNW'-+M#F%VI
-M,Q\`J43U8>Y`OXQ(_$JKC'PBU*FRK>8,'$2";R`/TTFQOEKLGX,/08\M+K'&
-ME%5A&.T52!E).ST9[&];9<*2<9/O+HI7*'QM=3DSG;U at Z^`%0&1$OD^\IM\,UR
-M2H(I```DTW7B2[6M at G9R2$=3DES!=3D2[V175*"3.0EPTUW0&S4WM>XI```<``!`
-M!*Q^0"EV"-2^SZ.&(J:(]]-P"6;_````'```0`50_.*4G#M&CFZ?OA74`=3D&\
-M+*C3\U,3MT9.9PD`4`$``%`!```"````10`!3(4$``!`$0``P*@!`<"H`0(!
-M]`'T`3@''?%!/9E0!,0)6(6HST?Y)^4A("(@`````````3`B```P````+`$!
-M``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(`
-M`$C.8B<Y#;L>FN5)W4&!Z*3%N;<Q#W`-=3D*U`085THN\Y\ZM=3D,WES#9>[E&,=3D
-M1F]KW$R]E<YF,R#TBJP3>-W_2ZHDU<#!LL_W+;7&\/9PB7]@<`KE761Q&F4O
-MJ:I`%UUT`T&^(@-'G?[R_-R(20^:J:WL:QL'(;?U3P]%QHT^25TC*0``)(?$
-M##/-%47$Y*4Z8`9%JE5]^08TZ:S[(12S$7\\RM1[*0``'```0`3F9OV1[@)P
-MG?>8+;*D'6R-_Y.*%````!P``$`%+6HCQ8K-X#\E5=3DC91P]<;=3D at XMDI3$[=3D&
-M>I4)``P!```,`0```@```$4``0B%!0``0!$``,"H`0'`J`$"`?0!]`#T!]GQ
-M03V94`3$"5B%J,]'^2?E+B`C"`````$```#L(P``T'P at B6:(5M+R-P-;"&#N
-MRY(6U.*NT5+L>6IT"IM``*#M]Z[+/+`9/D13YZ174K350/>V/!=3D'[]G>&/'#
-M,[F_H305ZI@:C8:6:>O2R0!Z:>"B@,H^I:FD9;[8B&T%%FF=3D(,RG0Y+P\-!P
-M7R40*5$^N$D=3D[8XQ2XF3F"!OZE:$/HZ)YJGYG6WC8I0[/Y<I>&C`_4/`D'1/
-MRMNC)[*+<%(`Y'+2'B/[IL:8Z=3DTWH6U#_(-R`/Q_^+[A99\!I2_G>!!R'E>O
-MV'?FB&?7_B^SL5,3MT8]K at D`O````+P````"````10``N(4&``!`$0``P*@!
-M`<"H`0(!]`'T`*0&B?%!/9E0!,0)6(6HST?Y)^4N(",@`````0```)PD``"`
-MQN`Y_5.Z!&D!-VPLIV1V2_(4A9TZNGV6(HR26*?=3DN<UL,;QX$@Q#FNMDB*9<
-MUQ%'"NR%',7<'>KF(/):9!`O9IKG+EE)(ZLIV*-4['A^%U:_49Z</3HQ7&WS
-M#P at 9069]5+7:9MBF1$]BEE.V-<RH.I7Q0M3/-)N/*=3D*P"U,3MT:SS`D`'`$`
-M`!P!```"````10`!&(4'``!`$0``P*@!`<"H`0(!]`'T`00'Z?%!/9E0!,0)
-M6(6HST?Y)^4N("0(`````@```/PA``#@'D1E^EE$YY>&;J2`9TOFRL[]-(&)
-MP^ZR:5ZZ:%!9\9)S_+FV$P>WA"2)%-70T^'';:^^MCHW;,B,+$8&#:(/3SB1
-M/,!Y:X>GT<!VH>JAJ>[]'#9+#3A33'S/G-4<[;'Y<%ZR6YH)@*P&'CXL+6*M
-M=3D6T(WR.ZZB#=3D%#RT996BN7K:7,;4.%@P'!R+*R_!F-&'^3;B;L>5K--GP0K;
-M\B;;C71L3ZF,6Q&>+9VXM=3DH,2X3A'EA#VT$8]7WC+-Z\K]\SSKOR$(U7+\^'
-M!6);/_0N6D]B=3DG>".^LL6_'>,5,3MT9;V`D`_````/P````"````10``^(4(
-M``!`$0``P*@!`<"H`0(!]`'T`.0&R?%!/9E0!,0)6(6HST?Y)^4N("0(````
-M`P```-PA``#`=3D2^E\.6\1X9.!3D;Y;/(*E+5;H?^_!@@?0:ES4M-P./PC\(E
-M-'BA2=3D9Y7I#6>;;:2=3D&S;;,>%957#9..APM at FXA&0]GI1,"GW-DGA"7X0Z]A
-M%=3DA`P0L_R)NI\4!V6!$6F#13,Q\4E:"-O::HU"#`5F3JJ3KBM^%18[ZXD/UU
-MD-B@#8/GAS7IE;[9KOF86,T!]/*VBJET8C,IZ(:M(VW3?Z_!=3DI('%^R+<F#H
-M`Y^MB7&R@:D[I,=3D.$*)QMU]3$[=3D&E.()`&P```!L`````@```$4``&B%"0``
-M0!$``,"H`0'`J`$"`?0!]`!4!CGQ03V94`3$"5B%J,]'^2?E+B`D(`````(`
-M``!,*0``,+T;CWD/4 at MJFRA#OA^YO62 at FIA@SBY<[MS,I3A/PR!JF!7WE[;_
-MR0FJDIU,4Q.W1O_^"0!L````;`````(```!%``!HA0H``$`1``#`J`$!P*@!
-M`@'T`?0`5`8Y\4$]F5`$Q`E8A:C/1_DGY2X@)"`````#````3"D``#"G=3DYQE
-M+)FUHCKLC'!58H8F`+,>P/?23 at 7\4#[6[53&/[H!;4;H96AS\_PX;E,3MT9@
-M&@H`/`$``#P!```"````10`!.(4+``!`$0``P*@!`<"H`0(!]`'T`20'"?%!
-M/9E0!,0)6(6HST?Y)^4N("0(````!````1PA``$`\&A1:%,X8#&R[/OU?%>5
-MVBH.21L+P8V<9"#M?&-MCI&I[A!:]T[K_^]KE)DFM)A4#JE;',/%0 at H4R]&2
-M.X88'T3=3D,UFP+N_-S_QIY-G?<G9A&0ZKBQ_ONO,F4[J3.N7N,`(U,!>-V07<
-MCHO/H\-IU8!(AUU[(S^>5K?T)-"-9H*WD?L:#1.=3DP2/S!\31$V.^V13/2C21
-M?33I"X+/&1[EIW<@@6>LD`;?G0W:Q4,S;DL(=3D?_A=3D?9A=3DYS7[3M9-)*1L;LU
-MCR:+0/*4`3E+Q7<$UCN*S3/LZ_Z0B at +(#O4PD*2:0:89\`DDH0!#38(GU#F'
-MXDT=3D#]G"<[71$M at 04Q.W1@0F"@`<`0``'`$```(```!%``$8A0P``$`1``#`
-MJ`$!P*@!`@'T`?0!!`?I\4$]F5`$Q`E8A:C/1_DGY2X@)`@````%````_"$`
-M`.#$*A'E:S6"K\_4C!H0)1NK[6[)"63%-9H]>2B[MU+IK`LUUYA9[,/CPZC1
-MBN'.@?3Z-?FXXW*<7S3HFW;(-=3D+GCE0^W1P:%(&`[E)-(D.9$ZIU[U`>[-KC
-MD at LJ&=3DN+HHPP)I:TD];9.+F`]KV0.;!Z(K=3DP;"F"8Y&+-D'#U=3D=3D8J&Y%>S\M
-MOC,[BL<4P-ZE)QVV<5!PZ+YD0NS&\$80"EA94-I8B"9$,6D>,%<B",?P&#?Y
-M+1\YT4G1%%(#(@RIES__X/"``K`-ZF'5E_%*GT]`T19D7HZ,0=3D$ZS2-`4Q.W
-M1HHW"@#L````[`````(```!%``#HA0\``$`1``#`J`$!P*@!`@'T`?0`U`:Y
-M\4$]F5`$Q`E8A:C/1_DGY2X@)"`````$````S"$``+!T>40M1YS+[#A77B</
-MK2^7:%'1>LNY6XQND[/P0\R0;+?%;\F0N9*O1ZZC;IAF1.&P2V9 at 4FV+3+UY
-M\6BCIF5TV58_%M#F0R"--[,D+ at 7X027S0C@9_.T4 at YB182=3D*.,51.391]H^4
-MQ1N(17+"'/3T,UT!`$AEE->?A:6K1RO::<)Z!8!QV0>7#3/"M".H4;W9BB/6
-M(J1*J90#!7`\9*17@?S-<=3D6;Z*.UPH``4Q.W1LA9"@#L````[`````(```!%
-M``#HA1```$`1``#`J`$!P*@!`@'T`?0`U`:Y\4$]F5`$Q`E8A:C/1_DGY2X@
-M)"`````%````S"$``+!LFN)4;+S3#`Z1Q8\7-3(=3D)Z5XWY_0ZC8PK(/REB`!
-ML\Q/S`7!R_R90U!"(2`5RCK6&HA;W_SF*"<U,AF!(T4WTQ$9W_I&S46G(UJJ
-M&#9]`$%U*O]&AO$)/Z/+[C"*!_7?XY8`C+5?!QAGXS[NW\#I_6**'V9G$J(7
-MEHU9(Q.(N at 49RS0):I&TEW6ZQ0B.NF+JP`$=3DJ.MO+45'XHUW]C!>FPD;>2Z-
-M\9#L at MS?4Q.W1E%V"@`\`0``/`$```(```!%``$XA1$``$`1``#`J`$!P*@!
-M`@'T`?0!)`<)\4$]F5`$Q`E8A:C/1_DGY2X@)`@````&```!'"$``0"-,H\P
-M68_$0^!EI#ZQ at 1!%TSUM<F19:"]1MM<L!QN=3D>IMV\LP$=3D@;U,=3D]GDY[T\X!/
-M>6/4[3-*[P!"$>U45%]CYP)8%@7.@%$')I[.,.KK_S=3DY&%2"44J%9,+K!YN.
-MG@%[IA at YFFAP@'\^KL=3DL'Z\(WJ`^8,B at 7R2C?9%#Q+M(D-"KKHQ-3[_A\Z;$
-M#Y?(,7BEFQ`H!>)H*!(N(@8C9JR2`9FJU!/;ZGCF7+QT@;GDZN:J1">T6'-3
-M`MK$])'KD&1F4JR at .G%J']VB,YT`KJO&Q;B#;MJJGV,;3H%]M@;S[JM'`!^T
-M:,<C&GV05Q:AFVM_"FX5=3D5`MV?YDL@]3$[=3D&YH$*`!P!```<`0```@```$4`
-M`1B%$@``0!$``,"H`0'`J`$"`?0!]`$$!^GQ03V94`3$"5B%J,]'^2?E+B`D
-M"`````<```#\(0``X+CWSM<F4NJ*H,RQ_V8+4C4/T/*S(#VW81."MA$R:K4P
-MC#U23?$(`0!%?9CJC([(2G&J24IQ74YT\\J at WP*B;4097&EDLS1>2!5"-GZC
-M!8<SG61M/2E%311 at AC660F]AT#-YD7EWU>>)A<R3AC^=3DK-137>2HN_;_:)X1
-M!><J9ZU3_P6PWB5V\\B5-BA20=3D40^8510.IXN)@VK2*T94TDOI(L\XV,1"ZV
-MO=3DB>GA76JP['(3H>#$C911_D%/WB&[JI!D+T\X3-N16X0^UER5S34%,,'F$J
-MAZQDX+?4=3D/!3$[=3D&8Y$*`.P```#L`````@```$4``.B%$P``0!$``,"H`0'`
-MJ`$"`?0!]`#4!KGQ03V94`3$"5B%J,]'^2?E+B`D(`````8```#,(0``L*0(
-M\Q(G;-=3DWLK34R>P[L)O(^$U*YO(49R9U]-IVT0!AXQWBJ7X/=3D$0EUIY)7:+F
-M&G;V[XJ4P436\.<+!P3D#`R-M0FW]U8%A"8>*3[=3DVLD^\S7;&[(N9KNWS0F.
-MLU6<8HO:WO?AHO;B9EGB7&,B[TW:\@M]5I05I694&)1*@YEW##<1GOI944%$
-MR!=3DZA-F]O3@"<U3A;SNNB?H#.W<[`=3DLP_,=3DP*6-\3ZPO'"=3D3$[=3D&C[0*`.P`
-M``#L`````@```$4``.B%%```0!$``,"H`0'`J`$"`?0!]`#4!KGQ03V94`3$
-M"5B%J,]'^2?E+B`D(`````<```#,(0``L*I'-8]_QNCE\BJ6/!<6\<-]^P4'
-M^-DDRP]90N/:\3T]*0$>-K"\IY<7?LA&ST_"I=3DK;:CYFM8AN)T3,$-MIYMM9
-M[^$QP9"4""!G%?]-S6=3D+R;"U2P+"QU*N,,\GI\7-9,FZ'A/E!_83]L$$#T7)
-M6,ZCS13U"8#Y1+,=3DT%VCSGA"!8?#J[\(K(^Z'=3D>-U3<CM0DI00"@G7L"QV>M
-MB62()!Q7IFK(][VXV&R,.$Y3$[=3D&TMH*`(P!``",`0```@```$4``8B%%0``
-M0!$``,"H`0'`J`$"`?0!]`%T!UGQ03V94`3$"5B%J,]'^2?E+B`D"`````@`
-M``%L(0`!4+!`<XOMC@)[.]4KFRN+$9>6VU?9 at H*D+_%&F073"LHVXE"R]*!G
-MA6N&E>O%-[;ZU:Z+LI+:;4USQ!=3D9RUMH95LQ\+MGA]%L6X0:4)N)!IU@/0<!
-MPY_=3D>`^Q&9E+O2PZM_'#J/C'X#4,"1`XM4 at 9SB`Q)Q)&-?YY).VK2C^.9!;M
-M]R+KZUF06M<UC8``LA*[^O+7"V@^M+^?>6YP2'2_K4E?APNXR[^O>0C2*L[&
-M\A+PH&BAH7`D-5B88#E`XA!>12;0G=3D"J^W_TZF:F\.5*.X41*F>&$`VT.KY0
-M8GA.2MMS9&LT'`BD(8W-04<XS`G`TD-LL`_.<XC*I;@L:I56"\@\?"#ST3(;
-MZVVG'\,9 at O.@689YI$(EN2?2GB-I-JNRC@^H8%DM]L5$-TZ'[W`>S$8>[3D[
-M7'C2BU!'@HBIG-!KGC/$A5SEB;$(J6M!4Q.W1MP/"P!<`0``7`$```(```!%
-M``%8A18``$`1``#`J`$!P*@!`@'T`?0!1`<I\4$]F5`$Q`E8A:C/1_DGY2X@
-M)"`````(```!/"$``2!S/`=3D_B9"^ELZJ>I7AD$'DKAFO+_R/?M9!3$S>4$IH
-MCHA.Z7$9VH?IW%.M14M_XF:SW]IW/%$^2#U4'?<B9^E/TV+0JH>J509)P]S?
-MU"=3DQN;?^CYRCP%WNN++@$2B0A/138OODF]<2Q,8[@EAOSFE6H*CNB8<(HB$4
-M]3%MQX'R&E`1`WR0F"]U/Q-!#!A<,&NDL!-A?54L=3DZ<D.2X-*C0/F7H0W6VR
-M>/E\'B&%I at F,-HXS'"OP%AKCD80<'L]5WX$L'<7DO0FG+/OXBJV'9T,"NH38
-MZ^)R,*^#:`KUWX).$5HVJDXM314Y_5ZY.GUE?0[HCJL:;2 at 6Y,I,,+4O-/8=3D
-M)B!R$$!W:LJ/G]IS`N?-S_0)0J:2&'?B[>O+.5,3MT8S-PL`?````'P````"
-M````10``>(47``!`$0``P*@!`<"H`0(!]`'T`&0&22S*Z&M[`&'"V\2M-8_L
-M<TDN("4(`````````%PJ``!`4\P[8O?#43W`$_;A\6MI.ZVRZ#\`]=3D12OZ`U
-M:]Z^NG?)0P.RC6!:%-08_'!Q8`A,$E4[Z\9 at E!^34)@#4Q.W1LE""P!L````
-M;`````(```!%``!HA1@``$`1``#`J`$!P*@!`@'T`?0`5`8Y+,KH:WL`8<+;
-MQ*TUC^QS22X@)2``````````3````##Q5_K#;FV-)C/E_E)-28U)^BB+X5"M
-M1R7"8/"0O7^N'%F^4K=3DJ]KWO&`]N.E,3MT8A40L`;````&P````"````10``
-M:(49``!`$0``P*@!`<"H`0(!]`'T`%0&.2S*Z&M[`&'"V\2M-8_L<TDN("4(
-M`````0```$PJ```PA&=3D&03UAJ&8U05E7.N]O13QOH9+[P"Z$17$^>2[#-QRE
-M*`L]WT8L_WW20\Q3$[=3D&UUX+`&P```!L`````@```$4``&B%&@``0!$``,"H
-M`0'`J`$"`?0!]`!4!CDLRNAK>P!APMO$K36/['-)+B`E(`````$```!,````
-M,*A%XEJ5DQZ$.#Q4(95O?BR:(5,#:N=3DJK!I['+I]D\QD+*FMH!:KKLO"QJ;S
-M4Q.W1HI:#`"8`0``F`$```(```!%``&4A1P``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DE97O@[4\;W6H``````````"$@(@@````````!>"(``'@```!T`0$`#`/^
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``2D4G at K]@=3DQ)U]KK/MT@>,M9:8(^4
-MJQB(!;0J0, at 3+-4JITI<XB5$:U*+AQ#Q/++#3"`S`4Q!B&R2:[8":163+@;I
-M&]7:JEA4Q06!`JH>UU_)[)8^6AJ=3DR[&;O_-I_D#>'>:R*1P>.=3D!,A.MTZ>NF
-MX)4E0$D*BK)?D+I at 0J_F'54I```D:`&?E%T[B9NVYC)[IG"`$M_TO\=3D+L;K,
-MW at 88=3D1QL"1TI```<``!`!,4;A:YLZ.(8&O[;"]I'`IWKR*(R````'```0`4K
-MMZ[].>-E]\GM-X$)86M!4SFWCE,3MT9_:0P`7````%P````"````10``6(4=3D
-M``!`$0``P*@!`<"H`0(!]`'T`$0&*65[X.U/&]UJ```````````I("(@````
-M`````#P````@``!`!@````K\+.)I at 9$!$\I_%N"L<OD';@-Y(%,3MT8(>0P`
-MN`$``+@!```"````10`!M(4>``!`$0``P*@!`<"H`0(!]`'T`:`'A65[X.U/
-M&]UJ```````````I("((`````````9 at A```@``!`!@````K\+.)I at 9$!$\I_
-M%N"L<OD';@-Y("(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``2D4G at K]@=3DQ)U]KK/MT@>,M9:8(^4JQB(!;0J0, at 3+-4JITI<XB5$:U*+
-MAQ#Q/++#3"`S`4Q!B&R2:[8":163+@;I&]7:JEA4Q06!`JH>UU_)[)8^6AJ=3D
-MR[&;O_-I_D#>'>:R*1P>.=3D!,A.MTZ>NFX)4E0$D*BK)?D+I at 0J_F'54I```D
-M:`&?E%T[B9NVYC)[IG"`$M_TO\=3D+L;K,W at 88=3D1QL"1TI```<``!`!,4;A:YL
-MZ.(8&O[;"]I'`IWKR*(R````'```0`4KMZ[].>-E]\GM-X$)86M!4SFWCE,3
-MMT:YG0P`4`$``%`!```"````10`!3(4?``!`$0``P*@!`<"H`0(!]`'T`3@'
-M'65[X.U/&]UJ+,$`75`V-M8A("(@`````````3`B```P````+`$!``0#```,
-M`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``"-!*W>@
-M8;-(L%X*<<2`\D!B1E*VIC*?E)J($W!2,\5.KW,BG+=3D6.H)H9M1^&`\_KF.I
-M-TM9V4`F`SC-U?3RV^JL.BFE59X at QP0]Z$ZP3_:E$G/*XXP*S3"0Z$S58O at M
-M*OZ)6,)NP'"VEVW!L+H_:N89UV9-_=3D5]L?RV%P!XNB"/*0``)$[D&^%]/-/;
-MB/&0%2?<0D@=3D@<]B8.B9L2,.'@#9=3D28'*0``'```0`10^VC`8F2V#"O#]O$X
-M&20;T13%!0```!P``$`%9T'_+(BBJ[8>(HH&$+0?;P.I^DE3$[=3D&V,H,``P!
-M```,`0```@```$4``0B%(```0!$``,"H`0'`J`$"`?0!]`#T!]EE>^#M3QO=3D
-M:BS!`%U0-C;6+B`C"`````$```#L(P``T$+5%OA#U:;14-BP1D%B-V at O]X&2
-M_S^S63J6Z68O*J`6$CA($,&O,F,)IYA3SJ&_YRKWX%O_J9`)B9*5W2[9&"21
-MLP at IH2O/'QQ3]K at IP?;^P8#ODK<N1_W5`DWO$0QH'@M(T5_]+D;A;S]02`1R
-M^:U[\J84EO*$S'WDIUL\^GY:]!*2S[H1/'VI,3F)5I1'L&CV>7=3DGA$P%WY4<
-MRFL\Q9G^J[A#)IMY-I!@PY+%_(W<I4QY]8OM6AJ:>SO-.UG at Z5SXT%:]VH,`
-M8&J(*E,3MT:[XPP`O````+P````"````10``N(4A``!`$0``P*@!`<"H`0(!
-M]`'T`*0&B65[X.U/&]UJ+,$`75`V-M8N(",@`````0```)PD``"`HJW9BP%.
-M(Q31Y;%".L`JN.>3$T/1>FZ`<H.70[4Y41N]W:O"AI?2V+\^5-RHG,&H=3DFB/
-MQOG2K&7<UR07[&^!D(NG?$!G.[;!X.3[262>:_PEM$W*3*%;I*Z4$$"4(S9+
-M!7<<(?([<;G.#Q7$'"O_H)3.UI"/,^^"Q>$1&U,3MT;D`@T`'`$``!P!```"
-M````10`!&(4B``!`$0``P*@!`<"H`0(!]`'T`00'Z65[X.U/&]UJ+,$`75`V
-M-M8N("0(`````@```/PA``#@'.=3DL#<%P%"?P(N>:%Q]^-3%]</:WPZ<EB%P"
-M!F;Q#2N'C!JM4%72..!@6F^N9>&<PR'/R,Q["B=3DJTY//";VOL6X=3D\G;'+_-;
-MJ;TF"&K,B0'"UZHT^F=3D&4?M-+9%I?D7.?H99.99&"I)*6SC189F-X?5ISU/Q
-M,`@GZK3PX7I"K3Y2!HCH$];M_(&J$"\Z*,GA"H'H=3DDJ5&(Z<._"IA<N_4V2J
-MQM_LD6VU$R+L^%GT"MLT)J%DWG/66_K%BP^O(%\9]4+AVF=3D8.8]^R+WH.2T(
-MJE7DMQ=3D6Q8A$@$F,[%,3MT;1#0T`_````/P````"````10``^(4C``!`$0``
-MP*@!`<"H`0(!]`'T`.0&R65[X.U/&]UJ+,$`75`V-M8N("0(`````P```-PA
-M``#`S12*<3ZO;^$1'1;)^;6XL!A,7^C2K[H3N0Q<Y]X*KD];%K6=3DV9Y81+(!
-M)]\><T;'#.9FA6$1>$^]S;*WNUG.]%L2X\@OI6=3DSI2N-V]XW/.57/\S`ZL#;
-M^H]V(S*;[2UP&PK[S!9!7%]C)BLV\$%61`G at M\,@&</X!<*F5(0$F=3D'"MU6=3D
-M)Y,3Q`32RXN/&;B8[5BXXE3A(NIE.B"EBZ$I9L=3DDV,R*\7;WE+%C.:7A0&'Q
-M.!J3&`<E.I*.2K93$[=3D&H!@-`&P```!L`````@```$4``&B%)```0!$``,"H
-M`0'`J`$"`?0!]`!4!CEE>^#M3QO=3D:BS!`%U0-C;6+B`D(`````(```!,*0``
-M,)(@/)`>FX>)]<%[=3DPD#GC"V'&?@D]X'O$9_C$`(J-P'4B=3D]1\ET(IWA6A54
-M4Q.W1OHU#0!L````;`````(```!%``!HA28``$`1``#`J`$!P*@!`@'T`?0`
-M5`8Y97O@[4\;W6HLP0!=3D4#8VUBX@)"`````#````3"D``#!T\"C0S2<T0VG_
-MR."F_-#\@<:"HYV<HVWW'OY--]GPR1OYY/Y]>MF>[#"2>E,3MT964`T`/`$`
-M`#P!```"````10`!.(4G``!`$0``P*@!`<"H`0(!]`'T`20'"65[X.U/&]UJ
-M+,$`75`V-M8N("0(````!````1PA``$`!CJ^)PZ`;+A\7(+BQ5A<Y_0U?"_:
-MI+- at UJ-"]I7BTCYKBA._V![)-2]]6?.&2^^4ZZ1*K4YX%`O"(UC)+F_8X[:H
-MDC]&;E1E6X!ET'IC8TWB,&N\B(DO[L#4U"1HF51UVE6EH`Y;OCP-H^%)'[KN
-MUXP;AK"/I.1*<`]B683C4&$,/0($^(&V`JA?\;\LT;[($,^=3D/$%X+.U_MO"&
-MJYFP]S3.\17S;_P%Q%[HJG_!#6S_*=3DAJ*A<,F\WN/3!&(/E*%@&M&]'>GXHL
-MT>?>MW3GY50A&CFVF&^NU/?&9L]_(,4*^5;^0"ZY at 6)DD"![(TP,B#%:[@I5
-MS$\FF+5;4Q.W1 at Q>#0`<`0``'`$```(```!%``$8A2D``$`1``#`J`$!P*@!
-M`@'T`?0!!`?I97O@[4\;W6HLP0!=3D4#8VUBX@)`@````%````_"$``."B(:*V
-MV^12]:?]_;A>8GS"-L+8=3DTDJ^*;'TL,X5SVVAF>.XFS83*'C!FWJ-:K3\CF+
-M.0,T>+`"BMXGOKLP9#N^:0LTF[UNH[U#\ESX237F)51?P",[V[1;_T.QL`"O
-MFEUC.+_+#@WW6PG$\QK8D$4)!+&J6U>TGT4-*R)28*B%&+\\J, at 5ZVR!Z2NA
-M at 1#5,(K_"@-^3@)]#!15]S[B!ZKZ at 6JHPUB?%V?+)(5FRF*>>L>0T(CK.7K#
-MOET-=3D at WC.^I3ROGYX@%OXQM3.:3!=3DQW,I3T(?JNJ,IYI94=3DA4Q.W1N]L#0#L
-M````[`````(```!%``#HA2H``$`1``#`J`$!P*@!`@'T`?0`U`:Y97O@[4\;
-MW6HLP0!=3D4#8VUBX@)"`````$````S"$``+"[<<DM[(9*"5KU>VVD,Y5R)NUK
-M51>REU;.ZV5F(";N=3DT9OCMU2T?[#X;]R5F#+O*28-\C`C7TK,FK:#$@NYBC_
-M<]E*Y#J'SC#D"@IKP%7R?Y37N>\,7[$.%H$2+7H(V5'@D=3DE1))+Y(^=3DZ(/DD
-M1QL at HE%85`L[@Z$X)&KI!DL4+`";0 at XKS^34]BZC4.,2=3D7^[%GCR\DFPL+"G
-M_B[?U;^9ND`J*?-0H):U2"3J4Q.W1D2/#0#L````[`````(```!%``#HA2L`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:Y97O@[4\;W6HLP0!=3D4#8VUBX@)"`````%
-M````S"$``+#4N!S%@@?S08D[$R!=3D>2EJFJ<6:2BZZJR1G.ZE_<?L&KTY9G!O
-M?&+B"E'B#MA#1\31,0^P'N?4Q2?E9'[75[HC&&:@G at K#[!/3/\$X-`XP=3DCW>
-M*OPD3=3D>6*<:E56O[9_CR?;R/%7;D\"*U1AG5W[;41.(&<12MSI(B-R*<0])8
-MLF:JHY(8VZ;L"\N+)4#W'RSTV$[:6;*L)HZ4VG)^12^ZH3W[13.Q71!>X8HN
-M4Q.W1L.L#0`\`0``/`$```(```!%``$XA2P``$`1``#`J`$!P*@!`@'T`?0!
-M)`<)97O@[4\;W6HLP0!=3D4#8VUBX@)`@````&```!'"$``0"+X-.5Y6G(SO/<
-M)M:46`DXV*!Z<36YV?E`F#C\<U]6+G&%&23FO-CXN3&7X!(TT:U`N6:,:ZAW
-ME9<M";3\$XQOJ:7EJ).:L*/P'Z6Q4"-+9#20L(2-S1XD#XV?23G3+3.G>:[.
-M8?%?HR3`6C,>)4YU!_GZC]0 at J3&.D;1M$B+^=3D5I<W\:?4F/=3D8L@`ZU1>8!+R
-MR\_D276QN>;*C+B'E-=3D\G"T3D^+1?[X4&VC+D<X:&F1JC,X^;F]C8I43SBUC
-M`+E69#BS*D%LZ3B=3DCBZ at H:/=3D];!YS]#Q`2M_DB,?MRPT/I^?XWG`3\0[K,P<
-M\+2`V.,X/3EV)7">PPL[#9I3$[=3D&"[D-`!P!```<`0```@```$4``1B%+0``
-M0!$``,"H`0'`J`$"`?0!]`$$!^EE>^#M3QO=3D:BS!`%U0-C;6+B`D"`````<`
-M``#\(0``X)>1ABP,>>I6SK;B(E04C'A_%0'IBM3M\0";<#0[4`?=3D/SPY!?JN
-M&OU&1F>YZYAKY]X2U_23LWS;)=3D*KWUMD9DM11Y!7:YM40%K:5CWJIT#,&+G\
-M`I>2UXPP5Z*"XQKU=3D6%S<Y5#`@(MK^;%QXK(8GDJ-]K*=3DAP4Y;G":W=3DMCS0:
-MLB[)Z>9NC@"4!Y][I-6>8`E76(>*B$/(OOJ.34/$6)D+S'F"7ZE(G%,O5A,,
-M!UB(I]:#5--6EJM"*[B[3]3)$B&U&ERM)$M`,&B`DDW)W>_ZYB>PD#76;F4J
-M!1A3$[=3D&7, at -`.P```#L`````@```$4``.B%+@``0!$``,"H`0'`J`$"`?0!
-M]`#4!KEE>^#M3QO=3D:BS!`%U0-C;6+B`D(`````8```#,(0``L&X9'DL..+C<
-MBPA5A=3DT,1XZL<-0/WSUN15$<]Q!1SUYUJ&6G4^S>_RG>]EXV'&FNEMSVYU<:
-MEK?V[1NU7(TG`'=3D"3SL*TB*PW+1OY[G7L^K4$$>TL`-Y,@:'<SB6-)^)-\0I
-MG;/,:/4O&FZ<+;.^'8-).5A>EA=3DNC)J]'=3D9I;@S]\F>Y29K?;J!G-BG2TQ)S
-M_>5?J^>'Y##%P645KA104(-7)=3DXVE^:JWB!D(NE3$[=3D&:NH-`.P```#L````
-M`@```$4``.B%+P``0!$``,"H`0'`J`$"`?0!]`#4!KEE>^#M3QO=3D:BS!`%U0
-M-C;6+B`D(`````<```#,(0``L.C.G]1]G>0R*>1",/[EK<'7"MUTS$0\@0ZS
-MW]%[4=3D)V)HX5YF-:>AFR&2687>+5VCN(Q_\@$;2JPR3L%-&V]:S&>01L%CV[
-M%`O1X`@J_Z_UH1*,Q8?FL7(`X_5K9'Z],5G7<&^C2!IWV5T:[AYI&1.W^DC'
-M>F<AVE2(-&<=3D-1M@`WIZ3V!M+YX5,>FH"VS_$^"1QJ/]5'=3D%7/C(+G\]`ND2
-M(@FP,(;M[.X]"AU3$[=3D&-Q$.`(P!``",`0```@```$4``8B%,```0!$``,"H
-M`0'`J`$"`?0!]`%T!UEE>^#M3QO=3D:BS!`%U0-C;6+B`D"`````@```%L(0`!
-M4*<P60)5S9T)3;$NS#'B7X$[B>7R/&6\44J=3D*4O#&W3QUDEK/)^T.,[:MKSC
-M?E4U\<,^@GR.<`&&A1:*_Z.M@!O.Y]*-)<&XBV.W"#K:$^<Z?=3DOS2E6.!N)0
-M4V8VWXQQO#"8D<9TL*"3*J`8+4KP[(!)NO:?`:3Q4,FO"3_K4!6?H2GC7=3D:4
-M-\$E0,'$1*C=3D0NH>27 at Y_TP%J%U,7"J4^QN!]6@,&8^G9172IG[C:UL1+\\6
-M:O0;\1H"\6>%IC@?=3D6%A+F^MK4\KAQ,+E^&)!\'Q.X0O+TDQI!8KH.8\/F3J
-MJAAU,)X85G1?)UK`=3DV6[FC[?^)%$KG@&#SQ. at I/.WVV?'`/1K)L+L1Y"DONH
-M+6U5+A3)W9Z?'U,;!F'"V=3DY81;YY"'6$9Z=3DN$;SNOI=3DI,EQM#$(USC+UD.>]
-M6`\XI=3D66`D"U2RAR\XA2):&L4Q.W1O)'#@!<`0``7`$```(```!%``%8A3$`
-M`$`1``#`J`$!P*@!`@'T`?0!1`<I97O@[4\;W6HLP0!=3D4#8VUBX@)"`````(
-M```!/"$``2"J]_ at JV-7.TLW`98DUC-59=3DI]<!@2,2A9N\5#G1&#*)RO7 at JM4
-MQ$B^?8V"X',[6ZNTJ?$$3H*V<'#XJ*9*EE0'*]K4PC at 6=3DI;%SHKQHV0B_!$#
-M!"'[K\Z%=3DX^R>,5[U6G1PQ/5ROA!3R>XVU7[Z#;6PM#BJS\Q&`HNM>\8H7L[
-M3.\/ES\7E^7"?P9"I!X\XY-/!0V1\#(=3DTN!V):G3P?[`D=3DX%<@B46$)N'!W@
-M:*2'.X=3DH,Y9F1C^7XKY8>*$4];\RL,5V[.=3D=3D,J([WQ8`B;O7JS"^</'1Z$7T
-M4A#FOI\[/<XK!W;!E*-H-OJA+*:;4/):13(%T)AJ8M#X%$2E3U)@-1/0I'3$
-M5O5)G-$2P'`O#[=3D9=3D+6M+0'^?&8H=3D%,3MT:U;PX`?````'P````"````10``
-M>(4R``!`$0``P*@!`<"H`0(!]`'T`&0&27>I7\4$&*F4\&9EXE-Z"HXN("4(
-M`````````%PJ``!`:Z(-#X$WGK?.5WG9O2HM`&[@48B(!*639\32-OOGB9FI
-M_+/V_UA4!DN)R'/5A?Q3Q?'%9!1D'@4N^]CI4Q.W1 at -[#@!L````;`````(`
-M``!%``!HA3,``$`1``#`J`$!P*@!`@'T`?0`5`8Y=3DZE?Q008J93P9F7B4WH*
-MCBX@)2``````````3````#"@D(2O/#R`;3Z(/]]JII#]P4R*@5G(H6+-$<27
-M_E7=3DG=3DESNF*3AWQ&&>2 at UE,3MT:DB0X`;````&P````"````10``:(4T``!`
-M$0``P*@!`<"H`0(!]`'T`%0&.7>I7\4$&*F4\&9EXE-Z"HXN("4(`````0``
-M`$PJ```PH0'J*-?9L:+JAXO(?../[A&T!?R<M.D;&IM;QOK+@%X=3DT[[!_?*S
-M;LDV<AM3$[=3D&"9<.`&P```!L`````@```$4``&B%-0``0!$``,"H`0'`J`$"
-M`?0!]`!4!CEWJ5_%!!BIE/!F9>)3>@J.+B`E(`````$```!,````,"U2.V)>
-M,T"Y`4%!&.>=3DW_869/\I%52AHRV at F'+"\0!N(&^E<@@L$)2L-:<O5!.W1C91
-M``"8`0``F`$```(```!%``&4A3@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE!UBV
-M#FG8^3X``````````"$@(@@````````!>"(``'@```!T`0$`#`/_``P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``H_IR"JUGK_-UKJ67<B?F"E>3H=3DP&5F[C].VP
-M,LM=3D"4YOMV4Z<1HE(_O^##1I"U1/F<AO%UPJ&J1)K.*U'A>K7Z:HK-J+>.-A
-M_L9F":*HU:H&\>XG[EPRDCKS$C$4A-HR$7Y1;50/`]=3DXZ?9*W/Y%'1CXNTF3
-M$4\4?S+Y!<Z\W&8I```DJ3][P#!6TPICDY2O3R0*D^6G#RGVC/FCF!$4Y(U5
-MCDTI```<``!`!`8[&'"3@,Z];^/FI\.`$H3]4O<"````'```0`5-Y,H;4Y]1
-M[9KX7:0`,6DH%A9%MU03MT:Q7P``7````%P````"````10``6(4Y``!`$0``
-MP*@!`<"H`0(!]`'T`$0&*0=3D8M at YIV/D^```````````I("(@`````````#P`
-M```@``!`!@````KI*_QX.=3DN6/2IC`W\\3>RS2O8\I%03MT:3;P``N`$``+@!
-M```"````10`!M(4Z``!`$0``P*@!`<"H`0(!]`'T`:`'A0=3D8M at YIV/D^````
-M```````I("((`````````9 at A```@``!`!@````KI*_QX.=3DN6/2IC`W\\3>RS
-M2O8\I"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``H_IR
-M"JUGK_-UKJ67<B?F"E>3H=3DP&5F[C].VP,LM=3D"4YOMV4Z<1HE(_O^##1I"U1/
-MF<AO%UPJ&J1)K.*U'A>K7Z:HK-J+>.-A_L9F":*HU:H&\>XG[EPRDCKS$C$4
-MA-HR$7Y1;50/`]=3DXZ?9*W/Y%'1CXNTF3$4\4?S+Y!<Z\W&8I```DJ3][P#!6
-MTPICDY2O3R0*D^6G#RGVC/FCF!$4Y(U5CDTI```<``!`!`8[&'"3@,Z];^/F
-MI\.`$H3]4O<"````'```0`5-Y,H;4Y]1[9KX7:0`,6DH%A9%MU03MT8AE0``
-M4`$``%`!```"````10`!3(4[``!`$0``P*@!`<"H`0(!]`'T`3@''0=3D8M at YI
-MV/D^]@^(YB)R&O,A("(@`````````3`B```P````+`$!``0#```,`0``#(`.
-M`(`#```(`@```@,```@#```"````"`0```(H``"(``(``%E;0M[KMN=3DUF2;X
-M/SW;I7WL/S"*&P1/%FQO663^:IWW4HQL0M'#K2Y^D^QIA'JZY3O/2.;:BWT)
-M<`*4!"AX6"N[5BW>NYN)]-:'X#;:I_,,3*+E0:1QM>K[H/4M(PBRQ`M.#6?L
-MEB-HKQ_<%#W\#.]XNWOU;'G&\HUI^^_&P at 40*0``)/.F4^^U9.`%"&IQ_C!A
-MZ?M0(`E5U,!.+*DXKPT+/1J1*0``'```0`2[GPT*JR95 at W.R$3G)'BH&1?WK
-MP0```!P``$`%EWP7U<2X-8"GH&_+$ODUV2\9);54$[=3D&M<(```P!```,`0``
-M`@```$4``0B%/```0!$``,"H`0'`J`$"`?0!]`#T!]D'6+8.:=3DCY/O8/B.8B
-M<AKS+B`C"`````$```#L(P``T(J-^D*^Z?\GTR(X0N(T*C$;TV6#=3D'Q#6EH1
-M>?,7R69/&WH23ETES3)+9>X(F,1*TB8W,LXA;S%/R8>]>')RN&M;4"K*N6H"
-MTQZN0+0Y24V(M+]#(L&E':<L^LJD.S at MZ@\]N-8M>,C:X8FJ&(Y,>'.N*#B:
-M1/.N1I,5:Y&HF$Z$A&\V_AL]7DUW"X?<^I5=3DM-MC'*CL75]3JW/JAVA>T6I?
-MY3GP&=3DB2EQR8WE?-$K[L_H')X)P`"'%Z-[=3D:!1G'E""=3DJX.W<3L)0]G)LE03
-MMT:\VP``O````+P````"````10``N(4]``!`$0``P*@!`<"H`0(!]`'T`*0&
-MB0=3D8M at YIV/D^]@^(YB)R&O,N(",@`````0```)PD``"`W>K2WRP6#&S<N>A-
-MD[&O7&DQ6*]?_YX3K`51&`^J=3D=3DPQK^0LK,;39%B:I$CJW1O:02AET_(CV$TM
-M1TJ]=3D#6M".#W$][H47[F&RC.F4M_;'R2(IKE$C>EM#(]^$NP62;*YS5M6[.@
-MANRZL8=3D<>Y#"]R3WA3PU;/EQ>W_!\%03MT8/^@``'`$``!P!```"````10`!
-M&(4^``!`$0``P*@!`<"H`0(!]`'T`00'Z0=3D8M at YIV/D^]@^(YB)R&O,N("0(
-M`````@```/PA``#@QY=3D23`1R at -B!^@MEVOQ[6\_D'B9K,5MAEE/OO9"'SHL,
-MZ/6>%4AS%U_OS!Z@&P0.1@=3D\K1462C(`KC1>91.F(#G!3,#C?'Y%@(LG&`;\
-MV,75T1$4WYADPS:XL6<.ZJ%RJ4?`584'8H>OXZK<ZR0O@]WBC,6L`9JH4&1\
-M\5^^9!R/?=3D%:EK&O^)!:B<I&3"82.<ZY.4L%($ZCF5):XV<>J+:^'N)L$FSQ
-MB at F^UKI0/L-+J$O`OND,H@)5>_E at R+?W#;%@L:.;6?\G,'ZRPH$F1]+*DAX5
-MB;->>((LW%03MT9#!@$`_````/P````"````10``^(4_``!`$0``P*@!`<"H
-M`0(!]`'T`.0&R0=3D8M at YIV/D^]@^(YB)R&O,N("0(`````P```-PA``#`(`.&
-MO[?M^O?/R<H#$"9V3?MNET2FC=3D5+Z*'@,C%W"6K.!=3D?V^%>3ZQW_YL^\6ADE
-M/8#2NUK/9-!'S$[')_ at I,5T*DDA($=3D\>.11I2E'V6N4X'6MC_FF-Q)`$P\BP
-M,MJ96QT-W/:E@?-[?A@;3:1.&"-8QD<QG?#-SQ`TA2P2)6O8+MY$48C*$,=3D>
-MX9>+YR/A]8B>9WI"Y]&6962KX=3DQ1&5)T5)+"!B!`A\O1"1'G,+O@"M2=3DCL'C
-MY#'(:S]4$[=3D&!1$!`&P```!L`````@```$4``&B%0```0!$``,"H`0'`J`$"
-M`?0!]`!4!CD'6+8.:=3DCY/O8/B.8B<AKS+B`D(`````(```!,*0``,+S`)#HK
-MO\F?MSF`L?:7H`UU";L5W_)^-*BA,><+3EW.!)W at AY_$.IIL7<_I5!.W1D(M
-M`0!L````;`````(```!%``!HA4$``$`1``#`J`$!P*@!`@'T`?0`5`8Y!UBV
-M#FG8^3[V#XCF(G(:\RX@)"`````#````3"D``##3PW;'6J-K9N%G91!#PNF4
-MP[&E&."%159!KYXGW?>,1/$+ET.HT<QAKR)JCE03MT9U2`$`/`$``#P!```"
-M````10`!.(5"``!`$0``P*@!`<"H`0(!]`'T`20'"0=3D8M at YIV/D^]@^(YB)R
-M&O,N("0(````!````1PA``$`4W]]"":\@*VK?OPP03%6$.&()EPJ5^`:Y_*^
-M(E#!%MQ8W7L^Y'/=3D"3YA;KNY]`BH7D,/26,=3D-=3D-_-[-3IF^N^HO8F4G%"O]\
-M//RN4SFN%B!V at JG9T\7S0U1?DCK$WT[VJK471(PJHY"[+%-+`\)@2CFM%,B5
-MUWIWLY7X$=3D-]<ECEAGEE%E%NY[)=3DSQ6EYEGD\[$&L4T\*TZ)VRJ1P3I0!(*1
-M3)B$V^?`HV320+Y>?DV5SSOD`Y.-&2XU]>R;^ZCPVM/VMP1G&[JDW7WF<A;@
-MT'!?64_^PNVT$YUF%WR3,Q;'A(?&)GDEA1K#T at 52MXXU$2I<KPT\3(*ZX?/6
-M5!.W1F!4`0`<`0``'`$```(```!%``$8A4,``$`1``#`J`$!P*@!`@'T`?0!
-M!`?I!UBV#FG8^3[V#XCF(G(:\RX@)`@````%````_"$``."2BV!8W^CZE at ZU
-MS8U>N/VI$&[Q/SOH<CBY&=3D^0-H88VTL4B1DJ20S%R`.71XB at 0X6ZFFWP47P5
-MCO;37:ODN<O7:X:6*O.=3DU<W,\]D]4B?K%)-52A;'R95>T-^*4A,"9]&TT#\"
-MB<U*I^04*A^.C$U?A0K;S?U at N\35#(LM,/GU^UHLET/+0DZS>6VE+NX'/+X)
-M&?=3D1Z!ZN$/MR)\$4`ON[KDP#8M-SX0B$!E>\ZN.G>E[C(WTCHN9X/(BLOBY)
-MOPD=3DA61<F!N`*Y!H$26U'7^O),=3DZ3:4&#9`\[J";5!.W1GMD`0#L````[```
-M``(```!%``#HA40``$`1``#`J`$!P*@!`@'T`?0`U`:Y!UBV#FG8^3[V#XCF
-M(G(:\RX@)"`````$````S"$``+`J%IR"KAV]K'F77-H$W9)B69M3KDM]\=3DM/
-M^, at ILHW-%"A8*J'YN\>3/',UX/I9!SH*)"(U0Z.FO>QS39+E8U;_HO_G<54,
-M`NZH,><2KP07F41M-5_ME[5*?C_+0HK8PQ;37,FKQO_OYV[4+B9#@XIA+0B[
-MHU$(!?=3D-L[?-(75NI#L4:Z16$YH;1CS/<YQH42XA)=3DL-QKRSMJM7K5!U-AV&
-MV@)>T%8Q)`:N;.695!.W1FN'`0#L````[`````(```!%``#HA44``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:Y!UBV#FG8^3[V#XCF(G(:\RX@)"`````%````S"$`
-M`+#2OQ>QGP"._^H.K\6I.5S65?411;LHFFOZK\'5O-BKQELCP0N:4X)R7#FP
-MOOAK`WA+CQ^`?;89J#Z<$\UKO;$"I],M at _U!MS!>\DB7OEN[5$'\O(CO9"^=3D
-M=3D]%C&6_IQ'*2Y,AJ]=3D,%Z52Y0W4#<975L(QI+H"X)%W]8YQ<B"]#]DE[.SS]
-M23#[SV`YM1<Y:9<A"#`E@:MG]ANS2A*4"**;Q(%C]&A)'[E*).Q15!.W1CND
-M`0`\`0``/`$```(```!%``$XA48``$`1``#`J`$!P*@!`@'T`?0!)`<)!UBV
-M#FG8^3[V#XCF(G(:\RX@)`@````&```!'"$``0"^ICY%_M=3D?`514<$'0J!E<
-M,[UQUT"_MG.:1@!:T,AP;W\.@&P:1K4^UX%?%H/MZUH;Q_19;M7Y8KCGQ?W0
-M;D_5BIW;ICK)[3^0`TA#C].\K5_46)@3]Y7$I';%;#VVF`5!D)C11)V7MXQ4
-M\S=3D at EU@_U+9/1P:4S*LUZG$H^E+H^@T'<-W^I0U>6VB'$<!M56=3DR!=3D[:B8 at A
-M("!H#>_PW&6$]P/OD8RZ?W#L(QDQ,+JU3$6*LNS!KKMOOYV(6(9.28F$D:>M
-M00@,Z[!&.OU&$T2U6S/[QC>BK&'!U>KVB:B[W0CJQHAF3#6XSR9%DBL\IP[1
-M5AO:*U`:M7)GB9U4$[=3D&\J\!`!P!```<`0```@```$4``1B%1P``0!$``,"H
-M`0'`J`$"`?0!]`$$!^D'6+8.:=3DCY/O8/B.8B<AKS+B`D"`````<```#\(0``
-MX(`@@6$LS_H._5=3D:TAE])A:*;AA?)3. at 866V0=3D)*;;9<MXU+\G6/T(H^EOG+
-MGWP_IFO,]*<0,%NBW$88$.3 at S%S0_3D5\JC'Y0[NDW']*TC!&8.?FC*H,#M6
-MJG'&=3D7]`53F9(AV58)XE*_I@=3D_ at S!V"'$7 at +7AO?O&IYFTLE^AWP:5%U1=3DT4
-M^6WQLJJ]VYL2,;H&4RNZB2,`8!)'"T:O)-X88,K`S\&"OH=3DII5<C+6@[``5>
-M_*`Z4+H]+,Z_A'#S-BNY2=3D,,&\J#N6-8KXN(;LH=3D+;F6E$T4[_\?E?%4$[=3D&
-MJ;\!`.P```#L`````@```$4``.B%2```0!$``,"H`0'`J`$"`?0!]`#4!KD'
-M6+8.:=3DCY/O8/B.8B<AKS+B`D(`````8```#,(0``L,Y@&IY<Z#MJ#4\."2K@
-MYIW$=3DUPP;*=3D4/$C8W`.W18KC>HBK0MB\]N)^6FW/STB;E93T.^6IQBJDPJ<)
-M%ENP4YU>"[*O at 6`T>+Q)H8-WDH4J*"K<`L^G2*K(P at _0(WWBNYU,L+N2RO1-
-MI*$S<M@?5@\]L_4A\X!_V3V,2(S8HW(3,N@&#1HZ,Q-GNHJO-ZXH6_ at QU$C`
-M7`/@7NPVIXZZ[$!"K0!#H,'`P,$<BK14$[=3D&%^,!`.P```#L`````@```$4`
-M`.B%20``0!$``,"H`0'`J`$"`?0!]`#4!KD'6+8.:=3DCY/O8/B.8B<AKS+B`D
-M(`````<```#,(0``L->JX:&UMRU*EF*2_\KM1\Q1Q\[QR#$?UJ9">+*R(!+R
-M33UZ:U[6Y+2L22!-:$H]BH7MO#$M`_L.?SP;NY[JFXS%8#1C&+,'OSM_\K&5
-M'QL[\O6- at V*D6'`^]"K:V*OG+:^$R;Y5;RDC6WP5)5:.G8[[P]]`X_ at KA9+&
-MR"0MXHZK%]]-T4)]%PDJGA`Y2>@9&D5C$1;D[#H48D@$$"#38^'2:YCU^T#>
-M.#YVX754$[=3D&"@D"`(P!``",`0```@```$4``8B%2@``0!$``,"H`0'`J`$"
-M`?0!]`%T!UD'6+8.:=3DCY/O8/B.8B<AKS+B`D"`````@```%L(0`!4``(&Y*T
-M5=3D2BLPN?5`E2[%'.?EIG3LEU8+)@1_+PECE300(X3W"DI7_EUD`8@<YKQ+'A
-M`>+50##.'SQ\2'X,$-_N4E8=3DJ"+*Z6%].%B,!)\@/K;DF5>]?"QF%H7TUHJX
-M4[N'S.>KG#NTAZAD)<GF?1 at +9T]TVVJ5=3DX?2H:6'R_4R@%*[-&I"T+%<LYGY
-M/U*GWD(B^"CPY#9US"&SH`Z?,<7%FED_D>?7`7W2Y(K3N5 at R%`J=3D'D%D`KS"
-M?2F!)(,/X=3D-:*9%HO1L!#M#=3DW1%<QJ33-IRL`(DJ("87;B)^%/*T.BA$7F0I
-MHR83-GDT/BS542#V4;AVP:<)_XG`'Q3UPZB`XO6EFQK$NK/$4AKFR>#CY\-\
-MK:P:B<73HZ9,?>DJ18W'RYN/HS/[2X at W^'<D&R"X:F.MJ$]$,`88\=3DC at E\Y9
-MLTA9T.'KJ`6(X7.E5!.W1C\^`@!<`0``7`$```(```!%``%8A4L``$`1``#`
-MJ`$!P*@!`@'T`?0!1`<I!UBV#FG8^3[V#XCF(G(:\RX@)"`````(```!/"$`
-M`2"0O"PI8KBX]?F01`^L:8G:65&&)`W at K:04NHEC`=3D-E&I-)17UUZN.H/LR1
-M1<@P"PW38"IL8K>!'HZ05=3D-<WGC5L@\`#G#W^V.`$?3^"'UZXICE at GL',IGI
-M!<][EUB/OE<Y1K>,BI)%J*KFB>6,3)#27C`NU;H%9*8,<Y`X'B9HD'WX$E3T
-M1<S?Q&Z<&?T/!=3DAJ#[\JZ>OZ%$`=3D7ULC1(:H=3D[8KHYPTQGB/+NR3'B0[)/UF
-M095]M8O4!XZ&(2([T`\I$,_\4-0BQI6(NX#G@\\1(2S"J<110R,("@PZ$SX_
-M0-?,&`-;-=3DZ]=3DY01>E7M7"6FL__"!3;G<#VM%^&-7B/3^3D!WI&P'6KE,29,
-M- at 1(!"EY(<<_=3DUF*6VPZZE03MT8>90(`?````'P````"````10``>(5,``!`
-M$0``P*@!`<"H`0(!]`'T`&0&2?XFN_+YZE?KX.U"7+Z\9C at N("4(````````
-M`%PJ``!`&9+S9%'$[2$?\8OX1>+]9:*;)V[P>_?V_C"*.6V[[//`71AFKH#J
-M:0S5A*IE>*1PV_O;^$K'O"Q_H";"5!.W1G1P`@!L````;`````(```!%``!H
-MA4T``$`1``#`J`$!P*@!`@'T`?0`5`8Y_B:[\OGJ5^O@[4)<OKQF."X@)2``
-M````````3````#`ZJ4OJQPO;,$TJZK[V*LUBEG!N+DC/X]B6C8P)7/V<6C at Q
-MBH'$]&<!S,G3I503MT8-?P(`;````&P````"````10``:(5.``!`$0``P*@!
-M`<"H`0(!]`'T`%0&.?XFN_+YZE?KX.U"7+Z\9C at N("4(`````0```$PJ```P
-M':/I2%G8BP[,&"CB5<=3D`26>?0G#4JYEN8=3DYM.80!5*UTL90!C-"WS_0R:RA4
-M$[=3D&L8X"`&P```!L`````@```$4``&B%40``0!$``,"H`0'`J`$"`?0!]`!4
-M!CG^)KOR^>I7Z^#M0ER^O&8X+B`E(`````$```!,````,+.I0E,,&EP`;WC;
-M3;9VM_XH!!2(Q;TOX.1\S``,YH<2>-/#JAMT:Y+I#9IL5!.W1N:,`P"8`0``
-MF`$```(```!%``&4A5(``$`1``#`J`$!P*@!`@'T`?0!@`=3DE1Z%IZEH=3DNJH`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,!``P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``D\CEL%3K/&V:S,0/3!CHI/65L#&ZF=3D7Z;TYY%8>8*<HL
-M6]/A4ZV:)817HJ3P<TB!-R:*F*;1\7CI/^=3D<6I![$T*4U3:(C3``_;P at LN)#
-M?(Y:D0G3"?1&W5AE-[H2=3D#M#>^9F6?Q(P&JF\UU,=3D%FOOG`LI8(?IT:F at 5\?
-M-PT-W_0I```DUF,%)Q`U+G;$9GL$%LWTLH^[N+`@N&5;-C7ET-<+?O`I```<
-M``!`!!+'/5;_2+:%,(7%AFH656)*<9-W````'```0`43UYZ)E#)L=3D8FCG55K
-M^`+>>;CC)%03MT;JFP,`7````%P````"````10``6(53``!`$0``P*@!`<"H
-M`0(!]`'T`$0&*4>A:>I:';JJ```````````I("(@`````````#P````@``!`
-M!@````JW!9$<S%#ZH&2'03;?VD/EF8;1J503MT9+JP,`N`$``+@!```"````
-M10`!M(54``!`$0``P*@!`<"H`0(!]`'T`:`'A4>A:>I:';JJ```````````I
-M("((`````````9 at A```@``!`!@````JW!9$<S%#ZH&2'03;?VD/EF8;1J2(`
-M`'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``D\CEL%3K/&V:
-MS,0/3!CHI/65L#&ZF=3D7Z;TYY%8>8*<HL6]/A4ZV:)817HJ3P<TB!-R:*F*;1
-M\7CI/^=3D<6I![$T*4U3:(C3``_;P at LN)#?(Y:D0G3"?1&W5AE-[H2=3D#M#>^9F
-M6?Q(P&JF\UU,=3D%FOOG`LI8(?IT:F at 5\?-PT-W_0I```DUF,%)Q`U+G;$9GL$
-M%LWTLH^[N+`@N&5;-C7ET-<+?O`I```<``!`!!+'/5;_2+:%,(7%AFH656)*
-M<9-W````'```0`43UYZ)E#)L=3D8FCG55K^`+>>;CC)%03MT:$SP,`4`$``%`!
-M```"````10`!3(55``!`$0``P*@!`<"H`0(!]`'T`3@''4>A:>I:';JJ6'*X
-M_<$SAH\A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(
-M`@```@,```@#```"````"`0```(H``"(``(```$A>TZ_FQ+.0W`IJMY+2/4S
-M`RU]:C?^4`*@PEX\XT0P(\J3AQR3:,)CNQ1F)T3P;JB&V\+?^>WZ4^5)"5,2
-MB9:$:3:CY>*)%T^"+Z(^JWI\QUH]BGD./DV>QTG-XQ97A=3D70::+-X`@VJ/S3
-MKX)R.`,9&/Y=3DTDBFB1!9>@X^<54=3D*0``)$0?JX::P[8:WD77>;UJ.D`5C$<#
-MAZWX27 at 5\W;O>D\Y*0``'```0`2@$]R+VRG^"$,?JB3_&.A,[HZ=3DT````!P`
-M`$`%0/GC%,M=3DZ0V#$BN)*'Y2#[.D<&Q4$[=3D&/?P#``P!```,`0```@```$4`
-M`0B%5@``0!$``,"H`0'`J`$"`?0!]`#T!]E'H6GJ6AVZJEARN/W!,X:/+B`C
-M"`````$```#L(P``T";)"YPJ at M\HO!W!'+*8"*RN[ICPOSBJ!645WKQV%0"#
-MNU%;.G3^L6CMHH.\-'".S<9!D8FX8)_3QTL7.K3U at HR#]P7.X,DP'#X'%G7)
-M)UAYTZU4Q*+8'_Z&@?)=3DA0RBUOU!I57V47!!S#4(LN#3#9\__V"0_VY/YGC<
-MT6Q[*?.(H-EA4>7_&?OR[""\6I&'OE&+/;P7F;5F)1OCAQG>#([:P!*]GPX'
-M6K-I:A?E#$_.A`I,](SZ)IUI]X:1H$C']J4]R%N[2L[-5NBQE%03MT8(%@0`
-MO````+P````"````10``N(57``!`$0``P*@!`<"H`0(!]`'T`*0&B4>A:>I:
-M';JJ6'*X_<$SAH\N(",@`````0```)PD``"`K0D-*6A<5,'8JZGS,O-C:Z8L
-M-JZUI?S?,SR\+>4NZ#RE!HOE=3D>RP^"WH[34H+%'=3DJ?3(\OX?&E7HH2E7]XA9
-MBQSNM50Z%DD&($AGF08R%ER<O7S;=3DTGW#1.!@;]9[N46PT.G50Y)M/24[6[[
-M5XW<6>K)"?-/0A2>YWI`C%03MT8G-00`'`$``!P!```"````10`!&(58``!`
-M$0``P*@!`<"H`0(!]`'T`00'Z4>A:>I:';JJ6'*X_<$SAH\N("0(`````@``
-M`/PA``#@0$Q`+"OG+L]4-Y!WB6XYKP+QLFN!L`H43U80*<K/[-H9\AJD%.*H
-M4:%L,5<>N)(C8[$/_U'Q`*J^25(G\E38+%"];QS7$$6_..\E(DG]*<@0I#,;
-M*FN1NNT!00<($+=3D\NZX/#ZW<N:S^ZH at N&FD<!,Y*PH>VD6\$1.\)=3DI at TU>NC
-M#0^K=3DZP+BCR^ES2AX:.<.Y-;O#>&?F_*#TE`#PS`,/TA9N4EZ%5X2%LE&-Y&
-M?.>BI9RN8+SDZSS9Y8`=3D-,*.JDM>Q)O(X]-<AG"'`IH]3PW^T!XY@];J5Y!Z
-MVU03MT;L/P0`_````/P````"````10``^(59``!`$0``P*@!`<"H`0(!]`'T
-M`.0&R4>A:>I:';JJ6'*X_<$SAH\N("0(`````P```-PA``#`AF\&T[SA;:W*
-M?D)T9^#X,'G];*BD9H]FNM&]6.ELK2N>[:ELL[MQ<)D\!D4>[W5-"E45#DN?
-M+"GEJ,[_8^%'$8SJAB=3D)F1E<P%%%;.K)(E^MM^61#IN[5*OZ\]Z]61GN4](]
-ME#Y"5Z4"21Y^HZ.9H- at M&`:Q3V&WT-G"<]:E"SX@@=3D.45CK5)A7L13B*<K_O
-M#IE3K"*[5X<6Z^:@IUF:H;5=3DBKQ'/0!X@:>R3'!\[H0*L4KU0ZF\RK5_32M4
-M$[=3D&]$H$`&P```!L`````@```$4``&B%6@``0!$``,"H`0'`J`$"`?0!]`!4
-M!CE'H6GJ6AVZJEARN/W!,X:/+B`D(`````(```!,*0``,'EK^+`VDHL(/9TL
-M5=3D12@<(J<%M4N1&*(9WFM[N`Q%HR=3D*W,Q/HS57,A>,`O5!.W1J-F!`!L````
-M;`````(```!%``!HA5L``$`1``#`J`$!P*@!`@'T`?0`5`8Y1Z%IZEH=3DNJI8
-M<KC]P3.&CRX@)"`````#````3"D``#!,?4H/U<W54D!/T'Z1)KJ!F0<J.2^E
-M[D>J9;9$IYIRH2#95:YT[2&RUY+E.%03MT86 at 00`/`$``#P!```"````10`!
-M.(5<``!`$0``P*@!`<"H`0(!]`'T`20'"4>A:>I:';JJ6'*X_<$SAH\N("0(
-M````!````1PA``$`PS*\)5R4(!1>CA-74`7#IA_Q96F**\E&8XJ)L"ITA5TC
-MWMI(,8 at A,E#;:>0A*E9_*FRE5F^G)A8!NIF54T=3DU?"P0CH-;]FD#C3RS!'^1
-MQCPTYB%!:E0+=3D%;PA3XJ&T59_+&?TCXM_7&=3DCX_O'MV)!ASR-5\SW)6;108]
-M<F(, at A:M^E990:N1M:YZI=3DL\)?9W)(X<D:]IB&HYV3FG2%"5VH4S.'#C:,C5
-M.-K''4TE)]&$2(L at B..$PV@;L1]X92^,92HE$,>+YOQ.BFN.7I(@#0>36P%&
-M9 at G''%\?=3D?&F^#2-?U70YVQ)RCBB#2?Q5!,0 at WP!XXHGC\-/`,9"5!.W1A*-
-M!``<`0``'`$```(```!%``$8A5T``$`1``#`J`$!P*@!`@'T`?0!!`?I1Z%I
-MZEH=3DNJI8<KC]P3.&CRX@)`@````%````_"$``.!>D?V"1N^<V'S6O]B!OR'>
-M59<.WYA1#.B0#QH3VBE.`6O`#MW=3DL//%)A%N04YDAYS)\[M)8PCG?$7,;KH@
-M,AJ=3D!9:*#7G/8195P_YH7/CRYG>)D37EB%!)%T(S)3O[0A&"C?43$P*5^3KY
-M76S)&[4'93?ZQ1\1=3DZI"7!;=3DGW`&AX98(`@1&"QWKD(;0(?EF(WR*&+Q!#TT
-MVO><B*?U]S)@M>Q';)/25UM4M**=3D-[*+\[SGX7NX#N=3D22C8/_YUOHJ?ZB(@6
-M2L*9VICIK]@!,^#4^02:KA+\51^W5?.*5!.W1J:>!`#L````[`````(```!%
-M``#HA6```$`1``#`J`$!P*@!`@'T`?0`U`:Y1Z%IZEH=3DNJI8<KC]P3.&CRX@
-M)"`````$````S"$``+"];[J2O58<<O+;K46_,-5W<?<$/RX9+O2<G=3DUCSRUA
-M(S4_[,4`F79R\KS,/^B7MO8593&Y&.,A]<X#LV_#SH0DN..2A=3DQP+.N%`NRC
-M*6<P$3MO7AYBU#91Q4YI$42.FXT&$#3*_^".>M)['L?GW4F(P(V6BO>=3DJ3KH
-M06QZB(W5QF*N0,9DP"%+Y(#MS!C\B6WE&\/=3D*\?ND<<(1)Z[MEQ+XR:7RL*+
-M96#B\9":5!.W1G7!!`#L````[`````(```!%``#HA6$``$`1``#`J`$!P*@!
-M`@'T`?0`U`:Y1Z%IZEH=3DNJI8<KC]P3.&CRX@)"`````%````S"$``+`$S&5R
-MYR[Z@;Y*&,_PSE+*A$]C?$*/6UO<5'2[%0B:"E^+50%]#`1]:*[RS\=3D>]-^T
-M4IA"(?,KD=3D4W,S<8\:V.#'6>-AO1^_M>-5D*8CF!T;_W/'2)N at RQMT(U at NA#
-M*XT\]I,7G\^4G at QY!38^,FT"%NAUKT"F0\M]9VL//=3D+HYMGTHKS<.=3D<FUL/Q
-M>KU[9#X8PR+\5$Q?`$X'77$!. at 1=3D(=3D<<DP[Z@];K\0U75!.W1N'>!``\`0``
-M/`$```(```!%``$XA6(``$`1``#`J`$!P*@!`@'T`?0!)`<)1Z%IZEH=3DNJI8
-M<KC]P3.&CRX@)`@````&```!'"$``0"ZAL$-(.;.\^'88Y"N2R>>T$>GC::E
-M;K-%3#B7&P8%O*R;KFYG2@%NS1Y4S:+L)7(JT8YK<4L2M47&1FNPZNYJK(."
-M^HB:K<_[Z4L>TQ>Y#/_NXCU=3D1D-"6L')28$.18*N.9!JH(I%YU_T]=3D[`5XR^
-M0A1<#R1;X[2VA/[46O2FN]&XU3W>3#O?6'"]`R^UV$[[ZFH'#F&.Y9X!+*^N
-MI7R*[K`G7N'7Y>FU=3D3MH*#A\]*N8L9_LR>5*U8/#ZG]S:"[G=3D%#%;JQ%I6`:
-M<^\*3U56\OEL5 at 7[2G)HF4#-YAIBM0]9Y2DWM%8?)!#!T2X!PVX0(PF!`3-V
-M'554-WA4$[=3D&J.H$`!P!```<`0```@```$4``1B%8P``0!$``,"H`0'`J`$"
-M`?0!]`$$!^E'H6GJ6AVZJEARN/W!,X:/+B`D"`````<```#\(0``X#1/G[TE
-MX0LDXLA##S3,_,=3D$W.F3205PT4R]DSSO^>.4^QZ#!I2LKW7<ZJ>(-'8C4M<=3D
-M!=3D\(5M"'7A8,1D6+Z_+[>LU)KE6T at VZ)87DNR9?QXQ0S63#B`$*TKT+H#EK0
-MCV]FLA at V<DG:F%DU at 7_3;=3DJX[\N?:2DY(('A2DY&=3DE]2!__NV"P2>S]34-]'
-M=3DY_U79!)S?@+:&7\XF.D;E,83"Y,`1KBF=3D1(4GNXMXJ[=3D at AHO`VZE,D>S"0H
-M?DL?_N57)QW".YU/,=3D;ZEJUQ_G/\9%56];M\(9!K<([L;V14$[=3D&D?H$`.P`
-M``#L`````@```$4``.B%9```0!$``,"H`0'`J`$"`?0!]`#4!KE'H6GJ6AVZ
-MJEARN/W!,X:/+B`D(`````8```#,(0``L'8N!\B2+>SKY=3DS;H4+;8:XLUQK`
-MZ(/]FP96C at V-PAOC708(]U$?Z:0^MS+KZ!UCH$*H&*:!C<EKK3[!:N-0]HQS
-M<FLM"J;,+BFZ>Y.3)+[J`@YU:L9LO^'`@<BT$M?<@PKP.)/!;!UQPU%/%]XZ
-MHPQ-*O=3D^IA,220.ZCO773JIH>8QC\1.'#[]T-^D4)Z_?B:7")H`5IA^$"=3D6D
-M%O7,X>$8\.J)6>-IW1D)@<U4$[=3D&(1T%`.P```#L`````@```$4``.B%90``
-M0!$``,"H`0'`J`$"`?0!]`#4!KE'H6GJ6AVZJEARN/W!,X:/+B`D(`````<`
-M``#,(0``L"'[Q:272I;-U_R2HL/,*2#4B?5=3D\F5LS"]DJQ2[TY/D$(I%:2`=3D
-M:K>$Y:%MK1*"Z;*C?FA%`6F!\[(,+LO/B^\9+Y),`1'^`.P%FE49N+GA5@)'
-M?P9;(68!"?Z<=3D'>,Q?[]<0`!<\+4A)'"]J1HDZ$=3D5MW\"--3W"87>QY':5M+
-M2P]^B1R1_ at NO)_Z_ZL,+NLIZ7IU:&=3DH39>3VX6Z30?-S[?3WE_:4B)MUN6]4
-M$[=3D&[T(%`(P!``",`0```@```$4``8B%9@``0!$``,"H`0'`J`$"`?0!]`%T
-M!UE'H6GJ6AVZJEARN/W!,X:/+B`D"`````@```%L(0`!4(1.N&85&6P=3D7'80
-MYQ%GCK-,3\@7D/9 at PJO`9A`=3DC179HA>*V93Z7[;1Z+UAQIYTPH/G^ZX[[93(
-MUVA*K8#4&L4'C]"C>Y1>G.SM`AR!`]<QF$EI3RG/ALF<43Z&CU"O=3DP>22:8#
-M2W"WN\^QY;3:>I>T=3D:O(YJ9#OAW%/X>*0,\D12U9"["'NJ1X;IV3M@=3D>VW<3
-MAD%P?YL/"0(MK^!(V`C(V_KME&S7QF%3M^4MYI4"^Y<$L?;-P;-K*`^=3DXF#Y
-M.JD8D'1A&``1VZ?A?.ER;Z)&D*353=3D!W/EP./$F\>NLV4&H!3*7\/2G'I+M^
-M^<'?*3&C\`U\"KZ(3AG:9-;PCAZ58:5$+9M?%1OL at 438<V`NRW\\+1R*VW?M
-MC`S4$I+'!RXZZ!<`R??AB)PSS at 7Q\T>?*??734';=3D`$"1BN*FJK1LFRX;/FC
-M%-&8/;=3D#5!.W1N5V!0!<`0``7`$```(```!%``%8A6<``$`1``#`J`$!P*@!
-M`@'T`?0!1`<I1Z%IZEH=3DNJI8<KC]P3.&CRX@)"`````(```!/"$``2!K=3D>9U
-MH,1E6Y$B/5?IO\++!'J/<JQ6KW6NG4WAYXU^N5>0("YA5F`WCIEM)+TF,)!6
-M*B/MT!>L1(\D+-O6O1'C<Y&#/CF*][X at 56T%B]D]$LQ+/M-L(LWY&>VD\(6H
-M;5]N4F&"3,A5_<2]!NG[[X&B?%MO>\4 at _@DKX at MCP6ZB<PQEE0>8$+U%(@NS
-MGPG$VHJ?%TMDW=3DO;#1P8Z[`;^\!>^<^)4F6I9G60N+EJT$R.Y-77N^0+9\\2
-M.POJA6-O<L0/;*'%=3D%DN[$1BM,B%_=3D:B)4_+S)N"(@X[K("L6+V2+AJ&_SA`
-M9_T'Q<Q47]9Y<+&PSSTX>HB,BW4/ABT10<:8A<ZT_$;^0_OKSP#WWX3S0-HY
-MXP[C'MT)54-VLU03MT8"G at 4`?````'P````"````10``>(5H``!`$0``P*@!
-M`<"H`0(!]`'T`&0&2;M)@I;N-A$X/](=3D]E'5$ZXN("4(`````````%PJ``!`
-M_I9P&2$8YEMG/9)4P)IC#S)Y\[F"9=3D`DMPBAK6FS9D/BW6CO%O^0)LF$%YVD
-MWT2]</%\=3DZ-]-]<R__M^5!.W1OBI!0!L````;`````(```!%``!HA6D``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YNTF"ENXV$3 at _TAWV4=3D43KBX@)2``````````
-M3````#`.J)\-!IC;2$W2/D'QA,,6-*$R.Y/@WM1C$NW'=3D1XH3..)!5X4H%#!
-M]!_D-%03MT86N04`;````&P````"````10``:(5J``!`$0``P*@!`<"H`0(!
-M]`'T`%0&.;M)@I;N-A$X/](=3D]E'5$ZXN("4(`````0```$PJ```PA%3:+8PE
-MH'ZBXP"`O^*%T9>7O4Z"1?ZA-XHKB2[V%#,]$(&R0Z.;E4Z_'0=3D4$[=3D&0,8%
-M`&P```!L`````@```$4``&B%:P``0!$``,"H`0'`J`$"`?0!]`!4!CF[28*6
-M[C81.#_2'?91U1.N+B`E(`````$```!,````,%VVKYCYD0_IUO3T>6%%Z1C"
-M3RM?7[Z$C,'>[.B5KP<K$B3V_"AJ,_P(W5VX5!.W1I?"!@"8`0``F`$```(`
-M``!%``&4A6P``$`1``#`J`$!P*@!`@'T`?0!@`=3DETV5LB%((SSD`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,"``P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``@8>L/V$PN)NU]@(2Z,+6KXRU>\IB0M<G8SAU:.WU:>L<6'#IG&TP
-M>$$:9_4D!1OW%RV^UC:"YSJ6)<'7#\G+3:#-28[O32M3Z"O:24I3V*RKVL1-
-M:Y[1EW:&]W);QL`R5RKB3%(T*;)H<`8F5VBU5TI[WT>S.HDU,938>.Q.TK$I
-M```D)7Z_&!8>O;/+^04B)3V2E;NHN+W9D4[N_U*"S40%+'(I```<``!`!&X1
-M]NB8"/H7:`"5MZ&8#;@K?E\G````'```0`5P84W`[DWC$)++&FC)`]A[;QW*
-M8503MT;8T08`7````%P````"````10``6(5M``!`$0``P*@!`<"H`0(!]`'T
-M`$0&*=3D-E;(A2",\Y```````````I("(@`````````#P````@``!`!@````KU
-MY`*BZ<%Y5'HX'>P at C)/+]=3DIDLE03MT8 at X@8`N`$``+@!```"````10`!M(5N
-M``!`$0``P*@!`<"H`0(!]`'T`:`'A=3D-E;(A2",\Y```````````I("((````
-M`````9 at A```@``!`!@````KUY`*BZ<%Y5'HX'>P at C)/+]=3DIDLB(``'@```!T
-M`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``@8>L/V$PN)NU]@(2Z,+6
-MKXRU>\IB0M<G8SAU:.WU:>L<6'#IG&TP>$$:9_4D!1OW%RV^UC:"YSJ6)<'7
-M#\G+3:#-28[O32M3Z"O:24I3V*RKVL1-:Y[1EW:&]W);QL`R5RKB3%(T*;)H
-M<`8F5VBU5TI[WT>S.HDU,938>.Q.TK$I```D)7Z_&!8>O;/+^04B)3V2E;NH
-MN+W9D4[N_U*"S40%+'(I```<``!`!&X1]NB8"/H7:`"5MZ&8#;@K?E\G````
-M'```0`5P84W`[DWC$)++&FC)`]A[;QW*8503MT8E!@<`4`$``%`!```"````
-M10`!3(5O``!`$0``P*@!`<"H`0(!]`'T`3@''=3D-E;(A2",\Y2480.SS);VDA
-M("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,`
-M``@#```"````"`0```(H``"(``(``,L$;7?$+-OUP:>QII;H4P'JN_;K_74`
-M61\0EO87''%$*6]*(,U^2I"'I0AW`/QS>.$F!W$4DSG9N+0&+<E[KR>C_)*G
-M=3D\8&-G9#E\953OLW:5Y/H$*IT2M'&T,>LDYK^5N"8R40&E4DS:AI4'#]:PO]
-M[(YCM<BNA24`SK4+;B?,*0``)`[3N@[>,$NL2"_%P&>QK9]'KYHZ/3Q9ZR.Z
-MHSI(N&QN*0``'```0`0>9&UFHGO<"%U43,T6FF_8JB<YH@```!P``$`%![AA
-M-6$'*^N$LVPM\`)C/+\O+PU4$[=3D&HS,'``P!```,`0```@```$4``0B%<```
-M0!$``,"H`0'`J`$"`?0!]`#T!]G396R(4 at C/.4E&$#L\R6]I+B`C"`````$`
-M``#L(P``T$Z,'NZK::"5=3DEE<F at 5"+L:%PZ_;OI3+J?B/@>#Y)_N[6=3DZX^N)_
-M)<W5MA+9,$@H!&VGJFPL6EU]UQ$S0XP%\=3D/%/[.#V1YM3(SJ^MTDQC at B1P%4
-M$)([2(GONPND///M=3D?%_O#L(2B?,$,]+.:Q](J at S2KA@P`*+QO;QZ9<]AV?=3D
-MFBO8/0_RF!C*_(*,DH]4M6M$.K,4-U`63;P*E)%$L;%U%A%2/W>))XL;E2OF
-M+EHYS;.SNR)/[4_/*G>2!?\5BJ7E)N2FSAW-%[L]A%03MT9R3`<`O````+P`
-M```"````10``N(5Q``!`$0``P*@!`<"H`0(!]`'T`*0&B=3D-E;(A2",\Y2480
-M.SS);VDN(",@`````0```)PD``"`IC0<,=3DH!D`:A7;CHS>Z/`D&-<Q"N<G<#
-MTLC@<Y35"=3D?"*1>L)WT]ZF8,4)CY'=3DBJ&=3D'E=3D'`I,);?'V&\,VB8R-3Q'Q+9
-M%'RHLYSQM%&A+CG>>C at O882NQ>;"5?<UYV8&P$1RF-5C74@%+EE6J-'6`4BM
-MVL=3D.7(@^Z+[2G503MT:B:@<`'`$``!P!```"````10`!&(5R``!`$0``P*@!
-M`<"H`0(!]`'T`00'Z=3D-E;(A2",\Y2480.SS);VDN("0(`````@```/PA``#@
-MQ at M4.I,H=3D:=3D_/[59WBTDGOME)CJ#`<IVUAQ)"%>T'CW%<:J(PF>(PG>`H!E2
-M&)/OY:=3D]W=3D^-M7L86K`?KNPQ(X<$B4]/48J_5NAF<0L>,&FVB\1XNA52G7IM
-MSO_.-2`3V`>D2J)DN#%C.RJDG8E)AES?\4W,&NYC^\,E)[R%2+DK^!05[@+6
-MS1D>JZ:76N9^/4D at 58K,2%/])05+J9[F*3A?JF]8665+UTUNS\'GSI`_DN4H
-M$Q%^R8CP_K?/C,A,#F[J[NN9*NFIU8Z7"\PY&Y5#]#*@@O]SKDI8QE03MT8[
-M>`<`_````/P````"````10``^(5S``!`$0``P*@!`<"H`0(!]`'T`.0&R=3D-E
-M;(A2",\Y2480.SS);VDN("0(`````P```-PA``#`2@]N29+M3VO at _O-[;IR@
-MK4(*C at GAHT.:&>D`T^OKGJP[Y!!<@>Z]Z,1,;BR1[QJ7A!)A=3DT21)J^N^$S'
-M452'U9`DA*2[94W]N8YR=3DAF_C56X)I0LQ*K]R*!\[SB?2!Q&QY?=3DL?NHFICJ
-M0D<%[3A\>W<7OQRV:,JDQ9Y2[,SF0'>\8'*<`M+K"GX2EP<'H*KL:]KY_(!U
-M/K[`8>>_<`5`KHB4^N@'56\^^W]6;PZ#LZIN`%NL3K+1.T3VP))4$[=3D&:H$'
-M`&P```!L`````@```$4``&B%=3D```0!$``,"H`0'`J`$"`?0!]`!4!CG396R(
-M4 at C/.4E&$#L\R6]I+B`D(`````(```!,*0``,)+P`<,>[M-B:-'#+G_XI2G#
-MM4+X*P/4][->7\,''O=3DC_,=3DF6'DY&&[W_ZHO5!.W1A"=3D!P!L````;`````(`
-M``!%``!HA78``$`1``#`J`$!P*@!`@'T`?0`5`8YTV5LB%((SSE)1A`[/,EO
-M:2X@)"`````#````3"D``#`GRA=3D65M&SIBSJ;#Z8I]0W(JO@(431*ENF[2\5
-M7)Q<H`_/H!Y+A%Z4YR8WO503MT:BN`<`/`$``#P!```"````10`!.(5W``!`
-M$0``P*@!`<"H`0(!]`'T`20'"=3D-E;(A2",\Y2480.SS);VDN("0(````!```
-M`1PA``$`A+8=3D#5K2U"&$T8"1J45A[]3G/O3SW/URD?F9=3D$(K6I[<F:ZV_KI!
-M5+U83</K0."!!#2IO5I?D41;3MQY&CM1,(WAL#))VYCA*6UGQT(.I[5!':%]
-M69I(]B9V8R=3DK^E(9JYXT#N1S<&F*0^3.:&'=3D$L$ZLY=3DS`DC-VW8#!5J=3DG6;9
-M`AJ&9\A#3AKNN9)LA at CG@<IVQO=3DVQE"'*O9NSK9K9""KI!]W;QI]"KNEK;D2
-MW>7JA656)Y%%_/CO*&G5%[,3Q.DS\$:1*[@L1^';%%P>EDH$U5(+$*K**]X&
-ML:('4S(9?M?H+>;/I1T-0<=3D)3N'(;]!N,8VE/HW'_W745!.W1E;$!P`<`0``
-M'`$```(```!%``$8A7@``$`1``#`J`$!P*@!`@'T`?0!!`?ITV5LB%((SSE)
-M1A`[/,EO:2X@)`@````%````_"$``.#S(MV#Z;K>$QL*=3D[B6K>B4,$_YA^.T
-M0[02!]R`/#O*)N2KGXWAKL/;AF@"PM;2P5^*$VEZS5?V$2VQ9QEVHG'R^G at U
-M.RM[.GAF^7%0<*43NN\'U5=3DXGM9P&KQ5@)DUIEC.<&T:AO3H*TSC-4G8KQ?3
-M`F'1%EMPP-!`MJ*8(E9(S.P8LLE*O'J2K-$I1W11D>E_)M=3DKK/&_6$CY2L)X
-MG.M_SCC:G2:Q2U*^)9T36Z.73(09A%.S:M.ZG"1H_1\3J1J@\B0QSX:JYK:Q
-M6XBL;?N2T!H@!/NM86^1E at CX5!.W1NS3!P#L````[`````(```!%``#HA7D`
-M`$`1``#`J`$!P*@!`@'T`?0`U`:YTV5LB%((SSE)1A`[/,EO:2X@)"`````$
-M````S"$``+`O`WU:925LP*#=3D(10?^2E)!,1_403>Y,5OBZU9FO^.YURBSB?6
-M#C^%_/[J)P%^7].`:5\L-I?52(]`*SH08:=3DJ.(Y*0*+]3/-40%F?Z*DJI*_6
-MS/>),&P9_N!RO['%T.]GQ\S;`)KMJV$U>H*A++>[G12O45C$P\T<7EAV-Q2^
-MN>$<>?QK5$Y*BG\+"&LB3OKS1)871#7?LR5.FX&3&_/Z30B at B=3DJ(=3D6X"/67:
-M5!.W1LWV!P#L````[`````(```!%``#HA7H``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YTV5LB%((SSE)1A`[/,EO:2X@)"`````%````S"$``+"'EU=3DK'32".RU4
-M<E!=3D3U6_2X5-_[&%%[+,IEU_DDA.D(-O)E*1$D-"T*[9E>FI\'BD>[^5:Z7@
-M"Z$QG.ZTT<_'S&)@L&$0?EX"42\T=3D=3DX?\8X0(@M/\:*>0D0B>XQEW_^MY(%>
-M(;;@L9MC1=3D-4+F;1I-E at 4C$F*OWAB-YBEY>26?SDQRPPI[0FHX"ZRY7BTG=3DS
-MQ]_NW*TC9P$AD@&+R at E]B%I4I;0G9#4WSX5`5!.W1F83"``\`0``/`$```(`
-M``!%``$XA7L``$`1``#`J`$!P*@!`@'T`?0!)`<)TV5LB%((SSE)1A`[/,EO
-M:2X@)`@````&```!'"$``0"<J.Z,\?.TN/)3P20'D at KU^3#<]6E#5=3D8_ZO-)
-MF]UQ7B-)-A/Z4S1-2-UMN[N,>@_#]3_-<(R]X]2G/^A0F5)K<81ZP^'`9,UE
-MU_VL1*+F?I>91K0!#/^KMW`K8O6S@&Y)OAHC[@@")@@FQ6UEZX%-;*P2""5_
-MMG4#9;^Z!70+>9KT(2XGS0)]=3DHZJ*TQ;O!AF2C(`XS>4E,W\<7O-U@,,,JT.
-M<I\]AE6_,9C9RRN6']9B5K//F at UY^(\4YU,^101X25C-RE>_]>`[C?G(T:',
-M@`[TX%(8$:/[ZD61*IROFGZS2LSV7HL-7S<<\R[WQ*&!2S1X[DH2&K/+1"E4
-M$[=3D&W1X(`!P!```<`0```@```$4``1B%?```0!$``,"H`0'`J`$"`?0!]`$$
-M!^G396R(4 at C/.4E&$#L\R6]I+B`D"`````<```#\(0``X!('BL"M[J6K((:-
-MR%KIQQP2[+!EDVO=3DEI)K;B>C00RQP*)T#,*IK5[G?:I*AF`N/`R!U`TP_YM/
-M0JS%73NDY at TMZ>J_=3D"^[(U#T_4>G2VM::"_TN0(VW271D8,+-9D)PP%\('?(
-M2^7K_4)%3"7*7&F7<J&((06S]D3+6J>)=3D/"JO,DYR;0G<)1M;UZI$J%Q.\&U
-MP.X at C+ZJUVT_49RP\4^WF]@/3E:]1%BKJ$NL>7TI$3PO#WY5E["VQ#*X3QR3
-M/GWI63J'`3&J-9:LC`$II\[?[P5-ZVCI;[QX_;)4$[=3D&#"\(`.P```#L````
-M`@```$4``.B%?0``0!$``,"H`0'`J`$"`?0!]`#4!KG396R(4 at C/.4E&$#L\
-MR6]I+B`D(`````8```#,(0``L/.;Z#\F-=3DE^/S9D*/"`8!WS+<!!!];0SJS?
-MPN60#TQ1UK]BP'C1?0-/)U@<^@C(L70UR`]TD^1:*7Q)@BLZ8QWY<&)QM_%9
-M11UXW`A"J"&IX)"$I5DHO]6\-#BT at 36]?A&%/:@/0%E*4L?W,XPD<M1FF36)
-MGY[(/_Z25A]"RJV'<"PV136LH81^+`JK+L^]'-`:]1:*&Z=3D=3D;=3DY,Y6#3-A4Q
-M\6$\^]F&!-/%CZ-4$[=3D&R%`(`.P```#L`````@```$4``.B%?@``0!$``,"H
-M`0'`J`$"`?0!]`#4!KG396R(4 at C/.4E&$#L\R6]I+B`D(`````<```#,(0``
-ML)-=3DY37=3D=3D at D_+T=3D1EEJDN26+>\FQG(7I#B#^`S'&/G!"[+#14)9\U;=3D=3D at -!D
-M^R4?TK0IZS`8<\-R)_Q]R<35QHA'MARC(CKZ5:[ZB%/:W)P.8"0*,L=3D/UP7)
-MT.2PR5^/#M!Q4/5:I-!T&;I*KUKR^P?WL0Y=3D*+/O5UJV?F&XO3YNNR/((?"S
-M83 at C6KD;]]A_U."4-EFY%[,<?'1=3DU_<,@[+Y"$/:9>8LD@"6:QY4$[=3D&0GD(
-M`(P!``",`0```@```$4``8B%@0``0!$``,"H`0'`J`$"`?0!]`%T!UG396R(
-M4 at C/.4E&$#L\R6]I+B`D"`````@```%L(0`!4#0Z>!(:3EX-(%2,7#$2E9+<
-MEO<OC?Q/!&ILLE_DG>&9*RQE\V)KGISK_;IY;'4,R5T:`\PSIW at K?.I&H?#A
-MH+7&[<V9#D:,4)G\5BIRDIFHL7**3?78ZM-R]++;4METNVL5<-;PK7;%@>L0
-MCP-NC>6^N:>TP(UU)Z%^[#3%BN.H6P9)H-Z%CG.!U-R"MV,O)\2:[DMAM@=3DT
-M=3D?2Y7-(=3D^%]H*[8EIGK;>4($M=3D;C;+9>.7L_QV]3T>K7F;T>J,'@]V-!FFVE
-M!Y7DNCFDB/.$_J%</ZT)\B9?SSI92B/C0-3&???!X=3D8D!V64I6)I._Z<*:6*
-M+T;7-9Y1DE)7C2*+6NG4#<22L'1D5W>;O7))2U3K1P)JGRA`Q*6+2Z9"/@YW
-M2BSZ5&T).)8&^\+9M>&LT39T)Q at A4>C?73N&!I#2\M]@#F)J$YGM(IFDD,`:
-M5!.W1DNM"`!<`0``7`$```(```!%``%8A8(``$`1``#`J`$!P*@!`@'T`?0!
-M1`<ITV5LB%((SSE)1A`[/,EO:2X@)"`````(```!/"$``2`TO&4;K?O59-^2
-M2V(]5%<4(F$19VA9[][^=3DTLUYQ`6/A44)BJL]2]/P+,L'V20%77&]!CFR!1+
-M66M;D)`(EDEU`PV(Q)&3"P9VOCM+_Z\Q_GM/2'3?`PJ]D),.=3D>Y1^/6EF8X@
-M at DSYF-2'![?#';/!"=3DEJV"A/%_;ZNQ#[]RP:@D)@IRMF&4Q%&>LJ8?'Z%`>>
-M+`Z>H8U1"B9W_S)0I>!S6P%.<O?08.UW+DJ_,_$Y<!]-.\;Q_W)VY;VA;((+
-M)W7.%SOQUI8V1%Z%3!MHR2Q!(T"2XA<S!2AO9GI\*_Y%Z#B0$7:?3Q at Y,'AW
-MO><:0<&54\F`4?O&=3D&"Q;G^(^B5AQE=3DU``E0FJ;O8,&J\)!CEH8BBU[33EVY
-MR*0 at F%03MT;PU`@`?````'P````"````10``>(6#``!`$0``P*@!`<"H`0(!
-M]`'T`&0&263C*>N"T5#'9P!6(2V;XJ,N("4(`````````%PJ``!`\T7`K at 2F
-MK'PCEQ(!R0#RK;^X+'OCHY*?E,KX>>3Z16,CX)5XUVST/SJ0%T8=3D#`$#>&^3
-ME2!)F?=3D9!!4D5!.W1HO@"`!L````;`````(```!%``!HA80``$`1``#`J`$!
-MP*@!`@'T`?0`5`8Y9.,IZX+14,=3DG`%8A+9OBHRX@)2``````````3````#"Q
-M=3DW<,?:KU<7"NA23]!4P<JVAVKJP65DQM>#GR>V,V/)ALN,)J'0)._)-'AE03
-MMT8)[P@`;````&P````"````10``:(6%``!`$0``P*@!`<"H`0(!]`'T`%0&
-M.63C*>N"T5#'9P!6(2V;XJ,N("4(`````0```$PJ```P,Y)B'$CV4`@U74D9
-M)$Z&S6>Z\TO)R(:8&UN]L#^*5 at 62%TU#ZN%P?1MF-6E4$[=3D&V?P(`&P```!L
-M`````@```$4``&B%A@``0!$``,"H`0'`J`$"`?0!]`!4!CEDXRGK at M%0QV<`
-M5B$MF^*C+B`E(`````$```!,````,/B(EH/NQT4VO3AG`82ELE0)VK>RW07@
-MW8HDWSHGF(F_\8YD:WS5*)`UPF8;5!.W1C?Y"0"8`0``F`$```(```!%``&4
-MA8<``$`1``#`J`$!P*@!`@'T`?0!@`=3DEW5DHJ=3D-+Q*,``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,#``P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M%`W*)6:1C3.$V:5+\4)O\K1SE)N3L4I+5\\NHR=3DBW[9T`X?!)2+:"DQ;8FS8
-MV$6R3N at R@^:30\J)/&+D at 7@9\8EP5I58YVP2^!X9<IFP<\P"OT_EC($7+D%R
-M0YES)>/O2"WLG%JK+(<^5AM\J/L-K4Y_V,(1UHA4/+%0"FMK'ZLI```D0>M1
-M&%PU.`32_LG6+&;QRF at V<5ODM%6%3 at E1Y<'XO<\I```<``!`!"Q08);%IER&
-M>MI80)<T1E`C\;^'````'```0`6QK)ED2"[N,7.U9-9]DW6I!YPLQ%03MT8X
-M"`H`7````%P````"````10``6(6(``!`$0``P*@!`<"H`0(!]`'T`$0&*=3DU9
-M**G32\2C```````````I("(@`````````#P````@``!`!@````K&=3D'C;!G!P
-M0J_@]TI- at Q=3DS;7?^]U03MT;2%PH`N`$``+@!```"````10`!M(6)``!`$0``
-MP*@!`<"H`0(!]`'T`:`'A=3DU9**G32\2C```````````I("((`````````9 at A
-M```@``!`!@````K&=3D'C;!G!P0J_@]TI- at Q=3DS;7?^]R(``'@```!T`0$`#`,`
-M``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@``%`W*)6:1C3.$V:5+\4)O\K1SE)N3
-ML4I+5\\NHR=3DBW[9T`X?!)2+:"DQ;8FS8V$6R3N at R@^:30\J)/&+D at 7@9\8EP
-M5I58YVP2^!X9<IFP<\P"OT_EC($7+D%R0YES)>/O2"WLG%JK+(<^5AM\J/L-
-MK4Y_V,(1UHA4/+%0"FMK'ZLI```D0>M1&%PU.`32_LG6+&;QRF at V<5ODM%6%
-M3 at E1Y<'XO<\I```<``!`!"Q08);%IER&>MI80)<T1E`C\;^'````'```0`6Q
-MK)ED2"[N,7.U9-9]DW6I!YPLQ%03MT:C.PH`4`$``%`!```"````10`!3(6*
-M``!`$0``P*@!`<"H`0(!]`'T`3@''=3DU9**G32\2CGULE_>MHD$`A("(@````
-M`````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"
-M````"`0```(H``"(``(``)3VW.6-_,(SB]U_CEKNGL4O^L$`DL4&V8]\EB<`
-MW,=3D'S^PKDV"1IS;ONY8XACUVY-`0%CZ3E43BG/WU\@@6%!EF<';&8F32N_6"
-MID(CYLS2_Y\:WI70RC`FXVC)^=3D<@X(3EXM at 5I6V4'=3D&'9!L-D+>Y!T_TW['B
-MCD`]_R'CVX<**0``)+HT<P'\_E(TCKM9209&N>:8<7N-++UPI5 at M351%OT\G
-M*0``'```0`3W'<T!YN'\7GZ%J4`3F8%RJYT<QP```!P``$`%Z?B'NVZB>5K^
-M<QMHD#0TH_B5KY14$[=3D&I6@*``P!```,`0```@```$4``0B%BP``0!$``,"H
-M`0'`J`$"`?0!]`#T!]G=3D62BITTO$HY];)?WK:)!`+B`C"`````$```#L(P``
-MT,UZS4M,=3D$9VY(8ZE<Y48-4ZH"$M0HA/?*U!VTPVP4[`L360C;F&5^-,\`JE
-MJ.GD6MWH<'9 at -D'5G?YF42)ZZ%Q(A1YSYFETXCZ<-=3D%'HE>:?[!O_"\(*JCJ
-M3!)%P8/Z4D;$CE^",WRW?/6N'C3HV(X+@'TE86LUU2,#:/7G3*B=3D._,F.]B#
-MTHKL!J"L?P=3D%IIST8F9!E*>*A+0+3HS_-H/'1^,'\>,M_.TZ61C2SX+T++;/
-MW.VDINY%G[?*A9BIL?PS5AX;?O-KU_MPSE03MT:W at 0H`O````+P````"````
-M10``N(6,``!`$0``P*@!`<"H`0(!]`'T`*0&B=3DU9**G32\2CGULE_>MHD$`N
-M(",@`````0```)PD``"`N86MG,E3F'T.B=3D6!O+0RH?2L at UCBA=3DXR\E#7^G6O
-MU,2\)#S'E*2]^`%Q(8EN/;:`R378KA?F:`$I=3D?:3]_\=3DRM)8\P%9&5Z9S99\
-MY[DKH<R4\PKS`I0(>&U(&7-Z-<;3C@<<(@A0`QMB("X#X@'4`(;T_PC&*S?.
-M_)3&M%03MT;2H`H`'`$``!P!```"````10`!&(6-``!`$0``P*@!`<"H`0(!
-M]`'T`00'Z=3DU9**G32\2CGULE_>MHD$`N("0(`````@```/PA``#@A#5],1D,
-MXE<NJ!DJ8,[PLX3OW,^.5S'*S75=3DUZ(]JSDDQSY&_$C,P7C.<?X:@W\2XC*2
-M*'J'-<.9>XT-UUD%X1DJ<,'M,HU\/N-'>Z6;<+?GA!')J^`.80()[J at -63L2
-MI^GD)N/3^[H9Y@&@!4;G998U+R1O\0'5$M5IV]\>2/>5E^Y'0"`50?8;J7BM
-M[GML<Y<P-V9^;\*Z3D;C3M-EW@(?+SPU]2?^6",SF%1#M&>!]$V!!F0%Z.*4
-M^C)NC4=3D/%7+XV=3D%R.1M68$&YU'9$3H\;E@?_77J_!)+UF503MT:@JPH`_```
-M`/P````"````10``^(6.``!`$0``P*@!`<"H`0(!]`'T`.0&R=3DU9**G32\2C
-MGULE_>MHD$`N("0(`````P```-PA``#`<46^94`U+.T`SV;MWO'BVK]KIOM:
-M64X?1^";)'J.-V#TX;P$KGB6BMJ*QN,VE7G at 2=3DSG#$6,E`(R>><U;"Q`;[=3D=3D
-MN?5*T/B at X6[CG*O9(?X2.1!-LV(PCN3+\RR>;O52B\"K+OHH:5J8WE--/Z7E
-M=3D&WXZ8A)C7NV`M58L^.FQ.K4MSM;"[#1LN%"F&IE-WPXG.(1W,J!%\UT,&=3DM
-M$-W8.0%3"`']X1;NN+NR>#UFPR1YXOL`=3D90<<IO#RR14$[=3D&/[8*`&P```!L
-M`````@```$4``&B%CP``0!$``,"H`0'`J`$"`?0!]`!4!CG=3D62BITTO$HY];
-M)?WK:)!`+B`D(`````(```!,*0``,.-PUKGY>AH$K-RY9WU#O"K:Z(9ZCV)Y
-MF9PSE%20(#$][=3D)@;1. at E>94[QB35!.W1@?2"@!L````;`````(```!%``!H
-MA9```$`1``#`J`$!P*@!`@'T`?0`5`8YW5DHJ=3D-+Q*.?6R7]ZVB00"X@)"``
-M```#````3"D``#!C"M79U-P[LSBI+&HD.]!H7QZ-H70PY=3DTT36&4XYQ/Q6LM
-M#A;ANK4SL"G?4503MT8+[0H`/`$``#P!```"````10`!.(61``!`$0``P*@!
-M`<"H`0(!]`'T`20'"=3DU9**G32\2CGULE_>MHD$`N("0(````!````1PA``$`
-M&F*D%83G_2+C<TYXA_[SY;HE?;H?BC>%>H#[>5N'Q?=3DH\S_E9#);,%Y!T-7X
-M84(8DYFQ=3DCLESPY'!0R5*.7[:&WG,6)MX]#7;F:(B.']N6R5=3DD\'<)`O`><(
-M[7)]6T2=3D%44+>XD^VOY(W$=3D$FV6O>VB=3D,B,R/X,[63SS,2[O@]]3N[2M%<G[
-M#X`QDT1M'.:X@?2(&S?DW^<$C10S%O_2N*3?YZ)E=3DL:Z1N<LY*5L1H'`K)S_
-M_(78?H*2PU61O'>=3DPGRR%?(@]351O at 2C):&!IF'_4NRGY0]>TB6B)>W4.DWK
-M4R*/A(Y<.<M?\0_:7T<JR1UGK"\](N(0H)9$5!.W1A3Y"@`<`0``'`$```(`
-M``!%``$8A9(``$`1``#`J`$!P*@!`@'T`?0!!`?IW5DHJ=3D-+Q*.?6R7]ZVB0
-M0"X@)`@````%````_"$``.!5K,87&Z/.:^M7,4H=3D[!@U0[2)4ATJ\R;Y(K^!
-M\TI/(.ONTD"E5RAS[*5\FB51@*!'`J)4VTYV at J:"/[2(&^\X4HQ;N;-@'>3,
-M(LP?>Q`K\>Z8XM.6_2[:#IUUQ_"\@0=3D"N\!(5ZEG\@%*ZBS'8;M]('M0EK%\
-M(^3(<?:PQ+$=3DZ:`VK@(O=3DU0,9\M)]PGB,^D0K%O4V_#72(6 at B&S`E&_P^4:'
-MN26\^AAG+OYYOY)4<E]B,#]2GP-1WO4E_G\32Q4[TYKG%&[&5K25I[EI2_>O
-M.H553^SZ3((.P':'5!.W1G`("P#L````[`````(```!%``#HA9,``$`1``#`
-MJ`$!P*@!`@'T`?0`U`:YW5DHJ=3D-+Q*.?6R7]ZVB00"X@)"`````$````S"$`
-M`+#<X#"=3D8"5&A+3-VO=3DC.E>E2J%$9PBP%&;#/ZM=3D!\)SC%NJ+,P_E--,N`@<
-M6S/O=3DLFPQNRGH-M5Q@?#]&?<<\8&G9:@+1"T(BMKLE4OGB<QVVZDP[-Q9-;;
-M;>+,?]<"J]03NZ=3D#5,^OLFOAB<@;#^?#R+WPRD?]I><1^L=3D)D-VV>.8E+;V$
-M4%!!,'#KA*).:,IKINF14^8=3D;JS'H(`F*EQN$(Q+NV0)O:F3VE#F5!.W1J8K
-M"P#L````[`````(```!%``#HA90``$`1``#`J`$!P*@!`@'T`?0`U`:YW5DH
-MJ=3D-+Q*.?6R7]ZVB00"X@)"`````%````S"$``+""?YV0DEV/)<Q5&,IB!P+,
-MG1<]S//H-T+?,1$O,6V\KE28?+.[(#N5)`;!-%@>&_G9N>,HF7VO+K>J>?1=3D
-MT!OEG5R:,V9L,]\NQCI,]5>JC(EN^#4"B#13KG/P!E;C2W[2E_`HI0(@1;,:
-ML;;P"9[7P<BP+^6)L at 15N8NMM::?@:0.35&U][R+75%-Q,XLL1*\5",W?FML
-M7P!!2':3.TAPD#&U^O[OA7[#4M'$5!.W1HY("P`\`0``/`$```(```!%``$X
-MA94``$`1``#`J`$!P*@!`@'T`?0!)`<)W5DHJ=3D-+Q*.?6R7]ZVB00"X@)`@`
-M```&```!'"$``0"`4WZ6QSR2`H.QTK^>;)(=3D]]1J6`5K*IO!0L"II]'%FYOE
-MLS*.N3BC-DP!3Q6.R&]-WQ:Z845L1T)!X;__CH7P`8I^N)&%H2,*\L^2TF*^
-MZR(#R9K<+\1ZD0_S\B5)U'<P#M_U'LH'W%YJ()_IXTY8#UZ%",;QC\2?*]F!
-M-+@%5')2F9!]ZHP at JRBX9=3D[N6\F at Q=3D1"1[*U+/74X#68;84U^4<AKR4"H80F
-MMQ!#64NR=3DVZ?2#PB1M<YT>U;73RWPGNH:\5;"F6_)3W6&5EY`N=3DG]W)25B_T
-MKE7U;Z%&R&J07RL?Q4-^?%1;N"3E*YVXC#B5-+T$+)+E$6V%LK14$[=3D&DE0+
-M`!P!```<`0```@```$4``1B%E@``0!$``,"H`0'`J`$"`?0!]`$$!^G=3D62BI
-MTTO$HY];)?WK:)!`+B`D"`````<```#\(0``X.;4L^CX7L#PRV-]T&BJ-?P!
-M-R*1>FW'B>'$^AEQQ:")*SX9+B"*S6HXEXD_LP@]3&H$RN2NY+@^#X"N1:(+
-MZZBU5]\<,BIIN.^15##_7'M.U=3DX"S=3DQ*,EP:0,D9`!!CTVC#U1E;JC)!'^L(
-MK/`SW_BW[4\5(F0&K8^Y,UNZH/9+KZ035Z5#\8H1H!KM97'Q%\5<7LT\[H`L
-MX!2:;/.:U7M5UF0`0&/HOD at 5V8T)I?-L7CPC?S+I1WTBL]-UWUQ/+20CM//0
-M;7?@(AE(6BK<M=3D/.,Z3YV!J)DA.-EO)4$[=3D&*&0+`.P```#L`````@```$4`
-M`.B%F```0!$``,"H`0'`J`$"`?0!]`#4!KG=3D62BITTO$HY];)?WK:)!`+B`D
-M(`````8```#,(0``L([N()Y$K?]JCN'#L"FIP%CP26&80Y.M5>JP:9=3DY$Q<#
-M]^%=3DPAD2,*B1]U9 at 1,#K!7`V!EZ+*1/,1Z(#,B%3)?Z"DI9$WM!UH);H^3`Y
-M:1WG%MIT/F;A$_UA222 at 3<>8Z15/PA"6VEZ3^(U]>/.GB-H#*"ET!8`:MO_E
-M?(C+2>?UAY2WL#=3D*)7/(0HB-<2Q6\DHBU.H218N6M_'P",,%D0;T3*JY`V-'
-MC8X,]:I4$[=3D&OX8+`.P```#L`````@```$4``.B%F0``0!$``,"H`0'`J`$"
-M`?0!]`#4!KG=3D62BITTO$HY];)?WK:)!`+B`D(`````<```#,(0``L*3FD/L4
-MU]Q,%"$F/YO.?F/6;`#%K=3D<*E+, at 1E99JCE%9_ET*L[_,[M&6H%I(#5*VA at Y
-M08<E"9+O48.8@=3D?@RHJWWZ\[F+)NP*@L%NYR28Z[]B?C+ at 3&^W;^J90-`#1*
-M3G66TA\QW1=3DLIZO$"$"W]ANFS['\]P->LEX(@57), at 2,>MY->?HJP36KX(*M
-M_E)QTKOK_;YW8=3DA^!,*O;JDJ#\@GGV,+I&A?W>1X)TA4$[=3D&A:P+`(P!``",
-M`0```@```$4``8B%F@``0!$``,"H`0'`J`$"`?0!]`%T!UG=3D62BITTO$HY];
-M)?WK:)!`+B`D"`````@```%L(0`!4&!P_2([M:!T$R^Q+PKN at 85?R@>HP<%:
-MRE-)+:1ZBL5*DS#09=3DPU1R"]QMFMM\S25-H><(L]74\[;V8X$(+J3+FG&(K;
-MB^]5--<864$_G(+8&G0W]+H!2X7W-S[-)M$TX<."D'I*J4I_5TQER'Q9>[0F
-M('61>;/QTX#Z:@X:@8NXW5>?O['[)?"9X9=3DLBB`&5GC,(=3D3MEB?W,OD?$8+Q
-M/4V85=3D?]6'H*F`&8=3D\PA,U\1C"WQO4X'8X)`AV-`TQCJ$?<=3D'E=3D_(T`)>$.@
-MS9EVOW"$K'SA3:#%-UFP6^&EZQJPE;L[U@,*#)TD9?@U9H1J8]^P#OJ<H=3D/P
-M()1B,D0:CQXG09[=3DZ+BZ"8E%4IKO*GFHC4CE$4KM&DT)T0KL[D3&DWFC5F1^
-M($2<Q(<0>);,]&P:-C'\OA`90[GN_!Y'-T^LTY at R6<B%>TZI!ECJ5!.W1B#A
-M"P!<`0``7`$```(```!%``%8A9L``$`1``#`J`$!P*@!`@'T`?0!1`<IW5DH
-MJ=3D-+Q*.?6R7]ZVB00"X@)"`````(```!/"$``2""0;Z"T0AXL+B=3DY61!#I3[
-MP2WE9KCP]23%E3W$"H\&,B6>U\4/RAZ at 1AA$7LAG)ON<-;&&\0Z,$-*380B]
-M@'4`.'O,X!\*%T*_G!%WW2&V.#J"I:-%4&TIV0$O*\(U'F?K\[(MM-I]W;$M
-MOOD1?B!BZ/QG.[T\YLC-\F2(,>4L&BC[PW2`X,#-Q)52*22.$3M3W3#<(Z[R
-MINSDR_]<SDETS-)4:SD2./_ at EY@,530*`S\&',@].,<^V..<_QO!\OZ at RF+V
-MWO2GVVTS/GS`M_6WI#^L`^1XIG5&8`-=3D_0\1Y<2=3DA2Z6G.C+N?]]<0-1)W-4
-M:E%:Y>`F=3DKY4.^*7X(P^N8N=3D9`/[N8(X"&4\CG,E\&J>VQHF2E&AD,N&P%03
-MMT8;"0P`?````'P````"````10``>(6<``!`$0``P*@!`<"H`0(!]`'T`&0&
-M27Z:;FL3N=3D<I<_=3DP60OPQOHN("4(`````````%PJ``!`(8LQ5WQC3 at P!YT^%
-M3U6;I4B8)WAY.P:;XUR0`\RZBGC`,UGET*+8,%W?9!W,$FG at 5"AY6!\.$JH]
-MZ at J:5!.W1A05#`!L````;`````(```!%``!HA9T``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y?IIN:Q.YURES]W!9"_#&^BX@)2``````````3````##VRF'++<&!
-M._1`5/U=3DG5%&/+[Z6;FS[JU0)ESVKPB&*+K;$R'[K;.V2LK_W503MT81)0P`
-M;````&P````"````10``:(6@``!`$0``P*@!`<"H`0(!]`'T`%0&.7Z:;FL3
-MN=3D<I<_=3DP60OPQOHN("4(`````0```$PJ```P0_+'/<)^3J["N"TL_7<G`T.U
-M2M[#UR:A,#\SVYD?UM>5&?<BB$=3DMXJ.%F194$[=3D&K#(,`&P```!L`````@``
-M`$4``&B%H0``0!$``,"H`0'`J`$"`?0!]`!4!CE^FFYK$[G7*7/W<%D+\,;Z
-M+B`E(`````$```!,````,.2E3)C)9PN>/A,ZHHAV&#/T5DV_<R<0L802R1M0
-MM<3T:UJ]E!&Y<&$!#CG35!.W1 at 4R#0"8`0``F`$```(```!%``&4A:0``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEBK_H?Z\-(/P``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,$``P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``SG,"'=3D!F
-M\MP%L!$MO`J at 1VD/-&Y-3/*K3A,(]$8^?;X=3D^8X83WY3GI3Q\7Z5M<Q_"XN_
-MTT0UJ&XCJ=3D`_>'?Q5=3D*8981\HN,/F4W\9&C:/GZ23??&[4195K)X1J1NH1\)
-M at .R,LL9X%C:Y.4E8*"';HK<M5RH/4'QBN!39?G)>7S(I```D=3DC:WI?W5%A;0
-MQJ6$V,5=3DU+W!HZVY`;,5\)=3DRS&\AA"@I```<``!`!*P]=3DE7=3DY)$0!VW8+/,Z
-M'6L'V`Y<````'```0`7C7<0$P4V1AERA3N%;#J%I\06MS503MT:H00T`7```
-M`%P````"````10``6(6E``!`$0``P*@!`<"H`0(!]`'T`$0&*8J_Z'^O#2#\
-M```````````I("(@`````````#P````@``!`!@````K^#[?JN&UO$>_M$UM6
-ML\<@DI!<)E03MT844 at T`N`$``+@!```"````10`!M(6F``!`$0``P*@!`<"H
-M`0(!]`'T`:`'A8J_Z'^O#2#\```````````I("((`````````9 at A```@``!`
-M!@````K^#[?JN&UO$>_M$UM6L\<@DI!<)B(``'@```!T`0$`#`,```P!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``SG,"'=3D!F\MP%L!$MO`J at 1VD/-&Y-3/*K3A,(
-M]$8^?;X=3D^8X83WY3GI3Q\7Z5M<Q_"XN_TT0UJ&XCJ=3D`_>'?Q5=3D*8981\HN,/
-MF4W\9&C:/GZ23??&[4195K)X1J1NH1\)@.R,LL9X%C:Y.4E8*"';HK<M5RH/
-M4'QBN!39?G)>7S(I```D=3DC:WI?W5%A;0QJ6$V,5=3DU+W!HZVY`;,5\)=3DRS&\A
-MA"@I```<``!`!*P]=3DE7=3DY)$0!VW8+/,Z'6L'V`Y<````'```0`7C7<0$P4V1
-MAERA3N%;#J%I\06MS503MT89=3D at T`4`$``%`!```"````10`!3(6G``!`$0``
-MP*@!`<"H`0(!]`'T`3@''8J_Z'^O#2#\P1,\B'`A']LA("(@`````````3`B
-M```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0`
-M``(H``"(``(``#;I_FAMA32/WH:2=3D*\4S-7)ZS7E'T)"4,[4B#-+*3Y4WGF>
-MP<_`4V`>-N]-SAE=3D?54#:]AS'5L*MN,Z=3D6]GL3$(;U]DKHGY8_IYIAL@$@=3DZ
-M>M]*/KTJ4_, at OGV"+AN_KY*E/2>B<55-7PH$2\A5;?2H6`X:.R'C6&/4>B3[
-M(I%**0``)/"GN at S3EHL4QXU8=3DB)W*/Q)(<`I;0I30E-MXPO%T]V^*0``'```
-M0`1<OLH2S`(8A$6TM4E5;,QZY.!Z8````!P``$`%?8<,SYCB2U\CB-#G(=3D&^
-M,JCZO1=3D4$[=3D&'Z,-``P!```,`0```@```$4``0B%J```0!$``,"H`0'`J`$"
-M`?0!]`#T!]F*O^A_KPT at _,$3/(AP(1_;+B`C"`````$```#L(P``T+51HN;X
-M4Z:+K@#+9\B"[2DA($Q,"/1;&@(8PF.\M2"<97%$.7"]#A@%RULJ30+3W>TB
-MX_AT?1X&>S7(OM2LWH#2<)D1V#KR(NFCGS>51^?O#MF9TS=3DM+;[0<IQU$(.C
-M/N>,(8_9,:PTMV`H4;I'QB3S;\'BL=3D\&7P9L&6@\48:FG(FT\Q?3W"S\Q2LQ
-MN6^"+0L4KR#^N#4"NM/ZW3M%EZMV8 at IL6#@Q:VW/\&0V>'B^J\#"=3DII;V[^C
-M21HCF(9BG[%,3OL'PMG\?6XL2E03MT;GNPT`O````+P````"````10``N(6I
-M``!`$0``P*@!`<"H`0(!]`'T`*0&B8J_Z'^O#2#\P1,\B'`A']LN(",@````
-M`0```)PD``"`:SNO-RZ"9_6)/\6\B9@$M1UL*8$QJ*UEU=3D%@4.#H23"-8U]2
-M,[S\*[M\ZM!*8',SS?:B?C$8E$_.QYLAU^1O'5^M9<1`A0?X'\[ZD9D#2\JB
-M\%(^%.HJF>1A.,![TG/Y%&Y-R'GGMQX26Z.YY_.J+`;OVXM!Y at Y#\W@>7503
-MMT9OV at T`'`$``!P!```"````10`!&(6J``!`$0``P*@!`<"H`0(!]`'T`00'
-MZ8J_Z'^O#2#\P1,\B'`A']LN("0(`````@```/PA``#@3U2.`B>H>>`>/1MO
-M#85X5!Y]S4M1RY89BGW'^",-H7QCI8Q8O(H!W_<.1U-@$Y%,J6Z*`DDG%]VG
-MCFB6B<K;E\+#6!NMC?)ZW5Q47QEIR\+H["LXHNYC.7M9,OD9_<H_>R.'IRZ*
-MFL-Y4E'`[QPQM5L+B_&6K[.I\89_\*RNW/_<YCB(^W:OGZ`"FO/2EUDO7\6`
-M\S$]4Z5+H#X7XBH,_Q3VC6QN,9P*!*ZIJ1XA67SE6U<MKO.IG.5`A0>HHW<I
-MK^'@0!T]T(,98N&(`.0)Y%1<=3D?9OXT-(^<<'Q%03MT:*Y at T`_````/P````"
-M````10``^(6K``!`$0``P*@!`<"H`0(!]`'T`.0&R8J_Z'^O#2#\P1,\B'`A
-M']LN("0(`````P```-PA``#`:#MZ"ZFK$&*8A47V7C8L6I&3]Z23Z]-Y[IY]
-M^_DE^/7+[8?U<V>F2DYM8Q6Y%'UAV$M,<-?Y[&])LYW$<[T):C(BX14^0[-]
-M[[[LM80JF($NZH(2"WR<V/:>NW=3DU1>]\EOE1?$XFG_+%`,+C._6ZGH/8/0I(
-M^%ZO>N!F#789#A7P7/S>6;::NJAI'F_@/DJ.U;C?P'V*Z[RMF?ISH1T]#S/]
-M`AO_.&V*Z`?)2=3D at DON_K_@,CF:A7S:RSOF)4$[=3D&+/$-`&P```!L`````@``
-M`$4``&B%K```0!$``,"H`0'`J`$"`?0!]`!4!CF*O^A_KPT at _,$3/(AP(1_;
-M+B`D(`````(```!,*0``,,UO#[YG,V-/P-\#9)_R.(O6QR47>@7)873MBS'#
-M2K3N34B*'4CM?NGS5A/X5!.W1OH-#@!L````;`````(```!%``!HA:T``$`1
-M``#`J`$!P*@!`@'T`?0`5`8YBK_H?Z\-(/S!$SR(<"$?VRX@)"`````#````
-M3"D``#!N72RB:.C3"MB at _R=3D+1XME4ACVK%YL!!N]64U(72EI;P5(-.YU]/XV
-MC47<GU03MT:R*`X`/`$``#P!```"````10`!.(6N``!`$0``P*@!`<"H`0(!
-M]`'T`20'"8J_Z'^O#2#\P1,\B'`A']LN("0(````!````1PA``$`B3"$[Q/H
-MR%0ITMRZMM-6#;+1%"7GI`<$CV@\D.+71T7G.'X"QST-HB+[/]4PV'!P.WYO
-MRE+9^26U/#OWA]!4[OQ,&J.;2"(NO])'8+RZA$+MBE4?S^?%@Z<WL\M2&6CZ
-MN;#,Y1\1?G!,7E',B7D#/1-2LF&D9%,%<@JEK[YP9.GO/<N=3DA"C"/Q*\K,P>
-M'Y=3D_3++ at FS!EEAFN^"CU=3D\!EGC05,Q_\R+MNQB2*Y7.<"(K`E;M!@-W2_6G]
-M`?+L22&3T'ID-=3D+1KL5Z at _J1ZVVIVAWE&,0(1LKZJ(N@\"N5*35LL5H5J+[*
-MB@;?VG1.B0;ZJ8OZM=3DOWMEH/3'EK5!.W1G\T#@`<`0``'`$```(```!%``$8
-MA:\``$`1``#`J`$!P*@!`@'T`?0!!`?IBK_H?Z\-(/S!$SR(<"$?VRX@)`@`
-M```%````_"$``.!,ORLD81$;'V00V^%285L^<\WC$&W:YAI5EH/L&)25B at AE
-M%)M7Q:&@@[3K,+U&W'<SDF. at UK)+T:5M-(]5(YN%[[Q_4TW%3%Q58`U1(Q2R
-MR:NY5E0:F5,"S:P%!;#7AMP_KED\/G/+?ED41?*,+`J4+WGV;!@H=3DJUZ]%*/
-M!]]&(CV,41#8T7NHU6W5&R&T$K+?1B6EW1`,BMJ+[2"@'/.`,&RS\H)6`WHX
-M.5/2^+:-IY\4CID%`(&I!252>U.\]N[<J0Q)R=3D*M5,=3D&F!_8#LIA4^C]D(3&
-MB"1T?,AP5!.W1EY$#@#L````[`````(```!%``#HA;```$`1``#`J`$!P*@!
-M`@'T`?0`U`:YBK_H?Z\-(/S!$SR(<"$?VRX@)"`````$````S"$``+`'HYX.
-M[[N,??&?)MR./FV\?X#":S3G@'<I>V#0VP_F8+N"W at 3\T?S/<,;/LZ!@N;8C
-M<+-9JH=3D][&+O=3D"-25X>JPE(H_RU*!S\]/Y-3'Z!0BS$-6C,S0C4G.]JM at PV(
-MMO:)H@>B^\G98W[LNBT\_RD]O!#7H-BL7<$:J;$*U.[(&+%Z&_U+N#6$]4_8
-M+.>\K4)[]=3D]3/P9<E!8#6]`J9GFZ;P]6%3BV,KEU$?><5!.W1BUG#@#L````
-M[`````(```!%``#HA;$``$`1``#`J`$!P*@!`@'T`?0`U`:YBK_H?Z\-(/S!
-M$SR(<"$?VRX@)"`````%````S"$``+#^L%Z'Y+&1Z]LZSE8$@SS^D^:1C5'U
-M%:0'66<V&<VEO6!(%S;D3@*8]];I.II.[N[5=3D?92LP-:NS8Z8K7D.D2/2%B#
-M`V+H/)1&SQ/O<^QY0QX4"(%2DV;`A/1I:J2S_\[Q:,]Z(G\)Z()>.J[GT+65
-M/`-.7(U@=3DG*6U@\BZE)FR3;9>#'<,DRVEGKLLK6RO(^<W8#N]FY0Q4N`T%7D
-M3S\1FPX-QS%V5<M0#26`5!.W1N*##@`\`0``/`$```(```!%``$XA;(``$`1
-M``#`J`$!P*@!`@'T`?0!)`<)BK_H?Z\-(/S!$SR(<"$?VRX@)`@````&```!
-M'"$``0#D"9;(NIK@:76TAB,G=3DJ#_4YPD\37.FDF`<6XA0LN<]=3D"#!3R'R=3D&9
-M06`N;$%_UAW)T.IJG8SAST>Y]7'ZE#N?E$&TQF7GSH<+F_<I+#""A=3DMC)A_2
-M7W`A0DT:J]A5'3\OKC1$A.E<O#%%DU/MO,-Z%<_:_/OU*]=3D@:LPH8$/"2LL"
-M&^-51`.((5"HGQ3MT[(_>%0T7&9["TBN&#T7<"[E+S[7J.S$D6CRGOBB\YLX
-M63?HOO[,BWY/$8KYOPQK:)&"9XN.."JG33.'4\*1(W1\M7P5%?"/D:D+G>$`
-ME*8B-<SXYF*Q=3D'CEU_\R#[2(J=3DQI6!L-6T_]]Z)'63Y4$[=3D&"9`.`!P!```<
-M`0```@```$4``1B%LP``0!$``,"H`0'`J`$"`?0!]`$$!^F*O^A_KPT at _,$3
-M/(AP(1_;+B`D"`````<```#\(0``X)W7YS<E/8&'VTE%`7LSL`#;`194U>`B
-M at 3?D+Z9%4QW;`MF[H3!<)U5_$;;)I/G5T>2[AU$7A,W!6[E]?M:$Q"^)?I#)
-M?J;B-OO,07UMMG[N\8S&*U(P4DBP";OZK%S,?#C[J at _J;ZUX)O]N?-9G76DO
-M]S%L#LS7Y(_L)3(<<V`KIIY.%K+;J>CN=3D>J6.O(*P`:V;61S]X at DMJIY93U5
-M2.]1LB?!>VO""/[CCL*L$T#Q"^7<(XC2R,J,6N;DAA8$U6R&:14"R7,VDWU)
-M4X:+MOA,/G>Z#O;/91(]*A]4$[=3D&H9\.`.P```#L`````@```$4``.B%M```
-M0!$``,"H`0'`J`$"`?0!]`#4!KF*O^A_KPT at _,$3/(AP(1_;+B`D(`````8`
-M``#,(0``L$HMK`/LE]4V$5K^Q@\@"44K;V4+:EM+?BT*'@_'M>X+(GCC+.I0
-M/[ADN9QZ0)#BXA7PX+*"`8K44-!Q4=3D at +UEE._FF23.4U;3NCKJX%C">ZS"28
-M6[OSM@)-O)$S&,6-XEV(,OR:,:_PY:-%4@%5^VRM%67*^9;&?#XFX?@^I5XA
-M7\HP>T2 at 75^:=3D;L,$&NM5;$`F2Z^+-;=3D</Y5(TNON-B:VO&Y2D at 5BH-W,AE4
-M$[=3D&$\,.`.P```#L`````@```$4``.B%M0``0!$``,"H`0'`J`$"`?0!]`#4
-M!KF*O^A_KPT at _,$3/(AP(1_;+B`D(`````<```#,(0``L,2ZNX3D5NF/GU`C
-MI2V-,J$CBW[80KH8MXLS1+YH4Z+&=3DSA!3H?&UD:_31].Q6,%:P,]>81Z:+;$
-M?E:X'V1O'.QZ'G6LZ6SG%R*T`*8K.V]*.1,#H6(:JOOX\J:6YB7V%.MSG4OX
-MA4IJV3.W[?&V1,!*9QOT2`/0T1=3D_DR#EE6$/XR4[MA.F(TX@#0+3D[1&-?F_
-M\^ON9Z>691N$?AUP[*GE,"RQ``\@=3D.4]61%4$[=3D&<ND.`(P!``",`0```@``
-M`$4``8B%M@``0!$``,"H`0'`J`$"`?0!]`%T!UF*O^A_KPT at _,$3/(AP(1_;
-M+B`D"`````@```%L(0`!4*L\EX/+ at S4;"&3#=3DP3N5&SO/X)(O0?EU(YEQ/31
-M^/R"JUGU3H0*MA%+O%XFT*G,D-;6]C%Y:0%*<HG%)8#]2&<ZO`HGT=3D(`53Y6
-M<'7&K,\6!C`A<M^N%ZNJY=3D*,D4G?#3%-?A;"JT91L0;2X9DC]VL?=3DD<Y)0$@
-MZ?;6TK&F4`"!6-EO1ZI!0,/7_S1P&&?6I/3?XKI$IKW464%`-OGL>HU@]8U)
-M(FZI,(U<QXA5MIRE8?QCIC at .$T,.\>\4]9J_ZD[]PM,8<<C]U\(\59,<:;H6
-MW^KC?@0++29L"$3Q/Q`Q9'H*)6]PTX41HC#*,"X%TTC:M$`P(D/VZB*SZ?NY
-M/>KL9`^Z`6UZ`,C??+DD`/!JE\ZZK,-"`)2 at U)(&80GRR-I89[M$0`>Y^]%-
-M"@=3D_;TN'7';YN,/R1HDH],B&$7@$W%'&%RMY\S0J/;6 at 5!.W1NP=3D#P!<`0``
-M7`$```(```!%``%8A;<``$`1``#`J`$!P*@!`@'T`?0!1`<IBK_H?Z\-(/S!
-M$SR(<"$?VRX@)"`````(```!/"$``2")APFX<+>/"U6#5=3D^5Y at P^*@$V:N1C
-M_Y4*]Y"#C1^(9ME0IECW`6P]<;9!7D.`W`822=3D!#[\(Q+JG4'<^`*A1#;H)(
-MQ80%M:^!<,("X`7HWJ."K)-HIPZ76,:R#_&BM4`1IYIR'+]?)@(D\U9>%)YH
-M7&Z.%G<6>%VPU3Y7ID<57X18V'C4(\,^GZ'(\*B(V/;Z;,[06T&4Q1_P,P0R
-MB&#N`1>0P29-,_,0:`EBRHYQM*$V/S"4D7596?4G<=3D^D'91S/J4*^8?VJF9"
-MMF6(E%J8%_KC/#LLBOT:\:<<J>Z1-(7BQ^Z!W-(';9[3"[W,Y\3<#]LG=3DZHN
-MFX11R\-9T>55;%*#KMQ&+/'R;%)5)XBO,`)>".(9?"0+BAZVNU43MT:.`P``
-M?````'P````"````10``>(6X``!`$0``P*@!`<"H`0(!]`'T`&0&29TL,4O.
-M7><@-F>+T'NJ\"(N("4(`````````%PJ``!`%I-:D0N+9SIJTGKYJ:<.$H$6
-M@:$L#@E=3DI\D5ML7 at K:/R_V0HKOF4NP]SN8L0T[0!@NQBB8#,P=3DR\FL6=3D51.W
-M1NH.``!L````;`````(```!%``!HA;D``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MG2PQ2\Y=3DYR`V9XO0>ZKP(BX@)2``````````3````#`7BM#OD>&IY&6J()GC
-M,_W[G!KL!"'T.Y98!#3^)J8;G@^/P:#39(F#3OLQJU43MT;;'@``;````&P`
-M```"````10``:(6Z``!`$0``P*@!`<"H`0(!]`'T`%0&.9TL,4O.7><@-F>+
-MT'NJ\"(N("4(`````0```$PJ```PNG!R%(^Q&&HC8YAEC/EB$G;?""UT3FP>
-M\15Q.V4[W:,9F^^/P9OJ@(+/1:15$[=3D&2RP``&P```!L`````@```$4``&B%
-MNP``0!$``,"H`0'`J`$"`?0!]`!4!CF=3D+#%+SEWG(#9GB]![JO`B+B`E(```
-M``$```!,````,,U--I^HW?,)1\YH^Q"U[C,O6F6F>T#=3D.8F"!$H8\)RGJ,<2
-M]LTK7!2%?,&M51.W1FPI`0"8`0``F`$```(```!%``&4A;\``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DEL8BBX,+N$#D``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,'``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``PVY(PIWQ^*HP2O#D
-M^8F448IC\!N=3D3+-P1:QW$$,4LRXN5H,8=3D1WUY.\JDEU-<"U=3D.*9RB,(S&I!1
-M&P4XT(LR6M@?>\Z9M#JN^%$=3D1ZKMJ#'N5X:X0K^>$8HH/`[APL*J5J5L;K)F
-M?$&"@FE$CCB4'@B,-W<<9Q).G,3TPH"0:_XI```D<Z<U+>_R4)X#5R/8+;FC
-M:2'Q.E_K__:)_^=3DJGZ4#2O(I```<``!`!$7&J&&K6-1.O3:R%)JM-'<\*$1L
-M````'```0`4H1?5?MOV#.^[SQ4XD.HSL5J&"WU43MT:H.`$`7````%P````"
-M````10``6(7```!`$0``P*@!`<"H`0(!]`'T`$0&*;&(HN#"[A`Y````````
-M```I("(@`````````#P````@``!`!@````KP>T\<T*9;WZT9_OVRX2/"C=3D)8
-MH%43MT962`$`N`$``+@!```"````10`!M(7!``!`$0``P*@!`<"H`0(!]`'T
-M`:`'A;&(HN#"[A`Y```````````I("((`````````9 at A```@``!`!@````KP
-M>T\<T*9;WZT9_OVRX2/"C=3D)8H"(``'@```!T`0$`#`,```P!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``PVY(PIWQ^*HP2O#D^8F448IC\!N=3D3+-P1:QW$$,4LRXN
-M5H,8=3D1WUY.\JDEU-<"U=3D.*9RB,(S&I!1&P4XT(LR6M@?>\Z9M#JN^%$=3D1ZKM
-MJ#'N5X:X0K^>$8HH/`[APL*J5J5L;K)F?$&"@FE$CCB4'@B,-W<<9Q).G,3T
-MPH"0:_XI```D<Z<U+>_R4)X#5R/8+;FC:2'Q.E_K__:)_^=3DJGZ4#2O(I```<
-M``!`!$7&J&&K6-1.O3:R%)JM-'<\*$1L````'```0`4H1?5?MOV#.^[SQ4XD
-M.HSL5J&"WU43MT96;0$`4`$``%`!```"````10`!3(7"``!`$0``P*@!`<"H
-M`0(!]`'T`3@'';&(HN#"[A`Y^9>GK+VA`W4A("(@`````````3`B```P````
-M+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(
-M``(``"R3^_3F+"5]A<`QR&0&PUD7 at G&6L+05.Z,Q at 5;PA8LV=3DE5T=3D<\7U_'T
-M!(=3D4*>!6UN.AG4HQ>-!>/2BE6O37HL(R!@.CROA at W;`1%(F.D=3DER;K(5DUH=3D
-MQ)^[X:UA-D@^ZB.9(UB>6!HG:E+RSG]5XYX8HIA=3DPQ#"I);!$<FM&$YB*0``
-M)/0+8S=3DJBJ44J/CN0N$X&E#OE?#>KD3N]N9;T5#A=3D,Z-*0``'```0`1).-?,
-MZG&S-#\")'*LXB\UI?`#)@```!P``$`%P;`6GWNS'@B.S_-L6,"SJ5.<7695
-M$[=3D&RYH!``P!```,`0```@```$4``0B%PP``0!$``,"H`0'`J`$"`?0!]`#T
-M!]FQB*+ at PNX0.?F7IZR]H0-U+B`C"`````$```#L(P``T"[:1HFI-/]>_)#Z
-M[42'/WZ,V at VL@YQ=3D)5A;1__4M>IWE<?\7?R+^VXJ0\&*1<`./8=3D^S4GI!Q^I
-M`>"3/>0?VQL0LVM[F+D7I:B?M%Z8:8ZP"KK2EIE375)O'SP-,C2O#![FQ.QD
-M1!%`0P_[K^,(NFF3M'V`'%4_0\EH8C5;QK-K0>VD3R&PS;*X=3DU$]JZH@(Q^+
-MCAN6"4:&?^^B\GYM0"*/N.^#;,(9?O at +BULG,E8[!>YYT2=3DS$ZHB)RYGZ=3D-E
-M/@D[IFFM^&%;*UG&3U43MT;CMP$`O````+P````"````10``N(7$``!`$0``
-MP*@!`<"H`0(!]`'T`*0&B;&(HN#"[A`Y^9>GK+VA`W4N(",@`````0```)PD
-M``"`+7A"(S&/&C\]CTM0M03.^<MF)G#P<?ZXB@@@\^2?+NL1[#FFE"!C(CK^
-M.`-_$K=3D07$<%R_.2UY2GGH<L<$]?4]NIEYH!S5'8M4Q83]YJI!$F&L;YDE=3D,
-MR!=3D7Y8Q$NW8D\D'2/I:1%RZKK]1Y8N*@;9H_TN>%,%ZI$N-*KU43MT9BUP$`
-M'`$``!P!```"````10`!&(7%``!`$0``P*@!`<"H`0(!]`'T`00'Z;&(HN#"
-M[A`Y^9>GK+VA`W4N("0(`````@```/PA``#@4-`U-?0`36NG*:*H&]=3D#]4=3D>
-M at Q?G/%E)=3D=3DILI0I-WPB/S0D?5"M(K&6B&<M&6:T3C&BGE.(3+(^0H=3DE1INUU
-MI.+B at 6G-)?F_OR5>YBJ7VBA2!-?[CAJ..1OI8:K?/["\'W#PC#2KQW-DMK*%
-MFD**FX0]FK0BOH;D9Z_X8`W+'0)-#)^U3]81IWXTUVRO;TO!_M'D$`:$-Z?$
-MXCL)N`S%V1$JH<3CTQ9DU\9^0[96---SA'75M/+$?A(Y4W(9ZK\,CC(%CS><
-ME)TB-Q?0(U[R+1VMY>,P4*XU#IF'SE43MT9WX@$`_````/P````"````10``
-M^(7&``!`$0``P*@!`<"H`0(!]`'T`.0&R;&(HN#"[A`Y^9>GK+VA`W4N("0(
-M`````P```-PA``#`6)1^'O*.)W@`X:8(UQ:!Q*$1 at .VH5NX(R-?:2]NSVEZ6
-M7_EI^<S/G?@WB-8<MU%"+OM8,[*8<IUI]]A5/)CH`P]CK#&`5$Y"++\"I/*+
-M.FHOL">%,AXP6)Q,"J#(6L_L,6[EF`M$?FO4>1'%4V^_@$KG58?H^DWQTOHT
-MZ*W4U\'IE7UX)C#\>1A5 at CIQS`T4)10!"$-X:*53"S,:[=3D at BT4`,&1#ANF=3D%
-M(Y]XYVN(:J1 at 9(G,I`<'TDZWH]15$[=3D&E>T!`&P```!L`````@```$4``&B%
-MQP``0!$``,"H`0'`J`$"`?0!]`!4!CFQB*+ at PNX0.?F7IZR]H0-U+B`D(```
-M``(```!,*0``,/*9Z+20^@YYGT!$C`;!9/`!T!]UU',:A/7-7]]<R'T(F:8'
-MAT_W<5,E`^^/51.W1HX(`@!L````;`````(```!%``!HA<@``$`1``#`J`$!
-MP*@!`@'T`?0`5`8YL8BBX,+N$#GYEZ>LO:$#=3D2X@)"`````#````3"D``##B
-MTEB7-/,#U+T?'WDM8CU!4A\@A)=3D?B::S!JS6P at SF?),*#0$RWG1W4&X*W543
-MMT;](@(`/`$``#P!```"````10`!.(7)``!`$0``P*@!`<"H`0(!]`'T`20'
-M";&(HN#"[A`Y^9>GK+VA`W4N("0(````!````1PA``$`P[=3D\@65J#$`\A10*
-M]."!NR%$6(ZBHB]W1F.P8V$DTBH&L<$*NO_'*I1R4?4S\'M4TZH2M4"M**UF
-MNYRU?B`X+\6N'3?)^#+ at M1\JDV?)$</+*<FEX(#FH`=3DG_`^*+:PI=3DA(82YO.
-M-7=3DV^_&.Q9MUN at 408<8GC4"\@J'ILGM\C at T7-`+R7#N-7IB:>"*<T6.V[.9_
-M#]N+ at 6B>B;\8CS[HF$T)N21H<=3D+\0NO*).!>*0C at ZI5<)Q,JO*,)8YVM'\)_
-M8'657%06*#/,]+PFU;!L>*XL(WGLA4H.?WLEK9MPHFCV0#5C-=3DLAHOW;T]^*
-M<C\/%[X%<1 at B;<8C8%E]51.W1JXN`@`<`0``'`$```(```!%``$8A<H``$`1
-M``#`J`$!P*@!`@'T`?0!!`?IL8BBX,+N$#GYEZ>LO:$#=3D2X@)`@````%````
-M_"$``.#,8U!P*Q$HSSE5$J=3D?(58GHX5=3DK2VB1K)N@$W#63BCGT1_*VYFE+%*
-MVUF[@^:YP/">3FD#/_O1&V7-G#79Q.GCC-H/Y@>$\R<4 at CHIV&5WMSTS8&SQ
-M9:X3WUKDFF"4U@\^'///AZG"&]UI@"<_ at MBT_JUC*W2A1XL(L at 1;+-NF)+P$
-M6Q!H_](8)SGX9N`+$9O4WFIA1W:'9<2R0L1AWP`#N)6;&/Y5BT-K#TA&6,S:
-M1P2.8Z\=3DN=3D]0`,+01Z"#+Y1?03PI?>N.YZ&O$:^HG58_&FFUL5W<Y"*`)NJS
-M51.W1L at _`@#L````[`````(```!%``#HA<L``$`1``#`J`$!P*@!`@'T`?0`
-MU`:YL8BBX,+N$#GYEZ>LO:$#=3D2X@)"`````$````S"$``+"^-WCM,1Z`KKWY
-M at KDH1RFYC>>F-\Z'3I^*K[</;KPH!*7<VF2QO)>0]T;SU92THV"*574.KPE%
-MOA-+7W-5J>39>C1'VL6N/4PJ/2]?W_<4Y-M`>T9FU at QXG[8I:L?O"C[<[T33
-MKG)MMS+\LK8:9K%%&7/>D+`'V/:_#<9W.*G*\,#5>4]?EB65:J52*FJIT,&0
-M$U[B4-\;LT0D^>NL1[O>.-X3PX,_NE>$KUO*51.W1BMB`@#L````[`````(`
-M``!%``#HA<P``$`1``#`J`$!P*@!`@'T`?0`U`:YL8BBX,+N$#GYEZ>LO:$#
-M=3D2X@)"`````%````S"$``+#VN/L2^&<>'`&PA,0 at AG[43.O#_:@<8FQG^JT4
-M at O+.^+]1OB2P%:$"VUEXSV_Y47_GS*9W@`#A*OU)5"U1VX6W_QU"&\L/;'F/
-MFPX[4ZJ]4ZTO/!5?C6.A\^-7C[PAON[;]Y,I?T('!7K\0TC/2!NG;'!-1=3D3/
-M5F63V2\TPR5R+N0AOVX at 04497,Y6'4*`B?SS@&B4OH]?#O"8EG.7ELV#93S&
-MAG(M4;<-A]#151.W1N]^`@`\`0``/`$```(```!%``$XA<T``$`1``#`J`$!
-MP*@!`@'T`?0!)`<)L8BBX,+N$#GYEZ>LO:$#=3D2X@)`@````&```!'"$``0!.
-M-<T#S^F&J5 at V<<OMM/.T:[6\E\/&IQ-1?BM,>D"E.,'Q-<.26Q22;D/D1N1B
-M\@1"^AE_<>Z?3A,!2.%^G;;H)]`=3D2VH5HIQD8=3D^8!]&>9@!X9KC:&Z..NM1A
-M,YM#5`@YXWV7`:NG8S$-%/4&!&\\:\"_Q)/.]T>&ZZNGRU=3D31QZ\,M/0>VWY
-M;C);^WA'@SSM4R!/'IL@("JWU$;;D%5\U@#]%M-CN'%R_4V,N=3D/GG#<3\U>U
-MYA[/?+PM+`IW4T'VM at P;-!+$0>Q^N;PN(/T=3D>1+&?(>AW-\Q*7[9TM'XOT=3D>
-M,JW79D;&(<.6^6V9$2*']05FQ3N&5^K",E!5$[=3D&I(H"`!P!```<`0```@``
-M`$4``1B%S@``0!$``,"H`0'`J`$"`?0!]`$$!^FQB*+ at PNX0.?F7IZR]H0-U
-M+B`D"`````<```#\(0``X`&'#$3NGT*W6-<;&*)D$$8BW^AP7RN<(X#M4ND3
-ME:*+MWW_ZA?"(=3D9UQ;@1J^TO2/L at 2H<\61'@5(WDFC^;O^QKJMH/'`*H!CX+
-MW#$LRV:36[!&+<84JI0XC(HK$E`=3DXI+#HMK2O[OQ<&&C-]MENY4WI/385IU7
-MB%]G":!%JE[8?JZ)'[-"BW]/:VX*P'606>_4MXAY-M/B/"VQIJGYRUN,E*\Q
-M?2B=3D<L(C;M%<:.L:'%6T,6.:?D?79+O\G*RGB'M2)?XBQSLTW72MN"HG=3D=3DRZ
-M+'":^-P"HU)(&2A5$[=3D&3)H"`.P```#L`````@```$4``.B%SP``0!$``,"H
-M`0'`J`$"`?0!]`#4!KFQB*+ at PNX0.?F7IZR]H0-U+B`D(`````8```#,(0``
-ML+3TJ'Z/8=3D)D=3D6!U"N:9DC at 0VBU$55;`RO+9$*#G#%8/#%2$(&7D.Z+ at V'B$
-M+'YWD9E5B10?>^1/ZK>#%RQ>GM.<%#;B>)5WCT,]N^`$-Z\D._JNOOA$]B8O
-ME7UO6,O><A'-?ZSU=3DLQ>C)X$:?@,'O!'3 at 5-SA,HU^G8LLE4O(=3D_J.9S,47]
-MPR^:_-;AE\`<1(C0G:I$W*[9-0PI/70`L>$S:W(OIS'L5]F:WW)5$[=3D&@+P"
-M`.P```#L`````@```$4``.B%T```0!$``,"H`0'`J`$"`?0!]`#4!KFQB*+@
-MPNX0.?F7IZR]H0-U+B`D(`````<```#,(0``L$=3DK7/X['#;HJMB;G8'PCD.G
-MLA&C)E&H/:4QR&,+;#ZZ>OU[@F)NRMS[SK<E)K#($=3D$.O:,*2_9`UNG9N#F:
-MF(L5DHWRURK-(74LX\`)Y(34]TMDPGYJ.X_X,YEQ!MPEA.`>,8S3L`:5Z%ZE
-M2[_8.'IX"/'MWYZIQE-(H<'')O0&M$F!_#.9D%J[_U!@J#/Q^`PSG at 3M84DT
-M>&!>TNLU8@<$P=3D5SJP\%U at E^,GU5$[=3D&Z^("`(P!``",`0```@```$4``8B%
-MT0``0!$``,"H`0'`J`$"`?0!]`%T!UFQB*+ at PNX0.?F7IZR]H0-U+B`D"```
-M``@```%L(0`!4&L0OOZS`:"E$,/L$Y$'3+6RL[[27+!=3DD^'*M>X+'$I09;J[
-MF$*5H/I$:TW&7EL,\>(M_4(\$I[<^4WRWX](J03H2F!^BW5!05P"O(06`J>0
-MOBJIL6(>\.223+6>V>;=3DNP"'\;.0[!7OK)`2$3%<MVHZ]!KC,74H*@5_$U')
-M`?:>V1/_=3DFB``5O]3A9E5\3I!2I^^U,NP(&S0>=3D@!X:79I at P'8JX$(>,.,?A
-M[2$QB?-G*)L67AATU290`*6LKL[S3>OX.:=3DGNR^>L;FTC95_R`R+@?)HRLYM
-MEU[(\&[Y%'L"T_UVG)<F6.>%5C-381[1MK$B>9@%W$^AA[]S_F02X!9`1 at K2
-M[%29]W.KJ%KVY\G=3D>G`49TY/RZ7#UB#^'XE;%A5SBMT^(.-K:!:1?(,R(6^Z
-MU%EZ]M?P%')Q\^4J;OG"A)]2>+1N]T%8!JS$51.W1C$8`P!<`0``7`$```(`
-M``!%``%8A=3D(``$`1``#`J`$!P*@!`@'T`?0!1`<IL8BBX,+N$#GYEZ>LO:$#
-M=3D2X@)"`````(```!/"$``2"2D!2\`E`?+OM&W#>#D4'^,T`3B6-W0`C[*MEI
-MOL$7\[M^T1DMHI5[F@(?OY%7>61;'H0G)V=3D0,679D753>8&^+)DO46IE827H
-M5+/H_H2('YAM$'+0Y8FT5-5F$D>*_9W.9,3U8UFB4\Y;DS%MI:<NVR^)D;M-
-M;"BU#1G/<SBT_P]%=3D\"FE58=3D)W7"#TP*J#![PD[6-TUBQ%5TENY#!$E*VG!P
-M=3D\R=3D`#L9@)&$O`&'?TH&XTE%X[6J[$XW>CI^E_KG/F68H':1,>[HE(8_Y0AT
-M@&Y>YE]P+I1%6#/._"<&L22KAFS)470 at WHXAVR&FIY%K:[9'N#($ZW<"RYXT
-M8,2W773V0DPR at FLG>@V24IR:'LM5EPX6#I!7C[7%_U43MT:K/@,`?````'P`
-M```"````10``>(73``!`$0``P*@!`<"H`0(!]`'T`&0&29OJC,R]+ZBKZ=3D<2
-M"'^@P.LN("4(`````````%PJ``!`.4$_>N#`-FJ%.<'DQ4TN*6)V-[I8ON1!
-M'#!0XT5]<P\[ET#O)R&`[V8G=3DQ#LG37W4LD=3D+*)4CL4&+*_ at 51.W1D)*`P!L
-M````;`````(```!%``!HA=3D0``$`1``#`J`$!P*@!`@'T`?0`5`8YF^J,S+TO
-MJ*OIUQ((?Z#`ZRX@)2``````````3````#`*&_WN1A(BM5T>>A4UVVO[J<Y&
-M)UIZ_:>)<N0,,V:B<I':M$Y*;)`7PR>U)543MT;Y6`,`;````&P````"````
-M10``:(75``!`$0``P*@!`<"H`0(!]`'T`%0&.9OJC,R]+ZBKZ=3D<2"'^@P.LN
-M("4(`````0```$PJ```P]-!FO=3D.]#]%A;*J at R@^NN%U*@.':@YW@*YL=3D8P)P
-M4<T;JBXF,FC]A!TZ^M95$[=3D&&F8#`&P```!L`````@```$4``&B%U@``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CF;ZHS,O2^HJ^G7$@A_H,#K+B`E(`````$```!,
-M````,.$TD`QKHS[6FGS=3DNBS%JZ`N><?-M9ST:,4RKR'SS3ILYC@=3D\FT8F"\T
-M()<A51.W1N-B!`"8`0``F`$```(```!%``&4A=3D@``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE4R?2BL\U<QT``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,(``P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``2P^1XRWC`]0AQR(C&>7DI4S[
-MP!KUPXU at HPTW2UE9D'5?)].\)6-OP=3D$;0T%"ZM$ZTQ72>_<J4/_5CJC+4?+M
-M9!3KHT8@^6?[?W16J).+N1O1_*NU^IAS9(<K5)=3DR#;>'1OX:%JU/>](7&&[\
-M&5V;K6W,.S08?NE7X"$G"NRZDK$I```DXI?_<+50R<,LI;.!N28GPD'AT at PP
-MLY=3D[&29E3IV:(;(I```<``!`!+1?&GB<;1&W`_!OGX3/U:IPZ<L%````'```
-M0`4"E;([JE.-.Z36>6\GB>O5U*ICL%43MT;E<00`7````%P````"````10``
-M6(79``!`$0``P*@!`<"H`0(!]`'T`$0&*5,GTHK/-7,=3D```````````I("(@
-M`````````#P````@``!`!@````HJ_^2A>1[U41BLB,I\6,#S&M%";543MT8]
-M at 00`N`$``+@!```"````10`!M(7:``!`$0``P*@!`<"H`0(!]`'T`:`'A5,G
-MTHK/-7,=3D```````````I("((`````````9 at A```@``!`!@````HJ_^2A>1[U
-M41BLB,I\6,#S&M%";2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``2P^1XRWC`]0AQR(C&>7DI4S[P!KUPXU at HPTW2UE9D'5?)].\)6-O
-MP=3D$;0T%"ZM$ZTQ72>_<J4/_5CJC+4?+M9!3KHT8@^6?[?W16J).+N1O1_*NU
-M^IAS9(<K5)=3DR#;>'1OX:%JU/>](7&&[\&5V;K6W,.S08?NE7X"$G"NRZDK$I
-M```DXI?_<+50R<,LI;.!N28GPD'AT at PPLY=3D[&29E3IV:(;(I```<``!`!+1?
-M&GB<;1&W`_!OGX3/U:IPZ<L%````'```0`4"E;([JE.-.Z36>6\GB>O5U*IC
-ML%43MT:"J`0`4`$``%`!```"````10`!3(7>``!`$0``P*@!`<"H`0(!]`'T
-M`3@''5,GTHK/-7,=3DA at P4?,%FTZTA("(@`````````3`B```P````+`$!``0#
-M```,`0``#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``.'E
-M^0#DW0N=3D=3D=3D[1&ZI+Y>`3<Z=3D/2?B/[C3`I'2NE($YD*G_-+L#TJ^W0J]%AW_A
-M33'5>I*L<AS]JBE&L"X7%.<DLR[27L50$I)[H'(`5@&00@!OFULY4L=3DF?<_D
-MEW0H.[/S`^D(.VE#838?+=3D]S9BPQL>;TR6[AWO_$@V]9"^X8*0``)#QFQ[YJ
-M*O?\%$%;6SVL.)NK'5T/=3D>WG">`X;2W1VG6I*0``'```0`2*N0M6'$CX#7)-
-M9.PUZ;X#=3D.P?[````!P``$`%R,-1(K]1.I"F4/?X[:Y`0#>H7XA5$[=3D&S-4$
-M``P!```,`0```@```$4``0B%WP``0!$``,"H`0'`J`$"`?0!]`#T!]E3)]**
-MSS5S'88,%'S!9M.M+B`C"`````$```#L(P``T`_2IPFMSYR!DZ9_=3D'7+08^5
-M[=3DGIK`-BI=3D0O0;)AOGZJ,E4;I$[H3&SODBH=3DWP5`IHB, at 7H@&CO.XJOG"AE&
-M011 at 9@_`Q!5;'/V9F*./]>B9J$O$Z.J:A-]#@<M^J\,J`F%2:$',7VQ-+FBK
-MRY+SF.4HJPC:STEW3GE"?GNV4`LRYV9-"LZ58?A at K5-'I%AP((*V$E*T=3DYW,
-M.B%6!W$>XRP;6FC_+G1T'7E7L!$73PW[4AI5=3D!3`=3D6_,U!GWC)F#M6]EX&'C
-MCR8%`ID%3E43MT8D[P0`O````+P````"````10``N(7@``!`$0``P*@!`<"H
-M`0(!]`'T`*0&B5,GTHK/-7,=3DA at P4?,%FTZTN(",@`````0```)PD``"`)>D7
-M4Z!HO7"C9,QS=3D,:?[""<X0`\UU$-FPO*\;<_+G at E3\TV-Y3IY1$->#U+$:#R
-M]R,,S=3D]M4:@8ILS8V>@"N9!5"WB\V]OTTL[B0LZ6-Y$TKZ]837O'EIXP+X#F
-M at U%;,%"C/1R$YVC5K(P$%'ZY"T?\/I>Y=3D;X:&7\!7E43MT;`#04`'`$``!P!
-M```"````10`!&(7A``!`$0``P*@!`<"H`0(!]`'T`00'Z5,GTHK/-7,=3DA at P4
-M?,%FTZTN("0(`````@```/PA``#@H_<[_L5WM6',JD$')9S.ZMWGT5-]*3'S
-M at J4=3D90PF1XK?=3DM+J50VRR/>YUEYK>;?@C[$N8&T/E1RV/0\.-V"!:^"VY/.(
-M^!W#RP+T%EU]\LYT=3D;ZH1$N6ZU'2`RAB1G](=3D#P&J><QI<I0FBQ'#[<4*P"U
-M36RD[K;VC:*DLM=3DEMQ]A^>@*:?P%=3D]JBG`>M']O*R.YE3LKI at +8YL.H,;0H)
-MD9^'QI,+<X6Y/K)M'+_A#]*RA-/?*5*`K>,&-ZB?, at R=3DC7$PGJ=3DKK'Y!0B`E
-MG*VK%C5C*FQM"HM6 at IG.MU43MT9_$P4`_````/P````"````10``^(7B``!`
-M$0``P*@!`<"H`0(!]`'T`.0&R5,GTHK/-7,=3DA at P4?,%FTZTN("0(`````P``
-M`-PA``#`LK+:IF!_N"B[/1-0=3DIF5^DH70(X6`[2M#,I+`E?+`O%83+ZP;F8>
-ML`D`"'F&F8Y-I^HR>/BC)`N\VF%^Y(@B1\>.^1H&UG),/RL3AL=3DBJ(_-SU47
-M?7Y#>V:WOF81,AO!<_`,V-6=3D1-X(/O^'(YEAMBU>27IIH8V"3L+!^U74&NN>
-M3T@&1/!2&2;,PJ:5;F\@V(*(;3DFRXG@/_JN;G";P^N1UP",Y2#N"<^(=3D/@2
-M5:SA[]0:*#VX@\JN[0I5$[=3D&^R,%`&P```!L`````@```$4``&B%XP``0!$`
-M`,"H`0'`J`$"`?0!]`!4!CE3)]**SS5S'88,%'S!9M.M+B`D(`````(```!,
-M*0``,'&2\EMBVG(&F?BDM_]_URY!URD`R=3DX(@H?V]GLE.\X]X9I)[]5I*J'%
-M.G<?51.W1DE`!0!L````;`````(```!%``!HA>0``$`1``#`J`$!P*@!`@'T
-M`?0`5`8Y4R?2BL\U<QV&#!1\P6;3K2X@)"`````#````3"D``##;U2Z)>:WQ
-M(;#!]1_$O%>=3D at IM0WXYRJT:8V`5*+P\=3D>C8+*4YX5'L62_O&`U43MT;P6 at 4`
-M/`$``#P!```"````10`!.(7E``!`$0``P*@!`<"H`0(!]`'T`20'"5,GTHK/
-M-7,=3DA at P4?,%FTZTN("0(````!````1PA``$`]7]&GW.2KQA5V^C3?-C_CG9%
-MF?OG+_GM:TTC,M#@T2\J%6QR=3D#1JJ"5#K%EGTAI[L47#YM:-W%[LF?%?-QE\
-MA.5?8?F[Z"5FR*6KY">0#!N(FO.=3DA0)P&7>9CR'O+-A'5_3`]-2$T9<Q at XS"
-MZV#5S%`O]Y^FCW:9G)^*/A_C$\"D!HQ;WUJ+!AVIHW>,#-FE]X$N)8U"F=3DC9
-M7;35$I)MOMC(ZYZ[F/(&,!'0'Z977C=3D`)%9,42!,6_V"5+UP_M&<T05JGJ.)
-M7O+<@<-`1EN=3D43ON^G"`Q6A(N!7+Y0SD=3DGO['0Q8E.T>UU_G%M[BCWM`,PGK
-MI?N"OK6`6C$M51.W1OMF!0`<`0``'`$```(```!%``$8A>8``$`1``#`J`$!
-MP*@!`@'T`?0!!`?I4R?2BL\U<QV&#!1\P6;3K2X@)`@````%````_"$``.`C
-MOJ8M?.R>IL]*M1P9:J;OD]9XTBYV6<WR\2?;U+T"!$/(29,--K&D3-^V^-F7
-M)R3Y]1.VM=3DC()+U3I%07.U6&3LC&#.O7OA=3D,1=3DKI&L6<';&+Q<H--3BKG^AH
-MA_3J4L'\(?_@%.W>E6SA$$1?FT_YG?,(4LCE'7&^+<\_L#JPF.&G*+'C$KW.
-M8'=3D%U3#'S,/OZ#5_'6^E"&!H/-G:K`Q%!01^5S__]_P9DJZF]U(U>LE42(UK
-ML5)[K!$*KX;;S=3D?1P*KF^V^"IHX9Q%/-R[[KI,-/PM$/I.\S$SBX51.W1I%V
-M!0#L````[`````(```!%``#HA><``$`1``#`J`$!P*@!`@'T`?0`U`:Y4R?2
-MBL\U<QV&#!1\P6;3K2X@)"`````$````S"$``+#\]&@L#U:%&`Z)S%\0AD2E
-M-`O91[Q_$BL at 5KG?)Y.6TV0O:K@]GT0S50.GVQ$G`!K88]Q9Q%C0.&^#*@66
-MC;D703KRUFR$Y\QO`YHPU:/=3D3:H#B^:6-(>`)`$.1B%2\N\HX2_#SWV\5(IZ
-M!*[>^/I'F"\S"#^Z16\(7O)4`N^*5E8J<..L`<QZZ25+[F!L)!1?<V!138B!
-M]+N:?Y4GV)$D>[BG].J%+:GHZ)!X51.W1NF8!0#L````[`````(```!%``#H
-MA>@``$`1``#`J`$!P*@!`@'T`?0`U`:Y4R?2BL\U<QV&#!1\P6;3K2X@)"``
-M```%````S"$``+"![?CM5>ME^*MC<IE9,]8F1NE,U+GN9HBSTMZU$=3D>_>NYT
-M"YT)KF_79+@$NOF9EV/CT&);\5S8)0(ZV\@8*^9PPB#KCB$#3-%&+B+0'0!%
-M\&4+_3[94&]7F<!%A1M(%K4*UMQ2#Y at SM5M/;&_[,2^WW-(2;(0WGO_B^UB5
-MH;:+'RQ]J&GPLKXS"S^]#[/E&5Y2W5+>4ASKJ/NI<K^ORM'F7Q`X-Q&.3*FH
-ML%#151.W1D.V!0`\`0``/`$```(```!%``$XA>D``$`1``#`J`$!P*@!`@'T
-M`?0!)`<)4R?2BL\U<QV&#!1\P6;3K2X@)`@````&```!'"$``0#\VF#K,D),
-M[1Y?R4H/'@!I_:`UD">XELQE(K<-YM?AT at R\3TE!!'=3D3HS0:*(#2R7>72E_*
-M"G'?M`JIK!'I4]"F:N=3D3Y7DF=3D\>3R/=3D7QC-4!Z@"?!I-HJ%Y&\*>+5Q[:1FY
-M0'$S\]BU<E,4QUR7>[-,U5:2:)+&?;E1@!EUD&&=3DNM8*B!7[HCOK(`[@T9+K
-MBTSTY:0,ZY at Z4I*..1Z6OR9-`8:**+5>IT at 012\4M!,WO:[^PIEYL8U:A![8
-M;%Z%;B`;OO)W5"XIU'<,SW%<@M:G;I".O-M$S]*=3DL-H2$`!%B9[Z(!IBP'B7
-MX/ZW)-*P%&XIF@/$DF:FUQA*K[=3D5$[=3D&[<(%`!P!```<`0```@```$4``1B%
-MZ@``0!$``,"H`0'`J`$"`?0!]`$$!^E3)]**SS5S'88,%'S!9M.M+B`D"```
-M``<```#\(0``X(DTJYJ9^>G7H2Z6%\NZEL+XQ1N7@/I")6WZ$64$>J5IO!BF
-M3"!,G57X';"BS[&4Q$H9(T<5.B7\HW;WXO^Q>KR:.8[*!F\MB/9V20<@S&\*
-MQRV$!6I`^AP?#=3D3;78L(/F&W_39N-(:PN06U7QO:%^E`&.;8[##C1T$/P)WV
-M#\\JW26M%POVB;^*^VO$JZ7-D8HD$EVB>C?U#P%3X?=3DRT;\<H');D,MZLO=3DI
-M->(C0L"""^C\^(YZE`U&TZU_]=3D''P;,VDM(=3D$@Q;T&%'/3=3D^'L=3DG!"7<P*<L
-M9N`#(<=3D5$[=3D&/=3D(%`.P```#L`````@```$4``.B%ZP``0!$``,"H`0'`J`$"
-M`?0!]`#4!KE3)]**SS5S'88,%'S!9M.M+B`D(`````8```#,(0``L+C<;N2T
-M++W:LAO6J*VW[A]-NXFS*8S7\X^R-7W9)`V6'4C%WU5@]1Y?L:F#@/`8NN)+
-MC6E48),._*MM%Z)3[ZMB"0V#;+4QVW@`8O)PFLLD>VB-2..DW;.:2KC4@;)`
-M-N*=3DO9I:#E\(_"Q`ARN011B?_95-9RRO^/SBL\/QE/RT5N^BKPF'+RFDF6[X
-M+;\3+Y>4NZ_#5`-=3D1[S1J`I*_X,O1OM:XTU173GYZ]=3D5$[=3D&6_0%`.P```#L
-M`````@```$4``.B%[```0!$``,"H`0'`J`$"`?0!]`#4!KE3)]**SS5S'88,
-M%'S!9M.M+B`D(`````<```#,(0``L)'CQSZ_\C)3N'*?$@[A.B_6:^/.Q_WA
-M]($'\FTF2IBL<4*7A!^LBHW^(E,W8WL'W;#4N2M/B(,]ZEOR6`RCS7E)3K*#
-M'W`-]T]U=3D&$N^A":'AFCV%/,7%$<W@^>!;A>E',[,?3PMGL?+WKNWFL2_-GO
-M\.Y=3DPA#^6[=3D<X]IB`+3]1F43-?W<=3D._/NWL#YI]YH9:F<73'%F;'$%(/[\2_
-MV8P3T7ES3=3DJZ<-OI;P)5$[=3D&#1H&`(P!``",`0```@```$4``8B%[0``0!$`
-M`,"H`0'`J`$"`?0!]`%T!UE3)]**SS5S'88,%'S!9M.M+B`D"`````@```%L
-M(0`!4-1.(5,@@<VB:^\8_U&H`6 at +C1]?CR`(!)]H:WZ$BW2(\)@<@H-8W88#
-MG:%?PJ+:,?U_75TJ=3D3;S3V,I&D+P]7N$5R(.=3D@<$6WJ#H`TY993'@E$68&$.
-M\<\]Z1:+L4U^TB/7U=3DN`"NK_?B>EIBB29VD`\U;0?Y/=3D6MI$-QGL-A>`\R+B
-MKLQ^&$"./!R-Z0:TX*`X;S=3D,!RK?.FCXH<*_2("G((;)Q"<<-]IM;J/=3DJIYD
-ME<=3DN. at 1XL^65Y;VQ>_-^F@>WU0OIT>54D01(>&DNHG4*P#EN)`![3#P2?",.
-MU'#XC+8W7(?5*N?ZJ[`W_2IBP;,J%6'[4]?LJ%`S<ORY6$:GHVBMV;O]HAS[
-M5]:*AQ%!L%[+&)T&9836_L6:<'C!?W:K75BFBE1:"Q/J0K&\6,TD^3:4DUNB
-M'_K(^B[[7CZS]0FO.[,C))3L5P8E51.W1OY.!@!<`0``7`$```(```!%``%8
-MA>X``$`1``#`J`$!P*@!`@'T`?0!1`<I4R?2BL\U<QV&#!1\P6;3K2X@)"``
-M```(```!/"$``2"MVS- at V9Z*5_D-`JM.?*=3D%#V6NLO^I5_271E^P1;<2QZ(`
-MQ:'7\6$+&I<$"?_E%=3D#NRZSN&S7IBT:(O&3BZ+(@ET90?P!\!QLGDY1(0?/,
-MVM`YAF[*@?-;MRSMI+>LEV)<@8;@\63J"D\GA$Y%.`<H/+6WD?ZWKT18AH=3D,
-M8'7 at J7L)=3D^CVVRA5>OALT>Z`('E4P@<:Q]-<R8ECP,I(1'*)++*F9G$2+XO<
-MLT[RTC01&KU^/5YAG]S>)(:A5!PT,WRQ.M8SN"ZJOH8('X<';AXFN0\9=3DH'A
-M4R<#:NYTD5T.KQH`K!)1,U#@KUNX3Z_\=3D1?4H1#&N5<"B/Q_.B-J#82[V+A0
-MCFIJ/6S]D;UEQ8!^%\9);&;:%40>'C'B;%43MT;A=3D08`?````'P````"````
-M10``>(7O``!`$0``P*@!`<"H`0(!]`'T`&0&2;H:T#U:,>?M;'U:P^HG0 at DN
-M("4(`````````%PJ``!`:)<B59O6%L<?Y:&WPMV>*8\Y%?F$[<LK'O-Q)"Z[
-M;'-+;N]'4X:7Q7Y-JQF\ML."@(]TTNR(.Y<)))8J51.W1BJ"!@!L````;```
-M``(```!%``!HA?```$`1``#`J`$!P*@!`@'T`?0`5`8YNAK0/5HQY^UL?5K#
-MZB=3D""2X@)2``````````3````#`N<W.')!3/KO at S=3D?X2)TDKHM);FSR)71M9
-M2S>=3DY9P8%>YGN:0V[WVCEF'K3U43MT9[D08`;````&P````"````10``:(7Q
-M``!`$0``P*@!`<"H`0(!]`'T`%0&.;H:T#U:,>?M;'U:P^HG0 at DN("4(````
-M`0```$PJ```P9TN3*$INB,I63+]U62[W+G\A]D^[_HGXO(P/<@L$)>AE06,R
-M1RC-M_`E_D!5$[=3D&!Y\&`&P```!L`````@```$4``&B%\@``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CFZ&M`]6C'G[6Q]6L/J)T()+B`E(`````$```!,````,'5P
-MT3ID#O$KO7OWQ1+ZZV0+VVTDL&+R\Z\.6L)5V4^ZU0M'7_%19H,I2;3?51.W
-M1L&=3D!P"8`0``F`$```(```!%``&4A?4``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MP`/.<\:B33X``````````"$@(@@````````!>"(``'@```!T`0$`#`,)``P!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``G=3D7J<U?0*:#_U"<T4Y1%4R1^=3D`CVJBW)
-M`=3D=3D-P`D,H?O8*'C_UK\C_-QPGF*Y1W]-. at V.V"FFK'\.X(;M&4IEKONW).O;
-MXJC2NST8)V-9[=3D>O$;!B;"4)>R-25/O*Q&3`=3D=3D`A6[U!I`+*-^-MDU(XZ=3DWF
-M'/?*WAX,%=3DU$5>%PNGDI```D`$QB5HA'HSK:TS`($5\4-.<,98$W\?"V`'FV
-MB7J$1;\I```<``!`!!.(:*VGE-K>P2RK^?.!L<@G?`O1````'```0`57NH?/
-M?/?V7",@`+R^'NE,053*J543MT:+K`<`7````%P````"````10``6(7V``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*<`#SG/&HDT^```````````I("(@````````
-M`#P````@``!`!@````KE=3D,+%[+E(+?M110!N0FL$94`Q8543MT8LO`<`N`$`
-M`+@!```"````10`!M(7W``!`$0``P*@!`<"H`0(!]`'T`:`'A<`#SG/&HDT^
-M```````````I("((`````````9 at A```@``!`!@````KE=3D,+%[+E(+?M110!N
-M0FL$94`Q82(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-MG=3D7J<U?0*:#_U"<T4Y1%4R1^=3D`CVJBW)`=3D=3D-P`D,H?O8*'C_UK\C_-QPGF*Y
-M1W]-. at V.V"FFK'\.X(;M&4IEKONW).O;XJC2NST8)V-9[=3D>O$;!B;"4)>R-2
-M5/O*Q&3`=3D=3D`A6[U!I`+*-^-MDU(XZ=3DWF'/?*WAX,%=3DU$5>%PNGDI```D`$QB
-M5HA'HSK:TS`($5\4-.<,98$W\?"V`'FVB7J$1;\I```<``!`!!.(:*VGE-K>
-MP2RK^?.!L<@G?`O1````'```0`57NH?/?/?V7",@`+R^'NE,053*J543MT;D
-MWP<`4`$``%`!```"````10`!3(7X``!`$0``P*@!`<"H`0(!]`'T`3@''<`#
-MSG/&HDT^2*V(@S9_R-XA("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``)TPK(%FM<4W
-M\UY!;CTI-HA3-"G/\OC`N89LS2HSXF)WGI!EI.94+G2>I_[8M_CD=3D"(^99UL
-M9I#3?-WVU,#;&=3D05'ROP3\+-C9J#C:KLV!N;!`V!5"C-!Z?F&,D,X_HQX.Y!
-MHL,%3_1*#FP/B$I7',%G]XR9HV2D:S]W`K0;KBB3*0``)-+N]TF5#0F&5QLY
-MS:2A"HG9.LWG00KOOD[<0O";$)*K*0``'```0`36%0[61GW'/(7I254^RS+?
-MO3 at TG@```!P``$`%@\@UC?T_?E!PRLL5/=3D>UY at 4PY8!5$[=3D&<@T(``P!```,
-M`0```@```$4``0B%^0``0!$``,"H`0'`J`$"`?0!]`#T!]G``\YSQJ)-/DBM
-MB(,V?\C>+B`C"`````$```#L(P``T%$&MHV2]$B)>NAY;CD`C#Z8U+Y at C)D@
-M0Q_(@*.N6OU$4[XJ<J4)"H1--$0W]%3CT8?M"MPEZT`RZNRU=3DZU"!4*/NC^\
-M./4I&-0U2L\YM,P61TP`PRD;5.F7)(SR4(?%:I?3P+I!J>]V`>O_3Z#]"3L^
-M#+^T"WY=3DU[XC5Y9^M06&1Z0N\[F/;-KZS36/,3_Q;:K:A//*0ZVA9O1OT0K^
-M#;O=3D]JRFZ<1\"(=3DW(!E`4EG36[P.]8/BZI,N-7T;VNNPY=3DSTJ[M+40AN\\$-
-M?E43MT;T)@@`O````+P````"````10``N(7Z``!`$0``P*@!`<"H`0(!]`'T
-M`*0&B<`#SG/&HDT^2*V(@S9_R-XN(",@`````0```)PD``"`XVU,8AO4Z at SQ
-M6\4;)$B/BVJ;V].IXXNJ?Y=3DM,61"IEJIIDS'^P!)2Q%S`M47&(5OD)^%F[%Z
-M]T_C6'&.PDPH<VP?K;HGMT(N\V,09YT:N%E\W7SP0Z(LY2#KL&E#8=3D at N\91/
-M%!)'+OR`N)(HZ=3D3GHJ</N^/F8<+,4_\C:E43MT9"1@@`'`$``!P!```"````
-M10`!&(7[``!`$0``P*@!`<"H`0(!]`'T`00'Z<`#SG/&HDT^2*V(@S9_R-XN
-M("0(`````@```/PA``#@*7.>]30Y:$$>N89*?MB[Z5E^`2CM#0B%\MY9NAT5
-MM<)WKC+4FRT3;<1^;#BN.R^)9%X)PU[S>]GZ>S_!<O^KAL:*?0Z,,51LOI1\
-MEVWK_HYV08:)59!2-L%*?I`/AO:?=3D.E<5K]AGOG=3DI5B3VF;'FUA-4RO2,4/.
-M/7T$>1J&HB>4Q+=3D6M[;DH6YQ-)/2[$NHQ'<]W<V<^<-QIW*?&,KAMTTUFB6`
-MNNX1C18Z=3DL]*,M_TL?:/&@97VW&YD[\&B,W5["ET0C`IK0#%()6&-*>0B?EH
-M\2!!0%^5K?,KBE43MT9%5P@`_````/P````"````10``^(7\``!`$0``P*@!
-M`<"H`0(!]`'T`.0&R<`#SG/&HDT^2*V(@S9_R-XN("0(`````P```-PA``#`
-M+`NLG?10*'_BF^$/Y$XPBFA12GPS&?;K-P>2)B-)_)*Y*R;LYC/\<I;!;5S0
-MN,)B1=3DJ)'FE[NBH:%9#YH,>N.8N(G53QA%TLD**:W'`B_K-V,9KX"86W7ZZ$
-M!H^B_[ILB9?,T83<<H:.U_;#7P#<I":J'RO[8CLZY];>/]TY)?82`5.<F4!D
-MB:$+!D^0TN'\ZW'6N'$2RQX4I)):5AOHK#M9IKZEI0"9,2@*T/+7NWO)_N)8
-MRATT^J(6T3E5$[=3D&R5L(`&P```!L`````@```$4``&B%_0``0!$``,"H`0'`
-MJ`$"`?0!]`!4!CG``\YSQJ)-/DBMB(,V?\C>+B`D(`````(```!,*0``,*I8
-MG<:*[#XT3Z_-FGQ!$T\MB/+9SR[(^()E24I!>JI\,2:>:H8\K2HVE5CI51.W
-M1IEV"`!L````;`````(```!%``!HA?X``$`1``#`J`$!P*@!`@'T`?0`5`8Y
-MP`/.<\:B33Y(K8B#-G_(WBX@)"`````#````3"D``#"<=3DY1&6X0#<J]<FT2I
-M8E7-G9F6+`F0**V`!^SHH`X$-PHN22Y!Z:;4+_*((U43MT;%D0@`/`$``#P!
-M```"````10`!.(7_``!`$0``P*@!`<"H`0(!]`'T`20'"<`#SG/&HDT^2*V(
-M at S9_R-XN("0(````!````1PA``$`8S)]K,:C\Z81].#^*=3DA5D(6&>WWFV-YO
-M/"G]0IRH[`[E%94SB"*IE:"<5^E*(`7/I+;:;HZ-3EA]Z-Q``0-2^N2:$_<O
-MU#"N\)RR+B_:I?4DV4?FFD0Q1,&8FLK?EBP5`*61_+;]KN43'PL>#?MJR)JC
-MAB%:;9XF\24NH`1AB`G)JSCF,HM at O[Y*>7-0U=3DM1$1X*@>,6"%2^QOO2+2EW
-M-9-D)`\:>9-J'F(\\&KKTX]!, at E]@CHY,_H[WLF<G<FA[60%]TU?@@/PW#4J
-M>O]/8WK&8/6IX6VE]LI0T9VU'VV"<FUVT!AY\J<*(4!SFXHA('H/^>U4*)3C
-M\,2&51.W1K:=3D"``<`0``'`$```(```!%``$8A@```$`1``#`J`$!P*@!`@'T
-M`?0!!`?IP`/.<\:B33Y(K8B#-G_(WBX@)`@````%````_"$``.!X?ZJ;)UX$
-M.!&K*9.W"G&&C`ON1Y[POM3Q?S)-6PI2G)XXF[K$8L6,:-XQ\U`X]>B];#_A
-M\$0DCQ"<"-HUG`[G=3DAJI93\4.W%VGK,Z4-Q&<AQT+MN/L'D- at P?W4?BG9/1#
-M4MTDN<K+ENW!IRB=3DU/Y=3D^>)<K[,K4=3D?V]4"[0C)I^WN:"#+7MN+Q08]%QY$%
-MDL?B.;Y]$RU3X1`JXLL&C'3*-\H[QL`FVC[_?-:TG8NUT<+%+I&']\/[>V%H
-MWV*).Z3[9Z6LKI91&^[_S,C;G^HVW6`6Y@:>N=3DFJ;JX$51.W1A:M"`#L````
-M[`````(```!%``#HA@$``$`1``#`J`$!P*@!`@'T`?0`U`:YP`/.<\:B33Y(
-MK8B#-G_(WBX@)"`````$````S"$``+#)B,G#/DX!=3DCGL%2BR**`U^<V%>D"Q
-MPP>`48=3D3S-E.PIL3*33S.E]U$@M)*#$B125=3D]AV?MZ_AX5QFLHGB?,/TZ&('
-M?AHW\AVF$>JR-L8:L>B<.8#A&Q@`LLMCFZ+IS3Q at LG)W<UJP#N^E@]VAO99P
-MG`[D<J&X#68-X;8I3_%?5%BU*>T1O*N at QKQ;?%;U.`9TD/"OQ!49:(-"UG.@
-MWI`JT3-S!S`MI`^1Q$^+51.W1OC."`#L````[`````(```!%``#HA@(``$`1
-M``#`J`$!P*@!`@'T`?0`U`:YP`/.<\:B33Y(K8B#-G_(WBX@)"`````%````
-MS"$``+##YH/I-'2T/S?<&V5K';M0;;2M_E?Z26 at XO*RZG*6MJKJ<^*9+XF6-
-M at Y]778(WPIY_F;>G1&+PS<H.[A_W,-2^G</B%^+"2W3]>V4I7_Y.L?/MN.(V
-M0&13."D"[H/*T2EO&X2]W,`$4OT]!*)1QE>2BJ[6QJB at 4`(0K"&X&YTB(M^G
-MD%O7[U^;X0(YAWY3=3DTL$W\@??\N8#^[5A[V=3D0<^W>^1ON3UD3*.Y^)LG51.W
-M1G7K"``\`0``/`$```(```!%``$XA@,``$`1``#`J`$!P*@!`@'T`?0!)`<)
-MP`/.<\:B33Y(K8B#-G_(WBX@)`@````&```!'"$``0!\V2VT]C>'75%LM0,3
-M<G-++31A/$-CY=3D]6A1?.:G&&,([00YQQ[^O31,W];@5]W<[H51]$'><-E2$<
-MQCF^7`VO?X->_4VM5T at _2E(04_M=3D`1^1<>.'Z<[&H1R%&E*%5-0?%,0FR+TR
-MV*D20IT,0L!EPCWG5 at -_<K3_I175W:X*_G`_ZRN=3D(S-#;4:M8)D$#1Q;%Z96
-M8ASD,+O'YV.$,^[TP7NOW=3D8-GEDKWP?#\=3D>+&>MJ"J+RV0N8)2 at T(_[LU'@T
-M'2+/KJA)UF0!1,NHGSJ3F7.#KR,`@.Y[(IY_^,M.W`M//K%$^@^9-6[JU^B5
-M,_]`O, at 1[X?`P[5QXE!5$[=3D&RO<(`!P!```<`0```@```$4``1B&!```0!$`
-M`,"H`0'`J`$"`?0!]`$$!^G``\YSQJ)-/DBMB(,V?\C>+B`D"`````<```#\
-M(0``X!QFJ0'1GP8A=3D3UH<_]Z42-SL:BW<A>W at CF]:JT at 14KG$&:`\!-`JD]L
-ME#=3D2H\%1(>U0>W6Z#.XP%.`<'GUO*\P%"!_\U('_<+QKZZ7.UE""C5%4 at HR?
-MX]&$43OP+IQWH(&?JA26U%9VCV/%VU^U7IVS$Q[_1B7+RRK03+G47>1?<5$.
-M^>#"XP,HQ172_GD3^,#;`M\+$1*:#0 at D$Z%TZ^Y;.0Y,UI0:69R]&4%L;]AX
-MEN+>WN[)(XZEFS0-@*A>/QIB177&323PZA5&UV(AGXLM18K?YW/U)T,QNM]5
-M$[=3D&0P<)`.P```#L`````@```$4``.B&!0``0!$``,"H`0'`J`$"`?0!]`#4
-M!KG``\YSQJ)-/DBMB(,V?\C>+B`D(`````8```#,(0``L`D[HD40<_%-DZ`$
-MV<$T`&,1YU!:RRP'`82MZOVWN-IU43').J3U2$Z3A,3'"G$:WAY3?*#^J<[F
-M]7^^/Q^:7%>)WAU7OACE5CY;5.;KJ5?Z#=3DM0,L2QZB&RN%S2+<\`O-?I07G@
-M:1#"OARYG5Y*@]7T?1<4.-1 at OS'*A]1:BCM]]SP7,S2C2.")JFCA6X5,BQB"
-MOJ\2K84A3M>);]:W-2W!I7+]65ZF1XX/MWM5$[=3D&T"D)`.P```#L`````@``
-M`$4``.B&!@``0!$``,"H`0'`J`$"`?0!]`#4!KG``\YSQJ)-/DBMB(,V?\C>
-M+B`D(`````<```#,(0``L%@TP$V1=3DDCNWL'6,O at DC02*.\0*:HX-Q3>2^X&Z
-M?>J1.O/Q\4W_I&Y5V*M*V*/X%Q9\$<!N*8R"*(#Y8J`E*C+BGC0#'9%UL*[W
-M`]WO6>C(J(+813$JM1G$]MR8@>A+NELQ,,(C0/(@;294@=3D,-,*1#TTPW"3&L
-MJ:51V(CI9I#&88G[E+7>Q@=3DHQ/Q<<Z32J!TA;EUMQ!WH"2`)V4/@,MQ59&Y:
-M_[G@)%Z3UQM5$[=3D&!5`)`(P!``",`0```@```$4``8B&!P``0!$``,"H`0'`
-MJ`$"`?0!]`%T!UG``\YSQJ)-/DBMB(,V?\C>+B`D"`````@```%L(0`!4/>6
-MZV]7RF7XMW.*)\)=3D/84S]#^'/AI!8T#J?MU_B<?@7TK*N99-[`U+LM(,,-IB
-ME#G2`AFM_%/7%2GCD(X7 at Y/J2G*/CD5N5]YJ[KADMZ-(]J.V6O\YO:XPYV:=3D
-MD0[%UF_E-AKA&4Z8-1L<Q\K+%8![?+E43?W(-Y[WD'.8R=3DOTS/SE(A"]S!8+
-M=3D,[!@G\>;DI7 at B.G3@3.->C,X4EECHH=3D<("15F41:ZO[IKC/6IM,HV)V09P3
-M?K8.5D=3D930E]#"@*4Q$HD5S'47HNZ7'Y/U`5GX5V!'36;]2UCRU^R=3D^UI\H3
-MFH$91`\]T0=3D)8'.?9L*ST$)R1]+3HW&SPQU>OOC2`5F0`E;J+9A,RVF;0$"J
-M?C65A$-K,D/WL$2L[C0VQ_8L!'[QO?S54NH[&7,<U-*2T,)1_?P[F"RVUA4:
-MF_[FJ8A^LL,YX?2:Q;*#51.W1FJ$"0!<`0``7`$```(```!%``%8A@@``$`1
-M``#`J`$!P*@!`@'T`?0!1`<IP`/.<\:B33Y(K8B#-G_(WBX@)"`````(```!
-M/"$``2`*RZC*R4??/)T"N7 at OB.;3G)H#376U7`?:&N#-5+FTD&RWUU^#1UR<
-M1U-`W%+)<"6,ZJ%&V<!3-Q*"OUVK.L6V=3DVY,._"&P!KZK?DX^'P[C6EB5_-`
-MJIA=3DM%]"7SKP(5B0ER_XE!0<;]AC&B-)&:\TU#HMAF<9[X)QQ\Z'Y6^H*VH^
-M"O"7$_B8Q!K.OSN12KE>]^>YM at C:RQ[3M`'=3DH)CPR<BY4#6E99]:,6#:"6GE
-M"?!DXPNG)475ZSH$'-W[JY*OW4J]@4J_+U36-WJ at D($X,FU-4ZG>#Q&%ZE/+
-MK!<+F(JQ#8KE"@,]4N$T54)V`Z\T7%L$O*41K+DWX0I*][.6IF.+7QE*]!DZ
-M=3D at TI'Y,LHG2AP'L&KIO"Z'!%'U43MT:5J at D`?````'P````"````10``>(8)
-M``!`$0``P*@!`<"H`0(!]`'T`&0&28,6Q30ZB%3E!@L=3D:5;2V4LN("4(````
-M`````%PJ``!`>^L)<#NIZTCX(;$R<#+"I(>4]\'MN6$]`6\3]:QRYJR---'`
-M:5H(OM\#H*?D6.;<;2J(#FK/]@EP`H2Y51.W1NRU"0!L````;`````(```!%
-M``!HA at H``$`1``#`J`$!P*@!`@'T`?0`5`8Y at Q;%-#J(5.4&"QUI5M+92RX@
-M)2``````````3````#!U:MX+#_PJ\B6KV,#PKQ.[BG=3D]D]K3\4YMV__F=3D@"E
-MW_?<`KUP89GPK0XB7%43MT90Q`D`;````&P````"````10``:(8+``!`$0``
-MP*@!`<"H`0(!]`'T`%0&.8,6Q30ZB%3E!@L=3D:5;2V4LN("4(`````0```$PJ
-M```P\@[+21.NC.B$MR/NV3&X6/5B_JMH6S4`SZ\W$_.B[I`Z'P)F7GJBAT2)
-M#%!5$[=3D&&=3D4)`&P```!L`````@```$4``&B&#```0!$``,"H`0'`J`$"`?0!
-M]`!4!CF#%L4T.HA4Y08+'6E6TME++B`E(`````$```!,````,!DX$>&V3R;9
-M_;)<L.?H7(2(QLK])7V%1S at 49``KATZNL(N.]Q at YUL,F[;NZ51.W1J?3"@"8
-M`0``F`$```(```!%``&4A at T``$`1``#`J`$!P*@!`@'T`?0!@`=3DE[1WH;_/*
-MT:<``````````"$@(@@````````!>"(``'@```!T`0$`#`/_``P!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``SN4 at D71TKC]S[HM at TT77-2T,(PF</6LS at 4O&*HTA
-MM-Z8+`:=3DL]T:_VCO>/>8<"F:4(7CDD%E^QKS:-A`8Z.U"L[P+K-&`&*\7X=3D4
-M\F%+^E%JXBJ9F30.TD''8A_3J&J,ZJ>J'6X<F3L7$SZDL7XERJC&71_!5BT$
-MRHO!=3DK?SFFTI```D00^Y]7AH=3D%ZT&.JAD5^H[1KJ4"BOV&W6`-*0S-"NN1$I
-M```<``!`!/>-9F[9S/.L1P54'D8B?,K])5=3D7````'```0`4^BBD&,J8F:2P\
-M%=3D$9L\'%+I:M,%43MT:^X at H`7````%P````"````10``6(8.``!`$0``P*@!
-M`<"H`0(!]`'T`$0&*>T=3DZ&_SRM&G```````````I("(@`````````#P````@
-M``!`!@````K!D2N"KVZLMI<JI.;,K6ARR#]&V543MT9$\@H`N`$``+@!```"
-M````10`!M(8/``!`$0``P*@!`<"H`0(!]`'T`:`'A>T=3DZ&_SRM&G````````
-M```I("((`````````9 at A```@``!`!@````K!D2N"KVZLMI<JI.;,K6ARR#]&
-MV2(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``SN4 at D71T
-MKC]S[HM at TT77-2T,(PF</6LS at 4O&*HTAM-Z8+`:=3DL]T:_VCO>/>8<"F:4(7C
-MDD%E^QKS:-A`8Z.U"L[P+K-&`&*\7X=3D4\F%+^E%JXBJ9F30.TD''8A_3J&J,
-MZJ>J'6X<F3L7$SZDL7XERJC&71_!5BT$RHO!=3DK?SFFTI```D00^Y]7AH=3D%ZT
-M&.JAD5^H[1KJ4"BOV&W6`-*0S-"NN1$I```<``!`!/>-9F[9S/.L1P54'D8B
-M?,K])5=3D7````'```0`4^BBD&,J8F:2P\%=3D$9L\'%+I:M,%43MT8*%@L`4`$`
-M`%`!```"````10`!3(80``!`$0``P*@!`<"H`0(!]`'T`3@''>T=3DZ&_SRM&G
-MW<5`D@('/O(A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#
-M```(`@```@,```@#```"````"`0```(H``"(``(``/]JC at L"[647QEW7)+N^
-M`.CA*;_ at E3S4YWL(-37_/0A]5M1JFLBC=3D7^.-]*^Z at WDYEQ%2A1>/&2UW+A_
-MN_OO-Y&WMC$C(ZB2HH-HFSN'GT$\4$(W;"O+H%D##VW'5&0N&HIDJ?;1C4!K
-MIUIAK4Y^WYVTV7IK);D]QC2M8SA]400T*0``)`%('I$2FB6_XW##RF]RHW&G
-M"':Z[LC=3DJUE_PD8,?@SG*0``'```0`0WGEA'(-;YJ@\;LVZ.XU#Z+I%/@@``
-M`!P``$`%.AU1C%@UWH'+*R<)<PB/;:@,!`!5$[=3D&K4(+``P!```,`0```@``
-M`$4``0B&$0``0!$``,"H`0'`J`$"`?0!]`#T!]GM'>AO\\K1I]W%0)("!S[R
-M+B`C"`````$```#L(P``T%[NR]6.>SW71#AXL04A7^LDPQ3%;RQ4CDODO0'"
-MI>S4T_OS7<>.[;/V58*VU]'A%BP"HLEE;,0T)HOP[>2`$>E9,K1U1L^+6CLN
-M'6BKOW0KO3B7"[(>+:+8[0 at H-,\C#-Y:J[ZY^>=3D#G>V#?"(ZOF+1LJG#UU*Q
-M'MRO+NDZ"D&+38JI`LI89F;H\K'BV19U-<$1YC*F^?/!AK=3D?A^`'3YSAM'_[
-MGK$H0BT49WM+<!M.EKVDX9.!=3D_"%-L*`,PS8!)'?T?/ONP'%AO(PU%43MT:,
-M6PL`O````+P````"````10``N(82``!`$0``P*@!`<"H`0(!]`'T`*0&B>T=3D
-MZ&_SRM&GW<5`D@('/O(N(",@`````0```)PD``"`%$>V6F-VA. at E!Z*.\0_(
-MM`B&>BB7_UEYU at 92K=3D:#?#&3V.OV?$HR[\.H3O<5^]7IR#N"Z?%JZLOP^Z17
-M*?<W]1*8<2YDU8Q?/K=3D#TT']B3;%\%X/G9ST)'7MM;3BM+:V()8M'46XBL[R
-M4"+^_>*5GDHO4ZQ[DS`;;T_/5E43MT9<>@L`'`$``!P!```"````10`!&(83
-M``!`$0``P*@!`<"H`0(!]`'T`00'Z>T=3DZ&_SRM&GW<5`D@('/O(N("0(````
-M`@```/PA``#@^^;.P-W:_.PF94P(."AZ7=3D%`;-PEQ6HU[BR9O61Y=3D4Q[LI;:
-M<:/(B&)[UU'":+TL*$JPF<@^GG>2;BO%.2O!W/`RWB(02/CX!)<8/1.6<F0C
-M=3D^!L-#[O$E_1`]J%^CL1Q#Y-BGQ/Q2E'<)PPJ*8VK(\2E*28`2O)<^V/TF%*
-MVIGZ at _X")^BU%>`J&PDR_O3L13[\1W$'C=3DH2K9?B)-T%C/I;)5A%-<.`:O\P
-M^SL+EK]'`@-,X"+]RR\K6H[?OK9?G.D7ZC#5%;H2+G%`,0O9^=3D^Y?VDGT5 at K
-MC<0RJE43MT9MA0L`_````/P````"````10``^(84``!`$0``P*@!`<"H`0(!
-M]`'T`.0&R>T=3DZ&_SRM&GW<5`D@('/O(N("0(`````P```-PA``#`GE&U'6'-
-M1EC=3D,J'C4DH,ON:&H!7S=3DG!?PAP82W`?NJ%O9YSF\4/*#'0^B#S>10;H50;)
-MZS2B at FV=3D/LP&'ZS"=3D32YM?#^7P\O!UO#4<8D:I%Q`$KX1N-\_"5K/XP]TF+/
-M.2N6A+T(AJ\%:"L7`Z?OF**[(#VTF$$K[1U^WS6\\5 at 2Q%-M65&OW97]64\"
-M3]<@)YMDR>N9`Z3[JM2L^R;\V?;;!O%[B'=3D%`=3DQ09?<PHA_A$4<B#';]5ZK?
-MPP55$[=3D&#I$+`&P```!L`````@```$4``&B&%0``0!$``,"H`0'`J`$"`?0!
-M]`!4!CGM'>AO\\K1I]W%0)("!S[R+B`D(`````(```!,*0``,%.09.5V'/2*
-MRQKN`">5SG.T at JFZ8&8\`7U%*2$:OZ=3D`(:]Q at 4XF165>LF8X51.W1ABM"P!L
-M````;`````(```!%``!HAA8``$`1``#`J`$!P*@!`@'T`?0`5`8Y[1WH;_/*
-MT:?=3DQ4"2`@<^\BX@)"`````#````3"D``##Q1HGQS3[8#=3DG.H]:H^V/';)^*
-M/S(@SL6(#:ZL2(;IZR89"N'9#E_"%6EFOU43MT:<QPL`/`$``#P!```"````
-M10`!.(87``!`$0``P*@!`<"H`0(!]`'T`20'">T=3DZ&_SRM&GW<5`D@('/O(N
-M("0(````!````1PA``$`["7,JV6UJ25#FQ6V'CQT!(>P,64?TE<!61_D,#:7
-MI)^B`&[23*?C5CUK#1"#I%WMQ]J=3D;^F&_Q;(/P>P<:KTT>Z`I>K&&2A:/,2[
-M+3.VM'X@#K3#GL:W+-RH.YQW&NKL32G?>__,9._Z[Y_;I=3D;[H#STH$C;+H;8
-M<VG9'_;1BWI'J<Y^#"!3>@%Q@,`'FB#K.0M&_Y("FH6F,PS)E+\'O)Q0(C3H
-MUV\4,]C&])[HVW-;IP)M>)P:_$["0>%[_HQ>#3KM;R35X$$`1\I_Z9ZX+,`1
-MOC-(0.&4QPLE95@#)/_0:]AJ;55H2RJY=3DG@<-[[_8)2TU6EQ1"MW/=3D+#51.W
-M1B;3"P`<`0``'`$```(```!%``$8AA@``$`1``#`J`$!P*@!`@'T`?0!!`?I
-M[1WH;_/*T:?=3DQ4"2`@<^\BX@)`@````%````_"$``.`T.0E at M6:]D4)U4#8L
-M&+32V>.$I$Y0F&)8->;S(!W">?<;^.#UJ\.@;+!R0;_5OE65.ZX5 at PMO4@_J
-MO`,=3D_'DV&46$YL(CGQC#$PB1X<4-PV`KTQ'1-/`DQ.B&)QX#$L;EY:PI3F?U
-M(#9PDTF3[##N7O*I%)VLI>(I&K0-5S=3DQ.]+$DHOT#'L`AP14=3DW)^?E?QMN%R
-MX<G](NO+06QV+&BAZ$F!T0MJT%%8<U8$I#)2IH4,`^?5]%BB7&:C+K3&1)(M
-MNT]_-:EW14=3DMLW_*"/'!\&\`;0(C#.A8W[:I51.W1L+B"P#L````[`````(`
-M``!%``#HAAD``$`1``#`J`$!P*@!`@'T`?0`U`:Y[1WH;_/*T:?=3DQ4"2`@<^
-M\BX@)"`````$````S"$``+#A22A.&A1_5LDTY30#!^AE$7C*D at QQAEIJ.9A6
-M9.43!%.ET3VV5E$:0.&MNUV0$?%>\R+>I^%RP1?<"OQ1D!Y)4O,(P62#,9-U
-MAC=3DFV?>QE*PO5/I5%2(J*^KO=3D<7JK$6F$``X!PR#_%RO0;`/^VSH4H7:J;L+
-M;H$XEY<N(Z=3D;\M^?U35M7(XF=3DF>L":D4-VR:-B8RD7,!)F\L96M4<>2T=3DGMG
-MPW=3D=3DIK)#/@4'51.W1 at T%#`#L````[`````(```!%``#HAAH``$`1``#`J`$!
-MP*@!`@'T`?0`U`:Y[1WH;_/*T:?=3DQ4"2`@<^\BX@)"`````%````S"$``+#[
-M4M-";QG=3DNU.D-[<D/\P%1R&,^AJ&-Z]\V0TV at A!^&%0#JJNE^G%&/T-X_F)D
-M2JP=3DQKCSO6.Q`/TXIW522R+M=3D?@[W#/:H"+WW6DE(C2J=3D!46M5@=3DAPF941[Y
-MN+1K!7]NTXJLJT!>-#8JX;(-2NW26'>YSN5_6^?\B2!<!:?@C64W:[1OT93G
-M]<^,OWY]74;&(CW')]O,<W:\_QV('-63)"?@[9]#4/P5O at YZ51.W1GHB#``\
-M`0``/`$```(```!%``$XAAL``$`1``#`J`$!P*@!`@'T`?0!)`<)[1WH;_/*
-MT:?=3DQ4"2`@<^\BX@)`@````&```!'"$``0!)UZY[TM68ZS-K5XY&6Y#S]QMG
-MFN$?S at K.Q$1IE\%C?Q^28C]02_]0JO.DB9T%=3D7R/<@L'P.5DNR!OE*X*PE\T
-M;H/2#ZY>F>']W2#@.P$0:D9A+RM$!-X)FF&J66KV)QL6:,'::.;/Y0-A0G"0
-ML33UU5Z;0&@S16FW)4LB[>@=3D0GW"Z.5,BO.163\-1;]$YKI4$FVU'_7-BSV)
-M"8%!E-\85*3C5O[@R12'D4)5>/=3DLU"/_D+O9(VMOS(H`E:HSO9GC8N at W/N=3DQ
-MHQ5VKG]+UR`?=3D,,4&=3DR,4(@KV3>M=3DT^[1]O#-E0;U61J&-P('F,P!/98)59X
-M[FX\'\C0*'!5$[=3D&XBT,`!P!```<`0```@```$4``1B&'```0!$``,"H`0'`
-MJ`$"`?0!]`$$!^GM'>AO\\K1I]W%0)("!S[R+B`D"`````<```#\(0``X`)`
-M%>T?A\2%6`I'A7W6F7RH;D*,SQ/[HZ%I;]3+!+4W6>^I6+T?@D"@-00#]7:]
-M8".(:WY7#GDH;<G$%"?-<_'3$N`7$ND#>4Q1,V<4&ML[UF(OC1Q4EX4?`F"/
-MWCI.MYKC[>,H]^A&B"U.$$]D:K>UIJ\:0*I+']7GCR]\BOID_:I'A?TJD,1M
-M*P:KFG*3L(DN_Y+;;64=3D8?'M`:-J')`LCS8&U+0&M(@\P:D!AG,*)_@<.TO&
-M</.<:$-YWC89SS*.T%@VHFL0?J%H/N]AA`[2!2\&QD(5H/`G]<Y5$[=3D&*#X,
-M`.P```#L`````@```$4``.B&'0``0!$``,"H`0'`J`$"`?0!]`#4!KGM'>AO
-M\\K1I]W%0)("!S[R+B`D(`````8```#,(0``L/AX9=3D?S;%?40<T8]O\LG?BL
-M/R)P57YS+JCJM6:('%<D4N+J\Y<:G8G\F^]]H/`I*!_0;RG<GF$9Q"-JN=3DT=3D
-M/#`O&KT7.(D-R64:)-R2`--W`!\[(:W8C'(`E3>KM0$CI^7NEU95"IEO["X_
-MX[[^#QXB5QL&T=3DVYD/ZO:N2'[?5>IX^K37_,;S\P.3?,$[@Q5Y%[N\.P:,KU
-M#K. at J+CM17.>8T:E]0_3;"473.=3D5$[=3D&D6`,`.P```#L`````@```$4``.B&
-M'@``0!$``,"H`0'`J`$"`?0!]`#4!KGM'>AO\\K1I]W%0)("!S[R+B`D(```
-M``<```#,(0``L((JU$=3D*:CY.<^.2]C9Q.NI]Q$C)#I(IEU#P%FK%8Q$?9Y^T
-MWI.&V02DVBM)4.;`6_C1G\QT@/KGQ^2?UA=3D\\WYY1X6]A1.4Z#[Z3)\P"/I@
-M4;VS&X"2"^I8$S;&TQ^&#V#G=3DFLODX\!F7RUVK7.50A*J?)Q*=3D46A6,59!`0
-M</#=3D]0'F*GY?-[`>"&ZIAU8;J0.-(YHLKD%[]'DEE()#@-[*K\:*_4FTYJ?,
-M9%Y5$[=3D&@X8,`(P!``",`0```@```$4``8B&'P``0!$``,"H`0'`J`$"`?0!
-M]`%T!UGM'>AO\\K1I]W%0)("!S[R+B`D"`````@```%L(0`!4%M4=3D]^0C7V,
-M.4#MR=3D=3DRZ6J#IB0:IHG!N6F%-J;`WDZIT-/91G8?L(C]7_"GB7:2Q!M-.`1S
-M.0"N:OK+O(Y+C1E,JTZ!$MK^>JU/+54\8FB.*B*=3DCW1B!)@&T&,RXD$&_9^P
-M!O23L2;L^U>0TF>P=3D;-A,V*T\2MX<*S\9[54KBNB%EA/-\GY5]](PDHEWAGY
-M+^0PO\.+2'B-7^,%21[EL&W$+<9/+IY!]MV>@IW=3D3PNF32`0MYFUC.R)U1G@
-ME1O/7P3T_4VN9#W2.-A!F-0\Q%8,VU(/OY4'3SMUC/"R8$/";>;V;@_"+&N.
-MPIQ5BKW6:_FH1K2"KW3KG+-!`\(\TR+X%:@^@,W8*5?PC4D>CS3D)/`&+ALW
-M?64SY?>YD2"L/FG>!?*X4BD at 71ITQN%AO-E`'Q:RA3/]5)"0@?8,Y.9 at .X=3D'
-MZTPHT33J$5H$51.W1O2Z#`!<`0``7`$```(```!%``%8AB```$`1``#`J`$!
-MP*@!`@'T`?0!1`<I[1WH;_/*T:?=3DQ4"2`@<^\BX@)"`````(```!/"$``2!Z
-M>H](+@=3D<GF2U*'ZB23Z%L at ZBYM%\LB8O=3D=3DC>0^,P&50PM+""%383B?FY`M`_
-MIO#4(WW)FG?YDDGZTYZ>LGM%.^VJA[K_+J5?*L961%5:+OK'U8JV+9=3DP:>'S
-MO*(78.J0?&\1!=3DNLBQ\.V/-?U(03JWV;TI$!QXPZR7H91,<7_%V9.8XC6(KE
-M*.75/C/HFK0/UVS'^>)<C_A_5;&P`7SOUO*4C,2E5=3D>`&ZXXR`PRJ*R(#!K9
-MCJTB(M`:)>0/,0[RIW9]L\\?><+;]MDR'I"KYS?PFOQ8K':)X"G_",D98.DY
-M9*:._9QAI7**2AB<A3-K,CGA:A4YO(/%P_119:"+E\=3D at 2R)XQ>66LDXX/(9T
-M`7G,)#4>,<]T/&>=3D/%43MT8*X at P`?````'P````"````10``>(8A``!`$0``
-MP*@!`<"H`0(!]`'T`&0&2;IJ'6-,NU;KRN4;9U"N;>\N("4(`````````%PJ
-M``!``V/KQ*V,EK5\4':B9I.?PQWXF01A?GE#></I\DS4MH)&XXL\IP59W-KI
-MN(Z0ER64.WU_PRZ:8-RX79>451.W1A[M#`!L````;`````(```!%``!HAB(`
-M`$`1``#`J`$!P*@!`@'T`?0`5`8YNFH=3D8TR[5NO*Y1MG4*YM[RX@)2``````
-M````3````#"FN$[4]/TWD';Z]DM>/4Z<E]Z:TY7G"TS<$HX6:M4$E%C8#F<S
-MI)IYN0HT\%43MT8*_`P`;````&P````"````10``:(8C``!`$0``P*@!`<"H
-M`0(!]`'T`%0&.;IJ'6-,NU;KRN4;9U"N;>\N("4(`````0```$PJ```P!&W9
-M'FWLS-XUP6LV#2XQRM'+$[S4/%"Q.JI[0>@2)'GZ6TFF'&ZSE=3D)>(J15$[=3D&
-MA0D-`&P```!L`````@```$4``&B&)```0!$``,"H`0'`J`$"`?0!]`!4!CFZ
-M:AUC3+M6Z\KE&V=3D0KFWO+B`E(`````$```!,````,(5V"Z(8BP?K$S.KP+>@
-MF[`/R*GVL8H*S-M3.B1]$?HSGJM`4VUJSXM;C7J:51.W1IP$#@"8`0``F`$`
-M``(```!%``&4AB4``$`1``#`J`$!P*@!`@'T`?0!@`=3DE>9,?Z,3RGR<`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`.```P!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``6RX.:E(H_U,_^:)7;6L$G&@?=3D&Y]LQ>'=3D$"F53V,V%@$:2R/
-MR'[Z>[;Y?5F]`)JL:6+1(8`(33:L<C@^/Y^!'\*YE0!3<;D<][S48:*'UDZ5
-M-"/^.52L*2]RQ*C6/AGA7]%-&DY=3DX&EU[_%1I$"HV,(U-O-_F?,WX%=3DS.#RN
-MEJ,I```DW"49@\3Y`W$"?TE\P>,_2BJ0 at 7;&;P]8,B;G_C)VSRHI```<``!`
-M!%4)J?(:O&]<]AX]6<Y3W:27](DG````'```0`5586FA1JR[+NUG[`[=3DNX,9
-MLTFV%543MT8[%`X`7````%P````"````10``6(8F``!`$0``P*@!`<"H`0(!
-M]`'T`$0&*7F3'^C$\I\G```````````I("(@`````````#P````@``!`!@``
-M``I19,W\;1@<8YL(Z1!'8GYY$UKX#U43MT;W(PX`N`$``+@!```"````10`!
-MM(8G``!`$0``P*@!`<"H`0(!]`'T`:`'A7F3'^C$\I\G```````````I("((
-M`````````9 at A```@``!`!@````I19,W\;1@<8YL(Z1!'8GYY$UKX#R(``'@`
-M``!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``6RX.:E(H_U,_^:)7
-M;6L$G&@?=3D&Y]LQ>'=3D$"F53V,V%@$:2R/R'[Z>[;Y?5F]`)JL:6+1(8`(33:L
-M<C@^/Y^!'\*YE0!3<;D<][S48:*'UDZ5-"/^.52L*2]RQ*C6/AGA7]%-&DY=3D
-MX&EU[_%1I$"HV,(U-O-_F?,WX%=3DS.#RNEJ,I```DW"49@\3Y`W$"?TE\P>,_
-M2BJ0 at 7;&;P]8,B;G_C)VSRHI```<``!`!%4)J?(:O&]<]AX]6<Y3W:27](DG
-M````'```0`5586FA1JR[+NUG[`[=3DNX,9LTFV%543MT:41PX`4`$``%`!```"
-M````10`!3(8H``!`$0``P*@!`<"H`0(!]`'T`3@''7F3'^C$\I\G(VK\G8E1
-MW- at A("(@`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@``
-M`@,```@#```"````"`0```(H``"(``(``-?1*R_!E%=3D5 at -;6A?L#+QL%=3D%1O
-M[[YK-CI`&%EUKW(<9\1NAKW<N-PL7=3DM-<;YM^R5V/C<-=3D4S=3D%K]$`UAE(RBW
-M4M;L42P=3DNE43,6!NVIN2N+<TH.O9H]#LY`S5WUD:OU7B@'_#D287T[\:RK_!
-MTV=3D3*.`1&C0>"!,ZH(`30NE3*0``)(V_>Q1=3D\M5P::KAI9 at 2,Z6-&&KO;E#M
-MVZO;RBU>D7&6*0``'```0`0C`B[/L[.0!:L54_FUC^Y94(''N@```!P``$`%
-MCH_23TV^63P(6X<P;Q6;VH6F1)E5$[=3D&?7H.``P!```,`0```@```$4``0B&
-M*0``0!$``,"H`0'`J`$"`?0!]`#T!]EYDQ_HQ/*?)R-J_)V)4=3DS8+B`C"```
-M``$```#L(P``T`@KJ`"L,4&&"NNDP,"2L5>VU0ETGD*W4UFFVAM"(45:B/XR
-M(S&L>B_VRK>CP^\!RV5\#T:HFQ/G]-(>'ZW=3D^8[F=3DQXFI729PH(.RC;K6S_,
-M1"7HBJ=3D6Q('*$T]:\F->8M\OC,OU3FJ1Y1/C4&D7_A$'GFU#-'T-FS9IE?G:
-M?XM0,U`H"RPM3^2N4GWI?WT#?YS]?JT*X at O.EBQ^3J?)(?^Q;TCGB&ZXX!3I
-MBEZOGN"&C%CM;.)D<\KIDPUO-X^26E&GV:5IPB9G'EP5V%43MT9%DPX`O```
-M`+P````"````10``N(8J``!`$0``P*@!`<"H`0(!]`'T`*0&B7F3'^C$\I\G
-M(VK\G8E1W- at N(",@`````0```)PD``"`[@=3D'H70[C@@CXN[;4OC1!4[NB3",
-M'&]*WNEA59>Z0VMNG2.I4-\K)NXO0V0:H&,]/DKH=3D!)U1\`DDGJZ%I^W0N6U
-MS!\:F@(SSX)'K]+&>N*"F4VH'`VG*Z`:'W$:8:S\BZ5@($N+CE>OP13_#Q.U
-MI6S-IR'GD5=3DBM7].-543MT:&L0X`'`$``!P!```"````10`!&(8K``!`$0``
-MP*@!`<"H`0(!]`'T`00'Z7F3'^C$\I\G(VK\G8E1W- at N("0(`````@```/PA
-M``#@S>(/+R/!>KPOTC4&C#0N>P=3D/)']Y76$J)1#1*#8/N'5(>CX/PPBOU;&A
-M\Z76ON)PUN[9SBFNN)D@$>MI#!GQYFWJZM=3D##KF\$.<AJM!"N"^<WZVC4"9G
-M[`0`7[A+N.%'I!<@6N^V7UO:JP`J]-9OQ!'\;F][GI6U*\F>@QH6&5D.PY5J
-MHGS3V&-87"Y5L?<L^"E%.!QI%X/DMZ,I`Q:^B57#R[BC&,M0/TJ26O%^2"L/
-MII3G]0+G[E7,`$-.82U_$D_@>AD,)=3D!,&?<:/VM9%CN,%ZMFK)O^;)A_#E43
-MMT;'O`X`_````/P````"````10``^(8L``!`$0``P*@!`<"H`0(!]`'T`.0&
-MR7F3'^C$\I\G(VK\G8E1W- at N("0(`````P```-PA``#`*0_V9HT,AUL8CT*E
-MHF)Q(V;*]U`DHR/D=3DF#7$:5`TZI/<UP#V-F"TV\^7%'#=3DG3FMW6HID%(C[I<
-M>[7"/5)/^T<<$$\"WDLTZJ6[_UT$<6R-S3AV9%8E'"42#`Q=3DX*0<6=3D\I)8,B
-M)G"8D5=3D8D(`W:EQ1J/%(`.:ZO)Q)`C/C(FWUK!E[I at J9LF&"^R!\V7&]K&!*
-MZ2%Y\EJU=3D^%":4>HJO2E!!4Y6(3X"K,HF&]5 at PO/2Z(CYWW)_B#@^NA5$[=3D&
-MZ<<.`&P```!L`````@```$4``&B&+0``0!$``,"H`0'`J`$"`?0!]`!4!CEY
-MDQ_HQ/*?)R-J_)V)4=3DS8+B`D(`````(```!,*0``,/]SY^H[FZP13VAHOS/]
-M5IPXIP-GCB6Q;>F:!ZVV+HS0B&9+%4\YBY5TFO\751.W1G?D#@!L````;```
-M``(```!%``!HABX``$`1``#`J`$!P*@!`@'T`?0`5`8Y>9,?Z,3RGR<C:OR=3D
-MB5'<V"X@)"`````#````3"D``#!H,IOB/+Z,JJC\#F;'`9HZX0XHU?VHVWZ2
-M5*&JHN8`6OY1OJ,2KOV"X;#_]U43MT9T_PX`/`$``#P!```"````10`!.(8O
-M``!`$0``P*@!`<"H`0(!]`'T`20'"7F3'^C$\I\G(VK\G8E1W- at N("0(````
-M!````1PA``$`7B80[[-SNQV/721K\8C3!>;Y9J[VJP,=3DG*SITYP$]Z##_(VO
-M6UL*8!P$>:3$^6SSREO@]!J/I3P<K!*I<^T;-U)>D;KN>@8-)99&-YQM'/#&
-M&)=3D-O`/'J<UW)UO1QG5!"_*?A[QCL2,9LR\E#_8]IH(\+.=3DLN489#%>+_B0B
-M2JM6J81!<*ON*,Z7R:R^F(&1J3'-P)P*CP4.;R#,55\MM2V"A&^D)84>MW^_
-MJY$L6]!X.A-`KR5OE6-=3D;IO])UC4YU?C94:0Z/_+":B=3DX- at SEAIP1*L=3D-6%.
-M5,I![GQG7R3T1G?MW0)YU2/IFAG\CX\;"U9(*&L+HAWF\&PQ51.W1 at T+#P`<
-M`0``'`$```(```!%``$8AC```$`1``#`J`$!P*@!`@'T`?0!!`?I>9,?Z,3R
-MGR<C:OR=3DB5'<V"X@)`@````%````_"$``.`6+-TC#X=3DH/T0N.$5 at R!A](\PE
-M'8E+MKI/NDW!XEIE5\R7P[$L5EI'=3D;)4NC/87*XPJ83B<6;(4HLID+SIIX>,
-M%'6$X2[7[65B<6P^0G4PR<]7-7XCQ(F>PJM3X(K>%*1RW$,)Z7W'VPS#'O5?
-M;7",B9@@NB@<ZC6_<3"8(VN69?A<I;`'I7..9B!CTPS/"_&VI5Z3P0_)<K:T
-M!/Z0J`.D+7GM4.37VPK8XAW<J5*Z\!UD9FV/PZ%@]2VF)4(>(!XD4 at 3-$(F2
-M:#C^,G\@?<=3DV)+."Q&T%FD@!F#P>51.W1IT:#P#L````[`````(```!%``#H
-MAC$``$`1``#`J`$!P*@!`@'T`?0`U`:Y>9,?Z,3RGR<C:OR=3DB5'<V"X@)"``
-M```$````S"$``+#QW-7$KL*N+K?9N)C@*5<H=3D%P=3D[/;-Y>$JR32+$H$9(_R\
-ME\U!WJ1T7Y%MW_'*=3DBUP at 7S&EI7?>0Y@%XR`Q0',K,EJ8--A&I]3>6ZX5<+N
-M""YXHHH;*\M03FA&=3D_`-452ZLP::J_S4G`DX]#JK!H-@'^:["/A9&'G[Y<R'
-M(92#ARA98&LMBWV44U5PC?/B`A?(]SRVTQV#G4J$+4TUJ&;RS`-+0^I,*3<Q
-M]0E951.W1NL]#P#L````[`````(```!%``#HAC(``$`1``#`J`$!P*@!`@'T
-M`?0`U`:Y>9,?Z,3RGR<C:OR=3DB5'<V"X@)"`````%````S"$``+#^QMRFC;-*
-M!X^31.:;I!IF?L3]#WF[U(5I5A3GM-F,KN>Y%RL<LY;T&#PG/,J80[DH&7A'
-M#WQ%=3DMD[;RN:6P]HBXG!G3`=3DD.%0;IHP`-AHLX?]5._)E=3DXYXD/W4VN:R)-N
-MFC!&`F5'3X[-M+DB/RZL76M48XHE)_!&KMUK[DY?OW[6")4Q1%^1R%]TPB3.
-M'[:@W()R`]'=3D1G>7`O5A^G+@>F0]>\]G:+.DC@/U5A.W1LH8```\`0``/`$`
-M``(```!%``$XAC,``$`1``#`J`$!P*@!`@'T`?0!)`<)>9,?Z,3RGR<C:OR=3D
-MB5'<V"X@)`@````&```!'"$``0!"(]:8/J)5=3DK at 3D&D=3D5)<-^YVK>/6VV+*+
-M;]ITA\(&?PE%KV8<0:%1>$7BT5129(IJN-&2G#96,&_H&OJ$<]G"1<6_6L!F
-M3T;$6I7HY8C<U2<G&#5%RP1IUL"H48#&(*%`!AS'2%\%.X#$E/&JQY'\H"0[
-MD7OU58\A_8`%.QM.1]01(.G<&>!]>=3D\A@/(1HL4F%`U'#DKZ6_*#'SS9>2K_
-MP^[XP0[Z<KOY')^TJ?__7:806KX;Q.X.<JY&6D<.^O]'>3X<K6%%JGJ1[2J$
-MV5KX%2_]JJ?9K&L%+`]_(E7YWZ@"UMANW39+3^GFS?51'`*M,<Q\LP0Z=3D!X,
-MI496$[=3D&A20``!P!```<`0```@```$4``1B&-```0!$``,"H`0'`J`$"`?0!
-M]`$$!^EYDQ_HQ/*?)R-J_)V)4=3DS8+B`D"`````<```#\(0``X$#:TTIE^CZM
-MZ[=3D)>Y&[T90F]R>:E:ZN'T,2.E<8]\"V#[V2M3S.]DYE52'VI!XD%)V>C#_W
-MV')E51[#7D]@S'^(A3>(_R[P%0&AFL5ZBL!JDM<V/7PPV+05KQ'_$80U.,?X
-ME0JLZ9`]C>T@,E,(>@XV?%C._8R-[/TB7:?G%E3"2S6`\O,+"2W*^:;,3:]W
-M)W9`<,RQPNV!F;G"I(TA\+\XJ3-PL)NF;M00,9[#6I1EH6-`"H_OJ6^^">.2
-MV^Y!KNT=3D`)=3D&KU at JS8\6*T;-4=3D48")(^Q1K*J1`;4716$[=3D&3S0``.P```#L
-M`````@```$4``.B&-0``0!$``,"H`0'`J`$"`?0!]`#4!KEYDQ_HQ/*?)R-J
-M_)V)4=3DS8+B`D(`````8```#,(0``L-6K>K43#BZFX6*6_MK[^J83;6+%R6O5
-M(=3DJG3MRP^[#D!8^!+FY*AV>82,N*<Z]A>"#B;G-KY9VX%_P"`7REYNEA+FM[
-MGHZ(>$S[S!LX`'V_J9+66@/;DEZQM$X2(7V>8(4<A,OP:]1/.UP3[1GE'1?;
-M+YA$>7?8!A at 2"5T7L=3D>?1=3D'[N#@[.3^`QTVY`UY]DFMSDP`O]"91%IZZ+)=3D5
-M;H-R2L,PZ\.Z-7-&;[A6$[=3D&NU@``.P```#L`````@```$4``.B&-@``0!$`
-M`,"H`0'`J`$"`?0!]`#4!KEYDQ_HQ/*?)R-J_)V)4=3DS8+B`D(`````<```#,
-M(0``L);^GYDQ at THIE>-AD31R*NDP'I_"N`2:%I5'A1^OW"7)L99*(O`684VI
-M`@HR=3D2!68B(6J8IC-17RI780)ZRU0+DI^D0>^`)R at L\J\IKL,2'&G<XX:.FY
-MP](W?PN*,(J0V39>*_=3D1VPYW2-<Q!]^R%O0<DZ71&1W(84ELU[B0\)=3D5MP=3DV
-M"!:VNZG:\,C%6XN0]`+_C77-TF4%WJ at OH8XWL,T46M/(1/N(*C__<(Q6$[=3D&
-M0WX``(P!``",`0```@```$4``8B&-P``0!$``,"H`0'`J`$"`?0!]`%T!UEY
-MDQ_HQ/*?)R-J_)V)4=3DS8+B`D"`````@```%L(0`!4)2P137):N;*^'F4;H;+
-MP5S)77_N+7?!TY3WI4O"NN"YS'D#EU6M\_BY6$14*\ACK?H`<YPA@:VR:($R
-M[YMMBF43N4:=3D$O,&C/A?Z.DO/1B)2O)&'O7,#:?;3(@#T\;ZRD%=3DHHS?D\^A
-M]^GP?XD]P*ES+88WHE/7MXS"U*K2G],P/B]!?X\N[YS:\:+-_)R[PE!A2MW+
-MGNQO7<:V=3DAUVA[U.BSY.C]R&$IEF:5V3.&!Q$\ZF_(^^V+7P[KXYD\R&4J<N
-MNXG[`^EVO(W]C%QEN#VHK<1&.)8V.4,Y62)YQ"C(PVZ-]_H at N59=3DSOLC&/!S
-M`)?NC#SQI^A:D1,,D_YVMH%>O0!Y9;RFEM2DU8+ZOWV(OE"#P4B%=3D;*S%2.A
-M>(,;4X$K@:SN*XF/,5Z\69\53=3D7\08E>?#`KZI[\8%<5T-J9"=3DFR%.I(+QCH
-M?A=3DG5A.W1B&S``!<`0``7`$```(```!%``%8AC@``$`1``#`J`$!P*@!`@'T
-M`?0!1`<I>9,?Z,3RGR<C:OR=3DB5'<V"X@)"`````(```!/"$``2`[9"T')I"_
-M54RP*\CH)WK?YL at 9J84Z.E4)J^Q_6+[.>E3<QWLMD*J(HQAWXJ#[. at L))^Z/
-MD)J#W+/5B=3D>>BAY0$B%=3D[@[(*F"CX3Z?0MBWZ??GVE!D6XPPS2W82$F]\3PW
-MRU at 18C9\X(_\R..J[>#=3DZW\>RN:32]0*0X:HRL1PJG)G;I`'_?Q,/H$V)3ZS
-M_H=3DV]UIN+>".#XFM1[.I)^%]CD-G0.#&9 at SJE+Y_G3['I>HYZ\3!S. at E&GV"
-M!AU>!4DW\V_E$9X42OZJ<>//(8X",V5CA4VS]Y.B,'W"@T,E=3DAI?(J8X]5C8
-M5#$W[:=3DN%9+^0N:5C[@$R)?M`'6!E`E*"1,7I0AFH-7%-ZM`,DN]\8+J&3/R
-M)PY<S;5A^583MT:3V0``?````'P````"````10``>(8Y``!`$0``P*@!`<"H
-M`0(!]`'T`&0&2?Y_P8Z9:NBSA'-S-91G*WHN("4(`````````%PJ``!`YE=3DQ
-M<94\(SJ8^+IE^*R>&#X6Z#!\EM^?^V]3$0@=3DW7J)-Q>_TTOY-\S;1";MZ+40
-MXLLOZ2B5/`HW,OO45A.W1D/E``!L````;`````(```!%``!HACH``$`1``#`
-MJ`$!P*@!`@'T`?0`5`8Y_G_!CIEJZ+.$<W,UE&<K>BX@)2``````````3```
-M`#!X0L^C*\IJCT/W&D-T(;!>F[/5<$%!3A9FA)WIE()XK'A'":Y)<,=3D=3D6X<J
-MEE83MT;X\P``;````&P````"````10``:(8[``!`$0``P*@!`<"H`0(!]`'T
-M`%0&.?Y_P8Z9:NBSA'-S-91G*WHN("4(`````0```$PJ```PX#7`UD*K6L?@
-MY@[.%:T7R=3DJ$)`7<IQ>A+V24&K*N?[D;YU;1S24F-S7AU7Y6$[=3D&9@$!`&P`
-M``!L`````@```$4``&B&/```0!$``,"H`0'`J`$"`?0!]`!4!CG^?\&.F6KH
-MLX1S<S649RMZ+B`E(`````$```!,````,`K*6"YJ^GM)TQ3?7+ID/3)(7&XR
-MH'VU"^'0)^)A%1H81B$J6[':/U.;_J<[5A.W1A?]`0"8`0``F`$```(```!%
-M``&4ACT``$`1``#`J`$!P*@!`@'T`?0!@`=3DELW4O6#X)]-$``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,````!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``?NDP#$B!T4:DOW+,>67!4W4PR\I&PN]^8/OS$\Z)5E?"Z-]].,?-9H"K
-MJ081,Q at H&B3Z6T71,A$6_67X`XLP8,&M`).?=3D2>5,4(N4NJB_+QE[AM[]6::
-MV+^O=3D>9V;,FH@*Y<%]?\N:!B+7&O-,DE0D"7;H(+^,':JS!1)?\WZ.TI```D
-M&_T0F_G4QL,*0"SHVKBYU$OIXF2R?A&2A%3T,Z-\TY8I```<``!`!.O20CAU
-MA$`\J?;<>7QSOMW452(5````'```0`5TC1:=3DJYRP1$<Y[;UT[(B&T[*D'U83
-MMT:&'`4`F`$``)@!```"````10`!E(8^``!`$0``P*@!`<"H`0(!]`'T`8`'
-M9;-U+U@^"?31```````````A("((`````````7 at B``!X````=3D`$!``P#````
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``'[I,`Q(@=3D%&I+]RS'EEP5-U,,O*1L+O
-M?F#[\Q/.B597PNC??3C'S6:`JZD&$3,8*!HD^EM%T3(1%OUE^`.+,&#!K0"3
-MGW4GE3%"+E+JHOR\9>X;>_5FFMB_KW7F=3DFS)J("N7!?7_+F at 8BUQKS3))4)`
-MEVZ""_C!VJLP427_-^CM*0``)!O]$)OYU,;#"D`LZ-JXN=3D1+Z>)DLGX1DH14
-M]#.C?-.6*0``'```0`3KTD(X=3D81`/*GVW'E\<[[=3DU%4B%0```!P``$`%=3D(T6
-MG:N<L$1'.>V]=3D.R(AM.RI!]6$[=3D&A%X+`)@!``"8`0```@```$4``92&1@``
-M0!$``,"H`0'`J`$"`?0!]`&`!V6S=3D2]8/@GTT0``````````(2`B"```````
-M``%X(@``>````'0!`0`,`P````$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!^Z3`,
-M2('11J2_<LQY9<%3=3D3#+RD;"[WY@^_,3SHE65\+HWWTXQ\UF@*NI!A$S&"@:
-M)/I;1=3D$R$1;]9?@#BS!@P:T`DY]U)Y4Q0BY2ZJ+\O&7N&WOU9IK8OZ]UYG9L
-MR:B`KEP7U_RYH&(M<:\TR25"0)=3DN@@OXP=3DJK,%$E_S?H[2D``"0;_1";^=3D3&
-MPPI`+.C:N+G42^GB9+)^$9*$5/0SHWS3EBD``!P``$`$Z])".'6$0#RI]MQY
-M?'.^W=3D15(A4````<``!`!72-%IVKG+!$1SGMO73LB(;3LJ0?5Q.W1GUU"0"8
-M`0``F`$```(```!%``&4AD@``$`1``#`J`$!P*@!`@'T`?0!@`=3DE%H/C$3%#
-M_@```````````"$@(@@````````!>"(``'@```!T`0$`#`,```$!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``?UR]*-V=3D"?G740%M4BI;`M[:/;$'E/E,"-`3BJD7
-MIP`=3D3P%VQV"LYJ\B$BE'&3&U]T?LH=3DR_S.5VXMLX$8V?[O9,.?Y)^UZ`S`=3DZ
-M2[&Q9R`Y<#-'(0Z$G_. at W))QX!U]6A.)CJ&SPOS?;TV42K+DJ]9>FTOF;NE"
-MTU5VYLD2.8\I```DS'DE@#N%OC4',>=3D$3R+\X_*5SF3.%^Z=3DC(E./R"A5H at I
-M```<``!`!`,*M:U&*B=3D-*XA5F5^'!M#\MCXF````'```0`6A-=3DV]>,2/X($N
-M)G at C[J&Q2#$-,U<3MT:XE at P`F`$``)@!```"````10`!E(9+``!`$0``P*@!
-M`<"H`0(!]`'T`8`'91:#XQ$Q0_X````````````A("((`````````7 at B``!X
-M````=3D`$!``P#```!`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``']<O2C=3DG0GYUU$!
-M;5(J6P+>VCVQ!Y3Y3`C0$XJI%Z<`'4\!=3DL=3D at K.:O(A(I1QDQM?=3D'[*'<O\SE
-M=3DN+;.!&-G^[V3#G^2?M>@,P'>DNQL6<@.7`S1R$.A)_SH-R2<>`=3D?5H3B8ZA
-ML\+\WV]-E$JRY*O67IM+YF[I0M-5=3DN;)$CF/*0``),QY)8`[A;XU!S'G1$\B
-M_./RE<YDSA?NG8R)3C\@H5:(*0``'```0`0#"K6M1BHG32N(59E?AP;0_+8^
-M)@```!P``$`%H37=3DO7C$C^"!+B9X(^ZAL4 at Q#3-8$[=3D&[I4#`)@!``"8`0``
-M`@```$4``92&6@``0!$``,"H`0'`J`$"`?0!]`&`!V46@^,1,4/^````````
-M````(2`B"`````````%X(@``>````'0!`0`,`P```0$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``!_7+THW9T)^=3D=3D1`6U2*EL"WMH]L0>4^4P(T!.*J1>G`!U/`7;'
-M8*SFKR(2*4<9,;7W1^RAW+_,Y7;BVS at 1C9_N]DPY_DG[7H#,!WI+L;%G(#EP
-M,T<A#H2?\Z#<DG'@'7U:$XF.H;/"_-]O391*LN2KUEZ;2^9NZ4+357;FR1(Y
-MCRD``"3,>26`.X6^-0<QYT1/(OSC\I7.9,X7[IV,B4X_(*%6B"D``!P``$`$
-M`PJUK48J)TTKB%697X<&T/RV/B8````<``!`!:$UW;UXQ(_@@2XF>"/NH;%(
-M,0TS61.W1LS!`0"8`0``F`$```(```!%``&4AFH``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DEY2,J$SU-,F4``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,```(!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``0]T"Z=3DUCA-RP$T/,5>8&S.,-
-MIJY=3DQ2=3DQA/WR'4A4TE;9EE"G(*8/!DE6DA#3+?1VS:'S_=3D%>;;X+RCF)=3D?<[
-M/#'0599SP<F721*M*[.25=3DS4Y//^R8?4/N/?U_^R(I4$M*@2RX>8+#`?D</7
-M5 at T:<((D0.FZQ7'XB_W`5 at .1+-$I```D^KR0GWX:]]W^_%K9>\""E`%D\)DB
-MDED=3D#T0H<Q9=3D'DDI```<``!`!,<\=3D!(C>A<C%DE0-UT:`UQV6.`F````'```
-M0`7)3:\8L$WC-)#>F#C-*D8O]E%%QUD3MT9O]00`F`$``)@!```"````10`!
-ME(9L``!`$0``P*@!`<"H`0(!]`'T`8`'9>4C*A,]33)E```````````A("((
-M`````````7 at B``!X````=3D`$!``P#```"`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`$/=3D`NG=3D8X3<L!-#S%7F!LSC#::N7<4G<83]\AU(5-)6V990IR"F#P9)5I(0
-MTRWT=3DLVA\_W17FV^"\HYB77W.SPQT%66<\')ETD2K2NSDE7<U.3S_LF'U#[C
-MW]?_LB*5!+2H$LN'F"PP'Y'#UU8-&G"")$#INL5Q^(O]P%8#D2S1*0``)/J\
-MD)]^&O?=3D_OQ:V7O`@I0!9/"9(I)9'0]$*',671Y)*0``'```0`3'/'02(WH7
-M(Q9)4#=3D=3D&@-<=3DEC@)@```!P``$`%R4VO&+!-XS20WI at XS2I&+_911<=3D9$[=3D&
-M$#<+`)@!``"8`0```@```$4``92&;@``0!$``,"H`0'`J`$"`?0!]`&`!V7E
-M(RH3/4TR90``````````(2`B"`````````%X(@``>````'0!`0`,`P```@$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``!#W0+IW6.$W+`30\Q5Y@;,XPVFKEW%)W&$
-M_?(=3D2%325MF64*<@I@\&25:2$-,M]';-H?/]T5YMO at O*.8EU]SL\,=3D!5EG/!
-MR9=3D)$JTKLY)5W-3D\_[)A]0^X]_7_[(BE02TJ!++AY at L,!^1P]=3D6#1IP at B1`
-MZ;K%<?B+_<!6`Y$LT2D``"3ZO)"??AKWW?[\6ME[P(*4`63PF2*261T/1"AS
-M%ET>22D``!P``$`$QSQT$B-Z%R,625`W71H#7'98X"8````<``!`!<E-KQBP
-M3>,TD-Z8.,TJ1B_V447'6A.W1 at Y$"0"8`0``F`$```(```!%``&4AG,``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DE_:!\\<..#/8``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,```,!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@```X8`P`!_
-M8G3+535?$JI8)-ZB[O3;1CK/_%F<HE,OQE?1SX9K\7-N(!]716MS9&1:34.M
-M3EBA5(P):6-=3D:T9[&GD(_W3F'NY?)4:XK/*YH"POHK0%63=3DBZZ2ODN+7W0A3
-M`.S/Y#[>N=3DIMG at 7QDE;WVZ at X:")HF+G>F55;M7KC_%@I```D at F;L5HYJIQTP
-M&OUP(]_;!]U73*?!ZR(S$!`!GGWA(U at I```<``!`!([KIG`3>]N45`Y#%$[R
-M[@8M=3D5\7````'```0`5<-"&(FB`!45<KK$9;3QU9R9:NIUH3MT;C;PP`F`$`
-M`)@!```"````10`!E(9U``!`$0``P*@!`<"H`0(!]`'T`8`'9?V@?/'#C at SV
-M```````````A("((`````````7 at B``!X````=3D`$!``P#```#`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(```.&`,``?V)TRU4U7Q*J6"3>HN[TVT8ZS_Q9G*)3+\97
-MT<^&:_%S;B`?5T5K<V1D6DU#K4Y8H52,"6EC76M&>QIY"/]TYA[N7R5&N*SR
-MN:`L+Z*T!5DW8NNDKY+BU]T(4P#LS^0^WKG:;9X%\9)6]]NH.&@B:)BYWIE5
-M6[5ZX_Q8*0``)()F[%:.:J<=3D,!K]<"/?VP?=3D5TRGP>LB,Q`0`9Y]X2-8*0``
-M'```0`2.ZZ9P$WO;E%0.0Q1.\NX&+75?%P```!P``$`%7#0AB)H@`5%7*ZQ&
-M6T\=3D6<F6KJ=3D;$[=3D&L&X#`)@!``"8`0```@```$4``92&=3DP``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V7]H'SQPXX,]@``````````(2`B"`````````%X(@``>```
-M`'0!`0`,`P```P$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"```#A@#``']B=3D,M5-5\2
-MJE at DWJ+N]-M&.L_\69RB4R_&5]'/AFOQ<VX@'U=3D%:W-D9%I-0ZU.6*%4C`EI
-M8UUK1GL:>0C_=3D.8>[E\E1KBL\KF at +"^BM`59-V+KI*^2XM?=3D"%,`[,_D/MZY
-MVFV>!?&25O?;J#AH(FB8N=3DZ955NU>N/\6"D``"2"9NQ6CFJG'3`:_7`CW]L'
-MW5=3D,I\'K(C,0$`&>?>$C6"D``!P``$`$CNNF<!-[VY14#D,43O+N!BUU7Q<`
-M```<``!`!5PT(8B:(`%15RNL1EM/'5G)EJZG7!.W1JUX`0"8`0``F`$```(`
-M``!%``&4AGX``$`1``#`J`$!P*@!`@'T`?0!@`=3DEJ`/2`59.>$8`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,```0!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``#`IT9$-EV=3D4;[2<J'!N/QB4&0L#`6YBU:#OP\55$*"'G0^9IX at -&
-MEI7,_"4+XQ06S]34O2GD#F]A""/*>C2V--`=3D,ECM-%#1U]B];S?I?T4'_(L!
-MG^AD;4 at RA62)YI2#;(4E+\@F-^E%)Q^NNSM_D9NCB.D at CD,_!RR5D,)CR7PI
-M```D2J+V)"1$G)CV;HA;;^H'<OICWO7%&G9B"5)2^<3:P1TI```<``!`!"0(
-M:UZ1V+O7H(W)%`+&U[FC$D-#````'```0`5SL3-6BLAII5_T at I#/F"5&4CA4
-MG5P3MT8IIP0`F`$``)@!```"````10`!E(9_``!`$0``P*@!`<"H`0(!]`'T
-M`8`'9:@#T@%63GA&```````````A("((`````````7 at B``!X````=3D`$!``P#
-M```$`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(```P*=3D&1#9=3DG5&^TG*AP;C\8E!D+`
-MP%N8M6@[\/%51"@AYT/F:>(#1I:5S/PE"^,4%L_4U+TIY`YO80 at CRGHTMC30
-M'3)8[310T=3D?8O6\WZ7]%!_R+`9_H9&U(,H5DB>:4 at VR%)2_()C?I12<?KKL[
-M?Y&;HXCI((Y#/P<LE9#"8\E\*0``)$JB]B0D1)R8]FZ(6V_J!W+Z8][UQ1IV
-M8 at E24OG$VL$=3D*0``'```0`0D"&M>D=3DB[UZ"-R10"QM>YHQ)#0P```!P``$`%
-M<[$S5HK(::5?](*0SY at E1E(X5)U<$[=3D&Z>@*`)@!``"8`0```@```$4``92&
-M@```0!$``,"H`0'`J`$"`?0!]`&`!V6H`](!5DYX1@``````````(2`B"```
-M``````%X(@``>````'0!`0`,`P``!`$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"```,
-M"G1D0V79U1OM)RH<&X_&)09"P,!;F+5H._#Q540H(>=3D#YFGB`T:6E<S\)0OC
-M%!;/U-2]*>0.;V$((\IZ-+8TT!TR6.TT4-'7V+UO-^E_10?\BP&?Z&1M2#*%
-M9(GFE(-LA24OR"8WZ44G'ZZ[.W^1FZ.(Z2".0S\'+)60PF/)?"D``"1*HO8D
-M)$2<F/9NB%MOZ@=3DR^F/>]<4:=3DF()4E+YQ-K!'2D``!P``$`$)`AK7I'8N]>@
-MC<D4`L;7N:,20T,````<``!`!7.Q,U:*R&FE7_2"D,^8)492.%2=3D71.W1 at R+
-M"0"8`0``F`$```(```!%``&4B7$``$`1``#`J`$!P*@!`@'T`?0!@`=3DEK"T4
-MS7;=3DAA4``````````"$@(@@````````!>"(``'@```!T`0$`#`,```<!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``BM#<(L1D$7<\IK%$>C--?0X<2K'K5!0,HQ@>
-MKZY?(^D4%$0:OZ:]$2O- at 60^M_@\H0"QN#5/'2AH'Q'Y=3DPD_3$*N),YTOS['
-M)1\A5RGN9GGZB+K(D?\O.$*O6A"%?%4I$7K6E):S<NWS:1!TSWOG>!OTQ8.J
-MMR9E&UIY<@#.SN`I```D<)F.843K,R4,$0>W_=3D&"_`4\BT=3D:D!1#:>J1H>J)
-M]I,I```<``!`!*W[);1S.!_Q(A+5[`%LJCS6/6Q1````'```0`6[$'#<`&:Q
-MGJQ@)L?'2],_</7<C%T3MT:CO0P`F`$``)@!```"````10`!E(IB``!`$0``
-MP*@!`<"H`0(!]`'T`8`'9:PM%,UVW885```````````A("((`````````7 at B
-M``!X````=3D`$!``P#```'`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``(K0W"+$9!%W
-M/*:Q1'HS37T.'$JQZU04#*,8'J^N7R/I%!1$&K^FO1$KS8%D/K?X/*$`L;@U
-M3QTH:!\1^7<)/TQ"KB3.=3D+\^QR4?(5<I[F9Y^HBZR)'_+SA"KUH0A7Q5*1%Z
-MUI26LW+M\VD0=3D,][YW@;],6#JK<F91M:>7(`SL[@*0``)'"9CF%$ZS,E#!$'
-MM_W1 at OP%/(M'6I`40VGJD:'JB?:3*0``'```0`2M^R6T<S@?\2(2U>P!;*H\
-MUCUL40```!P``$`%NQ!PW`!FL9ZL8";'QTO3/W#UW(Q>$[=3D&+[T#`)@!``"8
-M`0```@```$4``921HP``0!$``,"H`0'`J`$"`?0!]`&`!V6L+13-=3DMV&%0``
-M````````(2`B"`````````%X(@``>````'0!`0`,`P``!P$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``"*T-PBQ&01=3DSRFL41Z,TU]#AQ*L>M4%`RC&!ZOKE\CZ104
-M1!J_IKT1*\V!9#ZW^#RA`+&X-4\=3D*&@?$?EW"3],0JXDSG2_/L<E'R%7*>YF
-M>?J(NLB1_R\X0J]:$(5\52D1>M:4EK-R[?-I$'3/>^=3DX&_3%@ZJW)F4;6GER
-M`,[.X"D``"1PF8YA1.LS)0P1![?]T8+\!3R+1UJ0%$-IZI&AZHGVDRD``!P`
-M`$`$K?LEM',X'_$B$M7L`6RJ/-8];%$````<``!`!;L0<-P`9K&>K&`FQ\=3D+
-MTS]P]=3DR,7Q.W1F_)`0"8`0``F`$```(```!%``&4JID``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE`+H:G<..AHX``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,```@!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``0`;_8)'"''MH1$\U;7?_
-M992'90DN4#7KPLO1J<H'+-O_)<^]/#B=3DW0,'@%[:U?L`"W!7/N']Q<*US>`$
-M*R%1D<57\$')+"D3"GN+1!R/-63D+)^$!=3D@):X at 7/#G#UT\"T47U-TU&7V7$
-M?G/WCZ$*(FE\Z#&R at GO.P(W++0KX.\DI```D&-5F6N)"?WY$0S2S)&C[%D>!
-MI;P9&0P()'>_'.U!'6,I```<``!`!"HWIL_<89X(G(EW\R'57=3D_`)?L:````
-M'```0`4-DBB=3D<P`9%@-]>QY><P2*P#2$<%\3MT:J]00`F`$``)@!```"````
-M10`!E*J=3D``!`$0``P*@!`<"H`0(!]`'T`8`'90"Z&IW#CH:.```````````A
-M("((`````````7 at B``!X````=3D`$!``P#```(`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``$`&_V"1PAQ[:$1/-6UW_V64AV4)+E`UZ\++T:G*!RS;_R7/O3PXG=3DT#
-M!X!>VM7[``MP5S[A_<7"M<W@!"LA49'%5_!!R2PI$PI[BT0<CS5DY"R?A`78
-M"6N(%SPYP]=3D/`M%%]3=3D-1E]EQ'YS]X^A"B)I?. at QLH)[SL"-RRT*^#O)*0``
-M)!C59EKB0G]^1$,TLR1H^Q9'@:6\&1D,""1WOQSM01UC*0``'```0`0J-Z;/
-MW&&>")R)=3D_,AU5W?P"7[&@```!P``$`%#9(HG7,`&18#?7L>7G,$BL`TA'!?
-M$[=3D&W38+`)@!``"8`0```@```$4``92JH@``0!$``,"H`0'`J`$"`?0!]`&`
-M!V4`NAJ=3DPXZ&C@``````````(2`B"`````````%X(@``>````'0!`0`,`P``
-M"`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``!`!O]@D<(<>VA$3S5M=3D_]EE(=3DE"2Y0
-M->O"R]&IR@<LV_\ES[T\.)W=3D`P>`7MK5^P`+<%<^X?W%PK7-X`0K(5&1Q5?P
-M0<DL*1,*>XM$'(\U9.0LGX0%V`EKB!<\.</73P+11?4W349?9<1^<_>/H0HB
-M:7SH,;*">\[`C<LM"O@[R2D``"08U69:XD)_?D1#-+,D:/L61X&EO!D9#`@D
-M=3D[\<[4$=3D8RD``!P``$`$*C>FS]QAG at B<B7?S(=3D5=3DW\`E^QH````<``!`!0V2
-M*)US`!D6`WU['EYS!(K`-(1P8!.W1OQ$"0"8`0``F`$```(```!%``&4JJX`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DEG"6R'B_>%.@``````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`,```D!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``/>Q$
-MSBYX_$$I!6F1^331779LV)FTN3)C#WN.G9=3D5<.>#0;4H`&%T!A#MWW'?9A^:
-M=3D*`V5%12?`X=3D3V@^QY3%F^WM2Q`UO\BVDGFL?Y\WAFHEB&W.#R@&U=3D?I:"#Z
-M[!?HMGHMGSC[K+^9(8-#V;SHTMU"_G1:A.Q'#K>K)_L,,C$I```D:U1%\?;;
-M/?#.5%'3S6=3DUJ^Y"T4<&#?;3MGQD'1N*/1\I```<``!`!(BF5D($-<#MC_`E
-M.'#WGA.BGM]T````'```0`4C*E5DV([N:N;GI;7(M&1E;7NQP&`3MT9(;PP`
-MF`$``)@!```"````10`!E*JR``!`$0``P*@!`<"H`0(!]`'T`8`'99PELAXO
-MWA3H```````````A("((`````````7 at B``!X````=3D`$!``P#```)`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``#WL1,XN>/Q!*05ID?DTT5UV;-B9M+DR8P][CIV7
-M57#G at T&U*`!A=3D`80[=3D]QWV8?FG2 at -E144GP.'4]H/L>4Q9OM[4L0-;_(MI)Y
-MK'^?-X9J)8AMS@\H!M77Z6@@^NP7Z+9Z+9\X^ZR_F2&#0]F\Z-+=3D0OYT6H3L
-M1PZWJR?[##(Q*0``)&M41?'VVSWPSE11T\UG=3D:ON0M%'!@WVT[9\9!T;BCT?
-M*0``'```0`2(IE9"!#7`[8_P)3AP]YX3HI[?=3D````!P``$`%(RI59-B.[FKF
-MYZ6UR+1D96U[L<!A$[=3D&N&X#`)@!``"8`0```@```$4``92JR@``0!$``,"H
-M`0'`J`$"`?0!]`&`!V6<);(>+]X4Z```````````(2`B"`````````%X(@``
-M>````'0!`0`,`P``"0$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"```][$3.+GC\02D%
-M:9'Y--%=3D=3DFS8F;2Y,F,/>XZ=3DEU5PYX-!M2@`870&$.W?<=3D]F'YITH#945%)\
-M#AU/:#['E,6;[>U+$#6_R+:2>:Q_GS>&:B6(;<X/*`;5U^EH(/KL%^BV>BV?
-M./NLOYDA at T/9O.C2W4+^=3D%J$[$<.MZLG^PPR,2D``"1K5$7Q]ML]\,Y44=3D/-
-M9W6K[D+11P8-]M.V?&0=3D&XH]'RD``!P``$`$B*960 at 0UP.V/\"4X</>>$Z*>
-MWW0````<``!`!2,J5638CNYJYN>EM<BT9&5M>['`8A.W1H%Y`0"8`0``F`$`
-M``(```!%``&4K-D``$`1``#`J`$!P*@!`@'T`?0!@`=3DE0!K:5/C:O'\`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`,```,!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``S\-4&(J1ZOAP at M[YGEMB`E(H\;05)WW+TCOG"8]8L6+.P:2B
-MYSSI/."CF5?`H0K5)Q!8M?@HOAMC%&^KX$TB?)];<I6":1R/JNC:\2;UNL](
-MUG%9-',BG%<.H`[GM%;@P32K%M-[4PZ(&;*8'I)B4I>*)\*"V+]\.*@3SE(M
-M;%8I```D.E9SG'1A^RJ`U1&$!1SCLR+?":P(+O4#`#FWIL.$:#HI```<``!`
-M!-L[/[7MS;AL[R)<Q,-4(1)3`B1Q````'```0`7H[C25>%_Z]4;(B4PLR9O3
-M_86F[F(3MT:HIP0`F`$``)@!```"````10`!E*T:``!`$0``P*@!`<"H`0(!
-M]`'T`8`'94`:VE3XVKQ_```````````A("((`````````7 at B``!X````=3D`$!
-M``P#```#`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``,_#5!B*D>KX<(+>^9Y;8@)2
-M*/&T%2=3D]R]([YPF/6+%BSL&DHN<\Z3S at HYE7P*$*U2<06+7X*+X;8Q1OJ^!-
-M(GR?6W*5 at FD<CZKHVO$F];K/2-9Q631S(IQ7#J`.Y[16X,$TJQ;3>U,.B!FR
-MF!Z28E*7BB?"@MB_?#BH$\Y2+6Q6*0``)#I6<YQT8?LJ at -41A`4<X[,BWPFL
-M""[U`P`YMZ;#A&@Z*0``'```0`3;.S^U[<VX;.\B7,3#5"$24P(D<0```!P`
-M`$`%Z.XTE7A?^O5&R(E,+,F;T_V%INYB$[=3D&R>@*`)@!``"8`0```@```$4`
-M`92NE```0!$``,"H`0'`J`$"`?0!]`&`!V5`&MI4^-J\?P``````````(2`B
-M"`````````%X(@``>````'0!`0`,`P```P$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#/PU08BI'J^'""WOF>6V("4BCQM!4G?<O2.^<)CUBQ8L[!I*+G/.D\X*.9
-M5\"A"M4G$%BU^"B^&V,4;ZO at 32)\GUMRE8)I'(^JZ-KQ)O6ZSTC6<5DT<R*<
-M5PZ@#N>T5N#!-*L6TWM3#H at 9LI@>DF)2EXHGPH+8OWPXJ!/.4BUL5BD``"0Z
-M5G.<=3D&'[*H#5$80%'..S(M\)K`@N]0,`.;>FPX1H.BD``!P``$`$VSL_M>W-
-MN&SO(ES$PU0A$E,")'$````<``!`!>CN-)5X7_KU1LB)3"S)F]/]A:;N8Q.W
-M1EOV"`"8`0``F`$```(```!%``&4L%(``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-M0_8=3DV at SQU?8``````````"$@(@@````````!>"(``'@```!T`0$`#`,```0!
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``(B_RI5=3D@&TS]HZV!V7EB&O"7+KM]097F
-M&`(_2E^_*`(_SW:%%Q!`?ULF1FB#(66%9#6.X4[KW'UQKTBPYZXK^`?N85N&
-MN=3D^G7>'(TCWBM8'?`5$-.A<OOML0*WIIBT&83D-`R*Z[JBO>Y6"=3DZ^W>L;![
-M^OSH"]M1)E'%%N%,J#\I```D3QR5L1#]&\:V>ZW])].]<Z;=3DZN?4CT[5L)DG
-MZ1MYJ5DI```<``!`!/;JWIO?;N],4K(*K*C"I)3G7#[$````'```0`4U#*\`
-M?()X09<6?CJ'^\YMY(!(N6,3MT84(0P`F`$``)@!```"````10`!E+!6``!`
-M$0``P*@!`<"H`0(!]`'T`8`'94/V'=3DH,\=3D7V```````````A("((````````
-M`7 at B``!X````=3D`$!``P#```$`0``#(`.`(`#```,`0``#(`.`0`#```,`0``
-M#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"
-M`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``"(O\J57
-M8!M,_:.M@=3DEY8AKPERZ[?4&5YA@"/TI?OR@"/\]VA1<00'];)D9H at R%EA60U
-MCN%.Z]Q]<:](L.>N*_@'[F%;AKG?IUWAR-(]XK6!WP%1#3H7+[[;$"MZ:8M!
-MF$Y#0,BNNZHKWN5 at G>OMWK&P>_K\Z`O;4291Q1;A3*@_*0``)$\<E;$0_1O&
-MMGNM_2?3O7.FW>KGU(].U;"9)^D;>:E9*0``'```0`3VZMZ;WV[O3%*R"JRH
-MPJ24YUP^Q````!P``$`%-0RO`'R">$&7%GXZA_O.;>2`2+ED$[=3D&9B`#`)@!
-M``"8`0```@```$4``92P70``0!$``,"H`0'`J`$"`?0!]`&`!V5#]AW:#/'5
-M]@``````````(2`B"`````````%X(@``>````'0!`0`,`P``!`$```R`#@"`
-M`P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"
-M```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@``
-M``@$```.*```B``"```B+_*E5V`;3/VCK8'9>6(:\)<NNWU!E>88`C]*7[\H
-M`C_/=3DH47$$!_6R9&:(,A985D-8[A3NO<?7&O2+#GKBOX!^YA6X:YWZ=3D=3DX<C2
-M/>*U@=3D\!40TZ%R^^VQ`K>FF+09A.0T#(KKNJ*][E8)WK[=3DZQL'OZ_. at +VU$F
-M4<46X4RH/RD``"1/')6Q$/T;QK9[K?TGT[USIMWJY]2/3M6PF2?I&WFI62D`
-M`!P``$`$]NK>F]]N[TQ2L at JLJ,*DE.=3D</L0````<``!`!34,KP!\@GA!EQ9^
-M.H?[SFWD@$BY91.W1F=3D9`0"8`0``F`$```(```!%``&4L,8``$`1``#`J`$!
-MP*@!`@'T`?0!@`=3DE\CHS>"F%!#\``````````"$@(@@````````!>"(``'@`
-M``!T`0$`#`,```4!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,`
-M``@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P``
-M`0,```@#```%`P``"`0```(````(!```#B@``(@``@``8V[=3D/WI3F,&WHKMT
-M&CAE24_0^\>>)8.%>G&`KK<HHN]4:MDN?`H#`L;J2'.^TE,KY3:%71Z#_<`'
-M6&DE1<2>U_J/6-FZ#D2?T5""2%T1PD882KVMV9[-KE),B9)D2-GP^MZK7_>Z
-M_B))]D67TPW3Q/NU3(6<7S1N%-?CBS(2_"LI```D,(V'"6B6$#!W1-#F)W>P
-M!6[>Q?I8#8MA`_([UJ5#G0<I```<``!`!"^KE0^RQ&H at W@:I9W"TKY8.]T`/
-M````'```0`4\"Y=3DA59><;NY(X\E4*1O(S0P&MV43MT;*?P0`F`$``)@!```"
-M````10`!E+#-``!`$0``P*@!`<"H`0(!]`'T`8`'9?(Z,W at IA00_````````
-M```A("((`````````7 at B``!X````=3D`$!``P#```%`0``#(`.`(`#```,`0``
-M#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(
-M`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH
-M``"(``(``&-NW3]Z4YC!MZ*[=3D!HX94E/T/O'GB6#A7IQ@*ZW**+O5&K9+GP*
-M`P+&ZDASOM)3*^4VA5T>@_W`!UAI)47$GM?ZCUC9N at Y$G]%0 at DA=3D$<)&&$J]
-MK=3DF>S:Y23(F29$C9\/K>JU_WNOXB2?9%E],-T\3[M4R%G%\T;A37XXLR$OPK
-M*0``)#"-APEHEA`P=3DT30YB=3DWL`5NWL7Z6`V+80/R.]:E0YT'*0``'```0`0O
-MJY4/LL1J(-X&J6=3DPM*^6#O=3D`#P```!P``$`%/`N78567G&[N2./)5"D;R,T,
-M!K=3DE$[=3D&I,$*`)@!``"8`0```@```$4``92Q$```0!$``,"H`0'`J`$"`?0!
-M]`&`!V7R.C-X*84$/P``````````(2`B"`````````%X(@``>````'0!`0`,
-M`P``!0$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#
-M```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,`
-M``4#```(!````@````@$```.*```B``"``!C;MT_>E.8P;>BNW0:.&5)3]#[
-MQYXE at X5Z<8"NMRBB[U1JV2Y\"@,"QNI(<[[24ROE-H5=3D'H/]P`=3D8:25%Q)[7
-M^H]8V;H.1)_14()(71'"1AA*O:W9GLVN4DR)DF1(V?#ZWJM?][K^(DGV19?3
-M#=3D/$^[5,A9Q?-&X4U^.+,A+\*RD``"0PC8<):)80,'=3D$T.8G=3D[`%;M[%^E at -
-MBV$#\CO6I4.=3D!RD``!P``$`$+ZN5#[+$:B#>!JEG<+2OE@[W0`\````<``!`
-M!3P+EV%5EYQN[DCCR50I&\C-#`:W9A.W1NK-"`"8`0``F`$```(```!%``&4
-ML2(``$`1``#`J`$!P*@!`@'T`?0!@`=3DEDQ(VQ]9Q-P0``````````"$@(@@`
-M```````!>"(``'@```!T`0$`#`,```@!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M4B$F2Y\S`JT,4CXGBOVMS@%4MW('PBQ.D'_J`,B6S^!8M=3D%=3D%%PZY)D`8:_%
-MK1\/5K1PX7O'X at +#*Z:H#-#-]-4Y[)[U>;@FWJ=3D2P]@%4 at 8,\\##L:%$CR#A
-M",97#0^`-\/E;^5_9)S.<^0D.7AM]H-5$/)HRZ8^QY"TV(>FO$@I```D0\@0
-M<A\]@V-U\A5A><C#H3,`&,V^"8BIQ'J_R),&8)`I```<``!`!+&EFQ,!-P7F
-M.V34NBX,![=3D)U;AY````'```0`42JEY/9#&E&;K,"H;9I=3D"64D//"&83MT;\
-M^0L`F`$``)@!```"````10`!E+$D``!`$0``P*@!`<"H`0(!]`'T`8`'99,2
-M-L?6<3<$```````````A("((`````````7 at B``!X````=3D`$!``P#```(`0``
-M#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"
-M`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$
-M```"````"`0```XH``"(``(``%(A)DN?,P*M#%(^)XK]K<X!5+=3DR!\(L3I!_
-MZ@#(EL_ at 6+71711<.N29`&&OQ:T?#U:T<.%[Q^("PRNFJ`S0S?35.>R>]7FX
-M)MZG4L/8!5(&#//`P[&A1(\@X0C&5PT/@#?#Y6_E?V2<SG/D)#EX;?:#51#R
-M:,NF/L>0M-B'IKQ(*0``)$/($'(?/8-C=3D?(587G(PZ$S`!C-O at F(J<1ZO\B3
-M!F"0*0``'```0`2QI9L3`3<%YCMDU+HN#`>W2=3D6X>0```!P``$`%$JI>3V0Q
-MI1FZS`J&V:70EE)#SPAG$[=3D&5?D"`)@!``"8`0```@```$4``92Q*P``0!$`
-M`,"H`0'`J`$"`?0!]`&`!V63$C;'UG$W!```````````(2`B"`````````%X
-M(@``>````'0!`0`,`P``"`$```R`#@"``P``#`$```R`#@$``P``#`$```R`
-M#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,`
-M``@#```!`P``"`,```4#```(!````@````@$```.*```B``"``!2(29+GS,"
-MK0Q2/B>*_:W.`52W<@?"+$Z0?^H`R);/X%BUT5T47#KDF0!AK\6M'P]6M'#A
-M>\?B`L,KIJ@,T,WTU3GLGO5YN";>IU+#V`52!@SSP,.QH42/(.$(QE<-#X`W
-MP^5OY7]DG,YSY"0Y>&WV at U40\FC+IC['D+38AZ:\2"D``"1#R!!R'SV#8W7R
-M%6%YR,.A,P`8S;X)B*G$>K_(DP9 at D"D``!P``$`$L:6;$P$W!>8[9-2Z+ at P'
-MMTG5N'D````<``!`!1*J7D]D,:49NLP*AMFET)920\\(:!.W1OL%`0"8`0``
-MF`$```(```!%``&4L3\``$`1``#`J`$!P*@!`@'T`?0!@`=3DE3"JBXRW!NF,`
-M`````````"$@(@@````````!>"(``'@```!T`0$`#`,```D!```,@`X`@`,`
-M``P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@``
-M`0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(
-M!```#B@``(@``@``$P"^',.<.6]#%/NLG$R<3JQ:!78!3*=3D+MCY6B*%0:9#$
-M%5M.7'8'QY+LZ.!"K&A`SZD!XNGH!#BG%:`SV!!;?=3D/!)$&J=3D=3DF7!.9T/M,H
-M+1+8`GANE4F[22#R&0GR0/;;'6=3D at +6M/VAMS_O1VSNNU^^+/8]RN7[Y/(.52
-MKRS"/UHI```DOPN;K8NDMI#,O06U7!YW1Z-,K$3OIMO5%6<&GG\7O^(I```<
-M``!`!#I)).Y1BR+EWE/H;*R^<SE+HR;5````'```0`4&)R6>\+A<O0DR,9J-
-M+\AJ*;?Y+&@3MT:M,00`F`$``)@!```"````10`!E+%!``!`$0``P*@!`<"H
-M`0(!]`'T`8`'94PJHN,MP;IC```````````A("((`````````7 at B``!X````
-M=3D`$!``P#```)`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(
-M`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#
-M```(`P``!0,```@$```"````"`0```XH``"(``(``!,`OAS#G#EO0Q3[K)Q,
-MG$ZL6 at 5V`4RG2[8^5HBA4&F0Q!5;3EQV!\>2[.C at 0JQH0,^I`>+IZ`0XIQ6@
-M,]@06WW3P21!JG79EP3F=3D#[3*"T2V`)X;I5)NTD@\AD)\D#VVQUG8"UK3]H;
-M<_[T=3DL[KM?OBSV/<KE^^3R#E4J\LPC]:*0``)+\+FZV+I+:0S+T%M5P>=3DT>C
-M3*Q$[Z;;U15G!IY_%[_B*0``'```0`0Z223N48LBY=3DY3Z&RLOG,Y2Z,FU0``
-M`!P``$`%!B<EGO"X7+T),C&:C2_(:BFW^2QH$[=3D&0G,*`)@!``"8`0```@``
-M`$4``92Q0@``0!$``,"H`0'`J`$"`?0!]`&`!V5,*J+C+<&Z8P``````````
-M(2`B"`````````%X(@``>````'0!`0`,`P``"0$```R`#@"``P``#`$```R`
-M#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(`
-M``0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```
-MB``"```3`+X<PYPY;T,4^ZR<3)Q.K%H%=3D@%,ITNV/E:(H5!ID,056TY<=3D@?'
-MDNSHX$*L:$#/J0'BZ>@$.*<5H#/8$%M]T\$D0:IUV9<$YG0^TR at M$M@">&Z5
-M2;M)(/(9"?)`]ML=3D9V`M:T_:&W/^]';.Z[7[XL]CW*Y?OD\@Y5*O+,(_6BD`
-M`"2_"YNMBZ2VD,R]!;5<'G=3D'HTRL1.^FV]459P:>?Q>_XBD``!P``$`$.DDD
-M[E&+(N7>4^ALK+YS.4NC)M4````<``!`!08G)9[PN%R]"3(QFHTOR&HIM_DL
-M:1.W1BB`"`"8`0``F`$```(```!%``&4L4P``$`1``#`J`$!P*@!`@'T`?0!
-M@`=3DEQ>[;H at D"`#L``````````"$@(@@````````!>"(``'@```!T`0$`#`,`
-M``H!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``
-M"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%
-M`P``"`0```(````(!```#B@``(@``@```&7L[6NKM]:.CSM4'+K>7_T,P>9H
-M5/%`2;N'2S!R(/L0Q$%C"&1@,LK(WB7 at +V9#">_I\,4?OK+X,L[3]IZ$FQ)*
-M0J$=3DG\W[`L3#@;N-1?6$E>8]@:5 at B_-MCFU&$4@&X'U1VT+A=3DN!`]6S*JI\[
-MLG"S:+IN9MRU^WOQ.+<X+JTI```D%G4;_)(Y'[GU+G>R]/!RD80?54+X]=3DJ$
-M<!9*75V9J$TI```<``!`!$$I_*T2H6,Y:`D3N_CG4DL([S34````'```0`6W
-MC*N.2@'T`F\C$(3MA8W%KX6EZ&D3MT:]JPL`F`$``)@!```"````10`!E+%/
-M``!`$0``P*@!`<"H`0(!]`'T`8`'9<7NVZ()`@`[```````````A("((````
-M`````7 at B``!X````=3D`$!``P#```*`0``#(`.`(`#```,`0``#(`.`0`#```,
-M`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#
-M```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(```!E
-M[.UKJ[?6CH\[5!RZWE_]#,'F:%3Q0$F[ATLP<B#[$,1!8PAD8#+*R-XEX"]F
-M0PGOZ?#%'[ZR^#+.T_:>A)L22D*A'9_-^P+$PX&[C47UA)7F/8&E8(OS;8YM
-M1A%(!N!]4=3DM"X7;@0/5LRJJ?.[)PLVBZ;F;<M?M[\3BW."ZM*0``)!9U&_R2
-M.1^Y]2YWLO3P<I&$'U5"^/7:A'`62EU=3DF:A-*0``'```0`1!*?RM$J%C.6@)
-M$[OXYU)+".\TU````!P``$`%MXRKCDH!]`)O(Q"$[86-Q:^%I>AJ$[=3D&$*L"
-M`)@!``"8`0```@```$4``92Q50``0!$``,"H`0'`J`$"`?0!]`&`!V7%[MNB
-M"0(`.P``````````(2`B"`````````%X(@``>````'0!`0`,`P``"@$```R`
-M#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,`
-M``@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!```
-M`@````@$```.*```B``"````9>SM:ZNWUHZ/.U0<NMY?_0S!YFA4\4!)NX=3D+
-M,'(@^Q#$06,(9&`RRLC>)>`O9D,)[^GPQ1^^LO at RSM/VGH2;$DI"H1V?S?L"
-MQ,.!NXU%]825YCV!I6"+\VV.;4812`;@?5';0N%VX$#U;,JJGSNR<+-HNFYF
-MW+7[>_$XMS at NK2D``"06=3D1O\DCD?N?4N=3D[+T\'*1A!]50OCUVH1P%DI=3D79FH
-M32D``!P``$`$02G\K1*A8SEH"1.[^.=3D22PCO--0````<``!`!;>,JXY*`?0"
-M;R,0A.V%C<6OA:7H:Q.W1LRY``"8`0``F`$```(```!%``&4L6,``$`1``#`
-MJ`$!P*@!`@'T`?0!@`=3DEM,2KG3,'$9P``````````"$@(@@````````!>"(`
-M`'@```!T`0$`#`,```L!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`
-MP`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(
-M`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``X?N0J'<I7&ZP
-M/;E71/+\4A4?(R+\/3:TIF!5L]I3&"A0_X#W8D.FU]3?M_@;3LITTQZ34&3O
-MXE0.>T$D:X^(P9]IABO7GUSMT13<26^PM2U.`G6+B#8&U=3D(93H^LL)>-,BA.
-M4%^80I>(3-/SPEM7NMOB2N at D0DP=3D>O")W!B*ZY$I```D0V(L+7'/H`/L)FL?
-MH(NI6`/G_##+UGQ?DD6Z!+S]<_8I```<``!`!!8#++-EA$\61>1PDLU4@/#O
-M.9ZG````'```0`4$DR6>K+G9?R0,Q;6/M5H[.-@<_VL3MT:)XP,`F`$``)@!
-M```"````10`!E+%G``!`$0``P*@!`<"H`0(!]`'T`8`'9;3$JYTS!Q&<````
-M```````A("((`````````7 at B``!X````=3D`$!``P#```+`0``#(`.`(`#```,
-M`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#
-M```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0`
-M``XH``"(``(``.'[D*AW*5QNL#VY5T3R_%(5'R,B_#TVM*9 at 5;/:4Q at H4/^`
-M]V)#IM?4W[?X&T[*=3D-,>DU!D[^)4#GM!)&N/B,&?:88KUY]<[=3D$4W$EOL+4M
-M3@)UBX at V!M72&4Z/K+"7C3(H3E!?F$*7B$S3\\);5[K;XDKH)$),'7KPB=3DP8
-MBNN1*0``)$-B+"UQSZ`#["9K'Z"+J5@#Y_PPR]9\7Y)%N at 2\_7/V*0``'```
-M0`06`RRS981/%D7D<)+-5(#P[SF>IP```!P``$`%!),EGJRYV7\D#,6UC[5:
-M.SC8'/]K$[=3D&'B4*`)@!``"8`0```@```$4``92Q;0``0!$``,"H`0'`J`$"
-M`?0!]`&`!V6TQ*N=3D,P<1G```````````(2`B"`````````%X(@``>````'0!
-M`0`,`P``"P$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$`
-M``,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``
-M"`,```4#```(!````@````@$```.*```B``"``#A^Y"H=3DRE<;K`]N5=3D$\OQ2
-M%1\C(OP]-K2F8%6SVE,8*%#_@/=3DB0Z;7U-^W^!M.RG33'I-09._B5`Y[021K
-MCXC!GVF&*]>?7.W1%-Q);["U+4X"=3D8N(-@;5TAE.CZRPEXTR*$Y07YA"EXA,
-MT_/"6U>ZV^)*Z"1"3!UZ\(G<&(KKD2D``"1#8BPM<<^@`^PF:Q^@BZE8`^?\
-M,,O6?%^21;H$O/US]BD``!P``$`$%@,LLV6$3Q9%Y'"2S52`\.\YGJ<````<
-M``!`!023)9ZLN=3DE_)`S%M8^U6CLXV!S_;!.W1N(N"`"8`0``F`$```(```!%
-M``&4L7$``$`1``#`J`$!P*@!`@'T`?0!@`=3DE48]G_\X]S+X``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,```T!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``SQ8>6E,O3JUI-8!*8USKZ9EP4(GE."&#:?5?G&!J at FN,:W,>`L0Y8S)&
-MB(ROF*+D?4&I:!D@[1_8G@',_+JIGZGL=3DR$1M$AK at Z=3D+KS66WW7_HTG_B5E=3D
-M+*3&#P+8MR`Q$5!QEI0&XEZP*PCE$HP$C3L8-:L;U#-OZF0Z)B]&$*XI```D
-M&@>^GGZ)$#A]5%FNEMBP^W\*Q8+UD[[3S3\"^+M+7,`I```<``!`!/;3/'"&
-M3Q0W8W=3DZ$E$P+U:Q:'BY````'```0`7RU'[CH5YUX/A$`[G0\*<]TG&=3DAVP3
-MMT:"70L`F`$``)@!```"````10`!E+%S``!`$0``P*@!`<"H`0(!]`'T`8`'
-M95&/9__./<R^```````````A("((`````````7 at B``!X````=3D`$!``P#```-
-M`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"
-M```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,`
-M``@$```"````"`0```XH``"(``(``,\6'EI3+TZM:36`2F-<Z^F9<%")Y3 at A
-M at VGU7YQ@:H)KC&MS'@+$.6,R1HB,KYBBY'U!J6 at 9(.T?V)X!S/RZJ9^I['<A
-M$;1(:X.G2Z\UEM]U_Z-)_XE972RDQ@\"V+<@,1%0<9:4!N)>L"L(Y1*,!(T[
-M&#6K&]0S;^ID.B8O1A"N*0``)!H'OIY^B1`X?519KI;8L/M_"L6"]9.^T\T_
-M`OB[2US`*0``'```0`3VTSQPAD\4-V-W>A)1,"]6L6AXN0```!P``$`%\M1^
-MXZ%>=3D>#X1`.YT/"G/=3D)QG8=3DM$[=3D&UUP"`)@!``"8`0```@```$4``92Q>```
-M0!$``,"H`0'`J`$"`?0!]`&`!V51CV?_SCW,O@``````````(2`B"```````
-M``%X(@``>````'0!`0`,`P``#0$```R`#@"``P``#`$```R`#@$``P``#`$`
-M``R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P``
-M`@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"``#/%AY:
-M4R].K6DU@$IC7.OIF7!0B>4X(8-I]5^<8&J":XQK<QX"Q#EC,D:(C*^8HN1]
-M0:EH&2#M']B>`<S\NJF?J>QW(1&T2&N#ITNO-9;?=3D?^C2?^)65TLI,8/`MBW
-M(#$14'&6E`;B7K`K".42C`2-.Q at UJQO4,V_J9#HF+T80KBD``"0:![Z>?HD0
-M.'U46:Z6V+#[?PK%@O63OM/-/P+XNTM<P"D``!P``$`$]M,\<(9/%#=3DC=3DWH2
-M43`O5K%H>+D````<``!`!?+4?N.A7G7@^$0#N=3D#PISW2<9V';A.W1B'2``"8
-M`0``F`$```(```!%``&4M3\``$`1``#`J`$!P*@!`@'T`?0!@`=3DE,(1P?:=3DJ
-M&,<``````````"$@(@@````````!>"(``'@```!T`0$`#`,```X!```,@`X`
-M@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(
-M`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(`
-M```(!```#B@``(@``@``T27%!ZD`F;M]6H*2E<M8]7BT$[^H88'^M_#<R!H7
-ML;`#1&T=3D%L:[=3DU$0\#YGA-.PPM^>1QK<?7T293!;:<`C.R<#,85N[O#C5QNZ
-M&@$Z?SA(&Q%6.;.$0H,]!:G4%:[C%U?S`)U!&[-66Z;A=3D$'BC.0A^'R\_%T8
-MQW?(W-^'2]PI```DVPO"/9:NA\V[%B7!XU'QXH-7LL at N2/B#'ON%A?I<^$0I
-M```<``!`!'#?M+&@!E:(##LUZXU.\#&N?@_T````'```0`60\?->CWC7["]K
-M:R";!&S0$C^J+VX3MT;(^`,`F`$``)@!```"````10`!E+5M``!`$0``P*@!
-M`<"H`0(!]`'T`8`'93"$<'VG:AC'```````````A("((`````````7 at B``!X
-M````=3D`$!``P#```.`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#
-M```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,`
-M``$#```(`P``!0,```@$```"````"`0```XH``"(``(``-$EQ0>I`)F[?5J"
-MDI7+6/5XM!._J&&!_K?PW,@:%[&P`T1M'1;&NW=3D1$/`^9X33L,+?GD<:W'U]
-M$F4P6VG`(SLG`S&%;N[PXU<;NAH!.G\X2!L15CFSA$*#/06IU!6NXQ=3D7\P"=3D
-M01NS5ENFX71!XHSD(?A\O/Q=3D&,=3DWR-S?ATO<*0``)-L+PCV6KH?-NQ8EP>-1
-M\>*#5[+(+DCX at Q[[A87Z7/A$*0``'```0`1PW[2QH`96B`P[->N-3O`QKGX/
-M]````!P``$`%D/'S7H]XU^PO:VL at FP1LT!(_JB]N$[=3D&B"4*`)@!``"8`0``
-M`@```$4``92XB@``0!$``,"H`0'`J`$"`?0!]`&`!V4PA'!]IVH8QP``````
-M````(2`B"`````````%X(@``>````'0!`0`,`P``#@$```R`#@"``P``#`$`
-M``R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``
-M"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.
-M*```B``"``#1)<4'J0"9NWU:@I*5RUCU>+03OZAA@?ZW\-S(&A>QL`-$;1T6
-MQKMW41#P/F>$T[#"WYY'&MQ]?1)E,%MIP",[)P,QA6[N\.-7&[H:`3I_.$@;
-M$58YLX1"@ST%J=3D05KN,75_,`G4$;LU9;IN%T0>*,Y"'X?+S\71C'=3D\C<WX=3D+
-MW"D``"3;"\(]EJZ'S;L6)<'C4?'B at U>RR"Y(^(,>^X6%^ESX1"D``!P``$`$
-M<-^TL:`&5H@,.S7KC4[P,:Y^#_0````<``!`!9#Q\UZ/>-?L+VMK()L$;-`2
-M/ZHO;Q.W1L4Q"`"8`0``F`$```(```!%``&4N)8``$`1``#`J`$!P*@!`@'T
-M`?0!@`=3DE'#K_ at GI><T,``````````"$@(@@````````!>"(``'@```!T`0$`
-M#`,```\!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``P4B-V;A6[-AR]D?3158(BO3@
-M>CLTMVRR"ZQ5"P8QQC!Q!M"[\=3D.L2>]OJ:&'^Q8FY)N.!/60-^'D7C#9\;O8
-M_+GF[8\RY*'?1/5Z:$GS7D+;H`7":P'9->MA^22=3DL62Y=3D'PPW]>Q40X)2K8I
-M+G9Z')&FQ%W_)[HS8L'VY@%_$"LI```D%H7<#,V;%LT=3D.K^I?11@`C+F8)ZD
-M887P-&%2I0?EL[PI```<``!`!![=3DT+!0`I-U\FL72YW)2+=3DGXLZ%````'```
-M0`5FV2:&_'VDB*8LH..=3D4L;5E`UW?V\3MT:170L`F`$``)@!```"````10`!
-ME+B7``!`$0``P*@!`<"H`0(!]`'T`8`'91PZ_X)Z7G-#```````````A("((
-M`````````7 at B``!X````=3D`$!``P#```/`0``#(`.`(`#```,`0``#(`.`0`#
-M```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,`
-M``@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(`
-M`,%(C=3DFX5NS8<O9'TT56"(KTX'H[-+=3DLL at NL50L&,<8P<0;0N_'3K$GO;ZFA
-MA_L6)N2;C at 3UD#?AY%XPV?&[V/RYYNV/,N2AWT3U>FA)\UY"VZ`%PFL!V37K
-M8?DDG;%DN71\,-_7L5$."4JV*2YV>AR1IL1=3D_R>Z,V+!]N8!?Q`K*0``)!:%
-MW`S-FQ;-'3J_J7T48`(RYF">I&&%\#1A4J4'Y;.\*0``'```0`0>W=3D"P4`*3
-M=3D?)K%TN=3DR4BW9^+.A0```!P``$`%9MDFAOQ]I(BF+*#CG5+&U90-=3DW]P$[=3D&
-MKUP"`)@!``"8`0```@```$4``92XG0``0!$``,"H`0'`J`$"`?0!]`&`!V4<
-M.O^">EYS0P``````````(2`B"`````````%X(@``>````'0!`0`,`P``#P$`
-M``R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@``
-M`@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(
-M!````@````@$```.*```B``"``#!2(W9N%;LV'+V1]-%5 at B*].!Z.S2W;+(+
-MK%4+!C'&,'$&T+OQTZQ)[V^IH8?[%B;DFXX$]9`WX>1>,-GQN]C\N>;MCS+D
-MH=3D]$]7IH2?->0MN@!<)K`=3DDUZV'Y))VQ9+ET?##?U[%1#@E*MBDN=3DGH<D:;$
-M7?\GNC-BP?;F`7\0*RD``"06A=3DP,S9L6S1TZOZE]%&`",N9 at GJ1AA?`T85*E
-M!^6SO"D``!P``$`$'MW0L%`"DW7R:Q=3D+G<E(MV?BSH4````<``!`!6;9)H;\
-M?:2(IBR at XYU2QM64#7=3D_<1.W1IYH``"8`0``F`$```(```!%``&4N*P``$`1
-M``#`J`$!P*@!`@'T`?0!@`=3DEHMC(.-CZ'=3D,``````````"$@(@@````````!
-M>"(``'@```!T`0$`#`,``!`!```,@`X`@`,```P!```,@`X!``,```P!```,
-M@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#
-M```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``UA]ML:9M
-MS,]96(YU?2=3D\^<C:1S=3D'*B!,OZ\6W0F.;D5&U`Z4JGW[ET4D1V"O]AQVF&[V
-M`[FR-<L+3("L_505MD>\!I4#B&O_"8L(T at PYB0`:6>7DH\'NG[%8?J#&CM2M
-M]+'(;G?I=3DHA6NY>TP7C$][;BE0K7*GH,W'B1%6"ZSY,I```D8X$L6WM7_<>F
-M107A@?M'7G*GKCR4TLF;5>[\L^1<U80I```<``!`!%*5$"[UOB?<)@FJSK,K
-M-NI$ZQ*K````'```0`7DO=3D97>S([EB65YD2`1NP!,99P\7$3MT;CE0,`F`$`
-M`)@!```"````10`!E+CM``!`$0``P*@!`<"H`0(!]`'T`8`'9:+8R#C8^AW3
-M```````````A("((`````````7 at B``!X````=3D`$!``P#```0`0``#(`.`(`#
-M```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(`
-M``$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````
-M"`0```XH``"(``(``-8?;;&F;<S/65B.=3D7TG?/G(VD<W1RH at 3+^O%MT)CFY%
-M1M0.E*I]^Y=3D%)$=3D at K_8<=3DIAN]@.YLC7+"TR`K/U4%;9'O`:5`XAK_PF+"-(,
-M.8D`&EGEY*/![I^Q6'Z at QH[4K?2QR&YWZ7:(5KN7M,%XQ/>VXI4*URIZ#-QX
-MD15 at NL^3*0``)&.!+%M[5_W'ID4%X8'[1UYRIZX\E-+)FU7N_+/D7-6$*0``
-M'```0`12E1`N];XGW"8)JLZS*S;J1.L2JP```!P``$`%Y+W65WLR.Y8EE>9$
-M@$;L`3&6</%Q$[=3D&L]8)`)@!``"8`0```@```$4``92YY0``0!$``,"H`0'`
-MJ`$"`?0!]`&`!V6BV, at XV/H=3DTP``````````(2`B"`````````%X(@``>```
-M`'0!`0`,`P``$`$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``
-M"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!
-M`P``"`,```4#```(!````@````@$```.*```B``"``#6'VVQIFW,SUE8CG5]
-M)WSYR-I'-T<J($R_KQ;=3D"8YN14;4#I2J??N7121'8*_V'':8;O8#N;(URPM,
-M@*S]5!6V1[P&E0.(:_\)BPC2##F)`!I9Y>2CP>Z?L5A^H,:.U*WTL<AN=3D^EV
-MB%:[E[3!>,3WMN*5"M<J>@S<>)$58+K/DRD``"1C at 2Q;>U?]QZ9%!>&!^T=3D>
-M<J>N/)32R9M5[ORSY%S5A"D``!P``$`$4I40+O6^)]PF":K.LRLVZD3K$JL`
-M```<``!`!>2]UE=3D[,CN6)97F1(!&[`$QEG#Q<A.W1LWB!P"8`0``F`$```(`
-M``!%``&4NF@``$`1``#`J`$!P*@!`@'T`?0!@`=3DEQ-N'V"%2VF<`````````
-M`"$@(@@````````!>"(``'@```!T`0$`#`,``!,!```,@`X`@`,```P!```,
-M@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"
-M```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@`
-M`(@``@``+1N"&R.!!]G7I9XY2XH#M:*\(UNUU'`_FXX79$1Q0R;/>9Q`C,E)
-M>.*N%/BV,ZP/J32U:D"1)QNLD[R,Y7!?28J[5:9E1R`MW=3D2'C53<6)7&'J&(
-MX$SBK<V6Y47]XG^[9E#TD4J\P?=3DJ5+>."Q[4&%+NUFMD)#95(IXJ*X.>@#TI
-M```D!"<!8_M7 at 0'Y,!F:%C6!^+AL/UG(^M-'>(AE#&://^@I```<``!`!/7_
-M=3D$P[,&PELH[*DANV:3]#UI"\````'```0`62('Z&:^R5",EMQZMM9&?,1[*(
-M3'(3MT8K#PL`F`$``)@!```"````10`!E+IM``!`$0``P*@!`<"H`0(!]`'T
-M`8`'9<3;A]@A4MIG```````````A("((`````````7 at B``!X````=3D`$!``P#
-M```3`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,`
-M``@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``
-M!0,```@$```"````"`0```XH``"(``(``"T;@ALC at 0?9UZ6>.4N*`[6BO"-;
-MM=3D1P/YN.%V1$<4,FSWF<0(S)27CBKA3XMC.L#ZDTM6I`D2<;K).\C.5P7TF*
-MNU6F94<@+=3DW4AXU4W%B5QAZAB.!,XJW-EN5%_>)_NV90])%*O,'W:E2WC at L>
-MU!A2[M9K9"0V52*>*BN#GH`]*0``)`0G`6/[5X$!^3`9FA8U@?BX;#]9R/K3
-M1WB(90QFCS_H*0``'```0`3U_W1,.S!L);*.RI(;MFD_0]:0O````!P``$`%
-MDB!^AFOLE0C);<>K;61GS$>RB$QS$[=3D&=3D at X"`)@!``"8`0```@```$4``92Z
-M=3D@``0!$``,"H`0'`J`$"`?0!]`&`!V7$VX?8(5+:9P``````````(2`B"```
-M``````%X(@``>````'0!`0`,`P``$P$```R`#@"``P``#`$```R`#@$``P``
-M#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(
-M`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"```M
-M&X(;(X$'V=3D>EGCE+B at .UHKPC6[74<#^;CA=3DD1'%#)L]YG$",R4EXXJX4^+8S
-MK`^I-+5J0)$G&ZR3O(SE<%])BKM5IF5'("W=3DU(>-5-Q8E<8>H8C at 3.*MS9;E
-M1?WB?[MF4/212KS!]VI4MXX+'M084N[6:V0D-E4BGBHK at YZ`/2D``"0$)P%C
-M^U>!`?DP&9H6-8'XN&P_6<CZTT=3DXB&4,9H\_Z"D``!P``$`$]?]T3#LP;"6R
-MCLJ2&[9I/T/6D+P````<``!`!9(@?H9K[)4(R6W'JVUD9\Q'LHA,=3D!.W1A8;
-M``"8`0``F`$```(```!%``&4NHD``$`1``#`J`$!P*@!`@'T`?0!@`=3DE3+;0
-M-'FP6P0``````````"$@(@@````````!>"(``'@```!T`0$`#`,``!0!```,
-M@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#
-M```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0`
-M``(````(!```#B@``(@``@``:(DC4B)DC>WU&PW&;83SSX7[<A&]-&"WWXE]
-M@$']]RXNYLE:MK_?.<H4%^-S>3*@J>ZUHK2Q"!J>9E3O-J8+A7&JM),-6%11
-M9[B>CSU[V22;TT4?\/OXGKR+B2V$.K0]>AEYRUH1*HOT%'T-%D'G\O,EQ%Q<
-M_`*PVF+!H`("3M8I```DXWETZ<7;[;G6]TLANK>O[S82+J(G=3DDN*]4T>LY8*
-M54HI```<``!`!!Q]]5#IGI-E[T13C9*2=3DFI'.X`Q````'```0`5,S-S=3D"WF%
-M;*L^2S3R[,A/:WT>*703MT8E1P,`F`$``)@!```"````10`!E+KO``!`$0``
-MP*@!`<"H`0(!]`'T`8`'94RVT#1YL%L$```````````A("((`````````7 at B
-M``!X````=3D`$!``P#```4`0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.
-M`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``
-M"`,```$#```(`P``!0,```@$```"````"`0```XH``"(``(``&B)(U(B9(WM
-M]1L-QFV$\\^%^W(1O31 at M]^)?8!!_?<N+N;)6K:_WSG*%!?C<WDRH*GNM:*T
-ML0@:GF94[S:F"X5QJK23#5A446>XGH\]>]DDF]-%'_#[^)Z\BXDMA#JT/7H9
-M><M:$2J+]!1]#19!Y_+S)<1<7/P"L-IBP:`"`D[6*0``).-Y=3D.G%V^VYUO=3D+
-M(;JWK^\V$BZB)W9+BO5-'K.6"E5**0``'```0`0<??50Z9Z39>]$4XV2DG9J
-M1SN`,0```!P``$`%3,S<W0MYA6RK/DLT\NS(3VM]'BET$[=3D&GH@)`)@!``"8
-M`0```@```$4``92[+@``0!$``,"H`0'`J`$"`?0!]`&`!V5,MM`T>;!;!```
-M````````(2`B"`````````%X(@``>````'0!`0`,`P``%`$```R`#@"``P``
-M#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!
-M`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#```(!````@````@$
-M```.*```B``"``!HB2-2(F2-[?4;#<9MA///A?MR$;TT8+??B7V`0?WW+B[F
-MR5JVO]\YRA07XW-Y,J"I[K6BM+$(&IYF5.\VI at N%<:JTDPU85%%GN)Z//7O9
-M))O311_P^_B>O(N)+80ZM#UZ&7G+6A$JB_04?0T60>?R\R7$7%S\`K#:8L&@
-M`@).UBD``"3C>73IQ=3DOMN=3D;W2R&ZMZ_O-A(NHB=3DV2XKU31ZSE at I52BD``!P`
-M`$`$''WU4.F>DV7O1%.-DI)V:D<[@#$````<``!`!4S,W-T+>85LJSY+-/+L
-MR$]K?1XI=3D1.W1I"9!P"8`0``F`$```(```!%``&4NS\``$`1``#`J`$!P*@!
-M`@'T`?0!@`=3DE$@=3D5"HXPU$4``````````"$@(@@````````!>"(``'@```!T
-M`0$`#`,``!4!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!
-M```#`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,`
-M``@#```%`P``"`0```(````(!```#B@``(@``@``FOS$VX8$5"=3DP0%V%J3+#
-MCXBE*&Q/R#/2YLD<!+$%9J3'!#[,/4_$L0=3D\`K$1EN2.[^!FS!D)HS*[HI*,
-M^RKUA>>3CL\Y4](Y[N"_8XEMWVK>ERN=3D[R;:0_R>S-/?%7YA;E[F;#*TH1'P
-M0"*B".Z4:QH\_E[-;YT[M'@'5(RT#^,I```DIQS[8^CJ&X'-F`(M->A5O4N+
-MBZ+K'%4YHG"(3GQ(UDXI```<``!`!#R"-G3_OQ:A0WHA7-S#!^GG"WB%````
-M'```0`4'K#>"[\4J'5R;G#!8X)0J)?>C-G43MT8#P0H`F`$``)@!```"````
-M10`!E+M#``!`$0``P*@!`<"H`0(!]`'T`8`'91('50J.,-1%```````````A
-M("((`````````7 at B``!X````=3D`$!``P#```5`0``#(`.`(`#```,`0``#(`.
-M`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``"`(```$#```(`@``
-M!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"````"`0```XH``"(
-M``(``)K\Q-N&!%0G<$!=3DA:DRPX^(I2AL3\@STN;)'`2Q!6:DQP0^S#U/Q+$'
-M?`*Q$9;DCN_ at 9LP9":,RNZ*2C/LJ]87GDX[/.5/2.>[@OV.);=3D]JWI<KG>\F
-MVD/\GLS3WQ5^86Y>YFPRM*$1\$`BH at CNE&L://Y>S6^=3D.[1X!U2,M`_C*0``
-M)*<<^V/HZAN!S9@"+37H5;U+BXNBZQQ5.:)PB$Y\2-9.*0``'```0`0\@C9T
-M_[\6H4-Z(5S<PP?IYPMXA0```!P``$`%!ZPW at N_%*AU<FYPP6."4*B7WHS9V
-M$[=3D&9\`!`)@!``"8`0```@```$4``92[2@``0!$``,"H`0'`J`$"`?0!]`&`
-M!V42!U4*CC#410``````````(2`B"`````````%X(@``>````'0!`0`,`P``
-M%0$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#``P``"`$```,#```(
-M`@```@,```@"```!`P``"`(```0#```(`P```@,```@#```!`P``"`,```4#
-M```(!````@````@$```.*```B``"``":_,3;A at 14)W!`786I,L./B*4H;$_(
-M,]+FR1P$L05FI,<$/LP]3\2Q!WP"L1&6Y([OX&;,&0FC,KNBDHS[*O6%YY..
-MSSE3TCGNX+]CB6W?:MZ7*YWO)MI#_)[,T]\5?F%N7N9L,K2A$?!`(J(([I1K
-M&CS^7LUOG3NT>`=3D4C+0/XRD``"2G'/MCZ.H;@<V8`BTUZ%6]2XN+HNL<53FB
-M<(A.?$C63BD``!P``$`$/((V=3D/^_%J%#>B%<W,,'Z><+>(4````<``!`!0>L
-M-X+OQ2H=3D7)N<,%C at E"HE]Z,V=3DA.W1F0.#P"8`0``F`$```(```!%``&4NU$`
-M`$`1``#`J`$!P*@!`@'T`?0!@`=3DEX;T<RY0X5&```````````"$@(@@`````
-M```!>"(``'@```!T`0$`#`,`__\!```,@`X`@`,```P!```,@`X!``,```P!
-M```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``"`,`
-M``(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``SW,H
-M$+D)J5L#&?0 at NNS61CU9&/@(90+ at WX<YJ,/`;ZE?A(K1=3D;<95\,628!"0,I7
-M\0><[MXZ\].K`'6Z";F'2G>G`DMT\;"$;Y6N$OMW>KI=3D['.W483:`+$@JHU*
-MRWSN+8F]OSP^%9J5=3DW?L**,@*?SGRQFP.-KN4,%MU]3R@$4I```D60:,%`]%
-M_V,XU`/.2^9^Z(LHG_"JT)C**G/N]7L4&W\I```<``!`!"$@P at J855<CMF<R
-M^Z+>-\]-^4^`````'```0`42B_7G8>2$S-M7VN8%DRZ^"G]@LW<3MT;#^`(`
-MF`$``)@!```"````10`!E+M3``!`$0``P*@!`<"H`0(!]`'T`8`'9>&]',N4
-M.%1@```````````A("((`````````7 at B``!X````=3D`$!``P#`/__`0``#(`.
-M`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0```P,```@"```"`P``
-M"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(`P``!0,```@$```"
-M````"`0```XH``"(``(``,]S*!"Y":E;`QGT(+KLUD8]61CX"&4"X-^'.:C#
-MP&^I7X2*T76W&5?#%DF`0D#*5_$'G.[>.O/3JP!UN at FYATIWIP)+=3D/&PA&^5
-MKA+[=3DWJZ7>QSMU&$V@"Q(*J-2LM\[BV)O;\\/A6:E7=3DW["BC("G\Y\L9L#C:
-M[E#!;=3D?4\H!%*0``)%D&C!0/1?]C.-0#SDOF?NB+*)_PJM"8RBIS[O5[%!M_
-M*0``'```0`0A(,(*F%57([9G,ONBWC?/3?E/@````!P``$`%$HOUYV'DA,S;
-M5]KF!9,NO at I_8+-W$[=3D&<#H)`)@!``"8`0```@```$4``92[7P``0!$``,"H
-M`0'`J`$"`?0!]`&`!V7AO1S+E#A48```````````(2`B"`````````%X(@``
-M>````'0!`0`,`P#__P$```R`#@"``P``#`$```R`#@$``P``#`$```R`#@#`
-M`P``"`$```,#```(`@```@,```@"```!`P``"`(```0#```(`P```@,```@#
-M```!`P``"`,```4#```(!````@````@$```.*```B``"``#/<R at 0N0FI6P,9
-M]""Z[-9&/5D8^`AE`N#?ASFHP\!OJ5^$BM%UMQE7PQ9)@$)`RE?Q!YSNWCKS
-MTZL`=3D;H)N8=3D*=3DZ<"2W3QL(1OE:X2^W=3DZNEWL<[=3D1A-H`L2"JC4K+?.XMB;V_
-M/#X5FI5W=3D^PHHR`I_.?+&;`XVNY0P6W7U/*`12D``"19!HP4#T7_8SC4`\Y+
-MYG[HBRB?\*K0F,HJ<^[U>Q0;?RD``!P``$`$(2#""IA55R.V9S+[HMXWSTWY
-M3X`````<``!`!1*+]>=3DAY(3,VU?:Y at 63+KX*?V"S>!.W1OM&!P"8`0``F`$`
-M``(```!%``&4NV,``$`1``#`J`$!P*@!`@'T`?0!@`=3DE0?.A9'1+8B<`````
-M`````"$@(@@````````!>"(``'@```!T`0$`#`,`@``!```,@`X`@`,```P!
-M```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,`
-M``@"```$`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```
-M#B@``(@``@``\C`5K+.[4^;2R[]:V`(]S"ZRMO0_2HA'>9@^P9)W$BK\VEL@
-M_-BSZ..;@5<B"R!D]+M*=3D0QUBL8"FC_>M/19V+,&R0T`(5'CD>VF;F4$R`L\
-M^T7^`#+'1BH\TR1&00T;!]4XW:&Q^X09$)^_J61;?ZD^%>,`Z[2I602A3')Y
-MDL$I```D?%B)`G3UG*!J"[,6-&$>]Z5M7 at R=3D7_7AOM1::^$V4SDI```<``!`
-M!'O]1C8*<[?;+J$,P_)Q41E]9;@^````'```0`62M8)NE>AN8Q2N'"7B9Z;*
-MYW/]S7 at 3MT;*<@H`F`$``)@!```"````10`!E+MD``!`$0``P*@!`<"H`0(!
-M]`'T`8`'94'SH61T2V(G```````````A("((`````````7 at B``!X````=3D`$!
-M``P#`(```0``#(`.`(`#```,`0``#(`.`0`#```,`0``#(`.`,`#```(`0``
-M`P,```@"```"`P``"`(```$#```(`@``!`,```@#```"`P``"`,```$#```(
-M`P``!0,```@$```"````"`0```XH``"(``(``/(P%:RSNU/FTLN_6M@"/<PN
-MLK;T/TJ(1WF8/L&2=3DQ(J_-I;(/S8L^CCFX%7(@L at 9/2[2G4,=3D8K&`IH_WK3T
-M6=3DBS!LD-`"%1XY'MIFYE!, at +//M%_@`RQT8J/-,D1D$-&P?5.-VAL?N$&1"?
-MOZED6W^I/A7C`.NTJ5D$H4QR>9+!*0``)'Q8B0)T]9R@:@NS%C1A'O>E;5X,
-MG5_UX;[46FOA-E,Y*0``'```0`1[_48V"G.WVRZA#,/R<5$9?66X/@```!P`
-M`$`%DK6";I7H;F,4KAPEXF>FRN=3DS_<UY$[=3D&&'(!`)@!``"8`0```@```$4`
-M`92[:@``0!$``,"H`0'`J`$"`?0!]`&`!V5!\Z%D=3D$MB)P``````````(2`B
-M"`````````%X(@``>````'0!`0`,`P"```$```R`#@"``P``#`$```R`#@$`
-M`P``#`$```R`#@#``P``"`$```,#```(`@```@,```@"```!`P``"`(```0#
-M```(`P```@,```@#```!`P``"`,```4#```(!````@````@$```.*```B``"
-M``#R,!6LL[M3YM++OUK8`CW,+K*V]#]*B$=3DYF#[!DG<2*OS:6R#\V+/HXYN!
-M5R(+(&3TNTIU#'6*Q@*:/]ZT]%G8LP;)#0`A4>.1[:9N903("SS[1?X`,L=3D&
-M*CS3)$9!#1L'U3C=3DH;'[A!D0G[^I9%M_J3X5XP#KM*E9!*%,<GF2P2D``"1\
-M6(D"=3D/6<H&H+LQ8T81[WI6U>#)U?]>&^U%IKX393.2D``!P``$`$>_U&- at IS
-MM]LNH0S#\G%1&7UEN#X````<``!`!9*U at FZ5Z&YC%*X<)>)GILKG<_W->1.W
-M1M[!#@"8`0``F`$```(```!%``&4NW8``$`1``#`J`$!P*@!`@'T`?0!@`=3DE
-MK&*8C?+ at 39P``````````"$@(@@````````!>"(``'@```!T`0$`#`,```P`
-M```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#`P``"`(`
-M``(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#```%`P``
-M"`0```(````(!```#B@``(@``@``%&`04LR()6'67;P%5`AL1!&LT_D-A[&^
-M1;X^ZH7_MA>(\/-KCOWB at P^F-1\DTM(EG%P>-Y'O1"XZSI"S1N-*E/, at AG+&
-MW8FRU76",1\QKF\+Z9/IFE-AQ0`A,;DB.Z(!,DNMPS-ECU$HD]9%IU2]:;(7
-M&%9X\O'7?7<3=3DJU@<(HI```D]A'(:M'YH&8 at _Z4;-5[FQ'G\:W?S])`8F>"B
-MUMST!(DI```<``!`!)'<BQ`QRGVL5%V7;^+EOC,'!.M'````'```0`4]D#Y(
-M63(UW+LD??T0R[''9*T"C7D3MT;$T`X`7````%P````"````10``6+MW``!`
-M$0``P*@!`<"H`0(!]`'T`$0&*:QBF(WRX$V<```````````I("(@````````
-M`#P````@``!`!@````QNT=3D?'Z6OM;>AQ>KD-&2S]X0]!>WD3MT8.X`X`N`$`
-M`+@!```"````10`!M+MX``!`$0``P*@!`<"H`0(!]`'T`:`'A:QBF(WRX$V<
-M```````````I("((`````````9 at A```@``!`!@````QNT=3D?'Z6OM;>AQ>KD-
-M&2S]X0]!>R(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!``,`
-M``P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$`P``
-M"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@``@``
-M%&`04LR()6'67;P%5`AL1!&LT_D-A[&^1;X^ZH7_MA>(\/-KCOWB at P^F-1\D
-MTM(EG%P>-Y'O1"XZSI"S1N-*E/, at AG+&W8FRU76",1\QKF\+Z9/IFE-AQ0`A
-M,;DB.Z(!,DNMPS-ECU$HD]9%IU2]:;(7&%9X\O'7?7<3=3DJU@<(HI```D]A'(
-M:M'YH&8 at _Z4;-5[FQ'G\:W?S])`8F>"BUMST!(DI```<``!`!)'<BQ`QRGVL
-M5%V7;^+EOC,'!.M'````'```0`4]D#Y(63(UW+LD??T0R[''9*T"C7D3MT:Y
-M!0\`4`$``%`!```"````10`!3+M[``!`$0``P*@!`<"H`0(!]`'T`3@'':QB
-MF(WRX$V<81:2:X+)P[<A("(@`````````3`B```P````+`$!``0#```,`0``
-M#(`.`(`#```(`@```@,```@#```"````"`0```(H``"(``(``+F7CX\;[I&*
-M^'UH+N`J[/VG:6G(Y'B"MA?IP5A&!I:FPO&HO^1B-AF#AG17#U>2ZI7LAA#I
-MUG$.35W-"$#^E?#D;0<;NR"0\H<WK^I]64JS2H$.4"O5W$<&.C*:Q`(<X[F(
-M0KSQ/!@+PFG)\,K5*]3(@WGTH!"J9C+4F5-K!%<T*0``)&P-&;TLD/J^>(!Z
-M=3D8P%9]G<O8(@97?OF:G"C;=3D"J.7?*0``'```0`3W,:'N.C-<Z8$8VC&L=3D85A
-M-+]T'0```!P``$`%:!T^>'H@/5>B3E5?Z",^_U4\D_]Y$[=3D&!S,/``P!```,
-M`0```@```$4``0B[?```0!$``,"H`0'`J`$"`?0!]`#T!]FL8IB-\N!-G&$6
-MDFN"R<.W+B`C"`````$```#L(P``T''3>4T,4H%%(I+X1>)5 at ._ACPF,_Z-1
-MKIW0_>'S4'K^X74U\TMO58>F6?`)9Z&HKC)4"?B,N&`(25[.&Z5##!UWG\@=3D
-M_8I,OM1\K40!B%$U%(8NEB,:AR(+]-W)9R8K8,AEKTV=3DVK1NG;7^8V5`'GAY
-MZXRRO54V\W8<^J]`1C;IKR-Z!V%8`UGV%M9(>+QCU;^6*8=3DE>US`>0L!)T`>
-M!0]41&+N:E6*S$!(P?G980W/-+7&3\@C:7/?7KY>)X9"S+@/'9O-H'$=3DV!K2
-!'P``
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2four.o=
ut
--- a/head/contrib/tcpdump/tests/ikev2four.out	Wed Jul 25 16:20:13 2012 +03=
00
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), len=
gth 404)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_s=
a ikev2_init[I]:
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024)
-    (nonce: len=3D32 data=3D(6128ebd023a864e94a7f...ba041b5de59955900d818a=
c54e18b236739d9e8b))
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), len=
gth 88)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_s=
a ikev2_init[R]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e123f=
2b0c71aefcf0cb3b798782c6))
-IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), len=
gth 436)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_s=
a ikev2_init[I]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e...b=
a041b5de59955900d818ac54e18b236739d9e8b))
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024)
-    (nonce: len=3D32 data=3D(6128ebd023a864e94a7f...ba041b5de59955900d818a=
c54e18b236739d9e8b))
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), len=
gth 332)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_s=
a ikev2_init[R]:
-    (sa: len=3D44
-        (p: #1 protoid=3Disakmp transform=3D4 len=3D44
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dprf id=3Dhmac-sha )
-            (t: #3 type=3Dinteg id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1024 )))
-    (v2ke: len=3D128 group=3Dmodp1024)
-    (nonce: len=3D32 data=3D(b31c379f272ce2984bd1...905954a783be2c37e2ccc4=
fdd270a532dbe6f428))
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), len=
gth 264)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000001: child_sa=
  ikev2_auth[I]:
-    (v2e: len=3D204)
-IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), len=
gth 184)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000001: child_sa=
  ikev2_auth[R]:
-    (v2e: len=3D124)
-IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000002: child_sa=
  child_sa[I]:
-    (v2e: len=3D220)
-IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), len=
gth 248)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000003: child_sa=
  child_sa[I]:
-    (v2e: len=3D188)
-IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000002: child_sa=
  child_sa[R]:
-    (v2e: len=3D44)
-IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000003: child_sa=
  child_sa[R]:
-    (v2e: len=3D44)
-IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000004: child_sa=
  child_sa[I]:
-    (v2e: len=3D252)
-IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000005: child_sa=
  child_sa[I]:
-    (v2e: len=3D220)
-IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000004: child_sa=
  child_sa[R]:
-    (v2e: len=3D172)
-IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000005: child_sa=
  child_sa[R]:
-    (v2e: len=3D172)
-IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000006: child_sa=
  child_sa[I]:
-    (v2e: len=3D252)
-IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000007: child_sa=
  child_sa[I]:
-    (v2e: len=3D220)
-IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000006: child_sa=
  child_sa[R]:
-    (v2e: len=3D172)
-IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000007: child_sa=
  child_sa[R]:
-    (v2e: len=3D172)
-IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), len=
gth 392)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000008: child_sa=
  child_sa[I]:
-    (v2e: len=3D332)
-IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), len=
gth 344)
-    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000008: child_sa=
  child_sa[R]:
-    (v2e: len=3D284)
-IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), len=
gth 120)
-    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_s=
a inf2[I]:
-    (v2e: len=3D60)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2four.p=
uu
--- a/head/contrib/tcpdump/tests/ikev2four.puu	Wed Jul 25 16:20:13 2012 +03=
00
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-begin 644 ikev2four.pcap
-MU,.RH0(`!````````````-P%````````1!*W1JWG!0"8`0``F`$```(```!%
-M``&43<0``$`1J$'`J`$"P*@!`0'T`?0!@`=3DEJ(AUJ!F)DJ8``````````"$@
-M(@@````````!>"(``'@```!T`0$`#`,```P!```,@`X`@`,```P!```,@`X!
-M``,```P!```,@`X`P`,```@!```#`P``"`(```(#```(`@```0,```@"```$
-M`P``"`,```(#```(`P```0,```@#```%`P``"`0```(````(!```#B@``(@`
-M`@``M41;U at SLYOW-/):E++M[M":HQZ#U:IPXT;'$\,.FZ.?;I<<SFV[0+G5Q
-M&=3D^UMI,\Z3M at 28?[O'<B&RH,?-TR>'[_$%<K[U1L-A1B^=3DHTA'EII"Y1QU69
-M:^K$+F^ZEAIUW at _!LC\)DX");NB2`A(M[:P;U4JH24K#UT"^32I,\YTI```D
-M82CKT".H9.E*?_MTOWS.+]0V<R*XL'/Y0B at KU2Z_X^8I```<``!`!$0O_EKJ
-M#.Y-NLQUCH`2,[W`F at J_````'```0`6Z!!M=3DY9E5D`V!BL5.&+(V<YV>BT02
-MMT9`]@4`7````%P````"````10``6$W%``!`$:E\P*@!`<"H`0(!]`'T`$0&
-M*:B(=3D:@9B9*F```````````I("(@`````````#P````@``!`!@````'"(AY0
-MP6X2/RL,<:[\\,L[>8>"QD02MT8;!08`N`$``+@!```"````10`!M$W&``!`
-M$:@?P*@!`L"H`0$!]`'T`:`'A:B(=3D:@9B9*F```````````I("((````````
-M`9 at A```@``!`!@````'"(AY0P6X2/RL,<:[\\,L[>8>"QB(``'@```!T`0$`
-M#`,```P!```,@`X`@`,```P!```,@`X!``,```P!```,@`X`P`,```@!```#
-M`P``"`(```(#```(`@```0,```@"```$`P``"`,```(#```(`P```0,```@#
-M```%`P``"`0```(````(!```#B@``(@``@``M41;U at SLYOW-/):E++M[M":H
-MQZ#U:IPXT;'$\,.FZ.?;I<<SFV[0+G5Q&=3D^UMI,\Z3M at 28?[O'<B&RH,?-TR
-M>'[_$%<K[U1L-A1B^=3DHTA'EII"Y1QU69:^K$+F^ZEAIUW at _!LC\)DX");NB2
-M`A(M[:P;U4JH24K#UT"^32I,\YTI```D82CKT".H9.E*?_MTOWS.+]0V<R*X
-ML'/Y0B at KU2Z_X^8I```<``!`!$0O_EKJ#.Y-NLQUCH`2,[W`F at J_````'```
-M0`6Z!!M=3DY9E5D`V!BL5.&+(V<YV>BT02MT9-*`8`4`$``%`!```"````10`!
-M3$W'``!`$:B&P*@!`<"H`0(!]`'T`3@'':B(=3D:@9B9*F<;Z#6.^N=3DF,A("(@
-M`````````3`B```P````+`$!``0#```,`0``#(`.`(`#```(`@```@,```@#
-M```"````"`0```(H``"(``(``%I6<4TZOV3CH_0!ZMGU,C_PMW^J7QZ9&9L3
-MK((?"@Q/A4>&R at FWIVJE"+SN$?%C::%M7Z!!RBV:C?J"*,8?)(+2%UQ<&I21
-M_"(;['H?II]E;4R8NDFNG7(=3D[?2 at +7[-_"`=3DQX6A/M=3D.3SF"=3DBHG(/_?PV7N
-M3C<GFO26S8;X@?T5*0``)+,<-Y\G+.*82]%\HXR'*>'MO`@:%/L/9\_X%R'?
-M[L'Y*0``'```0`3^*_M\+('M"V'W5K5_K'BG7.V*]@```!P``$`%D%E4IX.^
-M+#?BS,3]TG"E,MOF]"A$$K=3D&E%0&``P!```,`0```@```$4``0A-R```0!&H
-MR<"H`0+`J`$!`?0!]`#T!]FHB'6H&8F2IG&^@UCOKG9C+B`C"`````$```#L
-M(P``T/8&$UK3<^<(-OVI&V/*3&".&M6"&$B,)D?_'HJ1*5BJ=3D^^\,&BBKFJW
-MP]#+'F^X9-^9QB\LP$5P@(1P at 52CD\+TR^^M'VA(4EU)VU8^$S1:3FXOT&;`
-M3BSBD?1Q2Z[&OS*#5L1&)'RK at UO:/HX:KEEG)(\!ZSH<`J5!M-H)LR=3DK0`U0
-MH&=3D4*F>$:,7T'E0!?`"63Q`#^,B(EJ;Q(A6E\:!@<3S(.`+*XZON&$%\##7<
-M;UB@&MN6[1P`G&CC!IKG#TL0K[=3DS;!$:WDV";D02MT;S:P8`O````+P````"
-M````10``N$W)``!`$:D8P*@!`<"H`0(!]`'T`*0&B:B(=3D:@9B9*F<;Z#6.^N
-M=3DF,N(",@`````0```)PD``"`:OZ5O%%'L*U^3,N10<%@I$]\;MW&LIU!2M7B
-MN()43]QL/N:8.N%`BU=3DDL6230X=3DD5-&_35%:KP/!7J_G&^:TSU&K8&,,1;SP
-MXJ+;CNYP"5I.`0_;-"K;;0/:Y=3D[YU)!\W\C,UO/:FW27Q8Z$J5+9@[K[E!JQ
-MWAL+N?^M.T02MT8RB at 8`'`$``!P!```"````10`!&$W*``!`$:BWP*@!`L"H
-M`0$!]`'T`00'Z:B(=3D:@9B9*F<;Z#6.^N=3DF,N("0(`````@```/PA``#@4\QL
-M"T'Q3D_`5\?VHU)*W>A2'R;V?`6$,*D"VQI2[1;3(F,-+K45-RW!+9?<?"!5
-M)@?B[1D]FS.3GA"J+\-[89GPIBG&M8$U];;YX'D&S3#</*Y]5?X(V5T^9 at IB
-M-S'#EJ,EK;_Q'$D/G]$"(D.1IE^WN^ABE%MDSQ^X,[G.:,@]\+G2SGO53V4(
-M9*^41>5'S?Y<JCDS1*Y2=3D),[?OSV%H(>I]JIQ:;H)UK6QHAP#+?TO-;[@"7I
-M.[;=3D7U@?KKR^RWF,AV%Z3L&P:Z*0K%_!UN3"<EP?GPX0L43[OD02MT9TE08`
-M_````/P````"````10``^$W+``!`$:C6P*@!`L"H`0$!]`'T`.0&R:B(=3D:@9
-MB9*F<;Z#6.^N=3DF,N("0(`````P```-PA``#`E@/@/R@)9'@G%]H5I0+PJ>GQ
-M?;]$A\:2//`+<$#5.;R4?'!7D.3IFX-*>N*HUY]6(.$6%>"G8HB:JX(>#0,3
-M+?N,QK-QA8)!&\V8PD*HL0IF)TVN'.!5^S"DT^9,EIOFX(MB:5CT1&QN2 at R-
-M>B12*5G&%2YCI77`:3#""74YO[W_",<%,T*,]K12X+BP)9PBDI)=3D+M8NB5:\
-M?CJ1&F%0F^&LCWM\U&-A=3DN4D]-#Q=3D7/RKMW.(E'];5V<U4U$$K=3D&4Z`&`&P`
-M``!L`````@```$4``&A-S```0!&I9<"H`0'`J`$"`?0!]`!4!CFHB'6H&8F2
-MIG&^@UCOKG9C+B`D(`````(```!,*0``,%O2TFRT.VSL,-[!/Z.'-9>7NO>T
-M'G at T(KQ-J_70.K)"#2=3D].R\HT?`#VIC11!*W1A"[!@!L````;`````(```!%
-M``!H3<T``$`1J63`J`$!P*@!`@'T`?0`5`8YJ(AUJ!F)DJ9QOH-8[ZYV8RX@
-M)"`````#````3"D``#`X]@JVD1"6>6&N!*].1Z=3DP)@UAXIT8^Q/."3I'EP!H
-MVLLT+WF9S#T-6?=3DZE$02MT9=3DU`8`/`$``#P!```"````10`!.$W.``!`$:B3
-MP*@!`L"H`0$!]`'T`20'":B(=3D:@9B9*F<;Z#6.^N=3DF,N("0(````!````1PA
-M``$`Q_+QS$F7LPIA8C(BU+^U-;JC`AF<38P?W/IT6PLIM>=3DAC_`U:$A$324!
-M#EK4('8(D.W at 9L@X)ILBV>,-3^P:`2YS&B$,)#^`.V89<-,NF8Z1GU<\5T+2
-M*(E)!2Q:1J#-?$H:*5[>*6Q/V8.;9-Q)1.$:-?0JC.&+1'(`_0/;U8IQ6#LZ
-M)\.`%(R`'.%$4O?75K'U6Q"X2EC/J5)@`?_W%7%49%`BY$5 at A5%\[MF+>>(.
-MTS*7SUK8`H?G at G**C&N'TK0BY^[:''*S/KQ1I;=3DM[YI9_]&T^7WLB,(J3U1(
-MIQKNWR#(?:Y;1,TN>E&=3D<9I0GX/SLOKV]<8'VF"?1!*W1A7@!@`<`0``'`$`
-M``(```!%``$83<\``$`1J++`J`$"P*@!`0'T`?0!!`?IJ(AUJ!F)DJ9QOH-8
-M[ZYV8RX@)`@````%````_"$``.#:YA-*G/\:3CS%FGG@&:D_A&G=3D3B^JJM'#
-MK[HB[-$H_;'HE4QU/X]BKK:JR7,O04L&7L.5::9POFF`R!ZSY$O)/L8^FG5-
-M!%;&<#S7&#<>WN]G22 at 8#YT4PYY2SZ2E%S:.?;+Z"_VT'/5MEP!B,Q`_(F4/
-MW-7_JX08Y`D#Y'2>$FT&Z=3DPJ&,_5O]H`$^/IZU/GF[XPZM\/3=3DSONK#`CH<+
-M*=3D.;)`''6VC\1J!F>"A7RDC51^00K!7*NV<XAU(`M37+V:X>'.F8.<G"5CD'
-M#E[9=3DX"<4+:[E5"U"TF[1!*W1I_N!@#L````[`````(```!%``#H3=3D```$`1
-MJ.'`J`$!P*@!`@'T`?0`U`:YJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````$````
-MS"$``+`?V%%K5[&K&]O-NADPI0E][,`CQ<4T27RE/Q>+G4T1(H=3D&14-QL,QN
-MP&?A3AY<5E*$#/VN#JA,?PIN>9_W^Q,=3D%78_[O1>@/)'%LWD?2-2?VC at 5:?#
-MK<<B5(DI7AO#\0*;8X(H<H9=3D]5QL)UWJV*;V2]J*Y$]"PQCZ<>L$[M<Q+:_2
-MW89E_5TR)?.JYO<S6U@<.HG`>O$`F''>J9)_!&0RS0&P0C0 at 30%8.Z\Z1!*W
-M1G4.!P#L````[`````(```!%``#H3=3D$``$`1J.#`J`$!P*@!`@'T`?0`U`:Y
-MJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````%````S"$``+#V_($3\TN2ZWU96 at 2/
-M5]1EDT0:V:89&>61GGWD14^C6(*3?3MTR#JY6?T%/&H2I1L$H.DN`6 at W@F6+
-MN:\KO,>DO5X>[RV\W'<5RL;J[/O,!1I&\B8]&X.'O:U^:,;DNAOI>4X6/DA'
-M:)E:GTH8[<O&I$\*=3D,L!PQCGA(5BX(9O.(N-!/%/&OA]Y]YL[A^(G4,PV"DR
-MIQ)[?1J33F0<,K=3DN,[-W!M4"AOC+XS6Z1!*W1F at L!P`\`0``/`$```(```!%
-M``$X3=3D(``$`1J(_`J`$"P*@!`0'T`?0!)`<)J(AUJ!F)DJ9QOH-8[ZYV8RX@
-M)`@````&```!'"$``0`*HF-J.XE_\_J`DR at JT7).R?,FMDOYF.>!UNV[=3DZ-I
-MJ$1-Q'I-P)7KTZP['<,W5PO$+)/-;<MRB;R9J0ATYFS$[>>A.EC.%\9;&%Z&
-MWO@]9O3$W<0SYFNO&#3E0I9G$U>E$YL+8^OS+F4M\).+K>I:E@[A=3D8X`^J9#
-MOMA?>M[BXN=3D;KNR>#?B(5Z9\I?*B])&=3D"R<C$]0L>1ZW7^RA175J#,KC9`[I
-MC!9HG?411#(HA&TL6X at PZFT4G!J^T1K0HHRC.9,#;I&674BH*HF!1:VIE*]5
-MEX:62`JVRVE^$^9Y:*=3DTC#,X>&[[=3DR4.5!&SI^K(3-(A,DO7N1"=3DFFE$$K=3D&
-M=3DS8'`!P!```<`0```@```$4``1A-TP``0!&HKL"H`0+`J`$!`?0!]`$$!^FH
-MB'6H&8F2IG&^@UCOKG9C+B`D"`````<```#\(0``X`+'`_2]V#)&K<9^'*!]
-M?GS^(;:]Z48W:`HS*!.XI,I'-!J].IPW)CB6P()2O['J;'ZD1X.Y*L4JRT^_
-M[%/P-50H'&-W90P)((\]=3DXL1YWM?O9@[X>EFF2,CDN\QI0']ISQA4/S"Z`NK
-M'@U)A%O5U1'WR2A>P(-2:'HJR-<-#>PT=3DDD<0+E\N=3DI`5@;\7HU&N^&9YMD:
-MZ9.W^J!8/L0I:H"!+[?@KHC3O53$HPY>VR=3DXR6#SX,M;$VGIF?A-Y-QRM=3D`&
-M@%[[?BTNU`,^$?^5>`$M(I0N-YG)."4&H"%$$K=3D&#D8'`.P```#L`````@``
-M`$4``.A-U```0!&HW<"H`0'`J`$"`?0!]`#4!KFHB'6H&8F2IG&^@UCOKG9C
-M+B`D(`````8```#,(0``L'XN9B/&;A8=3DZ60:Q^&VW]SSI?1;OM$COHCS=3D4T2
-M440$K\!4L\?WB>M2I#*D.#6=3DWC$5+!&XT at D@/6)WG*!D at CUP4VQ`^$;4/6:4
-MHO$J,7;U<`>C4&R"__KSV[<3N]NU]4"WLYKN/)<45G%00U8)7WJPQ:A#1\`F
-MB\XEG*4;2BW76GXZ?N>?.__%C2_`K#9H8BGR,)M<T,#<PJ]YAF3!3U\6:K7C
-MP?:3"2$AJD1$$K=3D&D&<'`.P```#L`````@```$4``.A-U0``0!&HW,"H`0'`
-MJ`$"`?0!]`#4!KFHB'6H&8F2IG&^@UCOKG9C+B`D(`````<```#,(0``L'M4
-M4#.BTUWRJY\FQ+Q$1Q.1"C+F#[!,L0J>=3DF-'A_G=3DP3C&>2^J!TOBZ\M#^#]$
-M0DEGD!CL;<?4XB1]V,N15WC9#Z59?Q[+J$<=3DM3X[3:CW/1ZV#"/*G[7Z69W%
-M)JEA-D1QM)Y2B/SO:B30*@A-*<2EQ=3D'Z,%,0VZ`=3D"<G#;(;`KRE^!=3D/\A5FA
-M%F:D-CNLPU3I;)032;/V#=3D.7ZTPKL)\X&#$6?`LS:&QKM=3DA$$K=3D&*HP'`(P!
-M``",`0```@```$4``8A-U@``0!&H.\"H`0+`J`$!`?0!]`%T!UFHB'6H&8F2
-MIG&^@UCOKG9C+B`D"`````@```%L(0`!4,2_B>QN>3:LF*0RI27"0&WI0+,X
-MR12<X9RQOR.FG?U('?>SK:&MNW"_%P=3D&0^WY?F.MY>T']T9T\FQ(TM:I!$1W
-M[I\@,(3";H5`68?LBY:3WJZB#.>,*D4;]. at TU[S#Q4P3(K7RBZ,'\LXQH`52
-MN7N/P0.BG^XN`$#,W?H0OSJST2">9#PBC>Q74D#'O74,]-;0;)6/9KV*>8,=3D
-M^''V^]D^`EL6O0/>-?_-NKK&57#2-GYB39^.A6#:F\.B%"MU`(M\ZXZ#G;]"
-M7:=3D,2^%<G<,7->\:QO9<(W4$+<^6 at M]T)9N,1#?7[HWQG^INP=3D6]210)S')V
-MUP[@NI%RM!=3D_O.?Z*!<:(VRHXN#!2>8"R<:@H_]?!4*']4M\,4L'S?;21B0=3D
-MTV3'09S`9'0BT(]5$;$^>URW&6%D9N'&EF]<S4TLHK$MVG!'QO8Z]=3DU'1!*W
-M1BZ_!P!<`0``7`$```(```!%``%83=3D<``$`1J&K`J`$!P*@!`@'T`?0!1`<I
-MJ(AUJ!F)DJ9QOH-8[ZYV8RX@)"`````(```!/"$``2`L&LADKBR$F;/'KXQA
-MJ,3<GAKR-7>UB-:[/][SY(/,+P%8P'!QUM^N]SW,MLW/>E=3D8Y!=3DXVLZW'/9S
-M/A<6B^_V[R`5UG#`ME=3D/QRZ7U"@I"99O.4J?G at _.V.)IN_8.D_#R"`](W-3@
-M+_$2FY3VBR:-W9S_0V\XYX^GF&V'YB+1\]H[/">55PZ\)]/#U1\I[P__`:Z)
-MO7'2X0JX^NY]>[2UOHJ>X.J;7C1[NO/KWZ\9<UUUYOJ@(-;J<H)L*J7++N9(
-MWFLVR[)0AT*-ZD2]-%!.!?+4_O0\2.*FD%$.DGC*C_+W=3D7DJ\&&US+SW>S_N
-M98A1*)EIQ5[<;587&*#'8;";#V?);F'0"G^BDI`CM:W/W3-#;V.D>!0=3D4;4C
-M,T02MT9GY@<`?````'P````"````10``>$W8``!`$:E)P*@!`L"H`0$!]`'T
-M`&0&21V;Z44=3D3Y>H9**DM=3D#A>VHN("4(`````````%PJ``!`:1M(@IML76W9
-M/ZCC/#C=3D3`#U0TW"*T)1P(=3DO"]M=3DNZ/=3D!B at Y!U6:)R\'['<)N=3D66HDS8_FFX
-&*A]EV_;R
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2fourv.=
out
--- a/head/contrib/tcpdump/tests/ikev2fourv.out	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), len=
gth 404)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 7aee!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[I]:
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8=
c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc7=
7221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba=
961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
-    (nonce: len=3D32 nonce=3D(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b0=
73f942282bd52ebfe3e6) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), len=
gth 88)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum a706!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[R]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e123f=
2b0c71aefcf0cb3b798782c6))
-IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), len=
gth 436)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 7d6f!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[I]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e...b=
a041b5de59955900d818ac54e18b236739d9e8b))
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8=
c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc7=
7221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba=
961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
-    (nonce: len=3D32 nonce=3D(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b0=
73f942282bd52ebfe3e6) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), len=
gth 332)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 337f!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_ini=
t[R]:
-    (sa: len=3D44
-        (p: #1 protoid=3Disakmp transform=3D4 len=3D44
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dprf id=3Dhmac-sha )
-            (t: #3 type=3Dinteg id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1024 )))
-    (v2ke: len=3D128 group=3Dmodp1024 5a56714d3abf64e3a3f401ead9f5323ff0b7=
7faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9=
a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d=
7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
-    (nonce: len=3D32 nonce=3D(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb=
0f67cff81721dfeec1f9) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip))
-IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), len=
gth 264)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum fdaa!] isakmp 2.0 ms=
gid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_aut=
h[I]:
-    (v2e: len=3D204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e=
8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f=
4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c44624=
7cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f=
41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f=
58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
-IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), len=
gth 184)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum bf00!] isakmp 2.0 ms=
gid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_aut=
h[R]:
-    (v2e: len=3D124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2=
b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf5=
1ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da=
9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
-IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum c32d!] isakmp 2.0 ms=
gid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902=
db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b619=
9f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff1=
1c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864a=
f9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4=
bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0=
e10b144fbbe)
-IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), len=
gth 248)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum e6d7!] isakmp 2.0 ms=
gid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b=
7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132df=
b8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4=
446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b=
8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2=
aeddce2251fd6d5d9cd54d)
-IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum f2c0!] isakmp 2.0 ms=
gid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf=
5d03ab2420d277d3b2f28d1f003da98d1)
-IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum e03a!] isakmp 2.0 ms=
gid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a4=
7970068dacb342f7999cc3d0d59f77a94)
-IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 661c!] isakmp 2.0 ms=
gid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa74=
5b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012=
e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede=
296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce=
14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20e=
d33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97=
dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
-IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum d1d0!] isakmp 2.0 ms=
gid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba=
22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93=
ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfd=
b41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda001=
3e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48=
d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9=
550b50b49bb)
-IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum db6a!] isakmp 2.0 ms=
gid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f17=
8b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d1=
5763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b6382287286=
5df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae=
6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
-IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 9a59!] isakmp 2.0 ms=
gid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7d=
e4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4b=
d5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e48=
4768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6ce=
e1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
-IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 5ff4!] isakmp 2.0 ms=
gid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6ed=
bb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4e=
de7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63eb=
f32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca=
5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d=
2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af559786964=
80ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
-IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 9890!] isakmp 2.0 ms=
gid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a3328=
13b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f035542=
81c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e8=
0bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606f=
c5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c9=
60f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c=
9382506a021)
-IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 902e!] isakmp 2.0 ms=
gid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f375=
4d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d7=
0536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c=
97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc=
0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
-IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 49dd!] isakmp 2.0 ms=
gid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76=
634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d=
90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288=
fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a=
4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
-IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), len=
gth 392)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 1d29!] isakmp 2.0 ms=
gid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf=
23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a904447=
7ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28b=
a307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c=
7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d236=
7e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65=
c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4=
177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241=
dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6=
f63af5dd47)
-IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), len=
gth 344)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 25cf!] isakmp 2.0 ms=
gid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fde=
f3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6e=
f2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4=
e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d=
51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d=
75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c4=
8e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0=
c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
-IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), len=
gth 120)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 6e7f!] isakmp 2.0 ms=
gid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
-    (v2e: len=3D60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0=
bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2fourv4=
.out
--- a/head/contrib/tcpdump/tests/ikev2fourv4.out	Wed Jul 25 16:20:13 2012 +=
0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), len=
gth 404)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 7aee!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[I]:
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8=
c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc7=
7221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba=
961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
-    (nonce: len=3D32 nonce=3D(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b0=
73f942282bd52ebfe3e6) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip) data=3D(442ffe5=
aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e=
18b236739d9e8b))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip) data=3D(ba=
041b5de59955900d818ac54e18b236739d9e8b))
-IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), len=
gth 88)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum a706!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[R]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e123f=
2b0c71aefcf0cb3b798782c6))
-IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), len=
gth 436)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 7d6f!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_ini=
t[I]:
-    (n: prot_id=3D#0 type=3D16390(cookie) data=3D(00000001c2221e50c16e123f=
2b0c71aefcf0cb3b798782c622000078000000740101000c0300000c0100000c800e0080030=
0000c0100000c800e01000300000c0100000c800e00c0030000080100000303000008020000=
020300000802000001030000080200000403000008030000020300000803000001030000080=
30000050300000804000002000000080400000e2800008800020000b5445bd60cece6fdcd3c=
96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933=
ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c7=
55996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740b=
e4d2a4cf39d290000246128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd5=
2ebfe3e62900001c00004004442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c000=
04005ba041b5de59955900d818ac54e18b236739d9e8b))
-    (sa: len=3D116
-        (p: #1 protoid=3Disakmp transform=3D12 len=3D116
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dencr id=3Daes (type=3Dkeylen value=3D0100))
-            (t: #3 type=3Dencr id=3Daes (type=3Dkeylen value=3D00c0))
-            (t: #4 type=3Dencr id=3D3des )
-            (t: #5 type=3Dprf id=3Dhmac-sha )
-            (t: #6 type=3Dprf id=3Dhmac-md5 )
-            (t: #7 type=3Dprf id=3Daes128_xcbc )
-            (t: #8 type=3Dinteg id=3Dhmac-sha )
-            (t: #9 type=3Dinteg id=3Dhmac-md5 )
-            (t: #10 type=3Dinteg id=3Daes-xcbc )
-            (t: #11 type=3Ddh id=3Dmodp1024 )
-            (t: #12 type=3Ddh id=3Dmodp2048 )))
-    (v2ke: len=3D128 group=3Dmodp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8=
c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc7=
7221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba=
961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
-    (nonce: len=3D32 nonce=3D(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b0=
73f942282bd52ebfe3e6) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip) data=3D(442ffe5=
aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e=
18b236739d9e8b))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip) data=3D(ba=
041b5de59955900d818ac54e18b236739d9e8b))
-IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), len=
gth 332)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 337f!] isakmp 2.0 ms=
gid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_ini=
t[R]:
-    (sa: len=3D44
-        (p: #1 protoid=3Disakmp transform=3D4 len=3D44
-            (t: #1 type=3Dencr id=3Daes (type=3Dkeylen value=3D0080))
-            (t: #2 type=3Dprf id=3Dhmac-sha )
-            (t: #3 type=3Dinteg id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1024 )))
-    (v2ke: len=3D128 group=3Dmodp1024 5a56714d3abf64e3a3f401ead9f5323ff0b7=
7faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9=
a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d=
7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
-    (nonce: len=3D32 nonce=3D(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb=
0f67cff81721dfeec1f9) )
-    (n: prot_id=3D#0 type=3D16388(nat_detection_source_ip) data=3D(fe2bfb7=
c2c81ed0b61f756b57fac78a75ced8af60000001c00004005905954a783be2c37e2ccc4fdd2=
70a532dbe6f428))
-    (n: prot_id=3D#0 type=3D16389(nat_detection_destination_ip) data=3D(90=
5954a783be2c37e2ccc4fdd270a532dbe6f428))
-IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), len=
gth 264)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum fdaa!] isakmp 2.0 ms=
gid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_aut=
h[I]:
-    (v2e: len=3D204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e=
8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f=
4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c44624=
7cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f=
41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f=
58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
-IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), len=
gth 184)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum bf00!] isakmp 2.0 ms=
gid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_aut=
h[R]:
-    (v2e: len=3D124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2=
b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf5=
1ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da=
9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
-IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum c32d!] isakmp 2.0 ms=
gid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902=
db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b619=
9f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff1=
1c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864a=
f9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4=
bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0=
e10b144fbbe)
-IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), len=
gth 248)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum e6d7!] isakmp 2.0 ms=
gid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b=
7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132df=
b8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4=
446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b=
8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2=
aeddce2251fd6d5d9cd54d)
-IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum f2c0!] isakmp 2.0 ms=
gid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf=
5d03ab2420d277d3b2f28d1f003da98d1)
-IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), len=
gth 104)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum e03a!] isakmp 2.0 ms=
gid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a4=
7970068dacb342f7999cc3d0d59f77a94)
-IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 661c!] isakmp 2.0 ms=
gid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa74=
5b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012=
e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede=
296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce=
14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20e=
d33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97=
dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
-IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum d1d0!] isakmp 2.0 ms=
gid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba=
22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93=
ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfd=
b41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda001=
3e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48=
d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9=
550b50b49bb)
-IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum db6a!] isakmp 2.0 ms=
gid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f17=
8b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d1=
5763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b6382287286=
5df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae=
6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
-IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 9a59!] isakmp 2.0 ms=
gid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7d=
e4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4b=
d5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e48=
4768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6ce=
e1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
-IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), len=
gth 312)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 5ff4!] isakmp 2.0 ms=
gid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6ed=
bb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4e=
de7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63eb=
f32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca=
5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d=
2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af559786964=
80ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
-IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), len=
gth 280)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 9890!] isakmp 2.0 ms=
gid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a3328=
13b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f035542=
81c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e8=
0bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606f=
c5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c9=
60f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c=
9382506a021)
-IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 902e!] isakmp 2.0 ms=
gid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f375=
4d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d7=
0536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c=
97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc=
0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
-IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), len=
gth 232)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 49dd!] isakmp 2.0 ms=
gid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76=
634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d=
90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288=
fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a=
4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
-IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), len=
gth 392)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 1d29!] isakmp 2.0 ms=
gid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
I]:
-    (v2e: len=3D332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf=
23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a904447=
7ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28b=
a307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c=
7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d236=
7e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65=
c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4=
177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241=
dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6=
f63af5dd47)
-IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), len=
gth 344)
-    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 25cf!] isakmp 2.0 ms=
gid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[=
R]:
-    (v2e: len=3D284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fde=
f3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6e=
f2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4=
e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d=
51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d=
75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c4=
8e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0=
c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
-IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), len=
gth 120)
-    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 6e7f!] isakmp 2.0 ms=
gid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
-    (v2e: len=3D60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0=
bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2pI2-se=
crets.txt
--- a/head/contrib/tcpdump/tests/ikev2pI2-secrets.txt	Wed Jul 25 16:20:13 2=
012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-ikev2 I 0x0001020304050607 0xc02e7a3031a03188 sha1:0x4ea8e662b07cdd430f694=
4c6723e4b82d5722418 aes128:0x3f44bf47cafd8150591deb088199fcbf
-ikev2 R 0x0001020304050607 0xc02e7a3031a03188 sha1:0x515b0bd22e6d76b34fdb7=
60aa7bfad80b109b75d aes128:0xbedb67ec7dc3d00cccac42e70cd63bde
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2pI2.out
--- a/head/contrib/tcpdump/tests/ikev2pI2.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length =
536, bad cksum 0 (->f48e)!)
-    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 =
cookie 0001020304050607->0000000000000000: parent_sa ikev2_init[I]:
-    (sa[C]: len=3D240
-        (p: #1 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3Daes )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1536 ))
-        (p: #2 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3Daes )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-md5 )
-            (t: #4 type=3Ddh id=3Dmodp1536 ))
-        (p: #3 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3D3des )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1536 ))
-        (p: #4 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3D3des )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-md5 )
-            (t: #4 type=3Ddh id=3Dmodp1536 ))
-        (p: #5 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3D3des )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-sha )
-            (t: #4 type=3Ddh id=3Dmodp1024 ))
-        (p: #6 protoid=3Disakmp transform=3D4 len=3D40
-            (t: #1 type=3Dencr id=3D3des )
-            (t: #2 type=3Dinteg id=3Dhmac-sha )
-            (t: #3 type=3Dprf id=3Dhmac-md5 )
-            (t: #4 type=3Ddh id=3Dmodp1024 )))
-    (v2ke: len=3D192 group=3Dmodp1536 ffbc6a92a6b9559b05fa96a7a43507b4c1e1=
c0861a5871d9ba73a163113788c0debb3979e7ff0c52b4ce6050eb05369ea4300d2bff3b1b2=
99f3b802ccb13318c2ab9e3b5627cb4b35eb939982076b57c050d7b35c3c5c7cc8c0feab7b6=
4a7d7b6b8f6b4dabf4ac406dd20126b90a98ac766efa37a7890c4394ff9a77615b58f52d651=
bbfa58d2a549af8b01aa4bca3d762426663b155d4ebda9f60a6a13573e6a888135cdc673dd4=
83029903f3a90eca23e1ec1e270331b2d050f4f758f49927)
-    (nonce[C]: len=3D16 nonce=3D(b5ce8419095c6e2b6b62d3055305b3c4) )
-    (v2vid: len=3D12 vid=3DOErlA\nQukSR 4f45726c415c6e51756b5352)
-IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length =
312, bad cksum 0 (->f56e)!)
-    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 =
cookie 0001020304050607->c02e7a3031a03188: parent_sa ikev2_auth[I]:
-    (v2e[C]: len=3D252 000102030405060708090a0b0c0d0e0f4bcf2da20444caca5fb=
591c1ab4b9b4d4f22ac7cb49e6b08d2738884fb3efd8eebc607accc1f80f890e24df65e53d6=
1e899f1d319d89c033524d036fd4ea7e0345def93356e2865e5481a6a20a7604083de04595e=
1071a2e98179eefb4e6ae4708e6875ae297b4dc5b2602d971e36f66cef12303946eea897d86=
bbb5903115281a266f4dcb627e146972ff2f7102931df82f24a2e40df594afc11e0a85eb1c5=
6b9eddb7e2de52fa95cf51f4b4c9b5d53237ae39f64519413d201374a987fa8d1ce460fa2d6=
7c417462203f2948c0b9ed8b734a69a015ff63bde767f44f83c3cfe5119d72d74e695b1032b=
957
-            (v2IDi: len=3D8 0200000077657374 fqdn:west)
-            (v2auth: len=3D196 method=3Drsasig authdata=3D(000000000000000=
000000000000000000000000000000000000000000000000000000000000000000000000000=
000000000000000000000000000000000000000000000000000000000000000000000000000=
000000000000000000000000000000000000000000000000000000000000000000000000000=
000000000000000000000000000000000000000000000000000000000000000000000000000=
000000000000000000000000000000000000000000000000000000000000000000000) ))
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ikev2pI2.puu
--- a/head/contrib/tcpdump/tests/ikev2pI2.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-begin 644 ikev2pI2.pcap
-MU,.RH0(`!````````````-P%````````@%$!```````<`@``'`(```(```!%
-M``(8`````$`1``#``0(MP`$"%P'T`?0"!`````$"`P0%!@<``````````"$@
-M(@@````````!_"*``/0"```H`0$`!`,```@!```,`P``"`,```(#```(`@``
-M`@````@$```%`@``*`(!``0#```(`0``#`,```@#```"`P``"`(```$````(
-M!```!0(``"@#`0`$`P``"`$```,#```(`P```@,```@"```"````"`0```4"
-M```H!`$`!`,```@!```#`P``"`,```(#```(`@```0````@$```%`@``*`4!
-M``0#```(`0```P,```@#```"`P``"`(```(````(!````@```"@&`0`$`P``
-M"`$```,#```(`P```@,```@"```!````"`0```(H``#(``4``/^\:I*FN56;
-M!?J6IZ0U![3!X<"&&EAQV;ISH6,1-XC`WKLY>>?_#%*TSF!0ZP4VGJ0P#2O_
-M.QLIGSN`+,L3,8PJN>.U8GRTLUZY.9@@=3DK5\!0U[-</%Q\R,#^JWMDI]>VN/
-M:TVK]*Q`;=3D(!)KD*F*QV;OHWIXD,0Y3_FG=3DA6UCU+64;OZ6-*E2:^+`:I+RC
-MUV)"9F.Q5=3D3KVI]@IJ$U<^:HB!-<W&<]U(,"F0/SJ0[*(^'L'B<#,;+04/3W
-M6/29)RN``!2USH09"5QN*VMBTP53!;/$````$$]%<FQ!7&Y1=3D6M34@"C`@``
-M````/`$``#P!```"````10`!.`````!`$0``P`$"+<`!`A<!]`'T`20````!
-M`@,$!08'P"YZ,#&@,8 at N(",(`````````1PC@`$```$"`P0%!@<("0H+#`T.
-M#TO/+:($1,K*7[61P:M+FTU/(JQ\M)YK"-)SB(3[/OV.Z\8'K,P?@/B0XDWV
-M7E/6'HF?'3&=3DB<`S4DT#;]3J?@-%WODS5N*&7E2!IJ(*=3D at 0(/>!%E>$'&BZ8
-M%Y[OM.:N1PCFAUKBE[3<6R8"V7'C;V;.\2,#E&[JB7V&N[60,14H&B9O3<MB
-M?A1I<O\O<0*3'?@O)*+D#?64K\$>"H7K'%:Y[=3DM^+>4OJ5SU'TM,FUU3(WKC
-MGV11E!/2`3=3D*F'^HT<Y&#Z+6?$%T8B`_*4C`N>V+<TIIH!7_8[WG9_1/@\//
-,Y1&=3D<M=3D.:5L0,KE7
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp-dele=
te-segfault.puu
--- a/head/contrib/tcpdump/tests/isakmp-delete-segfault.puu	Wed Jul 25 16:2=
0:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-begin 644 isakmp-delete-segfault.pcap
-MU,.RH0(`!``````````````$```!````@"X```````"I`@``J0(``/______
-M_P$!`0$!`0@`10``I@`O0`!`$3PA?P```7\```$!]`'T`<@``!N3$,+\/7K^
-M3SF!FR'H6?T,OKXN&YH=3D5T,AEYH%R@(@71+C65#___\`````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-!````
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp-iden=
tification-segfault.puu
--- a/head/contrib/tcpdump/tests/isakmp-identification-segfault.puu	Wed Jul=
 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-begin 644 isakmp-identification-segfault.pcap
-MU,.RH0(`!````````````/__````````HV%@0"_*#@`\`0``/`$```(```!%
-M``$XH&P``/\1'$9_```!?P```0'U`?0!)$KL)9EPC(1ZBP(```````````40
-M`@`````````!'````0`"````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-I````````````````````````````````````````````````````````
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp-poin=
ter-loop.puu
--- a/head/contrib/tcpdump/tests/isakmp-pointer-loop.puu	Wed Jul 25 16:20:1=
3 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-begin 644 isakmp-pointer-loop.pcap
-MU,.RH0(`!````````````/__```!````DR;5/[_@!0!(````2``````$6D[H
-ME``"+6_:]@@`10``.H=3DE0`#S$0HB@:KY?H&J^5<!]`'T`";R?@``````````
-6```````````($`$````````````*````
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp1.out
--- a/head/contrib/tcpdump/tests/isakmp1.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-IP 127.0.0.1.500 > 127.0.0.1.500: isakmp:
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp2.out
--- a/head/contrib/tcpdump/tests/isakmp2.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp3.out
--- a/head/contrib/tcpdump/tests/isakmp3.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-IP (tos 0x0, ttl 255, id 41068, offset 0, flags [none], proto UDP (17), le=
ngth 312)
-    127.0.0.1.501 > 127.0.0.1.500: isakmp 1.0 msgid 00000000: phase 1 I id=
ent:
-    (id: idtype=3DFQDN protoid=3D0 port=3D0 len=3D248 \0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00=
\0x00\0x00\0x00\0x00)
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp4.out
--- a/head/contrib/tcpdump/tests/isakmp4.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
-ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
-IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
-IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
-IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
-IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
-IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 1 I ide=
nt[E]
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 1 R ide=
nt[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/other=
s I oakley-quick[E]
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/other=
s R oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/other=
s I oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x1), length 132
-ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
-ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/other=
s R oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/other=
s I oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x2), length 132
-IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x3), length 132
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/other=
s R oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/other=
s I oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x4), length 132
-IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x5), length 132
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x6), length 132
-ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
-ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
-IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x7), length 132
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/other=
s R oakley-quick[E]
-IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=3D0xf4dc0ae5,seq=
=3D0x8), length 132
-ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
-ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
-IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
-IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/other=
s R inf[E]
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isakmp4500.=
puu
--- a/head/contrib/tcpdump/tests/isakmp4500.puu	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-begin 644 isakmp4500.pcap
-MU,.RH0(`!``````````````&```!```````````````J````*@```/______
-M_Q```-ZMN@@&``$(``8$``$0``#>K;K``0+^````````P`$"%P``````````
-M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``"$```9&0CP`$"%Q```-ZM
-MNL`!`OX``````````$X!``!.`0``$```9&0C$```WJVZ"`!%``%```!``#\1
-MM97``0+^P`$"%P'T`?0!+)6LGHGR.(^0O!X```````````$0`@`````````!
-M)`T``)0````!`````0```(@``0`$`P``(``!``"`"P`!@`P.$(`!``6``@`!
-M@`,``X`$``4#```@`0$``(`+``&`#`X0@`$`!8`"``*``P`#@`0`!0,``"`"
-M`0``@`L``8`,#A"``0`%@`(``H`#``.`!``"````(`,!``"`"P`!@`P.$(`!
-M``6``@`!@`,``X`$``(-```03T5K4F)'6%)V;5!%#0``%*_*UQ-HH?'):X:6
-M_'=3D7`0`-```42A,<@0<#6$5<5RCR#I5%+PT``!1]E!FF4Q#*;RP7G9(54IU6
-M#0``%,U at 1D,UWR'X?/VR_&BVI$@````41(45+1BVN\T+Z*A&E7G=3DS```````
-M````L@```+(````0``#>K;H0``!D9",(`$4``*0``$``0!&U,<`!`A?``0+^
-M`?0!]`"08%.>B?(XCY"\'@IT-7SCT:2_`1`"``````````"(#0``-`````$`
-M```!````*``!``$````@``$``(`+``&`#`X0@`$`!8`"``&``P`#@`0`!0T`
-M`!!/16M28D=3D84G9M4$4-```4K\K7$VBA\<EKAI;\=3DU<!`````!1*$QR!!P-8
-M15Q7*/(.E44O``````````!&`0``1@$``!```&1D(Q```-ZMN@@`10`!.```
-M0``_$;6=3DP`$"_L`!`A<!]`'T`206L9Z)\CB/D+P>"G0U?./1I+\$$`(`````
-M`````1P*``#$M]N'X4E&AEMT*7(UA)]?Z:M`RW>TPRPR/2V-U^-O'ST7,9K7
-MCQQFQ`#^2/PP0G^@]QHR=3D9!Y7?/EL'O(\L(I'#51V6N1?)1J+6P-A6&T0Y@"
-M-KJ[,_WPC+W%H'KSV>J_(W#3`3A4&A^4Q*T^3Q*2'^M#9[XHW-IVWO.#J=3DM?
-MDHTX?/DS#]CDJG;?BC_E:$W:3AD]N9+!U'[+6UU.`,)4^&ASH2SO\CU.=3D2!#
-MH'<T at 54L9-$X/5ZQ*&_;9BF5E3Q7%```%&;6]C)I>UY(FI*395>I?Z at 4```4
-M;OX2\$KY#?O/L5UQN$&[G@```!1$]1?@/[.!^`^$+14XS/^L``````````!&
-M`0``1@$``!```-ZMNA```&1D(P@`10`!.```0`!`$;2=3DP`$"%\`!`OX!]`'T
-M`20!UYZ)\CB/D+P>"G0U?./1I+\$$`(``````````1P*``#$YYI?^#V[%WO*
-M+,?[XKU\"YVFZ0UCMOA'6Y:C93#4^M&/)'3",1Q/"&7*"D0_<1SX#@"KRZDV
-M\_XCB4O9XNS0"_O8-'[C&AG5O;G^G_N*#?4,"OA'?R><"WN68Q(H<1EONM3!
-MS3=3D]U]MRZ(4UBM]&:I\KW&3X;LQ%M[B0:,/"]DTM1^J8+8CESE'6JEFCE,,$
-M?$W5P,^5=3D1K1AT at YX0J-9%/E]`MY&<%C?*Y*K\'5X#2B5OD6+FTGJ)^V299#
-M*>H6%```%&Q^7ZRJ16$T%<6UJE<?IS$4```4.9,$U0^]3*/;'AEZ]\$>;P``
-M`!1N_A+P2OD-^\^Q77&X0;N>``````````!R`0``<@$``!```&1D(Q```-ZM
-MN@@`10`!9```0``_$;5QP`$"_L`!`A<1E!&4`5!RH0````">B?(XCY"\'@IT
-M-7SCT:2_!1`"`0````````%$H"1 at W`ZTW:4&'Z=3D!K*`IRTNLK:3J/^$DD/B4
-M>Q,F?M5`3=3D(?!HGW$/M)`\W8Z/'FXK6$!(9!7BL9!@QV=3D(^E7><\)R8EVE3F
-M6`.O^:2F!(>LD7%71N]`LA?B!/!0\*H2"YOJ0]_W9#9DJYZ).M/.;+8A?L[O
-M`J-'HV_0*'&&^P\8:$'I^"13SN]VT%5\8O8;P2VV=3D`+&9+4]'MH+/&:'PR!H
-M4O#,GI+1=3D+*MRN"5.-8D&$16)<O!`SBZM\AKC&P_X<;S]@/)1)Y\.&WOY7\H
-M1V\P7.NL<92?18X,F+:L`^^F#O1Y505Q0H85DLC9DG)B/V<^\\%WS5TO;E$:
-M"1$F`DG*=3DR<?ZQYTN1P^4Q#1].60GK<.AK=3D_XOM^<JSB!P9\:C2X3QI`L]D`
-M`````````%H!``!:`0``$```WJVZ$```9&0C"`!%``%,``!``$`1M(G``0(7
-MP`$"_A&4$90!.,?$`````)Z)\CB/D+P>"G0U?./1I+\%$`(!`````````2S"
-M8Z5]+<^-M8Q9P&X;^%JN2^*NYC1"AZ%4J-PIMZM611W<D%]6ET9DUBF=3DTH.0
-MQQSMHS[FF;=3DE?$HJP1Z27H0;DRN`@QD+=3D-Y#&>A:Z$*6IBWC.3.9037)<B;;
-M0U&M+H9[&=3DK##GX++CXGX(L;7E^)B\Q+'_'N5/5,"[?P96K'-(4;25\#D%M/
-MVIN6C#7'Q:0PBF3\=3D1($ODAZ(&:$((=3DV1,STM/MIB(]C;^7T=3DR$*%X?+MTX^
-MB*X%6DJ09BC(XU@(,4IU1Q]MV_;%S at 8Y96MB,W3/!#M5BS)JGA5$(J4H5W at 8
-M<*B:G<;Q^>L`[ADSH`K&0*^[6)>")$E3;"4;U=3D"I",2*`1TP_=3D5+%B"II3>(
-M'@``````````V@$``-H!```0``!D9",0``#>K;H(`$4``<P``$``/Q&U"<`!
-M`O[``0(7$901E`&XW3@`````GHGR.(^0O!X*=3D#5\X]&DOP at 0(`&+?HE'```!
-MK''I#[H$<_"<YEGG2)8)!97PF%0-_\8^X(V1[(=3D%+UAMJ9A(1/!,[6+WM32C
-M)*0IG:EM/C)SF$P$=3D$P"Y_R.@/MCQOS;\U>4YQ5SAO`10)\84&I?],R2.?5M
-MZ/Y^Y"#*%+0.<9KX(/Z$'&M,-)/2I7U^,!G,*G!E_O.D;7F_;D^V#&&*(R.+
-MH;YSI'1 at I8GV%+\'*6,1(8`8D(VUP[,(R?PQ7#,5WQY3[HT+IFF"3?.+;(*M
-M_?C;JQ#]O'9522*ZO7>'TEDYLLA`*L$8(XJ$!T>_HYS?G=3DWR11E($-021FMS
-MB[NXAJ^CQVGO87[B@^I6THHW-%Z8%PTH&BCO^.[@K_NS8RVTE7CE&MA]6C@>
-MEDIDM&T^.41?F(\X$Z-5[547$HC=3D'*\>8``"[9.IHT)+[,^LZ?_6(6I\L32#
-MF-JM7U".L4?X/8=3DG*KFA<>THJ-622W,;J`IW2^MLBI?_O<<EC)!V1^7\U,YK
-M7'E&R_].`C#$#;X]E]1SX at 092]ZE(@C-2M!ZAW.#%L^J[^'13BY&SG@`````
-M`````(H!``"*`0``$```WJVZ$```9&0C"`!%``%\``!``$`1M%G``0(7P`$"
-M_A&4$90!:,KN`````)Z)\CB/D+P>"G0U?./1I+\($"`!BWZ)1P```5RM:&N4
-MQ1;W19+;77%JE,,H'8&F6ITJM=3DR5O>KL1%[]#E/LJ#&./WFJ`#,3C!H=3DI_'*
-M34/)_E+)(`!A&W00*T\"9O9JX0N">$#'(ZL<$'\P=3DGHB.0:\AXT/!^^*<P2!
-M<!A\>%U.'5#'2IX<Q;9+I6GRVRW_+T,S>:7/2KZ$%^3W;%R4[&2T>'?2(@FF
-M#T/=3D+2O[?Q4.(\@Q;]3V=3DL5Q2XFG)^E)0J:1AX`J4%E3_Y]^6=3D'!R-ENY%9#
-M3!XD:5K?/V&.!&X#>I_$96Y;P_!5']<G(@<:I94]["%1#F3MY*U1V%WQVL1_
-MRT*Z$\KEVW>070(D3N#$47!AZ^VCW-?I?JT2AL5YOWBO5[D!"OV)46(FK)9"
-M$C40GNJ7*A,SE6%6A(4>KPE(-$)=3DL6=3D2VQLO>Y12N8QBH3V%(90.\5YL`R,O
-M1@``````````8@```&(````0``!D9",0``#>K;H(`$4``%0``$``/Q&V@<`!
-M`O[``0(7$901E`!`KQ<`````GHGR.(^0O!X*=3D#5\X]&DOP at 0(`&+?HE'````
-M-"4[,88.:.R$%:1S6K/X<EH]YZH).22D`@``````````K@```*X````0``!D
-M9",0``#>K;H(`$4``*"JM```/Q%+@<`!`O[``0(7$901E`",``#TW`KE````
-M`?SD"<11-X_=3DFBX7J&]'/C[B>;BA23X"^A;(BA/H;8_\0'U,E at M&;+=3DR&*LY
-MAF.NT6<PXR31!Z\MX at W4>/*J.SL[UR2)+H^A6#5<38R;!FY\:AV_6ZV)FQ2!
-M1T\L:`GPK6U?_?TVHSK[6(WSF?Q"XF5K/0U,A.Y+D\RP]G(``````````"H`
-M```J````$```WJVZ$```9&0C"`8``0@`!@0``1```&1D(\`!`A<```````#`
-M`0+^```````````J````*@```!```&1D(Q```-ZMN@@&``$(``8$``(0``#>
-MK;K``0+^$```9&0CP`$"%P``````````B@$``(H!```0``#>K;H0``!D9",(
-M`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0O!X*=3D#5\
-MX]&DOP at 0(`&+?HE'```!7*UH:Y3%%O=3D%DMM=3D<6J4PR@=3D@:9:G2JUW)6]ZNQ$
-M7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=3D!`K3P)F]FKA"X)X0,<C
-MJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=3D4,=3D*GAS%MDNE:?+;+?\O0S-Y
-MI<]*OH07Y/=3DL7)3L9+1X=3D](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+B:<GZ4E"
-MII&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO#\%4?UR<B
-M!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=3DY!=3D`B1.X,11<&'K[:/<U^E^
-MK1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4 at T0EVQ9U+;
-M&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````!B````8@```!```&1D(Q``
-M`-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1E!&4`$"O%P````">B?(XCY"\
-M'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA at YH[(05I'-:L_AR6CWGJ at DY)*0"
-M``````````"N````K@```!```&1D(Q```-ZMN@@`10``H*JU```_$4N`P`$"
-M_L`!`A<1E!&4`(P``/3<"N4````";5_]_3:C.OM8C?.9_$+B9;KU/R+D"U^-
-MLGB)>"40ZCMW:+^A4%UI1Y)\.O4B]`44T(2XS\S=3D2[[[X.6A-PCDZP*3XFAD
-M294>+W:M%%+\`)?XP#[:6]NHG>#;FFF-RMAA7D"KQ-&OX<E(GNRS/6*%P8?B
-M>3Z5S'CBYC"740``````````*P```"L````0``!D9",0``#>K;H(`$4``!T`
-M`$``/Q&VN,`!`O[``0(7$901E``)6)O_``````````"N````K@```!```&1D
-M(Q```-ZMN@@`10``H*JV```_$4M_P`$"_L`!`A<1E!&4`(P``/3<"N4````#
-M7D"KQ-&OX<E(GNRS/6*%P6M-D[MJGU)RI[EA3)LD/W^:S2V!1P<2Y/0I:_`%
-MF3-`LSA3&QM8DD^\>1F0#F$^I at 1V5E>.`*!H=3DZ?(&*,.MS]E4H#P+<JB/C=3DQ
-MS26IBN>2"^MMG?%@Y3*L%D'7$>LLOA,HUEB3IB;87,\:-0``````````B@$`
-M`(H!```0``#>K;H0``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%H
-MRNX`````GHGR.(^0O!X*=3D#5\X]&DOP at 0(`&+?HE'```!7*UH:Y3%%O=3D%DMM=3D
-M<6J4PR@=3D@:9:G2JUW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@
-M`&$;=3D!`K3P)F]FKA"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=3D
-M4,=3D*GAS%MDNE:?+;+?\O0S-YI<]*OH07Y/=3DL7)3L9+1X=3D](B":8/0]TM*_M_
-M%0XCR#%OU/9VQ7%+B:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_
-M88X$;@-ZG\1E;EO#\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;
-M=3DY!=3D`B1.X,11<&'K[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J
-M$S.585:$A1ZO"4 at T0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&````````
-M``!B````8@```!```&1D(Q```-ZMN@@`10``5```0``_$;:!P`$"_L`!`A<1
-ME!&4`$"O%P````">B?(XCY"\'@IT-7SCT:2_"!`@`8M^B4<````T)3LQA at YH
-M[(05I'-:L_AR6CWGJ at DY)*0"``````````"N````K@```!```&1D(Q```-ZM
-MN@@`10``H*JW```_$4M^P`$"_L`!`A<1E!&4`(P``/3<"N4````$"^MMG?%@
-MY3*L%D'7$>LLOHFXH,6B3<'M/]A_UT%X.MP;F`ZT@=3D\62*]W'/Y5 at 1,(8+`W
-MTIZ(C;<M^%)G.9R$N1)6J_7Z_!GT%\UMQ:XQPM8]>8G'VC<"+'VM:$K/=3D:VI
-MD#:KB^/G$BB@:+=3DTSV\S)T5-E#UOBKZ"E5_,%P``````````*P```"L````0
-M``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[``0(7$901E``)6)O_````
-M``````"N````K@```!```&1D(Q```-ZMN@@`10``H*JX```_$4M]P`$"_L`!
-M`A<1E!&4`(P``/3<"N4````%D#:KB^/G$BB@:+=3DTSV\S)XZ>X,YAOI/W1_BS
-M7:N%MO?3J+1\I=3D>O-<R^HIZU--!X&6`$]U#*J@;R at 64%SKQ.B/^^IGB<&88W
-M[8)FS;H6%4)M9NV]\#Q+3^^'.,PQY7<SC6OG8>36N1GBDD+HMR]D8U)G(OJ]
-MMX!><$3'U0``````````K@```*X````0``!D9",0``#>K;H(`$4``*"JN0``
-M/Q%+?,`!`O[``0(7$901E`",``#TW`KE````!HUKYV'DUKD9XI)"Z+<O9&,5
-M_X1R'`1@>@>3:9638^IH_2\8CVE-BL2&43,3ZAY3'1 at 3Z:+\)XSXDSO]L,@?
-MCOL6<I7.*]L#N>@]+&+X^#H(D.X>B;)<%[E4:S:#.D70:!#<8Q\QZFH`<C&^
-MG'`JQ0_F"K\L?F]\HUG$8G,``````````"H````J````$```9&0C$```WJVZ
-M"`8``0@`!@0``1```-ZMNL`!`OX```````#``0(7```````````J````*@``
-M`!```-ZMNA```&1D(P@&``$(``8$``(0``!D9"/``0(7$```WJVZP`$"_@``
-M````````*P```"L````0``!D9",0``#>K;H(`$4``!T``$``/Q&VN,`!`O[`
-M`0(7$901E``)6)O_``````````"N````K@```!```&1D(Q```-ZMN@@`10``
-MH*JZ```_$4M[P`$"_L`!`A<1E!&4`(P``/3<"N4````'$-QC'S'J:@!R,;Z<
-M<"K%#ST!-8\O2;F**R/9Z%HAZ`2#KQIW*9'HI9C067ZK-G^XAL^O0I7Z/'H(
-M<.`7P<QG3<<?7R7Z!!3MQ1MY5B=3DF9N",J at L.`]?M!U5)TB`<"]W5C[,`[Y'2
-MT6\N$CD at 6'"CP$3F`AEER>@/P'/E0@``````````B@$``(H!```0``#>K;H0
-M``!D9",(`$4``7P``$``0!&T6<`!`A?``0+^$901E`%HRNX`````GHGR.(^0
-MO!X*=3D#5\X]&DOP at 0(`&+?HE'```!7*UH:Y3%%O=3D%DMM=3D<6J4PR@=3D@:9:G2JU
-MW)6]ZNQ$7OT.4^RH,8X_>:H`,Q.,&AVG\<I-0\G^4LD@`&$;=3D!`K3P)F]FKA
-M"X)X0,<CJQP0?S!V>B(Y!KR'C0\'[XIS!(%P&'QX74X=3D4,=3D*GAS%MDNE:?+;
-M+?\O0S-YI<]*OH07Y/=3DL7)3L9+1X=3D](B":8/0]TM*_M_%0XCR#%OU/9VQ7%+
-MB:<GZ4E"II&'@"I065/_GWY9T<'(V6[D5D-,'B1I6M\_88X$;@-ZG\1E;EO#
-M\%4?UR<B!QJEE3WL(5$.9.WDK5'87?':Q'_+0KH3RN7;=3DY!=3D`B1.X,11<&'K
-M[:/<U^E^K1*&Q7F_>*]7N0$*_8E18B:LED(2-1">ZI<J$S.585:$A1ZO"4 at T
-M0EVQ9U+;&R][E%*YC&*A/84AE`[Q7FP#(R]&``````````"N````K@```!``
-M`&1D(Q```-ZMN@@`10``H*J[```_$4MZP`$"_L`!`A<1E!&4`(P``/3<"N4`
-M```(C[,`[Y'2T6\N$CD at 6'"CP*@CBNC9!,,HJ*K#(R8N5?*%N(<XX+>GVJ+F
-M#M/G_FP&NANM[W@`)Y9\\Z?F4SX%'E.^2BCP\9+!/`25PK%+G'U@$&1+=3D@%(
-M#9RV^U"B8-5,EXJ0-QZTLOJ/L^F\).BC at ++XQGOL8JC_`L;'=3D```````````
-M*@```"H````0``#>K;H0``!D9",(!@`!"``&!``!$```9&0CP`$"%P``````
-M`,`!`OX``````````"H````J````$```9&0C$```WJVZ"`8``0@`!@0``A``
-M`-ZMNL`!`OX0``!D9"/``0(7```````````K````*P```!```&1D(Q```-ZM
-MN@@`10``'0``0``_$;:XP`$"_L`!`A<1E!&4``E8F_\``````````'H```!Z
-M````$```WJVZ$```9&0C"`!%``!L``!``$`1M6G``0(7P`$"_A&4$90`6,G#
-M`````)Z)\CB/D+P>"G0U?./1I+\($`4!`KW&3P```$S_T\^1(\?(IVCQDA]J
-C20SF at .^<&]2'1D(_3FHHKW7PKQJ'!!.01QV>?]$9K_EN`N<`
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/isis-infini=
te-loop.pcap
Binary file head/contrib/tcpdump/tests/isis-infinite-loop.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ldp-infinit=
e-loop.pcap
Binary file head/contrib/tcpdump/tests/ldp-infinite-loop.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/lmp.out
--- a/head/contrib/tcpdump/tests/lmp.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-IP (tos 0x0, ttl 1, id 44530, offset 0, flags [none], proto UDP (17), leng=
th 84)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
-IP (tos 0x0, ttl 1, id 44531, offset 0, flags [none], proto UDP (17), leng=
th 56)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 28
-IP (tos 0x0, ttl 1, id 44532, offset 0, flags [none], proto UDP (17), leng=
th 84)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
-IP (tos 0x0, ttl 1, id 44533, offset 0, flags [none], proto UDP (17), leng=
th 76)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 48
-IP (tos 0x0, ttl 1, id 44534, offset 0, flags [none], proto UDP (17), leng=
th 68)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
-IP (tos 0x0, ttl 1, id 44535, offset 0, flags [none], proto UDP (17), leng=
th 44)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
-IP (tos 0x0, ttl 1, id 44536, offset 0, flags [none], proto UDP (17), leng=
th 124)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 96
-IP (tos 0x0, ttl 1, id 44537, offset 0, flags [none], proto UDP (17), leng=
th 68)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
-IP (tos 0x0, ttl 1, id 44538, offset 0, flags [none], proto UDP (17), leng=
th 60)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 32
-IP (tos 0x0, ttl 1, id 44539, offset 0, flags [none], proto UDP (17), leng=
th 52)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
-IP (tos 0x0, ttl 1, id 44540, offset 0, flags [none], proto UDP (17), leng=
th 52)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
-IP (tos 0x0, ttl 1, id 44541, offset 0, flags [none], proto UDP (17), leng=
th 52)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
-IP (tos 0x0, ttl 1, id 44542, offset 0, flags [none], proto UDP (17), leng=
th 52)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
-IP (tos 0x0, ttl 1, id 44543, offset 0, flags [none], proto UDP (17), leng=
th 52)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
-IP (tos 0x0, ttl 1, id 44544, offset 0, flags [none], proto UDP (17), leng=
th 44)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
-IP (tos 0x0, ttl 1, id 44545, offset 0, flags [none], proto UDP (17), leng=
th 64)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
-IP (tos 0x0, ttl 1, id 44546, offset 0, flags [none], proto UDP (17), leng=
th 72)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 44
-IP (tos 0x0, ttl 1, id 44547, offset 0, flags [none], proto UDP (17), leng=
th 64)
-    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/lmp.puu
--- a/head/contrib/tcpdump/tests/lmp.puu	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-begin 644 lmp.pcap
-MU,.RH0(`!````````````/__```!````I!J-0&;J``!B````8@`````%75SJ
-MQ@`$=3D=3D"&2@@`10``5*WR```!$=3D^D"@`,`0H`#`+#3L-.`$```!````4`.```
-M`0,`"`$````!!0`(`````P(#``@!````@0@`&````!0````>")*``$+(````
-M```(I!J-0#SQ``!&````1@`````%75SJQ@`$=3D=3D"&2@@`10``.*WS```!$=3D^_
-M"@`,`0H`#`+#3L-.`"0``!````0`'````0$`"`````$!!P`,````,@```#RD
-M&HU`@/(``&(```!B``````5=3D7.K&``1UT(9*"`!%``!4K?0```$1WZ(*``P!
-M"@`,`L-.PTX`0```$````P`X```!`0`(`````0$"``@*`#(!`@$`"`````("
-M!0`(`````P("``@*`#("@08`"``%``^D&HU`?_,``%H```!:``````5=3D7.K&
-M``1UT(9*"`!%``!,K?4```$1WZD*``P!"@`,`L-.PTX`.```$````@`P```!
-M`0`(`````0$"``@*`#(!`@$`"`````("!0`(`````P("``@*`#("I!J-0'+T
-M``!2````4@`````%75SJQ@`$=3D=3D"&2@@`10``1*WV```!$=3D^P"@`,`0H`#`+#
-M3L-.`#```!````$`*````0$`"`````$!!0`(`````P$"``@*`#(!@08`"``%
-M``^D&HU`0_4``#H````Z``````5=3D7.K&``1UT(9*"`!%```LK?<```$1W\<*
-M``P!"@`,`L-.PTX`&```$```#P`0```"!0`(`````:0:C4"E]P``B@```(H`
-M````!5U<ZL8`!'70ADH(`$4``'RM^````1'?=3D at H`#`$*``P"PT[#3@!H```0
-M```0`&````(%``@````!`A0`"````#L!#``D`````,"H`0'`J`$"`0R6"$+(
-M``!"R````@@```````8!#``D``````H!`0$*`0$"`0R6`TZ3,2U.F=3DS6`@@`
-M`````6&D&HU`C/@``%(```!2``````5=3D7.K&``1UT(9*"`!%``!$K?D```$1
-MWZT*``P!"@`,`L-.PTX`,```$```!@`H```!`P`(`0````(%``@````!@0D`
-M"``R`&0!"@`(````!:0:C4!E^0``2@```$H`````!5U<ZL8`!'70ADH(`$4`
-M`#RM^@```1'?M`H`#`$*``P"PT[#3@`H```0```'`"````$#``@*`````@4`
-M"`````,!%``(````!Z0:C4`Q^@``0@```$(`````!5U<ZL8`!'70ADH(`$4`
-M`#2M^P```1'?NPH`#`$*``P"PT[#3@`@```0```(`!@```$%``@````#`0H`
-M"`````6D&HU``_L``$(```!"``````5=3D7.K&``1UT(9*"`!%```TK?P```$1
-MW[H*``P!"@`,`L-.PTX`(```$```"0`8```"!0`(`````P$*``@````%I!J-
-M0-#[``!"````0@`````%75SJQ@`$=3D=3D"&2@@`10``-*W]```!$=3D^Y"@`,`0H`
-M#`+#3L-.`"```!````H`&````00`"`$````!"@`(````!:0:C4"=3D_```0@``
-M`$(`````!5U<ZL8`!'70ADH(`$4``#2M_@```1'?N`H`#`$*``P"PT[#3@`@
-M```0```,`!@```$%``@````!`0H`"`````6D&HU`:?T``$(```!"``````5=3D
-M7.K&``1UT(9*"`!%```TK?\```$1W[<*``P!"@`,`L-.PTX`(```$```#0`8
-M```"!0`(`````0$*``@````%I!J-0#C^```Z````.@`````%75SJQ@`$=3D=3D"&
-M2@@`10``+*X````!$=3D^^"@`,`0H`#`+#3L-.`!@``!```!(`$````@4`"```
-M``.D&HU`)?\``$X```!.``````5=3D7.K&``1UT(9*"`!%``!`K@$```$1WZD*
-M``P!"@`,`L-.PTX`+```$```$P`D```!`P`(`0````$%``@````#`0X`#`(`
-M```"````I!J-0`8``0!6````5@`````%75SJQ@`$=3D=3D"&2@@`10``2*X"```!
-M$=3D^@"@`,`0H`#`+#3L-.`#0``!```!$`+````0,`"`$````!!0`(`````P$-
-M`!0!````P````P$```"````"I!J-0-4``0!.````3@`````%75SJQ@`$=3D=3D"&
-M2@@`10``0*X#```!$=3D^G"@`,`0H`#`+#3L-.`"P``!```!0`)````@4`"```
-6``,!#0`4`0```,````(!````P````0``
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/lmp.sh
--- a/head/contrib/tcpdump/tests/lmp.sh	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-uudecode lmp.puu
-
-echo -n test lmp ...
-../tcpdump -t -n -v -v -v -r lmp.pcap >lmp.new
-if diff lmp.new lmp.out
-then
-	echo passed.
-else
-	echo failed.
-fi
-=09
-
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/lspping-fec=
-ldp.pcap
Binary file head/contrib/tcpdump/tests/lspping-fec-ldp.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/lspping-fec=
-rsvp.pcap
Binary file head/contrib/tcpdump/tests/lspping-fec-rsvp.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/mpls-ldp-he=
llo.out
--- a/head/contrib/tcpdump/tests/mpls-ldp-hello.out	Wed Jul 25 16:20:13 201=
2 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-IP (tos 0xc0, ttl 1, id 15579, offset 0, flags [none], proto UDP (17), len=
gth 70)
-    10.1.1.3.646 > 224.0.0.2.646:=20
-	LDP, Label-Space-ID: 10.1.0.2:0, pdu-length: 38
-	  Hello Message (0x0100), length: 28, Message ID: 0x00011970, Flags: [ign=
ore if unknown]
-	    Common Hello Parameters TLV (0x0400), length: 4, Flags: [ignore and d=
on't forward if unknown]
-	      Hold Time: 15s, Flags: [Link Hello]
-	    IPv4 Transport Address TLV (0x0401), length: 4, Flags: [ignore and do=
n't forward if unknown]
-	      IPv4 Transport Address: 10.1.0.2
-	    Configuration Sequence Number TLV (0x0402), length: 4, Flags: [ignore=
 and don't forward if unknown]
-	      Sequence Number: 1
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/mpls-ldp-he=
llo.puu
--- a/head/contrib/tcpdump/tests/mpls-ldp-hello.puu	Wed Jul 25 16:20:13 201=
2 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-begin 644 mpls-ldp-hello.pcap
-MU,.RH0(`!````````````.H%```)````1UFZ/E2'#`!*````2@```/\#`"%%
-MP`!&/-L```$1D08*`0$#X````@*&`H8`,M2>``$`)@H!``(```$``!P``1EP
-8!```!``/```$`0`$"@$``@0"``0````!
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/mpls-tracer=
oute.pcap
Binary file head/contrib/tcpdump/tests/mpls-traceroute.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ospf-gmpls.=
out
--- a/head/contrib/tcpdump/tests/ospf-gmpls.out	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-IP (tos 0xc0, ttl 1, id 4052, offset 0, flags [none], proto OSPF (89), len=
gth 172)
-    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
-	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 =
LSA
-	  LSA #1
-	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
-	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), =
Opaque-ID 8
-	    Options: [External]
-	    Link TLV (2), length: 100
-	      Link Type subTLV (1), length: 1, Point-to-point (1)
-	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
-	      Local Interface IP address subTLV (3), length: 4, 10.9.142.1
-	      Remote Interface IP address subTLV (4), length: 4, 10.9.142.2
-	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
-	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
-	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
-	      Unreserved Bandwidth subTLV (8), length: 32
-		TE-Class 0: 622.080 Mbps
-		TE-Class 1: 622.080 Mbps
-		TE-Class 2: 622.080 Mbps
-		TE-Class 3: 622.080 Mbps
-		TE-Class 4: 622.080 Mbps
-		TE-Class 5: 622.080 Mbps
-		TE-Class 6: 622.080 Mbps
-		TE-Class 7: 622.080 Mbps
-	      Administrative Group subTLV (9), length: 4, 0x00000000
-IP (tos 0xc0, ttl 1, id 4106, offset 0, flags [none], proto OSPF (89), len=
gth 172)
-    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
-	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 =
LSA
-	  LSA #1
-	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
-	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), =
Opaque-ID 9
-	    Options: [External]
-	    Link TLV (2), length: 100
-	      Link Type subTLV (1), length: 1, Point-to-point (1)
-	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
-	      Local Interface IP address subTLV (3), length: 4, 10.9.143.1
-	      Remote Interface IP address subTLV (4), length: 4, 10.9.143.2
-	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
-	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
-	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
-	      Unreserved Bandwidth subTLV (8), length: 32
-		TE-Class 0: 622.080 Mbps
-		TE-Class 1: 622.080 Mbps
-		TE-Class 2: 622.080 Mbps
-		TE-Class 3: 622.080 Mbps
-		TE-Class 4: 622.080 Mbps
-		TE-Class 5: 622.080 Mbps
-		TE-Class 6: 622.080 Mbps
-		TE-Class 7: 622.080 Mbps
-	      Administrative Group subTLV (9), length: 4, 0x00000000
-IP (tos 0xc0, ttl 1, id 4160, offset 0, flags [none], proto OSPF (89), len=
gth 212)
-    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 192
-	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 =
LSA
-	  LSA #1
-	  Advertising Router 10.255.245.35, seq 0x80000003, age 3s, length 144
-	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), =
Opaque-ID 3
-	    Options: [External]
-	    Link TLV (2), length: 140
-	      Link Type subTLV (1), length: 1, Point-to-point (1)
-	      Link ID subTLV (2), length: 4, 10.255.245.40 (0x0afff528)
-	      Local Interface IP address subTLV (3), length: 4, 10.40.35.14
-	      Remote Interface IP address subTLV (4), length: 4, 10.40.35.13
-	      Traffic Engineering Metric subTLV (5), length: 4, Metric 1
-	      Maximum Bandwidth subTLV (6), length: 4, 100.000 Mbps
-	      Maximum Reservable Bandwidth subTLV (7), length: 4, 100.000 Mbps
-	      Unreserved Bandwidth subTLV (8), length: 32
-		TE-Class 0: 0.000 Mbps
-		TE-Class 1: 0.000 Mbps
-		TE-Class 2: 0.000 Mbps
-		TE-Class 3: 0.000 Mbps
-		TE-Class 4: 0.000 Mbps
-		TE-Class 5: 0.000 Mbps
-		TE-Class 6: 0.000 Mbps
-		TE-Class 7: 0.000 Mbps
-	      Interface Switching Capability subTLV (15), length: 44
-		Interface Switching Capability: Packet-Switch Capable-1
-		LSP Encoding: Ethernet V2/DIX
-		Max LSP Bandwidth:
-		  priority level 0: 0.000 Mbps
-		  priority level 1: 0.000 Mbps
-		  priority level 2: 0.000 Mbps
-		  priority level 3: 0.000 Mbps
-		  priority level 4: 0.000 Mbps
-		  priority level 5: 0.000 Mbps
-		  priority level 6: 0.000 Mbps
-		  priority level 7: 0.000 Mbps
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/ospf-gmpls.=
puu
--- a/head/contrib/tcpdump/tests/ospf-gmpls.puu	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-begin 644 ospf-gmpls.pcap
-MU,.RH0(`!````````````'81````````KME</_6D!0"P````L`````(```!%
-MP`"L#]0```%9GSLH(P$"X```!0($`)@*__4C`````*F*````````````````
-M``$`"0(*`0``"`K_]26````">#X`?``"`&0``0`!`0`````"``0*__5%``,`
-M!`H)C@$`!``$"@F.`@`%``0````_``8`!$R44,``!P`$3)10P``(`"!,E%#`
-M3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0`````Y-E</P;,#0"P
-M````L`````(```!%P`"L$`H```%9GP4H(P$"X```!0($`)@*__4C`````&_$
-M``````````````````$`"0(*`0``"0K_]26````"L`,`?``"`&0``0`!`0``
-M```"``0*__5%``,`!`H)CP$`!``$"@F/`@`%``0````_``8`!$R44,``!P`$
-M3)10P``(`"!,E%#`3)10P$R44,!,E%#`3)10P$R44,!,E%#`3)10P``)``0`
-M````&=3DI</S4\!@#8````V`````(```!%P`#4$$````%9GJ<H(P$"X```!0($
-M`,`*__4C`````-HW``````````````````$``P(*`0```PK_]2.````#(00`
-MI``"`(P``0`!`0`````"``0*__4H``,`!`HH(PX`!``$"B at C#0`%``0````!
-M``8`!$L^O"``!P`$2SZ\(``(`"``````````````````````````````````
-M```````````/`"P!`@``````````````````````````````````````````
-*``!+/KP@"B@`````
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-A.out
--- a/head/contrib/tcpdump/tests/print-A.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-E..<.h at .@.!R.........p.P7X.~.........!.... at ....
-M...........
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-E..<.. at .@.<..........P.p7z..7X......n..... at ....
-M...M.......
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-E..4.j at .@.!X.........p.P7X..7z.... .7......
-M...M...
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-E....l at .@. ..........p.P7X..7z.... ........
-M...M...GET / HTTP/1.1
-Host: localhost
-User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686;=
 132x56-2)
-Accept: */*
-Accept-Encoding: gzip
-Accept-Language: en
-Connection: Keep-Alive
-
-
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-E..4.. at .@............P.p7z..7X.I.. .7......
-M...M...
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-E..... at .@..%.........P.p7z..7X.I.. ........
-M...M...HTTP/1.1 200 OK
-Date: Wed, 06 Jul 2005 03:57:35 GMT
-Server: Apache/1.3.33
-Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
-ETag: "6e80f0-148a-411eb1bd"
-Accept-Ranges: bytes
-Content-Length: 5258
-Keep-Alive: timeout=3D15, max=3D100
-Connection: Keep-Alive
-Content-Type: text/html; charset=3Diso-8859-1
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
-   <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8=
859-1">
-   <META NAME=3D"Description" CONTENT=3D"The initial installation of Debia=
n apache.">
-   <TITLE>Placeholder page</TITLE>
-</HEAD>
-<BODY TEXT=3D"#000000" BGCOLOR=3D"#FFFFFF" LINK=3D"#0000EF" VLINK=3D"#5518=
8A" ALINK=3D"#FF0000">
-
-<H1>Placeholder page</H1>
-<H2>If you are just browsing the web</h2>
-
-<P>The owner of this web site has not put up any web pages yet.
-Please come back later.</P>
-
-<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
-
-<H2>If you are trying to locate the administrator of this machine</H2>
-
-<P>If you want to report something about this host's behavior, please
-contact the Internet Service Provider (ISP) involved directly.</P>
-
-<P>See the <A href=3D"http://www.abuse.net/">Network Abuse
-Clearinghouse</A> for how to do this.</P>
-
-<H2>If you are the administrator of this machine</H2>
-
-<P>The initial installation of <A href=3D"http://www.debian.org/">Debian's
-apache</A> web server package was successful.</P>
-
-<P><STRONG>You should replace this page with your own web pages as
-soon as possible.</STRONG></P>
-
-<P>Unless you changed its configuration, your new server is configured as =
follows:
-<UL>
-<LI>
-Configuration files can be found in <TT>/etc/apache</TT>.</LI>
-
-<LI>
-The <TT>DocumentRoot</TT>, which is the directory under which all your
-HTML files should exist, is set to <TT>/var/www</TT>.</LI>
-
-<LI>
-CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
-Debian packages will place their scripts.</LI>
-
-<LI>
-Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
-weekly.  The frequency of rotation can be easily changed by editing
-<TT>/etc/logrotate.d/apache</TT>.</LI>
-
-<LI>
-The default directory index is <TT>index.html</TT>, meaning that requests
-for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>=
/var/www/foo/bar/index.html</TT>
-if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT=
>).</LI>
-
-<LI>
-User directories are enabled, and user documents will be looked for
-in the <TT>public_html</TT> directory of the users' homes.  These dirs
-should be under <TT>/home</TT>, and users will not be able to symlink
-to files they don't own.</LI>
-
-</UL>
-All the standard apache modules are available with this release and are
-now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
-select which modules you want enabled.  Many other modules are available
-through the Debian package system with the names <TT>libapache-mod-*</TT>.
-If you need to compile a module yourself, you will need to install the
-<TT>apache-dev</TT> package.
-
-<P>More documentation on Apache can be found on:
-<UL>
-<LI>
-The <A HREF=3D"/doc/apache-doc/manual/">Apache documentation</A> stored on=
 your server.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apache.org/">Apache Project</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://perl.apache.org/">mod perl</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
-
-<LI>
-The <A HREF=3D"http://www.debian.org/doc/">Debian Project
-Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
-</UL>
-
-<P>You can also consult the list of <A HREF=3D"http://www.boutell.com/faq/=
">World
-Wide Web Frequently Asked Questions</A> for information.
-
-<H2>Let other people know about this server</H2>
-
-<A HREF=3D"http://netcraft.com/">Netcraft</A> provides an interesting free
-service for web site monitoring and statistic collection.
-You can let them know about your server using their
-<A HREF=3D"http://uptime.netcraft.com/">interface</A>.
-Enabling the monitoring of your server will provide a better global overvi=
ew
-of who is using what and where, and it would give Debian a better
-overview of the apache package usage.
-
-<H2>About this page</H2>
-
-<IMG ALIGN=3D"right" ALT=3D"" HEIGHT=3D"247" WIDTH=3D"278" SRC=3D"icons/jh=
e061.png">
-
-<P>This is a placeholder page installed by the <A
-HREF=3D"http://www.debian.org/">Debian</A>
-release of the apache Web server package.
-
-<P>This computer has installed the Debian GNU/Linux operating system,
-but it has <strong>nothing to do with the Debian
-Project</strong>. Please do <strong>not</strong> contact the Debian
-Project about it.</P>
-
-<P>If you find a bug in this apache package, or in Apache itself,
-please file a bug report on it.  Instructions on doing this, and the
-list of <A HREF=3D"http://bugs.debian.org/src:apache">known bugs</A> of th=
is
-package, can be found in the=20
-<A HREF=3D"http://www.debian.org/Bugs/Reporting">Debian Bug Tracking Syste=
m</A>.
-
-<P>Thanks for using this package, and congratulations for your choice of
-a Debian system!</P>
-
-<DIV align=3D"center">
-<a href=3D"http://www.debian.org/">
-<IMG align=3D"middle" height=3D"30" width=3D"25" src=3D"icons/debian/openl=
ogo-25.jpg" alt=3D"Debian">
-</a>
-<a href=3D"http://www.apache.org/">
-<IMG align=3D"middle" height=3D"32" width=3D"259" src=3D"icons/apache_pb.p=
ng" alt=3D"Apache">
-</a>
-</DIV>
-
-<!--
-  This page was initially created by Johnie Ingram (http://netgod.net/)
-  It was later edited by Matthew Wilcox and Josip Rodin.
-  Last modified: $Date: 2004/06/20 15:33:57 $.
-  -->
-
-</BODY>
-</HTML>
-
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-E..4.n at .@.!T.........p.P7X.I7z....0_.......
-M...M...
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-E..4.p at .@.!R.........p.P7X.I7z....0_.......
-M..!M...
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-E..4.. at .@............P.p7z..7X.J.. ..5.....
-M..#M..!
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-E..4.r at .@.!P.........p.P7X.J7z....0_.......
-M..#M..#
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-AA.out
--- a/head/contrib/tcpdump/tests/print-AA.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-..............E..<.h at .@.!R.........p.P7X.~.........!.... at ....
-M...........
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-..............E..<.. at .@.<..........P.p7z..7X......n..... at ....
-M...M.......
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-..............E..4.j at .@.!X.........p.P7X..7z.... .7......
-M...M...
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-..............E....l at .@. ..........p.P7X..7z.... ........
-M...M...GET / HTTP/1.1
-Host: localhost
-User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686;=
 132x56-2)
-Accept: */*
-Accept-Encoding: gzip
-Accept-Language: en
-Connection: Keep-Alive
-
-
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-..............E..4.. at .@............P.p7z..7X.I.. .7......
-M...M...
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-..............E..... at .@..%.........P.p7z..7X.I.. ........
-M...M...HTTP/1.1 200 OK
-Date: Wed, 06 Jul 2005 03:57:35 GMT
-Server: Apache/1.3.33
-Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
-ETag: "6e80f0-148a-411eb1bd"
-Accept-Ranges: bytes
-Content-Length: 5258
-Keep-Alive: timeout=3D15, max=3D100
-Connection: Keep-Alive
-Content-Type: text/html; charset=3Diso-8859-1
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
-   <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8=
859-1">
-   <META NAME=3D"Description" CONTENT=3D"The initial installation of Debia=
n apache.">
-   <TITLE>Placeholder page</TITLE>
-</HEAD>
-<BODY TEXT=3D"#000000" BGCOLOR=3D"#FFFFFF" LINK=3D"#0000EF" VLINK=3D"#5518=
8A" ALINK=3D"#FF0000">
-
-<H1>Placeholder page</H1>
-<H2>If you are just browsing the web</h2>
-
-<P>The owner of this web site has not put up any web pages yet.
-Please come back later.</P>
-
-<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
-
-<H2>If you are trying to locate the administrator of this machine</H2>
-
-<P>If you want to report something about this host's behavior, please
-contact the Internet Service Provider (ISP) involved directly.</P>
-
-<P>See the <A href=3D"http://www.abuse.net/">Network Abuse
-Clearinghouse</A> for how to do this.</P>
-
-<H2>If you are the administrator of this machine</H2>
-
-<P>The initial installation of <A href=3D"http://www.debian.org/">Debian's
-apache</A> web server package was successful.</P>
-
-<P><STRONG>You should replace this page with your own web pages as
-soon as possible.</STRONG></P>
-
-<P>Unless you changed its configuration, your new server is configured as =
follows:
-<UL>
-<LI>
-Configuration files can be found in <TT>/etc/apache</TT>.</LI>
-
-<LI>
-The <TT>DocumentRoot</TT>, which is the directory under which all your
-HTML files should exist, is set to <TT>/var/www</TT>.</LI>
-
-<LI>
-CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
-Debian packages will place their scripts.</LI>
-
-<LI>
-Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
-weekly.  The frequency of rotation can be easily changed by editing
-<TT>/etc/logrotate.d/apache</TT>.</LI>
-
-<LI>
-The default directory index is <TT>index.html</TT>, meaning that requests
-for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>=
/var/www/foo/bar/index.html</TT>
-if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT=
>).</LI>
-
-<LI>
-User directories are enabled, and user documents will be looked for
-in the <TT>public_html</TT> directory of the users' homes.  These dirs
-should be under <TT>/home</TT>, and users will not be able to symlink
-to files they don't own.</LI>
-
-</UL>
-All the standard apache modules are available with this release and are
-now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
-select which modules you want enabled.  Many other modules are available
-through the Debian package system with the names <TT>libapache-mod-*</TT>.
-If you need to compile a module yourself, you will need to install the
-<TT>apache-dev</TT> package.
-
-<P>More documentation on Apache can be found on:
-<UL>
-<LI>
-The <A HREF=3D"/doc/apache-doc/manual/">Apache documentation</A> stored on=
 your server.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apache.org/">Apache Project</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://perl.apache.org/">mod perl</A> home site.</LI>
-
-<LI>
-The <A HREF=3D"http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
-
-<LI>
-The <A HREF=3D"http://www.debian.org/doc/">Debian Project
-Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
-</UL>
-
-<P>You can also consult the list of <A HREF=3D"http://www.boutell.com/faq/=
">World
-Wide Web Frequently Asked Questions</A> for information.
-
-<H2>Let other people know about this server</H2>
-
-<A HREF=3D"http://netcraft.com/">Netcraft</A> provides an interesting free
-service for web site monitoring and statistic collection.
-You can let them know about your server using their
-<A HREF=3D"http://uptime.netcraft.com/">interface</A>.
-Enabling the monitoring of your server will provide a better global overvi=
ew
-of who is using what and where, and it would give Debian a better
-overview of the apache package usage.
-
-<H2>About this page</H2>
-
-<IMG ALIGN=3D"right" ALT=3D"" HEIGHT=3D"247" WIDTH=3D"278" SRC=3D"icons/jh=
e061.png">
-
-<P>This is a placeholder page installed by the <A
-HREF=3D"http://www.debian.org/">Debian</A>
-release of the apache Web server package.
-
-<P>This computer has installed the Debian GNU/Linux operating system,
-but it has <strong>nothing to do with the Debian
-Project</strong>. Please do <strong>not</strong> contact the Debian
-Project about it.</P>
-
-<P>If you find a bug in this apache package, or in Apache itself,
-please file a bug report on it.  Instructions on doing this, and the
-list of <A HREF=3D"http://bugs.debian.org/src:apache">known bugs</A> of th=
is
-package, can be found in the=20
-<A HREF=3D"http://www.debian.org/Bugs/Reporting">Debian Bug Tracking Syste=
m</A>.
-
-<P>Thanks for using this package, and congratulations for your choice of
-a Debian system!</P>
-
-<DIV align=3D"center">
-<a href=3D"http://www.debian.org/">
-<IMG align=3D"middle" height=3D"30" width=3D"25" src=3D"icons/debian/openl=
ogo-25.jpg" alt=3D"Debian">
-</a>
-<a href=3D"http://www.apache.org/">
-<IMG align=3D"middle" height=3D"32" width=3D"259" src=3D"icons/apache_pb.p=
ng" alt=3D"Apache">
-</a>
-</DIV>
-
-<!--
-  This page was initially created by Johnie Ingram (http://netgod.net/)
-  It was later edited by Matthew Wilcox and Josip Rodin.
-  Last modified: $Date: 2004/06/20 15:33:57 $.
-  -->
-
-</BODY>
-</HTML>
-
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-..............E..4.n at .@.!T.........p.P7X.I7z....0_.......
-M...M...
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-..............E..4.p at .@.!R.........p.P7X.I7z....0_.......
-M..!M...
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-..............E..4.. at .@............P.p7z..7X.J.. ..5.....
-M..#M..!
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-..............E..4.r at .@.!P.........p.P7X.J7z....0_.......
-M..#M..#
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-capX.=
out
--- a/head/contrib/tcpdump/tests/print-capX.out	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001  E..<.h at .@.!R....
-	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000  .....p.P7X.~....
-	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a  .....!.... at .....
-	0x0030:  4ddc 9216 0000 0000 0103 0302            M...........
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001  E..<.. at .@.<.....
-	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f  .....P.p7z..7X..
-	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a  ....n..... at .....
-	0x0030:  4ddc 9216 4ddc 9216 0103 0302            M...M.......
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001  E..4.j at .@.!X....
-	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
-	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216  ....7.......M...
-	0x0030:  4ddc 9216                                M...
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001  E....l at .@.......
-	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
-	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217  ............M...
-	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31  M...GET./.HTTP/1
-	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68  .1..Host:.localh
-	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a  ost..User-Agent:
-	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37  .ELinks/0.10.4-7
-	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64  -debian.(textmod
-	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d  e;.Linux.2.6.11-
-	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20  1-686-smp.i686;.
-	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570  132x56-2)..Accep
-	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45  t:.*/*..Accept-E
-	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41  ncoding:.gzip..A
-	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20  ccept-Language:.
-	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20  en..Connection:.
-	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a       Keep-Alive....
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001  E..4.. at .@.......
-	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
-	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218  ....7.......M...
-	0x0030:  4ddc 9217                                M...
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001  E..... at .@..%....
-	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
-	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219  ............M...
-	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030  M...HTTP/1.1.200
-	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20  .OK..Date:.Wed,.
-	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35  06.Jul.2005.03:5
-	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572  7:35.GMT..Server
-	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d  :.Apache/1.3.33.
-	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20  .Last-Modified:.
-	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034  Sun,.15.Aug.2004
-	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45  .00:43:41.GMT..E
-	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438  Tag:."6e80f0-148
-	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363  a-411eb1bd"..Acc
-	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465  ept-Ranges:.byte
-	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774  s..Content-Lengt
-	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c  h:.5258..Keep-Al
-	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c  ive:.timeout=3D15,
-	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563  .max=3D100..Connec
-	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665  tion:.Keep-Alive
-	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20  ..Content-Type:.
-	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273  text/html;.chars
-	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d  et=3Diso-8859-1...
-	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20  .<!DOCTYPE.HTML.
-	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f  PUBLIC."-//W3C//
-	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472  DTD.HTML.4.01.Tr
-	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e  ansitional//EN">
-	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20  .<HTML>.<HEAD>..
-	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155  ..<META.HTTP-EQU
-	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065  IV=3D"Content-Type
-	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f  ".CONTENT=3D"text/
-	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973  html;.charset=3Dis
-	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d  o-8859-1">....<M
-	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269  ETA.NAME=3D"Descri
-	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22  ption".CONTENT=3D"
-	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374  The.initial.inst
-	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269  allation.of.Debi
-	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020  an.apache.">....
-	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64  <TITLE>Placehold
-	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a  er.page</TITLE>.
-	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445  </HEAD>.<BODY.TE
-	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743  XT=3D"#000000".BGC
-	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c  OLOR=3D"#FFFFFF".L
-	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c  INK=3D"#0000EF".VL
-	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c  INK=3D"#55188A".AL
-	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a  INK=3D"#FF0000">..
-	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220  <H1>Placeholder.
-	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966  page</H1>.<H2>If
-	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272  .you.are.just.br
-	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f  owsing.the.web</
-	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65  h2>..<P>The.owne
-	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369  r.of.this.web.si
-	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075  te.has.not.put.u
-	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320  p.any.web.pages.
-	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65  yet..Please.come
-	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e  .back.later.</P>
-	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954  ..<P><SMALL><CIT
-	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f  E>Move.along,.no
-	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572  thing.to.see.her
-	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c  e...</CITE>.:-)<
-	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832  /SMALL></P>..<H2
-	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969  >If.you.are.tryi
-	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865  ng.to.locate.the
-	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f  .administrator.o
-	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f  f.this.machine</
-	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077  H2>..<P>If.you.w
-	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f  ant.to.report.so
-	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468  mething.about.th
-	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669  is.host's.behavi
-	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461  or,.please.conta
-	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420  ct.the.Internet.
-	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572  Service.Provider
-	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420  .(ISP).involved.
-	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c  directly.</P>..<
-	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265  P>See.the.<A.hre
-	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162  f=3D"http://www.ab
-	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72  use.net/">Networ
-	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67  k.Abuse.Clearing
-	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f  house</A>.for.ho
-	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50  w.to.do.this.</P
-	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172  >..<H2>If.you.ar
-	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261  e.the.administra
-	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368  tor.of.this.mach
-	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865  ine</H2>..<P>The
-	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c  .initial.install
-	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566  ation.of.<A.href
-	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  =3D"http://www.deb
-	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e  ian.org/">Debian
-	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765  's.apache</A>.we
-	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
-	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e  .was.successful.
-	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47  </P>..<P><STRONG
-	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c  >You.should.repl
-	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769  ace.this.page.wi
-	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220  th.your.own.web.
-	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173  pages.as.soon.as
-	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f  .possible.</STRO
-	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65  NG></P>..<P>Unle
-	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069  ss.you.changed.i
-	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e  ts.configuration
-	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665  ,.your.new.serve
-	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420  r.is.configured.
-	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e  as.follows:.<UL>
-	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174  .<LI>.Configurat
-	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265  ion.files.can.be
-	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65  .found.in.<TT>/e
-	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c  tc/apache</TT>.<
-	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c  /LI>..<LI>.The.<
-	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c  TT>DocumentRoot<
-	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074  /TT>,.which.is.t
-	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64  he.directory.und
-	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75  er.which.all.you
-	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f  r.HTML.files.sho
-	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365  uld.exist,.is.se
-	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777  t.to.<TT>/var/ww
-	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c  w</TT>.</LI>..<L
-	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061  I>.CGI.scripts.a
-	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e  re.looked.for.in
-	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367  .<TT>/usr/lib/cg
-	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963  i-bin</TT>,.whic
-	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961  h.is.where.Debia
-	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20  n.packages.will.
-	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269  place.their.scri
-	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  pts.</LI>..<LI>.
-	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c  Log.files.are.pl
-	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172  aced.in.<TT>/var
-	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e  /log/apache</TT>
-	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f  ,.and.will.be.ro
-	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054  tated.weekly...T
-	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620  he.frequency.of.
-	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520  rotation.can.be.
-	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062  easily.changed.b
-	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65  y.editing.<TT>/e
-	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61  tc/logrotate.d/a
-	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e  pache</TT>.</LI>
-	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175  ..<LI>.The.defau
-	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64  lt.directory.ind
-	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e  ex.is.<TT>index.
-	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69  html</TT>,.meani
-	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473  ng.that.requests
-	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279  .for.a.directory
-	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f  .<TT>/foo/bar/</
-	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468  TT>.will.give.th
-	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468  e.contents.of.th
-	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f  e.file.<TT>/var/
-	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465  www/foo/bar/inde
-	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069  x.html</TT>.if.i
-	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69  t.exists.(assumi
-	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172  ng.that.<TT>/var
-	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75  /www</TT>.is.you
-	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f  r.<TT>DocumentRo
-	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a  ot</TT>).</LI>..
-	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374  <LI>.User.direct
-	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65  ories.are.enable
-	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375  d,.and.user.docu
-	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f  ments.will.be.lo
-	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520  oked.for.in.the.
-	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c  <TT>public_html<
-	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f  /TT>.directory.o
-	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d  f.the.users'.hom
-	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a  es...These.dirs.
-	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220  should.be.under.
-	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20  <TT>/home</TT>,.
-	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e  and.users.will.n
-	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379  ot.be.able.to.sy
-	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074  mlink.to.files.t
-	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f  hey.don't.own.</
-	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074  LI>..</UL>.All.t
-	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163  he.standard.apac
-	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061  he.modules.are.a
-	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468  vailable.with.th
-	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061  is.release.and.a
-	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077  re.now.managed.w
-	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479  ith.debconf...Ty
-	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f  pe.<TT>dpkg-reco
-	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f  nfigure.apache</
-	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768  TT>.to.select.wh
-	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520  ich.modules.you.
-	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d  want.enabled...M
-	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65  any.other.module
-	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a  s.are.available.
-	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269  through.the.Debi
-	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465  an.package.syste
-	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573  m.with.the.names
-	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d  .<TT>libapache-m
-	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f  od-*</TT>..If.yo
-	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c  u.need.to.compil
-	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273  e.a.module.yours
-	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65  elf,.you.will.ne
-	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468  ed.to.install.th
-	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576  e.<TT>apache-dev
-	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a  </TT>.package...
-	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74  <P>More.document
-	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520  ation.on.Apache.
-	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a  can.be.found.on:
-	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c  .<UL>.<LI>.The.<
-	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061  A.HREF=3D"/doc/apa
-	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22  che-doc/manual/"
-	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74  >Apache.document
-	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564  ation</A>.stored
-	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e  .on.your.server.
-	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520  </LI>..<LI>.The.
-	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f  <A.HREF=3D"http://
-	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22  www.apache.org/"
-	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c  >Apache.Project<
-	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f  /A>.home.site.</
-	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
-	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF=3D"http://ww
-	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267  w.apache-ssl.org
-	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41  /">Apache-SSL</A
-	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
-	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
-	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c  REF=3D"http://perl
-	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f  .apache.org/">mo
-	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520  d.perl</A>.home.
-	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e  site.</LI>..<LI>
-	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874  .The.<A.HREF=3D"ht
-	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577  tp://www.apachew
-	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865  eek.com/">Apache
-	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574  Week</A>.newslet
-	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  ter.</LI>..<LI>.
-	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474  The.<A.HREF=3D"htt
-	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f  p://www.debian.o
-	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20  rg/doc/">Debian.
-	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74  Project.Document
-	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820  ation</A>.which.
-	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c  contains.HOWTOs,
-	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477  .FAQs,.and.softw
-	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49  are.updates.</LI
-	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520  >.</UL>..<P>You.
-	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74  can.also.consult
-	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120  .the.list.of.<A.
-	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777  HREF=3D"http://www
-	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171  .boutell.com/faq
-	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765  /">World.Wide.We
-	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b  b.Frequently.Ask
-	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e  ed.Questions</A>
-	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e  .for.information
-	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572  ...<H2>Let.other
-	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f  .people.know.abo
-	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f  ut.this.server</
-	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874  H2>..<A.HREF=3D"ht
-	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f  tp://netcraft.co
-	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e  m/">Netcraft</A>
-	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74  .provides.an.int
-	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365  eresting.free.se
-	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369  rvice.for.web.si
-	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e  te.monitoring.an
-	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c  d.statistic.coll
-	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20  ection..You.can.
-	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162  let.them.know.ab
-	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220  out.your.server.
-	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048  using.their.<A.H
-	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469  REF=3D"http://upti
-	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f  me.netcraft.com/
-	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e  ">interface</A>.
-	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f  .Enabling.the.mo
-	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572  nitoring.of.your
-	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f  .server.will.pro
-	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c  vide.a.better.gl
-	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66  obal.overview.of
-	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768  .who.is.using.wh
-	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e  at.and.where,.an
-	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520  d.it.would.give.
-	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a  Debian.a.better.
-	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520  overview.of.the.
-	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075  apache.package.u
-	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574  sage...<H2>About
-	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a  .this.page</H2>.
-	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967  .<IMG.ALIGN=3D"rig
-	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748  ht".ALT=3D"".HEIGH
-	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232  T=3D"247".WIDTH=3D"2
-	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a  78".SRC=3D"icons/j
-	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e  he061.png">..<P>
-	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568  This.is.a.placeh
-	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461  older.page.insta
-	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48  lled.by.the.<A.H
-	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF=3D"http://www.
-	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562  debian.org/">Deb
-	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520  ian</A>.release.
-	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765  of.the.apache.We
-	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
-	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075  ...<P>This.compu
-	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65  ter.has.installe
-	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55  d.the.Debian.GNU
-	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67  /Linux.operating
-	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420  .system,.but.it.
-	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468  has.<strong>noth
-	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074  ing.to.do.with.t
-	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563  he.Debian.Projec
-	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561  t</strong>..Plea
-	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f  se.do.<strong>no
-	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461  t</strong>.conta
-	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072  ct.the.Debian.Pr
-	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c  oject.about.it.<
-	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066  /P>..<P>If.you.f
-	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869  ind.a.bug.in.thi
-	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765  s.apache.package
-	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069  ,.or.in.Apache.i
-	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669  tself,.please.fi
-	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420  le.a.bug.report.
-	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374  on.it...Instruct
-	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468  ions.on.doing.th
-	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374  is,.and.the.list
-	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474  .of.<A.HREF=3D"htt
-	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e  p://bugs.debian.
-	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e  org/src:apache">
-	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f  known.bugs</A>.o
-	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20  f.this.package,.
-	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20  can.be.found.in.
-	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874  the..<A.HREF=3D"ht
-	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e  tp://www.debian.
-	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469  org/Bugs/Reporti
-	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054  ng">Debian.Bug.T
-	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f  racking.System</
-	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066  A>...<P>Thanks.f
-	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061  or.using.this.pa
-	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772  ckage,.and.congr
-	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079  atulations.for.y
-	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120  our.choice.of.a.
-	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f  Debian.system!</
-	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22  P>..<DIV.align=3D"
-	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566  center">.<a.href
-	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  =3D"http://www.deb
-	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720  ian.org/">.<IMG.
-	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068  align=3D"middle".h
-	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468  eight=3D"30".width
-	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73  =3D"25".src=3D"icons
-	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f  /debian/openlogo
-	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465  -25.jpg".alt=3D"De
-	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068  bian">.</a>.<a.h
-	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e  ref=3D"http://www.
-	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49  apache.org/">.<I
-	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65  MG.align=3D"middle
-	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769  ".height=3D"32".wi
-	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269  dth=3D"259".src=3D"i
-	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70  cons/apache_pb.p
-	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522  ng".alt=3D"Apache"
-	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c  >.</a>.</DIV>..<
-	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520  !--...This.page.
-	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372  was.initially.cr
-	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520  eated.by.Johnie.
-	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e  Ingram.(http://n
-	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974  etgod.net/)...It
-	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465  .was.later.edite
-	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c  d.by.Matthew.Wil
-	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f  cox.and.Josip.Ro
-	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469  din....Last.modi
-	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030  fied:.$Date:.200
-	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537  4/06/20.15:33:57
-	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44  .$....-->..</BOD
-	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a              Y>.</HTML>.
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001  E..4.n at .@.!T....
-	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
-	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219  ..0_........M...
-	0x0030:  4ddc 9219                                M...
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001  E..4.p at .@.!R....
-	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
-	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721  ..0_........M..!
-	0x0030:  4ddc 9219                                M...
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001  E..4.. at .@.......
-	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a  .....P.p7z..7X.J
-	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723  .....5......M..#
-	0x0030:  4ddc 9721                                M..!
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001  E..4.r at .@.!P....
-	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa  .....p.P7X.J7z..
-	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723  ..0_........M..#
-	0x0030:  4ddc 9723                                M..#
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-capXX=
.out
--- a/head/contrib/tcpdump/tests/print-capXX.out	Wed Jul 25 16:20:13 2012 +=
0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00  .<.h at .@.!R......
-	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002  ...p.P7X.~......
-	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc  ...!.... at .....M.
-	0x0040:  9216 0000 0000 0103 0302                 ..........
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .<.. at .@.<.......
-	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012  ...P.p7z..7X....
-	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc  ..n..... at .....M.
-	0x0040:  9216 4ddc 9216 0103 0302                 ..M.......
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00  .4.j at .@.!X......
-	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010  ...p.P7X..7z....
-	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc  ..7.......M...M.
-	0x0040:  9216                                     ..
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00  ...l at .@.........
-	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018  ...p.P7X..7z....
-	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc  ..........M...M.
-	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31  ..GET./.HTTP/1.1
-	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73  ..Host:.localhos
-	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045  t..User-Agent:.E
-	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64  Links/0.10.4-7-d
-	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b  ebian.(textmode;
-	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d  .Linux.2.6.11-1-
-	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133  686-smp.i686;.13
-	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a  2x56-2)..Accept:
-	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63  .*/*..Accept-Enc
-	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363  oding:.gzip..Acc
-	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e  ept-Language:.en
-	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65  ..Connection:.Ke
-	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a            ep-Alive....
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00  .4.. at .@.........
-	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010  ...P.p7z..7X.I..
-	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc  ..7.......M...M.
-	0x0040:  9217                                     ..
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00  .... at .@..%......
-	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018  ...P.p7z..7X.I..
-	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc  ..........M...M.
-	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f  ..HTTP/1.1.200.O
-	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036  K..Date:.Wed,.06
-	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a  .Jul.2005.03:57:
-	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20  35.GMT..Server:.
-	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c  Apache/1.3.33..L
-	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375  ast-Modified:.Su
-	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030  n,.15.Aug.2004.0
-	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461  0:43:41.GMT..ETa
-	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d  g:."6e80f0-148a-
-	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570  411eb1bd"..Accep
-	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d  t-Ranges:.bytes.
-	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a  .Content-Length:
-	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976  .5258..Keep-Aliv
-	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d  e:.timeout=3D15,.m
-	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469  ax=3D100..Connecti
-	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a  on:.Keep-Alive..
-	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465  Content-Type:.te
-	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574  xt/html;.charset
-	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c  =3Diso-8859-1....<
-	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055  !DOCTYPE.HTML.PU
-	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454  BLIC."-//W3C//DT
-	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e  D.HTML.4.01.Tran
-	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c  sitional//EN">.<
-	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020  HTML>.<HEAD>....
-	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956  <META.HTTP-EQUIV
-	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220  =3D"Content-Type".
-	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874  CONTENT=3D"text/ht
-	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d  ml;.charset=3Diso-
-	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554  8859-1">....<MET
-	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074  A.NAME=3D"Descript
-	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468  ion".CONTENT=3D"Th
-	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c  e.initial.instal
-	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e  lation.of.Debian
-	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54  .apache.">....<T
-	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572  ITLE>Placeholder
-	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f  .page</TITLE>.</
-	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854  HEAD>.<BODY.TEXT
-	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c  =3D"#000000".BGCOL
-	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e  OR=3D"#FFFFFF".LIN
-	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e  K=3D"#0000EF".VLIN
-	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e  K=3D"#55188A".ALIN
-	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48  K=3D"#FF0000">..<H
-	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061  1>Placeholder.pa
-	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079  ge</H1>.<H2>If.y
-	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77  ou.are.just.brow
-	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832  sing.the.web</h2
-	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220  >..<P>The.owner.
-	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465  of.this.web.site
-	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020  .has.not.put.up.
-	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965  any.web.pages.ye
-	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062  t..Please.come.b
-	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a  ack.later.</P>..
-	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e  <P><SMALL><CITE>
-	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468  Move.along,.noth
-	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e  ing.to.see.here.
-	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53  ..</CITE>.:-)</S
-	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49  MALL></P>..<H2>I
-	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67  f.you.are.trying
-	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061  .to.locate.the.a
-	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620  dministrator.of.
-	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832  this.machine</H2
-	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e  >..<P>If.you.wan
-	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65  t.to.report.some
-	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973  thing.about.this
-	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72  .host's.behavior
-	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374  ,.please.contact
-	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365  .the.Internet.Se
-	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028  rvice.Provider.(
-	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469  ISP).involved.di
-	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e  rectly.</P>..<P>
-	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d  See.the.<A.href=3D
-	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573  "http://www.abus
-	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20  e.net/">Network.
-	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f  Abuse.Clearingho
-	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720  use</A>.for.how.
-	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a  to.do.this.</P>.
-	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520  .<H2>If.you.are.
-	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f  the.administrato
-	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e  r.of.this.machin
-	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069  e</H2>..<P>The.i
-	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174  nitial.installat
-	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22  ion.of.<A.href=3D"
-	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
-	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773  n.org/">Debian's
-	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220  .apache</A>.web.
-	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077  server.package.w
-	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f  as.successful.</
-	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59  P>..<P><STRONG>Y
-	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163  ou.should.replac
-	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468  e.this.page.with
-	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061  .your.own.web.pa
-	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070  ges.as.soon.as.p
-	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47  ossible.</STRONG
-	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373  ></P>..<P>Unless
-	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473  .you.changed.its
-	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20  .configuration,.
-	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220  your.new.server.
-	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173  is.configured.as
-	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c  .follows:.<UL>.<
-	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f  LI>.Configuratio
-	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066  n.files.can.be.f
-	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463  ound.in.<TT>/etc
-	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c  /apache</TT>.</L
-	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454  I>..<LI>.The.<TT
-	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54  >DocumentRoot</T
-	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865  T>,.which.is.the
-	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572  .directory.under
-	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a  .which.all.your.
-	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c  HTML.files.shoul
-	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420  d.exist,.is.set.
-	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c  to.<TT>/var/www<
-	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e  /TT>.</LI>..<LI>
-	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265  .CGI.scripts.are
-	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c  .looked.for.in.<
-	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d  TT>/usr/lib/cgi-
-	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820  bin</TT>,.which.
-	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20  is.where.Debian.
-	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c  packages.will.pl
-	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074  ace.their.script
-	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f  s.</LI>..<LI>.Lo
-	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163  g.files.are.plac
-	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c  ed.in.<TT>/var/l
-	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20  og/apache</TT>,.
-	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461  and.will.be.rota
-	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865  ted.weekly...The
-	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f  .frequency.of.ro
-	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561  tation.can.be.ea
-	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920  sily.changed.by.
-	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463  editing.<TT>/etc
-	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061  /logrotate.d/apa
-	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a  che</TT>.</LI>..
-	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74  <LI>.The.default
-	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578  .directory.index
-	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874  .is.<TT>index.ht
-	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67  ml</TT>,.meaning
-	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66  .that.requests.f
-	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c  or.a.directory.<
-	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454  TT>/foo/bar/</TT
-	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520  >.will.give.the.
-	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520  contents.of.the.
-	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777  file.<TT>/var/ww
-	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e  w/foo/bar/index.
-	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420  html</TT>.if.it.
-	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67  exists.(assuming
-	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77  .that.<TT>/var/w
-	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220  ww</TT>.is.your.
-	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74  <TT>DocumentRoot
-	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c  </TT>).</LI>..<L
-	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72  I>.User.director
-	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c  ies.are.enabled,
-	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65  .and.user.docume
-	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b  nts.will.be.look
-	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54  ed.for.in.the.<T
-	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54  T>public_html</T
-	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620  T>.directory.of.
-	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573  the.users'.homes
-	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368  ...These.dirs.sh
-	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54  ould.be.under.<T
-	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e  T>/home</TT>,.an
-	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74  d.users.will.not
-	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c  .be.able.to.syml
-	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865  ink.to.files.the
-	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49  y.don't.own.</LI
-	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865  >..</UL>.All.the
-	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865  .standard.apache
-	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661  .modules.are.ava
-	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973  ilable.with.this
-	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265  .release.and.are
-	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974  .now.managed.wit
-	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065  h.debconf...Type
-	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66  .<TT>dpkg-reconf
-	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454  igure.apache</TT
-	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963  >.to.select.whic
-	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761  h.modules.you.wa
-	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e  nt.enabled...Man
-	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320  y.other.modules.
-	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468  are.available.th
-	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e  rough.the.Debian
-	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20  .package.system.
-	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c  with.the.names.<
-	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64  TT>libapache-mod
-	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520  -*</TT>..If.you.
-	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520  need.to.compile.
-	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c  a.module.yoursel
-	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564  f,.you.will.need
-	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a  .to.install.the.
-	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f  <TT>apache-dev</
-	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50  TT>.package...<P
-	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174  >More.documentat
-	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361  ion.on.Apache.ca
-	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c  n.be.found.on:.<
-	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120  UL>.<LI>.The.<A.
-	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368  HREF=3D"/doc/apach
-	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41  e-doc/manual/">A
-	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174  pache.documentat
-	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f  ion</A>.stored.o
-	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f  n.your.server.</
-	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
-	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF=3D"http://ww
-	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41  w.apache.org/">A
-	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41  pache.Project</A
-	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
-	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
-	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF=3D"http://www.
-	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22  apache-ssl.org/"
-	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20  >Apache-SSL</A>.
-	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a  home.site.</LI>.
-	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245  .<LI>.The.<A.HRE
-	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61  F=3D"http://perl.a
-	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420  pache.org/">mod.
-	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369  perl</A>.home.si
-	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54  te.</LI>..<LI>.T
-	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470  he.<A.HREF=3D"http
-	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565  ://www.apachewee
-	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765  k.com/">ApacheWe
-	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465  ek</A>.newslette
-	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468  r.</LI>..<LI>.Th
-	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a  e.<A.HREF=3D"http:
-	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267  //www.debian.org
-	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072  /doc/">Debian.Pr
-	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174  oject.Documentat
-	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f  ion</A>.which.co
-	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046  ntains.HOWTOs,.F
-	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172  AQs,.and.softwar
-	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a  e.updates.</LI>.
-	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361  </UL>..<P>You.ca
-	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074  n.also.consult.t
-	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852  he.list.of.<A.HR
-	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62  EF=3D"http://www.b
-	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22  outell.com/faq/"
-	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220  >World.Wide.Web.
-	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564  Frequently.Asked
-	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066  .Questions</A>.f
-	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a  or.information..
-	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070  .<H2>Let.other.p
-	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574  eople.know.about
-	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832  .this.server</H2
-	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470  >..<A.HREF=3D"http
-	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f  ://netcraft.com/
-	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070  ">Netcraft</A>.p
-	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572  rovides.an.inter
-	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276  esting.free.serv
-	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465  ice.for.web.site
-	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420  .monitoring.and.
-	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563  statistic.collec
-	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65  tion..You.can.le
-	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75  t.them.know.abou
-	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573  t.your.server.us
-	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245  ing.their.<A.HRE
-	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65  F=3D"http://uptime
-	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e  .netcraft.com/">
-	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45  interface</A>..E
-	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69  nabling.the.moni
-	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073  toring.of.your.s
-	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669  erver.will.provi
-	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62  de.a.better.glob
-	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077  al.overview.of.w
-	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174  ho.is.using.what
-	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420  .and.where,.and.
-	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465  it.would.give.De
-	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76  bian.a.better.ov
-	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170  erview.of.the.ap
-	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361  ache.package.usa
-	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074  ge...<H2>About.t
-	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c  his.page</H2>..<
-	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874  IMG.ALIGN=3D"right
-	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d  ".ALT=3D"".HEIGHT=3D
-	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738  "247".WIDTH=3D"278
-	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865  ".SRC=3D"icons/jhe
-	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468  061.png">..<P>Th
-	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c  is.is.a.placehol
-	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c  der.page.install
-	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245  ed.by.the.<A.HRE
-	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465  F=3D"http://www.de
-	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961  bian.org/">Debia
-	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66  n</A>.release.of
-	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220  .the.apache.Web.
-	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a  server.package..
-	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465  .<P>This.compute
-	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420  r.has.installed.
-	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c  the.Debian.GNU/L
-	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073  inux.operating.s
-	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861  ystem,.but.it.ha
-	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e  s.<strong>nothin
-	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865  g.to.do.with.the
-	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c  .Debian.Project<
-	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365  /strong>..Please
-	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c  .do.<strong>not<
-	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374  /strong>.contact
-	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a  .the.Debian.Proj
-	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50  ect.about.it.</P
-	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e  >..<P>If.you.fin
-	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320  d.a.bug.in.this.
-	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20  apache.package,.
-	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473  or.in.Apache.its
-	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65  elf,.please.file
-	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e  .a.bug.report.on
-	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f  .it...Instructio
-	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973  ns.on.doing.this
-	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f  ,.and.the.list.o
-	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a  f.<A.HREF=3D"http:
-	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72  //bugs.debian.or
-	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e  g/src:apache">kn
-	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620  own.bugs</A>.of.
-	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361  this.package,.ca
-	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468  n.be.found.in.th
-	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470  e..<A.HREF=3D"http
-	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72  ://www.debian.or
-	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67  g/Bugs/Reporting
-	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261  ">Debian.Bug.Tra
-	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e  cking.System</A>
-	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72  ...<P>Thanks.for
-	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b  .using.this.pack
-	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174  age,.and.congrat
-	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75  ulations.for.you
-	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465  r.choice.of.a.De
-	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e  bian.system!</P>
-	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365  ..<DIV.align=3D"ce
-	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22  nter">.<a.href=3D"
-	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
-	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c  n.org/">.<IMG.al
-	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569  ign=3D"middle".hei
-	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22  ght=3D"30".width=3D"
-	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64  25".src=3D"icons/d
-	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32  ebian/openlogo-2
-	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269  5.jpg".alt=3D"Debi
-	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265  an">.</a>.<a.hre
-	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170  f=3D"http://www.ap
-	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47  ache.org/">.<IMG
-	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220  .align=3D"middle".
-	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474  height=3D"32".widt
-	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f  h=3D"259".src=3D"ico
-	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67  ns/apache_pb.png
-	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a  ".alt=3D"Apache">.
-	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d  </a>.</DIV>..<!-
-	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761  -...This.page.wa
-	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561  s.initially.crea
-	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e  ted.by.Johnie.In
-	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574  gram.(http://net
-	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077  god.net/)...It.w
-	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420  as.later.edited.
-	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f  by.Matthew.Wilco
-	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469  x.and.Josip.Rodi
-	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669  n....Last.modifi
-	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f  ed:.$Date:.2004/
-	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024  06/20.15:33:57.$
-	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e  ....-->..</BODY>
-	0x15f0:  0a3c 2f48 544d 4c3e 0a                   .</HTML>.
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00  .4.n at .@.!T......
-	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010  ...p.P7X.I7z....
-	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc  0_........M...M.
-	0x0040:  9219                                     ..
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00  .4.p at .@.!R......
-	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011  ...p.P7X.I7z....
-	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc  0_........M..!M.
-	0x0040:  9219                                     ..
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00  .4.. at .@.........
-	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011  ...P.p7z..7X.J..
-	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc  ...5......M..#M.
-	0x0040:  9721                                     .!
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
-	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00  .4.r at .@.!P......
-	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010  ...p.P7X.J7z....
-	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc  0_........M..#M.
-	0x0040:  9723                                     .#
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-flags=
.puu
--- a/head/contrib/tcpdump/tests/print-flags.puu	Wed Jul 25 16:20:13 2012 +=
0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-begin 644 print-flags.pcap
-MU,.RH0(`!````````````/__```!````KU;+0E)0#@!*````2@``````````
-M``````````@`10``/!MH0`!`!B%2?P```7\```':<`!0-UB)?@````"@`G__
-M%"$```($0`P$`@@*3=3DR2%@`````!`P,"KU;+0HI0#@!*````2@``````````
-M``````````@`10``/```0`!`!CRZ?P```7\```$`4-IP-WJ-\3=3D8B7^@$G__
-M;K$```($0`P$`@@*3=3DR2%DW<DA8!`P,"KU;+0K=3D0#@!"````0@``````````
-M``````````@`10``-!MJ0`!`!B%8?P```7\```':<`!0-UB)?S=3DZC?*`$"``
-M-]````$!"`I-W)(63=3DR2%J]6RT*?50X`#`$```P!```````````````````(
-M`$4``/X;;$``0`8 at C'\```%_```!VG``4#=3D8B7\W>HWR@!@@`/[R```!`0@*
-M3=3DR2%TW<DA9'150 at +R!(5%10+S$N,0T*2&]S=3D#H@;&]C86QH;W-T#0I5<V5R
-M+4%G96YT.B!%3&EN:W,O,"XQ,"XT+3<M9&5B:6%N("AT97AT;6]D93L at 3&EN
-M=3D7@@,BXV+C$Q+3$M-C at V+7-M<"!I-C at V.R`Q,S)X-38M,BD-"D%C8V5P=3D#H@
-M*B\J#0I!8V-E<'0M16YC;V1I;F<Z(&=3DZ:7`-"D%C8V5P=3D"U,86YG=3D6%G93H@
-M96X-"D-O;FYE8W1I;VXZ($ME97`M06QI=3DF4-"@T*KU;+0KI9#@!"````0@``
-M``````````````````@`10``-!_D0`!`!AS>?P```7\```$`4-IP-WJ-\C=3D8
-MBDF`$"``-P,```$!"`I-W)(83=3DR2%Z]6RT*P7`X`^14``/D5````````````
-M```````(`$4`%>L?YD``0`8')7\```%_```!`%#:<#=3DZC?(W6(I)@!@@`!/@
-M```!`0@*3=3DR2&4W<DA=3D(5%10+S$N,2`R,#`@3TL-"D1A=3D&4Z(%=3DE9"P@,#8@
-M2G5L(#(P,#4@,#,Z-3<Z,S4 at 1TU4#0I397)V97(Z($%P86-H92\Q+C,N,S,-
-M"DQA<W0M36]D:69I960Z(%-U;BP@,34 at 075G(#(P,#0@,#`Z-#,Z-#$@1TU4
-M#0I%5&%G.B`B-F4X,&8P+3$T.&$M-#$Q96(Q8F0B#0I!8V-E<'0M4F%N9V5S
-M.B!B>71E<PT*0V]N=3D&5N=3D"U,96YG=3D&@Z(#4R-3 at -"DME97`M06QI=3DF4Z('1I
-M;65O=3D70],34L(&UA>#TQ,#`-"D-O;FYE8W1I;VXZ($ME97`M06QI=3DF4-"D-O
-M;G1E;G0M5'EP93H@=3D&5X=3D"]H=3D&UL.R!C:&%R<V5T/6ES;RTX.#4Y+3$-"@T*
-M/"%$3T-465!%($A434P at 4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,#$@
-M5')A;G-I=3D&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*("`@/$U%5$$@2%14
-M4"U%455)5CTB0V]N=3D&5N=3D"U4>7!E(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H
-M87)S970]:7-O+3 at X-3DM,2(^"B`@(#Q-151!($Y!344](D1E<V-R:7!T:6]N
-M(B!#3TY414Y4/2)4:&4@:6YI=3D&EA;"!I;G-T86QL871I;VX@;V8 at 1&5B:6%N
-M(&%P86-H92XB/@H@("`\5$E43$4^4&QA8V5H;VQD97(@<&%G93PO5$E43$4^
-M"CPO2$5!1#X*/$)/1%D at 5$585#TB(S`P,#`P,"(@0D=3D#3TQ/4CTB(T9&1D9&
-M1B(@3$E.2STB(S`P,#!%1B(@5DQ)3DL](B,U-3$X.$$B($%,24Y+/2(C1D8P
-M,#`P(CX*"CQ(,3Y0;&%C96AO;&1E<B!P86=3DE/"](,3X*/$@R/DEF('EO=3D2!A
-M<F4@:G5S=3D"!B<F]W<VEN9R!T:&4@=3DV5B/"]H,CX*"CQ0/E1H92!O=3DVYE<B!O
-M9B!T:&ES('=3DE8B!S:71E(&AA<R!N;W0@<'5T('5P(&%N>2!W96(@<&%G97,@
-M>65T+ at I0;&5A<V4 at 8V]M92!B86-K(&QA=3D&5R+CPO4#X*"CQ0/CQ334%,3#X\
-M0TE413Y-;W9E(&%L;VYG+"!N;W1H:6YG('1O('-E92!H97)E+BXN/"]#251%
-M/B`Z+2D\+U--04Q,/CPO4#X*"CQ(,CY)9B!Y;W4 at 87)E('1R>6EN9R!T;R!L
-M;V-A=3D&4@=3D&AE(&%D;6EN:7-T<F%T;W(@;V8@=3D&AI<R!M86-H:6YE/"](,CX*
-M"CQ0/DEF('EO=3D2!W86YT('1O(')E<&]R=3D"!S;VUE=3D&AI;F<@86)O=3D70@=3D&AI
-M<R!H;W-T)W, at 8F5H879I;W(L('!L96%S90IC;VYT86-T('1H92!);G1E<FYE
-M=3D"!397)V:6-E(%!R;W9I9&5R("A)4U`I(&EN=3DF]L=3DF5D(&1I<F5C=3D&QY+CPO
-M4#X*"CQ0/E-E92!T:&4@/$$@:')E9CTB:'1T<#HO+W=3DW=3DRYA8G5S92YN970O
-M(CY.971W;W)K($%B=3D7-E"D-L96%R:6YG:&]U<V4\+T$^(&9O<B!H;W<@=3D&\@
-M9&\@=3D&AI<RX\+U`^"@H\2#(^268@>6]U(&%R92!T:&4 at 861M:6YI<W1R871O
-M<B!O9B!T:&ES(&UA8VAI;F4\+T at R/@H*/%`^5&AE(&EN:71I86P@:6YS=3D&%L
-M;&%T:6]N(&]F(#Q!(&AR968](FAT=3D'`Z+R]W=3DW<N9&5B:6%N+F]R9R\B/D1E
-M8FEA;B=3DS"F%P86-H93PO03X@=3DV5B('-E<G9E<B!P86-K86=3DE('=3DA<R!S=3D6-C
-M97-S9G5L+CPO4#X*"CQ0/CQ35%)/3D<^66]U('-H;W5L9"!R97!L86-E('1H
-M:7,@<&%G92!W:71H('EO=3D7(@;W=3DN('=3DE8B!P86=3DE<R!A<PIS;V]N(&%S('!O
-M<W-I8FQE+CPO4U123TY'/CPO4#X*"CQ0/E5N;&5S<R!Y;W4 at 8VAA;F=3DE9"!I
-M=3D', at 8V]N9FEG=3D7)A=3D&EO;BP@>6]U<B!N97<@<V5R=3DF5R(&ES(&-O;F9I9W5R
-M960 at 87, at 9F]L;&]W<SH*/%5,/@H\3$D^"D-O;F9I9W5R871I;VX at 9FEL97,@
-M8V%N(&)E(&9O=3D6YD(&EN(#Q45#XO971C+V%P86-H93PO5%0^+CPO3$D^"@H\
-M3$D^"E1H92`\5%0^1&]C=3D6UE;G12;V]T/"]45#XL('=3DH:6-H(&ES('1H92!D
-M:7)E8W1O<GD@=3D6YD97(@=3DVAI8V@@86QL('EO=3D7(*2%1-3"!F:6QE<R!S:&]U
-M;&0 at 97AI<W0L(&ES('-E=3D"!T;R`\5%0^+W9A<B]W=3DW<\+U14/BX\+TQ)/@H*
-M/$Q)/@I#1TD@<V-R:7!T<R!A<F4@;&]O:V5D(&9O<B!I;B`\5%0^+W5S<B]L
-M:6(O8V=3DI+6)I;CPO5%0^+"!W:&EC:"!I<R!W:&5R90I$96)I86X@<&%C:V%G
-M97,@=3DVEL;"!P;&%C92!T:&5I<B!S8W)I<'1S+CPO3$D^"@H\3$D^"DQO9R!F
-M:6QE<R!A<F4@<&QA8V5D(&EN(#Q45#XO=3DF%R+VQO9R]A<&%C:&4\+U14/BP@
-M86YD('=3DI;&P at 8F4@<F]T871E9`IW965K;'DN("!4:&4 at 9G)E<75E;F-Y(&]F
-M(')O=3D&%T:6]N(&-A;B!B92!E87-I;'D at 8VAA;F=3DE9"!B>2!E9&ET:6YG"CQ4
-M5#XO971C+VQO9W)O=3D&%T92YD+V%P86-H93PO5%0^+CPO3$D^"@H\3$D^"E1H
-M92!D969A=3D6QT(&1I<F5C=3D&]R>2!I;F1E>"!I<R`\5%0^:6YD97 at N:'1M;#PO
-M5%0^+"!M96%N:6YG('1H870@<F5Q=3D65S=3D',*9F]R(&$@9&ER96-T;W)Y(#Q4
-M5#XO9F]O+V)A<B\\+U14/B!W:6QL(&=3DI=3DF4@=3D&AE(&-O;G1E;G1S(&]F('1H
-M92!F:6QE(#Q45#XO=3DF%R+W=3DW=3DR]F;V\O8F%R+VEN9&5X+FAT;6P\+U14/@II
-M9B!I=3D"!E>&ES=3D',@*&%S<W5M:6YG('1H870@/%14/B]V87(O=3DW=3DW/"]45#X@
-M:7,@>6]U<B`\5%0^1&]C=3D6UE;G12;V]T/"]45#XI+CPO3$D^"@H\3$D^"E5S
-M97(@9&ER96-T;W)I97, at 87)E(&5N86)L960L(&%N9"!U<V5R(&1O8W5M96YT
-M<R!W:6QL(&)E(&QO;VME9"!F;W(*:6X@=3D&AE(#Q45#YP=3D6)L:6-?:'1M;#PO
-M5%0^(&1I<F5C=3D&]R>2!O9B!T:&4@=3D7-E<G,G(&AO;65S+B`@5&AE<V4 at 9&ER
-M<PIS:&]U;&0 at 8F4@=3D6YD97(@/%14/B]H;VUE/"]45#XL(&%N9"!U<V5R<R!W
-M:6QL(&YO=3D"!B92!A8FQE('1O('-Y;6QI;FL*=3D&\@9FEL97,@=3D&AE>2!D;VXG
-M=3D"!O=3DVXN/"],23X*"CPO54P^"D%L;"!T:&4@<W1A;F1A<F0 at 87!A8VAE(&UO
-M9'5L97, at 87)E(&%V86EL86)L92!W:71H('1H:7,@<F5L96%S92!A;F0 at 87)E
-M"FYO=3DR!M86YA9V5D('=3DI=3D&@@9&5B8V]N9BX@(%1Y<&4@/%14/F1P:V<M<F5C
-M;VYF:6=3DU<F4 at 87!A8VAE/"]45#X@=3D&\*<V5L96-T('=3DH:6-H(&UO9'5L97,@
-M>6]U('=3DA;G0 at 96YA8FQE9"X@($UA;GD@;W1H97(@;6]D=3D6QE<R!A<F4 at 879A
-M:6QA8FQE"G1H<F]U9V@@=3D&AE($1E8FEA;B!P86-K86=3DE('-Y<W1E;2!W:71H
-M('1H92!N86UE<R`\5%0^;&EB87!A8VAE+6UO9"TJ/"]45#XN"DEF('EO=3D2!N
-M965D('1O(&-O;7!I;&4 at 82!M;V1U;&4@>6]U<G-E;&8L('EO=3D2!W:6QL(&YE
-M960@=3D&\@:6YS=3D&%L;"!T:&4*/%14/F%P86-H92UD978\+U14/B!P86-K86=3DE
-M+ at H*/%`^36]R92!D;V-U;65N=3D&%T:6]N(&]N($%P86-H92!C86X at 8F4@9F]U
-M;F0@;VXZ"CQ53#X*/$Q)/@I4:&4@/$$@2%)%1CTB+V1O8R]A<&%C:&4M9&]C
-M+VUA;G5A;"\B/D%P86-H92!D;V-U;65N=3D&%T:6]N/"]!/B!S=3D&]R960@;VX@
-M>6]U<B!S97)V97(N/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT=3D'`Z+R]W
-M=3DW<N87!A8VAE+F]R9R\B/D%P86-H92!0<F]J96-T/"]!/B!H;VUE('-I=3D&4N
-M/"],23X*"CQ,23X*5&AE(#Q!($A2148](FAT=3D'`Z+R]W=3DW<N87!A8VAE+7-S
-M;"YO<F<O(CY!<&%C:&4M4U-,/"]!/B!H;VUE('-I=3D&4N/"],23X*"CQ,23X*
-M5&AE(#Q!($A2148](FAT=3D'`Z+R]P97)L+F%P86-H92YO<F<O(CYM;V0@<&5R
-M;#PO03X@:&]M92!S:71E+CPO3$D^"@H\3$D^"E1H92`\02!(4D5&/2)H=3D'1P
-M.B\O=3DW=3DW+F%P86-H97=3DE96LN8V]M+R(^07!A8VAE5V5E:SPO03X@;F5W<VQE
-M=3D'1E<BX\+TQ)/@H*/$Q)/@I4:&4@/$$@2%)%1CTB:'1T<#HO+W=3DW=3DRYD96)I
-M86XN;W)G+V1O8R\B/D1E8FEA;B!0<F]J96-T"D1O8W5M96YT871I;VX\+T$^
-M('=3DH:6-H(&-O;G1A:6YS($A/5U1/<RP at 1D%1<RP at 86YD('-O9G1W87)E('5P
-M9&%T97,N/"],23X*/"]53#X*"CQ0/EEO=3D2!C86X at 86QS;R!C;VYS=3D6QT('1H
-M92!L:7-T(&]F(#Q!($A2148](FAT=3D'`Z+R]W=3DW<N8F]U=3D&5L;"YC;VTO9F%Q
-M+R(^5V]R;&0*5VED92!796(@1G)E<75E;G1L>2!!<VME9"!1=3D65S=3D&EO;G,\
-M+T$^(&9O<B!I;F9O<FUA=3D&EO;BX*"CQ(,CY,970@;W1H97(@<&5O<&QE(&MN
-M;W<@86)O=3D70@=3D&AI<R!S97)V97(\+T at R/@H*/$$@2%)%1CTB:'1T<#HO+VYE
-M=3D&-R869T+F-O;2\B/DYE=3D&-R869T/"]!/B!P<F]V:61E<R!A;B!I;G1E<F5S
-M=3D&EN9R!F<F5E"G-E<G9I8V4 at 9F]R('=3DE8B!S:71E(&UO;FET;W)I;F<@86YD
-M('-T871I<W1I8R!C;VQL96-T:6]N+ at I9;W4 at 8V%N(&QE=3D"!T:&5M(&MN;W<@
-M86)O=3D70@>6]U<B!S97)V97(@=3D7-I;F<@=3D&AE:7(*/$$@2%)%1CTB:'1T<#HO
-M+W5P=3D&EM92YN971C<F%F=3D"YC;VTO(CYI;G1E<F9A8V4\+T$^+ at I%;F%B;&EN
-M9R!T:&4@;6]N:71O<FEN9R!O9B!Y;W5R('-E<G9E<B!W:6QL('!R;W9I9&4@
-M82!B971T97(@9VQO8F%L(&]V97)V:65W"F]F('=3DH;R!I<R!U<VEN9R!W:&%T
-M(&%N9"!W:&5R92P at 86YD(&ET('=3DO=3D6QD(&=3DI=3DF4 at 1&5B:6%N(&$@8F5T=3D&5R
-M"F]V97)V:65W(&]F('1H92!A<&%C:&4@<&%C:V%G92!U<V%G92X*"CQ(,CY!
-M8F]U=3D"!T:&ES('!A9V4\+T at R/@H*/$E-1R!!3$E'3CTB<FEG:'0B($%,5#TB
-M(B!(14E'2%0](C(T-R(@5TE$5$@](C(W."(@4U)#/2)I8V]N<R]J:&4P-C$N
-M<&YG(CX*"CQ0/E1H:7,@:7, at 82!P;&%C96AO;&1E<B!P86=3DE(&EN<W1A;&QE
-M9"!B>2!T:&4@/$$*2%)%1CTB:'1T<#HO+W=3DW=3DRYD96)I86XN;W)G+R(^1&5B
-M:6%N/"]!/@IR96QE87-E(&]F('1H92!A<&%C:&4 at 5V5B('-E<G9E<B!P86-K
-M86=3DE+ at H*/%`^5&AI<R!C;VUP=3D71E<B!H87,@:6YS=3D&%L;&5D('1H92!$96)I
-M86X at 1TY5+TQI;G5X(&]P97)A=3D&EN9R!S>7-T96TL"F)U=3D"!I=3D"!H87,@/'-T
-M<F]N9SYN;W1H:6YG('1O(&1O('=3DI=3D&@@=3D&AE($1E8FEA;@I0<F]J96-T/"]S
-M=3D')O;F<^+B!0;&5A<V4 at 9&\@/'-T<F]N9SYN;W0\+W-T<F]N9SX at 8V]N=3D&%C
-M=3D"!T:&4 at 1&5B:6%N"E!R;VIE8W0 at 86)O=3D70@:70N/"]0/@H*/%`^268@>6]U
-M(&9I;F0 at 82!B=3D6<@:6X@=3D&AI<R!A<&%C:&4@<&%C:V%G92P@;W(@:6X at 07!A
-M8VAE(&ET<V5L9BP*<&QE87-E(&9I;&4 at 82!B=3D6<@<F5P;W)T(&]N(&ET+B`@
-M26YS=3D')U8W1I;VYS(&]N(&1O:6YG('1H:7,L(&%N9"!T:&4*;&ES=3D"!O9B`\
-M02!(4D5&/2)H=3D'1P.B\O8G5G<RYD96)I86XN;W)G+W-R8SIA<&%C:&4B/FMN
-M;W=3DN(&)U9W,\+T$^(&]F('1H:7,*<&%C:V%G92P at 8V%N(&)E(&9O=3D6YD(&EN
-M('1H92`*/$$@2%)%1CTB:'1T<#HO+W=3DW=3DRYD96)I86XN;W)G+T)U9W,O4F5P
-M;W)T:6YG(CY$96)I86X at 0G5G(%1R86-K:6YG(%-Y<W1E;3PO03XN"@H\4#Y4
-M:&%N:W, at 9F]R('5S:6YG('1H:7,@<&%C:V%G92P at 86YD(&-O;F=3DR871U;&%T
-M:6]N<R!F;W(@>6]U<B!C:&]I8V4@;V8*82!$96)I86X@<WES=3D&5M(3PO4#X*
-M"CQ$258 at 86QI9VX](F-E;G1E<B(^"CQA(&AR968](FAT=3D'`Z+R]W=3DW<N9&5B
-M:6%N+F]R9R\B/@H\24U'(&%L:6=3DN/2)M:61D;&4B(&AE:6=3DH=3D#TB,S`B('=3DI
-M9'1H/2(R-2(@<W)C/2)I8V]N<R]D96)I86XO;W!E;FQO9V\M,C4N:G!G(B!A
-M;'0](D1E8FEA;B(^"CPO83X*/&$@:')E9CTB:'1T<#HO+W=3DW=3DRYA<&%C:&4N
-M;W)G+R(^"CQ)34<@86QI9VX](FUI9&1L92(@:&5I9VAT/2(S,B(@=3DVED=3D&@]
-M(C(U.2(@<W)C/2)I8V]N<R]A<&%C:&5?<&(N<&YG(B!A;'0](D%P86-H92(^
-M"CPO83X*/"]$258^"@H\(2TM"B`@5&AI<R!P86=3DE('=3DA<R!I;FET:6%L;'D@
-M8W)E871E9"!B>2!*;VAN:64 at 26YG<F%M("AH=3D'1P.B\O;F5T9V]D+FYE=3D"\I
-M"B`@270@=3DV%S(&QA=3D&5R(&5D:71E9"!B>2!-871T:&5W(%=3DI;&-O>"!A;F0@
-M2F]S:7`@4F]D:6XN"B`@3&%S=3D"!M;V1I9FEE9#H@)$1A=3D&4Z(#(P,#0O,#8O
-M,C`@,34Z,S,Z-3<@)"X*("`M+3X*"CPO0D]$63X*/"](5$U,/@JO5LM"S%P.
-M`$(```!"````````````````````"`!%```T&VY``$`&(51_```!?P```=3DIP
-M`%`W6(I)-WJCJ8`0,%\0Z@```0$("DW<DAE-W)(9L5;+0L>``P!"````0@``
-M``````````````````@`10``-!MP0`!`!B%2?P```7\```':<`!0-UB*23=3DZ
-MHZF`$3!?"^$```$!"`I-W)<A3=3DR2&;%6RT*WA0,`0@```$(`````````````
-M```````(`$4``#0?Z$``0`8<VG\```%_```!`%#:<#=3DZHZDW6(I*@!$@`!<U
-M```!`0@*3=3DR7(TW<ER&Q5LM"](4#`$(```!"````````````````````"`!%
-M```T&W)``$`&(5!_```!?P```=3DIP`%`W6(I*-WJCJH`0,%\&U````0$("DW<
-&ER--W)<C
-`
-end
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-flags=
.sh
--- a/head/contrib/tcpdump/tests/print-flags.sh	Wed Jul 25 16:20:13 2012 +0=
300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-uudecode print-flags.puu
-
-for i in x xx X XX A AA; do
-	if (../tcpdump -$i -s0 -nr print-flags.pcap | tee NEW/print-$i.new | diff=
 - print-$i.out >DIFF/print-$i.out.diff )
-	then
-		echo print-$i passed.
-	else
-		echo print-$i failed.
-	fi
-done
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-x.out
--- a/head/contrib/tcpdump/tests/print-x.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,409 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000
-	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a
-	0x0030:  4ddc 9216 0000 0000 0103 0302
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001
-	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f
-	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a
-	0x0030:  4ddc 9216 4ddc 9216 0103 0302
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
-	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216
-	0x0030:  4ddc 9216
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
-	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217
-	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31
-	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68
-	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a
-	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37
-	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64
-	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d
-	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20
-	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570
-	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45
-	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41
-	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20
-	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20
-	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001
-	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
-	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218
-	0x0030:  4ddc 9217
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001
-	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
-	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219
-	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030
-	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20
-	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35
-	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572
-	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d
-	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20
-	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034
-	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45
-	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438
-	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363
-	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465
-	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774
-	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c
-	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c
-	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563
-	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665
-	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20
-	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273
-	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d
-	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20
-	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f
-	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472
-	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e
-	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20
-	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155
-	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065
-	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f
-	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973
-	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d
-	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269
-	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22
-	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374
-	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269
-	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020
-	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64
-	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a
-	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445
-	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743
-	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c
-	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c
-	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c
-	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a
-	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220
-	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966
-	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272
-	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f
-	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65
-	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369
-	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075
-	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320
-	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65
-	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e
-	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954
-	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f
-	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572
-	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c
-	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832
-	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969
-	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865
-	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f
-	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f
-	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077
-	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f
-	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468
-	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669
-	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461
-	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420
-	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572
-	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420
-	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c
-	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265
-	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162
-	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72
-	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67
-	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f
-	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50
-	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172
-	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261
-	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368
-	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865
-	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c
-	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566
-	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
-	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e
-	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765
-	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765
-	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e
-	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47
-	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c
-	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769
-	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220
-	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173
-	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f
-	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65
-	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069
-	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e
-	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665
-	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420
-	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e
-	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174
-	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265
-	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65
-	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c
-	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c
-	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c
-	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074
-	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64
-	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75
-	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f
-	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365
-	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777
-	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c
-	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061
-	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e
-	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367
-	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963
-	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961
-	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20
-	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269
-	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
-	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c
-	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172
-	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e
-	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f
-	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054
-	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620
-	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520
-	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062
-	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65
-	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61
-	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e
-	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175
-	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64
-	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e
-	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69
-	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473
-	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279
-	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f
-	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468
-	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468
-	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f
-	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465
-	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069
-	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69
-	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172
-	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75
-	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f
-	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a
-	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374
-	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65
-	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375
-	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f
-	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520
-	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c
-	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f
-	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d
-	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a
-	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220
-	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20
-	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e
-	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379
-	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074
-	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f
-	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074
-	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163
-	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061
-	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468
-	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061
-	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077
-	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479
-	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f
-	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f
-	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768
-	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520
-	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d
-	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65
-	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a
-	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269
-	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465
-	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573
-	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d
-	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f
-	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c
-	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273
-	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65
-	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468
-	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576
-	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a
-	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74
-	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520
-	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a
-	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c
-	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061
-	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22
-	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74
-	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564
-	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e
-	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520
-	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f
-	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22
-	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c
-	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f
-	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
-	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777
-	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267
-	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41
-	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
-	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
-	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c
-	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f
-	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520
-	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e
-	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874
-	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577
-	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865
-	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574
-	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
-	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474
-	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f
-	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20
-	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74
-	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820
-	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c
-	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477
-	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49
-	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520
-	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74
-	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120
-	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777
-	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171
-	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765
-	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b
-	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e
-	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e
-	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572
-	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f
-	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f
-	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874
-	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f
-	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e
-	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74
-	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365
-	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369
-	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e
-	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c
-	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20
-	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162
-	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220
-	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048
-	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469
-	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f
-	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e
-	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f
-	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572
-	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f
-	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c
-	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66
-	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768
-	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e
-	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520
-	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a
-	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520
-	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075
-	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574
-	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a
-	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967
-	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748
-	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232
-	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a
-	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e
-	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568
-	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461
-	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48
-	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e
-	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562
-	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520
-	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765
-	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765
-	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075
-	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65
-	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55
-	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67
-	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420
-	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468
-	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074
-	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563
-	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561
-	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f
-	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461
-	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072
-	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c
-	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066
-	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869
-	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765
-	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069
-	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669
-	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420
-	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374
-	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468
-	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374
-	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474
-	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e
-	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e
-	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f
-	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20
-	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20
-	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874
-	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e
-	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469
-	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054
-	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f
-	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066
-	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061
-	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772
-	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079
-	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120
-	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f
-	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22
-	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566
-	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
-	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720
-	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068
-	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468
-	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73
-	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f
-	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465
-	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068
-	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e
-	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49
-	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65
-	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769
-	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269
-	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70
-	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522
-	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c
-	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520
-	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372
-	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520
-	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e
-	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974
-	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465
-	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c
-	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f
-	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469
-	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030
-	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537
-	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44
-	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
-	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219
-	0x0030:  4ddc 9219
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
-	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721
-	0x0030:  4ddc 9219
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001
-	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a
-	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723
-	0x0030:  4ddc 9721
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001
-	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa
-	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723
-	0x0030:  4ddc 9723
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/print-xx.out
--- a/head/contrib/tcpdump/tests/print-xx.out	Wed Jul 25 16:20:13 2012 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 92854924=
6, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale =
2], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002
-	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc
-	0x0040:  9216 0000 0000 0103 0302
-22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 9307786=
09, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 e=
cr 1306300950,nop,wscale 2], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00
-	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012
-	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc
-	0x0040:  9216 4ddc 9216 0103 0302
-22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8=
192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010
-	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc
-	0x0040:  9216
-22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, =
ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length=
 202
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018
-	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc
-	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31
-	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73
-	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045
-	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64
-	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b
-	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d
-	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133
-	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a
-	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63
-	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363
-	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e
-	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65
-	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a
-22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win=
 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00
-	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010
-	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc
-	0x0040:  9217
-22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560,=
 ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], len=
gth 5559
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00
-	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018
-	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc
-	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f
-	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036
-	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a
-	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20
-	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c
-	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375
-	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030
-	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461
-	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d
-	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570
-	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d
-	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a
-	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976
-	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d
-	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469
-	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a
-	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465
-	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574
-	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c
-	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055
-	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454
-	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e
-	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c
-	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020
-	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956
-	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220
-	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874
-	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d
-	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554
-	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074
-	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468
-	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c
-	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e
-	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54
-	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572
-	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f
-	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854
-	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c
-	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e
-	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e
-	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e
-	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48
-	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061
-	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079
-	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77
-	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832
-	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220
-	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465
-	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020
-	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965
-	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062
-	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a
-	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e
-	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468
-	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e
-	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53
-	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49
-	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67
-	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061
-	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620
-	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832
-	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e
-	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65
-	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973
-	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72
-	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374
-	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365
-	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028
-	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469
-	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e
-	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d
-	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573
-	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20
-	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f
-	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720
-	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a
-	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520
-	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f
-	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e
-	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069
-	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174
-	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22
-	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
-	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773
-	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220
-	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077
-	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f
-	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59
-	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163
-	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468
-	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061
-	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070
-	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47
-	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373
-	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473
-	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20
-	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220
-	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173
-	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c
-	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f
-	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066
-	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463
-	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c
-	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454
-	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54
-	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865
-	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572
-	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a
-	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c
-	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420
-	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c
-	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e
-	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265
-	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c
-	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d
-	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820
-	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20
-	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c
-	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074
-	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f
-	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163
-	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c
-	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20
-	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461
-	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865
-	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f
-	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561
-	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920
-	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463
-	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061
-	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a
-	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74
-	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578
-	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874
-	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67
-	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66
-	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c
-	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454
-	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520
-	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520
-	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777
-	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e
-	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420
-	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67
-	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77
-	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220
-	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74
-	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c
-	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72
-	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c
-	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65
-	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b
-	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54
-	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54
-	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620
-	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573
-	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368
-	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54
-	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e
-	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74
-	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c
-	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865
-	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49
-	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865
-	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865
-	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661
-	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973
-	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265
-	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974
-	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065
-	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66
-	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454
-	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963
-	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761
-	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e
-	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320
-	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468
-	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e
-	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20
-	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c
-	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64
-	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520
-	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520
-	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c
-	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564
-	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a
-	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f
-	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50
-	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174
-	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361
-	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c
-	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120
-	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368
-	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41
-	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174
-	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f
-	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f
-	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
-	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777
-	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41
-	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41
-	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
-	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
-	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e
-	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22
-	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20
-	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a
-	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245
-	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61
-	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420
-	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369
-	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54
-	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470
-	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565
-	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765
-	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465
-	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468
-	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a
-	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267
-	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072
-	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174
-	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f
-	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046
-	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172
-	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a
-	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361
-	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074
-	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852
-	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62
-	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22
-	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220
-	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564
-	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066
-	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a
-	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070
-	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574
-	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832
-	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470
-	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f
-	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070
-	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572
-	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276
-	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465
-	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420
-	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563
-	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65
-	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75
-	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573
-	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245
-	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65
-	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e
-	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45
-	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69
-	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073
-	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669
-	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62
-	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077
-	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174
-	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420
-	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465
-	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76
-	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170
-	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361
-	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074
-	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c
-	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874
-	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d
-	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738
-	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865
-	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468
-	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c
-	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c
-	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245
-	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465
-	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961
-	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66
-	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220
-	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a
-	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465
-	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420
-	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c
-	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073
-	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861
-	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e
-	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865
-	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c
-	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365
-	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c
-	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374
-	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a
-	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50
-	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e
-	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320
-	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20
-	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473
-	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65
-	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e
-	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f
-	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973
-	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f
-	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a
-	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72
-	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e
-	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620
-	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361
-	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468
-	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470
-	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72
-	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67
-	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261
-	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e
-	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72
-	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b
-	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174
-	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75
-	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465
-	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e
-	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365
-	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22
-	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
-	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c
-	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569
-	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22
-	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64
-	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32
-	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269
-	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265
-	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170
-	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47
-	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220
-	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474
-	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f
-	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67
-	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a
-	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d
-	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761
-	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561
-	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e
-	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574
-	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077
-	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420
-	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f
-	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469
-	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669
-	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f
-	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024
-	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e
-	0x15f0:  0a3c 2f48 544d 4c3e 0a
-22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, wi=
n 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010
-	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc
-	0x0040:  9219
-22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ac=
k 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], leng=
th 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011
-	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc
-	0x0040:  9219
-22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, a=
ck 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], lengt=
h 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00
-	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011
-	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc
-	0x0040:  9721
-22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, wi=
n 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
-	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
-	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00
-	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010
-	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc
-	0x0040:  9723
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/tests/rsvp-infini=
te-loop.pcap
Binary file head/contrib/tcpdump/tests/rsvp-infinite-loop.pcap has changed
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/tcpdump/udp.h
--- a/head/contrib/tcpdump/udp.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/tcpdump/udp.h	Wed Jul 25 16:21:35 2012 +0300
@@ -90,4 +90,6 @@
 #define RIPNG_PORT 521		/*XXX*/
 #define DHCP6_SERV_PORT 546	/*XXX*/
 #define DHCP6_CLI_PORT 547	/*XXX*/
+#define BABEL_PORT 6696
+#define BABEL_PORT_OLD 6697
 #endif
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/telnet/telnet/telnet.1
--- a/head/contrib/telnet/telnet/telnet.1	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/telnet/telnet/telnet.1	Wed Jul 25 16:21:35 2012 +0300
@@ -30,7 +30,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	@(#)telnet.1	8.6 (Berkeley) 6/1/94
-.\" $FreeBSD$
+.\" $FreeBSD: head/contrib/telnet/telnet/telnet.1 237190 2012-06-17 11:04:=
38Z joel $
 .\"
 .Dd September 18, 2006
 .Dt TELNET 1
@@ -344,7 +344,6 @@
 and
 .Ic display
 commands).
-.Pp
 .Bl -tag -width "mode type"
 .It Ic auth Ar argument ...
 The auth command manipulates the information sent through the
@@ -664,7 +663,6 @@
 Sends one or more special character sequences to the remote host.
 The following are the arguments which may be specified
 (more than one argument may be specified at a time):
-.Pp
 .Bl -tag -width escape
 .It Ic abort
 Sends the
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/top/display.c
--- a/head/contrib/top/display.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/top/display.c	Wed Jul 25 16:21:35 2012 +0300
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern Univers=
ity
  *
- * $FreeBSD: head/contrib/top/display.c 224205 2011-07-18 21:15:47Z jhb $
+ * $FreeBSD: head/contrib/top/display.c 237656 2012-06-27 18:08:48Z jhb $
  */
=20
 /*
@@ -66,6 +66,7 @@
 static char **procstate_names;
 static char **cpustate_names;
 static char **memory_names;
+static char **arc_names;
 static char **swap_names;
=20
 static int num_procstates;
@@ -100,6 +101,8 @@
 int  y_brkdn =3D		1;
 int  x_mem =3D		5;
 int  y_mem =3D		3;
+int  x_arc =3D		5;
+int  y_arc =3D		4;
 int  x_swap =3D		6;
 int  y_swap =3D		4;
 int  y_message =3D	5;
@@ -216,6 +219,8 @@
 	num_memory =3D string_count(memory_names);
 	lmemory =3D (int *)malloc(num_memory * sizeof(int));
=20
+	arc_names =3D statics->arc_names;
+=09
 	/* calculate starting columns where needed */
 	cpustate_total_length =3D 0;
 	pp =3D cpustate_names;
@@ -627,6 +632,46 @@
 }
=20
 /*
+ *  *_arc(stats) - print "ARC: " followed by the ARC summary string
+ *
+ *  Assumptions:  cursor is on "lastline"
+ *                for i_arc ONLY: cursor is on the previous line
+ */
+char arc_buffer[MAX_COLS];
+
+i_arc(stats)
+
+int *stats;
+
+{
+    if (arc_names =3D=3D NULL)
+	return (0);
+
+    fputs("\nARC: ", stdout);
+    lastline++;
+
+    /* format and print the memory summary */
+    summary_format(arc_buffer, stats, arc_names);
+    fputs(arc_buffer, stdout);
+}
+
+u_arc(stats)
+
+int *stats;
+
+{
+    static char new[MAX_COLS];
+
+    if (arc_names =3D=3D NULL)
+	return (0);
+
+    /* format the new line */
+    summary_format(new, stats, arc_names);
+    line_update(arc_buffer, new, x_arc, y_arc);
+}
+
+=20
+/*
  *  *_swap(stats) - print "Swap: " followed by the swap summary string
  *
  *  Assumptions:  cursor is on "lastline"
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/top/layout.h
--- a/head/contrib/top/layout.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/top/layout.h	Wed Jul 25 16:21:35 2012 +0300
@@ -5,7 +5,7 @@
  *  display.  These definitions are used by the routines in "display.c" for
  *  cursor addressing.
  *
- * $FreeBSD$
+ * $FreeBSD: head/contrib/top/layout.h 237656 2012-06-27 18:08:48Z jhb $
  */
=20
 extern int  x_lastpid;		/* 10 */
@@ -19,6 +19,8 @@
 extern int  y_brkdn;		/* 1 */
 extern int  x_mem;		/* 5 */
 extern int  y_mem;		/* 3 */
+extern int  x_arc;		/* 5 */
+extern int  y_arc;		/* 4 */
 extern int  x_swap;		/* 6 */
 extern int  y_swap;		/* 4 */
 extern int  y_message;		/* 5 */
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/top/machine.h
--- a/head/contrib/top/machine.h	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/top/machine.h	Wed Jul 25 16:21:35 2012 +0300
@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: head/contrib/top/machine.h 222530 2011-05-31 15:11:23Z jhb $
+ * $FreeBSD: head/contrib/top/machine.h 237656 2012-06-27 18:08:48Z jhb $
  */
=20
 /*
@@ -16,6 +16,7 @@
     char **procstate_names;
     char **cpustate_names;
     char **memory_names;
+    char **arc_names;
     char **swap_names;
 #ifdef ORDER
     char **order_names;
@@ -42,6 +43,7 @@
     int    *procstates;
     int    *cpustates;
     int    *memory;
+    int    *arc;
     int    *swap;
     struct timeval boottime;
     int    ncpus;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/top/top.c
--- a/head/contrib/top/top.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/top/top.c	Wed Jul 25 16:21:35 2012 +0300
@@ -13,7 +13,7 @@
  *  Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
  *  Copyright (c) 1996, William LeFebvre, Group sys Consulting
  *
- * $FreeBSD: head/contrib/top/top.c 232660 2012-03-07 18:05:45Z kib $
+ * $FreeBSD: head/contrib/top/top.c 237656 2012-06-27 18:08:48Z jhb $
  */
=20
 /*
@@ -121,6 +121,8 @@
 int u_cpustates();
 int i_memory();
 int u_memory();
+int i_arc();
+int u_arc();
 int i_swap();
 int u_swap();
 int i_message();
@@ -135,6 +137,7 @@
 int (*d_procstates)() =3D i_procstates;
 int (*d_cpustates)() =3D i_cpustates;
 int (*d_memory)() =3D i_memory;
+int (*d_arc)() =3D i_arc;
 int (*d_swap)() =3D i_swap;
 int (*d_message)() =3D i_message;
 int (*d_header)() =3D i_header;
@@ -647,6 +650,7 @@
=20
 	/* display memory stats */
 	(*d_memory)(system_info.memory);
+	(*d_arc)(system_info.arc);
=20
 	/* display swap stats */
 	(*d_swap)(system_info.swap);
@@ -712,6 +716,7 @@
 		    d_procstates =3D u_procstates;
 		    d_cpustates =3D u_cpustates;
 		    d_memory =3D u_memory;
+		    d_arc =3D u_arc;
 		    d_swap =3D u_swap;
 		    d_message =3D u_message;
 		    d_header =3D u_header;
@@ -1129,6 +1134,7 @@
     d_procstates =3D i_procstates;
     d_cpustates  =3D i_cpustates;
     d_memory     =3D i_memory;
+    d_arc        =3D i_arc;
     d_swap       =3D i_swap;
     d_message	 =3D i_message;
     d_header	 =3D i_header;
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/traceroute/traceroute.8
--- a/head/contrib/traceroute/traceroute.8	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/traceroute/traceroute.8	Wed Jul 25 16:21:35 2012 +0300
@@ -14,115 +14,66 @@
 .\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 .\"
 .\"	$Id: traceroute.8,v 1.19 2000/09/21 08:44:19 leres Exp $
-.\"	$FreeBSD$
+.\"	$FreeBSD: head/contrib/traceroute/traceroute.8 237635 2012-06-27 07:41=
:21Z joel $
 .\"
-.TH TRACEROUTE 8 "19 February 2008"
-.UC 6
-.SH NAME
-traceroute \- print the route packets take to network host
-.SH SYNOPSIS
-.na
-.B traceroute
-[
-.B \-adDeFISnrvx
-] [
-.B \-f
-.I first_ttl
-] [
-.B \-g
-.I gateway
-]
-.br
-.ti +8
-[
-.B \-i
-.I iface
-] [
-.B \-M
-.I first_ttl
-]=20
-.br
-.ti +8
-[
-.B \-m
-.I max_ttl
-] [
-.B \-P
-.I proto
-] [
-.B \-p
-.I port
-]
-.br
-.ti +8
-[
-.B \-q
-.I nqueries
-] [
-.B \-s
-.I src_addr
-] [
-.B \-t
-.I tos
-]
-.br
-.ti +8
-[
-.B \-w
-.I waittime
-] [
-.B \-A
-.I as_server
-] [
-.B \-z
-.I pausemsecs
-]
-.br
-.ti +8
-.I host
-[
-.I packetlen
-]
-.ad
-.SH DESCRIPTION
+.Dd June 19, 2012
+.Dt TRACEROUTE 8
+.Os
+.Sh NAME
+.Nm traceroute
+.Nd "print the route packets take to network host"
+.Sh SYNOPSIS
+.Nm
+.Bk -words
+.Op Fl adDeFISnrvx
+.Op Fl f Ar first_ttl
+.Op Fl g Ar gateway
+.Op Fl M Ar first_ttl
+.Op Fl m Ar max_ttl
+.Op Fl P Ar proto
+.Op Fl p Ar port
+.Op Fl q Ar nqueries
+.Op Fl s Ar src_addr
+.Op Fl t Ar tos
+.Op Fl w Ar waittime
+.Op Fl A Ar as_server
+.Op Fl z Ar pausemsecs
+.Ar host
+.Op Ar packetlen
+.Ek
+.Sh DESCRIPTION
 The Internet is a large and complex aggregation of
 network hardware, connected together by gateways.
 Tracking the route one's packets follow (or finding the miscreant
 gateway that's discarding your packets) can be difficult.
-.I Traceroute
+.Nm
 utilizes the IP protocol `time to live' field and attempts to elicit an
 ICMP TIME_EXCEEDED response from each gateway along the path to some
 host.
-.PP
+.Pp
 The only mandatory parameter is the destination host name or IP number.
 The default probe datagram length is 40 bytes, but this may be increased
 by specifying a packet length (in bytes) after the destination host
 name.
-.PP
+.Pp
 Other options are:
-.TP
-.B \-a
+.Bl -tag -width Ds
+.It Fl a
 Turn on AS# lookups for each hop encountered.
-.TP
-.B -A
+.It Fl A Ar as_server
 Turn  on  AS#  lookups  and  use the given server instead of the
 default.
-.TP
-.B \-e
+.It Fl e
 Firewall evasion mode.
 Use fixed destination ports for UDP and TCP probes.
 The destination port does NOT increment with each packet sent.
-.TP
-.B \-f
+.It Fl f Ar first_ttl
 Set the initial time-to-live used in the first outgoing probe packet.
-.TP
-.B \-F
+.It Fl F
 Set the "don't fragment" bit.
-.TP
-.B \-d
+.It Fl d
 Enable socket level debugging.
-.TP
-.B \-D
+.It Fl D
 When an ICMP response to our probe datagram is received,
 print the differences between the transmitted packet and
 the packet quoted by the ICMP response.
@@ -133,74 +84,66 @@
 Note,
 the IP checksum and the TTL of the quoted packet are not expected to match.
 By default, only one probe per hop is sent with this option.
-.TP
-.B \-g
+.It Fl g Ar gateway
 Specify a loose source route gateway (8 maximum).
-.TP
-.B \-i
+.It Fl i Ar iface
 Specify a network interface to obtain the source IP address for
 outgoing probe packets. This is normally only useful on a multi-homed
 host. (See the
-.B \-s
+.Fl s
 flag for another way to do this.)
-.TP
-.B \-I
+.It Fl I
 Use ICMP ECHO instead of UDP datagrams.  (A synonym for "-P icmp").
-.TP
-.B \-M
+.It Fl M Ar first_ttl
 Set the initial time-to-live value used in outgoing probe packets.
 The default is 1, i.e., start with the first hop.
-.TP
-.B \-m
+.It Fl m Ar max_ttl
 Set the max time-to-live (max number of hops) used in outgoing probe
-packets.  The default is
-.I net.inet.ip.ttl
-hops (the same default used for TCP
+packets.  The default is the value of the
+.Va net.inet.ip.ttl
+.Xr sysctl 8
+(the same default used for TCP
 connections).
-.TP
-.B \-n
+.It Fl n
 Print hop addresses numerically rather than symbolically and numerically
 (saves a nameserver address-to-name lookup for each gateway found on the
 path).
-.TP
-.B \-P
+.It Fl P Ar proto
 Send packets of specified IP protocol. The currently supported protocols
 are: UDP, TCP, GRE and ICMP. Other protocols may also be specified (either=
 by
 name or by number), though
-.I traceroute
+.Nm
 does not implement any special knowledge of their packet formats. This
 option is useful for determining which router along a path may be
 blocking packets based on IP protocol number. But see BUGS below.
-.TP
-.B \-p
+.It Fl p Ar port
 Protocol specific. For UDP and TCP, sets
-the base port number used in probes (default is 33434).
+the base
+.Ar port
+number used in probes (default is 33434).
 Traceroute hopes that nothing is listening on UDP ports
-.I base
+.Em base
 to
-.I base + nhops * nprobes - 1
+.Em base + nhops * nprobes - 1
 at the destination host (so an ICMP PORT_UNREACHABLE message will
 be returned to terminate the route tracing).  If something is
 listening on a port in the default range, this option can be used
 to pick an unused port range.
-.TP
-.B \-q
+.It Fl q Ar nqueries
 Set the number of probes per hop (default is 3,
 unless
-.B -D
+.Fl D
 is specified,
 when it is 1).
-.TP
-.B \-r
+.It Fl r
 Bypass the normal routing tables and send directly to a host on an attached
 network.
 If the host is not on a directly-attached network,
 an error is returned.
 This option can be used to ping a local host through an interface
 that has no route through it (e.g., after the interface was dropped by
-.IR routed (8C)).
-.TP
-.B \-s
+.Xr routed 8 .
+.It Fl s Ar src_addr
 Use the following IP address (which usually is given as an IP number, not
 a hostname) as the source address in outgoing probe packets.  On
 multi-homed hosts (those with more than one IP
@@ -209,15 +152,13 @@
 of the interface the probe packet is sent on.  If the IP address
 is not one of this machine's interface addresses, an error is
 returned and nothing is sent. (See the
-.B \-i
+.Fl i
 flag for another way to do this.)
-.TP
-.B \-S
+.It Fl S
 Print a summary of how many probes were not answered for each hop.
-.TP
-.B \-t
+.It Fl t Ar tos
 Set the
-.I type-of-service
+.Em type-of-service
 in probe packets to the following value (default zero).  The value must be
 a decimal integer in the range 0 to 255.  This option can be used to
 see if different types-of-service result in different paths.  (If you
@@ -226,72 +167,69 @@
 Not all values of TOS are legal or
 meaningful \- see the IP spec for definitions.  Useful values are
 probably
-.RB ` -t
-.IR 16 '
+.Fl t Ar 16
 (low delay) and
-.RB ` -t
-.IR 8 '
+.Fl t Ar 8
 (high throughput).
-.TP
-.B \-v
-Verbose output.  Received ICMP packets other than TIME_EXCEEDED and
-UNREACHABLEs are listed.
-.TP
-.B \-w
+.It Fl v
+Verbose output.  Received ICMP packets other than
+.Dv TIME_EXCEEDED
+and
+.Dv UNREACHABLE Ns s
+are listed.
+.It Fl w Ar waittime
 Set the time (in seconds) to wait for a response to a probe (default 5
 sec.).
-.TP
-.B \-x
+.It Fl x
 Toggle ip checksums. Normally, this prevents traceroute from calculating
 ip checksums. In some cases, the operating system can overwrite parts of
 the outgoing packet but not recalculate the checksum (so in some cases
 the default is to not calculate checksums and using
-.B \-x
+.Fl x
 causes them to be calculated). Note that checksums are usually required
 for the last hop when using ICMP ECHO probes
-.RB ( \-I ).
+.Pq Fl I .
 So they are always calculated when using ICMP.
-.TP
-.B \-z
+.It Fl z Ar pausemsecs
 Set the time (in milliseconds) to pause between probes (default 0).
 Some systems such as Solaris and routers such as Ciscos rate limit
 icmp messages. A good value to use with this this is 500 (e.g. 1/2 second).
-.PP
+.El
+.Pp
 This program attempts to trace the route an IP packet would follow to some
 internet host by launching UDP probe
 packets with a small ttl (time to live) then listening for an
 ICMP "time exceeded" reply from a gateway.  We start our probes
 with a ttl of one and increase by one until we get an ICMP "port
 unreachable" (which means we got to "host") or hit a max (which
-defaults to
-.I net.inet.ip.ttl
-hops & can be changed with the
-.B \-m
+defaults to the amount of hops specified by the
+.Va net.inet.ip.ttl
+.Xr sysctl 8
+and can be changed with the
+.Fl m
 flag).  Three
 probes (change with
-.B \-q
+.Fl q
 flag) are sent at each ttl setting and a
 line is printed showing the ttl, address of the gateway and
 round trip time of each probe.  If the probe answers come from
 different gateways, the address of each responding system will
 be printed.  If there is no response within a 5 sec. timeout
 interval (changed with the
-.B \-w
+.Fl w
 flag), a "*" is printed for that
 probe.
-.PP
+.Pp
 We don't want the destination
 host to process the UDP probe packets so the destination port is set to an
 unlikely value (if some clod on the destination is using that
 value, it can be changed with the
-.B \-p
+.Fl p
 flag).
-.PP
+.Pp
 A sample use and output might be:
-
-.RS
-.nf
-[yak 71]% traceroute nis.nsf.net.
+.Bd -literal -offset 4n
+% traceroute nis.nsf.net.
 traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet
  1  helios.ee.lbl.gov (128.3.112.1)  19 ms  19 ms  0 ms
  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  39 ms  19 ms
@@ -304,21 +242,18 @@
  9  129.140.71.6 (129.140.71.6)  139 ms  239 ms  319 ms
 10  129.140.81.7 (129.140.81.7)  220 ms  199 ms  199 ms
 11  nic.merit.edu (35.1.1.48)  239 ms  239 ms  239 ms
-.fi
-.RE
-
+.Ed
+.Pp
 Note that lines 2 & 3 are the same.  This is due to a buggy
 kernel on the 2nd hop system \- lilac-dmc.Berkeley.EDU \- that forwards
 packets with a zero ttl (a bug in the distributed version
 of 4.3BSD).  Note that you have to guess what path
 the packets are taking cross-country since the NSFNet (129.140)
 doesn't supply address-to-name translations for its NSSes.
-.PP
+.Pp
 A more interesting example is:
-
-.RS
-.nf
-[yak 72]% traceroute allspice.lcs.mit.edu.
+.Bd -literal -offset 4n
+% traceroute allspice.lcs.mit.edu.
 traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max
  1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  19 ms  19 ms
@@ -338,15 +273,14 @@
 16  * * *
 17  * * *
 18  ALLSPICE.LCS.MIT.EDU (18.26.0.115)  339 ms  279 ms  279 ms
-.fi
-.RE
-
+.Ed
+.Pp
 Note that the gateways 12, 14, 15, 16 & 17 hops away
 either don't send ICMP "time exceeded" messages or send them
 with a ttl too small to reach us.  14 \- 17 are running the
 MIT C Gateway code that doesn't send "time exceeded"s.  God
 only knows what's going on with 12.
-.PP
+.Pp
 The silent gateway 12 in the above may be the result of a bug in
 the 4.[23]BSD network code (and its derivatives):  4.x (x <=3D 3)
 sends an unreachable message using whatever ttl remains in the
@@ -354,9 +288,7 @@
 zero, the ICMP "time exceeded" is guaranteed to not make it back
 to us.  The behavior of this bug is slightly more interesting
 when it appears on the destination system:
-
-.RS
-.nf
+.Bd -literal -offset 4n
  1  helios.ee.lbl.gov (128.3.112.1)  0 ms  0 ms  0 ms
  2  lilac-dmc.Berkeley.EDU (128.32.216.1)  39 ms  19 ms  39 ms
  3  lilac-dmc.Berkeley.EDU (128.32.216.1)  19 ms  39 ms  19 ms
@@ -370,9 +302,8 @@
 11  * * *
 12  * * *
 13  rip.Berkeley.EDU (128.32.131.22)  59 ms !  39 ms !  39 ms !
-.fi
-.RE
-
+.Ed
+.Pp
 Notice that there are 12 "gateways" (13 is the final
 destination) and exactly the last half of them are "missing".
 What's really happening is that rip (a Sun-3 running Sun OS3.5)
@@ -383,77 +314,82 @@
 length.  I.e., rip is really only 7 hops away.  A reply that
 returns with a ttl of 1 is a clue this problem exists.
 Traceroute prints a "!" after the time if the ttl is <=3D 1.
-Since vendors ship a lot of obsolete (DEC's Ultrix, Sun 3.x) or
-non-standard (HPUX) software, expect to see this problem
+Since vendors ship a lot of obsolete
+.Pf ( Tn DEC Ns \'s
+Ultrix, Sun 3.x) or
+non-standard
+.Pq Tn HP-UX
+software, expect to see this problem
 frequently and/or take care picking the target host of your
 probes.
-
-Other possible annotations after the time are
-.BR !H ,
-.BR !N ,
-or
-.B !P
-(host, network or protocol unreachable),
-.B !S
-(source route failed),
-.B !F\-<pmtu>
-(fragmentation needed \- the RFC1191 Path MTU Discovery value is displayed=
),
-.B !U
-or
-.B !W
-(destination network/host unknown),
-.B !I
-(source host is isolated),
-.B !A
-(communication with destination network administratively prohibited),
-.B !Z
-(communication with destination host administratively prohibited),
-.B !Q
-(for this ToS the destination network is unreachable),
-.B !T
-(for this ToS the destination host is unreachable),
-.B !X
-(communication administratively prohibited),
-.B !V
-(host precedence violation),
-.B !C
-(precedence cutoff in effect), or
-.B !<num>
-(ICMP unreachable code <num>).
+.Pp
+Other possible annotations after the time are:
+.Bl -hang -offset indent -width 12n
+.It Sy !H
+Host unreachable.
+.It Sy !N
+Network unreachable.
+.It Sy !P
+Protocol unreachable.
+.It Sy !S
+Source route failed.
+.It Sy !F\-<pmtu>
+Fragmentation needed.
+The RFC1191 Path MTU Discovery value is displayed.
+.It Sy !U
+Destination network unknown.
+.It Sy !W
+Destination host unknown.
+.It Sy !I
+Source host is isolated.
+.It Sy !A
+Communication with destination network administratively prohibited.
+.It Sy !Z
+Communication with destination host administratively prohibited.
+.It Sy !Q
+For this ToS the destination network is unreachable.
+.It Sy !T
+For this ToS the destination host is unreachable.
+.It Sy !X
+Communication administratively prohibited.
+.It Sy !V
+Host precedence violation.
+.It Sy !C
+Precedence cutoff in effect.
+.It Sy !<num>
+ICMP unreachable code <num>.
+.El
+.Pp
 These are defined by RFC1812 (which supersedes RFC1716).
-If almost all the probes result in some kind of unreachable, traceroute
+If almost all the probes result in some kind of unreachable,
+.Nm
 will give up and exit.
-.PP
+.Pp
 This program is intended for use in network testing, measurement
 and management.
 It should be used primarily for manual fault isolation.
 Because of the load it could impose on the network, it is unwise to use
-.I traceroute
+.Nm
 during normal operations or from automated scripts.
-.SH SEE ALSO
-pathchar(8), netstat(1), ping(8)
-.SH AUTHOR
+.Sh SEE ALSO
+.Xr netstat 1 ,
+.Xr ping 8 ,
+.Xr ping6 8 ,
+.Xr traceroute6 8 .
+.Sh AUTHORS
 Implemented by Van Jacobson from a suggestion by Steve Deering.  Debugged
 by a cast of thousands with particularly cogent suggestions or fixes from
 C. Philip Wood, Tim Seaver and Ken Adelman.
-.LP
-The current version is available via anonymous ftp:
-.LP
-.RS
-.I ftp://ftp.ee.lbl.gov/traceroute.tar.gz
-.RE
-.SH BUGS
+.Sh BUGS
 When using protocols other than UDP, functionality is reduced.
 In particular, the last packet will often appear to be lost, because
 even though it reaches the destination host, there's no way to know
 that because no ICMP message is sent back.
 In the TCP case,
-.I traceroute
+.Nm
 should listen for a RST from the destination host (or an intermediate
 router that's filtering packets), but this is not implemented yet.
-.PP
-Please send bug reports to traceroute at ee.lbl.gov.
-.PP
+.Pp
 The AS number capability reports information that may sometimes be
 inaccurate due to discrepancies between the contents of the
 routing database server and the current state of the Internet.
diff -r 03e1a37e8949 -r d46effa10a19 head/contrib/traceroute/traceroute.c
--- a/head/contrib/traceroute/traceroute.c	Wed Jul 25 16:20:13 2012 +0300
+++ b/head/contrib/traceroute/traceroute.c	Wed Jul 25 16:21:35 2012 +0300
@@ -28,7 +28,7 @@
     "@(#)$Id: traceroute.c,v 1.68 2000/12/14 08:04:33 leres Exp $ (LBL)";
 #endif
 static const char rcsid[] =3D
-    "$FreeBSD: head/contrib/traceroute/traceroute.c 223579 2011-06-26 19:0=
3:33Z dim $";
+    "$FreeBSD: head/contrib/traceroute/traceroute.c 234701 2012-04-26 13:4=
5:17Z tuexen $";
 #endif
=20
 /*
@@ -1406,8 +1406,7 @@
=20
 	tcp->th_sport =3D htons(ident);
 	tcp->th_dport =3D htons(port + (fixedPort ? 0 : outdata->seq));
-	tcp->th_seq =3D (tcp->th_sport << 16) | (tcp->th_dport +
-	    (fixedPort ? outdata->seq : 0));
+	tcp->th_seq =3D (tcp->th_sport << 16) | tcp->th_dport;
 	tcp->th_ack =3D 0;
 	tcp->th_off =3D 5;
 	tcp->th_flags =3D TH_SYN;
@@ -1425,8 +1424,8 @@
 	struct tcphdr *const tcp =3D (struct tcphdr *) data;
=20
 	return (ntohs(tcp->th_sport) =3D=3D ident
-	    && ntohs(tcp->th_dport) =3D=3D port + (fixedPort ? 0 : seq))
-	    && tcp->th_seq =3D=3D (((tcp_seq)ident << 16) | (port + seq));
+	    && ntohs(tcp->th_dport) =3D=3D port + (fixedPort ? 0 : seq)
+	    && tcp->th_seq =3D=3D (tcp_seq)((tcp->th_sport << 16) | tcp->th_dport=
));
 }
=20
 void



More information about the Zrouter-src-freebsd mailing list